~ubuntu-branches/ubuntu/precise/mysql-5.1/precise

« back to all changes in this revision

Viewing changes to strings/ctype-utf8.c

  • Committer: Bazaar Package Importer
  • Author(s): Norbert Tretkowski
  • Date: 2010-03-17 14:56:02 UTC
  • Revision ID: james.westby@ubuntu.com-20100317145602-x7e30l1b2sb5s6w6
Tags: upstream-5.1.45
Import upstream version 5.1.45

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* Copyright (C) 2000 MySQL AB
 
2
 
 
3
   This library is free software; you can redistribute it and/or
 
4
   modify it under the terms of the GNU Library General Public
 
5
   License as published by the Free Software Foundation; version 2
 
6
   of the License.
 
7
 
 
8
   This library is distributed in the hope that it will be useful,
 
9
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 
10
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
11
   Library General Public License for more details.
 
12
 
 
13
   You should have received a copy of the GNU Library General Public
 
14
   License along with this library; if not, write to the Free
 
15
   Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
 
16
   MA 02111-1307, USA */
 
17
 
 
18
/* UTF8 according RFC 2279 */
 
19
/* Written by Alexander Barkov <bar@udm.net> */
 
20
 
 
21
#include <my_global.h>
 
22
#include "m_string.h"
 
23
#include "m_ctype.h"
 
24
#include <errno.h>
 
25
 
 
26
#ifndef EILSEQ
 
27
#define EILSEQ ENOENT
 
28
#endif
 
29
 
 
30
#ifndef HAVE_CHARSET_utf8
 
31
#define HAVE_CHARSET_utf8
 
32
#endif
 
33
 
 
34
#ifdef HAVE_CHARSET_utf8
 
35
#define HAVE_UNIDATA
 
36
#endif
 
37
 
 
38
#ifdef HAVE_CHARSET_ucs2
 
39
#define HAVE_UNIDATA
 
40
#endif
 
41
 
 
42
#ifdef HAVE_UNIDATA
 
43
 
 
44
#include "my_uctype.h"
 
45
 
 
46
static MY_UNICASE_INFO plane00[]={
 
47
  {0x0000,0x0000,0x0000},  {0x0001,0x0001,0x0001},
 
48
  {0x0002,0x0002,0x0002},  {0x0003,0x0003,0x0003},
 
49
  {0x0004,0x0004,0x0004},  {0x0005,0x0005,0x0005},
 
50
  {0x0006,0x0006,0x0006},  {0x0007,0x0007,0x0007},
 
51
  {0x0008,0x0008,0x0008},  {0x0009,0x0009,0x0009},
 
52
  {0x000A,0x000A,0x000A},  {0x000B,0x000B,0x000B},
 
53
  {0x000C,0x000C,0x000C},  {0x000D,0x000D,0x000D},
 
54
  {0x000E,0x000E,0x000E},  {0x000F,0x000F,0x000F},
 
55
  {0x0010,0x0010,0x0010},  {0x0011,0x0011,0x0011},
 
56
  {0x0012,0x0012,0x0012},  {0x0013,0x0013,0x0013},
 
57
  {0x0014,0x0014,0x0014},  {0x0015,0x0015,0x0015},
 
58
  {0x0016,0x0016,0x0016},  {0x0017,0x0017,0x0017},
 
59
  {0x0018,0x0018,0x0018},  {0x0019,0x0019,0x0019},
 
60
  {0x001A,0x001A,0x001A},  {0x001B,0x001B,0x001B},
 
61
  {0x001C,0x001C,0x001C},  {0x001D,0x001D,0x001D},
 
62
  {0x001E,0x001E,0x001E},  {0x001F,0x001F,0x001F},
 
63
  {0x0020,0x0020,0x0020},  {0x0021,0x0021,0x0021},
 
64
  {0x0022,0x0022,0x0022},  {0x0023,0x0023,0x0023},
 
65
  {0x0024,0x0024,0x0024},  {0x0025,0x0025,0x0025},
 
66
  {0x0026,0x0026,0x0026},  {0x0027,0x0027,0x0027},
 
67
  {0x0028,0x0028,0x0028},  {0x0029,0x0029,0x0029},
 
68
  {0x002A,0x002A,0x002A},  {0x002B,0x002B,0x002B},
 
69
  {0x002C,0x002C,0x002C},  {0x002D,0x002D,0x002D},
 
70
  {0x002E,0x002E,0x002E},  {0x002F,0x002F,0x002F},
 
71
  {0x0030,0x0030,0x0030},  {0x0031,0x0031,0x0031},
 
72
  {0x0032,0x0032,0x0032},  {0x0033,0x0033,0x0033},
 
73
  {0x0034,0x0034,0x0034},  {0x0035,0x0035,0x0035},
 
74
  {0x0036,0x0036,0x0036},  {0x0037,0x0037,0x0037},
 
75
  {0x0038,0x0038,0x0038},  {0x0039,0x0039,0x0039},
 
76
  {0x003A,0x003A,0x003A},  {0x003B,0x003B,0x003B},
 
77
  {0x003C,0x003C,0x003C},  {0x003D,0x003D,0x003D},
 
78
  {0x003E,0x003E,0x003E},  {0x003F,0x003F,0x003F},
 
79
  {0x0040,0x0040,0x0040},  {0x0041,0x0061,0x0041},
 
80
  {0x0042,0x0062,0x0042},  {0x0043,0x0063,0x0043},
 
81
  {0x0044,0x0064,0x0044},  {0x0045,0x0065,0x0045},
 
82
  {0x0046,0x0066,0x0046},  {0x0047,0x0067,0x0047},
 
83
  {0x0048,0x0068,0x0048},  {0x0049,0x0069,0x0049},
 
84
  {0x004A,0x006A,0x004A},  {0x004B,0x006B,0x004B},
 
85
  {0x004C,0x006C,0x004C},  {0x004D,0x006D,0x004D},
 
86
  {0x004E,0x006E,0x004E},  {0x004F,0x006F,0x004F},
 
87
  {0x0050,0x0070,0x0050},  {0x0051,0x0071,0x0051},
 
88
  {0x0052,0x0072,0x0052},  {0x0053,0x0073,0x0053},
 
89
  {0x0054,0x0074,0x0054},  {0x0055,0x0075,0x0055},
 
90
  {0x0056,0x0076,0x0056},  {0x0057,0x0077,0x0057},
 
91
  {0x0058,0x0078,0x0058},  {0x0059,0x0079,0x0059},
 
92
  {0x005A,0x007A,0x005A},  {0x005B,0x005B,0x005B},
 
93
  {0x005C,0x005C,0x005C},  {0x005D,0x005D,0x005D},
 
94
  {0x005E,0x005E,0x005E},  {0x005F,0x005F,0x005F},
 
95
  {0x0060,0x0060,0x0060},  {0x0041,0x0061,0x0041},
 
96
  {0x0042,0x0062,0x0042},  {0x0043,0x0063,0x0043},
 
97
  {0x0044,0x0064,0x0044},  {0x0045,0x0065,0x0045},
 
98
  {0x0046,0x0066,0x0046},  {0x0047,0x0067,0x0047},
 
99
  {0x0048,0x0068,0x0048},  {0x0049,0x0069,0x0049},
 
100
  {0x004A,0x006A,0x004A},  {0x004B,0x006B,0x004B},
 
101
  {0x004C,0x006C,0x004C},  {0x004D,0x006D,0x004D},
 
102
  {0x004E,0x006E,0x004E},  {0x004F,0x006F,0x004F},
 
103
  {0x0050,0x0070,0x0050},  {0x0051,0x0071,0x0051},
 
104
  {0x0052,0x0072,0x0052},  {0x0053,0x0073,0x0053},
 
105
  {0x0054,0x0074,0x0054},  {0x0055,0x0075,0x0055},
 
106
  {0x0056,0x0076,0x0056},  {0x0057,0x0077,0x0057},
 
107
  {0x0058,0x0078,0x0058},  {0x0059,0x0079,0x0059},
 
108
  {0x005A,0x007A,0x005A},  {0x007B,0x007B,0x007B},
 
109
  {0x007C,0x007C,0x007C},  {0x007D,0x007D,0x007D},
 
110
  {0x007E,0x007E,0x007E},  {0x007F,0x007F,0x007F},
 
111
  {0x0080,0x0080,0x0080},  {0x0081,0x0081,0x0081},
 
112
  {0x0082,0x0082,0x0082},  {0x0083,0x0083,0x0083},
 
113
  {0x0084,0x0084,0x0084},  {0x0085,0x0085,0x0085},
 
114
  {0x0086,0x0086,0x0086},  {0x0087,0x0087,0x0087},
 
115
  {0x0088,0x0088,0x0088},  {0x0089,0x0089,0x0089},
 
116
  {0x008A,0x008A,0x008A},  {0x008B,0x008B,0x008B},
 
117
  {0x008C,0x008C,0x008C},  {0x008D,0x008D,0x008D},
 
118
  {0x008E,0x008E,0x008E},  {0x008F,0x008F,0x008F},
 
119
  {0x0090,0x0090,0x0090},  {0x0091,0x0091,0x0091},
 
120
  {0x0092,0x0092,0x0092},  {0x0093,0x0093,0x0093},
 
121
  {0x0094,0x0094,0x0094},  {0x0095,0x0095,0x0095},
 
122
  {0x0096,0x0096,0x0096},  {0x0097,0x0097,0x0097},
 
123
  {0x0098,0x0098,0x0098},  {0x0099,0x0099,0x0099},
 
124
  {0x009A,0x009A,0x009A},  {0x009B,0x009B,0x009B},
 
125
  {0x009C,0x009C,0x009C},  {0x009D,0x009D,0x009D},
 
126
  {0x009E,0x009E,0x009E},  {0x009F,0x009F,0x009F},
 
127
  {0x00A0,0x00A0,0x00A0},  {0x00A1,0x00A1,0x00A1},
 
128
  {0x00A2,0x00A2,0x00A2},  {0x00A3,0x00A3,0x00A3},
 
129
  {0x00A4,0x00A4,0x00A4},  {0x00A5,0x00A5,0x00A5},
 
130
  {0x00A6,0x00A6,0x00A6},  {0x00A7,0x00A7,0x00A7},
 
131
  {0x00A8,0x00A8,0x00A8},  {0x00A9,0x00A9,0x00A9},
 
132
  {0x00AA,0x00AA,0x00AA},  {0x00AB,0x00AB,0x00AB},
 
133
  {0x00AC,0x00AC,0x00AC},  {0x00AD,0x00AD,0x00AD},
 
134
  {0x00AE,0x00AE,0x00AE},  {0x00AF,0x00AF,0x00AF},
 
135
  {0x00B0,0x00B0,0x00B0},  {0x00B1,0x00B1,0x00B1},
 
136
  {0x00B2,0x00B2,0x00B2},  {0x00B3,0x00B3,0x00B3},
 
137
  {0x00B4,0x00B4,0x00B4},  {0x039C,0x00B5,0x039C},
 
138
  {0x00B6,0x00B6,0x00B6},  {0x00B7,0x00B7,0x00B7},
 
139
  {0x00B8,0x00B8,0x00B8},  {0x00B9,0x00B9,0x00B9},
 
140
  {0x00BA,0x00BA,0x00BA},  {0x00BB,0x00BB,0x00BB},
 
141
  {0x00BC,0x00BC,0x00BC},  {0x00BD,0x00BD,0x00BD},
 
142
  {0x00BE,0x00BE,0x00BE},  {0x00BF,0x00BF,0x00BF},
 
143
  {0x00C0,0x00E0,0x0041},  {0x00C1,0x00E1,0x0041},
 
144
  {0x00C2,0x00E2,0x0041},  {0x00C3,0x00E3,0x0041},
 
145
  {0x00C4,0x00E4,0x0041},  {0x00C5,0x00E5,0x0041},
 
146
  {0x00C6,0x00E6,0x00C6},  {0x00C7,0x00E7,0x0043},
 
147
  {0x00C8,0x00E8,0x0045},  {0x00C9,0x00E9,0x0045},
 
148
  {0x00CA,0x00EA,0x0045},  {0x00CB,0x00EB,0x0045},
 
149
  {0x00CC,0x00EC,0x0049},  {0x00CD,0x00ED,0x0049},
 
150
  {0x00CE,0x00EE,0x0049},  {0x00CF,0x00EF,0x0049},
 
151
  {0x00D0,0x00F0,0x00D0},  {0x00D1,0x00F1,0x004E},
 
152
  {0x00D2,0x00F2,0x004F},  {0x00D3,0x00F3,0x004F},
 
153
  {0x00D4,0x00F4,0x004F},  {0x00D5,0x00F5,0x004F},
 
154
  {0x00D6,0x00F6,0x004F},  {0x00D7,0x00D7,0x00D7},
 
155
  {0x00D8,0x00F8,0x00D8},  {0x00D9,0x00F9,0x0055},
 
156
  {0x00DA,0x00FA,0x0055},  {0x00DB,0x00FB,0x0055},
 
157
  {0x00DC,0x00FC,0x0055},  {0x00DD,0x00FD,0x0059},
 
158
  {0x00DE,0x00FE,0x00DE},  {0x00DF,0x00DF,0x0053},
 
159
  {0x00C0,0x00E0,0x0041},  {0x00C1,0x00E1,0x0041},
 
160
  {0x00C2,0x00E2,0x0041},  {0x00C3,0x00E3,0x0041},
 
161
  {0x00C4,0x00E4,0x0041},  {0x00C5,0x00E5,0x0041},
 
162
  {0x00C6,0x00E6,0x00C6},  {0x00C7,0x00E7,0x0043},
 
163
  {0x00C8,0x00E8,0x0045},  {0x00C9,0x00E9,0x0045},
 
164
  {0x00CA,0x00EA,0x0045},  {0x00CB,0x00EB,0x0045},
 
165
  {0x00CC,0x00EC,0x0049},  {0x00CD,0x00ED,0x0049},
 
166
  {0x00CE,0x00EE,0x0049},  {0x00CF,0x00EF,0x0049},
 
167
  {0x00D0,0x00F0,0x00D0},  {0x00D1,0x00F1,0x004E},
 
168
  {0x00D2,0x00F2,0x004F},  {0x00D3,0x00F3,0x004F},
 
169
  {0x00D4,0x00F4,0x004F},  {0x00D5,0x00F5,0x004F},
 
170
  {0x00D6,0x00F6,0x004F},  {0x00F7,0x00F7,0x00F7},
 
171
  {0x00D8,0x00F8,0x00D8},  {0x00D9,0x00F9,0x0055},
 
172
  {0x00DA,0x00FA,0x0055},  {0x00DB,0x00FB,0x0055},
 
173
  {0x00DC,0x00FC,0x0055},  {0x00DD,0x00FD,0x0059},
 
174
  {0x00DE,0x00FE,0x00DE},  {0x0178,0x00FF,0x0059}
 
175
};
 
176
 
 
177
 
 
178
 
 
179
static MY_UNICASE_INFO plane01[]={
 
180
  {0x0100,0x0101,0x0041},  {0x0100,0x0101,0x0041},
 
181
  {0x0102,0x0103,0x0041},  {0x0102,0x0103,0x0041},
 
182
  {0x0104,0x0105,0x0041},  {0x0104,0x0105,0x0041},
 
183
  {0x0106,0x0107,0x0043},  {0x0106,0x0107,0x0043},
 
184
  {0x0108,0x0109,0x0043},  {0x0108,0x0109,0x0043},
 
185
  {0x010A,0x010B,0x0043},  {0x010A,0x010B,0x0043},
 
186
  {0x010C,0x010D,0x0043},  {0x010C,0x010D,0x0043},
 
187
  {0x010E,0x010F,0x0044},  {0x010E,0x010F,0x0044},
 
188
  {0x0110,0x0111,0x0110},  {0x0110,0x0111,0x0110},
 
189
  {0x0112,0x0113,0x0045},  {0x0112,0x0113,0x0045},
 
190
  {0x0114,0x0115,0x0045},  {0x0114,0x0115,0x0045},
 
191
  {0x0116,0x0117,0x0045},  {0x0116,0x0117,0x0045},
 
192
  {0x0118,0x0119,0x0045},  {0x0118,0x0119,0x0045},
 
193
  {0x011A,0x011B,0x0045},  {0x011A,0x011B,0x0045},
 
194
  {0x011C,0x011D,0x0047},  {0x011C,0x011D,0x0047},
 
195
  {0x011E,0x011F,0x0047},  {0x011E,0x011F,0x0047},
 
196
  {0x0120,0x0121,0x0047},  {0x0120,0x0121,0x0047},
 
197
  {0x0122,0x0123,0x0047},  {0x0122,0x0123,0x0047},
 
198
  {0x0124,0x0125,0x0048},  {0x0124,0x0125,0x0048},
 
199
  {0x0126,0x0127,0x0126},  {0x0126,0x0127,0x0126},
 
200
  {0x0128,0x0129,0x0049},  {0x0128,0x0129,0x0049},
 
201
  {0x012A,0x012B,0x0049},  {0x012A,0x012B,0x0049},
 
202
  {0x012C,0x012D,0x0049},  {0x012C,0x012D,0x0049},
 
203
  {0x012E,0x012F,0x0049},  {0x012E,0x012F,0x0049},
 
204
  {0x0130,0x0069,0x0049},  {0x0049,0x0131,0x0049},
 
205
  {0x0132,0x0133,0x0132},  {0x0132,0x0133,0x0132},
 
206
  {0x0134,0x0135,0x004A},  {0x0134,0x0135,0x004A},
 
207
  {0x0136,0x0137,0x004B},  {0x0136,0x0137,0x004B},
 
208
  {0x0138,0x0138,0x0138},  {0x0139,0x013A,0x004C},
 
209
  {0x0139,0x013A,0x004C},  {0x013B,0x013C,0x004C},
 
210
  {0x013B,0x013C,0x004C},  {0x013D,0x013E,0x004C},
 
211
  {0x013D,0x013E,0x004C},  {0x013F,0x0140,0x013F},
 
212
  {0x013F,0x0140,0x013F},  {0x0141,0x0142,0x0141},
 
213
  {0x0141,0x0142,0x0141},  {0x0143,0x0144,0x004E},
 
214
  {0x0143,0x0144,0x004E},  {0x0145,0x0146,0x004E},
 
215
  {0x0145,0x0146,0x004E},  {0x0147,0x0148,0x004E},
 
216
  {0x0147,0x0148,0x004E},  {0x0149,0x0149,0x0149},
 
217
  {0x014A,0x014B,0x014A},  {0x014A,0x014B,0x014A},
 
218
  {0x014C,0x014D,0x004F},  {0x014C,0x014D,0x004F},
 
219
  {0x014E,0x014F,0x004F},  {0x014E,0x014F,0x004F},
 
220
  {0x0150,0x0151,0x004F},  {0x0150,0x0151,0x004F},
 
221
  {0x0152,0x0153,0x0152},  {0x0152,0x0153,0x0152},
 
222
  {0x0154,0x0155,0x0052},  {0x0154,0x0155,0x0052},
 
223
  {0x0156,0x0157,0x0052},  {0x0156,0x0157,0x0052},
 
224
  {0x0158,0x0159,0x0052},  {0x0158,0x0159,0x0052},
 
225
  {0x015A,0x015B,0x0053},  {0x015A,0x015B,0x0053},
 
226
  {0x015C,0x015D,0x0053},  {0x015C,0x015D,0x0053},
 
227
  {0x015E,0x015F,0x0053},  {0x015E,0x015F,0x0053},
 
228
  {0x0160,0x0161,0x0053},  {0x0160,0x0161,0x0053},
 
229
  {0x0162,0x0163,0x0054},  {0x0162,0x0163,0x0054},
 
230
  {0x0164,0x0165,0x0054},  {0x0164,0x0165,0x0054},
 
231
  {0x0166,0x0167,0x0166},  {0x0166,0x0167,0x0166},
 
232
  {0x0168,0x0169,0x0055},  {0x0168,0x0169,0x0055},
 
233
  {0x016A,0x016B,0x0055},  {0x016A,0x016B,0x0055},
 
234
  {0x016C,0x016D,0x0055},  {0x016C,0x016D,0x0055},
 
235
  {0x016E,0x016F,0x0055},  {0x016E,0x016F,0x0055},
 
236
  {0x0170,0x0171,0x0055},  {0x0170,0x0171,0x0055},
 
237
  {0x0172,0x0173,0x0055},  {0x0172,0x0173,0x0055},
 
238
  {0x0174,0x0175,0x0057},  {0x0174,0x0175,0x0057},
 
239
  {0x0176,0x0177,0x0059},  {0x0176,0x0177,0x0059},
 
240
  {0x0178,0x00FF,0x0059},  {0x0179,0x017A,0x005A},
 
241
  {0x0179,0x017A,0x005A},  {0x017B,0x017C,0x005A},
 
242
  {0x017B,0x017C,0x005A},  {0x017D,0x017E,0x005A},
 
243
  {0x017D,0x017E,0x005A},  {0x0053,0x017F,0x0053},
 
244
  {0x0180,0x0180,0x0180},  {0x0181,0x0253,0x0181},
 
245
  {0x0182,0x0183,0x0182},  {0x0182,0x0183,0x0182},
 
246
  {0x0184,0x0185,0x0184},  {0x0184,0x0185,0x0184},
 
247
  {0x0186,0x0254,0x0186},  {0x0187,0x0188,0x0187},
 
248
  {0x0187,0x0188,0x0187},  {0x0189,0x0256,0x0189},
 
249
  {0x018A,0x0257,0x018A},  {0x018B,0x018C,0x018B},
 
250
  {0x018B,0x018C,0x018B},  {0x018D,0x018D,0x018D},
 
251
  {0x018E,0x01DD,0x018E},  {0x018F,0x0259,0x018F},
 
252
  {0x0190,0x025B,0x0190},  {0x0191,0x0192,0x0191},
 
253
  {0x0191,0x0192,0x0191},  {0x0193,0x0260,0x0193},
 
254
  {0x0194,0x0263,0x0194},  {0x01F6,0x0195,0x01F6},
 
255
  {0x0196,0x0269,0x0196},  {0x0197,0x0268,0x0197},
 
256
  {0x0198,0x0199,0x0198},  {0x0198,0x0199,0x0198},
 
257
  {0x019A,0x019A,0x019A},  {0x019B,0x019B,0x019B},
 
258
  {0x019C,0x026F,0x019C},  {0x019D,0x0272,0x019D},
 
259
  {0x019E,0x019E,0x019E},  {0x019F,0x0275,0x019F},
 
260
  {0x01A0,0x01A1,0x004F},  {0x01A0,0x01A1,0x004F},
 
261
  {0x01A2,0x01A3,0x01A2},  {0x01A2,0x01A3,0x01A2},
 
262
  {0x01A4,0x01A5,0x01A4},  {0x01A4,0x01A5,0x01A4},
 
263
  {0x01A6,0x0280,0x01A6},  {0x01A7,0x01A8,0x01A7},
 
264
  {0x01A7,0x01A8,0x01A7},  {0x01A9,0x0283,0x01A9},
 
265
  {0x01AA,0x01AA,0x01AA},  {0x01AB,0x01AB,0x01AB},
 
266
  {0x01AC,0x01AD,0x01AC},  {0x01AC,0x01AD,0x01AC},
 
267
  {0x01AE,0x0288,0x01AE},  {0x01AF,0x01B0,0x0055},
 
268
  {0x01AF,0x01B0,0x0055},  {0x01B1,0x028A,0x01B1},
 
269
  {0x01B2,0x028B,0x01B2},  {0x01B3,0x01B4,0x01B3},
 
270
  {0x01B3,0x01B4,0x01B3},  {0x01B5,0x01B6,0x01B5},
 
271
  {0x01B5,0x01B6,0x01B5},  {0x01B7,0x0292,0x01B7},
 
272
  {0x01B8,0x01B9,0x01B8},  {0x01B8,0x01B9,0x01B8},
 
273
  {0x01BA,0x01BA,0x01BA},  {0x01BB,0x01BB,0x01BB},
 
274
  {0x01BC,0x01BD,0x01BC},  {0x01BC,0x01BD,0x01BC},
 
275
  {0x01BE,0x01BE,0x01BE},  {0x01F7,0x01BF,0x01F7},
 
276
  {0x01C0,0x01C0,0x01C0},  {0x01C1,0x01C1,0x01C1},
 
277
  {0x01C2,0x01C2,0x01C2},  {0x01C3,0x01C3,0x01C3},
 
278
  {0x01C4,0x01C6,0x01C4},  {0x01C4,0x01C6,0x01C4},
 
279
  {0x01C4,0x01C6,0x01C4},  {0x01C7,0x01C9,0x01C7},
 
280
  {0x01C7,0x01C9,0x01C7},  {0x01C7,0x01C9,0x01C7},
 
281
  {0x01CA,0x01CC,0x01CA},  {0x01CA,0x01CC,0x01CA},
 
282
  {0x01CA,0x01CC,0x01CA},  {0x01CD,0x01CE,0x0041},
 
283
  {0x01CD,0x01CE,0x0041},  {0x01CF,0x01D0,0x0049},
 
284
  {0x01CF,0x01D0,0x0049},  {0x01D1,0x01D2,0x004F},
 
285
  {0x01D1,0x01D2,0x004F},  {0x01D3,0x01D4,0x0055},
 
286
  {0x01D3,0x01D4,0x0055},  {0x01D5,0x01D6,0x0055},
 
287
  {0x01D5,0x01D6,0x0055},  {0x01D7,0x01D8,0x0055},
 
288
  {0x01D7,0x01D8,0x0055},  {0x01D9,0x01DA,0x0055},
 
289
  {0x01D9,0x01DA,0x0055},  {0x01DB,0x01DC,0x0055},
 
290
  {0x01DB,0x01DC,0x0055},  {0x018E,0x01DD,0x018E},
 
291
  {0x01DE,0x01DF,0x0041},  {0x01DE,0x01DF,0x0041},
 
292
  {0x01E0,0x01E1,0x0041},  {0x01E0,0x01E1,0x0041},
 
293
  {0x01E2,0x01E3,0x00C6},  {0x01E2,0x01E3,0x00C6},
 
294
  {0x01E4,0x01E5,0x01E4},  {0x01E4,0x01E5,0x01E4},
 
295
  {0x01E6,0x01E7,0x0047},  {0x01E6,0x01E7,0x0047},
 
296
  {0x01E8,0x01E9,0x004B},  {0x01E8,0x01E9,0x004B},
 
297
  {0x01EA,0x01EB,0x004F},  {0x01EA,0x01EB,0x004F},
 
298
  {0x01EC,0x01ED,0x004F},  {0x01EC,0x01ED,0x004F},
 
299
  {0x01EE,0x01EF,0x01B7},  {0x01EE,0x01EF,0x01B7},
 
300
  {0x01F0,0x01F0,0x004A},  {0x01F1,0x01F3,0x01F1},
 
301
  {0x01F1,0x01F3,0x01F1},  {0x01F1,0x01F3,0x01F1},
 
302
  {0x01F4,0x01F5,0x0047},  {0x01F4,0x01F5,0x0047},
 
303
  {0x01F6,0x0195,0x01F6},  {0x01F7,0x01BF,0x01F7},
 
304
  {0x01F8,0x01F9,0x004E},  {0x01F8,0x01F9,0x004E},
 
305
  {0x01FA,0x01FB,0x0041},  {0x01FA,0x01FB,0x0041},
 
306
  {0x01FC,0x01FD,0x00C6},  {0x01FC,0x01FD,0x00C6},
 
307
  {0x01FE,0x01FF,0x00D8},  {0x01FE,0x01FF,0x00D8}
 
308
};
 
309
 
 
310
static MY_UNICASE_INFO plane02[]={
 
311
  {0x0200,0x0201,0x0041},  {0x0200,0x0201,0x0041},
 
312
  {0x0202,0x0203,0x0041},  {0x0202,0x0203,0x0041},
 
313
  {0x0204,0x0205,0x0045},  {0x0204,0x0205,0x0045},
 
314
  {0x0206,0x0207,0x0045},  {0x0206,0x0207,0x0045},
 
315
  {0x0208,0x0209,0x0049},  {0x0208,0x0209,0x0049},
 
316
  {0x020A,0x020B,0x0049},  {0x020A,0x020B,0x0049},
 
317
  {0x020C,0x020D,0x004F},  {0x020C,0x020D,0x004F},
 
318
  {0x020E,0x020F,0x004F},  {0x020E,0x020F,0x004F},
 
319
  {0x0210,0x0211,0x0052},  {0x0210,0x0211,0x0052},
 
320
  {0x0212,0x0213,0x0052},  {0x0212,0x0213,0x0052},
 
321
  {0x0214,0x0215,0x0055},  {0x0214,0x0215,0x0055},
 
322
  {0x0216,0x0217,0x0055},  {0x0216,0x0217,0x0055},
 
323
  {0x0218,0x0219,0x0053},  {0x0218,0x0219,0x0053},
 
324
  {0x021A,0x021B,0x0054},  {0x021A,0x021B,0x0054},
 
325
  {0x021C,0x021D,0x021C},  {0x021C,0x021D,0x021C},
 
326
  {0x021E,0x021F,0x0048},  {0x021E,0x021F,0x0048},
 
327
  {0x0220,0x0220,0x0220},  {0x0221,0x0221,0x0221},
 
328
  {0x0222,0x0223,0x0222},  {0x0222,0x0223,0x0222},
 
329
  {0x0224,0x0225,0x0224},  {0x0224,0x0225,0x0224},
 
330
  {0x0226,0x0227,0x0041},  {0x0226,0x0227,0x0041},
 
331
  {0x0228,0x0229,0x0045},  {0x0228,0x0229,0x0045},
 
332
  {0x022A,0x022B,0x004F},  {0x022A,0x022B,0x004F},
 
333
  {0x022C,0x022D,0x004F},  {0x022C,0x022D,0x004F},
 
334
  {0x022E,0x022F,0x004F},  {0x022E,0x022F,0x004F},
 
335
  {0x0230,0x0231,0x004F},  {0x0230,0x0231,0x004F},
 
336
  {0x0232,0x0233,0x0059},  {0x0232,0x0233,0x0059},
 
337
  {0x0234,0x0234,0x0234},  {0x0235,0x0235,0x0235},
 
338
  {0x0236,0x0236,0x0236},  {0x0237,0x0237,0x0237},
 
339
  {0x0238,0x0238,0x0238},  {0x0239,0x0239,0x0239},
 
340
  {0x023A,0x023A,0x023A},  {0x023B,0x023B,0x023B},
 
341
  {0x023C,0x023C,0x023C},  {0x023D,0x023D,0x023D},
 
342
  {0x023E,0x023E,0x023E},  {0x023F,0x023F,0x023F},
 
343
  {0x0240,0x0240,0x0240},  {0x0241,0x0241,0x0241},
 
344
  {0x0242,0x0242,0x0242},  {0x0243,0x0243,0x0243},
 
345
  {0x0244,0x0244,0x0244},  {0x0245,0x0245,0x0245},
 
346
  {0x0246,0x0246,0x0246},  {0x0247,0x0247,0x0247},
 
347
  {0x0248,0x0248,0x0248},  {0x0249,0x0249,0x0249},
 
348
  {0x024A,0x024A,0x024A},  {0x024B,0x024B,0x024B},
 
349
  {0x024C,0x024C,0x024C},  {0x024D,0x024D,0x024D},
 
350
  {0x024E,0x024E,0x024E},  {0x024F,0x024F,0x024F},
 
351
  {0x0250,0x0250,0x0250},  {0x0251,0x0251,0x0251},
 
352
  {0x0252,0x0252,0x0252},  {0x0181,0x0253,0x0181},
 
353
  {0x0186,0x0254,0x0186},  {0x0255,0x0255,0x0255},
 
354
  {0x0189,0x0256,0x0189},  {0x018A,0x0257,0x018A},
 
355
  {0x0258,0x0258,0x0258},  {0x018F,0x0259,0x018F},
 
356
  {0x025A,0x025A,0x025A},  {0x0190,0x025B,0x0190},
 
357
  {0x025C,0x025C,0x025C},  {0x025D,0x025D,0x025D},
 
358
  {0x025E,0x025E,0x025E},  {0x025F,0x025F,0x025F},
 
359
  {0x0193,0x0260,0x0193},  {0x0261,0x0261,0x0261},
 
360
  {0x0262,0x0262,0x0262},  {0x0194,0x0263,0x0194},
 
361
  {0x0264,0x0264,0x0264},  {0x0265,0x0265,0x0265},
 
362
  {0x0266,0x0266,0x0266},  {0x0267,0x0267,0x0267},
 
363
  {0x0197,0x0268,0x0197},  {0x0196,0x0269,0x0196},
 
364
  {0x026A,0x026A,0x026A},  {0x026B,0x026B,0x026B},
 
365
  {0x026C,0x026C,0x026C},  {0x026D,0x026D,0x026D},
 
366
  {0x026E,0x026E,0x026E},  {0x019C,0x026F,0x019C},
 
367
  {0x0270,0x0270,0x0270},  {0x0271,0x0271,0x0271},
 
368
  {0x019D,0x0272,0x019D},  {0x0273,0x0273,0x0273},
 
369
  {0x0274,0x0274,0x0274},  {0x019F,0x0275,0x019F},
 
370
  {0x0276,0x0276,0x0276},  {0x0277,0x0277,0x0277},
 
371
  {0x0278,0x0278,0x0278},  {0x0279,0x0279,0x0279},
 
372
  {0x027A,0x027A,0x027A},  {0x027B,0x027B,0x027B},
 
373
  {0x027C,0x027C,0x027C},  {0x027D,0x027D,0x027D},
 
374
  {0x027E,0x027E,0x027E},  {0x027F,0x027F,0x027F},
 
375
  {0x01A6,0x0280,0x01A6},  {0x0281,0x0281,0x0281},
 
376
  {0x0282,0x0282,0x0282},  {0x01A9,0x0283,0x01A9},
 
377
  {0x0284,0x0284,0x0284},  {0x0285,0x0285,0x0285},
 
378
  {0x0286,0x0286,0x0286},  {0x0287,0x0287,0x0287},
 
379
  {0x01AE,0x0288,0x01AE},  {0x0289,0x0289,0x0289},
 
380
  {0x01B1,0x028A,0x01B1},  {0x01B2,0x028B,0x01B2},
 
381
  {0x028C,0x028C,0x028C},  {0x028D,0x028D,0x028D},
 
382
  {0x028E,0x028E,0x028E},  {0x028F,0x028F,0x028F},
 
383
  {0x0290,0x0290,0x0290},  {0x0291,0x0291,0x0291},
 
384
  {0x01B7,0x0292,0x01B7},  {0x0293,0x0293,0x0293},
 
385
  {0x0294,0x0294,0x0294},  {0x0295,0x0295,0x0295},
 
386
  {0x0296,0x0296,0x0296},  {0x0297,0x0297,0x0297},
 
387
  {0x0298,0x0298,0x0298},  {0x0299,0x0299,0x0299},
 
388
  {0x029A,0x029A,0x029A},  {0x029B,0x029B,0x029B},
 
389
  {0x029C,0x029C,0x029C},  {0x029D,0x029D,0x029D},
 
390
  {0x029E,0x029E,0x029E},  {0x029F,0x029F,0x029F},
 
391
  {0x02A0,0x02A0,0x02A0},  {0x02A1,0x02A1,0x02A1},
 
392
  {0x02A2,0x02A2,0x02A2},  {0x02A3,0x02A3,0x02A3},
 
393
  {0x02A4,0x02A4,0x02A4},  {0x02A5,0x02A5,0x02A5},
 
394
  {0x02A6,0x02A6,0x02A6},  {0x02A7,0x02A7,0x02A7},
 
395
  {0x02A8,0x02A8,0x02A8},  {0x02A9,0x02A9,0x02A9},
 
396
  {0x02AA,0x02AA,0x02AA},  {0x02AB,0x02AB,0x02AB},
 
397
  {0x02AC,0x02AC,0x02AC},  {0x02AD,0x02AD,0x02AD},
 
398
  {0x02AE,0x02AE,0x02AE},  {0x02AF,0x02AF,0x02AF},
 
399
  {0x02B0,0x02B0,0x02B0},  {0x02B1,0x02B1,0x02B1},
 
400
  {0x02B2,0x02B2,0x02B2},  {0x02B3,0x02B3,0x02B3},
 
401
  {0x02B4,0x02B4,0x02B4},  {0x02B5,0x02B5,0x02B5},
 
402
  {0x02B6,0x02B6,0x02B6},  {0x02B7,0x02B7,0x02B7},
 
403
  {0x02B8,0x02B8,0x02B8},  {0x02B9,0x02B9,0x02B9},
 
404
  {0x02BA,0x02BA,0x02BA},  {0x02BB,0x02BB,0x02BB},
 
405
  {0x02BC,0x02BC,0x02BC},  {0x02BD,0x02BD,0x02BD},
 
406
  {0x02BE,0x02BE,0x02BE},  {0x02BF,0x02BF,0x02BF},
 
407
  {0x02C0,0x02C0,0x02C0},  {0x02C1,0x02C1,0x02C1},
 
408
  {0x02C2,0x02C2,0x02C2},  {0x02C3,0x02C3,0x02C3},
 
409
  {0x02C4,0x02C4,0x02C4},  {0x02C5,0x02C5,0x02C5},
 
410
  {0x02C6,0x02C6,0x02C6},  {0x02C7,0x02C7,0x02C7},
 
411
  {0x02C8,0x02C8,0x02C8},  {0x02C9,0x02C9,0x02C9},
 
412
  {0x02CA,0x02CA,0x02CA},  {0x02CB,0x02CB,0x02CB},
 
413
  {0x02CC,0x02CC,0x02CC},  {0x02CD,0x02CD,0x02CD},
 
414
  {0x02CE,0x02CE,0x02CE},  {0x02CF,0x02CF,0x02CF},
 
415
  {0x02D0,0x02D0,0x02D0},  {0x02D1,0x02D1,0x02D1},
 
416
  {0x02D2,0x02D2,0x02D2},  {0x02D3,0x02D3,0x02D3},
 
417
  {0x02D4,0x02D4,0x02D4},  {0x02D5,0x02D5,0x02D5},
 
418
  {0x02D6,0x02D6,0x02D6},  {0x02D7,0x02D7,0x02D7},
 
419
  {0x02D8,0x02D8,0x02D8},  {0x02D9,0x02D9,0x02D9},
 
420
  {0x02DA,0x02DA,0x02DA},  {0x02DB,0x02DB,0x02DB},
 
421
  {0x02DC,0x02DC,0x02DC},  {0x02DD,0x02DD,0x02DD},
 
422
  {0x02DE,0x02DE,0x02DE},  {0x02DF,0x02DF,0x02DF},
 
423
  {0x02E0,0x02E0,0x02E0},  {0x02E1,0x02E1,0x02E1},
 
424
  {0x02E2,0x02E2,0x02E2},  {0x02E3,0x02E3,0x02E3},
 
425
  {0x02E4,0x02E4,0x02E4},  {0x02E5,0x02E5,0x02E5},
 
426
  {0x02E6,0x02E6,0x02E6},  {0x02E7,0x02E7,0x02E7},
 
427
  {0x02E8,0x02E8,0x02E8},  {0x02E9,0x02E9,0x02E9},
 
428
  {0x02EA,0x02EA,0x02EA},  {0x02EB,0x02EB,0x02EB},
 
429
  {0x02EC,0x02EC,0x02EC},  {0x02ED,0x02ED,0x02ED},
 
430
  {0x02EE,0x02EE,0x02EE},  {0x02EF,0x02EF,0x02EF},
 
431
  {0x02F0,0x02F0,0x02F0},  {0x02F1,0x02F1,0x02F1},
 
432
  {0x02F2,0x02F2,0x02F2},  {0x02F3,0x02F3,0x02F3},
 
433
  {0x02F4,0x02F4,0x02F4},  {0x02F5,0x02F5,0x02F5},
 
434
  {0x02F6,0x02F6,0x02F6},  {0x02F7,0x02F7,0x02F7},
 
435
  {0x02F8,0x02F8,0x02F8},  {0x02F9,0x02F9,0x02F9},
 
436
  {0x02FA,0x02FA,0x02FA},  {0x02FB,0x02FB,0x02FB},
 
437
  {0x02FC,0x02FC,0x02FC},  {0x02FD,0x02FD,0x02FD},
 
438
  {0x02FE,0x02FE,0x02FE},  {0x02FF,0x02FF,0x02FF}
 
439
};
 
440
 
 
441
static MY_UNICASE_INFO plane03[]={
 
442
  {0x0300,0x0300,0x0300},  {0x0301,0x0301,0x0301},
 
443
  {0x0302,0x0302,0x0302},  {0x0303,0x0303,0x0303},
 
444
  {0x0304,0x0304,0x0304},  {0x0305,0x0305,0x0305},
 
445
  {0x0306,0x0306,0x0306},  {0x0307,0x0307,0x0307},
 
446
  {0x0308,0x0308,0x0308},  {0x0309,0x0309,0x0309},
 
447
  {0x030A,0x030A,0x030A},  {0x030B,0x030B,0x030B},
 
448
  {0x030C,0x030C,0x030C},  {0x030D,0x030D,0x030D},
 
449
  {0x030E,0x030E,0x030E},  {0x030F,0x030F,0x030F},
 
450
  {0x0310,0x0310,0x0310},  {0x0311,0x0311,0x0311},
 
451
  {0x0312,0x0312,0x0312},  {0x0313,0x0313,0x0313},
 
452
  {0x0314,0x0314,0x0314},  {0x0315,0x0315,0x0315},
 
453
  {0x0316,0x0316,0x0316},  {0x0317,0x0317,0x0317},
 
454
  {0x0318,0x0318,0x0318},  {0x0319,0x0319,0x0319},
 
455
  {0x031A,0x031A,0x031A},  {0x031B,0x031B,0x031B},
 
456
  {0x031C,0x031C,0x031C},  {0x031D,0x031D,0x031D},
 
457
  {0x031E,0x031E,0x031E},  {0x031F,0x031F,0x031F},
 
458
  {0x0320,0x0320,0x0320},  {0x0321,0x0321,0x0321},
 
459
  {0x0322,0x0322,0x0322},  {0x0323,0x0323,0x0323},
 
460
  {0x0324,0x0324,0x0324},  {0x0325,0x0325,0x0325},
 
461
  {0x0326,0x0326,0x0326},  {0x0327,0x0327,0x0327},
 
462
  {0x0328,0x0328,0x0328},  {0x0329,0x0329,0x0329},
 
463
  {0x032A,0x032A,0x032A},  {0x032B,0x032B,0x032B},
 
464
  {0x032C,0x032C,0x032C},  {0x032D,0x032D,0x032D},
 
465
  {0x032E,0x032E,0x032E},  {0x032F,0x032F,0x032F},
 
466
  {0x0330,0x0330,0x0330},  {0x0331,0x0331,0x0331},
 
467
  {0x0332,0x0332,0x0332},  {0x0333,0x0333,0x0333},
 
468
  {0x0334,0x0334,0x0334},  {0x0335,0x0335,0x0335},
 
469
  {0x0336,0x0336,0x0336},  {0x0337,0x0337,0x0337},
 
470
  {0x0338,0x0338,0x0338},  {0x0339,0x0339,0x0339},
 
471
  {0x033A,0x033A,0x033A},  {0x033B,0x033B,0x033B},
 
472
  {0x033C,0x033C,0x033C},  {0x033D,0x033D,0x033D},
 
473
  {0x033E,0x033E,0x033E},  {0x033F,0x033F,0x033F},
 
474
  {0x0340,0x0340,0x0340},  {0x0341,0x0341,0x0341},
 
475
  {0x0342,0x0342,0x0342},  {0x0343,0x0343,0x0343},
 
476
  {0x0344,0x0344,0x0344},  {0x0399,0x0345,0x0399},
 
477
  {0x0346,0x0346,0x0346},  {0x0347,0x0347,0x0347},
 
478
  {0x0348,0x0348,0x0348},  {0x0349,0x0349,0x0349},
 
479
  {0x034A,0x034A,0x034A},  {0x034B,0x034B,0x034B},
 
480
  {0x034C,0x034C,0x034C},  {0x034D,0x034D,0x034D},
 
481
  {0x034E,0x034E,0x034E},  {0x034F,0x034F,0x034F},
 
482
  {0x0350,0x0350,0x0350},  {0x0351,0x0351,0x0351},
 
483
  {0x0352,0x0352,0x0352},  {0x0353,0x0353,0x0353},
 
484
  {0x0354,0x0354,0x0354},  {0x0355,0x0355,0x0355},
 
485
  {0x0356,0x0356,0x0356},  {0x0357,0x0357,0x0357},
 
486
  {0x0358,0x0358,0x0358},  {0x0359,0x0359,0x0359},
 
487
  {0x035A,0x035A,0x035A},  {0x035B,0x035B,0x035B},
 
488
  {0x035C,0x035C,0x035C},  {0x035D,0x035D,0x035D},
 
489
  {0x035E,0x035E,0x035E},  {0x035F,0x035F,0x035F},
 
490
  {0x0360,0x0360,0x0360},  {0x0361,0x0361,0x0361},
 
491
  {0x0362,0x0362,0x0362},  {0x0363,0x0363,0x0363},
 
492
  {0x0364,0x0364,0x0364},  {0x0365,0x0365,0x0365},
 
493
  {0x0366,0x0366,0x0366},  {0x0367,0x0367,0x0367},
 
494
  {0x0368,0x0368,0x0368},  {0x0369,0x0369,0x0369},
 
495
  {0x036A,0x036A,0x036A},  {0x036B,0x036B,0x036B},
 
496
  {0x036C,0x036C,0x036C},  {0x036D,0x036D,0x036D},
 
497
  {0x036E,0x036E,0x036E},  {0x036F,0x036F,0x036F},
 
498
  {0x0370,0x0370,0x0370},  {0x0371,0x0371,0x0371},
 
499
  {0x0372,0x0372,0x0372},  {0x0373,0x0373,0x0373},
 
500
  {0x0374,0x0374,0x0374},  {0x0375,0x0375,0x0375},
 
501
  {0x0376,0x0376,0x0376},  {0x0377,0x0377,0x0377},
 
502
  {0x0378,0x0378,0x0378},  {0x0379,0x0379,0x0379},
 
503
  {0x037A,0x037A,0x037A},  {0x037B,0x037B,0x037B},
 
504
  {0x037C,0x037C,0x037C},  {0x037D,0x037D,0x037D},
 
505
  {0x037E,0x037E,0x037E},  {0x037F,0x037F,0x037F},
 
506
  {0x0380,0x0380,0x0380},  {0x0381,0x0381,0x0381},
 
507
  {0x0382,0x0382,0x0382},  {0x0383,0x0383,0x0383},
 
508
  {0x0384,0x0384,0x0384},  {0x0385,0x0385,0x0385},
 
509
  {0x0386,0x03AC,0x0391},  {0x0387,0x0387,0x0387},
 
510
  {0x0388,0x03AD,0x0395},  {0x0389,0x03AE,0x0397},
 
511
  {0x038A,0x03AF,0x0399},  {0x038B,0x038B,0x038B},
 
512
  {0x038C,0x03CC,0x039F},  {0x038D,0x038D,0x038D},
 
513
  {0x038E,0x03CD,0x03A5},  {0x038F,0x03CE,0x03A9},
 
514
  {0x0390,0x0390,0x0399},  {0x0391,0x03B1,0x0391},
 
515
  {0x0392,0x03B2,0x0392},  {0x0393,0x03B3,0x0393},
 
516
  {0x0394,0x03B4,0x0394},  {0x0395,0x03B5,0x0395},
 
517
  {0x0396,0x03B6,0x0396},  {0x0397,0x03B7,0x0397},
 
518
  {0x0398,0x03B8,0x0398},  {0x0399,0x03B9,0x0399},
 
519
  {0x039A,0x03BA,0x039A},  {0x039B,0x03BB,0x039B},
 
520
  {0x039C,0x03BC,0x039C},  {0x039D,0x03BD,0x039D},
 
521
  {0x039E,0x03BE,0x039E},  {0x039F,0x03BF,0x039F},
 
522
  {0x03A0,0x03C0,0x03A0},  {0x03A1,0x03C1,0x03A1},
 
523
  {0x03A2,0x03A2,0x03A2},  {0x03A3,0x03C3,0x03A3},
 
524
  {0x03A4,0x03C4,0x03A4},  {0x03A5,0x03C5,0x03A5},
 
525
  {0x03A6,0x03C6,0x03A6},  {0x03A7,0x03C7,0x03A7},
 
526
  {0x03A8,0x03C8,0x03A8},  {0x03A9,0x03C9,0x03A9},
 
527
  {0x03AA,0x03CA,0x0399},  {0x03AB,0x03CB,0x03A5},
 
528
  {0x0386,0x03AC,0x0391},  {0x0388,0x03AD,0x0395},
 
529
  {0x0389,0x03AE,0x0397},  {0x038A,0x03AF,0x0399},
 
530
  {0x03B0,0x03B0,0x03A5},  {0x0391,0x03B1,0x0391},
 
531
  {0x0392,0x03B2,0x0392},  {0x0393,0x03B3,0x0393},
 
532
  {0x0394,0x03B4,0x0394},  {0x0395,0x03B5,0x0395},
 
533
  {0x0396,0x03B6,0x0396},  {0x0397,0x03B7,0x0397},
 
534
  {0x0398,0x03B8,0x0398},  {0x0399,0x03B9,0x0399},
 
535
  {0x039A,0x03BA,0x039A},  {0x039B,0x03BB,0x039B},
 
536
  {0x039C,0x03BC,0x039C},  {0x039D,0x03BD,0x039D},
 
537
  {0x039E,0x03BE,0x039E},  {0x039F,0x03BF,0x039F},
 
538
  {0x03A0,0x03C0,0x03A0},  {0x03A1,0x03C1,0x03A1},
 
539
  {0x03A3,0x03C2,0x03A3},  {0x03A3,0x03C3,0x03A3},
 
540
  {0x03A4,0x03C4,0x03A4},  {0x03A5,0x03C5,0x03A5},
 
541
  {0x03A6,0x03C6,0x03A6},  {0x03A7,0x03C7,0x03A7},
 
542
  {0x03A8,0x03C8,0x03A8},  {0x03A9,0x03C9,0x03A9},
 
543
  {0x03AA,0x03CA,0x0399},  {0x03AB,0x03CB,0x03A5},
 
544
  {0x038C,0x03CC,0x039F},  {0x038E,0x03CD,0x03A5},
 
545
  {0x038F,0x03CE,0x03A9},  {0x03CF,0x03CF,0x03CF},
 
546
  {0x0392,0x03D0,0x0392},  {0x0398,0x03D1,0x0398},
 
547
  {0x03D2,0x03D2,0x03D2},  {0x03D3,0x03D3,0x03D2},
 
548
  {0x03D4,0x03D4,0x03D2},  {0x03A6,0x03D5,0x03A6},
 
549
  {0x03A0,0x03D6,0x03A0},  {0x03D7,0x03D7,0x03D7},
 
550
  {0x03D8,0x03D8,0x03D8},  {0x03D9,0x03D9,0x03D9},
 
551
  {0x03DA,0x03DB,0x03DA},  {0x03DA,0x03DB,0x03DA},
 
552
  {0x03DC,0x03DD,0x03DC},  {0x03DC,0x03DD,0x03DC},
 
553
  {0x03DE,0x03DF,0x03DE},  {0x03DE,0x03DF,0x03DE},
 
554
  {0x03E0,0x03E1,0x03E0},  {0x03E0,0x03E1,0x03E0},
 
555
  {0x03E2,0x03E3,0x03E2},  {0x03E2,0x03E3,0x03E2},
 
556
  {0x03E4,0x03E5,0x03E4},  {0x03E4,0x03E5,0x03E4},
 
557
  {0x03E6,0x03E7,0x03E6},  {0x03E6,0x03E7,0x03E6},
 
558
  {0x03E8,0x03E9,0x03E8},  {0x03E8,0x03E9,0x03E8},
 
559
  {0x03EA,0x03EB,0x03EA},  {0x03EA,0x03EB,0x03EA},
 
560
  {0x03EC,0x03ED,0x03EC},  {0x03EC,0x03ED,0x03EC},
 
561
  {0x03EE,0x03EF,0x03EE},  {0x03EE,0x03EF,0x03EE},
 
562
  {0x039A,0x03F0,0x039A},  {0x03A1,0x03F1,0x03A1},
 
563
  {0x03A3,0x03F2,0x03A3},  {0x03F3,0x03F3,0x03F3},
 
564
  {0x03F4,0x03F4,0x03F4},  {0x03F5,0x03F5,0x03F5},
 
565
  {0x03F6,0x03F6,0x03F6},  {0x03F7,0x03F7,0x03F7},
 
566
  {0x03F8,0x03F8,0x03F8},  {0x03F9,0x03F9,0x03F9},
 
567
  {0x03FA,0x03FA,0x03FA},  {0x03FB,0x03FB,0x03FB},
 
568
  {0x03FC,0x03FC,0x03FC},  {0x03FD,0x03FD,0x03FD},
 
569
  {0x03FE,0x03FE,0x03FE},  {0x03FF,0x03FF,0x03FF}
 
570
};
 
571
 
 
572
static MY_UNICASE_INFO plane04[]={
 
573
  {0x0400,0x0450,0x0415},  {0x0401,0x0451,0x0415},
 
574
  {0x0402,0x0452,0x0402},  {0x0403,0x0453,0x0413},
 
575
  {0x0404,0x0454,0x0404},  {0x0405,0x0455,0x0405},
 
576
  {0x0406,0x0456,0x0406},  {0x0407,0x0457,0x0406},
 
577
  {0x0408,0x0458,0x0408},  {0x0409,0x0459,0x0409},
 
578
  {0x040A,0x045A,0x040A},  {0x040B,0x045B,0x040B},
 
579
  {0x040C,0x045C,0x041A},  {0x040D,0x045D,0x0418},
 
580
  {0x040E,0x045E,0x0423},  {0x040F,0x045F,0x040F},
 
581
  {0x0410,0x0430,0x0410},  {0x0411,0x0431,0x0411},
 
582
  {0x0412,0x0432,0x0412},  {0x0413,0x0433,0x0413},
 
583
  {0x0414,0x0434,0x0414},  {0x0415,0x0435,0x0415},
 
584
  {0x0416,0x0436,0x0416},  {0x0417,0x0437,0x0417},
 
585
  {0x0418,0x0438,0x0418},  {0x0419,0x0439,0x0419},
 
586
  {0x041A,0x043A,0x041A},  {0x041B,0x043B,0x041B},
 
587
  {0x041C,0x043C,0x041C},  {0x041D,0x043D,0x041D},
 
588
  {0x041E,0x043E,0x041E},  {0x041F,0x043F,0x041F},
 
589
  {0x0420,0x0440,0x0420},  {0x0421,0x0441,0x0421},
 
590
  {0x0422,0x0442,0x0422},  {0x0423,0x0443,0x0423},
 
591
  {0x0424,0x0444,0x0424},  {0x0425,0x0445,0x0425},
 
592
  {0x0426,0x0446,0x0426},  {0x0427,0x0447,0x0427},
 
593
  {0x0428,0x0448,0x0428},  {0x0429,0x0449,0x0429},
 
594
  {0x042A,0x044A,0x042A},  {0x042B,0x044B,0x042B},
 
595
  {0x042C,0x044C,0x042C},  {0x042D,0x044D,0x042D},
 
596
  {0x042E,0x044E,0x042E},  {0x042F,0x044F,0x042F},
 
597
  {0x0410,0x0430,0x0410},  {0x0411,0x0431,0x0411},
 
598
  {0x0412,0x0432,0x0412},  {0x0413,0x0433,0x0413},
 
599
  {0x0414,0x0434,0x0414},  {0x0415,0x0435,0x0415},
 
600
  {0x0416,0x0436,0x0416},  {0x0417,0x0437,0x0417},
 
601
  {0x0418,0x0438,0x0418},  {0x0419,0x0439,0x0419},
 
602
  {0x041A,0x043A,0x041A},  {0x041B,0x043B,0x041B},
 
603
  {0x041C,0x043C,0x041C},  {0x041D,0x043D,0x041D},
 
604
  {0x041E,0x043E,0x041E},  {0x041F,0x043F,0x041F},
 
605
  {0x0420,0x0440,0x0420},  {0x0421,0x0441,0x0421},
 
606
  {0x0422,0x0442,0x0422},  {0x0423,0x0443,0x0423},
 
607
  {0x0424,0x0444,0x0424},  {0x0425,0x0445,0x0425},
 
608
  {0x0426,0x0446,0x0426},  {0x0427,0x0447,0x0427},
 
609
  {0x0428,0x0448,0x0428},  {0x0429,0x0449,0x0429},
 
610
  {0x042A,0x044A,0x042A},  {0x042B,0x044B,0x042B},
 
611
  {0x042C,0x044C,0x042C},  {0x042D,0x044D,0x042D},
 
612
  {0x042E,0x044E,0x042E},  {0x042F,0x044F,0x042F},
 
613
  {0x0400,0x0450,0x0415},  {0x0401,0x0451,0x0415},
 
614
  {0x0402,0x0452,0x0402},  {0x0403,0x0453,0x0413},
 
615
  {0x0404,0x0454,0x0404},  {0x0405,0x0455,0x0405},
 
616
  {0x0406,0x0456,0x0406},  {0x0407,0x0457,0x0406},
 
617
  {0x0408,0x0458,0x0408},  {0x0409,0x0459,0x0409},
 
618
  {0x040A,0x045A,0x040A},  {0x040B,0x045B,0x040B},
 
619
  {0x040C,0x045C,0x041A},  {0x040D,0x045D,0x0418},
 
620
  {0x040E,0x045E,0x0423},  {0x040F,0x045F,0x040F},
 
621
  {0x0460,0x0461,0x0460},  {0x0460,0x0461,0x0460},
 
622
  {0x0462,0x0463,0x0462},  {0x0462,0x0463,0x0462},
 
623
  {0x0464,0x0465,0x0464},  {0x0464,0x0465,0x0464},
 
624
  {0x0466,0x0467,0x0466},  {0x0466,0x0467,0x0466},
 
625
  {0x0468,0x0469,0x0468},  {0x0468,0x0469,0x0468},
 
626
  {0x046A,0x046B,0x046A},  {0x046A,0x046B,0x046A},
 
627
  {0x046C,0x046D,0x046C},  {0x046C,0x046D,0x046C},
 
628
  {0x046E,0x046F,0x046E},  {0x046E,0x046F,0x046E},
 
629
  {0x0470,0x0471,0x0470},  {0x0470,0x0471,0x0470},
 
630
  {0x0472,0x0473,0x0472},  {0x0472,0x0473,0x0472},
 
631
  {0x0474,0x0475,0x0474},  {0x0474,0x0475,0x0474},
 
632
  {0x0476,0x0477,0x0474},  {0x0476,0x0477,0x0474},
 
633
  {0x0478,0x0479,0x0478},  {0x0478,0x0479,0x0478},
 
634
  {0x047A,0x047B,0x047A},  {0x047A,0x047B,0x047A},
 
635
  {0x047C,0x047D,0x047C},  {0x047C,0x047D,0x047C},
 
636
  {0x047E,0x047F,0x047E},  {0x047E,0x047F,0x047E},
 
637
  {0x0480,0x0481,0x0480},  {0x0480,0x0481,0x0480},
 
638
  {0x0482,0x0482,0x0482},  {0x0483,0x0483,0x0483},
 
639
  {0x0484,0x0484,0x0484},  {0x0485,0x0485,0x0485},
 
640
  {0x0486,0x0486,0x0486},  {0x0487,0x0487,0x0487},
 
641
  {0x0488,0x0488,0x0488},  {0x0489,0x0489,0x0489},
 
642
  {0x048A,0x048A,0x048A},  {0x048B,0x048B,0x048B},
 
643
  {0x048C,0x048D,0x048C},  {0x048C,0x048D,0x048C},
 
644
  {0x048E,0x048F,0x048E},  {0x048E,0x048F,0x048E},
 
645
  {0x0490,0x0491,0x0490},  {0x0490,0x0491,0x0490},
 
646
  {0x0492,0x0493,0x0492},  {0x0492,0x0493,0x0492},
 
647
  {0x0494,0x0495,0x0494},  {0x0494,0x0495,0x0494},
 
648
  {0x0496,0x0497,0x0496},  {0x0496,0x0497,0x0496},
 
649
  {0x0498,0x0499,0x0498},  {0x0498,0x0499,0x0498},
 
650
  {0x049A,0x049B,0x049A},  {0x049A,0x049B,0x049A},
 
651
  {0x049C,0x049D,0x049C},  {0x049C,0x049D,0x049C},
 
652
  {0x049E,0x049F,0x049E},  {0x049E,0x049F,0x049E},
 
653
  {0x04A0,0x04A1,0x04A0},  {0x04A0,0x04A1,0x04A0},
 
654
  {0x04A2,0x04A3,0x04A2},  {0x04A2,0x04A3,0x04A2},
 
655
  {0x04A4,0x04A5,0x04A4},  {0x04A4,0x04A5,0x04A4},
 
656
  {0x04A6,0x04A7,0x04A6},  {0x04A6,0x04A7,0x04A6},
 
657
  {0x04A8,0x04A9,0x04A8},  {0x04A8,0x04A9,0x04A8},
 
658
  {0x04AA,0x04AB,0x04AA},  {0x04AA,0x04AB,0x04AA},
 
659
  {0x04AC,0x04AD,0x04AC},  {0x04AC,0x04AD,0x04AC},
 
660
  {0x04AE,0x04AF,0x04AE},  {0x04AE,0x04AF,0x04AE},
 
661
  {0x04B0,0x04B1,0x04B0},  {0x04B0,0x04B1,0x04B0},
 
662
  {0x04B2,0x04B3,0x04B2},  {0x04B2,0x04B3,0x04B2},
 
663
  {0x04B4,0x04B5,0x04B4},  {0x04B4,0x04B5,0x04B4},
 
664
  {0x04B6,0x04B7,0x04B6},  {0x04B6,0x04B7,0x04B6},
 
665
  {0x04B8,0x04B9,0x04B8},  {0x04B8,0x04B9,0x04B8},
 
666
  {0x04BA,0x04BB,0x04BA},  {0x04BA,0x04BB,0x04BA},
 
667
  {0x04BC,0x04BD,0x04BC},  {0x04BC,0x04BD,0x04BC},
 
668
  {0x04BE,0x04BF,0x04BE},  {0x04BE,0x04BF,0x04BE},
 
669
  {0x04C0,0x04C0,0x04C0},  {0x04C1,0x04C2,0x0416},
 
670
  {0x04C1,0x04C2,0x0416},  {0x04C3,0x04C4,0x04C3},
 
671
  {0x04C3,0x04C4,0x04C3},  {0x04C5,0x04C5,0x04C5},
 
672
  {0x04C6,0x04C6,0x04C6},  {0x04C7,0x04C8,0x04C7},
 
673
  {0x04C7,0x04C8,0x04C7},  {0x04C9,0x04C9,0x04C9},
 
674
  {0x04CA,0x04CA,0x04CA},  {0x04CB,0x04CC,0x04CB},
 
675
  {0x04CB,0x04CC,0x04CB},  {0x04CD,0x04CD,0x04CD},
 
676
  {0x04CE,0x04CE,0x04CE},  {0x04CF,0x04CF,0x04CF},
 
677
  {0x04D0,0x04D1,0x0410},  {0x04D0,0x04D1,0x0410},
 
678
  {0x04D2,0x04D3,0x0410},  {0x04D2,0x04D3,0x0410},
 
679
  {0x04D4,0x04D5,0x04D4},  {0x04D4,0x04D5,0x04D4},
 
680
  {0x04D6,0x04D7,0x0415},  {0x04D6,0x04D7,0x0415},
 
681
  {0x04D8,0x04D9,0x04D8},  {0x04D8,0x04D9,0x04D8},
 
682
  {0x04DA,0x04DB,0x04D8},  {0x04DA,0x04DB,0x04D8},
 
683
  {0x04DC,0x04DD,0x0416},  {0x04DC,0x04DD,0x0416},
 
684
  {0x04DE,0x04DF,0x0417},  {0x04DE,0x04DF,0x0417},
 
685
  {0x04E0,0x04E1,0x04E0},  {0x04E0,0x04E1,0x04E0},
 
686
  {0x04E2,0x04E3,0x0418},  {0x04E2,0x04E3,0x0418},
 
687
  {0x04E4,0x04E5,0x0418},  {0x04E4,0x04E5,0x0418},
 
688
  {0x04E6,0x04E7,0x041E},  {0x04E6,0x04E7,0x041E},
 
689
  {0x04E8,0x04E9,0x04E8},  {0x04E8,0x04E9,0x04E8},
 
690
  {0x04EA,0x04EB,0x04E8},  {0x04EA,0x04EB,0x04E8},
 
691
  {0x04EC,0x04ED,0x042D},  {0x04EC,0x04ED,0x042D},
 
692
  {0x04EE,0x04EF,0x0423},  {0x04EE,0x04EF,0x0423},
 
693
  {0x04F0,0x04F1,0x0423},  {0x04F0,0x04F1,0x0423},
 
694
  {0x04F2,0x04F3,0x0423},  {0x04F2,0x04F3,0x0423},
 
695
  {0x04F4,0x04F5,0x0427},  {0x04F4,0x04F5,0x0427},
 
696
  {0x04F6,0x04F6,0x04F6},  {0x04F7,0x04F7,0x04F7},
 
697
  {0x04F8,0x04F9,0x042B},  {0x04F8,0x04F9,0x042B},
 
698
  {0x04FA,0x04FA,0x04FA},  {0x04FB,0x04FB,0x04FB},
 
699
  {0x04FC,0x04FC,0x04FC},  {0x04FD,0x04FD,0x04FD},
 
700
  {0x04FE,0x04FE,0x04FE},  {0x04FF,0x04FF,0x04FF}
 
701
};
 
702
 
 
703
static MY_UNICASE_INFO plane05[]={
 
704
  {0x0500,0x0500,0x0500},  {0x0501,0x0501,0x0501},
 
705
  {0x0502,0x0502,0x0502},  {0x0503,0x0503,0x0503},
 
706
  {0x0504,0x0504,0x0504},  {0x0505,0x0505,0x0505},
 
707
  {0x0506,0x0506,0x0506},  {0x0507,0x0507,0x0507},
 
708
  {0x0508,0x0508,0x0508},  {0x0509,0x0509,0x0509},
 
709
  {0x050A,0x050A,0x050A},  {0x050B,0x050B,0x050B},
 
710
  {0x050C,0x050C,0x050C},  {0x050D,0x050D,0x050D},
 
711
  {0x050E,0x050E,0x050E},  {0x050F,0x050F,0x050F},
 
712
  {0x0510,0x0510,0x0510},  {0x0511,0x0511,0x0511},
 
713
  {0x0512,0x0512,0x0512},  {0x0513,0x0513,0x0513},
 
714
  {0x0514,0x0514,0x0514},  {0x0515,0x0515,0x0515},
 
715
  {0x0516,0x0516,0x0516},  {0x0517,0x0517,0x0517},
 
716
  {0x0518,0x0518,0x0518},  {0x0519,0x0519,0x0519},
 
717
  {0x051A,0x051A,0x051A},  {0x051B,0x051B,0x051B},
 
718
  {0x051C,0x051C,0x051C},  {0x051D,0x051D,0x051D},
 
719
  {0x051E,0x051E,0x051E},  {0x051F,0x051F,0x051F},
 
720
  {0x0520,0x0520,0x0520},  {0x0521,0x0521,0x0521},
 
721
  {0x0522,0x0522,0x0522},  {0x0523,0x0523,0x0523},
 
722
  {0x0524,0x0524,0x0524},  {0x0525,0x0525,0x0525},
 
723
  {0x0526,0x0526,0x0526},  {0x0527,0x0527,0x0527},
 
724
  {0x0528,0x0528,0x0528},  {0x0529,0x0529,0x0529},
 
725
  {0x052A,0x052A,0x052A},  {0x052B,0x052B,0x052B},
 
726
  {0x052C,0x052C,0x052C},  {0x052D,0x052D,0x052D},
 
727
  {0x052E,0x052E,0x052E},  {0x052F,0x052F,0x052F},
 
728
  {0x0530,0x0530,0x0530},  {0x0531,0x0561,0x0531},
 
729
  {0x0532,0x0562,0x0532},  {0x0533,0x0563,0x0533},
 
730
  {0x0534,0x0564,0x0534},  {0x0535,0x0565,0x0535},
 
731
  {0x0536,0x0566,0x0536},  {0x0537,0x0567,0x0537},
 
732
  {0x0538,0x0568,0x0538},  {0x0539,0x0569,0x0539},
 
733
  {0x053A,0x056A,0x053A},  {0x053B,0x056B,0x053B},
 
734
  {0x053C,0x056C,0x053C},  {0x053D,0x056D,0x053D},
 
735
  {0x053E,0x056E,0x053E},  {0x053F,0x056F,0x053F},
 
736
  {0x0540,0x0570,0x0540},  {0x0541,0x0571,0x0541},
 
737
  {0x0542,0x0572,0x0542},  {0x0543,0x0573,0x0543},
 
738
  {0x0544,0x0574,0x0544},  {0x0545,0x0575,0x0545},
 
739
  {0x0546,0x0576,0x0546},  {0x0547,0x0577,0x0547},
 
740
  {0x0548,0x0578,0x0548},  {0x0549,0x0579,0x0549},
 
741
  {0x054A,0x057A,0x054A},  {0x054B,0x057B,0x054B},
 
742
  {0x054C,0x057C,0x054C},  {0x054D,0x057D,0x054D},
 
743
  {0x054E,0x057E,0x054E},  {0x054F,0x057F,0x054F},
 
744
  {0x0550,0x0580,0x0550},  {0x0551,0x0581,0x0551},
 
745
  {0x0552,0x0582,0x0552},  {0x0553,0x0583,0x0553},
 
746
  {0x0554,0x0584,0x0554},  {0x0555,0x0585,0x0555},
 
747
  {0x0556,0x0586,0x0556},  {0x0557,0x0557,0x0557},
 
748
  {0x0558,0x0558,0x0558},  {0x0559,0x0559,0x0559},
 
749
  {0x055A,0x055A,0x055A},  {0x055B,0x055B,0x055B},
 
750
  {0x055C,0x055C,0x055C},  {0x055D,0x055D,0x055D},
 
751
  {0x055E,0x055E,0x055E},  {0x055F,0x055F,0x055F},
 
752
  {0x0560,0x0560,0x0560},  {0x0531,0x0561,0x0531},
 
753
  {0x0532,0x0562,0x0532},  {0x0533,0x0563,0x0533},
 
754
  {0x0534,0x0564,0x0534},  {0x0535,0x0565,0x0535},
 
755
  {0x0536,0x0566,0x0536},  {0x0537,0x0567,0x0537},
 
756
  {0x0538,0x0568,0x0538},  {0x0539,0x0569,0x0539},
 
757
  {0x053A,0x056A,0x053A},  {0x053B,0x056B,0x053B},
 
758
  {0x053C,0x056C,0x053C},  {0x053D,0x056D,0x053D},
 
759
  {0x053E,0x056E,0x053E},  {0x053F,0x056F,0x053F},
 
760
  {0x0540,0x0570,0x0540},  {0x0541,0x0571,0x0541},
 
761
  {0x0542,0x0572,0x0542},  {0x0543,0x0573,0x0543},
 
762
  {0x0544,0x0574,0x0544},  {0x0545,0x0575,0x0545},
 
763
  {0x0546,0x0576,0x0546},  {0x0547,0x0577,0x0547},
 
764
  {0x0548,0x0578,0x0548},  {0x0549,0x0579,0x0549},
 
765
  {0x054A,0x057A,0x054A},  {0x054B,0x057B,0x054B},
 
766
  {0x054C,0x057C,0x054C},  {0x054D,0x057D,0x054D},
 
767
  {0x054E,0x057E,0x054E},  {0x054F,0x057F,0x054F},
 
768
  {0x0550,0x0580,0x0550},  {0x0551,0x0581,0x0551},
 
769
  {0x0552,0x0582,0x0552},  {0x0553,0x0583,0x0553},
 
770
  {0x0554,0x0584,0x0554},  {0x0555,0x0585,0x0555},
 
771
  {0x0556,0x0586,0x0556},  {0x0587,0x0587,0x0587},
 
772
  {0x0588,0x0588,0x0588},  {0x0589,0x0589,0x0589},
 
773
  {0x058A,0x058A,0x058A},  {0x058B,0x058B,0x058B},
 
774
  {0x058C,0x058C,0x058C},  {0x058D,0x058D,0x058D},
 
775
  {0x058E,0x058E,0x058E},  {0x058F,0x058F,0x058F},
 
776
  {0x0590,0x0590,0x0590},  {0x0591,0x0591,0x0591},
 
777
  {0x0592,0x0592,0x0592},  {0x0593,0x0593,0x0593},
 
778
  {0x0594,0x0594,0x0594},  {0x0595,0x0595,0x0595},
 
779
  {0x0596,0x0596,0x0596},  {0x0597,0x0597,0x0597},
 
780
  {0x0598,0x0598,0x0598},  {0x0599,0x0599,0x0599},
 
781
  {0x059A,0x059A,0x059A},  {0x059B,0x059B,0x059B},
 
782
  {0x059C,0x059C,0x059C},  {0x059D,0x059D,0x059D},
 
783
  {0x059E,0x059E,0x059E},  {0x059F,0x059F,0x059F},
 
784
  {0x05A0,0x05A0,0x05A0},  {0x05A1,0x05A1,0x05A1},
 
785
  {0x05A2,0x05A2,0x05A2},  {0x05A3,0x05A3,0x05A3},
 
786
  {0x05A4,0x05A4,0x05A4},  {0x05A5,0x05A5,0x05A5},
 
787
  {0x05A6,0x05A6,0x05A6},  {0x05A7,0x05A7,0x05A7},
 
788
  {0x05A8,0x05A8,0x05A8},  {0x05A9,0x05A9,0x05A9},
 
789
  {0x05AA,0x05AA,0x05AA},  {0x05AB,0x05AB,0x05AB},
 
790
  {0x05AC,0x05AC,0x05AC},  {0x05AD,0x05AD,0x05AD},
 
791
  {0x05AE,0x05AE,0x05AE},  {0x05AF,0x05AF,0x05AF},
 
792
  {0x05B0,0x05B0,0x05B0},  {0x05B1,0x05B1,0x05B1},
 
793
  {0x05B2,0x05B2,0x05B2},  {0x05B3,0x05B3,0x05B3},
 
794
  {0x05B4,0x05B4,0x05B4},  {0x05B5,0x05B5,0x05B5},
 
795
  {0x05B6,0x05B6,0x05B6},  {0x05B7,0x05B7,0x05B7},
 
796
  {0x05B8,0x05B8,0x05B8},  {0x05B9,0x05B9,0x05B9},
 
797
  {0x05BA,0x05BA,0x05BA},  {0x05BB,0x05BB,0x05BB},
 
798
  {0x05BC,0x05BC,0x05BC},  {0x05BD,0x05BD,0x05BD},
 
799
  {0x05BE,0x05BE,0x05BE},  {0x05BF,0x05BF,0x05BF},
 
800
  {0x05C0,0x05C0,0x05C0},  {0x05C1,0x05C1,0x05C1},
 
801
  {0x05C2,0x05C2,0x05C2},  {0x05C3,0x05C3,0x05C3},
 
802
  {0x05C4,0x05C4,0x05C4},  {0x05C5,0x05C5,0x05C5},
 
803
  {0x05C6,0x05C6,0x05C6},  {0x05C7,0x05C7,0x05C7},
 
804
  {0x05C8,0x05C8,0x05C8},  {0x05C9,0x05C9,0x05C9},
 
805
  {0x05CA,0x05CA,0x05CA},  {0x05CB,0x05CB,0x05CB},
 
806
  {0x05CC,0x05CC,0x05CC},  {0x05CD,0x05CD,0x05CD},
 
807
  {0x05CE,0x05CE,0x05CE},  {0x05CF,0x05CF,0x05CF},
 
808
  {0x05D0,0x05D0,0x05D0},  {0x05D1,0x05D1,0x05D1},
 
809
  {0x05D2,0x05D2,0x05D2},  {0x05D3,0x05D3,0x05D3},
 
810
  {0x05D4,0x05D4,0x05D4},  {0x05D5,0x05D5,0x05D5},
 
811
  {0x05D6,0x05D6,0x05D6},  {0x05D7,0x05D7,0x05D7},
 
812
  {0x05D8,0x05D8,0x05D8},  {0x05D9,0x05D9,0x05D9},
 
813
  {0x05DA,0x05DA,0x05DA},  {0x05DB,0x05DB,0x05DB},
 
814
  {0x05DC,0x05DC,0x05DC},  {0x05DD,0x05DD,0x05DD},
 
815
  {0x05DE,0x05DE,0x05DE},  {0x05DF,0x05DF,0x05DF},
 
816
  {0x05E0,0x05E0,0x05E0},  {0x05E1,0x05E1,0x05E1},
 
817
  {0x05E2,0x05E2,0x05E2},  {0x05E3,0x05E3,0x05E3},
 
818
  {0x05E4,0x05E4,0x05E4},  {0x05E5,0x05E5,0x05E5},
 
819
  {0x05E6,0x05E6,0x05E6},  {0x05E7,0x05E7,0x05E7},
 
820
  {0x05E8,0x05E8,0x05E8},  {0x05E9,0x05E9,0x05E9},
 
821
  {0x05EA,0x05EA,0x05EA},  {0x05EB,0x05EB,0x05EB},
 
822
  {0x05EC,0x05EC,0x05EC},  {0x05ED,0x05ED,0x05ED},
 
823
  {0x05EE,0x05EE,0x05EE},  {0x05EF,0x05EF,0x05EF},
 
824
  {0x05F0,0x05F0,0x05F0},  {0x05F1,0x05F1,0x05F1},
 
825
  {0x05F2,0x05F2,0x05F2},  {0x05F3,0x05F3,0x05F3},
 
826
  {0x05F4,0x05F4,0x05F4},  {0x05F5,0x05F5,0x05F5},
 
827
  {0x05F6,0x05F6,0x05F6},  {0x05F7,0x05F7,0x05F7},
 
828
  {0x05F8,0x05F8,0x05F8},  {0x05F9,0x05F9,0x05F9},
 
829
  {0x05FA,0x05FA,0x05FA},  {0x05FB,0x05FB,0x05FB},
 
830
  {0x05FC,0x05FC,0x05FC},  {0x05FD,0x05FD,0x05FD},
 
831
  {0x05FE,0x05FE,0x05FE},  {0x05FF,0x05FF,0x05FF}
 
832
};
 
833
 
 
834
static MY_UNICASE_INFO plane1E[]={
 
835
  {0x1E00,0x1E01,0x0041},  {0x1E00,0x1E01,0x0041},
 
836
  {0x1E02,0x1E03,0x0042},  {0x1E02,0x1E03,0x0042},
 
837
  {0x1E04,0x1E05,0x0042},  {0x1E04,0x1E05,0x0042},
 
838
  {0x1E06,0x1E07,0x0042},  {0x1E06,0x1E07,0x0042},
 
839
  {0x1E08,0x1E09,0x0043},  {0x1E08,0x1E09,0x0043},
 
840
  {0x1E0A,0x1E0B,0x0044},  {0x1E0A,0x1E0B,0x0044},
 
841
  {0x1E0C,0x1E0D,0x0044},  {0x1E0C,0x1E0D,0x0044},
 
842
  {0x1E0E,0x1E0F,0x0044},  {0x1E0E,0x1E0F,0x0044},
 
843
  {0x1E10,0x1E11,0x0044},  {0x1E10,0x1E11,0x0044},
 
844
  {0x1E12,0x1E13,0x0044},  {0x1E12,0x1E13,0x0044},
 
845
  {0x1E14,0x1E15,0x0045},  {0x1E14,0x1E15,0x0045},
 
846
  {0x1E16,0x1E17,0x0045},  {0x1E16,0x1E17,0x0045},
 
847
  {0x1E18,0x1E19,0x0045},  {0x1E18,0x1E19,0x0045},
 
848
  {0x1E1A,0x1E1B,0x0045},  {0x1E1A,0x1E1B,0x0045},
 
849
  {0x1E1C,0x1E1D,0x0045},  {0x1E1C,0x1E1D,0x0045},
 
850
  {0x1E1E,0x1E1F,0x0046},  {0x1E1E,0x1E1F,0x0046},
 
851
  {0x1E20,0x1E21,0x0047},  {0x1E20,0x1E21,0x0047},
 
852
  {0x1E22,0x1E23,0x0048},  {0x1E22,0x1E23,0x0048},
 
853
  {0x1E24,0x1E25,0x0048},  {0x1E24,0x1E25,0x0048},
 
854
  {0x1E26,0x1E27,0x0048},  {0x1E26,0x1E27,0x0048},
 
855
  {0x1E28,0x1E29,0x0048},  {0x1E28,0x1E29,0x0048},
 
856
  {0x1E2A,0x1E2B,0x0048},  {0x1E2A,0x1E2B,0x0048},
 
857
  {0x1E2C,0x1E2D,0x0049},  {0x1E2C,0x1E2D,0x0049},
 
858
  {0x1E2E,0x1E2F,0x0049},  {0x1E2E,0x1E2F,0x0049},
 
859
  {0x1E30,0x1E31,0x004B},  {0x1E30,0x1E31,0x004B},
 
860
  {0x1E32,0x1E33,0x004B},  {0x1E32,0x1E33,0x004B},
 
861
  {0x1E34,0x1E35,0x004B},  {0x1E34,0x1E35,0x004B},
 
862
  {0x1E36,0x1E37,0x004C},  {0x1E36,0x1E37,0x004C},
 
863
  {0x1E38,0x1E39,0x004C},  {0x1E38,0x1E39,0x004C},
 
864
  {0x1E3A,0x1E3B,0x004C},  {0x1E3A,0x1E3B,0x004C},
 
865
  {0x1E3C,0x1E3D,0x004C},  {0x1E3C,0x1E3D,0x004C},
 
866
  {0x1E3E,0x1E3F,0x004D},  {0x1E3E,0x1E3F,0x004D},
 
867
  {0x1E40,0x1E41,0x004D},  {0x1E40,0x1E41,0x004D},
 
868
  {0x1E42,0x1E43,0x004D},  {0x1E42,0x1E43,0x004D},
 
869
  {0x1E44,0x1E45,0x004E},  {0x1E44,0x1E45,0x004E},
 
870
  {0x1E46,0x1E47,0x004E},  {0x1E46,0x1E47,0x004E},
 
871
  {0x1E48,0x1E49,0x004E},  {0x1E48,0x1E49,0x004E},
 
872
  {0x1E4A,0x1E4B,0x004E},  {0x1E4A,0x1E4B,0x004E},
 
873
  {0x1E4C,0x1E4D,0x004F},  {0x1E4C,0x1E4D,0x004F},
 
874
  {0x1E4E,0x1E4F,0x004F},  {0x1E4E,0x1E4F,0x004F},
 
875
  {0x1E50,0x1E51,0x004F},  {0x1E50,0x1E51,0x004F},
 
876
  {0x1E52,0x1E53,0x004F},  {0x1E52,0x1E53,0x004F},
 
877
  {0x1E54,0x1E55,0x0050},  {0x1E54,0x1E55,0x0050},
 
878
  {0x1E56,0x1E57,0x0050},  {0x1E56,0x1E57,0x0050},
 
879
  {0x1E58,0x1E59,0x0052},  {0x1E58,0x1E59,0x0052},
 
880
  {0x1E5A,0x1E5B,0x0052},  {0x1E5A,0x1E5B,0x0052},
 
881
  {0x1E5C,0x1E5D,0x0052},  {0x1E5C,0x1E5D,0x0052},
 
882
  {0x1E5E,0x1E5F,0x0052},  {0x1E5E,0x1E5F,0x0052},
 
883
  {0x1E60,0x1E61,0x0053},  {0x1E60,0x1E61,0x0053},
 
884
  {0x1E62,0x1E63,0x0053},  {0x1E62,0x1E63,0x0053},
 
885
  {0x1E64,0x1E65,0x0053},  {0x1E64,0x1E65,0x0053},
 
886
  {0x1E66,0x1E67,0x0053},  {0x1E66,0x1E67,0x0053},
 
887
  {0x1E68,0x1E69,0x0053},  {0x1E68,0x1E69,0x0053},
 
888
  {0x1E6A,0x1E6B,0x0054},  {0x1E6A,0x1E6B,0x0054},
 
889
  {0x1E6C,0x1E6D,0x0054},  {0x1E6C,0x1E6D,0x0054},
 
890
  {0x1E6E,0x1E6F,0x0054},  {0x1E6E,0x1E6F,0x0054},
 
891
  {0x1E70,0x1E71,0x0054},  {0x1E70,0x1E71,0x0054},
 
892
  {0x1E72,0x1E73,0x0055},  {0x1E72,0x1E73,0x0055},
 
893
  {0x1E74,0x1E75,0x0055},  {0x1E74,0x1E75,0x0055},
 
894
  {0x1E76,0x1E77,0x0055},  {0x1E76,0x1E77,0x0055},
 
895
  {0x1E78,0x1E79,0x0055},  {0x1E78,0x1E79,0x0055},
 
896
  {0x1E7A,0x1E7B,0x0055},  {0x1E7A,0x1E7B,0x0055},
 
897
  {0x1E7C,0x1E7D,0x0056},  {0x1E7C,0x1E7D,0x0056},
 
898
  {0x1E7E,0x1E7F,0x0056},  {0x1E7E,0x1E7F,0x0056},
 
899
  {0x1E80,0x1E81,0x0057},  {0x1E80,0x1E81,0x0057},
 
900
  {0x1E82,0x1E83,0x0057},  {0x1E82,0x1E83,0x0057},
 
901
  {0x1E84,0x1E85,0x0057},  {0x1E84,0x1E85,0x0057},
 
902
  {0x1E86,0x1E87,0x0057},  {0x1E86,0x1E87,0x0057},
 
903
  {0x1E88,0x1E89,0x0057},  {0x1E88,0x1E89,0x0057},
 
904
  {0x1E8A,0x1E8B,0x0058},  {0x1E8A,0x1E8B,0x0058},
 
905
  {0x1E8C,0x1E8D,0x0058},  {0x1E8C,0x1E8D,0x0058},
 
906
  {0x1E8E,0x1E8F,0x0059},  {0x1E8E,0x1E8F,0x0059},
 
907
  {0x1E90,0x1E91,0x005A},  {0x1E90,0x1E91,0x005A},
 
908
  {0x1E92,0x1E93,0x005A},  {0x1E92,0x1E93,0x005A},
 
909
  {0x1E94,0x1E95,0x005A},  {0x1E94,0x1E95,0x005A},
 
910
  {0x1E96,0x1E96,0x0048},  {0x1E97,0x1E97,0x0054},
 
911
  {0x1E98,0x1E98,0x0057},  {0x1E99,0x1E99,0x0059},
 
912
  {0x1E9A,0x1E9A,0x1E9A},  {0x1E60,0x1E9B,0x0053},
 
913
  {0x1E9C,0x1E9C,0x1E9C},  {0x1E9D,0x1E9D,0x1E9D},
 
914
  {0x1E9E,0x1E9E,0x1E9E},  {0x1E9F,0x1E9F,0x1E9F},
 
915
  {0x1EA0,0x1EA1,0x0041},  {0x1EA0,0x1EA1,0x0041},
 
916
  {0x1EA2,0x1EA3,0x0041},  {0x1EA2,0x1EA3,0x0041},
 
917
  {0x1EA4,0x1EA5,0x0041},  {0x1EA4,0x1EA5,0x0041},
 
918
  {0x1EA6,0x1EA7,0x0041},  {0x1EA6,0x1EA7,0x0041},
 
919
  {0x1EA8,0x1EA9,0x0041},  {0x1EA8,0x1EA9,0x0041},
 
920
  {0x1EAA,0x1EAB,0x0041},  {0x1EAA,0x1EAB,0x0041},
 
921
  {0x1EAC,0x1EAD,0x0041},  {0x1EAC,0x1EAD,0x0041},
 
922
  {0x1EAE,0x1EAF,0x0041},  {0x1EAE,0x1EAF,0x0041},
 
923
  {0x1EB0,0x1EB1,0x0041},  {0x1EB0,0x1EB1,0x0041},
 
924
  {0x1EB2,0x1EB3,0x0041},  {0x1EB2,0x1EB3,0x0041},
 
925
  {0x1EB4,0x1EB5,0x0041},  {0x1EB4,0x1EB5,0x0041},
 
926
  {0x1EB6,0x1EB7,0x0041},  {0x1EB6,0x1EB7,0x0041},
 
927
  {0x1EB8,0x1EB9,0x0045},  {0x1EB8,0x1EB9,0x0045},
 
928
  {0x1EBA,0x1EBB,0x0045},  {0x1EBA,0x1EBB,0x0045},
 
929
  {0x1EBC,0x1EBD,0x0045},  {0x1EBC,0x1EBD,0x0045},
 
930
  {0x1EBE,0x1EBF,0x0045},  {0x1EBE,0x1EBF,0x0045},
 
931
  {0x1EC0,0x1EC1,0x0045},  {0x1EC0,0x1EC1,0x0045},
 
932
  {0x1EC2,0x1EC3,0x0045},  {0x1EC2,0x1EC3,0x0045},
 
933
  {0x1EC4,0x1EC5,0x0045},  {0x1EC4,0x1EC5,0x0045},
 
934
  {0x1EC6,0x1EC7,0x0045},  {0x1EC6,0x1EC7,0x0045},
 
935
  {0x1EC8,0x1EC9,0x0049},  {0x1EC8,0x1EC9,0x0049},
 
936
  {0x1ECA,0x1ECB,0x0049},  {0x1ECA,0x1ECB,0x0049},
 
937
  {0x1ECC,0x1ECD,0x004F},  {0x1ECC,0x1ECD,0x004F},
 
938
  {0x1ECE,0x1ECF,0x004F},  {0x1ECE,0x1ECF,0x004F},
 
939
  {0x1ED0,0x1ED1,0x004F},  {0x1ED0,0x1ED1,0x004F},
 
940
  {0x1ED2,0x1ED3,0x004F},  {0x1ED2,0x1ED3,0x004F},
 
941
  {0x1ED4,0x1ED5,0x004F},  {0x1ED4,0x1ED5,0x004F},
 
942
  {0x1ED6,0x1ED7,0x004F},  {0x1ED6,0x1ED7,0x004F},
 
943
  {0x1ED8,0x1ED9,0x004F},  {0x1ED8,0x1ED9,0x004F},
 
944
  {0x1EDA,0x1EDB,0x004F},  {0x1EDA,0x1EDB,0x004F},
 
945
  {0x1EDC,0x1EDD,0x004F},  {0x1EDC,0x1EDD,0x004F},
 
946
  {0x1EDE,0x1EDF,0x004F},  {0x1EDE,0x1EDF,0x004F},
 
947
  {0x1EE0,0x1EE1,0x004F},  {0x1EE0,0x1EE1,0x004F},
 
948
  {0x1EE2,0x1EE3,0x004F},  {0x1EE2,0x1EE3,0x004F},
 
949
  {0x1EE4,0x1EE5,0x0055},  {0x1EE4,0x1EE5,0x0055},
 
950
  {0x1EE6,0x1EE7,0x0055},  {0x1EE6,0x1EE7,0x0055},
 
951
  {0x1EE8,0x1EE9,0x0055},  {0x1EE8,0x1EE9,0x0055},
 
952
  {0x1EEA,0x1EEB,0x0055},  {0x1EEA,0x1EEB,0x0055},
 
953
  {0x1EEC,0x1EED,0x0055},  {0x1EEC,0x1EED,0x0055},
 
954
  {0x1EEE,0x1EEF,0x0055},  {0x1EEE,0x1EEF,0x0055},
 
955
  {0x1EF0,0x1EF1,0x0055},  {0x1EF0,0x1EF1,0x0055},
 
956
  {0x1EF2,0x1EF3,0x0059},  {0x1EF2,0x1EF3,0x0059},
 
957
  {0x1EF4,0x1EF5,0x0059},  {0x1EF4,0x1EF5,0x0059},
 
958
  {0x1EF6,0x1EF7,0x0059},  {0x1EF6,0x1EF7,0x0059},
 
959
  {0x1EF8,0x1EF9,0x0059},  {0x1EF8,0x1EF9,0x0059},
 
960
  {0x1EFA,0x1EFA,0x1EFA},  {0x1EFB,0x1EFB,0x1EFB},
 
961
  {0x1EFC,0x1EFC,0x1EFC},  {0x1EFD,0x1EFD,0x1EFD},
 
962
  {0x1EFE,0x1EFE,0x1EFE},  {0x1EFF,0x1EFF,0x1EFF}
 
963
};
 
964
 
 
965
static MY_UNICASE_INFO plane1F[]={
 
966
  {0x1F08,0x1F00,0x0391},  {0x1F09,0x1F01,0x0391},
 
967
  {0x1F0A,0x1F02,0x0391},  {0x1F0B,0x1F03,0x0391},
 
968
  {0x1F0C,0x1F04,0x0391},  {0x1F0D,0x1F05,0x0391},
 
969
  {0x1F0E,0x1F06,0x0391},  {0x1F0F,0x1F07,0x0391},
 
970
  {0x1F08,0x1F00,0x0391},  {0x1F09,0x1F01,0x0391},
 
971
  {0x1F0A,0x1F02,0x0391},  {0x1F0B,0x1F03,0x0391},
 
972
  {0x1F0C,0x1F04,0x0391},  {0x1F0D,0x1F05,0x0391},
 
973
  {0x1F0E,0x1F06,0x0391},  {0x1F0F,0x1F07,0x0391},
 
974
  {0x1F18,0x1F10,0x0395},  {0x1F19,0x1F11,0x0395},
 
975
  {0x1F1A,0x1F12,0x0395},  {0x1F1B,0x1F13,0x0395},
 
976
  {0x1F1C,0x1F14,0x0395},  {0x1F1D,0x1F15,0x0395},
 
977
  {0x1F16,0x1F16,0x1F16},  {0x1F17,0x1F17,0x1F17},
 
978
  {0x1F18,0x1F10,0x0395},  {0x1F19,0x1F11,0x0395},
 
979
  {0x1F1A,0x1F12,0x0395},  {0x1F1B,0x1F13,0x0395},
 
980
  {0x1F1C,0x1F14,0x0395},  {0x1F1D,0x1F15,0x0395},
 
981
  {0x1F1E,0x1F1E,0x1F1E},  {0x1F1F,0x1F1F,0x1F1F},
 
982
  {0x1F28,0x1F20,0x0397},  {0x1F29,0x1F21,0x0397},
 
983
  {0x1F2A,0x1F22,0x0397},  {0x1F2B,0x1F23,0x0397},
 
984
  {0x1F2C,0x1F24,0x0397},  {0x1F2D,0x1F25,0x0397},
 
985
  {0x1F2E,0x1F26,0x0397},  {0x1F2F,0x1F27,0x0397},
 
986
  {0x1F28,0x1F20,0x0397},  {0x1F29,0x1F21,0x0397},
 
987
  {0x1F2A,0x1F22,0x0397},  {0x1F2B,0x1F23,0x0397},
 
988
  {0x1F2C,0x1F24,0x0397},  {0x1F2D,0x1F25,0x0397},
 
989
  {0x1F2E,0x1F26,0x0397},  {0x1F2F,0x1F27,0x0397},
 
990
  {0x1F38,0x1F30,0x0399},  {0x1F39,0x1F31,0x0399},
 
991
  {0x1F3A,0x1F32,0x0399},  {0x1F3B,0x1F33,0x0399},
 
992
  {0x1F3C,0x1F34,0x0399},  {0x1F3D,0x1F35,0x0399},
 
993
  {0x1F3E,0x1F36,0x0399},  {0x1F3F,0x1F37,0x0399},
 
994
  {0x1F38,0x1F30,0x0399},  {0x1F39,0x1F31,0x0399},
 
995
  {0x1F3A,0x1F32,0x0399},  {0x1F3B,0x1F33,0x0399},
 
996
  {0x1F3C,0x1F34,0x0399},  {0x1F3D,0x1F35,0x0399},
 
997
  {0x1F3E,0x1F36,0x0399},  {0x1F3F,0x1F37,0x0399},
 
998
  {0x1F48,0x1F40,0x039F},  {0x1F49,0x1F41,0x039F},
 
999
  {0x1F4A,0x1F42,0x039F},  {0x1F4B,0x1F43,0x039F},
 
1000
  {0x1F4C,0x1F44,0x039F},  {0x1F4D,0x1F45,0x039F},
 
1001
  {0x1F46,0x1F46,0x1F46},  {0x1F47,0x1F47,0x1F47},
 
1002
  {0x1F48,0x1F40,0x039F},  {0x1F49,0x1F41,0x039F},
 
1003
  {0x1F4A,0x1F42,0x039F},  {0x1F4B,0x1F43,0x039F},
 
1004
  {0x1F4C,0x1F44,0x039F},  {0x1F4D,0x1F45,0x039F},
 
1005
  {0x1F4E,0x1F4E,0x1F4E},  {0x1F4F,0x1F4F,0x1F4F},
 
1006
  {0x1F50,0x1F50,0x03A5},  {0x1F59,0x1F51,0x03A5},
 
1007
  {0x1F52,0x1F52,0x03A5},  {0x1F5B,0x1F53,0x03A5},
 
1008
  {0x1F54,0x1F54,0x03A5},  {0x1F5D,0x1F55,0x03A5},
 
1009
  {0x1F56,0x1F56,0x03A5},  {0x1F5F,0x1F57,0x03A5},
 
1010
  {0x1F58,0x1F58,0x1F58},  {0x1F59,0x1F51,0x03A5},
 
1011
  {0x1F5A,0x1F5A,0x1F5A},  {0x1F5B,0x1F53,0x03A5},
 
1012
  {0x1F5C,0x1F5C,0x1F5C},  {0x1F5D,0x1F55,0x03A5},
 
1013
  {0x1F5E,0x1F5E,0x1F5E},  {0x1F5F,0x1F57,0x03A5},
 
1014
  {0x1F68,0x1F60,0x03A9},  {0x1F69,0x1F61,0x03A9},
 
1015
  {0x1F6A,0x1F62,0x03A9},  {0x1F6B,0x1F63,0x03A9},
 
1016
  {0x1F6C,0x1F64,0x03A9},  {0x1F6D,0x1F65,0x03A9},
 
1017
  {0x1F6E,0x1F66,0x03A9},  {0x1F6F,0x1F67,0x03A9},
 
1018
  {0x1F68,0x1F60,0x03A9},  {0x1F69,0x1F61,0x03A9},
 
1019
  {0x1F6A,0x1F62,0x03A9},  {0x1F6B,0x1F63,0x03A9},
 
1020
  {0x1F6C,0x1F64,0x03A9},  {0x1F6D,0x1F65,0x03A9},
 
1021
  {0x1F6E,0x1F66,0x03A9},  {0x1F6F,0x1F67,0x03A9},
 
1022
  {0x1FBA,0x1F70,0x0391},  {0x1FBB,0x1F71,0x1FBB},
 
1023
  {0x1FC8,0x1F72,0x0395},  {0x1FC9,0x1F73,0x1FC9},
 
1024
  {0x1FCA,0x1F74,0x0397},  {0x1FCB,0x1F75,0x1FCB},
 
1025
  {0x1FDA,0x1F76,0x0399},  {0x1FDB,0x1F77,0x1FDB},
 
1026
  {0x1FF8,0x1F78,0x039F},  {0x1FF9,0x1F79,0x1FF9},
 
1027
  {0x1FEA,0x1F7A,0x03A5},  {0x1FEB,0x1F7B,0x1FEB},
 
1028
  {0x1FFA,0x1F7C,0x03A9},  {0x1FFB,0x1F7D,0x1FFB},
 
1029
  {0x1F7E,0x1F7E,0x1F7E},  {0x1F7F,0x1F7F,0x1F7F},
 
1030
  {0x1F88,0x1F80,0x0391},  {0x1F89,0x1F81,0x0391},
 
1031
  {0x1F8A,0x1F82,0x0391},  {0x1F8B,0x1F83,0x0391},
 
1032
  {0x1F8C,0x1F84,0x0391},  {0x1F8D,0x1F85,0x0391},
 
1033
  {0x1F8E,0x1F86,0x0391},  {0x1F8F,0x1F87,0x0391},
 
1034
  {0x1F88,0x1F80,0x0391},  {0x1F89,0x1F81,0x0391},
 
1035
  {0x1F8A,0x1F82,0x0391},  {0x1F8B,0x1F83,0x0391},
 
1036
  {0x1F8C,0x1F84,0x0391},  {0x1F8D,0x1F85,0x0391},
 
1037
  {0x1F8E,0x1F86,0x0391},  {0x1F8F,0x1F87,0x0391},
 
1038
  {0x1F98,0x1F90,0x0397},  {0x1F99,0x1F91,0x0397},
 
1039
  {0x1F9A,0x1F92,0x0397},  {0x1F9B,0x1F93,0x0397},
 
1040
  {0x1F9C,0x1F94,0x0397},  {0x1F9D,0x1F95,0x0397},
 
1041
  {0x1F9E,0x1F96,0x0397},  {0x1F9F,0x1F97,0x0397},
 
1042
  {0x1F98,0x1F90,0x0397},  {0x1F99,0x1F91,0x0397},
 
1043
  {0x1F9A,0x1F92,0x0397},  {0x1F9B,0x1F93,0x0397},
 
1044
  {0x1F9C,0x1F94,0x0397},  {0x1F9D,0x1F95,0x0397},
 
1045
  {0x1F9E,0x1F96,0x0397},  {0x1F9F,0x1F97,0x0397},
 
1046
  {0x1FA8,0x1FA0,0x03A9},  {0x1FA9,0x1FA1,0x03A9},
 
1047
  {0x1FAA,0x1FA2,0x03A9},  {0x1FAB,0x1FA3,0x03A9},
 
1048
  {0x1FAC,0x1FA4,0x03A9},  {0x1FAD,0x1FA5,0x03A9},
 
1049
  {0x1FAE,0x1FA6,0x03A9},  {0x1FAF,0x1FA7,0x03A9},
 
1050
  {0x1FA8,0x1FA0,0x03A9},  {0x1FA9,0x1FA1,0x03A9},
 
1051
  {0x1FAA,0x1FA2,0x03A9},  {0x1FAB,0x1FA3,0x03A9},
 
1052
  {0x1FAC,0x1FA4,0x03A9},  {0x1FAD,0x1FA5,0x03A9},
 
1053
  {0x1FAE,0x1FA6,0x03A9},  {0x1FAF,0x1FA7,0x03A9},
 
1054
  {0x1FB8,0x1FB0,0x0391},  {0x1FB9,0x1FB1,0x0391},
 
1055
  {0x1FB2,0x1FB2,0x0391},  {0x1FBC,0x1FB3,0x0391},
 
1056
  {0x1FB4,0x1FB4,0x0391},  {0x1FB5,0x1FB5,0x1FB5},
 
1057
  {0x1FB6,0x1FB6,0x0391},  {0x1FB7,0x1FB7,0x0391},
 
1058
  {0x1FB8,0x1FB0,0x0391},  {0x1FB9,0x1FB1,0x0391},
 
1059
  {0x1FBA,0x1F70,0x0391},  {0x1FBB,0x1F71,0x1FBB},
 
1060
  {0x1FBC,0x1FB3,0x0391},  {0x1FBD,0x1FBD,0x1FBD},
 
1061
  {0x0399,0x1FBE,0x0399},  {0x1FBF,0x1FBF,0x1FBF},
 
1062
  {0x1FC0,0x1FC0,0x1FC0},  {0x1FC1,0x1FC1,0x1FC1},
 
1063
  {0x1FC2,0x1FC2,0x0397},  {0x1FCC,0x1FC3,0x0397},
 
1064
  {0x1FC4,0x1FC4,0x0397},  {0x1FC5,0x1FC5,0x1FC5},
 
1065
  {0x1FC6,0x1FC6,0x0397},  {0x1FC7,0x1FC7,0x0397},
 
1066
  {0x1FC8,0x1F72,0x0395},  {0x1FC9,0x1F73,0x1FC9},
 
1067
  {0x1FCA,0x1F74,0x0397},  {0x1FCB,0x1F75,0x1FCB},
 
1068
  {0x1FCC,0x1FC3,0x0397},  {0x1FCD,0x1FCD,0x1FCD},
 
1069
  {0x1FCE,0x1FCE,0x1FCE},  {0x1FCF,0x1FCF,0x1FCF},
 
1070
  {0x1FD8,0x1FD0,0x0399},  {0x1FD9,0x1FD1,0x0399},
 
1071
  {0x1FD2,0x1FD2,0x0399},  {0x1FD3,0x1FD3,0x1FD3},
 
1072
  {0x1FD4,0x1FD4,0x1FD4},  {0x1FD5,0x1FD5,0x1FD5},
 
1073
  {0x1FD6,0x1FD6,0x0399},  {0x1FD7,0x1FD7,0x0399},
 
1074
  {0x1FD8,0x1FD0,0x0399},  {0x1FD9,0x1FD1,0x0399},
 
1075
  {0x1FDA,0x1F76,0x0399},  {0x1FDB,0x1F77,0x1FDB},
 
1076
  {0x1FDC,0x1FDC,0x1FDC},  {0x1FDD,0x1FDD,0x1FDD},
 
1077
  {0x1FDE,0x1FDE,0x1FDE},  {0x1FDF,0x1FDF,0x1FDF},
 
1078
  {0x1FE8,0x1FE0,0x03A5},  {0x1FE9,0x1FE1,0x03A5},
 
1079
  {0x1FE2,0x1FE2,0x03A5},  {0x1FE3,0x1FE3,0x1FE3},
 
1080
  {0x1FE4,0x1FE4,0x03A1},  {0x1FEC,0x1FE5,0x03A1},
 
1081
  {0x1FE6,0x1FE6,0x03A5},  {0x1FE7,0x1FE7,0x03A5},
 
1082
  {0x1FE8,0x1FE0,0x03A5},  {0x1FE9,0x1FE1,0x03A5},
 
1083
  {0x1FEA,0x1F7A,0x03A5},  {0x1FEB,0x1F7B,0x1FEB},
 
1084
  {0x1FEC,0x1FE5,0x03A1},  {0x1FED,0x1FED,0x1FED},
 
1085
  {0x1FEE,0x1FEE,0x1FEE},  {0x1FEF,0x1FEF,0x1FEF},
 
1086
  {0x1FF0,0x1FF0,0x1FF0},  {0x1FF1,0x1FF1,0x1FF1},
 
1087
  {0x1FF2,0x1FF2,0x03A9},  {0x1FFC,0x1FF3,0x03A9},
 
1088
  {0x1FF4,0x1FF4,0x03A9},  {0x1FF5,0x1FF5,0x1FF5},
 
1089
  {0x1FF6,0x1FF6,0x03A9},  {0x1FF7,0x1FF7,0x03A9},
 
1090
  {0x1FF8,0x1F78,0x039F},  {0x1FF9,0x1F79,0x1FF9},
 
1091
  {0x1FFA,0x1F7C,0x03A9},  {0x1FFB,0x1F7D,0x1FFB},
 
1092
  {0x1FFC,0x1FF3,0x03A9},  {0x1FFD,0x1FFD,0x1FFD},
 
1093
  {0x1FFE,0x1FFE,0x1FFE},  {0x1FFF,0x1FFF,0x1FFF}
 
1094
};
 
1095
 
 
1096
static MY_UNICASE_INFO plane21[]={
 
1097
  {0x2100,0x2100,0x2100},  {0x2101,0x2101,0x2101},
 
1098
  {0x2102,0x2102,0x2102},  {0x2103,0x2103,0x2103},
 
1099
  {0x2104,0x2104,0x2104},  {0x2105,0x2105,0x2105},
 
1100
  {0x2106,0x2106,0x2106},  {0x2107,0x2107,0x2107},
 
1101
  {0x2108,0x2108,0x2108},  {0x2109,0x2109,0x2109},
 
1102
  {0x210A,0x210A,0x210A},  {0x210B,0x210B,0x210B},
 
1103
  {0x210C,0x210C,0x210C},  {0x210D,0x210D,0x210D},
 
1104
  {0x210E,0x210E,0x210E},  {0x210F,0x210F,0x210F},
 
1105
  {0x2110,0x2110,0x2110},  {0x2111,0x2111,0x2111},
 
1106
  {0x2112,0x2112,0x2112},  {0x2113,0x2113,0x2113},
 
1107
  {0x2114,0x2114,0x2114},  {0x2115,0x2115,0x2115},
 
1108
  {0x2116,0x2116,0x2116},  {0x2117,0x2117,0x2117},
 
1109
  {0x2118,0x2118,0x2118},  {0x2119,0x2119,0x2119},
 
1110
  {0x211A,0x211A,0x211A},  {0x211B,0x211B,0x211B},
 
1111
  {0x211C,0x211C,0x211C},  {0x211D,0x211D,0x211D},
 
1112
  {0x211E,0x211E,0x211E},  {0x211F,0x211F,0x211F},
 
1113
  {0x2120,0x2120,0x2120},  {0x2121,0x2121,0x2121},
 
1114
  {0x2122,0x2122,0x2122},  {0x2123,0x2123,0x2123},
 
1115
  {0x2124,0x2124,0x2124},  {0x2125,0x2125,0x2125},
 
1116
  {0x2126,0x03C9,0x2126},  {0x2127,0x2127,0x2127},
 
1117
  {0x2128,0x2128,0x2128},  {0x2129,0x2129,0x2129},
 
1118
  {0x212A,0x006B,0x212A},  {0x212B,0x00E5,0x212B},
 
1119
  {0x212C,0x212C,0x212C},  {0x212D,0x212D,0x212D},
 
1120
  {0x212E,0x212E,0x212E},  {0x212F,0x212F,0x212F},
 
1121
  {0x2130,0x2130,0x2130},  {0x2131,0x2131,0x2131},
 
1122
  {0x2132,0x2132,0x2132},  {0x2133,0x2133,0x2133},
 
1123
  {0x2134,0x2134,0x2134},  {0x2135,0x2135,0x2135},
 
1124
  {0x2136,0x2136,0x2136},  {0x2137,0x2137,0x2137},
 
1125
  {0x2138,0x2138,0x2138},  {0x2139,0x2139,0x2139},
 
1126
  {0x213A,0x213A,0x213A},  {0x213B,0x213B,0x213B},
 
1127
  {0x213C,0x213C,0x213C},  {0x213D,0x213D,0x213D},
 
1128
  {0x213E,0x213E,0x213E},  {0x213F,0x213F,0x213F},
 
1129
  {0x2140,0x2140,0x2140},  {0x2141,0x2141,0x2141},
 
1130
  {0x2142,0x2142,0x2142},  {0x2143,0x2143,0x2143},
 
1131
  {0x2144,0x2144,0x2144},  {0x2145,0x2145,0x2145},
 
1132
  {0x2146,0x2146,0x2146},  {0x2147,0x2147,0x2147},
 
1133
  {0x2148,0x2148,0x2148},  {0x2149,0x2149,0x2149},
 
1134
  {0x214A,0x214A,0x214A},  {0x214B,0x214B,0x214B},
 
1135
  {0x214C,0x214C,0x214C},  {0x214D,0x214D,0x214D},
 
1136
  {0x214E,0x214E,0x214E},  {0x214F,0x214F,0x214F},
 
1137
  {0x2150,0x2150,0x2150},  {0x2151,0x2151,0x2151},
 
1138
  {0x2152,0x2152,0x2152},  {0x2153,0x2153,0x2153},
 
1139
  {0x2154,0x2154,0x2154},  {0x2155,0x2155,0x2155},
 
1140
  {0x2156,0x2156,0x2156},  {0x2157,0x2157,0x2157},
 
1141
  {0x2158,0x2158,0x2158},  {0x2159,0x2159,0x2159},
 
1142
  {0x215A,0x215A,0x215A},  {0x215B,0x215B,0x215B},
 
1143
  {0x215C,0x215C,0x215C},  {0x215D,0x215D,0x215D},
 
1144
  {0x215E,0x215E,0x215E},  {0x215F,0x215F,0x215F},
 
1145
  {0x2160,0x2170,0x2160},  {0x2161,0x2171,0x2161},
 
1146
  {0x2162,0x2172,0x2162},  {0x2163,0x2173,0x2163},
 
1147
  {0x2164,0x2174,0x2164},  {0x2165,0x2175,0x2165},
 
1148
  {0x2166,0x2176,0x2166},  {0x2167,0x2177,0x2167},
 
1149
  {0x2168,0x2178,0x2168},  {0x2169,0x2179,0x2169},
 
1150
  {0x216A,0x217A,0x216A},  {0x216B,0x217B,0x216B},
 
1151
  {0x216C,0x217C,0x216C},  {0x216D,0x217D,0x216D},
 
1152
  {0x216E,0x217E,0x216E},  {0x216F,0x217F,0x216F},
 
1153
  {0x2160,0x2170,0x2160},  {0x2161,0x2171,0x2161},
 
1154
  {0x2162,0x2172,0x2162},  {0x2163,0x2173,0x2163},
 
1155
  {0x2164,0x2174,0x2164},  {0x2165,0x2175,0x2165},
 
1156
  {0x2166,0x2176,0x2166},  {0x2167,0x2177,0x2167},
 
1157
  {0x2168,0x2178,0x2168},  {0x2169,0x2179,0x2169},
 
1158
  {0x216A,0x217A,0x216A},  {0x216B,0x217B,0x216B},
 
1159
  {0x216C,0x217C,0x216C},  {0x216D,0x217D,0x216D},
 
1160
  {0x216E,0x217E,0x216E},  {0x216F,0x217F,0x216F},
 
1161
  {0x2180,0x2180,0x2180},  {0x2181,0x2181,0x2181},
 
1162
  {0x2182,0x2182,0x2182},  {0x2183,0x2183,0x2183},
 
1163
  {0x2184,0x2184,0x2184},  {0x2185,0x2185,0x2185},
 
1164
  {0x2186,0x2186,0x2186},  {0x2187,0x2187,0x2187},
 
1165
  {0x2188,0x2188,0x2188},  {0x2189,0x2189,0x2189},
 
1166
  {0x218A,0x218A,0x218A},  {0x218B,0x218B,0x218B},
 
1167
  {0x218C,0x218C,0x218C},  {0x218D,0x218D,0x218D},
 
1168
  {0x218E,0x218E,0x218E},  {0x218F,0x218F,0x218F},
 
1169
  {0x2190,0x2190,0x2190},  {0x2191,0x2191,0x2191},
 
1170
  {0x2192,0x2192,0x2192},  {0x2193,0x2193,0x2193},
 
1171
  {0x2194,0x2194,0x2194},  {0x2195,0x2195,0x2195},
 
1172
  {0x2196,0x2196,0x2196},  {0x2197,0x2197,0x2197},
 
1173
  {0x2198,0x2198,0x2198},  {0x2199,0x2199,0x2199},
 
1174
  {0x219A,0x219A,0x219A},  {0x219B,0x219B,0x219B},
 
1175
  {0x219C,0x219C,0x219C},  {0x219D,0x219D,0x219D},
 
1176
  {0x219E,0x219E,0x219E},  {0x219F,0x219F,0x219F},
 
1177
  {0x21A0,0x21A0,0x21A0},  {0x21A1,0x21A1,0x21A1},
 
1178
  {0x21A2,0x21A2,0x21A2},  {0x21A3,0x21A3,0x21A3},
 
1179
  {0x21A4,0x21A4,0x21A4},  {0x21A5,0x21A5,0x21A5},
 
1180
  {0x21A6,0x21A6,0x21A6},  {0x21A7,0x21A7,0x21A7},
 
1181
  {0x21A8,0x21A8,0x21A8},  {0x21A9,0x21A9,0x21A9},
 
1182
  {0x21AA,0x21AA,0x21AA},  {0x21AB,0x21AB,0x21AB},
 
1183
  {0x21AC,0x21AC,0x21AC},  {0x21AD,0x21AD,0x21AD},
 
1184
  {0x21AE,0x21AE,0x21AE},  {0x21AF,0x21AF,0x21AF},
 
1185
  {0x21B0,0x21B0,0x21B0},  {0x21B1,0x21B1,0x21B1},
 
1186
  {0x21B2,0x21B2,0x21B2},  {0x21B3,0x21B3,0x21B3},
 
1187
  {0x21B4,0x21B4,0x21B4},  {0x21B5,0x21B5,0x21B5},
 
1188
  {0x21B6,0x21B6,0x21B6},  {0x21B7,0x21B7,0x21B7},
 
1189
  {0x21B8,0x21B8,0x21B8},  {0x21B9,0x21B9,0x21B9},
 
1190
  {0x21BA,0x21BA,0x21BA},  {0x21BB,0x21BB,0x21BB},
 
1191
  {0x21BC,0x21BC,0x21BC},  {0x21BD,0x21BD,0x21BD},
 
1192
  {0x21BE,0x21BE,0x21BE},  {0x21BF,0x21BF,0x21BF},
 
1193
  {0x21C0,0x21C0,0x21C0},  {0x21C1,0x21C1,0x21C1},
 
1194
  {0x21C2,0x21C2,0x21C2},  {0x21C3,0x21C3,0x21C3},
 
1195
  {0x21C4,0x21C4,0x21C4},  {0x21C5,0x21C5,0x21C5},
 
1196
  {0x21C6,0x21C6,0x21C6},  {0x21C7,0x21C7,0x21C7},
 
1197
  {0x21C8,0x21C8,0x21C8},  {0x21C9,0x21C9,0x21C9},
 
1198
  {0x21CA,0x21CA,0x21CA},  {0x21CB,0x21CB,0x21CB},
 
1199
  {0x21CC,0x21CC,0x21CC},  {0x21CD,0x21CD,0x21CD},
 
1200
  {0x21CE,0x21CE,0x21CE},  {0x21CF,0x21CF,0x21CF},
 
1201
  {0x21D0,0x21D0,0x21D0},  {0x21D1,0x21D1,0x21D1},
 
1202
  {0x21D2,0x21D2,0x21D2},  {0x21D3,0x21D3,0x21D3},
 
1203
  {0x21D4,0x21D4,0x21D4},  {0x21D5,0x21D5,0x21D5},
 
1204
  {0x21D6,0x21D6,0x21D6},  {0x21D7,0x21D7,0x21D7},
 
1205
  {0x21D8,0x21D8,0x21D8},  {0x21D9,0x21D9,0x21D9},
 
1206
  {0x21DA,0x21DA,0x21DA},  {0x21DB,0x21DB,0x21DB},
 
1207
  {0x21DC,0x21DC,0x21DC},  {0x21DD,0x21DD,0x21DD},
 
1208
  {0x21DE,0x21DE,0x21DE},  {0x21DF,0x21DF,0x21DF},
 
1209
  {0x21E0,0x21E0,0x21E0},  {0x21E1,0x21E1,0x21E1},
 
1210
  {0x21E2,0x21E2,0x21E2},  {0x21E3,0x21E3,0x21E3},
 
1211
  {0x21E4,0x21E4,0x21E4},  {0x21E5,0x21E5,0x21E5},
 
1212
  {0x21E6,0x21E6,0x21E6},  {0x21E7,0x21E7,0x21E7},
 
1213
  {0x21E8,0x21E8,0x21E8},  {0x21E9,0x21E9,0x21E9},
 
1214
  {0x21EA,0x21EA,0x21EA},  {0x21EB,0x21EB,0x21EB},
 
1215
  {0x21EC,0x21EC,0x21EC},  {0x21ED,0x21ED,0x21ED},
 
1216
  {0x21EE,0x21EE,0x21EE},  {0x21EF,0x21EF,0x21EF},
 
1217
  {0x21F0,0x21F0,0x21F0},  {0x21F1,0x21F1,0x21F1},
 
1218
  {0x21F2,0x21F2,0x21F2},  {0x21F3,0x21F3,0x21F3},
 
1219
  {0x21F4,0x21F4,0x21F4},  {0x21F5,0x21F5,0x21F5},
 
1220
  {0x21F6,0x21F6,0x21F6},  {0x21F7,0x21F7,0x21F7},
 
1221
  {0x21F8,0x21F8,0x21F8},  {0x21F9,0x21F9,0x21F9},
 
1222
  {0x21FA,0x21FA,0x21FA},  {0x21FB,0x21FB,0x21FB},
 
1223
  {0x21FC,0x21FC,0x21FC},  {0x21FD,0x21FD,0x21FD},
 
1224
  {0x21FE,0x21FE,0x21FE},  {0x21FF,0x21FF,0x21FF}
 
1225
};
 
1226
 
 
1227
static MY_UNICASE_INFO plane24[]={
 
1228
  {0x2400,0x2400,0x2400},  {0x2401,0x2401,0x2401},
 
1229
  {0x2402,0x2402,0x2402},  {0x2403,0x2403,0x2403},
 
1230
  {0x2404,0x2404,0x2404},  {0x2405,0x2405,0x2405},
 
1231
  {0x2406,0x2406,0x2406},  {0x2407,0x2407,0x2407},
 
1232
  {0x2408,0x2408,0x2408},  {0x2409,0x2409,0x2409},
 
1233
  {0x240A,0x240A,0x240A},  {0x240B,0x240B,0x240B},
 
1234
  {0x240C,0x240C,0x240C},  {0x240D,0x240D,0x240D},
 
1235
  {0x240E,0x240E,0x240E},  {0x240F,0x240F,0x240F},
 
1236
  {0x2410,0x2410,0x2410},  {0x2411,0x2411,0x2411},
 
1237
  {0x2412,0x2412,0x2412},  {0x2413,0x2413,0x2413},
 
1238
  {0x2414,0x2414,0x2414},  {0x2415,0x2415,0x2415},
 
1239
  {0x2416,0x2416,0x2416},  {0x2417,0x2417,0x2417},
 
1240
  {0x2418,0x2418,0x2418},  {0x2419,0x2419,0x2419},
 
1241
  {0x241A,0x241A,0x241A},  {0x241B,0x241B,0x241B},
 
1242
  {0x241C,0x241C,0x241C},  {0x241D,0x241D,0x241D},
 
1243
  {0x241E,0x241E,0x241E},  {0x241F,0x241F,0x241F},
 
1244
  {0x2420,0x2420,0x2420},  {0x2421,0x2421,0x2421},
 
1245
  {0x2422,0x2422,0x2422},  {0x2423,0x2423,0x2423},
 
1246
  {0x2424,0x2424,0x2424},  {0x2425,0x2425,0x2425},
 
1247
  {0x2426,0x2426,0x2426},  {0x2427,0x2427,0x2427},
 
1248
  {0x2428,0x2428,0x2428},  {0x2429,0x2429,0x2429},
 
1249
  {0x242A,0x242A,0x242A},  {0x242B,0x242B,0x242B},
 
1250
  {0x242C,0x242C,0x242C},  {0x242D,0x242D,0x242D},
 
1251
  {0x242E,0x242E,0x242E},  {0x242F,0x242F,0x242F},
 
1252
  {0x2430,0x2430,0x2430},  {0x2431,0x2431,0x2431},
 
1253
  {0x2432,0x2432,0x2432},  {0x2433,0x2433,0x2433},
 
1254
  {0x2434,0x2434,0x2434},  {0x2435,0x2435,0x2435},
 
1255
  {0x2436,0x2436,0x2436},  {0x2437,0x2437,0x2437},
 
1256
  {0x2438,0x2438,0x2438},  {0x2439,0x2439,0x2439},
 
1257
  {0x243A,0x243A,0x243A},  {0x243B,0x243B,0x243B},
 
1258
  {0x243C,0x243C,0x243C},  {0x243D,0x243D,0x243D},
 
1259
  {0x243E,0x243E,0x243E},  {0x243F,0x243F,0x243F},
 
1260
  {0x2440,0x2440,0x2440},  {0x2441,0x2441,0x2441},
 
1261
  {0x2442,0x2442,0x2442},  {0x2443,0x2443,0x2443},
 
1262
  {0x2444,0x2444,0x2444},  {0x2445,0x2445,0x2445},
 
1263
  {0x2446,0x2446,0x2446},  {0x2447,0x2447,0x2447},
 
1264
  {0x2448,0x2448,0x2448},  {0x2449,0x2449,0x2449},
 
1265
  {0x244A,0x244A,0x244A},  {0x244B,0x244B,0x244B},
 
1266
  {0x244C,0x244C,0x244C},  {0x244D,0x244D,0x244D},
 
1267
  {0x244E,0x244E,0x244E},  {0x244F,0x244F,0x244F},
 
1268
  {0x2450,0x2450,0x2450},  {0x2451,0x2451,0x2451},
 
1269
  {0x2452,0x2452,0x2452},  {0x2453,0x2453,0x2453},
 
1270
  {0x2454,0x2454,0x2454},  {0x2455,0x2455,0x2455},
 
1271
  {0x2456,0x2456,0x2456},  {0x2457,0x2457,0x2457},
 
1272
  {0x2458,0x2458,0x2458},  {0x2459,0x2459,0x2459},
 
1273
  {0x245A,0x245A,0x245A},  {0x245B,0x245B,0x245B},
 
1274
  {0x245C,0x245C,0x245C},  {0x245D,0x245D,0x245D},
 
1275
  {0x245E,0x245E,0x245E},  {0x245F,0x245F,0x245F},
 
1276
  {0x2460,0x2460,0x2460},  {0x2461,0x2461,0x2461},
 
1277
  {0x2462,0x2462,0x2462},  {0x2463,0x2463,0x2463},
 
1278
  {0x2464,0x2464,0x2464},  {0x2465,0x2465,0x2465},
 
1279
  {0x2466,0x2466,0x2466},  {0x2467,0x2467,0x2467},
 
1280
  {0x2468,0x2468,0x2468},  {0x2469,0x2469,0x2469},
 
1281
  {0x246A,0x246A,0x246A},  {0x246B,0x246B,0x246B},
 
1282
  {0x246C,0x246C,0x246C},  {0x246D,0x246D,0x246D},
 
1283
  {0x246E,0x246E,0x246E},  {0x246F,0x246F,0x246F},
 
1284
  {0x2470,0x2470,0x2470},  {0x2471,0x2471,0x2471},
 
1285
  {0x2472,0x2472,0x2472},  {0x2473,0x2473,0x2473},
 
1286
  {0x2474,0x2474,0x2474},  {0x2475,0x2475,0x2475},
 
1287
  {0x2476,0x2476,0x2476},  {0x2477,0x2477,0x2477},
 
1288
  {0x2478,0x2478,0x2478},  {0x2479,0x2479,0x2479},
 
1289
  {0x247A,0x247A,0x247A},  {0x247B,0x247B,0x247B},
 
1290
  {0x247C,0x247C,0x247C},  {0x247D,0x247D,0x247D},
 
1291
  {0x247E,0x247E,0x247E},  {0x247F,0x247F,0x247F},
 
1292
  {0x2480,0x2480,0x2480},  {0x2481,0x2481,0x2481},
 
1293
  {0x2482,0x2482,0x2482},  {0x2483,0x2483,0x2483},
 
1294
  {0x2484,0x2484,0x2484},  {0x2485,0x2485,0x2485},
 
1295
  {0x2486,0x2486,0x2486},  {0x2487,0x2487,0x2487},
 
1296
  {0x2488,0x2488,0x2488},  {0x2489,0x2489,0x2489},
 
1297
  {0x248A,0x248A,0x248A},  {0x248B,0x248B,0x248B},
 
1298
  {0x248C,0x248C,0x248C},  {0x248D,0x248D,0x248D},
 
1299
  {0x248E,0x248E,0x248E},  {0x248F,0x248F,0x248F},
 
1300
  {0x2490,0x2490,0x2490},  {0x2491,0x2491,0x2491},
 
1301
  {0x2492,0x2492,0x2492},  {0x2493,0x2493,0x2493},
 
1302
  {0x2494,0x2494,0x2494},  {0x2495,0x2495,0x2495},
 
1303
  {0x2496,0x2496,0x2496},  {0x2497,0x2497,0x2497},
 
1304
  {0x2498,0x2498,0x2498},  {0x2499,0x2499,0x2499},
 
1305
  {0x249A,0x249A,0x249A},  {0x249B,0x249B,0x249B},
 
1306
  {0x249C,0x249C,0x249C},  {0x249D,0x249D,0x249D},
 
1307
  {0x249E,0x249E,0x249E},  {0x249F,0x249F,0x249F},
 
1308
  {0x24A0,0x24A0,0x24A0},  {0x24A1,0x24A1,0x24A1},
 
1309
  {0x24A2,0x24A2,0x24A2},  {0x24A3,0x24A3,0x24A3},
 
1310
  {0x24A4,0x24A4,0x24A4},  {0x24A5,0x24A5,0x24A5},
 
1311
  {0x24A6,0x24A6,0x24A6},  {0x24A7,0x24A7,0x24A7},
 
1312
  {0x24A8,0x24A8,0x24A8},  {0x24A9,0x24A9,0x24A9},
 
1313
  {0x24AA,0x24AA,0x24AA},  {0x24AB,0x24AB,0x24AB},
 
1314
  {0x24AC,0x24AC,0x24AC},  {0x24AD,0x24AD,0x24AD},
 
1315
  {0x24AE,0x24AE,0x24AE},  {0x24AF,0x24AF,0x24AF},
 
1316
  {0x24B0,0x24B0,0x24B0},  {0x24B1,0x24B1,0x24B1},
 
1317
  {0x24B2,0x24B2,0x24B2},  {0x24B3,0x24B3,0x24B3},
 
1318
  {0x24B4,0x24B4,0x24B4},  {0x24B5,0x24B5,0x24B5},
 
1319
  {0x24B6,0x24D0,0x24B6},  {0x24B7,0x24D1,0x24B7},
 
1320
  {0x24B8,0x24D2,0x24B8},  {0x24B9,0x24D3,0x24B9},
 
1321
  {0x24BA,0x24D4,0x24BA},  {0x24BB,0x24D5,0x24BB},
 
1322
  {0x24BC,0x24D6,0x24BC},  {0x24BD,0x24D7,0x24BD},
 
1323
  {0x24BE,0x24D8,0x24BE},  {0x24BF,0x24D9,0x24BF},
 
1324
  {0x24C0,0x24DA,0x24C0},  {0x24C1,0x24DB,0x24C1},
 
1325
  {0x24C2,0x24DC,0x24C2},  {0x24C3,0x24DD,0x24C3},
 
1326
  {0x24C4,0x24DE,0x24C4},  {0x24C5,0x24DF,0x24C5},
 
1327
  {0x24C6,0x24E0,0x24C6},  {0x24C7,0x24E1,0x24C7},
 
1328
  {0x24C8,0x24E2,0x24C8},  {0x24C9,0x24E3,0x24C9},
 
1329
  {0x24CA,0x24E4,0x24CA},  {0x24CB,0x24E5,0x24CB},
 
1330
  {0x24CC,0x24E6,0x24CC},  {0x24CD,0x24E7,0x24CD},
 
1331
  {0x24CE,0x24E8,0x24CE},  {0x24CF,0x24E9,0x24CF},
 
1332
  {0x24B6,0x24D0,0x24B6},  {0x24B7,0x24D1,0x24B7},
 
1333
  {0x24B8,0x24D2,0x24B8},  {0x24B9,0x24D3,0x24B9},
 
1334
  {0x24BA,0x24D4,0x24BA},  {0x24BB,0x24D5,0x24BB},
 
1335
  {0x24BC,0x24D6,0x24BC},  {0x24BD,0x24D7,0x24BD},
 
1336
  {0x24BE,0x24D8,0x24BE},  {0x24BF,0x24D9,0x24BF},
 
1337
  {0x24C0,0x24DA,0x24C0},  {0x24C1,0x24DB,0x24C1},
 
1338
  {0x24C2,0x24DC,0x24C2},  {0x24C3,0x24DD,0x24C3},
 
1339
  {0x24C4,0x24DE,0x24C4},  {0x24C5,0x24DF,0x24C5},
 
1340
  {0x24C6,0x24E0,0x24C6},  {0x24C7,0x24E1,0x24C7},
 
1341
  {0x24C8,0x24E2,0x24C8},  {0x24C9,0x24E3,0x24C9},
 
1342
  {0x24CA,0x24E4,0x24CA},  {0x24CB,0x24E5,0x24CB},
 
1343
  {0x24CC,0x24E6,0x24CC},  {0x24CD,0x24E7,0x24CD},
 
1344
  {0x24CE,0x24E8,0x24CE},  {0x24CF,0x24E9,0x24CF},
 
1345
  {0x24EA,0x24EA,0x24EA},  {0x24EB,0x24EB,0x24EB},
 
1346
  {0x24EC,0x24EC,0x24EC},  {0x24ED,0x24ED,0x24ED},
 
1347
  {0x24EE,0x24EE,0x24EE},  {0x24EF,0x24EF,0x24EF},
 
1348
  {0x24F0,0x24F0,0x24F0},  {0x24F1,0x24F1,0x24F1},
 
1349
  {0x24F2,0x24F2,0x24F2},  {0x24F3,0x24F3,0x24F3},
 
1350
  {0x24F4,0x24F4,0x24F4},  {0x24F5,0x24F5,0x24F5},
 
1351
  {0x24F6,0x24F6,0x24F6},  {0x24F7,0x24F7,0x24F7},
 
1352
  {0x24F8,0x24F8,0x24F8},  {0x24F9,0x24F9,0x24F9},
 
1353
  {0x24FA,0x24FA,0x24FA},  {0x24FB,0x24FB,0x24FB},
 
1354
  {0x24FC,0x24FC,0x24FC},  {0x24FD,0x24FD,0x24FD},
 
1355
  {0x24FE,0x24FE,0x24FE},  {0x24FF,0x24FF,0x24FF}
 
1356
};
 
1357
 
 
1358
static MY_UNICASE_INFO planeFF[]={
 
1359
  {0xFF00,0xFF00,0xFF00},  {0xFF01,0xFF01,0xFF01},
 
1360
  {0xFF02,0xFF02,0xFF02},  {0xFF03,0xFF03,0xFF03},
 
1361
  {0xFF04,0xFF04,0xFF04},  {0xFF05,0xFF05,0xFF05},
 
1362
  {0xFF06,0xFF06,0xFF06},  {0xFF07,0xFF07,0xFF07},
 
1363
  {0xFF08,0xFF08,0xFF08},  {0xFF09,0xFF09,0xFF09},
 
1364
  {0xFF0A,0xFF0A,0xFF0A},  {0xFF0B,0xFF0B,0xFF0B},
 
1365
  {0xFF0C,0xFF0C,0xFF0C},  {0xFF0D,0xFF0D,0xFF0D},
 
1366
  {0xFF0E,0xFF0E,0xFF0E},  {0xFF0F,0xFF0F,0xFF0F},
 
1367
  {0xFF10,0xFF10,0xFF10},  {0xFF11,0xFF11,0xFF11},
 
1368
  {0xFF12,0xFF12,0xFF12},  {0xFF13,0xFF13,0xFF13},
 
1369
  {0xFF14,0xFF14,0xFF14},  {0xFF15,0xFF15,0xFF15},
 
1370
  {0xFF16,0xFF16,0xFF16},  {0xFF17,0xFF17,0xFF17},
 
1371
  {0xFF18,0xFF18,0xFF18},  {0xFF19,0xFF19,0xFF19},
 
1372
  {0xFF1A,0xFF1A,0xFF1A},  {0xFF1B,0xFF1B,0xFF1B},
 
1373
  {0xFF1C,0xFF1C,0xFF1C},  {0xFF1D,0xFF1D,0xFF1D},
 
1374
  {0xFF1E,0xFF1E,0xFF1E},  {0xFF1F,0xFF1F,0xFF1F},
 
1375
  {0xFF20,0xFF20,0xFF20},  {0xFF21,0xFF41,0xFF21},
 
1376
  {0xFF22,0xFF42,0xFF22},  {0xFF23,0xFF43,0xFF23},
 
1377
  {0xFF24,0xFF44,0xFF24},  {0xFF25,0xFF45,0xFF25},
 
1378
  {0xFF26,0xFF46,0xFF26},  {0xFF27,0xFF47,0xFF27},
 
1379
  {0xFF28,0xFF48,0xFF28},  {0xFF29,0xFF49,0xFF29},
 
1380
  {0xFF2A,0xFF4A,0xFF2A},  {0xFF2B,0xFF4B,0xFF2B},
 
1381
  {0xFF2C,0xFF4C,0xFF2C},  {0xFF2D,0xFF4D,0xFF2D},
 
1382
  {0xFF2E,0xFF4E,0xFF2E},  {0xFF2F,0xFF4F,0xFF2F},
 
1383
  {0xFF30,0xFF50,0xFF30},  {0xFF31,0xFF51,0xFF31},
 
1384
  {0xFF32,0xFF52,0xFF32},  {0xFF33,0xFF53,0xFF33},
 
1385
  {0xFF34,0xFF54,0xFF34},  {0xFF35,0xFF55,0xFF35},
 
1386
  {0xFF36,0xFF56,0xFF36},  {0xFF37,0xFF57,0xFF37},
 
1387
  {0xFF38,0xFF58,0xFF38},  {0xFF39,0xFF59,0xFF39},
 
1388
  {0xFF3A,0xFF5A,0xFF3A},  {0xFF3B,0xFF3B,0xFF3B},
 
1389
  {0xFF3C,0xFF3C,0xFF3C},  {0xFF3D,0xFF3D,0xFF3D},
 
1390
  {0xFF3E,0xFF3E,0xFF3E},  {0xFF3F,0xFF3F,0xFF3F},
 
1391
  {0xFF40,0xFF40,0xFF40},  {0xFF21,0xFF41,0xFF21},
 
1392
  {0xFF22,0xFF42,0xFF22},  {0xFF23,0xFF43,0xFF23},
 
1393
  {0xFF24,0xFF44,0xFF24},  {0xFF25,0xFF45,0xFF25},
 
1394
  {0xFF26,0xFF46,0xFF26},  {0xFF27,0xFF47,0xFF27},
 
1395
  {0xFF28,0xFF48,0xFF28},  {0xFF29,0xFF49,0xFF29},
 
1396
  {0xFF2A,0xFF4A,0xFF2A},  {0xFF2B,0xFF4B,0xFF2B},
 
1397
  {0xFF2C,0xFF4C,0xFF2C},  {0xFF2D,0xFF4D,0xFF2D},
 
1398
  {0xFF2E,0xFF4E,0xFF2E},  {0xFF2F,0xFF4F,0xFF2F},
 
1399
  {0xFF30,0xFF50,0xFF30},  {0xFF31,0xFF51,0xFF31},
 
1400
  {0xFF32,0xFF52,0xFF32},  {0xFF33,0xFF53,0xFF33},
 
1401
  {0xFF34,0xFF54,0xFF34},  {0xFF35,0xFF55,0xFF35},
 
1402
  {0xFF36,0xFF56,0xFF36},  {0xFF37,0xFF57,0xFF37},
 
1403
  {0xFF38,0xFF58,0xFF38},  {0xFF39,0xFF59,0xFF39},
 
1404
  {0xFF3A,0xFF5A,0xFF3A},  {0xFF5B,0xFF5B,0xFF5B},
 
1405
  {0xFF5C,0xFF5C,0xFF5C},  {0xFF5D,0xFF5D,0xFF5D},
 
1406
  {0xFF5E,0xFF5E,0xFF5E},  {0xFF5F,0xFF5F,0xFF5F},
 
1407
  {0xFF60,0xFF60,0xFF60},  {0xFF61,0xFF61,0xFF61},
 
1408
  {0xFF62,0xFF62,0xFF62},  {0xFF63,0xFF63,0xFF63},
 
1409
  {0xFF64,0xFF64,0xFF64},  {0xFF65,0xFF65,0xFF65},
 
1410
  {0xFF66,0xFF66,0xFF66},  {0xFF67,0xFF67,0xFF67},
 
1411
  {0xFF68,0xFF68,0xFF68},  {0xFF69,0xFF69,0xFF69},
 
1412
  {0xFF6A,0xFF6A,0xFF6A},  {0xFF6B,0xFF6B,0xFF6B},
 
1413
  {0xFF6C,0xFF6C,0xFF6C},  {0xFF6D,0xFF6D,0xFF6D},
 
1414
  {0xFF6E,0xFF6E,0xFF6E},  {0xFF6F,0xFF6F,0xFF6F},
 
1415
  {0xFF70,0xFF70,0xFF70},  {0xFF71,0xFF71,0xFF71},
 
1416
  {0xFF72,0xFF72,0xFF72},  {0xFF73,0xFF73,0xFF73},
 
1417
  {0xFF74,0xFF74,0xFF74},  {0xFF75,0xFF75,0xFF75},
 
1418
  {0xFF76,0xFF76,0xFF76},  {0xFF77,0xFF77,0xFF77},
 
1419
  {0xFF78,0xFF78,0xFF78},  {0xFF79,0xFF79,0xFF79},
 
1420
  {0xFF7A,0xFF7A,0xFF7A},  {0xFF7B,0xFF7B,0xFF7B},
 
1421
  {0xFF7C,0xFF7C,0xFF7C},  {0xFF7D,0xFF7D,0xFF7D},
 
1422
  {0xFF7E,0xFF7E,0xFF7E},  {0xFF7F,0xFF7F,0xFF7F},
 
1423
  {0xFF80,0xFF80,0xFF80},  {0xFF81,0xFF81,0xFF81},
 
1424
  {0xFF82,0xFF82,0xFF82},  {0xFF83,0xFF83,0xFF83},
 
1425
  {0xFF84,0xFF84,0xFF84},  {0xFF85,0xFF85,0xFF85},
 
1426
  {0xFF86,0xFF86,0xFF86},  {0xFF87,0xFF87,0xFF87},
 
1427
  {0xFF88,0xFF88,0xFF88},  {0xFF89,0xFF89,0xFF89},
 
1428
  {0xFF8A,0xFF8A,0xFF8A},  {0xFF8B,0xFF8B,0xFF8B},
 
1429
  {0xFF8C,0xFF8C,0xFF8C},  {0xFF8D,0xFF8D,0xFF8D},
 
1430
  {0xFF8E,0xFF8E,0xFF8E},  {0xFF8F,0xFF8F,0xFF8F},
 
1431
  {0xFF90,0xFF90,0xFF90},  {0xFF91,0xFF91,0xFF91},
 
1432
  {0xFF92,0xFF92,0xFF92},  {0xFF93,0xFF93,0xFF93},
 
1433
  {0xFF94,0xFF94,0xFF94},  {0xFF95,0xFF95,0xFF95},
 
1434
  {0xFF96,0xFF96,0xFF96},  {0xFF97,0xFF97,0xFF97},
 
1435
  {0xFF98,0xFF98,0xFF98},  {0xFF99,0xFF99,0xFF99},
 
1436
  {0xFF9A,0xFF9A,0xFF9A},  {0xFF9B,0xFF9B,0xFF9B},
 
1437
  {0xFF9C,0xFF9C,0xFF9C},  {0xFF9D,0xFF9D,0xFF9D},
 
1438
  {0xFF9E,0xFF9E,0xFF9E},  {0xFF9F,0xFF9F,0xFF9F},
 
1439
  {0xFFA0,0xFFA0,0xFFA0},  {0xFFA1,0xFFA1,0xFFA1},
 
1440
  {0xFFA2,0xFFA2,0xFFA2},  {0xFFA3,0xFFA3,0xFFA3},
 
1441
  {0xFFA4,0xFFA4,0xFFA4},  {0xFFA5,0xFFA5,0xFFA5},
 
1442
  {0xFFA6,0xFFA6,0xFFA6},  {0xFFA7,0xFFA7,0xFFA7},
 
1443
  {0xFFA8,0xFFA8,0xFFA8},  {0xFFA9,0xFFA9,0xFFA9},
 
1444
  {0xFFAA,0xFFAA,0xFFAA},  {0xFFAB,0xFFAB,0xFFAB},
 
1445
  {0xFFAC,0xFFAC,0xFFAC},  {0xFFAD,0xFFAD,0xFFAD},
 
1446
  {0xFFAE,0xFFAE,0xFFAE},  {0xFFAF,0xFFAF,0xFFAF},
 
1447
  {0xFFB0,0xFFB0,0xFFB0},  {0xFFB1,0xFFB1,0xFFB1},
 
1448
  {0xFFB2,0xFFB2,0xFFB2},  {0xFFB3,0xFFB3,0xFFB3},
 
1449
  {0xFFB4,0xFFB4,0xFFB4},  {0xFFB5,0xFFB5,0xFFB5},
 
1450
  {0xFFB6,0xFFB6,0xFFB6},  {0xFFB7,0xFFB7,0xFFB7},
 
1451
  {0xFFB8,0xFFB8,0xFFB8},  {0xFFB9,0xFFB9,0xFFB9},
 
1452
  {0xFFBA,0xFFBA,0xFFBA},  {0xFFBB,0xFFBB,0xFFBB},
 
1453
  {0xFFBC,0xFFBC,0xFFBC},  {0xFFBD,0xFFBD,0xFFBD},
 
1454
  {0xFFBE,0xFFBE,0xFFBE},  {0xFFBF,0xFFBF,0xFFBF},
 
1455
  {0xFFC0,0xFFC0,0xFFC0},  {0xFFC1,0xFFC1,0xFFC1},
 
1456
  {0xFFC2,0xFFC2,0xFFC2},  {0xFFC3,0xFFC3,0xFFC3},
 
1457
  {0xFFC4,0xFFC4,0xFFC4},  {0xFFC5,0xFFC5,0xFFC5},
 
1458
  {0xFFC6,0xFFC6,0xFFC6},  {0xFFC7,0xFFC7,0xFFC7},
 
1459
  {0xFFC8,0xFFC8,0xFFC8},  {0xFFC9,0xFFC9,0xFFC9},
 
1460
  {0xFFCA,0xFFCA,0xFFCA},  {0xFFCB,0xFFCB,0xFFCB},
 
1461
  {0xFFCC,0xFFCC,0xFFCC},  {0xFFCD,0xFFCD,0xFFCD},
 
1462
  {0xFFCE,0xFFCE,0xFFCE},  {0xFFCF,0xFFCF,0xFFCF},
 
1463
  {0xFFD0,0xFFD0,0xFFD0},  {0xFFD1,0xFFD1,0xFFD1},
 
1464
  {0xFFD2,0xFFD2,0xFFD2},  {0xFFD3,0xFFD3,0xFFD3},
 
1465
  {0xFFD4,0xFFD4,0xFFD4},  {0xFFD5,0xFFD5,0xFFD5},
 
1466
  {0xFFD6,0xFFD6,0xFFD6},  {0xFFD7,0xFFD7,0xFFD7},
 
1467
  {0xFFD8,0xFFD8,0xFFD8},  {0xFFD9,0xFFD9,0xFFD9},
 
1468
  {0xFFDA,0xFFDA,0xFFDA},  {0xFFDB,0xFFDB,0xFFDB},
 
1469
  {0xFFDC,0xFFDC,0xFFDC},  {0xFFDD,0xFFDD,0xFFDD},
 
1470
  {0xFFDE,0xFFDE,0xFFDE},  {0xFFDF,0xFFDF,0xFFDF},
 
1471
  {0xFFE0,0xFFE0,0xFFE0},  {0xFFE1,0xFFE1,0xFFE1},
 
1472
  {0xFFE2,0xFFE2,0xFFE2},  {0xFFE3,0xFFE3,0xFFE3},
 
1473
  {0xFFE4,0xFFE4,0xFFE4},  {0xFFE5,0xFFE5,0xFFE5},
 
1474
  {0xFFE6,0xFFE6,0xFFE6},  {0xFFE7,0xFFE7,0xFFE7},
 
1475
  {0xFFE8,0xFFE8,0xFFE8},  {0xFFE9,0xFFE9,0xFFE9},
 
1476
  {0xFFEA,0xFFEA,0xFFEA},  {0xFFEB,0xFFEB,0xFFEB},
 
1477
  {0xFFEC,0xFFEC,0xFFEC},  {0xFFED,0xFFED,0xFFED},
 
1478
  {0xFFEE,0xFFEE,0xFFEE},  {0xFFEF,0xFFEF,0xFFEF},
 
1479
  {0xFFF0,0xFFF0,0xFFF0},  {0xFFF1,0xFFF1,0xFFF1},
 
1480
  {0xFFF2,0xFFF2,0xFFF2},  {0xFFF3,0xFFF3,0xFFF3},
 
1481
  {0xFFF4,0xFFF4,0xFFF4},  {0xFFF5,0xFFF5,0xFFF5},
 
1482
  {0xFFF6,0xFFF6,0xFFF6},  {0xFFF7,0xFFF7,0xFFF7},
 
1483
  {0xFFF8,0xFFF8,0xFFF8},  {0xFFF9,0xFFF9,0xFFF9},
 
1484
  {0xFFFA,0xFFFA,0xFFFA},  {0xFFFB,0xFFFB,0xFFFB},
 
1485
  {0xFFFC,0xFFFC,0xFFFC},  {0xFFFD,0xFFFD,0xFFFD},
 
1486
  {0xFFFE,0xFFFE,0xFFFE},  {0xFFFF,0xFFFF,0xFFFF}
 
1487
};
 
1488
 
 
1489
MY_UNICASE_INFO *my_unicase_default[256]={
 
1490
 plane00, plane01, plane02, plane03, plane04, plane05,    NULL,    NULL,
 
1491
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1492
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1493
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL, plane1E, plane1F,
 
1494
    NULL, plane21,    NULL,    NULL, plane24,    NULL,    NULL,    NULL,
 
1495
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1496
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1497
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1498
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1499
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1500
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1501
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1502
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1503
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1504
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1505
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1506
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1507
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1508
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1509
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1510
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1511
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1512
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1513
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1514
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1515
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1516
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1517
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1518
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1519
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1520
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1521
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL, planeFF
 
1522
 
 
1523
};
 
1524
 
 
1525
 
 
1526
/*
 
1527
  Turkish lower/upper mapping:
 
1528
  1. LOWER(0x0049 LATIN CAPITAL LETTER I) -> 
 
1529
           0x0131 LATIN SMALL   LETTER DOTLESS I
 
1530
  2. UPPER(0x0069 LATIN SMALL   LETTER I) -> 
 
1531
           0x0130 LATIN CAPITAL LETTER I WITH DOT ABOVE
 
1532
*/
 
1533
 
 
1534
static MY_UNICASE_INFO turk00[]=
 
1535
{
 
1536
  {0x0000,0x0000,0x0000},  {0x0001,0x0001,0x0001},
 
1537
  {0x0002,0x0002,0x0002},  {0x0003,0x0003,0x0003},
 
1538
  {0x0004,0x0004,0x0004},  {0x0005,0x0005,0x0005},
 
1539
  {0x0006,0x0006,0x0006},  {0x0007,0x0007,0x0007},
 
1540
  {0x0008,0x0008,0x0008},  {0x0009,0x0009,0x0009},
 
1541
  {0x000A,0x000A,0x000A},  {0x000B,0x000B,0x000B},
 
1542
  {0x000C,0x000C,0x000C},  {0x000D,0x000D,0x000D},
 
1543
  {0x000E,0x000E,0x000E},  {0x000F,0x000F,0x000F},
 
1544
  {0x0010,0x0010,0x0010},  {0x0011,0x0011,0x0011},
 
1545
  {0x0012,0x0012,0x0012},  {0x0013,0x0013,0x0013},
 
1546
  {0x0014,0x0014,0x0014},  {0x0015,0x0015,0x0015},
 
1547
  {0x0016,0x0016,0x0016},  {0x0017,0x0017,0x0017},
 
1548
  {0x0018,0x0018,0x0018},  {0x0019,0x0019,0x0019},
 
1549
  {0x001A,0x001A,0x001A},  {0x001B,0x001B,0x001B},
 
1550
  {0x001C,0x001C,0x001C},  {0x001D,0x001D,0x001D},
 
1551
  {0x001E,0x001E,0x001E},  {0x001F,0x001F,0x001F},
 
1552
  {0x0020,0x0020,0x0020},  {0x0021,0x0021,0x0021},
 
1553
  {0x0022,0x0022,0x0022},  {0x0023,0x0023,0x0023},
 
1554
  {0x0024,0x0024,0x0024},  {0x0025,0x0025,0x0025},
 
1555
  {0x0026,0x0026,0x0026},  {0x0027,0x0027,0x0027},
 
1556
  {0x0028,0x0028,0x0028},  {0x0029,0x0029,0x0029},
 
1557
  {0x002A,0x002A,0x002A},  {0x002B,0x002B,0x002B},
 
1558
  {0x002C,0x002C,0x002C},  {0x002D,0x002D,0x002D},
 
1559
  {0x002E,0x002E,0x002E},  {0x002F,0x002F,0x002F},
 
1560
  {0x0030,0x0030,0x0030},  {0x0031,0x0031,0x0031},
 
1561
  {0x0032,0x0032,0x0032},  {0x0033,0x0033,0x0033},
 
1562
  {0x0034,0x0034,0x0034},  {0x0035,0x0035,0x0035},
 
1563
  {0x0036,0x0036,0x0036},  {0x0037,0x0037,0x0037},
 
1564
  {0x0038,0x0038,0x0038},  {0x0039,0x0039,0x0039},
 
1565
  {0x003A,0x003A,0x003A},  {0x003B,0x003B,0x003B},
 
1566
  {0x003C,0x003C,0x003C},  {0x003D,0x003D,0x003D},
 
1567
  {0x003E,0x003E,0x003E},  {0x003F,0x003F,0x003F},
 
1568
  {0x0040,0x0040,0x0040},  {0x0041,0x0061,0x0041},
 
1569
  {0x0042,0x0062,0x0042},  {0x0043,0x0063,0x0043},
 
1570
  {0x0044,0x0064,0x0044},  {0x0045,0x0065,0x0045},
 
1571
  {0x0046,0x0066,0x0046},  {0x0047,0x0067,0x0047},
 
1572
  {0x0048,0x0068,0x0048},  {0x0049,0x0131,0x0049},
 
1573
  {0x004A,0x006A,0x004A},  {0x004B,0x006B,0x004B},
 
1574
  {0x004C,0x006C,0x004C},  {0x004D,0x006D,0x004D},
 
1575
  {0x004E,0x006E,0x004E},  {0x004F,0x006F,0x004F},
 
1576
  {0x0050,0x0070,0x0050},  {0x0051,0x0071,0x0051},
 
1577
  {0x0052,0x0072,0x0052},  {0x0053,0x0073,0x0053},
 
1578
  {0x0054,0x0074,0x0054},  {0x0055,0x0075,0x0055},
 
1579
  {0x0056,0x0076,0x0056},  {0x0057,0x0077,0x0057},
 
1580
  {0x0058,0x0078,0x0058},  {0x0059,0x0079,0x0059},
 
1581
  {0x005A,0x007A,0x005A},  {0x005B,0x005B,0x005B},
 
1582
  {0x005C,0x005C,0x005C},  {0x005D,0x005D,0x005D},
 
1583
  {0x005E,0x005E,0x005E},  {0x005F,0x005F,0x005F},
 
1584
  {0x0060,0x0060,0x0060},  {0x0041,0x0061,0x0041},
 
1585
  {0x0042,0x0062,0x0042},  {0x0043,0x0063,0x0043},
 
1586
  {0x0044,0x0064,0x0044},  {0x0045,0x0065,0x0045},
 
1587
  {0x0046,0x0066,0x0046},  {0x0047,0x0067,0x0047},
 
1588
  {0x0048,0x0068,0x0048},  {0x0130,0x0069,0x0049},
 
1589
  {0x004A,0x006A,0x004A},  {0x004B,0x006B,0x004B},
 
1590
  {0x004C,0x006C,0x004C},  {0x004D,0x006D,0x004D},
 
1591
  {0x004E,0x006E,0x004E},  {0x004F,0x006F,0x004F},
 
1592
  {0x0050,0x0070,0x0050},  {0x0051,0x0071,0x0051},
 
1593
  {0x0052,0x0072,0x0052},  {0x0053,0x0073,0x0053},
 
1594
  {0x0054,0x0074,0x0054},  {0x0055,0x0075,0x0055},
 
1595
  {0x0056,0x0076,0x0056},  {0x0057,0x0077,0x0057},
 
1596
  {0x0058,0x0078,0x0058},  {0x0059,0x0079,0x0059},
 
1597
  {0x005A,0x007A,0x005A},  {0x007B,0x007B,0x007B},
 
1598
  {0x007C,0x007C,0x007C},  {0x007D,0x007D,0x007D},
 
1599
  {0x007E,0x007E,0x007E},  {0x007F,0x007F,0x007F},
 
1600
  {0x0080,0x0080,0x0080},  {0x0081,0x0081,0x0081},
 
1601
  {0x0082,0x0082,0x0082},  {0x0083,0x0083,0x0083},
 
1602
  {0x0084,0x0084,0x0084},  {0x0085,0x0085,0x0085},
 
1603
  {0x0086,0x0086,0x0086},  {0x0087,0x0087,0x0087},
 
1604
  {0x0088,0x0088,0x0088},  {0x0089,0x0089,0x0089},
 
1605
  {0x008A,0x008A,0x008A},  {0x008B,0x008B,0x008B},
 
1606
  {0x008C,0x008C,0x008C},  {0x008D,0x008D,0x008D},
 
1607
  {0x008E,0x008E,0x008E},  {0x008F,0x008F,0x008F},
 
1608
  {0x0090,0x0090,0x0090},  {0x0091,0x0091,0x0091},
 
1609
  {0x0092,0x0092,0x0092},  {0x0093,0x0093,0x0093},
 
1610
  {0x0094,0x0094,0x0094},  {0x0095,0x0095,0x0095},
 
1611
  {0x0096,0x0096,0x0096},  {0x0097,0x0097,0x0097},
 
1612
  {0x0098,0x0098,0x0098},  {0x0099,0x0099,0x0099},
 
1613
  {0x009A,0x009A,0x009A},  {0x009B,0x009B,0x009B},
 
1614
  {0x009C,0x009C,0x009C},  {0x009D,0x009D,0x009D},
 
1615
  {0x009E,0x009E,0x009E},  {0x009F,0x009F,0x009F},
 
1616
  {0x00A0,0x00A0,0x00A0},  {0x00A1,0x00A1,0x00A1},
 
1617
  {0x00A2,0x00A2,0x00A2},  {0x00A3,0x00A3,0x00A3},
 
1618
  {0x00A4,0x00A4,0x00A4},  {0x00A5,0x00A5,0x00A5},
 
1619
  {0x00A6,0x00A6,0x00A6},  {0x00A7,0x00A7,0x00A7},
 
1620
  {0x00A8,0x00A8,0x00A8},  {0x00A9,0x00A9,0x00A9},
 
1621
  {0x00AA,0x00AA,0x00AA},  {0x00AB,0x00AB,0x00AB},
 
1622
  {0x00AC,0x00AC,0x00AC},  {0x00AD,0x00AD,0x00AD},
 
1623
  {0x00AE,0x00AE,0x00AE},  {0x00AF,0x00AF,0x00AF},
 
1624
  {0x00B0,0x00B0,0x00B0},  {0x00B1,0x00B1,0x00B1},
 
1625
  {0x00B2,0x00B2,0x00B2},  {0x00B3,0x00B3,0x00B3},
 
1626
  {0x00B4,0x00B4,0x00B4},  {0x039C,0x00B5,0x039C},
 
1627
  {0x00B6,0x00B6,0x00B6},  {0x00B7,0x00B7,0x00B7},
 
1628
  {0x00B8,0x00B8,0x00B8},  {0x00B9,0x00B9,0x00B9},
 
1629
  {0x00BA,0x00BA,0x00BA},  {0x00BB,0x00BB,0x00BB},
 
1630
  {0x00BC,0x00BC,0x00BC},  {0x00BD,0x00BD,0x00BD},
 
1631
  {0x00BE,0x00BE,0x00BE},  {0x00BF,0x00BF,0x00BF},
 
1632
  {0x00C0,0x00E0,0x0041},  {0x00C1,0x00E1,0x0041},
 
1633
  {0x00C2,0x00E2,0x0041},  {0x00C3,0x00E3,0x0041},
 
1634
  {0x00C4,0x00E4,0x0041},  {0x00C5,0x00E5,0x0041},
 
1635
  {0x00C6,0x00E6,0x00C6},  {0x00C7,0x00E7,0x0043},
 
1636
  {0x00C8,0x00E8,0x0045},  {0x00C9,0x00E9,0x0045},
 
1637
  {0x00CA,0x00EA,0x0045},  {0x00CB,0x00EB,0x0045},
 
1638
  {0x00CC,0x00EC,0x0049},  {0x00CD,0x00ED,0x0049},
 
1639
  {0x00CE,0x00EE,0x0049},  {0x00CF,0x00EF,0x0049},
 
1640
  {0x00D0,0x00F0,0x00D0},  {0x00D1,0x00F1,0x004E},
 
1641
  {0x00D2,0x00F2,0x004F},  {0x00D3,0x00F3,0x004F},
 
1642
  {0x00D4,0x00F4,0x004F},  {0x00D5,0x00F5,0x004F},
 
1643
  {0x00D6,0x00F6,0x004F},  {0x00D7,0x00D7,0x00D7},
 
1644
  {0x00D8,0x00F8,0x00D8},  {0x00D9,0x00F9,0x0055},
 
1645
  {0x00DA,0x00FA,0x0055},  {0x00DB,0x00FB,0x0055},
 
1646
  {0x00DC,0x00FC,0x0055},  {0x00DD,0x00FD,0x0059},
 
1647
  {0x00DE,0x00FE,0x00DE},  {0x00DF,0x00DF,0x00DF},
 
1648
  {0x00C0,0x00E0,0x0041},  {0x00C1,0x00E1,0x0041},
 
1649
  {0x00C2,0x00E2,0x0041},  {0x00C3,0x00E3,0x0041},
 
1650
  {0x00C4,0x00E4,0x0041},  {0x00C5,0x00E5,0x0041},
 
1651
  {0x00C6,0x00E6,0x00C6},  {0x00C7,0x00E7,0x0043},
 
1652
  {0x00C8,0x00E8,0x0045},  {0x00C9,0x00E9,0x0045},
 
1653
  {0x00CA,0x00EA,0x0045},  {0x00CB,0x00EB,0x0045},
 
1654
  {0x00CC,0x00EC,0x0049},  {0x00CD,0x00ED,0x0049},
 
1655
  {0x00CE,0x00EE,0x0049},  {0x00CF,0x00EF,0x0049},
 
1656
  {0x00D0,0x00F0,0x00D0},  {0x00D1,0x00F1,0x004E},
 
1657
  {0x00D2,0x00F2,0x004F},  {0x00D3,0x00F3,0x004F},
 
1658
  {0x00D4,0x00F4,0x004F},  {0x00D5,0x00F5,0x004F},
 
1659
  {0x00D6,0x00F6,0x004F},  {0x00F7,0x00F7,0x00F7},
 
1660
  {0x00D8,0x00F8,0x00D8},  {0x00D9,0x00F9,0x0055},
 
1661
  {0x00DA,0x00FA,0x0055},  {0x00DB,0x00FB,0x0055},
 
1662
  {0x00DC,0x00FC,0x0055},  {0x00DD,0x00FD,0x0059},
 
1663
  {0x00DE,0x00FE,0x00DE},  {0x0178,0x00FF,0x0059}
 
1664
};
 
1665
 
 
1666
 
 
1667
 
 
1668
MY_UNICASE_INFO *my_unicase_turkish[256]=
 
1669
{
 
1670
  turk00, plane01, plane02, plane03, plane04, plane05,    NULL,    NULL,
 
1671
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1672
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1673
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL, plane1E, plane1F,
 
1674
    NULL, plane21,    NULL,    NULL, plane24,    NULL,    NULL,    NULL,
 
1675
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1676
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1677
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1678
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1679
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1680
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1681
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1682
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1683
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1684
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1685
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1686
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1687
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1688
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1689
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1690
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1691
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1692
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1693
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1694
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1695
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1696
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1697
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1698
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1699
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1700
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
 
1701
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL, planeFF
 
1702
};
 
1703
 
 
1704
 
 
1705
 
 
1706
/*
 
1707
** Compare string against string with wildcard
 
1708
** This function is used in UTF8 and UCS2
 
1709
**
 
1710
**      0 if matched
 
1711
**      -1 if not matched with wildcard
 
1712
**       1 if matched with wildcard
 
1713
*/
 
1714
 
 
1715
int my_wildcmp_unicode(CHARSET_INFO *cs,
 
1716
                       const char *str,const char *str_end,
 
1717
                       const char *wildstr,const char *wildend,
 
1718
                       int escape, int w_one, int w_many,
 
1719
                       MY_UNICASE_INFO **weights)
 
1720
{
 
1721
  int result= -1;                       /* Not found, using wildcards */
 
1722
  my_wc_t s_wc, w_wc;
 
1723
  int scan, plane;
 
1724
  int (*mb_wc)(struct charset_info_st *, my_wc_t *,
 
1725
               const uchar *, const uchar *);
 
1726
  mb_wc= cs->cset->mb_wc;
 
1727
  
 
1728
  while (wildstr != wildend)
 
1729
  {
 
1730
    while (1)
 
1731
    {
 
1732
      my_bool escaped= 0;
 
1733
      if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr,
 
1734
                       (const uchar*)wildend)) <= 0)
 
1735
        return 1;
 
1736
 
 
1737
      if (w_wc == (my_wc_t)w_many)
 
1738
      {
 
1739
        result= 1;                              /* Found an anchor char */
 
1740
        break;
 
1741
      }
 
1742
 
 
1743
      wildstr+= scan;
 
1744
      if (w_wc ==  (my_wc_t)escape && wildstr < wildend)
 
1745
      {
 
1746
        if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr,
 
1747
                         (const uchar*)wildend)) <= 0)
 
1748
          return 1;
 
1749
        wildstr+= scan;
 
1750
        escaped= 1;
 
1751
      }
 
1752
      
 
1753
      if ((scan= mb_wc(cs, &s_wc, (const uchar*)str,
 
1754
                       (const uchar*)str_end)) <= 0)
 
1755
        return 1;
 
1756
      str+= scan;
 
1757
      
 
1758
      if (!escaped && w_wc == (my_wc_t)w_one)
 
1759
      {
 
1760
        result= 1;                              /* Found an anchor char */
 
1761
      }
 
1762
      else
 
1763
      {
 
1764
        if (weights)
 
1765
        {
 
1766
          plane=(s_wc>>8) & 0xFF;
 
1767
          s_wc = weights[plane] ? weights[plane][s_wc & 0xFF].sort : s_wc;
 
1768
          plane=(w_wc>>8) & 0xFF;
 
1769
          w_wc = weights[plane] ? weights[plane][w_wc & 0xFF].sort : w_wc;
 
1770
        }
 
1771
        if (s_wc != w_wc)
 
1772
          return 1;                             /* No match */
 
1773
      }
 
1774
      if (wildstr == wildend)
 
1775
        return (str != str_end);                /* Match if both are at end */
 
1776
    }
 
1777
    
 
1778
    
 
1779
    if (w_wc == (my_wc_t)w_many)
 
1780
    {                                           /* Found w_many */
 
1781
    
 
1782
      /* Remove any '%' and '_' from the wild search string */
 
1783
      for ( ; wildstr != wildend ; )
 
1784
      {
 
1785
        if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr,
 
1786
                         (const uchar*)wildend)) <= 0)
 
1787
          return 1;
 
1788
        
 
1789
        if (w_wc == (my_wc_t)w_many)
 
1790
        {
 
1791
          wildstr+= scan;
 
1792
          continue;
 
1793
        } 
 
1794
        
 
1795
        if (w_wc == (my_wc_t)w_one)
 
1796
        {
 
1797
          wildstr+= scan;
 
1798
          if ((scan= mb_wc(cs, &s_wc, (const uchar*)str,
 
1799
                           (const uchar*)str_end)) <=0)
 
1800
            return 1;
 
1801
          str+= scan;
 
1802
          continue;
 
1803
        }
 
1804
        break;                                  /* Not a wild character */
 
1805
      }
 
1806
      
 
1807
      if (wildstr == wildend)
 
1808
        return 0;                               /* Ok if w_many is last */
 
1809
      
 
1810
      if (str == str_end)
 
1811
        return -1;
 
1812
      
 
1813
      if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr,
 
1814
                       (const uchar*)wildend)) <=0)
 
1815
        return 1;
 
1816
      wildstr+= scan;
 
1817
      
 
1818
      if (w_wc ==  (my_wc_t)escape)
 
1819
      {
 
1820
        if (wildstr < wildend)
 
1821
        {
 
1822
          if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr,
 
1823
                           (const uchar*)wildend)) <=0)
 
1824
            return 1;
 
1825
          wildstr+= scan;
 
1826
        }
 
1827
      }
 
1828
      
 
1829
      while (1)
 
1830
      {
 
1831
        /* Skip until the first character from wildstr is found */
 
1832
        while (str != str_end)
 
1833
        {
 
1834
          if ((scan= mb_wc(cs, &s_wc, (const uchar*)str,
 
1835
                           (const uchar*)str_end)) <=0)
 
1836
            return 1;
 
1837
          if (weights)
 
1838
          {
 
1839
            plane=(s_wc>>8) & 0xFF;
 
1840
            s_wc = weights[plane] ? weights[plane][s_wc & 0xFF].sort : s_wc;
 
1841
            plane=(w_wc>>8) & 0xFF;
 
1842
            w_wc = weights[plane] ? weights[plane][w_wc & 0xFF].sort : w_wc;
 
1843
          }
 
1844
          
 
1845
          if (s_wc == w_wc)
 
1846
            break;
 
1847
          str+= scan;
 
1848
        }
 
1849
        if (str == str_end)
 
1850
          return -1;
 
1851
        
 
1852
        str+= scan;
 
1853
        result= my_wildcmp_unicode(cs, str, str_end, wildstr, wildend,
 
1854
                                   escape, w_one, w_many,
 
1855
                                   weights);
 
1856
        if (result <= 0)
 
1857
          return result;
 
1858
      } 
 
1859
    }
 
1860
  }
 
1861
  return (str != str_end ? 1 : 0);
 
1862
}
 
1863
 
 
1864
#endif
 
1865
 
 
1866
 
 
1867
 
 
1868
#ifdef HAVE_CHARSET_utf8
 
1869
 
 
1870
/*
 
1871
  We consider bytes with code more than 127 as a letter.
 
1872
  This garantees that word boundaries work fine with regular
 
1873
  expressions. Note, there is no need to mark byte 255  as a
 
1874
  letter, it is illegal byte in UTF8.
 
1875
*/
 
1876
static uchar ctype_utf8[] = {
 
1877
    0,
 
1878
   32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 40, 40, 40, 40, 32, 32,
 
1879
   32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
 
1880
   72, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
 
1881
  132,132,132,132,132,132,132,132,132,132, 16, 16, 16, 16, 16, 16,
 
1882
   16,129,129,129,129,129,129,  1,  1,  1,  1,  1,  1,  1,  1,  1,
 
1883
    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 16, 16, 16, 16, 16,
 
1884
   16,130,130,130,130,130,130,  2,  2,  2,  2,  2,  2,  2,  2,  2,
 
1885
    2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 16, 16, 16, 16, 32,
 
1886
    3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
 
1887
    3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
 
1888
    3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
 
1889
    3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
 
1890
    3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
 
1891
    3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
 
1892
    3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
 
1893
    3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  0
 
1894
};
 
1895
 
 
1896
/* The below are taken from usa7 implementation */
 
1897
 
 
1898
static uchar to_lower_utf8[] = {
 
1899
    0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
 
1900
   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
 
1901
   32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
 
1902
   48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
 
1903
   64, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
 
1904
  112,113,114,115,116,117,118,119,120,121,122, 91, 92, 93, 94, 95,
 
1905
   96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
 
1906
  112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
 
1907
  128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
 
1908
  144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
 
1909
  160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
 
1910
  176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
 
1911
  192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
 
1912
  208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
 
1913
  224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
 
1914
  240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
 
1915
};
 
1916
 
 
1917
static uchar to_upper_utf8[] = {
 
1918
    0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
 
1919
   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
 
1920
   32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
 
1921
   48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
 
1922
   64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
 
1923
   80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
 
1924
   96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
 
1925
   80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,123,124,125,126,127,
 
1926
  128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
 
1927
  144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
 
1928
  160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
 
1929
  176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
 
1930
  192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
 
1931
  208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
 
1932
  224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
 
1933
  240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
 
1934
};
 
1935
 
 
1936
static inline int bincmp(const uchar *s, const uchar *se,
 
1937
                         const uchar *t, const uchar *te)
 
1938
{
 
1939
  int slen= (int) (se-s), tlen= (int) (te-t);
 
1940
  int len=min(slen,tlen);
 
1941
  int cmp= memcmp(s,t,len);
 
1942
  return cmp ? cmp : slen-tlen;
 
1943
}
 
1944
 
 
1945
 
 
1946
static int my_utf8_uni(CHARSET_INFO *cs __attribute__((unused)),
 
1947
                       my_wc_t * pwc, const uchar *s, const uchar *e)
 
1948
{
 
1949
  uchar c;
 
1950
 
 
1951
  if (s >= e)
 
1952
    return MY_CS_TOOSMALL;
 
1953
 
 
1954
  c= s[0];
 
1955
  if (c < 0x80)
 
1956
  {
 
1957
    *pwc = c;
 
1958
    return 1;
 
1959
  }
 
1960
  else if (c < 0xc2)
 
1961
    return MY_CS_ILSEQ;
 
1962
  else if (c < 0xe0)
 
1963
  {
 
1964
    if (s+2 > e) /* We need 2 characters */
 
1965
      return MY_CS_TOOSMALL2;
 
1966
 
 
1967
    if (!((s[1] ^ 0x80) < 0x40))
 
1968
      return MY_CS_ILSEQ;
 
1969
 
 
1970
    *pwc = ((my_wc_t) (c & 0x1f) << 6) | (my_wc_t) (s[1] ^ 0x80);
 
1971
    return 2;
 
1972
  }
 
1973
  else if (c < 0xf0)
 
1974
  {
 
1975
    if (s+3 > e) /* We need 3 characters */
 
1976
      return MY_CS_TOOSMALL3;
 
1977
 
 
1978
    if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40 &&
 
1979
          (c >= 0xe1 || s[1] >= 0xa0)))
 
1980
      return MY_CS_ILSEQ;
 
1981
 
 
1982
    *pwc = ((my_wc_t) (c & 0x0f) << 12)   |
 
1983
           ((my_wc_t) (s[1] ^ 0x80) << 6) |
 
1984
            (my_wc_t) (s[2] ^ 0x80);
 
1985
 
 
1986
    return 3;
 
1987
  }
 
1988
#ifdef UNICODE_32BIT
 
1989
  else if (c < 0xf8 && sizeof(my_wc_t)*8 >= 32)
 
1990
  {
 
1991
    if (s+4 > e) /* We need 4 characters */
 
1992
      return MY_CS_TOOSMALL4;
 
1993
 
 
1994
    if (!((s[1] ^ 0x80) < 0x40 &&
 
1995
          (s[2] ^ 0x80) < 0x40 &&
 
1996
          (s[3] ^ 0x80) < 0x40 &&
 
1997
          (c >= 0xf1 || s[1] >= 0x90)))
 
1998
      return MY_CS_ILSEQ;
 
1999
 
 
2000
    *pwc = ((my_wc_t) (c & 0x07) << 18)    |
 
2001
           ((my_wc_t) (s[1] ^ 0x80) << 12) |
 
2002
           ((my_wc_t) (s[2] ^ 0x80) << 6)  |
 
2003
            (my_wc_t) (s[3] ^ 0x80);
 
2004
 
 
2005
    return 4;
 
2006
  }
 
2007
   else if (c < 0xfc && sizeof(my_wc_t)*8 >= 32)
 
2008
  {
 
2009
    if (s+5 >e) /* We need 5 characters */
 
2010
      return MY_CS_TOOSMALL5;
 
2011
 
 
2012
    if (!((s[1] ^ 0x80) < 0x40 &&
 
2013
          (s[2] ^ 0x80) < 0x40 &&
 
2014
          (s[3] ^ 0x80) < 0x40 &&
 
2015
          (s[4] ^ 0x80) < 0x40 &&
 
2016
          (c >= 0xf9 || s[1] >= 0x88)))
 
2017
      return MY_CS_ILSEQ;
 
2018
 
 
2019
    *pwc = ((my_wc_t) (c & 0x03) << 24) |
 
2020
           ((my_wc_t) (s[1] ^ 0x80) << 18) |
 
2021
           ((my_wc_t) (s[2] ^ 0x80) << 12) |
 
2022
           ((my_wc_t) (s[3] ^ 0x80) << 6) |
 
2023
            (my_wc_t) (s[4] ^ 0x80);
 
2024
    return 5;
 
2025
  }
 
2026
  else if (c < 0xfe && sizeof(my_wc_t)*8 >= 32)
 
2027
  {
 
2028
    if ( s+6 >e ) /* We need 6 characters */
 
2029
      return MY_CS_TOOSMALL6;
 
2030
 
 
2031
    if (!((s[1] ^ 0x80) < 0x40   &&
 
2032
          (s[2] ^ 0x80) < 0x40   &&
 
2033
          (s[3] ^ 0x80) < 0x40   &&
 
2034
          (s[4] ^ 0x80) < 0x40   &&
 
2035
          (s[5] ^ 0x80) < 0x40   &&
 
2036
          (c >= 0xfd || s[1] >= 0x84)))
 
2037
      return MY_CS_ILSEQ;
 
2038
 
 
2039
    *pwc = ((my_wc_t) (c & 0x01) << 30)
 
2040
      | ((my_wc_t) (s[1] ^ 0x80) << 24)
 
2041
      | ((my_wc_t) (s[2] ^ 0x80) << 18)
 
2042
      | ((my_wc_t) (s[3] ^ 0x80) << 12)
 
2043
      | ((my_wc_t) (s[4] ^ 0x80) << 6)
 
2044
      | (my_wc_t) (s[5] ^ 0x80);
 
2045
    return 6;
 
2046
  }
 
2047
#endif
 
2048
  return MY_CS_ILSEQ;
 
2049
}
 
2050
 
 
2051
 
 
2052
/*
 
2053
  The same as above, but without range check
 
2054
  for example, for a null-terminated string
 
2055
*/
 
2056
static int my_utf8_uni_no_range(CHARSET_INFO *cs __attribute__((unused)),
 
2057
                                my_wc_t * pwc, const uchar *s)
 
2058
{
 
2059
  uchar c;
 
2060
 
 
2061
  c= s[0];
 
2062
  if (c < 0x80)
 
2063
  {
 
2064
    *pwc = c;
 
2065
    return 1;
 
2066
  }
 
2067
 
 
2068
  if (c < 0xc2)
 
2069
    return MY_CS_ILSEQ;
 
2070
 
 
2071
  if (c < 0xe0)
 
2072
  {
 
2073
    if (!((s[1] ^ 0x80) < 0x40))
 
2074
      return MY_CS_ILSEQ;
 
2075
 
 
2076
    *pwc = ((my_wc_t) (c & 0x1f) << 6) | (my_wc_t) (s[1] ^ 0x80);
 
2077
    return 2;
 
2078
  }
 
2079
  
 
2080
  if (c < 0xf0)
 
2081
  {
 
2082
    if (!((s[1] ^ 0x80) < 0x40 &&
 
2083
          (s[2] ^ 0x80) < 0x40 &&
 
2084
          (c >= 0xe1 || s[1] >= 0xa0)))
 
2085
      return MY_CS_ILSEQ;
 
2086
 
 
2087
    *pwc= ((my_wc_t) (c & 0x0f) << 12)   |
 
2088
          ((my_wc_t) (s[1] ^ 0x80) << 6) |
 
2089
           (my_wc_t) (s[2] ^ 0x80);
 
2090
 
 
2091
    return 3;
 
2092
  }
 
2093
  return MY_CS_ILSEQ;
 
2094
}
 
2095
 
 
2096
 
 
2097
static int my_uni_utf8 (CHARSET_INFO *cs __attribute__((unused)),
 
2098
                        my_wc_t wc, uchar *r, uchar *e)
 
2099
{
 
2100
  int count;
 
2101
 
 
2102
  if (r >= e)
 
2103
    return MY_CS_TOOSMALL;
 
2104
 
 
2105
  if (wc < 0x80)
 
2106
    count = 1;
 
2107
  else if (wc < 0x800)
 
2108
    count = 2;
 
2109
  else if (wc < 0x10000)
 
2110
    count = 3;
 
2111
#ifdef UNICODE_32BIT
 
2112
  else if (wc < 0x200000)
 
2113
    count = 4;
 
2114
  else if (wc < 0x4000000)
 
2115
    count = 5;
 
2116
  else if (wc <= 0x7fffffff)
 
2117
    count = 6;
 
2118
#endif
 
2119
    else return MY_CS_ILUNI;
 
2120
 
 
2121
  /*
 
2122
    e is a character after the string r, not the last character of it.
 
2123
    Because of it (r+count > e), not (r+count-1 >e )
 
2124
   */
 
2125
  if ( r+count > e )
 
2126
    return MY_CS_TOOSMALLN(count);
 
2127
 
 
2128
  switch (count) {
 
2129
    /* Fall through all cases!!! */
 
2130
#ifdef UNICODE_32BIT
 
2131
    case 6: r[5] = (uchar) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0x4000000;
 
2132
    case 5: r[4] = (uchar) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0x200000;
 
2133
    case 4: r[3] = (uchar) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0x10000;
 
2134
#endif
 
2135
    case 3: r[2] = (uchar) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0x800;
 
2136
    case 2: r[1] = (uchar) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0xc0;
 
2137
    case 1: r[0] = (uchar) wc;
 
2138
  }
 
2139
  return count;
 
2140
}
 
2141
 
 
2142
 
 
2143
/*
 
2144
  The same as above, but without range check.
 
2145
*/
 
2146
static int my_uni_utf8_no_range(CHARSET_INFO *cs __attribute__((unused)),
 
2147
                                my_wc_t wc, uchar *r)
 
2148
{
 
2149
  int count;
 
2150
 
 
2151
  if (wc < 0x80)
 
2152
    count= 1;
 
2153
  else if (wc < 0x800)
 
2154
    count= 2;
 
2155
  else if (wc < 0x10000)
 
2156
    count= 3;
 
2157
  else
 
2158
    return MY_CS_ILUNI;
 
2159
 
 
2160
  switch (count)
 
2161
  {
 
2162
    /* Fall through all cases!!! */
 
2163
    case 3: r[2]= (uchar) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0x800;
 
2164
    case 2: r[1]= (uchar) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0xc0;
 
2165
    case 1: r[0]= (uchar) wc;
 
2166
  }
 
2167
  return count;
 
2168
}
 
2169
 
 
2170
 
 
2171
static size_t my_caseup_utf8(CHARSET_INFO *cs, char *src, size_t srclen,
 
2172
                             char *dst, size_t dstlen)
 
2173
{
 
2174
  my_wc_t wc;
 
2175
  int srcres, dstres;
 
2176
  char *srcend= src + srclen, *dstend= dst + dstlen, *dst0= dst;
 
2177
  MY_UNICASE_INFO **uni_plane= cs->caseinfo;
 
2178
  DBUG_ASSERT(src != dst || cs->caseup_multiply == 1);
 
2179
 
 
2180
  while ((src < srcend) &&
 
2181
         (srcres= my_utf8_uni(cs, &wc, (uchar *) src, (uchar*) srcend)) > 0)
 
2182
  {
 
2183
    int plane= (wc>>8) & 0xFF;
 
2184
    wc= uni_plane[plane] ? uni_plane[plane][wc & 0xFF].toupper : wc;
 
2185
    if ((dstres= my_uni_utf8(cs, wc, (uchar*) dst, (uchar*) dstend)) <= 0)
 
2186
      break;
 
2187
    src+= srcres;
 
2188
    dst+= dstres;
 
2189
  }
 
2190
  return (size_t) (dst - dst0);
 
2191
}
 
2192
 
 
2193
 
 
2194
static void my_hash_sort_utf8(CHARSET_INFO *cs, const uchar *s, size_t slen,
 
2195
                              ulong *n1, ulong *n2)
 
2196
{
 
2197
  my_wc_t wc;
 
2198
  int res;
 
2199
  const uchar *e=s+slen;
 
2200
  MY_UNICASE_INFO **uni_plane= cs->caseinfo;
 
2201
 
 
2202
  /*
 
2203
    Remove end space. We have to do this to be able to compare
 
2204
    'A ' and 'A' as identical
 
2205
  */
 
2206
  while (e > s && e[-1] == ' ')
 
2207
    e--;
 
2208
 
 
2209
  while ((s < e) && (res=my_utf8_uni(cs,&wc, (uchar *)s, (uchar*)e))>0 )
 
2210
  {
 
2211
    int plane = (wc>>8) & 0xFF;
 
2212
    wc = uni_plane[plane] ? uni_plane[plane][wc & 0xFF].sort : wc;
 
2213
    n1[0]^= (((n1[0] & 63)+n2[0])*(wc & 0xFF))+ (n1[0] << 8);
 
2214
    n2[0]+=3;
 
2215
    n1[0]^= (((n1[0] & 63)+n2[0])*(wc >> 8))+ (n1[0] << 8);
 
2216
    n2[0]+=3;
 
2217
    s+=res;
 
2218
  }
 
2219
}
 
2220
 
 
2221
 
 
2222
static size_t my_caseup_str_utf8(CHARSET_INFO *cs, char *src)
 
2223
{
 
2224
  my_wc_t wc;
 
2225
  int srcres, dstres;
 
2226
  char *dst= src, *dst0= src;
 
2227
  MY_UNICASE_INFO **uni_plane= cs->caseinfo;
 
2228
  DBUG_ASSERT(cs->caseup_multiply == 1);
 
2229
 
 
2230
  while (*src &&
 
2231
         (srcres= my_utf8_uni_no_range(cs, &wc, (uchar *) src)) > 0)
 
2232
  {
 
2233
    int plane= (wc>>8) & 0xFF;
 
2234
    wc= uni_plane[plane] ? uni_plane[plane][wc & 0xFF].toupper : wc;
 
2235
    if ((dstres= my_uni_utf8_no_range(cs, wc, (uchar*) dst)) <= 0)
 
2236
      break;
 
2237
    src+= srcres;
 
2238
    dst+= dstres;
 
2239
  }
 
2240
  *dst= '\0';
 
2241
  return (size_t) (dst - dst0);
 
2242
}
 
2243
 
 
2244
 
 
2245
static size_t my_casedn_utf8(CHARSET_INFO *cs, char *src, size_t srclen,
 
2246
                             char *dst, size_t dstlen)
 
2247
{
 
2248
  my_wc_t wc;
 
2249
  int srcres, dstres;
 
2250
  char *srcend= src + srclen, *dstend= dst + dstlen, *dst0= dst;
 
2251
  MY_UNICASE_INFO **uni_plane= cs->caseinfo;
 
2252
  DBUG_ASSERT(src != dst || cs->casedn_multiply == 1);
 
2253
 
 
2254
  while ((src < srcend) &&
 
2255
         (srcres= my_utf8_uni(cs, &wc, (uchar*) src, (uchar*)srcend)) > 0)
 
2256
  {
 
2257
    int plane= (wc>>8) & 0xFF;
 
2258
    wc= uni_plane[plane] ? uni_plane[plane][wc & 0xFF].tolower : wc;
 
2259
    if ((dstres= my_uni_utf8(cs, wc, (uchar*) dst, (uchar*) dstend)) <= 0)
 
2260
      break;
 
2261
    src+= srcres;
 
2262
    dst+= dstres;
 
2263
  }
 
2264
  return (size_t) (dst - dst0);
 
2265
}
 
2266
 
 
2267
 
 
2268
static size_t my_casedn_str_utf8(CHARSET_INFO *cs, char *src)
 
2269
{
 
2270
  my_wc_t wc;
 
2271
  int srcres, dstres;
 
2272
  char *dst= src, *dst0= src;
 
2273
  MY_UNICASE_INFO **uni_plane= cs->caseinfo;
 
2274
  DBUG_ASSERT(cs->casedn_multiply == 1);
 
2275
 
 
2276
  while (*src &&
 
2277
         (srcres= my_utf8_uni_no_range(cs, &wc, (uchar *) src)) > 0)
 
2278
  {
 
2279
    int plane= (wc>>8) & 0xFF;
 
2280
    wc= uni_plane[plane] ? uni_plane[plane][wc & 0xFF].tolower : wc;
 
2281
    if ((dstres= my_uni_utf8_no_range(cs, wc, (uchar*) dst)) <= 0)
 
2282
      break;
 
2283
    src+= srcres;
 
2284
    dst+= dstres;
 
2285
  }
 
2286
 
 
2287
  /*
 
2288
   In rare cases lower string can be shorter than
 
2289
   the original string, for example:
 
2290
 
 
2291
   "U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE"
 
2292
   (which is 0xC4B0 in utf8, i.e. two bytes)
 
2293
 
 
2294
   is converted into
 
2295
 
 
2296
   "U+0069 LATIN SMALL LETTER I"
 
2297
   (which is 0x69 in utf8, i.e. one byte)
 
2298
 
 
2299
   So, we need to put '\0' terminator after converting.
 
2300
  */
 
2301
 
 
2302
  *dst= '\0';
 
2303
  return (size_t) (dst - dst0);
 
2304
}
 
2305
 
 
2306
 
 
2307
static int my_strnncoll_utf8(CHARSET_INFO *cs,
 
2308
                             const uchar *s, size_t slen,
 
2309
                             const uchar *t, size_t tlen,
 
2310
                             my_bool t_is_prefix)
 
2311
{
 
2312
  int s_res,t_res;
 
2313
  my_wc_t UNINIT_VAR(s_wc), t_wc;
 
2314
  const uchar *se=s+slen;
 
2315
  const uchar *te=t+tlen;
 
2316
  MY_UNICASE_INFO **uni_plane= cs->caseinfo;
 
2317
 
 
2318
  while ( s < se && t < te )
 
2319
  {
 
2320
    int plane;
 
2321
    s_res=my_utf8_uni(cs,&s_wc, s, se);
 
2322
    t_res=my_utf8_uni(cs,&t_wc, t, te);
 
2323
 
 
2324
    if ( s_res <= 0 || t_res <= 0 )
 
2325
    {
 
2326
      /* Incorrect string, compare byte by byte value */
 
2327
      return bincmp(s, se, t, te);
 
2328
    }
 
2329
 
 
2330
    plane=(s_wc>>8) & 0xFF;
 
2331
    s_wc = uni_plane[plane] ? uni_plane[plane][s_wc & 0xFF].sort : s_wc;
 
2332
    plane=(t_wc>>8) & 0xFF;
 
2333
    t_wc = uni_plane[plane] ? uni_plane[plane][t_wc & 0xFF].sort : t_wc;
 
2334
    if ( s_wc != t_wc )
 
2335
    {
 
2336
      return  s_wc > t_wc ? 1 : -1;
 
2337
    }
 
2338
 
 
2339
    s+=s_res;
 
2340
    t+=t_res;
 
2341
  }
 
2342
  return (int) (t_is_prefix ? t-te : ((se-s) - (te-t)));
 
2343
}
 
2344
 
 
2345
 
 
2346
 
 
2347
/*
 
2348
  Compare strings, discarding end space
 
2349
 
 
2350
  SYNOPSIS
 
2351
    my_strnncollsp_utf8()
 
2352
    cs                  character set handler
 
2353
    a                   First string to compare
 
2354
    a_length            Length of 'a'
 
2355
    b                   Second string to compare
 
2356
    b_length            Length of 'b'
 
2357
    diff_if_only_endspace_difference
 
2358
                        Set to 1 if the strings should be regarded as different
 
2359
                        if they only difference in end space
 
2360
 
 
2361
  IMPLEMENTATION
 
2362
    If one string is shorter as the other, then we space extend the other
 
2363
    so that the strings have equal length.
 
2364
 
 
2365
    This will ensure that the following things hold:
 
2366
 
 
2367
    "a"  == "a "
 
2368
    "a\0" < "a"
 
2369
    "a\0" < "a "
 
2370
 
 
2371
  RETURN
 
2372
    < 0  a <  b
 
2373
    = 0  a == b
 
2374
    > 0  a > b
 
2375
*/
 
2376
 
 
2377
static int my_strnncollsp_utf8(CHARSET_INFO *cs,
 
2378
                               const uchar *s, size_t slen,
 
2379
                               const uchar *t, size_t tlen,
 
2380
                               my_bool diff_if_only_endspace_difference)
 
2381
{
 
2382
  int s_res, t_res, res;
 
2383
  my_wc_t UNINIT_VAR(s_wc),t_wc;
 
2384
  const uchar *se= s+slen, *te= t+tlen;
 
2385
  MY_UNICASE_INFO **uni_plane= cs->caseinfo;
 
2386
 
 
2387
#ifndef VARCHAR_WITH_DIFF_ENDSPACE_ARE_DIFFERENT_FOR_UNIQUE
 
2388
  diff_if_only_endspace_difference= 0;
 
2389
#endif
 
2390
 
 
2391
  while ( s < se && t < te )
 
2392
  {
 
2393
    int plane;
 
2394
    s_res=my_utf8_uni(cs,&s_wc, s, se);
 
2395
    t_res=my_utf8_uni(cs,&t_wc, t, te);
 
2396
 
 
2397
    if ( s_res <= 0 || t_res <= 0 )
 
2398
    {
 
2399
      /* Incorrect string, compare byte by byte value */
 
2400
      return bincmp(s, se, t, te);
 
2401
    }
 
2402
 
 
2403
    plane=(s_wc>>8) & 0xFF;
 
2404
    s_wc = uni_plane[plane] ? uni_plane[plane][s_wc & 0xFF].sort : s_wc;
 
2405
    plane=(t_wc>>8) & 0xFF;
 
2406
    t_wc = uni_plane[plane] ? uni_plane[plane][t_wc & 0xFF].sort : t_wc;
 
2407
    if ( s_wc != t_wc )
 
2408
    {
 
2409
      return  s_wc > t_wc ? 1 : -1;
 
2410
    }
 
2411
 
 
2412
    s+=s_res;
 
2413
    t+=t_res;
 
2414
  }
 
2415
 
 
2416
  slen= (size_t) (se-s);
 
2417
  tlen= (size_t) (te-t);
 
2418
  res= 0;
 
2419
 
 
2420
  if (slen != tlen)
 
2421
  {
 
2422
    int swap= 1;
 
2423
    if (diff_if_only_endspace_difference)
 
2424
      res= 1;                                   /* Assume 'a' is bigger */
 
2425
    if (slen < tlen)
 
2426
    {
 
2427
      slen= tlen;
 
2428
      s= t;
 
2429
      se= te;
 
2430
      swap= -1;
 
2431
      res= -res;
 
2432
    }
 
2433
    /*
 
2434
      This following loop uses the fact that in UTF-8
 
2435
      all multibyte characters are greater than space,
 
2436
      and all multibyte head characters are greater than
 
2437
      space. It means if we meet a character greater
 
2438
      than space, it always means that the longer string
 
2439
      is greater. So we can reuse the same loop from the
 
2440
      8bit version, without having to process full multibute
 
2441
      sequences.
 
2442
    */
 
2443
    for ( ; s < se; s++)
 
2444
    {
 
2445
      if (*s != ' ')
 
2446
        return (*s < ' ') ? -swap : swap;
 
2447
    }
 
2448
  }
 
2449
  return res;
 
2450
}
 
2451
 
 
2452
 
 
2453
/*
 
2454
  Compare 0-terminated UTF8 strings.
 
2455
 
 
2456
  SYNOPSIS
 
2457
    my_strcasecmp_utf8()
 
2458
    cs                  character set handler
 
2459
    s                   First 0-terminated string to compare
 
2460
    t                   Second 0-terminated string to compare
 
2461
 
 
2462
  IMPLEMENTATION
 
2463
 
 
2464
  RETURN
 
2465
    - negative number if s < t
 
2466
    - positive number if s > t
 
2467
    - 0 is the strings are equal
 
2468
*/
 
2469
 
 
2470
static
 
2471
int my_strcasecmp_utf8(CHARSET_INFO *cs, const char *s, const char *t)
 
2472
{
 
2473
  MY_UNICASE_INFO **uni_plane= cs->caseinfo;
 
2474
  while (s[0] && t[0])
 
2475
  {
 
2476
    my_wc_t s_wc,t_wc;
 
2477
    
 
2478
    if ((uchar) s[0] < 128)
 
2479
    {
 
2480
      /* 
 
2481
        s[0] is between 0 and 127.
 
2482
        It represents a single byte character.
 
2483
        Convert it into weight according to collation.
 
2484
      */
 
2485
      s_wc= plane00[(uchar) s[0]].tolower;
 
2486
      s++;
 
2487
    }
 
2488
    else
 
2489
    {
 
2490
      int plane, res;
 
2491
      
 
2492
      /*
 
2493
        Scan a multibyte character.
 
2494
 
 
2495
        In the future it is worth to write a special version of my_utf8_uni()
 
2496
        for 0-terminated strings which will not take in account length. Now
 
2497
        we call the regular version of my_utf8_uni() with s+3 in the
 
2498
        last argument. s+3 is enough to scan any multibyte sequence.
 
2499
 
 
2500
        Calling the regular version of my_utf8_uni is safe for 0-terminated
 
2501
        strings: we will never lose the end of the string:
 
2502
        If we have 0 character in the middle of a multibyte sequence,
 
2503
        then my_utf8_uni will always return a negative number, so the
 
2504
        loop with finish.
 
2505
      */
 
2506
      
 
2507
      res= my_utf8_uni(cs,&s_wc, (const uchar*)s, (const uchar*) s + 3);
 
2508
      
 
2509
      /* 
 
2510
         In the case of wrong multibyte sequence we will
 
2511
         call strcmp() for byte-to-byte comparison.
 
2512
      */
 
2513
      if (res <= 0)
 
2514
        return strcmp(s, t);
 
2515
      s+= res;
 
2516
      
 
2517
      /* Convert Unicode code into weight according to collation */
 
2518
      plane=(s_wc>>8) & 0xFF;
 
2519
      s_wc = uni_plane[plane] ? uni_plane[plane][s_wc & 0xFF].tolower : s_wc;
 
2520
    }
 
2521
    
 
2522
    
 
2523
    /* Do the same for the second string */
 
2524
    
 
2525
    if ((uchar) t[0] < 128)
 
2526
    {
 
2527
      /* Convert single byte character into weight */
 
2528
      t_wc= plane00[(uchar) t[0]].tolower;
 
2529
      t++;
 
2530
    }
 
2531
    else
 
2532
    {
 
2533
      int plane;
 
2534
      int res=my_utf8_uni(cs,&t_wc, (const uchar*)t, (const uchar*) t + 3);
 
2535
      if (res <= 0)
 
2536
        return strcmp(s, t);
 
2537
      t+= res;
 
2538
      
 
2539
      /* Convert code into weight */
 
2540
      plane=(t_wc>>8) & 0xFF;
 
2541
      t_wc = uni_plane[plane] ? uni_plane[plane][t_wc & 0xFF].tolower : t_wc;
 
2542
    }
 
2543
    
 
2544
    /* Now we have two weights, let's compare them */
 
2545
    if ( s_wc != t_wc )
 
2546
      return  ((int) s_wc) - ((int) t_wc);
 
2547
  }
 
2548
  return ((int)(uchar)s[0]) - ((int) (uchar) t[0]);
 
2549
}
 
2550
 
 
2551
 
 
2552
static
 
2553
int my_wildcmp_utf8(CHARSET_INFO *cs,
 
2554
                    const char *str,const char *str_end,
 
2555
                    const char *wildstr,const char *wildend,
 
2556
                    int escape, int w_one, int w_many)
 
2557
{
 
2558
  MY_UNICASE_INFO **uni_plane= cs->caseinfo;
 
2559
  return my_wildcmp_unicode(cs,str,str_end,wildstr,wildend,
 
2560
                            escape,w_one,w_many,uni_plane); 
 
2561
}
 
2562
 
 
2563
 
 
2564
static
 
2565
size_t my_strnxfrmlen_utf8(CHARSET_INFO *cs __attribute__((unused)),
 
2566
                           size_t len)
 
2567
{
 
2568
  return (len * 2 + 2) / 3;
 
2569
}
 
2570
 
 
2571
 
 
2572
static size_t my_strnxfrm_utf8(CHARSET_INFO *cs,
 
2573
                               uchar *dst, size_t dstlen,
 
2574
                               const uchar *src, size_t srclen)
 
2575
{
 
2576
  my_wc_t wc;
 
2577
  int res;
 
2578
  int plane;
 
2579
  uchar *de= dst + dstlen;
 
2580
  uchar *de_beg= de - 1;
 
2581
  const uchar *se = src + srclen;
 
2582
  MY_UNICASE_INFO **uni_plane= cs->caseinfo;
 
2583
 
 
2584
  while (dst < de_beg)
 
2585
  {
 
2586
    if ((res=my_utf8_uni(cs,&wc, src, se)) <= 0)
 
2587
      break;
 
2588
    src+=res;
 
2589
 
 
2590
    plane=(wc>>8) & 0xFF;
 
2591
    wc = uni_plane[plane] ? uni_plane[plane][wc & 0xFF].sort : wc;
 
2592
 
 
2593
    *dst++= (uchar)(wc >> 8);
 
2594
    *dst++= (uchar)(wc & 0xFF);
 
2595
    
 
2596
  }
 
2597
  
 
2598
  while (dst < de_beg) /* Fill the tail with keys for space character */
 
2599
  {
 
2600
    *dst++= 0x00;
 
2601
    *dst++= 0x20;
 
2602
  }
 
2603
  
 
2604
  if (dst < de)  /* Clear the last byte, if "dstlen" was an odd number */
 
2605
    *dst= 0x00;
 
2606
  
 
2607
  return dstlen;
 
2608
}
 
2609
 
 
2610
static uint my_ismbchar_utf8(CHARSET_INFO *cs,const char *b, const char *e)
 
2611
{
 
2612
  my_wc_t wc;
 
2613
  int  res= my_utf8_uni(cs,&wc, (const uchar*)b, (const uchar*)e);
 
2614
  return (res>1) ? res : 0;
 
2615
}
 
2616
 
 
2617
static uint my_mbcharlen_utf8(CHARSET_INFO *cs  __attribute__((unused)),
 
2618
                              uint c)
 
2619
{
 
2620
  if (c < 0x80)
 
2621
    return 1;
 
2622
  else if (c < 0xc2)
 
2623
    return 0; /* Illegal mb head */
 
2624
  else if (c < 0xe0)
 
2625
    return 2;
 
2626
  else if (c < 0xf0)
 
2627
    return 3;
 
2628
#ifdef UNICODE_32BIT
 
2629
  else if (c < 0xf8)
 
2630
    return 4;
 
2631
  else if (c < 0xfc)
 
2632
    return 5;
 
2633
  else if (c < 0xfe)
 
2634
    return 6;
 
2635
#endif
 
2636
  return 0; /* Illegal mb head */;
 
2637
}
 
2638
 
 
2639
 
 
2640
static MY_COLLATION_HANDLER my_collation_ci_handler =
 
2641
{
 
2642
    NULL,               /* init */
 
2643
    my_strnncoll_utf8,
 
2644
    my_strnncollsp_utf8,
 
2645
    my_strnxfrm_utf8,
 
2646
    my_strnxfrmlen_utf8,
 
2647
    my_like_range_mb,
 
2648
    my_wildcmp_utf8,
 
2649
    my_strcasecmp_utf8,
 
2650
    my_instr_mb,
 
2651
    my_hash_sort_utf8,
 
2652
    my_propagate_complex
 
2653
};
 
2654
 
 
2655
MY_CHARSET_HANDLER my_charset_utf8_handler=
 
2656
{
 
2657
    NULL,               /* init */
 
2658
    my_ismbchar_utf8,
 
2659
    my_mbcharlen_utf8,
 
2660
    my_numchars_mb,
 
2661
    my_charpos_mb,
 
2662
    my_well_formed_len_mb,
 
2663
    my_lengthsp_8bit,
 
2664
    my_numcells_mb,
 
2665
    my_utf8_uni,
 
2666
    my_uni_utf8,
 
2667
    my_mb_ctype_mb,
 
2668
    my_caseup_str_utf8,
 
2669
    my_casedn_str_utf8,
 
2670
    my_caseup_utf8,
 
2671
    my_casedn_utf8,
 
2672
    my_snprintf_8bit,
 
2673
    my_long10_to_str_8bit,
 
2674
    my_longlong10_to_str_8bit,
 
2675
    my_fill_8bit,
 
2676
    my_strntol_8bit,
 
2677
    my_strntoul_8bit,
 
2678
    my_strntoll_8bit,
 
2679
    my_strntoull_8bit,
 
2680
    my_strntod_8bit,
 
2681
    my_strtoll10_8bit,
 
2682
    my_strntoull10rnd_8bit,
 
2683
    my_scan_8bit
 
2684
};
 
2685
 
 
2686
 
 
2687
 
 
2688
CHARSET_INFO my_charset_utf8_general_ci=
 
2689
{
 
2690
    33,0,0,             /* number       */
 
2691
    MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE,  /* state  */
 
2692
    "utf8",             /* cs name      */
 
2693
    "utf8_general_ci",  /* name         */
 
2694
    "",                 /* comment      */
 
2695
    NULL,               /* tailoring    */
 
2696
    ctype_utf8,         /* ctype        */
 
2697
    to_lower_utf8,      /* to_lower     */
 
2698
    to_upper_utf8,      /* to_upper     */
 
2699
    to_upper_utf8,      /* sort_order   */
 
2700
    NULL,               /* contractions */
 
2701
    NULL,               /* sort_order_big*/
 
2702
    NULL,               /* tab_to_uni   */
 
2703
    NULL,               /* tab_from_uni */
 
2704
    my_unicase_default, /* caseinfo     */
 
2705
    NULL,               /* state_map    */
 
2706
    NULL,               /* ident_map    */
 
2707
    1,                  /* strxfrm_multiply */
 
2708
    1,                  /* caseup_multiply  */
 
2709
    1,                  /* casedn_multiply  */
 
2710
    1,                  /* mbminlen     */
 
2711
    3,                  /* mbmaxlen     */
 
2712
    0,                  /* min_sort_char */
 
2713
    0xFFFF,             /* max_sort_char */
 
2714
    ' ',                /* pad char      */
 
2715
    0,                  /* escape_with_backslash_is_dangerous */
 
2716
    &my_charset_utf8_handler,
 
2717
    &my_collation_ci_handler
 
2718
};
 
2719
 
 
2720
 
 
2721
CHARSET_INFO my_charset_utf8_bin=
 
2722
{
 
2723
    83,0,0,             /* number       */
 
2724
    MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_UNICODE, /* state  */
 
2725
    "utf8",             /* cs name      */
 
2726
    "utf8_bin",         /* name         */
 
2727
    "",                 /* comment      */
 
2728
    NULL,               /* tailoring    */
 
2729
    ctype_utf8,         /* ctype        */
 
2730
    to_lower_utf8,      /* to_lower     */
 
2731
    to_upper_utf8,      /* to_upper     */
 
2732
    NULL,               /* sort_order   */
 
2733
    NULL,               /* contractions */
 
2734
    NULL,               /* sort_order_big*/
 
2735
    NULL,               /* tab_to_uni   */
 
2736
    NULL,               /* tab_from_uni */
 
2737
    my_unicase_default, /* caseinfo     */
 
2738
    NULL,               /* state_map    */
 
2739
    NULL,               /* ident_map    */
 
2740
    1,                  /* strxfrm_multiply */
 
2741
    1,                  /* caseup_multiply  */
 
2742
    1,                  /* casedn_multiply  */
 
2743
    1,                  /* mbminlen     */
 
2744
    3,                  /* mbmaxlen     */
 
2745
    0,                  /* min_sort_char */
 
2746
    0xFFFF,             /* max_sort_char */
 
2747
    ' ',                /* pad char      */
 
2748
    0,                  /* escape_with_backslash_is_dangerous */
 
2749
    &my_charset_utf8_handler,
 
2750
    &my_collation_mb_bin_handler
 
2751
};
 
2752
 
 
2753
#ifdef HAVE_UTF8_GENERAL_CS
 
2754
 
 
2755
/*
 
2756
 * These functions bacically do the same as their original, except
 
2757
 * that they return 0 only when two comparing unicode strings are
 
2758
 * strictly the same in case-sensitive way.  See "save_diff" local
 
2759
 * variable to what they actually do.
 
2760
 */
 
2761
 
 
2762
static int my_strnncoll_utf8_cs(CHARSET_INFO *cs, 
 
2763
                                const uchar *s, size_t slen,
 
2764
                                const uchar *t, size_t tlen,
 
2765
                                my_bool t_is_prefix)
 
2766
{
 
2767
  int s_res,t_res;
 
2768
  my_wc_t s_wc,t_wc;
 
2769
  const uchar *se=s+slen;
 
2770
  const uchar *te=t+tlen;
 
2771
  int save_diff = 0;
 
2772
  int diff;
 
2773
  MY_UNICASE_INFO **uni_plane= cs->caseinfo;
 
2774
 
 
2775
  while ( s < se && t < te )
 
2776
  {
 
2777
    int plane;
 
2778
    s_res=my_utf8_uni(cs,&s_wc, s, se);
 
2779
    t_res=my_utf8_uni(cs,&t_wc, t, te);
 
2780
    
 
2781
    if ( s_res <= 0 || t_res <= 0 )
 
2782
 
 
2783
    {
 
2784
      /* Incorrect string, compare by char value */
 
2785
      return ((int)s[0]-(int)t[0]); 
 
2786
    }
 
2787
    
 
2788
    if ( save_diff == 0 )
 
2789
    {
 
2790
      save_diff = ((int)s_wc) - ((int)t_wc);
 
2791
    }
 
2792
    plane=(s_wc>>8) & 0xFF;
 
2793
    s_wc = uni_plane[plane] ? uni_plane[plane][s_wc & 0xFF].sort : s_wc;
 
2794
    plane=(t_wc>>8) & 0xFF;
 
2795
    t_wc = uni_plane[plane] ? uni_plane[plane][t_wc & 0xFF].sort : t_wc;
 
2796
    if ( s_wc != t_wc )
 
2797
    {
 
2798
      return  ((int) s_wc) - ((int) t_wc);
 
2799
    }
 
2800
    
 
2801
    s+=s_res;
 
2802
    t+=t_res;
 
2803
  }
 
2804
  diff = ( (se-s) - (te-t) );
 
2805
  return t_is_prefix ? t-te : ((diff == 0) ? save_diff : diff);
 
2806
}
 
2807
 
 
2808
static int my_strnncollsp_utf8_cs(CHARSET_INFO *cs, 
 
2809
                                  const uchar *s, size_t slen,
 
2810
                                  const uchar *t, size_t tlen,
 
2811
                                  my_bool diff_if_only_endspace_difference)
 
2812
{
 
2813
  int s_res, t_res, res;
 
2814
  my_wc_t s_wc, t_wc;
 
2815
  const uchar *se= s + slen;
 
2816
  const uchar *te= t + tlen;
 
2817
  int save_diff= 0;
 
2818
  MY_UNICASE_INFO **uni_plane= cs->caseinfo;
 
2819
 
 
2820
#ifndef VARCHAR_WITH_DIFF_ENDSPACE_ARE_DIFFERENT_FOR_UNIQUE
 
2821
  diff_if_only_endspace_difference= 0;
 
2822
#endif
 
2823
    
 
2824
  while ( s < se && t < te )
 
2825
  {
 
2826
    int plane;
 
2827
    s_res=my_utf8_uni(cs,&s_wc, s, se);
 
2828
    t_res=my_utf8_uni(cs,&t_wc, t, te);
 
2829
    
 
2830
    if ( s_res <= 0 || t_res <= 0 )
 
2831
    {
 
2832
      /* Incorrect string, compare by char value */
 
2833
      return ((int)s[0]-(int)t[0]); 
 
2834
    }
 
2835
    
 
2836
    if ( save_diff == 0 )
 
2837
    {
 
2838
      save_diff = ((int)s_wc) - ((int)t_wc);
 
2839
    }
 
2840
    plane=(s_wc>>8) & 0xFF;
 
2841
    s_wc = uni_plane[plane] ? uni_plane[plane][s_wc & 0xFF].sort : s_wc;
 
2842
    plane=(t_wc>>8) & 0xFF;
 
2843
    t_wc = uni_plane[plane] ? uni_plane[plane][t_wc & 0xFF].sort : t_wc;
 
2844
    if ( s_wc != t_wc )
 
2845
    {
 
2846
      return  ((int) s_wc) - ((int) t_wc);
 
2847
    }
 
2848
    
 
2849
    s+=s_res;
 
2850
    t+=t_res;
 
2851
  }
 
2852
  
 
2853
  slen= se-s;
 
2854
  tlen= te-t;
 
2855
  res= 0;
 
2856
  
 
2857
  if (slen != tlen)
 
2858
  {
 
2859
    int swap= 1;
 
2860
    if (diff_if_only_endspace_difference)
 
2861
      res= 1;                                   /* Assume 'a' is bigger */
 
2862
    if (slen < tlen)
 
2863
    {
 
2864
      slen= tlen;
 
2865
      s= t;
 
2866
      se= te;
 
2867
      swap= -1;
 
2868
      res= -res;
 
2869
    }
 
2870
    /*
 
2871
      This following loop uses the fact that in UTF-8
 
2872
      all multibyte characters are greater than space,
 
2873
      and all multibyte head characters are greater than
 
2874
      space. It means if we meet a character greater
 
2875
      than space, it always means that the longer string
 
2876
      is greater. So we can reuse the same loop from the
 
2877
      8bit version, without having to process full multibute
 
2878
      sequences.
 
2879
    */
 
2880
    for ( ; s < se; s++)
 
2881
    {
 
2882
      if (*s != (uchar) ' ')
 
2883
        return (*s < (uchar) ' ') ? -swap : swap;
 
2884
    }
 
2885
  }
 
2886
  return save_diff;
 
2887
}
 
2888
 
 
2889
static MY_COLLATION_HANDLER my_collation_cs_handler =
 
2890
{
 
2891
    NULL,               /* init */
 
2892
    my_strnncoll_utf8_cs,
 
2893
    my_strnncollsp_utf8_cs,
 
2894
    my_strnxfrm_utf8,
 
2895
    my_strnxfrmlen_utf8,
 
2896
    my_like_range_simple,
 
2897
    my_wildcmp_mb,
 
2898
    my_strcasecmp_utf8,
 
2899
    my_instr_mb,
 
2900
    my_hash_sort_utf8,
 
2901
    my_propagate_simple
 
2902
};
 
2903
 
 
2904
CHARSET_INFO my_charset_utf8_general_cs=
 
2905
{
 
2906
    254,0,0,            /* number       */
 
2907
    MY_CS_COMPILED|MY_CS_UNICODE,       /* state  */
 
2908
    "utf8",             /* cs name      */
 
2909
    "utf8_general_cs",  /* name         */
 
2910
    "",                 /* comment      */
 
2911
    NULL,               /* tailoring    */
 
2912
    ctype_utf8,         /* ctype        */
 
2913
    to_lower_utf8,      /* to_lower     */
 
2914
    to_upper_utf8,      /* to_upper     */
 
2915
    to_upper_utf8,      /* sort_order   */
 
2916
    NULL,               /* contractions */
 
2917
    NULL,               /* sort_order_big*/
 
2918
    NULL,               /* tab_to_uni   */
 
2919
    NULL,               /* tab_from_uni */
 
2920
    my_unicase_default, /* caseinfo     */
 
2921
    NULL,               /* state_map    */
 
2922
    NULL,               /* ident_map    */
 
2923
    1,                  /* strxfrm_multiply */
 
2924
    1,                  /* caseup_multiply  */
 
2925
    1,                  /* casedn_multiply  */
 
2926
    1,                  /* mbminlen     */
 
2927
    3,                  /* mbmaxlen     */
 
2928
    0,                  /* min_sort_char */
 
2929
    255,                /* max_sort_char */
 
2930
    ' ',                /* pad char      */
 
2931
    0,                  /* escape_with_backslash_is_dangerous */
 
2932
    &my_charset_utf8_handler,
 
2933
    &my_collation_cs_handler
 
2934
};
 
2935
#endif  /* Cybozu Hack */
 
2936
 
 
2937
 
 
2938
/*
 
2939
  File system encoding components:
 
2940
 
 
2941
Code range Pattern            Number   Used Unused  Blocks
 
2942
-----------------------------------------------------------------------------
 
2943
00C0..017F [.][0..4][g..z] 5*20= 100   97     3  Latin1 Supplement + Ext A
 
2944
0370..03FF [.][5..9][g..z] 5*20= 100   88    12  Greek + Coptic
 
2945
0400..052F [.][g..z][0..6] 20*7= 140  140   137  Cyrillic
 
2946
0530..058F [.][g..z][7..8] 20*2=  40   38     2  Armenian
 
2947
2160..217F [.][g..z][9]    20*1=  20   16     4  Number Forms
 
2948
0180..02AF [.][g..z][a..k] 28*11=220  203    17  Latin Ext B + IPA
 
2949
1E00..0EFF [.][g..z][l..r] 20*7= 140  136     4  Latin Additional Extended
 
2950
1F00..1FFF [.][g..z][s..z] 20*8= 160  144    16  Greek Extended
 
2951
....  .... [.][a..f][g..z] 6*20= 120    0   120  RESERVED
 
2952
24B6..24E9 [.][@][a..z]           26   26     0  Enclosed Alphanumerics
 
2953
FF21..FF5A [.][a..z][@]           26   26     0  Full Width forms
 
2954
 
 
2955
All other characters are encoded using five bytes:
 
2956
 
 
2957
[.][0..9a..z][0..9a..z][0..9a..z][0..9a..z]
 
2958
 
 
2959
*/
 
2960
 
 
2961
 
 
2962
static uint16 touni[5994]=
 
2963
{
 
2964
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
2965
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
2966
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00C0,
 
2967
  0x00C1,0x00C2,0x00C3,0x00C4,0x00C5,0x00C6,0x00C7,0x00C8,
 
2968
  0x00C9,0x00CA,0x00CB,0x00CC,0x00CD,0x00CE,0x00CF,0x00D0,
 
2969
  0x00D1,0x00D2,0x00D3,0x0000,0x0000,0x0000,0x0000,0x0000,
 
2970
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00E0,
 
2971
  0x00E1,0x00E2,0x00E3,0x00E4,0x00E5,0x00E6,0x00E7,0x00E8,
 
2972
  0x00E9,0x00EA,0x00EB,0x00EC,0x00ED,0x00EE,0x00EF,0x00F0,
 
2973
  0x00F1,0x00F2,0x00F3,0x0000,0x0000,0x0000,0x0000,0x0000,
 
2974
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
2975
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
2976
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00D4,
 
2977
  0x00D5,0x00D6,0x0000,0x00D8,0x00D9,0x00DA,0x00DB,0x00DC,
 
2978
  0x00DD,0x00DE,0x0178,0x0100,0x0102,0x0104,0x0106,0x0108,
 
2979
  0x010A,0x010C,0x010E,0x0000,0x0000,0x0000,0x0000,0x0000,
 
2980
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00F4,
 
2981
  0x00F5,0x00F6,0x00DF,0x00F8,0x00F9,0x00FA,0x00FB,0x00FC,
 
2982
  0x00FD,0x00FE,0x00FF,0x0101,0x0103,0x0105,0x0107,0x0109,
 
2983
  0x010B,0x010D,0x010F,0x0000,0x0000,0x0000,0x0000,0x0000,
 
2984
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
2985
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
2986
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0110,
 
2987
  0x0112,0x0114,0x0116,0x0118,0x011A,0x011C,0x011E,0x0120,
 
2988
  0x0122,0x0124,0x0126,0x0128,0x012A,0x012C,0x012E,0x0000,
 
2989
  0x0132,0x0134,0x0136,0x0000,0x0000,0x0000,0x0000,0x0000,
 
2990
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0111,
 
2991
  0x0113,0x0115,0x0117,0x0119,0x011B,0x011D,0x011F,0x0121,
 
2992
  0x0123,0x0125,0x0127,0x0129,0x012B,0x012D,0x012F,0x0131,
 
2993
  0x0133,0x0135,0x0137,0x0000,0x0000,0x0000,0x0000,0x0000,
 
2994
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
2995
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
2996
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
2997
  0x0139,0x013B,0x013D,0x013F,0x0141,0x0143,0x0145,0x0147,
 
2998
  0x0000,0x014A,0x014C,0x014E,0x0150,0x0152,0x0154,0x0156,
 
2999
  0x0158,0x015A,0x015C,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3000
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0138,
 
3001
  0x013A,0x013C,0x013E,0x0140,0x0142,0x0144,0x0146,0x0148,
 
3002
  0x0149,0x014B,0x014D,0x014F,0x0151,0x0153,0x0155,0x0157,
 
3003
  0x0159,0x015B,0x015D,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3004
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3005
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3006
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x015E,
 
3007
  0x0160,0x0162,0x0164,0x0166,0x0168,0x016A,0x016C,0x016E,
 
3008
  0x0170,0x0172,0x0174,0x0176,0x0179,0x017B,0x017D,0x0000,
 
3009
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3010
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x015F,
 
3011
  0x0161,0x0163,0x0165,0x0167,0x0169,0x016B,0x016D,0x016F,
 
3012
  0x0171,0x0173,0x0175,0x0177,0x017A,0x017C,0x017E,0x017F,
 
3013
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3014
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3015
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3016
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3017
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3018
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3019
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3020
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3021
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3022
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3023
  0x0000,0x0390,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3024
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3025
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3026
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0386,
 
3027
  0x0388,0x0389,0x038A,0x0000,0x0391,0x0000,0x0393,0x0394,
 
3028
  0x0395,0x0396,0x0397,0x0000,0x0399,0x0000,0x039B,0x039C,
 
3029
  0x039D,0x039E,0x039F,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3030
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03AC,
 
3031
  0x03AD,0x03AE,0x03AF,0x03B0,0x03B1,0x03B2,0x03B3,0x03B4,
 
3032
  0x03B5,0x03B6,0x03B7,0x03B8,0x03B9,0x03BA,0x03BB,0x03BC,
 
3033
  0x03BD,0x03BE,0x03BF,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3034
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3035
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3036
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3037
  0x03A1,0x0000,0x0000,0x03A4,0x03A5,0x0000,0x03A7,0x03A8,
 
3038
  0x03A9,0x03AA,0x03AB,0x038C,0x038E,0x038F,0x0000,0x0392,
 
3039
  0x0398,0x03D2,0x03D3,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3040
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03C0,
 
3041
  0x03C1,0x03C2,0x03C3,0x03C4,0x03C5,0x03C6,0x03C7,0x03C8,
 
3042
  0x03C9,0x03CA,0x03CB,0x03CC,0x03CD,0x03CE,0x0000,0x03D0,
 
3043
  0x03D1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3044
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3045
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3046
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03D4,
 
3047
  0x03A6,0x03A0,0x0000,0x0000,0x03DA,0x03DC,0x03DE,0x03E0,
 
3048
  0x03E2,0x03E4,0x03E6,0x03E8,0x03EA,0x03EC,0x03EE,0x039A,
 
3049
  0x0000,0x03A3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3050
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3051
  0x03D5,0x03D6,0x03D7,0x03D9,0x03DB,0x03DD,0x03DF,0x03E1,
 
3052
  0x03E3,0x03E5,0x03E7,0x03E9,0x03EB,0x03ED,0x03EF,0x03F0,
 
3053
  0x03F1,0x03F2,0x03F3,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3054
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3055
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3056
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3057
  0x0000,0x0000,0x0000,0x0000,0x03FD,0x03FE,0x03FF,0x0000,
 
3058
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3059
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3060
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03F5,
 
3061
  0x03F6,0x03F8,0x03FB,0x03FC,0x0000,0x0000,0x0000,0x0000,
 
3062
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3063
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3064
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3065
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3066
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3067
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3068
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3069
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3070
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3071
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3072
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3073
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3074
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3075
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3076
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3077
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3078
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3079
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3080
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3081
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3082
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3083
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3084
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3085
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3086
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3087
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3088
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3089
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3090
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3091
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3092
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3093
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3094
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3095
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3096
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3097
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3098
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3099
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3100
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3101
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3102
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3103
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3104
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3105
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3106
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3107
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3108
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3109
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3110
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3111
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3112
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3113
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3114
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3115
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3116
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3117
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3118
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3119
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3120
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3121
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3122
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3123
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3124
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3125
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3126
  0x0000,0x24B6,0x24B7,0x24B8,0x24B9,0x24BA,0x24BB,0x24BC,
 
3127
  0x24BD,0x24BE,0x24BF,0x24C0,0x24C1,0x24C2,0x24C3,0x24C4,
 
3128
  0x24C5,0x24C6,0x24C7,0x24C8,0x24C9,0x24CA,0x24CB,0x24CC,
 
3129
  0x24CD,0x24CE,0x24CF,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3130
  0x0000,0x24D0,0x24D1,0x24D2,0x24D3,0x24D4,0x24D5,0x24D6,
 
3131
  0x24D7,0x24D8,0x24D9,0x24DA,0x24DB,0x24DC,0x24DD,0x24DE,
 
3132
  0x24DF,0x24E0,0x24E1,0x24E2,0x24E3,0x24E4,0x24E5,0x24E6,
 
3133
  0x24E7,0x24E8,0x24E9,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3134
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3135
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3136
  0xFF21,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3137
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3138
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3139
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3140
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3141
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3142
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3143
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3144
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3145
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3146
  0xFF22,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3147
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3148
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3149
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3150
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3151
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3152
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3153
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3154
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3155
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3156
  0xFF23,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3157
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3158
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3159
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3160
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3161
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3162
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3163
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3164
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3165
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3166
  0xFF24,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3167
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3168
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3169
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3170
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3171
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3172
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3173
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3174
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3175
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3176
  0xFF25,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3177
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3178
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3179
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3180
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3181
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3182
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3183
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3184
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3185
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3186
  0xFF26,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3187
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3188
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3189
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3190
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3191
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3192
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3193
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3194
  0x0410,0x0424,0x0408,0x0478,0x04A6,0x04CD,0x04F4,0x0000,
 
3195
  0x0544,0x2160,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3196
  0xFF27,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3197
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3198
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3199
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3200
  0x0000,0x0000,0x01B3,0x01DE,0x0208,0x0230,0x0000,0x0000,
 
3201
  0x0000,0x0000,0x0000,0x0000,0x1E00,0x1E28,0x1E50,0x1E78,
 
3202
  0x1E60,0x1EBE,0x1EE6,0x1F08,0x1F2A,0x0000,0x1F6C,0x1F88,
 
3203
  0x1FAC,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3204
  0x0411,0x0425,0x0409,0x047A,0x04A8,0x0000,0x04F6,0x0531,
 
3205
  0x0545,0x2161,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3206
  0xFF28,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3207
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3208
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3209
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3210
  0x0000,0x0182,0x01B5,0x01E0,0x020A,0x0232,0x0000,0x0000,
 
3211
  0x019D,0x0000,0x0000,0x0000,0x1E02,0x1E2A,0x1E52,0x1E7A,
 
3212
  0x0000,0x1EC0,0x1EE8,0x1F09,0x1F2B,0x0000,0x1F6D,0x1F89,
 
3213
  0x1FAD,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3214
  0x0412,0x0426,0x040A,0x047C,0x04AA,0x04D0,0x04F8,0x0532,
 
3215
  0x0546,0x2162,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3216
  0xFF29,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3217
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3218
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3219
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3220
  0x0000,0x0184,0x01B8,0x01E2,0x020C,0x0000,0x0000,0x0000,
 
3221
  0x0000,0x0000,0x0000,0x0000,0x1E04,0x1E2C,0x1E54,0x1E7C,
 
3222
  0x0000,0x1EC2,0x1EEA,0x1F0A,0x1F2C,0x0000,0x1F6E,0x1F8A,
 
3223
  0x1FAE,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3224
  0x0413,0x0427,0x040B,0x047E,0x04AC,0x04D2,0x0000,0x0533,
 
3225
  0x0547,0x2163,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3226
  0xFF2A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3227
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3228
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3229
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3230
  0x0000,0x0187,0x0000,0x01E4,0x020E,0x0000,0x0000,0x0193,
 
3231
  0x0000,0x01AE,0x0000,0x0000,0x1E06,0x1E2E,0x1E56,0x1E7E,
 
3232
  0x0000,0x1EC4,0x1EEC,0x1F0B,0x1F2D,0x0000,0x1F6F,0x1F8B,
 
3233
  0x1FAF,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3234
  0x0414,0x0428,0x040C,0x0480,0x04AE,0x04D4,0x0000,0x0534,
 
3235
  0x0548,0x2164,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3236
  0xFF2B,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3237
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3238
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3239
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3240
  0x0000,0x018B,0x0000,0x01E6,0x0210,0x0000,0x0000,0x0000,
 
3241
  0x019F,0x0000,0x0000,0x0000,0x1E08,0x1E30,0x1E58,0x1E80,
 
3242
  0x0000,0x1EC6,0x1EEE,0x1F0C,0x1F2E,0x0000,0x1FBA,0x1F8C,
 
3243
  0x1FB8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3244
  0x0415,0x0429,0x040D,0x0000,0x04B0,0x04D6,0x0000,0x0535,
 
3245
  0x0549,0x2165,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3246
  0xFF2C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3247
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3248
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3249
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3250
  0x0000,0x0000,0x0000,0x01E8,0x0212,0x0000,0x0000,0x0000,
 
3251
  0x0000,0x01B1,0x0000,0x0000,0x1E0A,0x1E32,0x1E5A,0x1E82,
 
3252
  0x1EA0,0x1EC8,0x1EF0,0x1F0D,0x1F2F,0x1F59,0x1FBB,0x1F8D,
 
3253
  0x1FB9,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3254
  0x0416,0x042A,0x040E,0x048A,0x04B2,0x04D8,0x0000,0x0536,
 
3255
  0x054A,0x2166,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3256
  0xFF2D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3257
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3258
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3259
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3260
  0x0000,0x0191,0x0000,0x01EA,0x0214,0x0000,0x0000,0x0194,
 
3261
  0x0000,0x01B2,0x0000,0x0000,0x1E0C,0x1E34,0x1E5C,0x1E84,
 
3262
  0x1EA2,0x1ECA,0x1EF2,0x1F0E,0x1F38,0x0000,0x1FC8,0x1F8E,
 
3263
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3264
  0x0417,0x042B,0x040F,0x048C,0x04B4,0x04DA,0x0000,0x0537,
 
3265
  0x054B,0x2167,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3266
  0xFF2E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3267
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3268
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3269
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3270
  0x0000,0x01F6,0x01BC,0x01EC,0x0216,0x0000,0x0000,0x0000,
 
3271
  0x0000,0x0000,0x0000,0x0000,0x1E0E,0x1E36,0x1E5E,0x1E86,
 
3272
  0x1EA4,0x1ECC,0x1EF4,0x1F0F,0x1F39,0x1F5B,0x1FC9,0x1F8F,
 
3273
  0x1FBC,0x1FE8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3274
  0x0418,0x042C,0x0460,0x048E,0x04B6,0x04DC,0x0000,0x0538,
 
3275
  0x054C,0x2168,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3276
  0xFF2F,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3277
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3278
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3279
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3280
  0x0000,0x0198,0x01C4,0x01EE,0x0218,0x023A,0x0000,0x0000,
 
3281
  0x0000,0x0000,0x0000,0x0000,0x1E10,0x1E38,0x0000,0x1E88,
 
3282
  0x1EA6,0x1ECE,0x1EF6,0x1F18,0x1F3A,0x0000,0x1FCA,0x1F98,
 
3283
  0x0000,0x1FE9,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3284
  0x0419,0x042D,0x0462,0x0490,0x04B8,0x04DE,0x0500,0x0539,
 
3285
  0x054D,0x2169,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3286
  0xFF30,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3287
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3288
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3289
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3290
  0x0000,0x023D,0x01C7,0x0000,0x021A,0x023B,0x0000,0x0000,
 
3291
  0x0000,0x0000,0x0000,0x0000,0x1E12,0x1E3A,0x1E62,0x1E8A,
 
3292
  0x1EA8,0x1ED0,0x1EF8,0x1F19,0x1F3B,0x1F5D,0x1FCB,0x1F99,
 
3293
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3294
  0x041A,0x042E,0x0464,0x0492,0x04BA,0x04E0,0x0502,0x053A,
 
3295
  0x054E,0x216A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3296
  0xFF31,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3297
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3298
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3299
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3300
  0x0000,0x0000,0x01CA,0x01F1,0x021C,0x023E,0x0181,0x0000,
 
3301
  0x0000,0x0000,0x0000,0x0000,0x1E14,0x1E3C,0x1E64,0x1E8C,
 
3302
  0x1EAA,0x1ED2,0x0000,0x1F1A,0x1F3C,0x0000,0x1FDA,0x1F9A,
 
3303
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3304
  0x041B,0x042F,0x0466,0x0494,0x04BC,0x04E2,0x0504,0x053B,
 
3305
  0x054F,0x216B,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3306
  0xFF32,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3307
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3308
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3309
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3310
  0x0000,0x0220,0x01CD,0x01F4,0x021E,0x0000,0x0186,0x0197,
 
3311
  0x0000,0x0000,0x0000,0x0000,0x1E16,0x1E3E,0x1E66,0x1E8E,
 
3312
  0x1EAC,0x1ED4,0x0000,0x1F1B,0x1F3D,0x1F5F,0x1FDB,0x1F9B,
 
3313
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3314
  0x041C,0x0400,0x0468,0x0496,0x04BE,0x04E4,0x0506,0x053C,
 
3315
  0x0550,0x216C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3316
  0xFF33,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3317
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3318
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3319
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3320
  0x0000,0x01A0,0x01CF,0x01F8,0x0000,0x0000,0x0000,0x0196,
 
3321
  0x0000,0x0000,0x0000,0x0000,0x1E18,0x1E40,0x1E68,0x1E90,
 
3322
  0x1EAE,0x1ED6,0x0000,0x1F1C,0x1F3E,0x0000,0x1FF8,0x1F9C,
 
3323
  0x0000,0x1FEC,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3324
  0x041D,0x0401,0x046A,0x0498,0x04C0,0x04E6,0x0508,0x053D,
 
3325
  0x0551,0x216D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3326
  0xFF34,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3327
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3328
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3329
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3330
  0x0000,0x01A2,0x01D1,0x01FA,0x0222,0x0000,0x0189,0x0000,
 
3331
  0x0000,0x01B7,0x0000,0x0000,0x1E1A,0x1E42,0x1E6A,0x1E92,
 
3332
  0x1EB0,0x1ED8,0x0000,0x1F1D,0x1F3F,0x0000,0x1FF9,0x1F9D,
 
3333
  0x1FCC,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3334
  0x041E,0x0402,0x046C,0x049A,0x04C1,0x04E8,0x050A,0x053E,
 
3335
  0x0552,0x216E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3336
  0xFF35,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3337
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3338
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3339
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3340
  0x0000,0x01A4,0x01D3,0x01FC,0x0224,0x0000,0x018A,0x0000,
 
3341
  0x0000,0x0000,0x0000,0x0000,0x1E1C,0x1E44,0x1E6C,0x1E94,
 
3342
  0x1EB2,0x1EDA,0x0000,0x0000,0x1F48,0x0000,0x1FEA,0x1F9E,
 
3343
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3344
  0x041F,0x0403,0x046E,0x049C,0x04C3,0x04EA,0x050C,0x053F,
 
3345
  0x0553,0x216F,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3346
  0xFF36,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3347
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3348
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3349
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3350
  0x0000,0x01A7,0x01D5,0x01FE,0x0226,0x0000,0x0000,0x0000,
 
3351
  0x01A6,0x0241,0x0000,0x0000,0x1E1E,0x1E46,0x1E6E,0x0000,
 
3352
  0x1EB4,0x1EDC,0x0000,0x0000,0x1F49,0x0000,0x1FEB,0x1F9F,
 
3353
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3354
  0x0420,0x0404,0x0470,0x049E,0x04C5,0x04EC,0x050E,0x0540,
 
3355
  0x0554,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3356
  0xFF37,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3357
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3358
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3359
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3360
  0x0000,0x0000,0x01D7,0x0200,0x0228,0x0000,0x018F,0x0000,
 
3361
  0x0000,0x0000,0x0000,0x0000,0x1E20,0x1E48,0x1E70,0x0000,
 
3362
  0x1EB6,0x1EDE,0x0000,0x0000,0x1F4A,0x1F68,0x1FFA,0x1FA8,
 
3363
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3364
  0x0421,0x0405,0x0472,0x04A0,0x04C7,0x04EE,0x0000,0x0541,
 
3365
  0x0555,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3366
  0xFF38,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3367
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3368
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3369
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3370
  0x0000,0x0000,0x01D9,0x0202,0x022A,0x0000,0x0000,0x0000,
 
3371
  0x0000,0x0000,0x0000,0x0000,0x1E22,0x1E4A,0x1E72,0x0000,
 
3372
  0x1EB8,0x1EE0,0x0000,0x0000,0x1F4B,0x1F69,0x1FFB,0x1FA9,
 
3373
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3374
  0x0422,0x0406,0x0474,0x04A2,0x04C9,0x04F0,0x0000,0x0542,
 
3375
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3376
  0xFF39,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3377
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3378
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3379
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3380
  0x0000,0x01AC,0x01DB,0x0204,0x022C,0x0000,0x0190,0x019C,
 
3381
  0x01A9,0x0000,0x0000,0x0000,0x1E24,0x1E4C,0x1E74,0x0000,
 
3382
  0x1EBA,0x1EE2,0x0000,0x1F28,0x1F4C,0x1F6A,0x0000,0x1FAA,
 
3383
  0x1FD8,0x1FFC,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3384
  0x0423,0x0407,0x0476,0x04A4,0x04CB,0x04F2,0x0000,0x0543,
 
3385
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3386
  0xFF3A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3387
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3388
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3389
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3390
  0x0000,0x01AF,0x018E,0x0206,0x022E,0x0000,0x0000,0x0000,
 
3391
  0x0000,0x0000,0x0000,0x0000,0x1E26,0x1E4E,0x1E76,0x0000,
 
3392
  0x1EBC,0x1EE4,0x0000,0x1F29,0x1F4D,0x1F6B,0x0000,0x1FAB,
 
3393
  0x1FD9,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3394
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3395
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3396
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3397
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3398
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3399
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3400
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3401
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3402
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3403
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3404
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3405
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3406
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3407
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3408
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3409
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3410
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3411
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3412
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3413
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3414
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3415
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3416
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3417
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3418
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3419
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3420
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3421
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3422
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3423
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3424
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3425
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3426
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3427
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3428
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3429
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3430
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3431
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3432
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3433
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3434
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3435
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3436
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3437
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3438
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3439
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3440
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3441
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3442
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3443
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3444
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3445
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3446
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3447
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3448
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3449
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3450
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3451
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3452
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3453
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3454
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3455
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3456
  0xFF41,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3457
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3458
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3459
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3460
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3461
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3462
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3463
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3464
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3465
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3466
  0xFF42,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3467
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3468
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3469
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3470
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3471
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3472
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3473
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3474
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3475
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3476
  0xFF43,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3477
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3478
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3479
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3480
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3481
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3482
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3483
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3484
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3485
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3486
  0xFF44,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3487
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3488
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3489
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3490
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3491
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3492
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3493
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3494
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3495
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3496
  0xFF45,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3497
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3498
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3499
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3500
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3501
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3502
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3503
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3504
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3505
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3506
  0xFF46,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3507
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3508
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3509
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3510
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3511
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3512
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3513
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3514
  0x0430,0x0444,0x0458,0x0479,0x04A7,0x04CE,0x04F5,0x0000,
 
3515
  0x0574,0x2170,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3516
  0xFF47,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3517
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3518
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3519
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3520
  0x0000,0x0180,0x01B4,0x01DF,0x0209,0x0231,0x0000,0x025D,
 
3521
  0x0271,0x0285,0x0299,0x02AD,0x1E01,0x1E29,0x1E51,0x1E79,
 
3522
  0x1E9B,0x1EBF,0x1EE7,0x1F00,0x1F22,0x0000,0x1F64,0x1F80,
 
3523
  0x1FA4,0x1FD2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3524
  0x0431,0x0445,0x0459,0x047B,0x04A9,0x0000,0x04F7,0x0561,
 
3525
  0x0575,0x2171,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3526
  0xFF48,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3527
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3528
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3529
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3530
  0x0000,0x0183,0x01B6,0x01E1,0x020B,0x0233,0x0000,0x025E,
 
3531
  0x0272,0x0286,0x029A,0x02AE,0x1E03,0x1E2B,0x1E53,0x1E7B,
 
3532
  0x0000,0x1EC1,0x1EE9,0x1F01,0x1F23,0x0000,0x1F65,0x1F81,
 
3533
  0x1FA5,0x1FD3,0x1FF6,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3534
  0x0432,0x0446,0x045A,0x047D,0x04AB,0x04D1,0x04F9,0x0562,
 
3535
  0x0576,0x2172,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3536
  0xFF49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3537
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3538
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3539
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3540
  0x0000,0x0185,0x01B9,0x01E3,0x020D,0x0234,0x0000,0x025F,
 
3541
  0x0273,0x0287,0x029B,0x02AF,0x1E05,0x1E2D,0x1E55,0x1E7D,
 
3542
  0x0000,0x1EC3,0x1EEB,0x1F02,0x1F24,0x0000,0x1F66,0x1F82,
 
3543
  0x1FA6,0x0000,0x1FF7,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3544
  0x0433,0x0447,0x045B,0x047F,0x04AD,0x04D3,0x0000,0x0563,
 
3545
  0x0577,0x2173,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3546
  0xFF4A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3547
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3548
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3549
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3550
  0x0000,0x0188,0x01BA,0x01E5,0x020F,0x0235,0x0000,0x0260,
 
3551
  0x0274,0x0288,0x029C,0x0000,0x1E07,0x1E2F,0x1E57,0x1E7F,
 
3552
  0x0000,0x1EC5,0x1EED,0x1F03,0x1F25,0x0000,0x1F67,0x1F83,
 
3553
  0x1FA7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3554
  0x0434,0x0448,0x045C,0x0481,0x04AF,0x04D5,0x0000,0x0564,
 
3555
  0x0578,0x2174,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3556
  0xFF4B,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3557
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3558
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3559
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3560
  0x0000,0x018C,0x01BB,0x01E7,0x0211,0x0236,0x0000,0x0261,
 
3561
  0x0275,0x0289,0x029D,0x0000,0x1E09,0x1E31,0x1E59,0x1E81,
 
3562
  0x0000,0x1EC7,0x1EEF,0x1F04,0x1F26,0x1F50,0x1F70,0x1F84,
 
3563
  0x1FB0,0x1FD6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3564
  0x0435,0x0449,0x045D,0x0000,0x04B1,0x04D7,0x0000,0x0565,
 
3565
  0x0579,0x2175,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3566
  0xFF4C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3567
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3568
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3569
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3570
  0x0000,0x018D,0x0000,0x01E9,0x0213,0x0237,0x0000,0x0262,
 
3571
  0x0276,0x028A,0x029E,0x0000,0x1E0B,0x1E33,0x1E5B,0x1E83,
 
3572
  0x1EA1,0x1EC9,0x1EF1,0x1F05,0x1F27,0x1F51,0x1F71,0x1F85,
 
3573
  0x1FB1,0x1FD7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3574
  0x0436,0x044A,0x045E,0x048B,0x04B3,0x04D9,0x0000,0x0566,
 
3575
  0x057A,0x2176,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3576
  0xFF4D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3577
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3578
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3579
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3580
  0x0000,0x0192,0x01BE,0x01EB,0x0215,0x0238,0x0000,0x0263,
 
3581
  0x0277,0x028B,0x029F,0x0000,0x1E0D,0x1E35,0x1E5D,0x1E85,
 
3582
  0x1EA3,0x1ECB,0x1EF3,0x1F06,0x1F30,0x1F52,0x1F72,0x1F86,
 
3583
  0x1FB2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3584
  0x0437,0x044B,0x045F,0x048D,0x04B5,0x04DB,0x0000,0x0567,
 
3585
  0x057B,0x2177,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3586
  0xFF4E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3587
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3588
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3589
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3590
  0x0000,0x0195,0x01BD,0x01ED,0x0217,0x0239,0x0250,0x0264,
 
3591
  0x0278,0x028C,0x02A0,0x0000,0x1E0F,0x1E37,0x1E5F,0x1E87,
 
3592
  0x1EA5,0x1ECD,0x1EF5,0x1F07,0x1F31,0x1F53,0x1F73,0x1F87,
 
3593
  0x1FB3,0x1FE0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3594
  0x0438,0x044C,0x0461,0x048F,0x04B7,0x04DD,0x0000,0x0568,
 
3595
  0x057C,0x2178,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3596
  0xFF4F,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3597
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3598
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3599
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3600
  0x0000,0x0199,0x01C6,0x01EF,0x0219,0x0000,0x0251,0x0265,
 
3601
  0x0279,0x028D,0x02A1,0x0000,0x1E11,0x1E39,0x1E61,0x1E89,
 
3602
  0x1EA7,0x1ECF,0x1EF7,0x1F10,0x1F32,0x1F54,0x1F74,0x1F90,
 
3603
  0x1FB4,0x1FE1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3604
  0x0439,0x044D,0x0463,0x0491,0x04B9,0x04DF,0x0501,0x0569,
 
3605
  0x057D,0x2179,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3606
  0xFF50,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3607
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3608
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3609
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3610
  0x0000,0x019A,0x01C9,0x01F0,0x021B,0x023C,0x0252,0x0266,
 
3611
  0x027A,0x028E,0x02A2,0x0000,0x1E13,0x1E3B,0x1E63,0x1E8B,
 
3612
  0x1EA9,0x1ED1,0x1EF9,0x1F11,0x1F33,0x1F55,0x1F75,0x1F91,
 
3613
  0x0000,0x1FE2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3614
  0x043A,0x044E,0x0465,0x0493,0x04BB,0x04E1,0x0503,0x056A,
 
3615
  0x057E,0x217A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3616
  0xFF51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3617
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3618
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3619
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3620
  0x0000,0x019B,0x01CC,0x01F3,0x021D,0x0000,0x0253,0x0267,
 
3621
  0x027B,0x028F,0x02A3,0x0000,0x1E15,0x1E3D,0x1E65,0x1E8D,
 
3622
  0x1EAB,0x1ED3,0x0000,0x1F12,0x1F34,0x1F56,0x1F76,0x1F92,
 
3623
  0x1FB6,0x1FE3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3624
  0x043B,0x044F,0x0467,0x0495,0x04BD,0x04E3,0x0505,0x056B,
 
3625
  0x057F,0x217B,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3626
  0xFF52,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3627
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3628
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3629
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3630
  0x0000,0x019E,0x01CE,0x01F5,0x021F,0x023F,0x0254,0x0268,
 
3631
  0x027C,0x0290,0x02A4,0x0000,0x1E17,0x1E3F,0x1E67,0x1E8F,
 
3632
  0x1EAD,0x1ED5,0x0000,0x1F13,0x1F35,0x1F57,0x1F77,0x1F93,
 
3633
  0x1FB7,0x1FE4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3634
  0x043C,0x0450,0x0469,0x0497,0x04BF,0x04E5,0x0507,0x056C,
 
3635
  0x0580,0x217C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3636
  0xFF53,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3637
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3638
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3639
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3640
  0x0000,0x01A1,0x01D0,0x01F9,0x0221,0x0240,0x0255,0x0269,
 
3641
  0x027D,0x0291,0x02A5,0x0000,0x1E19,0x1E41,0x1E69,0x1E91,
 
3642
  0x1EAF,0x1ED7,0x0000,0x1F14,0x1F36,0x0000,0x1F78,0x1F94,
 
3643
  0x1FC2,0x1FE5,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3644
  0x043D,0x0451,0x046B,0x0499,0x0000,0x04E7,0x0509,0x056D,
 
3645
  0x0581,0x217D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3646
  0xFF54,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3647
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3648
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3649
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3650
  0x0000,0x01A3,0x01D2,0x01FB,0x0223,0x0000,0x0256,0x026A,
 
3651
  0x027E,0x0292,0x02A6,0x0000,0x1E1B,0x1E43,0x1E6B,0x1E93,
 
3652
  0x1EB1,0x1ED9,0x0000,0x1F15,0x1F37,0x0000,0x1F79,0x1F95,
 
3653
  0x1FC3,0x1FE6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3654
  0x043E,0x0452,0x046D,0x049B,0x04C2,0x04E9,0x050B,0x056E,
 
3655
  0x0582,0x217E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3656
  0xFF55,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3657
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3658
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3659
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3660
  0x0000,0x01A5,0x01D4,0x01FD,0x0225,0x0000,0x0257,0x026B,
 
3661
  0x027F,0x0293,0x02A7,0x0000,0x1E1D,0x1E45,0x1E6D,0x1E95,
 
3662
  0x1EB3,0x1EDB,0x0000,0x0000,0x1F40,0x0000,0x1F7A,0x1F96,
 
3663
  0x1FC4,0x1FE7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3664
  0x043F,0x0453,0x046F,0x049D,0x04C4,0x04EB,0x050D,0x056F,
 
3665
  0x0583,0x217F,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3666
  0xFF56,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3667
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3668
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3669
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3670
  0x0000,0x01A8,0x01D6,0x01FF,0x0227,0x0000,0x0258,0x026C,
 
3671
  0x0280,0x0294,0x02A8,0x0000,0x1E1F,0x1E47,0x1E6F,0x1E96,
 
3672
  0x1EB5,0x1EDD,0x0000,0x0000,0x1F41,0x0000,0x1F7B,0x1F97,
 
3673
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3674
  0x0440,0x0454,0x0471,0x049F,0x04C6,0x04ED,0x050F,0x0570,
 
3675
  0x0584,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3676
  0xFF57,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3677
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3678
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3679
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3680
  0x0000,0x01AA,0x01D8,0x0201,0x0229,0x0000,0x0259,0x026D,
 
3681
  0x0281,0x0295,0x02A9,0x0000,0x1E21,0x1E49,0x1E71,0x1E97,
 
3682
  0x1EB7,0x1EDF,0x0000,0x0000,0x1F42,0x1F60,0x1F7C,0x1FA0,
 
3683
  0x1FC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3684
  0x0441,0x0455,0x0473,0x04A1,0x04C8,0x04EF,0x0000,0x0571,
 
3685
  0x0585,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3686
  0xFF58,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3687
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3688
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3689
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3690
  0x0000,0x01AB,0x01DA,0x0203,0x022B,0x0000,0x025A,0x026E,
 
3691
  0x0282,0x0296,0x02AA,0x0000,0x1E23,0x1E4B,0x1E73,0x1E98,
 
3692
  0x1EB9,0x1EE1,0x0000,0x0000,0x1F43,0x1F61,0x1F7D,0x1FA1,
 
3693
  0x1FC7,0x1FF2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3694
  0x0442,0x0456,0x0475,0x04A3,0x04CA,0x04F1,0x0000,0x0572,
 
3695
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3696
  0xFF59,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3697
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3698
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3699
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3700
  0x0000,0x01AD,0x01DC,0x0205,0x022D,0x0000,0x025B,0x026F,
 
3701
  0x0283,0x0297,0x02AB,0x0000,0x1E25,0x1E4D,0x1E75,0x1E99,
 
3702
  0x1EBB,0x1EE3,0x0000,0x1F20,0x1F44,0x1F62,0x0000,0x1FA2,
 
3703
  0x1FD0,0x1FF3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3704
  0x0443,0x0457,0x0477,0x04A5,0x04CC,0x04F3,0x0000,0x0573,
 
3705
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3706
  0xFF5A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3707
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3708
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3709
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3710
  0x0000,0x01B0,0x01DD,0x0207,0x022F,0x0000,0x025C,0x0270,
 
3711
  0x0284,0x0298,0x02AC,0x0000,0x1E27,0x1E4F,0x1E77,0x1E9A,
 
3712
  0x1EBD,0x1EE5,0x0000,0x1F21,0x1F45,0x1F63,0x0000,0x1FA3,
 
3713
  0x1FD1,0x1FF4
 
3714
};
 
3715
 
 
3716
 
 
3717
/* 00C0-05FF */
 
3718
static uint16 uni_0C00_05FF[1344]=
 
3719
{
 
3720
  0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
 
3721
  0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,
 
3722
  0x0027,0x0028,0x0029,0x002A,0x0067,0x0068,0x0069,0x0000,
 
3723
  0x006B,0x006C,0x006D,0x006E,0x006F,0x0070,0x0071,0x008A,
 
3724
  0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,
 
3725
  0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
 
3726
  0x0047,0x0048,0x0049,0x004A,0x0087,0x0088,0x0089,0x0000,
 
3727
  0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,0x0092,
 
3728
  0x0073,0x0093,0x0074,0x0094,0x0075,0x0095,0x0076,0x0096,
 
3729
  0x0077,0x0097,0x0078,0x0098,0x0079,0x0099,0x007A,0x009A,
 
3730
  0x00B7,0x00D7,0x00B8,0x00D8,0x00B9,0x00D9,0x00BA,0x00DA,
 
3731
  0x00BB,0x00DB,0x00BC,0x00DC,0x00BD,0x00DD,0x00BE,0x00DE,
 
3732
  0x00BF,0x00DF,0x00C0,0x00E0,0x00C1,0x00E1,0x00C2,0x00E2,
 
3733
  0x00C3,0x00E3,0x00C4,0x00E4,0x00C5,0x00E5,0x00C6,0x00E6,
 
3734
  0x0000,0x00E7,0x00C8,0x00E8,0x00C9,0x00E9,0x00CA,0x00EA,
 
3735
  0x0127,0x0108,0x0128,0x0109,0x0129,0x010A,0x012A,0x010B,
 
3736
  0x012B,0x010C,0x012C,0x010D,0x012D,0x010E,0x012E,0x010F,
 
3737
  0x012F,0x0130,0x0111,0x0131,0x0112,0x0132,0x0113,0x0133,
 
3738
  0x0114,0x0134,0x0115,0x0135,0x0116,0x0136,0x0117,0x0137,
 
3739
  0x0118,0x0138,0x0119,0x0139,0x011A,0x013A,0x0157,0x0177,
 
3740
  0x0158,0x0178,0x0159,0x0179,0x015A,0x017A,0x015B,0x017B,
 
3741
  0x015C,0x017C,0x015D,0x017D,0x015E,0x017E,0x015F,0x017F,
 
3742
  0x0160,0x0180,0x0161,0x0181,0x0162,0x0182,0x0163,0x0183,
 
3743
  0x0072,0x0164,0x0184,0x0165,0x0185,0x0166,0x0186,0x0187,
 
3744
  0x1161,0x0A86,0x07B1,0x11B1,0x0801,0x1201,0x0AD6,0x0851,
 
3745
  0x1251,0x0B76,0x0BC6,0x08A1,0x12A1,0x12F1,0x0D52,0x0C66,
 
3746
  0x0D06,0x0941,0x1341,0x0857,0x0947,0x1391,0x0B27,0x0AD7,
 
3747
  0x09E1,0x13E1,0x1431,0x1481,0x0D07,0x07B8,0x14D1,0x08A8,
 
3748
  0x0B21,0x1521,0x0B71,0x1571,0x0BC1,0x15C1,0x0C18,0x0C11,
 
3749
  0x1611,0x0D08,0x1661,0x16B1,0x0D01,0x1701,0x0859,0x0D51,
 
3750
  0x1751,0x08F9,0x0949,0x0762,0x1162,0x07B2,0x11B2,0x0B79,
 
3751
  0x0802,0x1202,0x1252,0x12A2,0x0992,0x1392,0x1342,0x0000,
 
3752
  0x0000,0x0000,0x0000,0x0000,0x09E2,0x0000,0x13E2,0x0A32,
 
3753
  0x0000,0x1432,0x0A82,0x0000,0x1482,0x0AD2,0x14D2,0x0B22,
 
3754
  0x1522,0x0B72,0x1572,0x0BC2,0x15C2,0x0C12,0x1612,0x0C62,
 
3755
  0x1662,0x0CB2,0x16B2,0x0D02,0x1702,0x1752,0x0763,0x1163,
 
3756
  0x07B3,0x11B3,0x0803,0x1203,0x0853,0x1253,0x08A3,0x12A3,
 
3757
  0x08F3,0x12F3,0x0943,0x1343,0x0993,0x1393,0x09E3,0x13E3,
 
3758
  0x1433,0x0A83,0x0000,0x1483,0x0AD3,0x14D3,0x0991,0x0000,
 
3759
  0x0B23,0x1523,0x0B73,0x1573,0x0BC3,0x15C3,0x0C13,0x1613,
 
3760
  0x0C63,0x1663,0x0CB3,0x16B3,0x0D03,0x1703,0x0D53,0x1753,
 
3761
  0x0764,0x1164,0x07B4,0x11B4,0x0804,0x1204,0x0854,0x1254,
 
3762
  0x08A4,0x12A4,0x08F4,0x12F4,0x0944,0x1344,0x0994,0x1394,
 
3763
  0x09E4,0x13E4,0x0A34,0x1434,0x0A84,0x1484,0x0AD4,0x14D4,
 
3764
  0x0AD1,0x1524,0x0B74,0x1574,0x0BC4,0x15C4,0x0C14,0x1614,
 
3765
  0x0C64,0x1664,0x0CB4,0x16B4,0x0D04,0x1704,0x0D54,0x1754,
 
3766
  0x0765,0x1165,0x07B5,0x11B5,0x1205,0x1255,0x12A5,0x12F5,
 
3767
  0x1345,0x1395,0x09E5,0x0A35,0x1435,0x0A31,0x0A85,0x14D5,
 
3768
  0x1525,0x0C19,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3769
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3770
  0x1396,0x13E6,0x1436,0x1486,0x14D6,0x1526,0x1576,0x15C6,
 
3771
  0x1616,0x1666,0x16B6,0x1706,0x1756,0x1167,0x11B7,0x1207,
 
3772
  0x1257,0x12A7,0x12F7,0x1347,0x1397,0x13E7,0x1437,0x1487,
 
3773
  0x14D7,0x1527,0x1577,0x15C7,0x1617,0x1667,0x16B7,0x1707,
 
3774
  0x1757,0x1168,0x11B8,0x1208,0x1258,0x12A8,0x12F8,0x1348,
 
3775
  0x1398,0x13E8,0x1438,0x1488,0x14D8,0x1528,0x1578,0x15C8,
 
3776
  0x1618,0x1668,0x16B8,0x1708,0x1758,0x1169,0x11B9,0x1209,
 
3777
  0x1259,0x12A9,0x12F9,0x1349,0x1399,0x13E9,0x1439,0x1489,
 
3778
  0x14D9,0x1529,0x1579,0x15C9,0x1619,0x1669,0x16B9,0x1709,
 
3779
  0x1759,0x116A,0x11BA,0x120A,0x125A,0x12AA,0x12FA,0x134A,
 
3780
  0x139A,0x13EA,0x143A,0x148A,0x14DA,0x152A,0x157A,0x15CA,
 
3781
  0x161A,0x166A,0x16BA,0x170A,0x175A,0x116B,0x11BB,0x120B,
 
3782
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3783
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3784
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3785
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3786
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3787
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3788
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3789
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3790
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3791
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3792
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3793
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3794
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3795
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3796
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3797
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3798
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3799
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3800
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3801
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3802
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3803
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3804
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3805
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3806
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3807
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3808
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x01F7,0x0000,
 
3809
  0x01F8,0x01F9,0x01FA,0x0000,0x0253,0x0000,0x0254,0x0255,
 
3810
  0x01D9,0x01FC,0x0257,0x01FE,0x01FF,0x0200,0x0201,0x0202,
 
3811
  0x0258,0x0204,0x02A7,0x0206,0x0207,0x0208,0x0209,0x020A,
 
3812
  0x0299,0x0248,0x0000,0x02A9,0x024B,0x024C,0x0298,0x024E,
 
3813
  0x024F,0x0250,0x0251,0x0252,0x0217,0x0218,0x0219,0x021A,
 
3814
  0x021B,0x021C,0x021D,0x021E,0x021F,0x0220,0x0221,0x0222,
 
3815
  0x0223,0x0224,0x0225,0x0226,0x0227,0x0228,0x0229,0x022A,
 
3816
  0x0267,0x0268,0x0269,0x026A,0x026B,0x026C,0x026D,0x026E,
 
3817
  0x026F,0x0270,0x0271,0x0272,0x0273,0x0274,0x0275,0x0000,
 
3818
  0x0277,0x0278,0x0259,0x025A,0x0297,0x02B8,0x02B9,0x02BA,
 
3819
  0x0000,0x02BB,0x029C,0x02BC,0x029D,0x02BD,0x029E,0x02BE,
 
3820
  0x029F,0x02BF,0x02A0,0x02C0,0x02A1,0x02C1,0x02A2,0x02C2,
 
3821
  0x02A3,0x02C3,0x02A4,0x02C4,0x02A5,0x02C5,0x02A6,0x02C6,
 
3822
  0x02C7,0x02C8,0x02C9,0x02CA,0x0000,0x0307,0x0308,0x0000,
 
3823
  0x0309,0x0000,0x0000,0x030A,0x030B,0x02EC,0x02ED,0x02EE,
 
3824
  0x0AF1,0x0B41,0x0B91,0x0BE1,0x0C31,0x0C81,0x0CD1,0x0D21,
 
3825
  0x0732,0x0782,0x07D2,0x0822,0x0872,0x08C2,0x0912,0x0962,
 
3826
  0x0730,0x0780,0x07D0,0x0820,0x0870,0x08C0,0x0910,0x0960,
 
3827
  0x09B0,0x0A00,0x0A50,0x0AA0,0x0AF0,0x0B40,0x0B90,0x0BE0,
 
3828
  0x0C30,0x0C80,0x0CD0,0x0D20,0x0731,0x0781,0x07D1,0x0821,
 
3829
  0x0871,0x08C1,0x0911,0x0961,0x09B1,0x0A01,0x0A51,0x0AA1,
 
3830
  0x1130,0x1180,0x11D0,0x1220,0x1270,0x12C0,0x1310,0x1360,
 
3831
  0x13B0,0x1400,0x1450,0x14A0,0x14F0,0x1540,0x1590,0x15E0,
 
3832
  0x1630,0x1680,0x16D0,0x1720,0x1131,0x1181,0x11D1,0x1221,
 
3833
  0x1271,0x12C1,0x1311,0x1361,0x13B1,0x1401,0x1451,0x14A1,
 
3834
  0x14F1,0x1541,0x1591,0x15E1,0x1631,0x1681,0x16D1,0x1721,
 
3835
  0x1132,0x1182,0x11D2,0x1222,0x1272,0x12C2,0x1312,0x1362,
 
3836
  0x09B2,0x13B2,0x0A02,0x1402,0x0A52,0x1452,0x0AA2,0x14A2,
 
3837
  0x0AF2,0x14F2,0x0B42,0x1542,0x0B92,0x1592,0x0BE2,0x15E2,
 
3838
  0x0C32,0x1632,0x0C82,0x1682,0x0CD2,0x16D2,0x0D22,0x1722,
 
3839
  0x0733,0x1133,0x0783,0x1183,0x07D3,0x11D3,0x0823,0x1223,
 
3840
  0x0873,0x1273,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3841
  0x0000,0x0000,0x0913,0x1313,0x0963,0x1363,0x09B3,0x13B3,
 
3842
  0x0A03,0x1403,0x0A53,0x1453,0x0AA3,0x14A3,0x0AF3,0x14F3,
 
3843
  0x0B43,0x1543,0x0B93,0x1593,0x0BE3,0x15E3,0x0C33,0x1633,
 
3844
  0x0C83,0x1683,0x0CD3,0x16D3,0x0D23,0x1723,0x0734,0x1134,
 
3845
  0x0784,0x1184,0x07D4,0x11D4,0x0824,0x1224,0x0874,0x1274,
 
3846
  0x08C4,0x12C4,0x0914,0x1314,0x0964,0x1364,0x09B4,0x13B4,
 
3847
  0x0A04,0x1404,0x0A54,0x1454,0x0AA4,0x14A4,0x0AF4,0x14F4,
 
3848
  0x0B44,0x0B94,0x1594,0x0BE4,0x15E4,0x0C34,0x1634,0x0C84,
 
3849
  0x1684,0x0CD4,0x16D4,0x0D24,0x1724,0x0735,0x1135,0x0000,
 
3850
  0x07D5,0x11D5,0x0825,0x1225,0x0875,0x1275,0x08C5,0x12C5,
 
3851
  0x0915,0x1315,0x0965,0x1365,0x09B5,0x13B5,0x0A05,0x1405,
 
3852
  0x0A55,0x1455,0x0AA5,0x14A5,0x0AF5,0x14F5,0x0B45,0x1545,
 
3853
  0x0B95,0x1595,0x0BE5,0x15E5,0x0C35,0x1635,0x0C85,0x1685,
 
3854
  0x0CD5,0x16D5,0x0D25,0x1725,0x0736,0x1136,0x0786,0x1186,
 
3855
  0x07D6,0x11D6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3856
  0x0A06,0x1406,0x0A56,0x1456,0x0AA6,0x14A6,0x0AF6,0x14F6,
 
3857
  0x0B46,0x1546,0x0B96,0x1596,0x0BE6,0x15E6,0x0C36,0x1636,
 
3858
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3859
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3860
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3861
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3862
  0x0000,0x0787,0x07D7,0x0827,0x0877,0x08C7,0x0917,0x0967,
 
3863
  0x09B7,0x0A07,0x0A57,0x0AA7,0x0AF7,0x0B47,0x0B97,0x0BE7,
 
3864
  0x0C37,0x0C87,0x0CD7,0x0D27,0x0738,0x0788,0x07D8,0x0828,
 
3865
  0x0878,0x08C8,0x0918,0x0968,0x09B8,0x0A08,0x0A58,0x0AA8,
 
3866
  0x0AF8,0x0B48,0x0B98,0x0BE8,0x0C38,0x0C88,0x0000,0x0000,
 
3867
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3868
  0x0000,0x1187,0x11D7,0x1227,0x1277,0x12C7,0x1317,0x1367,
 
3869
  0x13B7,0x1407,0x1457,0x14A7,0x14F7,0x1547,0x1597,0x15E7,
 
3870
  0x1637,0x1687,0x16D7,0x1727,0x1138,0x1188,0x11D8,0x1228,
 
3871
  0x1278,0x12C8,0x1318,0x1368,0x13B8,0x1408,0x1458,0x14A8,
 
3872
  0x14F8,0x1548,0x1598,0x15E8,0x1638,0x1688,0x0000,0x0000,
 
3873
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3874
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3875
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3876
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3877
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3878
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3879
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3880
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3881
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3882
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3883
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3884
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3885
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3886
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3887
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
 
3888
};
 
3889
 
 
3890
 
 
3891
/* 1E00-1FFF */
 
3892
static uint16 uni_1E00_1FFF[512]=
 
3893
{
 
3894
  0x076C,0x116C,0x07BC,0x11BC,0x080C,0x120C,0x085C,0x125C,
 
3895
  0x08AC,0x12AC,0x08FC,0x12FC,0x094C,0x134C,0x099C,0x139C,
 
3896
  0x09EC,0x13EC,0x0A3C,0x143C,0x0A8C,0x148C,0x0ADC,0x14DC,
 
3897
  0x0B2C,0x152C,0x0B7C,0x157C,0x0BCC,0x15CC,0x0C1C,0x161C,
 
3898
  0x0C6C,0x166C,0x0CBC,0x16BC,0x0D0C,0x170C,0x0D5C,0x175C,
 
3899
  0x076D,0x116D,0x07BD,0x11BD,0x080D,0x120D,0x085D,0x125D,
 
3900
  0x08AD,0x12AD,0x08FD,0x12FD,0x094D,0x134D,0x099D,0x139D,
 
3901
  0x09ED,0x13ED,0x0A3D,0x143D,0x0A8D,0x148D,0x0ADD,0x14DD,
 
3902
  0x0B2D,0x152D,0x0B7D,0x157D,0x0BCD,0x15CD,0x0C1D,0x161D,
 
3903
  0x0C6D,0x166D,0x0CBD,0x16BD,0x0D0D,0x170D,0x0D5D,0x175D,
 
3904
  0x076E,0x116E,0x07BE,0x11BE,0x080E,0x120E,0x085E,0x125E,
 
3905
  0x08AE,0x12AE,0x08FE,0x12FE,0x094E,0x134E,0x099E,0x139E,
 
3906
  0x0770,0x13EE,0x0A3E,0x143E,0x0A8E,0x148E,0x0ADE,0x14DE,
 
3907
  0x0B2E,0x152E,0x0B7E,0x157E,0x0BCE,0x15CE,0x0C1E,0x161E,
 
3908
  0x0C6E,0x166E,0x0CBE,0x16BE,0x0D0E,0x170E,0x0D5E,0x175E,
 
3909
  0x076F,0x116F,0x07BF,0x11BF,0x080F,0x120F,0x085F,0x125F,
 
3910
  0x08AF,0x12AF,0x08FF,0x12FF,0x094F,0x134F,0x099F,0x139F,
 
3911
  0x09EF,0x13EF,0x0A3F,0x143F,0x0A8F,0x148F,0x0ADF,0x14DF,
 
3912
  0x0B2F,0x152F,0x0B7F,0x157F,0x0BCF,0x15CF,0x161F,0x166F,
 
3913
  0x16BF,0x170F,0x175F,0x1170,0x0000,0x0000,0x0000,0x0000,
 
3914
  0x0900,0x1300,0x0950,0x1350,0x09A0,0x13A0,0x09F0,0x13F0,
 
3915
  0x0A40,0x1440,0x0A90,0x1490,0x0AE0,0x14E0,0x0B30,0x1530,
 
3916
  0x0B80,0x1580,0x0BD0,0x15D0,0x0C20,0x1620,0x0C70,0x1670,
 
3917
  0x0CC0,0x16C0,0x0D10,0x1710,0x0D60,0x1760,0x0771,0x1171,
 
3918
  0x07C1,0x11C1,0x0811,0x1211,0x0861,0x1261,0x08B1,0x12B1,
 
3919
  0x0901,0x1301,0x0951,0x1351,0x09A1,0x13A1,0x09F1,0x13F1,
 
3920
  0x0A41,0x1441,0x0A91,0x1491,0x0AE1,0x14E1,0x0B31,0x1531,
 
3921
  0x0B81,0x1581,0x0BD1,0x15D1,0x0C21,0x1621,0x0C71,0x1671,
 
3922
  0x0CC1,0x16C1,0x0D11,0x1711,0x0D61,0x1761,0x0772,0x1172,
 
3923
  0x07C2,0x11C2,0x0812,0x1212,0x0862,0x1262,0x08B2,0x12B2,
 
3924
  0x0902,0x1302,0x0952,0x1352,0x09A2,0x13A2,0x09F2,0x13F2,
 
3925
  0x0A42,0x1442,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3926
  0x1173,0x11C3,0x1213,0x1263,0x12B3,0x1303,0x1353,0x13A3,
 
3927
  0x0773,0x07C3,0x0813,0x0863,0x08B3,0x0903,0x0953,0x09A3,
 
3928
  0x13F3,0x1443,0x1493,0x14E3,0x1533,0x1583,0x0000,0x0000,
 
3929
  0x09F3,0x0A43,0x0A93,0x0AE3,0x0B33,0x0B83,0x0000,0x0000,
 
3930
  0x1713,0x1763,0x1174,0x11C4,0x1214,0x1264,0x12B4,0x1304,
 
3931
  0x0D13,0x0D63,0x0774,0x07C4,0x0814,0x0864,0x08B4,0x0904,
 
3932
  0x1354,0x13A4,0x13F4,0x1444,0x1494,0x14E4,0x1534,0x1584,
 
3933
  0x0954,0x09A4,0x09F4,0x0A44,0x0A94,0x0AE4,0x0B34,0x0B84,
 
3934
  0x15D4,0x1624,0x1674,0x16C4,0x1714,0x1764,0x0000,0x0000,
 
3935
  0x0BD4,0x0C24,0x0C74,0x0CC4,0x0D14,0x0D64,0x0000,0x0000,
 
3936
  0x12B5,0x1305,0x1355,0x13A5,0x13F5,0x1445,0x1495,0x14E5,
 
3937
  0x0000,0x0905,0x0000,0x09A5,0x0000,0x0A45,0x0000,0x0AE5,
 
3938
  0x1675,0x16C5,0x1715,0x1765,0x1176,0x11C6,0x1216,0x1266,
 
3939
  0x0C75,0x0CC5,0x0D15,0x0D65,0x0776,0x07C6,0x0816,0x0866,
 
3940
  0x12B6,0x1306,0x1356,0x13A6,0x13F6,0x1446,0x1496,0x14E6,
 
3941
  0x1536,0x1586,0x15D6,0x1626,0x1676,0x16C6,0x0000,0x0000,
 
3942
  0x1177,0x11C7,0x1217,0x1267,0x12B7,0x1307,0x1357,0x13A7,
 
3943
  0x0777,0x07C7,0x0817,0x0867,0x08B7,0x0907,0x0957,0x09A7,
 
3944
  0x13F7,0x1447,0x1497,0x14E7,0x1537,0x1587,0x15D7,0x1627,
 
3945
  0x09F7,0x0A47,0x0A97,0x0AE7,0x0B37,0x0B87,0x0BD7,0x0C27,
 
3946
  0x1677,0x16C7,0x1717,0x1767,0x1178,0x11C8,0x1218,0x1268,
 
3947
  0x0C77,0x0CC7,0x0D17,0x0D67,0x0778,0x07C8,0x0818,0x0868,
 
3948
  0x12B8,0x1308,0x1358,0x13A8,0x13F8,0x0000,0x1498,0x14E8,
 
3949
  0x08B8,0x0908,0x08B6,0x0906,0x09A8,0x0000,0x0000,0x0000,
 
3950
  0x0000,0x0000,0x1538,0x1588,0x15D8,0x0000,0x1678,0x16C8,
 
3951
  0x0956,0x09A6,0x09F6,0x0A46,0x0B88,0x0000,0x0000,0x0000,
 
3952
  0x1718,0x1768,0x1179,0x11C9,0x0000,0x0000,0x12B9,0x1309,
 
3953
  0x0D18,0x0D68,0x0A96,0x0AE6,0x0000,0x0000,0x0000,0x0000,
 
3954
  0x13A9,0x13F9,0x1449,0x1499,0x14E9,0x1539,0x1589,0x15D9,
 
3955
  0x09A9,0x09F9,0x0BD6,0x0C26,0x0B39,0x0000,0x0000,0x0000,
 
3956
  0x0000,0x0000,0x16C9,0x1719,0x0000,0x0000,0x11CA,0x121A,
 
3957
  0x0B36,0x0B86,0x0C76,0x0CC6,0x0D19,0x0000,0x0000,0x0000
 
3958
};
 
3959
 
 
3960
 
 
3961
/* 2160-217F */
 
3962
static uint16 uni_2160_217F[32]=
 
3963
{
 
3964
  0x0739,0x0789,0x07D9,0x0829,0x0879,0x08C9,0x0919,0x0969,
 
3965
  0x09B9,0x0A09,0x0A59,0x0AA9,0x0AF9,0x0B49,0x0B99,0x0BE9,
 
3966
  0x1139,0x1189,0x11D9,0x1229,0x1279,0x12C9,0x1319,0x1369,
 
3967
  0x13B9,0x1409,0x1459,0x14A9,0x14F9,0x1549,0x1599,0x15E9
 
3968
};
 
3969
 
 
3970
 
 
3971
/* 24B0-24EF */
 
3972
static uint16 uni_24B0_24EF[64]=
 
3973
{
 
3974
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0511,0x0512,
 
3975
  0x0513,0x0514,0x0515,0x0516,0x0517,0x0518,0x0519,0x051A,
 
3976
  0x051B,0x051C,0x051D,0x051E,0x051F,0x0520,0x0521,0x0522,
 
3977
  0x0523,0x0524,0x0525,0x0526,0x0527,0x0528,0x0529,0x052A,
 
3978
  0x0531,0x0532,0x0533,0x0534,0x0535,0x0536,0x0537,0x0538,
 
3979
  0x0539,0x053A,0x053B,0x053C,0x053D,0x053E,0x053F,0x0540,
 
3980
  0x0541,0x0542,0x0543,0x0544,0x0545,0x0546,0x0547,0x0548,
 
3981
  0x0549,0x054A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
 
3982
};
 
3983
 
 
3984
 
 
3985
/* FF20-FF5F */
 
3986
static uint16 uni_FF20_FF5F[64]=
 
3987
{
 
3988
  0x0000,0x0560,0x05B0,0x0600,0x0650,0x06A0,0x06F0,0x0740,
 
3989
  0x0790,0x07E0,0x0830,0x0880,0x08D0,0x0920,0x0970,0x09C0,
 
3990
  0x0A10,0x0A60,0x0AB0,0x0B00,0x0B50,0x0BA0,0x0BF0,0x0C40,
 
3991
  0x0C90,0x0CE0,0x0D30,0x0000,0x0000,0x0000,0x0000,0x0000,
 
3992
  0x0000,0x0F60,0x0FB0,0x1000,0x1050,0x10A0,0x10F0,0x1140,
 
3993
  0x1190,0x11E0,0x1230,0x1280,0x12D0,0x1320,0x1370,0x13C0,
 
3994
  0x1410,0x1460,0x14B0,0x1500,0x1550,0x15A0,0x15F0,0x1640,
 
3995
  0x1690,0x16E0,0x1730,0x0000,0x0000,0x0000,0x0000,0x0000
 
3996
};
 
3997
 
 
3998
 
 
3999
 
 
4000
 
 
4001
 
 
4002
/*
 
4003
  Returns
 
4004
   a number 0..15, if a valid HEX digit in lower case,
 
4005
   -1 otherwise.
 
4006
*/
 
4007
 
 
4008
static int hexlo(int x)
 
4009
{
 
4010
  static char hex_lo_digit[256]=
 
4011
  {
 
4012
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
 
4013
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
 
4014
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /*  !"#$%&'()*+,-./ */
 
4015
     0, 1, 2, 3, 4, 5, 6, 7, 8, 9,-1,-1,-1,-1,-1,-1, /* 0123456789:;<=>? */
 
4016
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* @ABCDEFGHIJKLMNO */
 
4017
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* PQRSTUVWXYZ[\]^_ */
 
4018
    -1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* `abcdefghijklmno */
 
4019
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* pqrstuvwxyz{|}~. */
 
4020
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
 
4021
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
 
4022
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
 
4023
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
 
4024
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
 
4025
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
 
4026
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
 
4027
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
 
4028
  };
 
4029
  return hex_lo_digit[(unsigned int) x];
 
4030
}
 
4031
 
 
4032
 
 
4033
/*
 
4034
  Safe characters:
 
4035
   '\0'  NULL
 
4036
   A..Z  capital letters,
 
4037
   a..z  small letters
 
4038
   0..9  digits
 
4039
   _     underscore
 
4040
*/
 
4041
static char filename_safe_char[128]=
 
4042
{
 
4043
  1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ................ */
 
4044
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ................ */
 
4045
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /*  !"#$%&'()*+,-./ */
 
4046
  1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0, /* 0123456789:;<=>? */
 
4047
  0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* @ABCDEFGHIJKLMNO */
 
4048
  1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1, /* PQRSTUVWXYZ[\]^_ */
 
4049
  0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* `abcdefghijklmno */
 
4050
  1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, /* pqrstuvwxyz{|}~. */
 
4051
};
 
4052
 
 
4053
#define MY_FILENAME_ESCAPE '@'
 
4054
 
 
4055
static int
 
4056
my_mb_wc_filename(CHARSET_INFO *cs __attribute__((unused)),
 
4057
                  my_wc_t *pwc, const uchar *s, const uchar *e)
 
4058
{
 
4059
  int byte1, byte2;
 
4060
  if (s >= e)
 
4061
    return MY_CS_TOOSMALL;
 
4062
 
 
4063
  if (*s < 128 && filename_safe_char[*s])  
 
4064
  {
 
4065
    *pwc= *s;
 
4066
    return 1;
 
4067
  }
 
4068
  
 
4069
  if (*s != MY_FILENAME_ESCAPE)
 
4070
    return MY_CS_ILSEQ;
 
4071
  
 
4072
  if (s + 3 > e)
 
4073
    return MY_CS_TOOSMALL3;
 
4074
  
 
4075
  byte1= s[1];
 
4076
  byte2= s[2];
 
4077
  
 
4078
  if (byte1 >= 0x30 && byte1 <= 0x7F &&
 
4079
      byte2 >= 0x30 && byte2 <= 0x7F)
 
4080
  {
 
4081
    int code= (byte1 - 0x30) * 80 + byte2 - 0x30;
 
4082
    if (code < 5994 && touni[code])
 
4083
    {
 
4084
      *pwc= touni[code];
 
4085
      return 3;
 
4086
    }
 
4087
    if (byte1 == '@' && byte2 == '@')
 
4088
    {
 
4089
     *pwc= 0;
 
4090
      return 3;
 
4091
    }
 
4092
  }
 
4093
  
 
4094
  if (s + 4 > e)
 
4095
    return MY_CS_TOOSMALL4;
 
4096
 
 
4097
  if ((byte1= hexlo(byte1)) >= 0 &&
 
4098
      (byte2= hexlo(byte2)) >= 0)
 
4099
  {
 
4100
    int byte3= hexlo(s[3]);
 
4101
    int byte4= hexlo(s[4]);
 
4102
    if (byte3 >=0 && byte4 >=0)
 
4103
    {
 
4104
      *pwc= (byte1 << 12) + (byte2 << 8) + (byte3 << 4) + byte4;
 
4105
      return 5;
 
4106
    }
 
4107
  }
 
4108
  
 
4109
  return MY_CS_ILSEQ;
 
4110
}
 
4111
 
 
4112
 
 
4113
static int
 
4114
my_wc_mb_filename(CHARSET_INFO *cs __attribute__((unused)),
 
4115
                  my_wc_t wc, uchar *s, uchar *e)
 
4116
{
 
4117
  int code;
 
4118
  char hex[]= "0123456789abcdef";
 
4119
  if (wc < 128 && filename_safe_char[wc])
 
4120
  {
 
4121
    *s= (uchar) wc;
 
4122
    return 1;
 
4123
  }
 
4124
  
 
4125
  if (s + 3 > e)
 
4126
    return MY_CS_TOOSMALL3;
 
4127
 
 
4128
  *s++= MY_FILENAME_ESCAPE;
 
4129
  if ((wc >= 0x00C0 && wc <= 0x05FF && (code= uni_0C00_05FF[wc - 0x00C0])) ||
 
4130
      (wc >= 0x1E00 && wc <= 0x1FFF && (code= uni_1E00_1FFF[wc - 0x1E00])) ||
 
4131
      (wc >= 0x2160 && wc <= 0x217F && (code= uni_2160_217F[wc - 0x2160])) ||
 
4132
      (wc >= 0x24B0 && wc <= 0x24EF && (code= uni_24B0_24EF[wc - 0x24B0])) ||
 
4133
      (wc >= 0xFF20 && wc <= 0xFF5F && (code= uni_FF20_FF5F[wc - 0xFF20])))
 
4134
  {
 
4135
    *s++= (code / 80) + 0x30;
 
4136
    *s++= (code % 80) + 0x30;
 
4137
    return 3;
 
4138
  }
 
4139
 
 
4140
  /* Non letter */
 
4141
  if (s + 5 > e)
 
4142
    return MY_CS_TOOSMALL5;
 
4143
 
 
4144
  *s++= hex[(wc >> 12) & 15];
 
4145
  *s++= hex[(wc >> 8) & 15];
 
4146
  *s++= hex[(wc >> 4) & 15];
 
4147
  *s++= hex[(wc)      & 15];
 
4148
  return 5;
 
4149
}
 
4150
 
 
4151
 
 
4152
static MY_COLLATION_HANDLER my_collation_filename_handler =
 
4153
{
 
4154
    NULL,               /* init */
 
4155
    my_strnncoll_utf8,
 
4156
    my_strnncollsp_utf8,
 
4157
    my_strnxfrm_utf8,
 
4158
    my_strnxfrmlen_utf8,
 
4159
    my_like_range_mb,
 
4160
    my_wildcmp_utf8,
 
4161
    my_strcasecmp_utf8,
 
4162
    my_instr_mb,
 
4163
    my_hash_sort_utf8,
 
4164
    my_propagate_complex
 
4165
};
 
4166
 
 
4167
static MY_CHARSET_HANDLER my_charset_filename_handler=
 
4168
{
 
4169
    NULL,               /* init */
 
4170
    my_ismbchar_utf8,
 
4171
    my_mbcharlen_utf8,
 
4172
    my_numchars_mb,
 
4173
    my_charpos_mb,
 
4174
    my_well_formed_len_mb,
 
4175
    my_lengthsp_8bit,
 
4176
    my_numcells_mb,
 
4177
    my_mb_wc_filename,
 
4178
    my_wc_mb_filename,
 
4179
    my_mb_ctype_mb,
 
4180
    my_caseup_str_utf8,
 
4181
    my_casedn_str_utf8,
 
4182
    my_caseup_utf8,
 
4183
    my_casedn_utf8,
 
4184
    my_snprintf_8bit,
 
4185
    my_long10_to_str_8bit,
 
4186
    my_longlong10_to_str_8bit,
 
4187
    my_fill_8bit,
 
4188
    my_strntol_8bit,
 
4189
    my_strntoul_8bit,
 
4190
    my_strntoll_8bit,
 
4191
    my_strntoull_8bit,
 
4192
    my_strntod_8bit,
 
4193
    my_strtoll10_8bit,
 
4194
    my_strntoull10rnd_8bit,
 
4195
    my_scan_8bit
 
4196
};
 
4197
 
 
4198
 
 
4199
 
 
4200
CHARSET_INFO my_charset_filename=
 
4201
{
 
4202
    17,0,0,             /* number       */
 
4203
    MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_HIDDEN,
 
4204
    "filename",         /* cs name      */
 
4205
    "filename",         /* name         */
 
4206
    "",                 /* comment      */
 
4207
    NULL,               /* tailoring    */
 
4208
    ctype_utf8,         /* ctype        */
 
4209
    to_lower_utf8,      /* to_lower     */
 
4210
    to_upper_utf8,      /* to_upper     */
 
4211
    to_upper_utf8,      /* sort_order   */
 
4212
    NULL,               /* contractions */
 
4213
    NULL,               /* sort_order_big*/
 
4214
    NULL,               /* tab_to_uni   */
 
4215
    NULL,               /* tab_from_uni */
 
4216
    my_unicase_default, /* caseinfo     */
 
4217
    NULL,               /* state_map    */
 
4218
    NULL,               /* ident_map    */
 
4219
    1,                  /* strxfrm_multiply */
 
4220
    1,                  /* caseup_multiply  */
 
4221
    1,                  /* casedn_multiply  */
 
4222
    1,                  /* mbminlen     */
 
4223
    5,                  /* mbmaxlen     */
 
4224
    0,                  /* min_sort_char */
 
4225
    0xFFFF,             /* max_sort_char */
 
4226
    ' ',                /* pad char      */
 
4227
    0,                  /* escape_with_backslash_is_dangerous */
 
4228
    &my_charset_filename_handler,
 
4229
    &my_collation_filename_handler
 
4230
};
 
4231
 
 
4232
#ifdef MY_TEST_UTF8
 
4233
#include <stdio.h>
 
4234
 
 
4235
static void test_mb(CHARSET_INFO *cs, uchar *s)
 
4236
{
 
4237
  while(*s)
 
4238
  {
 
4239
    if (my_ismbhead_utf8(cs,*s))
 
4240
    {
 
4241
      uint len=my_mbcharlen_utf8(cs,*s);
 
4242
      while(len--)
 
4243
      {
 
4244
        printf("%c",*s);
 
4245
        s++;
 
4246
      }
 
4247
      printf("\n");
 
4248
    }
 
4249
    else
 
4250
    {
 
4251
      printf("%c\n",*s);
 
4252
      s++;
 
4253
    }
 
4254
  }
 
4255
}
 
4256
 
 
4257
int main()
 
4258
{
 
4259
  char str[1024]=" utf8 test проба ПЕРА по-РУССКИ";
 
4260
  CHARSET_INFO *cs;
 
4261
 
 
4262
  test_mb(cs,(uchar*)str);
 
4263
 
 
4264
  printf("orig      :'%s'\n",str);
 
4265
 
 
4266
  my_caseup_utf8(cs,str,15);
 
4267
  printf("caseup    :'%s'\n",str);
 
4268
 
 
4269
  my_caseup_str_utf8(cs,str);
 
4270
  printf("caseup_str:'%s'\n",str);
 
4271
 
 
4272
  my_casedn_utf8(cs,str,15);
 
4273
  printf("casedn    :'%s'\n",str);
 
4274
 
 
4275
  my_casedn_str_utf8(cs,str);
 
4276
  printf("casedn_str:'%s'\n",str);
 
4277
 
 
4278
  return 0;
 
4279
}
 
4280
 
 
4281
#endif
 
4282
 
 
4283
#endif /* HAVE_CHARSET_UTF8 */
 
4284
 
 
4285
 
 
4286