libsheepy.c (2180405B)
1 // libsheepy 2 // 3 // MIT License 4 // 5 // Copyright (c) 2026 Remy Noulin 6 // 7 // Permission is hereby granted, free of charge, to any person obtaining a copy 8 // of this software and associated documentation files (the "Software"), to deal 9 // in the Software without restriction, including without limitation the rights 10 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 // copies of the Software, and to permit persons to whom the Software is 12 // furnished to do so, subject to the following conditions: 13 // 14 // The above copyright notice and this permission notice shall be included in all 15 // copies or substantial portions of the Software. 16 // 17 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 // SOFTWARE. 24 25 26 // libsheepyExportCscript is not set by default 27 // libsheepyExportCscript is set in demoScript.pp for use in the C script 28 // the header is included in the C script to avoid problems with tcc and be able to run 29 // the script from anywhere 30 #ifndef libsheepyExportCscript 31 #include "libsheepy.h" 32 #endif 33 // __USE_GNU is needed to get the definition of REG_RIP 34 //NOT NEEDED because _GNU_SOURCE is in libsheepy.h - #define __USE_GNU 35 #if (__APPLE__) 36 #define _XOPEN_SOURCE 1 37 #endif 38 #if (!(__APPLE__ || __FreeBSD__ || __TERMUX__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __sun__)) 39 //register_printf_specifier 40 #include "printf.h" 41 #endif 42 typedef enum { LOCALE_NORMAL, LOCALE_TURKIC, LOCALE_LITHUANIAN } localeType; 43 44 #define internal static 45 46 #include <sys/stat.h> 47 #include <ctype.h> 48 #include <sys/time.h> 49 #include <stdio.h> 50 #if (!(__OpenBSD__ || __HAIKU__)) 51 #include <ucontext.h> 52 #endif 53 #include <libgen.h> 54 #include <dirent.h> 55 #include <stdarg.h> 56 #include <errno.h> 57 #if (!(__OpenBSD__ || __HAIKU__)) 58 #include <wordexp.h> 59 #endif 60 #include <stdbool.h> 61 #include <string.h> 62 #include <stdlib.h> 63 #include <unistd.h> 64 #include <stdint.h> 65 #include <signal.h> 66 67 #if (__APPLE__) 68 #endif 69 #if (!(__APPLE__ || __FreeBSD__ || __TERMUX__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __sun__)) 70 #endif 71 #if (!(__FreeBSD__ || __OpenBSD__ || __DragonFly__)) 72 #else 73 #endif 74 #if (!(__TERMUX__ || __OpenBSD__ || MUSL_LIBC || __HAIKU__)) 75 #endif 76 #if ((__FreeBSD__)) 77 #endif 78 #if (!(__arm__ || __aarch64__ || __riscv || __APPLE__ || __i386__ || __FreeBSD__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __HAIKU__)) 79 internal void segfault_sigaction(int signal, siginfo_t *si, void *arg); 80 internal void segfault_sigaction(int signal UNUSED, siginfo_t *si UNUSED, void *arg UNUSED); 81 #endif 82 void cleanUpCharFree(char **val); 83 void cleanUpListFree(char* **val); 84 void cleanUpVoidFree(void **val); 85 void cleanUpFileFree(FILE **val); 86 void cleanUpFd(int *val); 87 uint64_t shStopwatch(uint8_t op); 88 int getLogSymbols(void); 89 void setLogSymbols(int mode); 90 int getMaxLogLevel(void); 91 void setMaxLogLevel(int logLevel); 92 FILE *setLogFile(char *filename); 93 void closeLogFiles(void); 94 int getLogMode(void); 95 void setLogMode(int mode); 96 bool getLogShortPath(void); 97 void setLogShortPath(bool shortPath); 98 bool getLogStdout(void); 99 void setLogStdout(bool state); 100 bool openProgLogFile(void); 101 void keepAnsiColorsInLog(bool state); 102 void _pLog(int loglevel, const char *file, const char *func, int line, const char *msg, ...); 103 #if (!(__APPLE__ || __FreeBSD__ || __TERMUX__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __sun__ || __HAIKU__)) 104 int print_k(FILE *stream, const struct printf_info *info, const void *const *args); 105 int print_K(FILE *stream, const struct printf_info *info, const void *const *args); 106 int print_k_arginfo(const struct printf_info *info UNUSED, size_t n, int *argtypes, int* size); 107 int print_b(FILE *stream, const struct printf_info *info, const void *const *args); 108 int print_b_arginfo(const struct printf_info *info UNUSED, size_t n, int *argtypes, int* size); 109 #endif 110 #if ((__APPLE__ || __FreeBSD__ || __TERMUX__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __sun__ || __HAIKU__)) 111 void initLibsheepyF(const char *progPath, initLibsheepyObjectP initF); 112 void initLibsheepyF(const char *progPath, initLibsheepyObjectP initF); 113 #endif 114 void finalizeLibsheepyCharAtExit(void); 115 int64_t getStackLimit(void); 116 int setStackLimit(int64_t stackSize); 117 int enableCoreDump(void); 118 const char *getProgName(void); 119 bool setProgName(const char *name); 120 void setDefaultProgName(void); 121 void freeProgName(void); 122 const char *getProgPath(void); 123 const char *getRealProgPath(void); 124 void freeRealProgPath(void); 125 int systemNFreeF(char *command, int line, const char *thisFunc, const char *thisFileName); 126 time_t getModificationTime(const char *path); 127 int setModificationTime(const char *path, time_t mtime); 128 bool isReadable(const char *path); 129 bool isWritable(const char *path); 130 bool isExecutable(const char *path); 131 bool equalModificationTimes(const char *path1, const char *path2); 132 time_t getCurrentUnixTime(void); 133 time_t strToUnixTime(const char *date, const char *format); 134 char *timeToS(const time_t t); 135 char *bTimeToS(char *dst, const time_t t); 136 char *bLTimeToS(char *dst, size_t dstSize, const time_t t); 137 char *timeToYMDS(const time_t t); 138 char *bTimeToYMDS(char *dst, const time_t t); 139 char *bLTimeToYMDS(char *dst, size_t dstSize, const time_t t); 140 char *getCurrentDate(void); 141 char *bGetCurrentDate(char *dst); 142 char *bLGetCurrentDate(char *dst, size_t dstSize); 143 char *getCurrentDateYMD(void); 144 char *bGetCurrentDateYMD(char *dst); 145 char *bLGetCurrentDateYMD(char *dst, size_t dstSize); 146 char *shDirname(const char *path); 147 char *bDirname(char *path); 148 char *bLDirname(char *path, size_t pathSize); 149 #if (__OpenBSD__ || __HAIKU__) 150 char *expandHome(const char* path); 151 #else 152 char *expandHome(const char* path); 153 #endif 154 #if (__OpenBSD__ || __HAIKU__) 155 char *iExpandHome(char **path); 156 #else 157 char *iExpandHome(char **path); 158 #endif 159 #if (__OpenBSD__ || __HAIKU__) 160 char *bExpandHome(char *path); 161 #else 162 char *bExpandHome(char *path); 163 #endif 164 #if (__OpenBSD__ || __HAIKU__) 165 char *bLExpandHome(char *path, size_t pathSize); 166 #else 167 char *bLExpandHome(char *path, size_t pathSize); 168 #endif 169 char *normalizePath(const char *path); 170 char *iNormalizePath(char **path); 171 char *bNormalizePath(char *path); 172 char *bLNormalizePath(char *path, size_t pathSize); 173 char *relPath(const char *path, const char *start); 174 char *iRelPath(char **path, const char *start); 175 char *bRelPath(char *dest, const char *path, const char *start); 176 char *bLRelPath(char *dest, size_t destSize, char *path, const char *start); 177 char *getHomePath(void); 178 char *bGetHomePath(char *path); 179 char *bLGetHomePath(char *path, size_t pathSize); 180 const char *getCHomePath(void); 181 char *getCwd(void); 182 char *bLGetCwd(char *path, size_t pathSize); 183 int chDir(const char *path); 184 bool isDir(const char *path); 185 char *shReadlink(const char *path); 186 char *endlink(const char *path); 187 bool isLink(const char *path); 188 bool fileExists(const char *filePath); 189 bool fileChmod(const char *filePath, mode_t mode); 190 ssize_t fileSize(const char *filePath); 191 ssize_t fileSizeFP(FILE *fp); 192 void *readFileToS(const char *filePath); 193 void *readStreamToS(FILE *fp); 194 void *bReadFileToS(const char *filePath, void *dst); 195 void *bReadStreamToS(FILE *fp, void *dst); 196 void *bLReadFileToS(const char *filePath, void *dst, size_t dstSize); 197 void *bLReadStreamToS(FILE *fp, void *dst, size_t dstSize); 198 ssize_t readFile(const char *filePath, void **buffer); 199 ssize_t bReadFile(const char *filePath, void *buffer); 200 ssize_t bLReadFile(const char *filePath, void *buffer, size_t dstSize); 201 int writeFileS(const char *filePath, const char *string); 202 int writeFile(const char *filePath, void *buffer, size_t len); 203 int writeStreamS(FILE *fp, const char *string); 204 int writeLStream(FILE *fp, void *buffer, size_t len); 205 bool appendFileS(const char *filePath, const char *string); 206 bool appendFile(const char *filePath, void *buffer, size_t len); 207 char **walkDir(const char* dirPath); 208 internal void walkADir(const char *dirPath, char ***list); 209 char **walkDirDir(const char* dirPath); 210 internal void walkADirDir(const char *dirPath, char ***list); 211 char **readDir(const char *dirPath); 212 char **readDirDir(const char *dirPath); 213 char **walkDirAll(const char* dirPath); 214 internal void walkADirAll(const char *dirPath, char ***list); 215 char **readDirAll(const char *dirPath); 216 mode_t getUmask(void); 217 mode_t getCurrentPermissions(void); 218 int mkdirParents(const char* path); 219 int rmAll(const char* path); 220 int rmADir(const char *dirPath); 221 int copy(const char* src, const char* dst); 222 int copyFile(const char* src, const char* dst); 223 int copyADir(const char *src, const char *dst, const char *path); 224 int shRename(const char* src, const char* dst); 225 int shMove(const char* src, const char* dst); 226 void setSoftwareRandom(void); 227 void setHardwareRandom(void); 228 int randomUrandomOpen(void); 229 void randomUrandomClose(void); 230 uint64_t randomWord(void); 231 uint64_t randomWordFromHW(void); 232 uint64_t randomChoice(uint64_t range); 233 char *randomS(uint64_t length); 234 char *bRandomS(char *dst, size_t dstSize); 235 char *randomAlphaNumS(uint64_t length); 236 char *bRandomAlphaNumS(char *dst, size_t dstSize); 237 char *readS(void); 238 char *bLReadS(char *dst, size_t dstSize); 239 UNUSED local char *shGetpass(void); 240 char *readPasswordS(void); 241 bool zeroS(char *string); 242 bool zeroBuf(void *buf, size_t len); 243 void *memdup(const void *buf, size_t size); 244 void readEnter(void); 245 char *readLine(FILE *fp); 246 void freeManySF(char *paramType, ...); 247 char *dupS(const char *string); 248 void shPrintfS(const char *fmt, ...); 249 void shEPrintfS(const char *fmt, ...); 250 void logNFree(char *s); 251 void loghex(const void *buf, size_t len); 252 char *toHexS(const void *buf, size_t len); 253 char *toHexSepS(const void *buf, size_t len, const char *separator); 254 char *toHexHeadSepS(const void *buf, size_t len, const char *head, const char *separator); 255 char *strCpy(char *restrict dst, const char *restrict src); 256 char *strNCpy(char *restrict dst, const char *restrict src, size_t srcSize); 257 char *strLCpy(char *restrict dst, size_t dstSize, const char *restrict src); 258 char *strCat(char *restrict dst, const char *restrict src); 259 char *strNCat(char *restrict dst, const char *restrict src, size_t srcLen); 260 char *strLCat(char *restrict dst, size_t dstSize, const char *restrict src); 261 char *strLNCat(char *restrict dst, size_t dstSize, const char *restrict src, size_t srcLen); 262 char *catSF(const char *paramType, ...); 263 char *iCatSF(char *dst, const char *paramType, ...); 264 char *bLCatSF(char *dst, size_t dstSize, const char *paramType, ...); 265 char *formatS(const char *fmt, ...); 266 char *bFormatS(char *string, const char *fmt, ...); 267 char *bLFormatS(char *string, size_t stringSize, const char *fmt, ...); 268 char *appendS(const char *string1, const char *string2); 269 char *appendCharS(const char *string1, char c); 270 char *appendSChar(char c, const char *string2); 271 char *iAppendS(char **string1, const char *string2); 272 char *iAppendCharS(char **string1, char c); 273 char *iAppendNFreeS(char **string1, char *string2); 274 char *iAppendManySF(char **string, const char *paramType, ...); 275 char *bAppendManySF(char *string, const char *paramType, ...); 276 char *bLAppendManySF(char *string, size_t stringSize, const char *paramType, ...); 277 char *prependS(const char *string1, const char *string2); 278 char *prependCharS(const char *string1, char c); 279 char *prependSChar(char c, const char *string2); 280 char *iPrependS(char **string1, const char *string2); 281 char *iPrependCharS(char **string1, char c); 282 char *iPrependNFreeS(char **string1, char *string2); 283 char *bPrependS(char *string1, const char *string2); 284 char *bLPrependS(char *string1, size_t string1Size, const char *string2); 285 char* replaceS(const char *s, const char *olds, const char *news, size_t max ); 286 #define replaceS_max(s,olds,news) replaceS(s,olds,news, 0) 287 char *replaceCharSS(const char *s, char olds, const char *news, size_t max); 288 char *replaceSCharS(const char *s, const char *olds, char news, size_t max); 289 char *replaceCharCharS(const char *s, char olds, char news, size_t max); 290 size_t replaceSLen(const char *s, const char *olds, const char *news, size_t max); 291 char* iReplaceS(char **s, const char *olds, const char *news, size_t max ); 292 #define iReplaceS_max(s,olds,news) iReplaceS(s,olds,news, 0) 293 char *iReplaceCharSS(char **s, char olds, const char *news, size_t max); 294 char *iReplaceSCharS(char **s, const char *olds, char news, size_t max); 295 char *iReplaceCharCharS(char **s, char olds, char news, size_t max); 296 char* bReplaceS(char *s, const char *olds, const char *news, size_t max ); 297 #define bReplaceS_max(s,olds,news) bReplaceS(s,olds,news, 0) 298 char* bLReplaceS(char *s, size_t sSize, const char *olds, const char *news, size_t max); 299 char *replaceManySF(const char *paramType, ...); 300 char *iReplaceManySF(char **s, char *paramType, ...); 301 char *bReplaceManySF(char *s, char *paramType, ...); 302 char *bLReplaceManySF(char *s, size_t sSize, char *paramType, ...); 303 char* icReplaceS(const char *s, const char *olds, const char *news, size_t max ); 304 #define icReplaceS_max(s,olds,news) icReplaceS(s,olds,news, 0) 305 char *icReplaceCharSS(const char *s, char olds, const char *news, size_t max); 306 char *icReplaceSCharS(const char *s, const char *olds, char news, size_t max); 307 char *icReplaceCharCharS(const char *s, char olds, char news, size_t max); 308 char* iicReplaceS(char **s, const char *olds, const char *news, size_t max ); 309 #define iicReplaceS_max(s,olds,news) iicReplaceS(s,olds,news, 0) 310 char *iicReplaceCharSS(char **s, char olds, const char *news, size_t max); 311 char *iicReplaceSCharS(char **s, const char *olds, char news, size_t max); 312 char *iicReplaceCharCharS(char **s, char olds, char news, size_t max); 313 char* bicReplaceS(char *s, const char *olds, const char *news, size_t max ); 314 #define bicReplaceS_max(s,olds,news) bicReplaceS(s,olds,news, 0) 315 char* bLicReplaceS(char *s, size_t sSize, const char *olds, const char *news, size_t max); 316 char *icReplaceManySF(const char *paramType, ...); 317 char *iicReplaceManySF(char **s, char *paramType, ...); 318 char *bicReplaceManySF(char *s, char *paramType, ...); 319 char *bLicReplaceManySF(char *s, size_t sSize, char *paramType, ...); 320 bool eqS(const char *string1, const char *string2); 321 bool eqCharS(char c, const char *string2); 322 bool eqSChar(const char *string1, char c); 323 bool eqIS(const char *string1, const char *string2, int64_t index); 324 bool eqICharS(const char *string1, char c, int64_t index); 325 bool startsWithS(const char *string1, const char *string2); 326 bool startsWithCharS(const char *string1, char c); 327 bool endsWithS(const char *string1, const char *string2); 328 bool endsWithCharS(const char *string1, char c); 329 ssize_t countS(const char *s, const char *needle); 330 ssize_t countCharS(const char *s, char c); 331 bool icEqS(const char *string1, const char *string2); 332 bool icEqCharS(char c, const char *string2); 333 bool icEqSChar(const char *string1, char c); 334 bool icEqIS(const char *string1, const char *string2, int64_t index); 335 bool icEqICharS(const char *string1, char c, int64_t index); 336 bool icStartsWithS(const char *string1, const char *string2); 337 bool icStartsWithCharS(const char *string1, char c); 338 bool icEndsWithS(const char *string1, const char *string2); 339 bool icEndsWithCharS(const char *string1, char c); 340 ssize_t icCountS(const char *s, const char *needle); 341 ssize_t icCountCharS(const char *s, char c); 342 bool hasCtrlChar(const char *string); 343 char *stripCtrlS(const char *string); 344 char *iStripCtrlS(char **string); 345 char *bStripCtrlS(char *string); 346 char *stripColorsS(const char *string); 347 char *iStripColorsS(char **string); 348 char *bStripColorsS(char *string); 349 char* quoteS(const char *s, char delim); 350 char* bQuoteS(char *dest, const char *s, char delim); 351 char* bLQuoteS(char *dest, size_t destSize, const char *s, char delim); 352 size_t quoteLenS(const char *s, char delim); 353 char* escapeS(const char *s, char delim); 354 char* bEscapeS(char *dest, const char *s, char delim); 355 char* bLEscapeS(char *dest, size_t destSize, const char *s, char delim); 356 size_t escapeLenS(const char *s, char delim); 357 char nibbleToHex(u8 n); 358 char* cEscapeS(const char *S); 359 char* bCEscapeS(char *dest, const char *S); 360 char* bLCEscapeS(char *dest, size_t destSize, const char *S); 361 size_t cEscapeLenS(const char *s); 362 bool isNumber(const char *string); 363 bool isInt(const char *string); 364 int64_t parseInt(const char *string); 365 int64_t parseIntChar(char c); 366 int64_t parseI64(const char *string); 367 int64_t parseI64Char(char c); 368 double parseDouble(const char *string); 369 double parseDoubleChar(char c); 370 uint64_t parseHex(const char *string); 371 char *intToS(int64_t n); 372 char *bIntToS(char *s, int64_t n); 373 char *doubleToS(double n); 374 char *bDoubleToS(char *s, double n); 375 size_t lenS(const char *string); 376 size_t sizeS(const char *string); 377 char *upperS(const char *string); 378 char *iUpperS(char **string); 379 char *bUpperS(char *string); 380 char *lowerS(const char *string); 381 char *iLowerS(char **string); 382 char *bLowerS(char *string); 383 char *trimS(const char *string); 384 char *iTrimS(char **string); 385 char *bTrimS(char *string); 386 char *lTrimS(const char *string); 387 char *iLTrimS(char **string); 388 char *bLTrimS(char *string); 389 char *rTrimS(const char *string); 390 char *iRTrimS(char **string); 391 char *bRTrimS(char *string); 392 char *uniqS(const char *string, char c); 393 char *iUniqS(char **string, char c); 394 char *bUniqS(char *string, char c); 395 char *icUniqS(const char *string, char c); 396 char *iicUniqS(char **string, char c); 397 char *bicUniqS(char *string, char c); 398 char *repeatS(const char *string, size_t count); 399 char *iRepeatS(char **string, size_t count); 400 char *bRepeatS(char *dest, const char *string, size_t count); 401 char *bLRepeatS(char *dest, size_t destSize, const char *string, size_t count); 402 char *repeatCharS(char c, size_t count); 403 char *bRepeatCharS(char *dest, char c, size_t count); 404 char *bLRepeatCharS(char *dest, size_t destSize, char c, size_t count); 405 ssize_t repeatLenS(const char *string, size_t count); 406 char *ellipsisStartS(const char *string, size_t targetLength, const char *ellipsisString); 407 char *iEllipsisStartS(char **string, size_t targetLength, const char *ellipsisString); 408 char *bEllipsisStartS(char *dest, const char *string, size_t targetLength, const char *ellipsisString); 409 char *bLEllipsisStartS(char *dest, size_t destSize, const char *string, size_t targetLength, const char *ellipsisString); 410 char *ellipsisStartCharS(const char *string, size_t targetLength, char ellipsisChar); 411 char *iEllipsisStartCharS(char **string, size_t targetLength, char ellipsisChar); 412 char *bEllipsisStartCharS(char *dest, const char *string, size_t targetLength, char ellipsisChar); 413 char *bLEllipsisStartCharS(char *dest, size_t destSize, const char *string, size_t targetLength, char ellipsisChar); 414 ssize_t ellipsisLenS(const char *string, size_t targetLength, const char *ellipsisString); 415 char *ellipsisEndS(const char *string, size_t targetLength, const char *ellipsisString); 416 char *iEllipsisEndS(char **string, size_t targetLength, const char *ellipsisString); 417 char *bEllipsisEndS(char *dest, const char *string, size_t targetLength, const char *ellipsisString); 418 char *bLEllipsisEndS(char *dest, size_t destSize, const char *string, size_t targetLength, const char *ellipsisString); 419 char *ellipsisEndCharS(const char *string, size_t targetLength, char ellipsisChar); 420 char *iEllipsisEndCharS(char **string, size_t targetLength, char ellipsisChar); 421 char *bEllipsisEndCharS(char *dest, const char *string, size_t targetLength, char ellipsisChar); 422 char *bLEllipsisEndCharS(char *dest, size_t destSize, const char *string, size_t targetLength, char ellipsisChar); 423 char *padStartS(const char *string, size_t targetLength, const char *padString); 424 char *iPadStartS(char **string, size_t targetLength, const char *padString); 425 char *bPadStartS(char *dest, const char *string, size_t targetLength, const char *padString); 426 char *bLPadStartS(char *dest, size_t destSize, const char *string, size_t targetLength, const char *padString); 427 char *padStartCharS(const char *string, size_t targetLength, char padChar); 428 char *iPadStartCharS(char **string, size_t targetLength, char padChar); 429 char *bPadStartCharS(char *dest, const char *string, size_t targetLength, char padChar); 430 char *bLPadStartCharS(char *dest, size_t destSize, const char *string, size_t targetLength, char padChar); 431 ssize_t padStartLenS(const char *string, size_t targetLength, const char *padString); 432 char *padEndS(const char *string, size_t targetLength, const char *padString); 433 char *iPadEndS(char **string, size_t targetLength, const char *padString); 434 char *bPadEndS(char *dest, const char *string, size_t targetLength, const char *padString); 435 char *bLPadEndS(char *dest, size_t destSize, const char *string, size_t targetLength, const char *padString); 436 char *padEndCharS(const char *string, size_t targetLength, char padChar); 437 char *iPadEndCharS(char **string, size_t targetLength, char padChar); 438 char *bPadEndCharS(char *dest, const char *string, size_t targetLength, char padChar); 439 char *bLPadEndCharS(char *dest, size_t destSize, const char *string, size_t targetLength, char padChar); 440 ssize_t padEndLenS(const char *string, size_t targetLength, const char *padString); 441 char getS(const char *string, int64_t index); 442 char *setS(char *string, int64_t index, char c); 443 char *swapS(char *string, int64_t index1, int64_t index2); 444 char *iSwapS(char **string, int64_t index1, int64_t index2); 445 char *bSwapS(char *string, int64_t index1, int64_t index2); 446 char *bLSwapS(char *string, size_t size, int64_t index1, int64_t index2); 447 char *sliceS(const char *string, int64_t start, int64_t end); 448 char *iSliceS(char **string, int64_t start, int64_t end); 449 char *bSliceS(char *string, int64_t start, int64_t end); 450 char *bLSliceS(char *string, size_t stringSize, int64_t start, int64_t end); 451 char *cropS(char *string, int64_t start, int64_t end); 452 char *iCropS(char **string, int64_t start, int64_t end); 453 char cropElemS(char *string, int64_t index); 454 char iCropElemS(char **string, int64_t index); 455 char *insertS(const char *string, int64_t index, const char *toInsert); 456 char *insertNFreeS(const char *string, int64_t index, char *toInsert); 457 char *iInsertS(char **string, int64_t index, const char *toInsert); 458 char *iInsertNFreeS(char **string, int64_t index, char *toInsert); 459 char *bInsertS(char *string, int64_t index, const char *toInsert); 460 char *bLInsertS(char *string, size_t stringSize, int64_t index, const char *toInsert); 461 char *injectS(const char *string, int64_t index, char toInject); 462 char *iInjectS(char **string, int64_t index, char toInject); 463 char *bInjectS(char *string, int64_t index, char toInject); 464 char *bLInjectS(char *string, size_t stringSize, int64_t index, char toInject); 465 char *delS(const char *string, int64_t start, int64_t end); 466 char *iDelS(char **string, int64_t start, int64_t end); 467 char *bDelS(char *string, int64_t start, int64_t end); 468 char *bLDelS(char *string, size_t stringSize, int64_t start, int64_t end); 469 char *delElemS(const char *string, int64_t index); 470 char *iDelElemS(char **string, int64_t index); 471 char *bDelElemS(char *string, int64_t index); 472 char *bLDelElemS(char *string, size_t stringSize, int64_t index); 473 char *findS(const char *string, const char *needle); 474 char *findCharS(const char *string, char c); 475 ssize_t indexOfS(const char *string, const char *needle); 476 ssize_t indexOfCharS(const char *string, char c); 477 bool hasS(const char *string, const char *needle); 478 bool hasCharS(const char *string, char c); 479 char *icFindS(const char *string, const char *needle); 480 char *icFindCharS(const char *string, char c); 481 ssize_t icIndexOfS(const char *string, const char *needle); 482 ssize_t icIndexOfCharS(const char *string, char c); 483 bool icHasS(const char *string, const char *needle); 484 bool icHasCharS(const char *string, char c); 485 char *tokS(char *s, const char *delim, char **saveptr); 486 char *icTokS(char *s, const char *delim, char **saveptr); 487 size_t lenUTF8(const char *s); 488 size_t bLLenUTF8(const char *s, size_t maxSize); 489 bool isUTF8(const char * string); 490 bool bLIsUTF8(const char * string, size_t stringSize); 491 bool isCodeUTF8(const char *code); 492 const char *nextUTF8(const char *utf8); 493 const char *bLNextUTF8(const char *string, size_t utf8Size, const char *utf8); 494 const char *findNextUTF8(const char *string, size_t utf8Size, const char *utf8); 495 const char *prevUTF8(const char *utf8); 496 const char *bPrevUTF8(const char *string, const char *utf8); 497 local const char *bPrevUTF8Tiny(const char *string, const char *utf8); 498 local char *bPrevRWUTF8Tiny(const char *string, char *utf8); 499 const char *idx2PtrUTF8(const char *utf8, int64_t index); 500 local char *idx2PtrRWUTF8(char *utf8, int64_t index); 501 const char *bLIdx2PtrUTF8(const char *utf8, size_t utf8Size, int64_t index); 502 int64_t ptr2IdxUTF8(const char *utf8, const char *pos); 503 int64_t bPtr2IdxUTF8(const char *start, const char *utf8, const char *pos); 504 int64_t bLPtr2IdxUTF8(const char *utf8, size_t utf8Size, const char *pos); 505 int64_t bLPtr2NegIdxUTF8(const char *utf8, size_t utf8Size, const char *pos); 506 char *makeValidUTF8(const char *utf8); 507 char *bMakeValidUTF8(char *utf8); 508 char *nMakeValidUTF8(const char *utf8, size_t utf8Len); 509 char *bNMakeValidUTF8(char *dst, const char *utf8, size_t utf8Len); 510 char *bLMakeValidUTF8(char *dst, size_t dstSize, const char *utf8); 511 char *bLNMakeValidUTF8(char *dst, size_t dstSize, const char *utf8, size_t utf8Len); 512 char *strNCpyUTF8(char *dst, const char *src, size_t srcLen); 513 char *strLCpyUTF8(char *dst, size_t dstSize, const char *src); 514 char *strNCatUTF8(char *dst, const char *src, size_t srcLen); 515 char *strLCatUTF8(char *dst, size_t dstSize, const char *src); 516 char *strLNCatUTF8(char *dst, size_t dstSize, const char *src, size_t srcLen); 517 char* icReplaceUTF8(const char UNUSED *s, const char UNUSED *olds, const char UNUSED *news, size_t UNUSED max ); 518 #define icReplaceUTF8_max(s,olds,news) icReplaceUTF8(s,olds,news, 0) 519 char *icReplaceCharSUTF8(const char *s UNUSED, char olds UNUSED, const char *news UNUSED, size_t max UNUSED); 520 char *icReplaceSCharUTF8(const char *s UNUSED, const char *olds UNUSED, char news UNUSED, size_t max UNUSED); 521 char* iicReplaceUTF8(char UNUSED **s, const char UNUSED *olds, const char UNUSED *news, size_t UNUSED max ); 522 #define iicReplaceUTF8_max(s,olds,news) iicReplaceUTF8(s,olds,news, 0) 523 char *iicReplaceCharSUTF8(char **s UNUSED, char olds UNUSED, const char *news UNUSED, size_t max UNUSED); 524 char *iicReplaceSCharUTF8(char **s UNUSED, const char *olds UNUSED, char news UNUSED, size_t max UNUSED); 525 char* bicReplaceUTF8(char UNUSED *s, const char UNUSED *olds, const char UNUSED *news, size_t UNUSED max ); 526 #define bicReplaceUTF8_max(s,olds,news) bicReplaceUTF8(s,olds,news, 0) 527 char* bLicReplaceUTF8(char UNUSED *s, size_t UNUSED sSize, const char UNUSED *olds, const char UNUSED *news, size_t max UNUSED); 528 char *icReplaceManyUTF8F(const char *paramType UNUSED, ...); 529 char *iicReplaceManyUTF8F(char **s UNUSED, char *paramType UNUSED, ...); 530 char *bicReplaceManyUTF8F(char *s UNUSED, char *paramType UNUSED, ...); 531 char *bLicReplaceManyUTF8F(char *s UNUSED, size_t sSize UNUSED, char *paramType UNUSED, ...); 532 bool eqIUTF8(const char *string1, const char *string2, int64_t index); 533 bool eqICharUTF8(const char *string1, char c, int64_t index); 534 bool icEqUTF8(const char *string1, const char *string2); 535 bool icEqCharUTF8(char c, const char *string2); 536 bool icEqUTF8Char(const char *string1, char c); 537 bool icEqIUTF8(const char *string1 UNUSED, const char *string2 UNUSED, int64_t index UNUSED); 538 bool icEqICharUTF8(const char *string1 UNUSED, char c UNUSED, int64_t index UNUSED); 539 bool icStartsWithUTF8(const char *string1, const char *string2); 540 bool icEndsWithUTF8(const char *string1, const char *string2); 541 ssize_t icCountUTF8(const char *s, const char *needle); 542 internal localeType getLocaleType(void); 543 rune code2RuneUTF8(const char *code); 544 rune code2RuneLUTF8(const char *code, uint8_t *n); 545 size_t bRune2CodeUTF8(char *dst, rune c); 546 uint8_t runeLenUTF8(rune r); 547 internal size_t decompose_hangul(rune s, rune *r); 548 internal const char *find_decomposition (rune ch); 549 internal size_t runeFullyDecompose(rune ch, rune *result, size_t resultLen); 550 internal size_t output_marks(const char **p_inout, char *dst, bool remove_dot); 551 internal size_t output_special_case(char *dst, int offset, int type, int which); 552 rune toupperUTF8(rune c); 553 internal size_t _upperUTF8(char *dst, const char *utf8, localeType lcl); 554 char *upperUTF8(const char *utf8); 555 char *iUpperUTF8(char **utf8); 556 char *bUpperUTF8(char *utf8 UNUSED); 557 local int runeCombiningClass (rune uc); 558 internal bool has_more_above (const char *str); 559 rune tolowerUTF8(rune c); 560 internal size_t _lowerUTF8(char *dst, const char *utf8, localeType lcl); 561 char *lowerUTF8(const char *utf8); 562 char *iLowerUTF8(char **utf8); 563 char *bLowerUTF8(char *string UNUSED); 564 char *casefoldUTF8(const char *utf8); 565 char *uniqUTF8(const char *string, const char *code); 566 char *iUniqUTF8(char **string, const char *code); 567 char *bUniqUTF8(char *string, const char *code); 568 char *icUniqUTF8(const char *string UNUSED, const char *code UNUSED); 569 char *iicUniqUTF8(char **string UNUSED, const char *code UNUSED); 570 char *bicUniqUTF8(char *string UNUSED, char c UNUSED); 571 rune getUTF8(const char *string, int64_t index); 572 char *setUTF8(char *string, int64_t index, rune c); 573 char *sliceUTF8(const char *string, int64_t start, int64_t end); 574 char *iSliceUTF8(char **string, int64_t start, int64_t end); 575 char *bSliceUTF8(char *string, int64_t start, int64_t end); 576 char *bLSliceUTF8(char *string, size_t stringSize, int64_t start, int64_t end); 577 char *insertUTF8(const char *string, int64_t index, const char *toInsert); 578 char *insertNFreeUTF8(const char *string, int64_t index, char *toInsert); 579 char *iInsertUTF8(char **string, int64_t index, const char *toInsert); 580 char *iInsertNFreeUTF8(char **string, int64_t index, char *toInsert); 581 char *bInsertUTF8(char *string, int64_t index, const char *toInsert); 582 char *bLInsertUTF8(char *string, size_t stringSize, int64_t index, const char *toInsert); 583 char *delUTF8(const char *string, int64_t start, int64_t end); 584 char *iDelUTF8(char **string, int64_t start, int64_t end); 585 char *bDelUTF8(char *string, int64_t start, int64_t end); 586 char *bLDelUTF8(char *string, size_t stringSize, int64_t start, int64_t end); 587 ssize_t indexOfUTF8(const char *string, const char *needle); 588 ssize_t icIndexOfUTF8(const char *string UNUSED, const char *needle UNUSED); 589 bool icHasUTF8(const char *string, const char *needle); 590 char *icTokUTF8(const char *s UNUSED, const char *delim UNUSED, char **saveptr UNUSED); 591 char **icSplitUTF8(const char *string UNUSED, const char* delim UNUSED); 592 char **icExtractUTF8(const char *string UNUSED, const char* delim1 UNUSED, const char* delim2 UNUSED); 593 char **icExtractCharSUTF8(const char *string UNUSED, char delim1 UNUSED, const char* delim2 UNUSED); 594 char **icExtractSCharUTF8(const char *string UNUSED, const char* delim1 UNUSED, char delim2 UNUSED); 595 internal int icListSortUTF8Cmp(const void * a, const void * b); 596 char **icListSortUTF8(char **list); 597 char **iicListSortUTF8(char ***list); 598 bool icListEqUTF8(char **list1, char **list2); 599 bool icListHasUTF8(char **list, const char *string); 600 ssize_t icListIndexOfUTF8(char **list, const char *string); 601 ssize_t icListBinarySearchUTF8(char **list, const char *string); 602 char **icListUniqUTF8(char **list); 603 char **iicListUniqUTF8(char ***list); 604 char *emptySF(void); 605 char *iEmptySF(char **string); 606 bool isEmptyS(const char *string); 607 bool isBlankS(const char *string); 608 ssize_t intIndex(int64_t index, int64_t length); 609 char **listEmptySF(void); 610 char **iListEmptySF(char ***list); 611 bool listIsEmptyS(char **list); 612 bool listIsBlankS(char **list); 613 char **listCreateSF(const char *paramType, ...); 614 char **listFromArrayS(char **array, size_t size); 615 char **listFromCArrayS(const char **array, size_t size); 616 char **listPushS(char ***list, const char *s); 617 char **listPushCharS(char ***list, char c); 618 char **iListPushS(char ***list, char *s); 619 char *listPopS(char ***list); 620 char **listPrependS(char ***list, const char *s); 621 char **listPrependCharS(char ***list, char c); 622 char **iListPrependS(char ***list, char *s); 623 char *listDequeueS(char ***list); 624 void listFreeS(char **list); 625 void listFreeManySF(char **paramType, ...); 626 size_t listLengthS(char **list); 627 size_t listLengthCS(const char **list); 628 ssize_t listStrLengthS(char **list); 629 ssize_t listIntIndexS(char **list, int64_t index); 630 char **listAddrS(char **list, int64_t index); 631 char *listGetS(char **list, int64_t index); 632 char *iListGetS(char **list, int64_t index); 633 char *listGetCS(const char **list, int64_t index); 634 const char *iListGetCS(const char **list, int64_t index); 635 char **listSetS(char **list, int64_t index, const char *s); 636 char **listSetCharS(char **list, int64_t index, char c); 637 char **iListSetS(char **list, int64_t index, char *s); 638 char **listSwapS(char **list, int64_t index1, int64_t index2); 639 char **iListSwapS(char **list, int64_t index1, int64_t index2); 640 char **split(const char *string, const char* delim); 641 char **splitS(const char *string, const char* delim); 642 char **splitChar(const char *string, char delim); 643 char **icSplit(const char *string, const char* delim); 644 char **icSplitS(const char *string, const char* delim); 645 char **icSplitChar(const char *string, char delim); 646 ssize_t joinLength(char **list, const char* delim); 647 char *join(char **list, const char* delim); 648 char *joinS(char **list, const char* delim); 649 char *joinCS(const char **list, const char* delim); 650 char *joinChar(char **list, char delim); 651 char *bJoin(char *string, char **list, const char* delim); 652 char *bJoinChar(char *string, char **list, char delim); 653 char *bLJoin(char *string, size_t stringSize, char **list, const char* delim); 654 char *bLJoinChar(char *string, size_t stringSize, char **list, char delim); 655 char **extractS(const char *string, const char* delim1, const char* delim2); 656 char **extractCharSS(const char *string, char delim1, const char* delim2); 657 char **extractSCharS(const char *string, const char* delim1, char delim2); 658 char **extractCharCharS(const char *string, char delim1, char delim2); 659 char **icExtractS(const char *string, const char* delim1, const char* delim2); 660 char **icExtractCharSS(const char *string, char delim1, const char* delim2); 661 char **icExtractSCharS(const char *string, const char* delim1, char delim2); 662 char **icExtractCharCharS(const char *string, char delim1, char delim2); 663 char **listDupS(char **list); 664 char **listDupCS(const char **list); 665 char **iListDupS(char **list); 666 char **listReverseS(char **list); 667 char **iListReverseS(char ***list); 668 char **listCatSF(char **paramType, ...); 669 char **listAppendS(char ***list1, char **list2); 670 char **iListAppendS(char ***list1, char **list2); 671 char **iListAppendNSmashS(char ***list1, char **list2); 672 char **listShiftS(char ***list1, char **list2); 673 char **iListShiftS(char ***list1, char **list2); 674 char **iListShiftNSmashS(char ***list1, char **list2); 675 char **listAddS(char **list1, char **list2); 676 char **listAddCS(char **list1, const char **list2); 677 char **listSliceS(char **list, int64_t start, int64_t end); 678 char **iListCopyS(char **list, int64_t start, int64_t end); 679 char **iListSliceS(char ***list, int64_t start, int64_t end); 680 char **listCropS(char **list, int64_t start, int64_t end); 681 char **iListCropS(char ***list, int64_t start, int64_t end); 682 char *listCropElemS(char **list, int64_t index); 683 char *iListCropElemS(char ***list, int64_t index); 684 char **listInsertS(char **list, int64_t index, char **toInsert); 685 char **iListInsertS(char ***list, int64_t index, char **toInsert); 686 char **iListInsertNFreeS(char ***list, int64_t index, char **toInsert); 687 char **listInjectS(char **list, int64_t index, char *toInject); 688 char **listInjectCharS(char **list, int64_t index, char toInject); 689 char **iListInjectS(char ***list, int64_t index, char *toInject); 690 char **iListInjectCharS(char ***list, int64_t index, char toInject); 691 char **listDelS(char **list, int64_t start, int64_t end); 692 char **iListDelS(char ***list, int64_t start, int64_t end); 693 char **iListRemoveS(char ***list, int64_t start, int64_t end); 694 char **listDelElemS(char **list, int64_t index); 695 char **iListDelElemS(char ***list, int64_t index); 696 char **iListRemoveElemS(char ***list, int64_t index); 697 int listPrintS(char **list); 698 int listPrintCS(const char **list); 699 internal int listSortSCmp(const void * a, const void * b); 700 char **listSortS(char **list); 701 char **iListSortS(char ***list); 702 char **listSortFS(char **list, shCmpt compareFunction); 703 char **iListSortFS(char ***list, shCmpt compareFunction); 704 internal int icListSortSCmp(const void * a, const void * b); 705 char **icListSortS(char **list); 706 char **iicListSortS(char ***list); 707 char **readText(const char *filePath); 708 char **readStream(FILE *fp); 709 bool writeText(const char *filePath, char **list); 710 bool writeCText(const char *filePath, const char **list); 711 bool writeStream(FILE *fp, char **list); 712 bool writeCStream(FILE *fp, const char **list); 713 bool appendText(const char *filePath, char **list); 714 bool appendCText(const char *filePath, const char **list); 715 char **execOut(const char *cmd); 716 char **systemOutf(const char *fmt, ...); 717 int systemf(const char *fmt, ...); 718 int commandF(const char *cmd, int line, const char *thisFunc, const char *thisFileName); 719 int commandfF(int line, const char *thisFunc, const char *thisFileName, const char *fmt, ...); 720 int commandNFreeF(char *cmd, int line, const char *thisFunc, const char *thisFileName); 721 bool listEqS(char **list1, char **list2); 722 bool listEqCS(char **list1, const char **list2); 723 bool listEqC1S(const char **list1, char **list2); 724 bool listEqCCS(const char **list1, const char **list2); 725 bool listHasS(char **list, const char *string); 726 bool listHasCS(const char **list, const char *string); 727 bool listHasCharS(char **list, char c); 728 bool listHasCharCS(const char **list, char c); 729 ssize_t listIndexOfS(char **list, const char *string); 730 ssize_t listIndexOfCS(const char **list, const char *string); 731 ssize_t listIndexOfCharS(char **list, char c); 732 ssize_t listIndexOfCharCS(const char **list, char c); 733 ssize_t listBinarySearchS(char **list, const char *string); 734 ssize_t listBinarySearchCharS(char **list, char c); 735 char **listUniqS(char **list); 736 char **iListUniqS(char ***list); 737 bool icListEqS(char **list1, char **list2); 738 bool icListEqCS(char **list1, const char **list2); 739 bool icListEqC1S(const char **list1, char **list2); 740 bool icListEqCCS(const char **list1, const char **list2); 741 bool icListHasS(char **list, const char *string); 742 bool icListHasCharS(char **list, char c); 743 bool icListHasCS(const char **list, const char *string); 744 bool icListHasCharCS(const char **list, char c); 745 ssize_t icListIndexOfS(char **list, const char *string); 746 ssize_t icListIndexOfCS(const char **list, const char *string); 747 ssize_t icListIndexOfCharS(char **list, char c); 748 ssize_t icListIndexOfCharCS(const char **list, char c); 749 ssize_t icListBinarySearchS(char **list, const char *string); 750 ssize_t icListBinarySearchCharS(char **list, char c); 751 char **icListUniqS(char **list); 752 char **iicListUniqS(char ***list); 753 char **listCompactS(char **list); 754 char **iListCompactS(char ***list); 755 void btraceEnable(void); 756 void btraceDisable(void); 757 bool btraceConfig(void); 758 #if (__FreeBSD__ || __TERMUX__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __sun__ || __HAIKU__) 759 char **btrace(void); 760 char **btrace(void); 761 #endif 762 void **listEmptyF(void); 763 void **iListEmptyF(void ***list); 764 bool listIsEmpty(void **list); 765 void **listCreateF(void *paramType, ...); 766 void **listFromArray(void **array, size_t size); 767 void **listPush(void ***list, void *s); 768 void *listPop(void ***list); 769 void **listPrepend(void ***list, void *s); 770 void *listDequeue(void ***list); 771 void listFree(void **list); 772 void listFreeManyF(void **paramType, ...); 773 size_t listLength(void **list); 774 void *listGet(void **list, int64_t index); 775 void **listSet(void **list, int64_t index, void *s); 776 void **listDup(void **list); 777 void **listReverse(void **list); 778 void **iListReverse(void ***list); 779 void **listCatF(void **paramType, ...); 780 void **listAppend(void ***list1, void **list2); 781 void **listAdd(void **list1, void **list2); 782 void **listSlice(void **list, int64_t start, int64_t end); 783 void **iListSlice(void ***list, int64_t start, int64_t end); 784 void **listInsert(void **list, int64_t index, void **toInsert); 785 void **iListInsert(void ***list, int64_t index, void **toInsert); 786 void **listDel(void **list, int64_t start, int64_t end); 787 void **iListDel(void ***list, int64_t start, int64_t end); 788 int ringInit(void *ring, int maxCount); 789 int ringEmpty(void *ring); 790 int ringIsEmpty(void *ring); 791 int ringIsFull(void *ring); 792 ssize_t ringCount(void *ring); 793 i64 ringPush(void *ring); 794 int ringPop(void *ring); 795 i64 ringPrepend(void *ring); 796 int ringDequeue(void *ring); 797 bool fiberAdd(void *ctx, int thisSlot, fiberFT func); 798 bool fiberPrepend(void *ctx, int thisSlot, fiberFT func); 799 void scheduler(void); 800 #if ((__GNUC__ > 4)) 801 uint64_t getMonotonicTime(void); 802 #else 803 uint64_t getMonotonicTime(void); 804 #endif 805 int nanoSleepF(uint64_t time); 806 807 //TODO compare speed - include sys/sendfile.h 808 809 #include "sys/resource.h" 810 #if (!(__FreeBSD__ || __OpenBSD__ || __DragonFly__)) 811 #include "alloca.h" 812 #else 813 #include <stdlib.h> 814 #endif 815 #include "pwd.h" 816 // ULONG_MAX 817 #include "limits.h" 818 #if (!(__TERMUX__ || __OpenBSD__ || MUSL_LIBC || __HAIKU__)) 819 // backtrace 820 #include "execinfo.h" 821 #endif 822 // get home path 823 #include "pwd.h" 824 // terminal settings for shGetpass 825 #include "termios.h" 826 // setlocale 827 #include "locale.h" 828 829 #if ((__FreeBSD__)) 830 // WIFEXITED WEXITSTATUS 831 #include <sys/wait.h> 832 #endif 833 834 835 836 /** \file 837 * This file has basic file, random, string, list functions 838 * 839 * There are 2 types of lists: char** and void** 840 * 841 * The *S (not i*S) functions duplicate the parameters and results. 842 * You must free the result if result is non-NULL and free the parameters 843 * 844 * The functions starting with i*S are in place functions. 845 * 846 * In Place functions: iList*S and i*S 847 * The iList*S and i*S functions modify the input buffers 848 * The input buffers must be allocated with malloc/calloc 849 * Returns are pointers to original buffers 850 * 851 * For more information, the documentation is located at http://spartatek.se/libsheepy/ 852 */ 853 854 #define MALLOC malloc 855 #define REALLOC realloc 856 857 858 // Function section 859 // define not used for now 860 #define __libsheepy 1 861 862 /** type bool true (glibc true is not bool), for use in generics */ 863 const bool TRUE = true; 864 /** type bool false (glibc true is not bool), for use in generics */ 865 const bool FALSE = false; 866 867 /** backtrace in error messages is enabled by default */ 868 bool btraceCfg = true; 869 870 /** 871 * setjmp buffers for try/throw,throwV macros 872 */ 873 jmp_buf tryJumpBuffers[maxTryThrowCount]; 874 875 /** 876 * program/library path to find the debug symbols for the program using libsheepy 877 */ 878 static const char *libSheepyArg0 = NULL; 879 static const char *libSheepyProgPath = NULL; 880 static char *progName = NULL; 881 static const char *defaultProgName = NULL; 882 static char *libSheepyRealProgPath = NULL; 883 884 static struct sigaction default_sa = init0Var; 885 886 /** 887 * segmentation fault handler 888 * 889 * prints line and file where the segfault crash occured 890 */ 891 #if (!(__arm__ || __aarch64__ || __riscv || __APPLE__ || __i386__ || __FreeBSD__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __HAIKU__)) 892 internal void segfault_sigaction(int signal, siginfo_t *si, void *arg) { 893 894 /* char addr[20] */ 895 /* char *s */ 896 /* char realProgPath[8192] */ 897 ucontext_t *context = (ucontext_t *)arg;; 898 logE("Segmentation fault (%d) at address %p RIP: %" PRIx64 " in program %s\n", signal, si->si_addr, (uint64_t)context->uc_mcontext.gregs[REG_RIP], libSheepyArg0); 899 900 logBtrace; 901 902 // incorrect code, doesn't work because of ASLR 903 /* sprintf(addr, "0x%" PRIx64, (uint64_t)context->uc_mcontext.gregs[REG_RIP]); */ 904 /* realpath("/proc/self/exe", realProgPath); */ 905 /* s = 'addr2line -e %s %s', realProgPath, addr */ 906 /* systemNFree(s); */ 907 // call default signal handler 908 default_sa.sa_sigaction(signal, si, arg); 909 } 910 911 #else // __arm__ || __aarch64__ || __riscv || __APPLE__ || __i386__ || __FreeBSD__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __HAIKU__ 912 internal void segfault_sigaction(int signal UNUSED, siginfo_t *si UNUSED, void *arg UNUSED) { 913 914 // call default signal handler 915 default_sa.sa_sigaction(signal, si, arg); 916 } 917 918 #endif 919 920 void cleanUpCharFree(char **val) { 921 922 free(*val); 923 } 924 925 926 void cleanUpListFree(char* **val) { 927 928 listFreeS(*val); 929 } 930 931 932 void cleanUpVoidFree(void **val) { 933 934 free(*val); 935 } 936 937 938 void cleanUpFileFree(FILE **val) { 939 940 if ((*val)) { 941 fclose(*val); 942 } 943 } 944 945 946 void cleanUpFd(int *val) { 947 948 if ((*val != -1)) { 949 close(*val); 950 } 951 } 952 953 /** 954 * nanosecond stopwatch 955 * 956 * \param 957 * op operation: 0 start, 1 get stopwatch value 958 * \return 959 * 0 when op is 0 960 * time since last start in ns when op is 1 961 */ 962 uint64_t shStopwatch(uint8_t op) { 963 964 static uint64_t startTime; 965 966 if (!op) { 967 startTime = getMonotonicTime(); 968 return(0); 969 } 970 else { 971 return(getMonotonicTime()-startTime); 972 } 973 } 974 975 /** log symbols to use, LOG_INVALID_MODE is log mode default symbols */ 976 static int logSymbols = LOG_INVALID_MODE; 977 978 /** set log level, logs above logMaxLevel are skipped */ 979 static int logMaxLevel = LOG_INVALID; 980 981 uint64_t logMask = 0xFFFFFFFFFFFFFFFF; 982 983 static FILE *_logging_files[16] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; 984 static int _log_current_mode = LOG_DATE; 985 986 static bool _log_verbose_short_path = true; 987 988 static bool _logToStdout = true; 989 990 static bool keepAnsiColors = true; 991 992 // logging file 0 is stdout 993 static uint16_t _current_log_file = 1; 994 995 static const char *log_tags[LOG_INVALID_MODE][LOG_INVALID+1] = {{"[EMERGENCY] ","[ALERT] ","[CRITICAL] ","[ERROR] ","[WARNING] ","[NOTICE] ","[PASS] ","[INFO] ","[DEBUG] ","[INVALID LOG LEVEL] "},{"[_] ", "[_] ", "[!] ", "[*] ", "[-] ", "[#] ", "[>] ", "[+] ", "[$] ", "[~] " },{"[_] ", "[_] ", "[!] ", "[*] ", "[-] ", "[#] ", "[>] ", "[+] ", "[$] ", "[~] " },{"[_] ", "[_] ", "[!] ", "[*] ", "[-] ", "[#] ", "[>] ", "[+] ", "[$] ", "[~] " },{"[_] ", "[_] ", "[!] ", "[*] ", "[-] ", "[#] ", "[>] ", "[+] ", "[$] ", "[~] " },{"[_] ", "[_] ", "[!] ", "[*] ", "[-] ", "[#] ", "[>] ", "[+] ", "[$] ", "[~] " },{ "", "", "", "", "", "", "", "", "", "" },{ "[⛔]","[⛔]","[⛔]", "[✖ ]", "[⚠ ]", "[ℹ ]", "[✔ ]", "[ℹ ]", "[☁ ]", "[~~]" }}; 996 997 // 998 static const char *LOG_DATE_FORMAT[LOG_INVALID_MODE] = { "%c\n", "CONCISE HAS NO DATE", "%y-%m-%d %H:%M:%S", "FUNC", "PROG", "%y-%m-%d %H:%M:%S", "VOID"}; 999 1000 /** 1001 * get current log symbols 1002 */ 1003 int getLogSymbols(void) { 1004 1005 return(logSymbols); 1006 } 1007 1008 /** 1009 * set log symbols 1010 * 1011 * LOG_VERBOSE for words 1012 * LOG_UTF8 for emojis 1013 * LOG_VOID for no symbols 1014 * LOG_INVALID_MODE (reset log symbols) for default log mode symbols 1015 * anything else (LOG_CONCISE,...) for symbols (!*+->~) 1016 * 1017 * default is default log mode symbols 1018 */ 1019 void setLogSymbols(int mode) { 1020 1021 if (mode <= LOG_INVALID_MODE) { 1022 logSymbols = mode; 1023 } 1024 else { 1025 logSymbols = LOG_INVALID_MODE; 1026 } 1027 } 1028 1029 /** 1030 * get current max log level 1031 * 1032 * default is LOG_INVALID, to show all log levels 1033 * -1 hides all logs 1034 */ 1035 int getMaxLogLevel(void) { 1036 1037 return(logMaxLevel); 1038 } 1039 1040 /** 1041 * set max log level 1042 * logs above logMaxLevel are skipped 1043 * 1044 * default is LOG_INVALID, to show all log levels 1045 * LOG_DISABLE hides all logs 1046 * 1047 * \param 1048 * logLevel from LOG_DISABLE to LOG_INVALID 1049 */ 1050 void setMaxLogLevel(int logLevel) { 1051 1052 logMaxLevel = logLevel; 1053 } 1054 1055 /** 1056 * set log file 1057 * the logs are appended to all log files set with this function 1058 * 1059 * there is a maximum of 15 log files 1060 * 1061 * \return 1062 * log file handle 1063 * NULL when filename is NULL or more than 15 log files are set 1064 */ 1065 FILE *setLogFile(char *filename) { 1066 1067 if (!filename) { 1068 return(NULL); 1069 } 1070 1071 if (_current_log_file >= 16) { 1072 // we only support 16 different files 1073 return(NULL); 1074 } 1075 1076 _logging_files[_current_log_file] = fopen(filename, "a+"); 1077 if (!_logging_files[_current_log_file]) { 1078 pFuncError 1079 shEPrintfS("The path was: \"%s\"\n", filename); 1080 return(NULL); 1081 } 1082 return(_logging_files[_current_log_file++]); 1083 } 1084 1085 /** 1086 * close logfiles opened with setLogFile 1087 */ 1088 void closeLogFiles(void) { 1089 1090 rangeFrom(i, 1, _current_log_file) { 1091 fclose(_logging_files[i]); 1092 _logging_files[i] = NULL; 1093 } 1094 1095 _current_log_file = 1;; 1096 } 1097 1098 /** 1099 * get current log mode (verbose, concise) 1100 * 1101 * \return 1102 * current mode LOG_VERBOSE, LOG_CONCISE, ... 1103 */ 1104 int getLogMode(void) { 1105 1106 return(_log_current_mode); 1107 } 1108 1109 /** 1110 * set log mode LOG_VERBOSE, LOG_CONCISE, .. 1111 * 1112 * the default log mode is LOG_DATE 1113 */ 1114 void setLogMode(int mode) { 1115 1116 if (mode < 0 || mode >= LOG_INVALID_MODE) { 1117 shPrintError 1118 shEPrintfS("The available log modes are: LOG_VERBOSE, LOG_CONCISE, LOG_DATE, LOG_FUNC, LOG_PROG, LOG_PROGNDATE, LOG_PROGNFUNC, LOG_VOID and LOG_UTF8\n"); 1119 } 1120 else { 1121 _log_current_mode = mode; 1122 } 1123 } 1124 1125 /** 1126 * get current log long/short path value 1127 * 1128 * The default value is TRUE (short paths) 1129 * TRUE shows short file paths in logs 1130 * FALSE shows long file paths in logs 1131 * 1132 * \return 1133 * current long/short file path configuration value for VERBOSE mode 1134 */ 1135 bool getLogShortPath(void) { 1136 1137 return(_log_verbose_short_path); 1138 } 1139 1140 /** 1141 * set log long/short file path value for VERBOSE mode 1142 * 1143 * TRUE shows short file paths in logs 1144 * FALSE shows long file paths in logs 1145 * 1146 * the default long/short path value is TRUE 1147 */ 1148 void setLogShortPath(bool shortPath) { 1149 1150 _log_verbose_short_path = shortPath; 1151 } 1152 1153 /** 1154 * get stdout state, when TRUE (default) all logs are printed to stdout 1155 */ 1156 bool getLogStdout(void) { 1157 1158 return(_logToStdout); 1159 } 1160 1161 /** 1162 * enable/disable printing logs to stdout 1163 * 1164 * TRUE: print logs to stdout 1165 * FALSE: print logs to files only 1166 */ 1167 void setLogStdout(bool state) { 1168 1169 _logToStdout = state; 1170 } 1171 1172 /** 1173 * log to a file named progName.log 1174 * Use closeLogFiles when finished logging 1175 */ 1176 bool openProgLogFile(void) { 1177 1178 if (!progName && !defaultProgName) { 1179 logME(libsheepyErrorMask, "Program name is not set, call initLibsheepy or set prog name with setProgName"); 1180 return(false); 1181 } 1182 1183 char *s = formatS("%s.log", progName ? progName : defaultProgName);; 1184 1185 if (!setLogFile(s)) { 1186 logME(libsheepyErrorMask, "Couldn't open log file: %s", s); 1187 free(s); 1188 return(false); 1189 } 1190 1191 free(s); 1192 return(true); 1193 } 1194 1195 /** 1196 * enable/disable ansi color codes in logs 1197 * 1198 * TRUE: print colors 1199 * FALSE: strip colors 1200 */ 1201 void keepAnsiColorsInLog(bool state) { 1202 1203 keepAnsiColors = state; 1204 } 1205 1206 /** 1207 * print logging levels 1208 * logs messages to all log file 1209 * 1210 * in LOG_VERBOSE mode, logs loglevel, filename, function name, time, line number and msg 1211 * in LOG_CONCISE mode, logs loglevel and msg 1212 * 1213 * the maximum message length is 10240 1214 * 1215 */ 1216 #define MAX_MSG_LEN 10240 1217 void _pLog(int loglevel, const char *file, const char *func, int line, const char *msg, ...) { 1218 _logging_files[0] = stdout;; 1219 va_list args; 1220 char buffer[lenS(msg) + MAX_MSG_LEN]; 1221 1222 if (_current_log_file == 1 && !_logToStdout) { 1223 // log to stdout is disabled and there are no log files 1224 return; 1225 } 1226 1227 if (loglevel > logMaxLevel) { 1228 // skip log above logMaxLevel 1229 return; 1230 } 1231 1232 va_start(args, msg); 1233 1234 // append the varargs to the buffer we want to print. 1235 // this is so that our pipe chars don't get lost later. 1236 // also, make sure we don't get an invalid loglevel. 1237 if (!msg) { 1238 buffer[0] = 0; 1239 } 1240 else { 1241 vsnprintf(buffer, strlen(msg)+MAX_MSG_LEN, msg, args); 1242 } 1243 va_end(args); 1244 1245 if (loglevel < 0 || loglevel >= LOG_INVALID) { 1246 loglevel = LOG_INVALID; 1247 } 1248 if (_log_current_mode < 0 || _log_current_mode >= LOG_INVALID_MODE) { 1249 _log_current_mode = LOG_VERBOSE; 1250 } 1251 1252 char clock[100]; 1253 1254 if (_log_current_mode == LOG_VERBOSE || _log_current_mode == LOG_DATE || _log_current_mode == LOG_PROGNDATE) { 1255 time_t _clk = time(NULL);; 1256 struct tm *_pClk = localtime(&_clk);; 1257 strftime(clock, 100, LOG_DATE_FORMAT[_log_current_mode], _pClk); 1258 } 1259 1260 // set console color for printing the tag 1261 if (_logToStdout && keepAnsiColors && _log_current_mode != LOG_VOID) { 1262 switch (loglevel) { 1263 case LOG_EMERGENCY: 1264 printf(BLD RED); 1265 break; 1266 case LOG_ALERT: 1267 printf(BLD RED); 1268 break; 1269 case LOG_CRITICAL: 1270 printf(BLD RED); 1271 break; 1272 case LOG_ERROR: 1273 printf(RED); 1274 break; 1275 case LOG_WARNING: 1276 printf(YLW); 1277 break; 1278 case LOG_NOTICE: 1279 printf(BLU); 1280 break; 1281 case LOG_PASS: 1282 printf(BLD GRN); 1283 break; 1284 case LOG_INFO: 1285 printf(BLU); 1286 break; 1287 case LOG_DEBUG: 1288 printf(BLD CYN); 1289 break; 1290 case LOG_INVALID: 1291 default: 1292 printf(MGT); 1293 break; 1294 } 1295 } 1296 1297 if (!keepAnsiColors) { 1298 if (!bStripColorsS(buffer)) { 1299 return; 1300 } 1301 } 1302 1303 // long or short file path in VERBOSE mode 1304 if ((_log_current_mode == LOG_VERBOSE) && _log_verbose_short_path) { 1305 const char *slashP[3] = {NULL, NULL, NULL}; 1306 indexer idx; 1307 indexerInit(idx, 3); 1308 u16 count = 0; 1309 const char *slash = file; 1310 1311 while (slash) { 1312 slash = strchr(slash, '/'); 1313 if (!slash) { 1314 break; 1315 } 1316 else { 1317 slash++; 1318 } 1319 if (indexerIsFull(idx)) { 1320 indexerDequeue(idx); 1321 } 1322 indexerPush(idx); 1323 slashP[indexerLast(idx)] = slash; 1324 count++; 1325 } 1326 1327 if (count > 2) { 1328 // path has more than 2 slashes a/b/c.c 1329 file = slashP[indexerFirst(idx)]; 1330 //puts(nS(slashP[indexerFirst(idx)])); 1331 //puts(nS(slashP[indexerRef(idx,1)])); 1332 //puts(nS(slashP[indexerLast(idx)])); 1333 } 1334 } 1335 1336 int firstLogFile = _logToStdout ? 0 : 1; 1337 int i; 1338 if (_log_current_mode != LOG_VOID) { 1339 int tagSymbols = logSymbols != LOG_INVALID_MODE ? logSymbols : _log_current_mode; 1340 1341 // print the log tag 1342 for (i=firstLogFile; i < _current_log_file; i++) { 1343 fprintf(_logging_files[i], "%s", log_tags[tagSymbols][loglevel]); 1344 } 1345 1346 if (_logToStdout) { 1347 printf(RST); 1348 } 1349 } 1350 1351 /* logVar(_log_current_mode, "d"); */ 1352 /* puts(log_tags[_log_current_mode][loglevel]); */ 1353 1354 char *linePrefix = ""; 1355 switch(_log_current_mode) { 1356 case LOG_VERBOSE: 1357 for (i=firstLogFile; i < _current_log_file; i++) { 1358 fprintf(_logging_files[i], "%s %s() (%s:%d) at %s |\t", progName ? progName : defaultProgName, func, file, line, clock); 1359 linePrefix = " |\t";; 1360 } 1361 break; 1362 case LOG_FUNC: 1363 for (i=firstLogFile; i < _current_log_file; i++) { 1364 fprintf(_logging_files[i], "%s %d: ", func, line); 1365 } 1366 break; 1367 case LOG_PROG: 1368 for (i=firstLogFile; i < _current_log_file; i++) { 1369 fprintf(_logging_files[i], "%s: ", progName ? progName : defaultProgName); 1370 } 1371 break; 1372 case LOG_PROGNDATE: 1373 for (i=firstLogFile; i < _current_log_file; i++) { 1374 fprintf(_logging_files[i], "%s %s: ", progName ? progName : defaultProgName, clock); 1375 } 1376 break; 1377 case LOG_DATE: 1378 for (i=firstLogFile; i < _current_log_file; i++) { 1379 fprintf(_logging_files[i], "%s ", clock); 1380 } 1381 break; 1382 case LOG_PROGNFUNC: 1383 for (i=firstLogFile; i < _current_log_file; i++) { 1384 fprintf(_logging_files[i], "%s %s %d: ", progName ? progName : defaultProgName, func, line); 1385 } 1386 break; 1387 default:; 1388 // don't print anything 1389 } 1390 1391 1392 // print the first line 1393 if (buffer[0] == 0) { 1394 // empty or NULL msg, print empty line 1395 for (i=firstLogFile; i < _current_log_file; i++) { 1396 fprintf(_logging_files[i], "\n"); 1397 } 1398 } 1399 else { 1400 char *toLog = strtok(buffer, "\n"); 1401 for (i=firstLogFile; i < _current_log_file; i++) { 1402 fprintf(_logging_files[i], "%s\n", toLog); 1403 } 1404 1405 // for these next lines, add a pipe and tab once. 1406 toLog = strtok(NULL, "\n"); 1407 while (toLog) { 1408 for (i=firstLogFile; i < _current_log_file; i++) { 1409 fprintf(_logging_files[i], "%s%s\n", linePrefix, toLog); 1410 } 1411 toLog = strtok(NULL, "\n"); 1412 } 1413 } 1414 1415 for(i = 1; i <_current_log_file; i++) {; 1416 // write log files immediately 1417 fflush(_logging_files[i]); 1418 } 1419 } 1420 1421 #if (!(__APPLE__ || __FreeBSD__ || __TERMUX__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __sun__ || __HAIKU__)) 1422 /** 1423 * printf RGB Colors 1424 * 1425 * %k and %K type specifier to GNU printf for RBG colors 1426 * 1427 * - %k foreground hex color 1428 * - %K background hex color 1429 * 1430 * Example: 1431 * printf("%k%KRGB color" RST, 0x99EEFF, 0x666666); 1432 */ 1433 1434 1435 #define TERMRGB "\x1b[38;2;" 1436 #define BGTERMRGB "\x1b[48;2;" 1437 1438 /** 1439 * %k printf type specifier, RGB foreground, uint32_t 1440 * 0x00RRGGBB 1441 */ 1442 int print_k(FILE *stream, const struct printf_info *info, const void *const *args) { 1443 u32 rgbColor; 1444 char b[20]; 1445 int len; 1446 1447 rgbColor = *((const u32*) args[0]); 1448 snprintf(b, sizeof(b), TERMRGB "%u;%u;%um", rgbColor>>16, (rgbColor&0xFF00)>>8, rgbColor&0xFF); 1449 1450 /* Pad to the minimum field width and print to the stream. */ 1451 //len = fprintf(stream, "%*s", (info->left ? -info->width : info->width), b) 1452 sheepyRGBFP; 1453 return(len); 1454 } 1455 1456 /** 1457 * %K printf type specifier, RGB background, uint32_t 1458 * 0x00RRGGBB 1459 */ 1460 int print_K(FILE *stream, const struct printf_info *info, const void *const *args) { 1461 u32 rgbColor; 1462 char b[20]; 1463 int len; 1464 1465 rgbColor = *((const u32*) args[0]); 1466 snprintf(b, sizeof(b), BGTERMRGB "%u;%u;%um", rgbColor>>16, (rgbColor&0xFF00)>>8, rgbColor&0xFF); 1467 1468 /* Pad to the minimum field width and print to the stream. */ 1469 //len = fprintf(stream, "%*s", (info->left ? -info->width : info->width), b) 1470 sheepyRGBFP; 1471 return(len); 1472 } 1473 1474 /** 1475 * procress printf argument 1476 */ 1477 int print_k_arginfo(const struct printf_info *info UNUSED, size_t n, int *argtypes, int* size) { 1478 1479 if (n > 0) { 1480 argtypes[0] = PA_POINTER; 1481 size[0] = sizeof(u32); 1482 } 1483 return(1); 1484 } 1485 1486 /** 1487 * %b printf type specifier, print bool as FALSE/TRUE 1488 */ 1489 int print_b(FILE *stream, const struct printf_info *info, const void *const *args) { 1490 bool value; 1491 int len; 1492 1493 value = *((const bool*) args[0]); 1494 1495 /* Pad to the minimum field width and print to the stream. */ 1496 //len = fprintf(stream, "%*s", (info->left ? -info->width : info->width), boolS(value)) 1497 sheepyBOOLFP; 1498 return(len); 1499 } 1500 1501 /** 1502 * procress printf argument 1503 */ 1504 int print_b_arginfo(const struct printf_info *info UNUSED, size_t n, int *argtypes, int* size) { 1505 1506 if (n > 0) { 1507 argtypes[0] = PA_CHAR; 1508 size[0] = sizeof(bool); 1509 } 1510 return(1); 1511 } 1512 1513 #endif 1514 // #if __APPLE__ || __FreeBSD__ || __TERMUX___ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __sun__ || __HAIKU__ 1515 1516 1517 static const char sheepyBuild[] = "/.sheepy/build"; 1518 1519 /** 1520 * initialize libsheepy (optional, for debug) 1521 * 1522 * initialize segfault handler for crash debug 1523 * the segfault handler prints the line and file where the segfault occured 1524 * 1525 * initialize the fibers 1526 * initialize libsheepyObject 1527 */ 1528 #if ((__APPLE__ || __FreeBSD__ || __TERMUX__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __sun__ || __HAIKU__)) 1529 void initLibsheepyF(const char *progPath, initLibsheepyObjectP initF) { 1530 1531 // no buffering if output is sent to file, this makes everything 1532 // a bit slower, but it is possible to see where the code fails 1533 if (!isatty(1)) { 1534 setbuf(stdout, NULL); 1535 } 1536 1537 libSheepyArg0 = progPath; 1538 libSheepyProgPath = findS(progPath, sheepyBuild);; 1539 if (!libSheepyProgPath) { 1540 libSheepyProgPath = progPath; 1541 } 1542 else { 1543 // when progPath had sheepyBuild: progPath = /home/USER/.sheepy/build/home/USER/git/sw/PRG/PRG 1544 // keep only the end of the path which is the source path 1545 // libSheepyProgPath = /home/USER/git/sw/PRG/PRG 1546 libSheepyProgPath += sizeof(sheepyBuild)-1; 1547 } 1548 1549 // set defaultProgName as basename progPath 1550 // defaultProgName is the string after the last / 1551 rangeDown(i, (ssize_t)strlen(libSheepyProgPath)) { 1552 if (libSheepyProgPath[i] == '/') { 1553 defaultProgName = libSheepyProgPath + i + 1; 1554 break; 1555 } 1556 } 1557 if (!defaultProgName) { 1558 defaultProgName = libSheepyProgPath; 1559 } 1560 1561 // segfault signal 1562 struct sigaction sa = init0Var; 1563 sigemptyset(&sa.sa_mask); 1564 sa.sa_sigaction = segfault_sigaction;; 1565 sa.sa_flags = SA_SIGINFO;; 1566 sigaction(SIGSEGV, &sa, &default_sa); 1567 1568 // fibers 1569 staticArrayInit(fibers.L); 1570 staticArrayInit(fibers.startL); 1571 1572 // free internal buffers 1573 atexit(finalizeLibsheepyCharAtExit); 1574 1575 1576 // register %k %K type specifiers in printf for RGB colors 1577 // not available in macos - register_printf_specifier('k', print_k, print_k_arginfo); 1578 // not available in macos - register_printf_specifier('K', print_K, print_k_arginfo); 1579 // register %b type specifiers in printf for bool as TRUE/FALSE 1580 // not available in macos - register_printf_specifier('b', print_b, print_b_arginfo); 1581 1582 if (initF) { 1583 initF(); 1584 } 1585 } 1586 1587 #else // #if ((__APPLE__ || __FreeBSD__ || __TERMUX__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __sun__ || __HAIKU__)) 1588 void initLibsheepyF(const char *progPath, initLibsheepyObjectP initF) { 1589 1590 // no buffering if output is sent to file, this makes everything 1591 // a bit slower, but it is possible to see where the code fails 1592 if (!isatty(STDOUT_FILENO)) { 1593 setbuf(stdout, NULL); 1594 } 1595 1596 libSheepyArg0 = progPath; 1597 libSheepyProgPath = findS(progPath, sheepyBuild);; 1598 if (!libSheepyProgPath) { 1599 libSheepyProgPath = progPath; 1600 } 1601 else { 1602 // when progPath had sheepyBuild: progPath = /home/USER/.sheepy/build/home/USER/git/sw/PRG/PRG 1603 // keep only the end of the path which is the source path 1604 // libSheepyProgPath = /home/USER/git/sw/PRG/PRG 1605 libSheepyProgPath += sizeof(sheepyBuild)-1; 1606 } 1607 1608 // set defaultProgName as basename progPath 1609 // defaultProgName is the string after the last / 1610 rangeDown(i, (ssize_t)strlen(libSheepyProgPath)) { 1611 if (libSheepyProgPath[i] == '/') { 1612 defaultProgName = (libSheepyProgPath + i + 1); 1613 break; 1614 } 1615 } 1616 if (!defaultProgName) { 1617 defaultProgName = libSheepyProgPath; 1618 } 1619 1620 // segfault signal 1621 struct sigaction sa = init0Var; 1622 sigemptyset(&sa.sa_mask); 1623 sa.sa_sigaction = segfault_sigaction;; 1624 sa.sa_flags = SA_SIGINFO;; 1625 sigaction(SIGSEGV, &sa, &default_sa); 1626 1627 // fibers 1628 staticArrayInit(fibers.L); 1629 staticArrayInit(fibers.startL); 1630 1631 // free insternal buffers 1632 atexit(finalizeLibsheepyCharAtExit); 1633 1634 1635 // register %k %K type specifiers in printf for RGB colors 1636 register_printf_specifier('k', print_k, print_k_arginfo); { 1637 register_printf_specifier('K', print_K, print_k_arginfo); { 1638 // register %b type specifiers in printf for bool as TRUE/FALSE 1639 register_printf_specifier('b', print_b, print_b_arginfo); { 1640 1641 if (initF) { 1642 initF(); 1643 } 1644 } 1645 } 1646 } 1647 } 1648 1649 #endif 1650 // #if (__APPLE__ || __FreeBSD__ || __TERMUX__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __sun__ || __HAIKU__) 1651 1652 /** 1653 * finalize libsheepy char at exit 1654 * 1655 * free internal buffers in this file: 1656 * 1657 * realprogpath 1658 * urandomFp software random file 1659 * 1660 */ 1661 void finalizeLibsheepyCharAtExit(void) { 1662 1663 free(progName); 1664 freeRealProgPath(); 1665 randomUrandomClose(); 1666 } 1667 1668 /** 1669 * get current stack limit 1670 * 1671 * \return 1672 * current stack limit 1673 * -1 unlimited 1674 * 0 when error 1675 */ 1676 int64_t getStackLimit(void) { 1677 struct rlimit limit; 1678 1679 if (getrlimit(RLIMIT_STACK, &limit) == -1) { 1680 pFuncError 1681 return(0); 1682 } 1683 return(limit.rlim_cur != RLIM_INFINITY ? (i64) limit.rlim_cur : -1);; 1684 } 1685 1686 /** 1687 * set stack limit 1688 * 1689 * \param 1690 * stackSize stack size in bytes, set -1 for unlimited size 1691 * \return 1692 * !0 when ok 1693 * 0 when it failed 1694 */ 1695 int setStackLimit(int64_t stackSize) { 1696 struct rlimit limit; 1697 1698 if (getrlimit(RLIMIT_STACK, &limit) == -1) { 1699 pFuncError 1700 return(0); 1701 } 1702 1703 if (stackSize == -1) { 1704 limit.rlim_cur = RLIM_INFINITY; 1705 } 1706 else { 1707 limit.rlim_cur = (u64)stackSize; 1708 } 1709 1710 if (setrlimit(RLIMIT_STACK, &limit) == -1) { 1711 pFuncError 1712 return(0); 1713 } 1714 1715 return(1); 1716 } 1717 1718 /** 1719 * enable core dump 1720 * 1721 * change core dump size to infinity to enable core dump. 1722 * After the program receives a signal generating core dump, 1723 * a core file is written to disk and can be open with gdb 1724 * 1725 * \return 1726 * !0 when ok 1727 * 0 when it failed 1728 */ 1729 int enableCoreDump(void) { 1730 1731 // enable core dump 1732 struct rlimit limit; 1733 if (getrlimit(RLIMIT_CORE, &limit) == -1) { 1734 pFuncError 1735 return(0); 1736 } 1737 1738 // dump the complete process memory 1739 limit.rlim_cur = RLIM_INFINITY; 1740 if (setrlimit(RLIMIT_CORE, &limit) == -1) { 1741 pFuncError 1742 return(0); 1743 } 1744 1745 return(1); 1746 } 1747 1748 1749 /** 1750 * get program name 1751 * 1752 * this program name showing in the logs 1753 */ 1754 const char *getProgName(void) { 1755 1756 return(progName ? progName : defaultProgName); 1757 } 1758 1759 /** 1760 * set program name 1761 * 1762 * this program name showing in the logs 1763 */ 1764 bool setProgName(const char *name) { 1765 1766 // sanity 1767 if (!name) { 1768 return(false); 1769 } 1770 1771 free(progName); 1772 progName = strdup(name); 1773 1774 return(true); 1775 } 1776 1777 /** 1778 * set default program name 1779 * 1780 * this program name showing in the logs 1781 */ 1782 void setDefaultProgName(void) { 1783 1784 freen(progName); 1785 } 1786 1787 /** 1788 * free ProgName 1789 * if set with setProgName 1790 */ 1791 void freeProgName(void) { 1792 1793 freen(progName); 1794 } 1795 1796 /** 1797 * get program path 1798 * When initLibsheepy is called before this function, it returns the given program path. 1799 * When initLibsheepy has not been called before this function, it returns the real program path. 1800 * 1801 * \return 1802 * program path or real program path (do not free this pointer) 1803 */ 1804 const char *getProgPath(void) { 1805 1806 if (libSheepyProgPath) { 1807 return(libSheepyProgPath); 1808 } 1809 else { 1810 return(getRealProgPath()); 1811 } 1812 } 1813 1814 /** 1815 * get real program path 1816 * The first call allocates libSheepyRealProgPath, it is freed with freeRealProgPath 1817 * 1818 * \return 1819 * real program path (do not free this pointer) 1820 */ 1821 const char *getRealProgPath(void) { 1822 1823 if (!libSheepyRealProgPath) { 1824 char realProgPath[8192]; 1825 realpath("/proc/self/exe", realProgPath); 1826 libSheepyRealProgPath = strdup(realProgPath); 1827 } 1828 return(libSheepyRealProgPath); 1829 } 1830 1831 /** 1832 * free real program path 1833 * finalizeLibsheepy calls this function 1834 */ 1835 void freeRealProgPath(void) { 1836 1837 free(libSheepyRealProgPath); 1838 libSheepyRealProgPath = NULL; 1839 } 1840 1841 /** 1842 * run system command and free command buffer 1843 * a message is printed when an error occurs 1844 * 1845 * this function is called from the systemNFree macro 1846 * 1847 * \param 1848 * command command to run in the shell 1849 * \return 1850 * 0 success 1851 * command error code 1852 */ 1853 int systemNFreeF(char *command, int line, const char *thisFunc, const char *thisFileName) { 1854 int r; 1855 1856 r = system(command); 1857 if (r) { 1858 logME(libsheepyErrorMask, "\nSystem Error at %d, %s, %s. The command was: \"%s\"\n", line, thisFunc, thisFileName, command); 1859 } 1860 free(command); 1861 return(r); 1862 } 1863 1864 /** 1865 * get modification time for path 1866 * 1867 * \param 1868 * path 1869 * \return 1870 * modification time 1871 * 0 when an error occured 1872 */ 1873 time_t getModificationTime(const char *path) { 1874 1875 if (!path) { 1876 return(0); 1877 } 1878 1879 struct stat fst; 1880 if (stat(path, &fst) == -1) { 1881 pFuncError 1882 shEPrintfS("The path was: \"%s\"\n", path); 1883 return(0); 1884 } 1885 return(fst.st_mtime); 1886 } 1887 1888 /** 1889 * set modification time for path 1890 * 1891 * \param 1892 * path 1893 * \param 1894 * mtime (for example, from the getModificationTime function) 1895 * \return 1896 * 1 ok 1897 * 0 when an error occured 1898 */ 1899 int setModificationTime(const char *path, time_t mtime) { 1900 1901 if (!path) { 1902 return(0); 1903 } 1904 1905 struct timeval times[2]; 1906 times[0].tv_usec = 0; 1907 times[0].tv_sec = mtime; 1908 times[1] = times[0]; 1909 if (utimes(path, times) == -1) { 1910 pFuncError 1911 shEPrintfS("The path was: \"%s\"\n", path); 1912 return(0); 1913 } 1914 return(1); 1915 } 1916 1917 /** 1918 * is path readable 1919 * 1920 * \return 1921 * true when path is readable 1922 */ 1923 bool isReadable(const char *path) { 1924 1925 if (!path) { 1926 return(false); 1927 } 1928 1929 if (access(path, R_OK) == -1) { 1930 return(false); 1931 } 1932 1933 return(true); 1934 } 1935 1936 1937 /** 1938 * is path writable 1939 * 1940 * \return 1941 * true when path is writable 1942 */ 1943 bool isWritable(const char *path) { 1944 1945 if (!path) { 1946 return(false); 1947 } 1948 1949 if (access(path, W_OK) == -1) { 1950 return(false); 1951 } 1952 1953 return(true); 1954 } 1955 1956 1957 /** 1958 * is path executable 1959 * 1960 * \return 1961 * true when path is executable 1962 */ 1963 bool isExecutable(const char *path) { 1964 1965 if (!path) { 1966 return(false); 1967 } 1968 1969 if (access(path, X_OK) == -1) { 1970 return(false); 1971 } 1972 1973 return(true); 1974 } 1975 1976 1977 /** 1978 * compare modification times for path1 and path2 1979 * 1980 * \param 1981 * path1 1982 * \param 1983 * path2 1984 * \return 1985 * true when mtime is equal for path1 and path2 1986 * false when mtime is different for path1 and path2 or when there is an error 1987 */ 1988 bool equalModificationTimes(const char *path1, const char *path2) { 1989 1990 if (!path1 || !path2) { 1991 return(false); 1992 } 1993 1994 time_t t1 = getModificationTime(path1); { 1995 time_t t2 = getModificationTime(path2); { 1996 1997 if (!t1 || !t2) { 1998 return(false); 1999 } 2000 return(t1 == t2);; 2001 } 2002 } 2003 } 2004 2005 /** 2006 * get current unix time in seconds 2007 * 2008 * time_t is either int32_t or int64_t 2009 */ 2010 time_t getCurrentUnixTime(void) { 2011 2012 return(time(NULL)); 2013 } 2014 2015 /** 2016 * convert date string to unix time 2017 * 2018 * \param 2019 * date string 2020 * \param 2021 * format for strptime 2022 * \return 2023 * time 2024 * -1 error 2025 * 2026 */ 2027 time_t strToUnixTime(const char *date, const char *format) { 2028 struct tm tm = init0Var;; 2029 time_t r; 2030 2031 // sanity checks 2032 if (!date || !format) { 2033 return(-1); 2034 } 2035 2036 if ((strptime(date, format, &tm))) { 2037 r = mktime(&tm); 2038 } 2039 else { 2040 shPrintError; 2041 shEPrintfS("strptime failed.\nThe date string is: \"%s\"\nThe format string is: \"%s\"\n", date, format); 2042 return(-1); 2043 } 2044 return(r); 2045 } 2046 2047 /** 2048 * time To String 2049 * convert unix time to string 2050 * (ctime is not used here because it adds \n at the end of the string) 2051 * 2052 * \param 2053 * unix time to convert 2054 * \return 2055 * string representing the unix time in ctime format (Wed Dec 12 11:44:08 2018), you must free the pointer 2056 */ 2057 char *timeToS(const time_t t) { 2058 struct tm lt; 2059 char timeBuf[80]; 2060 2061 localtime_r(&t, <); 2062 strftime(timeBuf, sizeof(timeBuf), "%c", <); 2063 return(strdup(timeBuf)); 2064 } 2065 2066 char *bTimeToS(char *dst, const time_t t) { 2067 struct tm lt; 2068 2069 localtime_r(&t, <); 2070 strftime(dst, 80, "%c", <); 2071 return(dst); 2072 } 2073 2074 char *bLTimeToS(char *dst, size_t dstSize, const time_t t) { 2075 struct tm lt; 2076 2077 localtime_r(&t, <); 2078 strftime(dst, dstSize, "%c", <); 2079 return(dst); 2080 } 2081 2082 /** 2083 * time To Year-Month-Day Hour:Minute:Second String 2084 * convert unix time to string 2085 * 2086 * \param 2087 * unix time to convert 2088 * \return 2089 * string representing the unix time, you must free the pointer 2090 */ 2091 char *timeToYMDS(const time_t t) { 2092 struct tm lt; 2093 char timeBuf[80]; 2094 2095 localtime_r(&t, <); 2096 strftime(timeBuf, sizeof(timeBuf), "%Y-%m-%d %H:%M:%S", <); 2097 return(strdup(timeBuf)); 2098 } 2099 2100 char *bTimeToYMDS(char *dst, const time_t t) { 2101 struct tm lt; 2102 2103 localtime_r(&t, <); 2104 strftime(dst, 80, "%Y-%m-%d %H:%M:%S", <); 2105 return(dst); 2106 } 2107 2108 char *bLTimeToYMDS(char *dst, size_t dstSize, const time_t t) { 2109 struct tm lt; 2110 2111 localtime_r(&t, <); 2112 strftime(dst, dstSize, "%Y-%m-%d %H:%M:%S", <); 2113 return(dst); 2114 } 2115 2116 /** 2117 * get current date in ctime format (Wed Dec 12 11:44:08 2018) 2118 * 2119 * you must free the pointer 2120 */ 2121 char *getCurrentDate(void) { 2122 char clock[80]; 2123 2124 time_t _clk = time(NULL);; 2125 struct tm *_pClk = localtime(&_clk);; 2126 strftime(clock, sizeof clock, "%c", _pClk); 2127 return(strdup(clock)); 2128 } 2129 2130 char *bGetCurrentDate(char *dst) { 2131 2132 if (!dst) { 2133 return(NULL); 2134 } 2135 time_t _clk = time(NULL);; 2136 struct tm *_pClk = localtime(&_clk);; 2137 strftime(dst, 80, "%c", _pClk); 2138 return(dst); 2139 } 2140 2141 char *bLGetCurrentDate(char *dst, size_t dstSize) { 2142 2143 if (!dst) { 2144 return(NULL); 2145 } 2146 time_t _clk = time(NULL);; 2147 struct tm *_pClk = localtime(&_clk);; 2148 strftime(dst, dstSize, "%c", _pClk); 2149 return(dst); 2150 } 2151 2152 /** 2153 * get current date in Y-m-d H:M:S format 2154 * 2155 * you must free the pointer 2156 */ 2157 char *getCurrentDateYMD(void) { 2158 char clock[80]; 2159 2160 time_t _clk = time(NULL);; 2161 struct tm *_pClk = localtime(&_clk);; 2162 strftime(clock, sizeof clock, "%Y-%m-%d %H:%M:%S", _pClk); 2163 return(strdup(clock)); 2164 } 2165 2166 char *bGetCurrentDateYMD(char *dst) { 2167 2168 if (!dst) { 2169 return(NULL); 2170 } 2171 time_t _clk = time(NULL);; 2172 struct tm *_pClk = localtime(&_clk);; 2173 strftime(dst, 80, "%Y-%m-%d %H:%M:%S", _pClk); 2174 return(dst); 2175 } 2176 2177 char *bLGetCurrentDateYMD(char *dst, size_t dstSize) { 2178 2179 if (!dst) { 2180 return(NULL); 2181 } 2182 time_t _clk = time(NULL);; 2183 struct tm *_pClk = localtime(&_clk);; 2184 strftime(dst, dstSize, "%Y-%m-%d %H:%M:%S", _pClk); 2185 return(dst); 2186 } 2187 2188 /** 2189 * sheepy dirname 2190 * 2191 * the returned string has to be freed 2192 * 2193 * \param 2194 * path 2195 * \return 2196 * path without basename (last item in the path, you must free the pointer) 2197 * "./" when path is blank or when there is only one item in the path 2198 * NULL when path is NULL 2199 */ 2200 char *shDirname(const char *path) { 2201 char *dir = NULL; 2202 2203 if (!path) { 2204 return(NULL); 2205 } 2206 2207 if (isBlankS(path)) { 2208 return(strdup("./")); 2209 } 2210 2211 #if (__APPLE__ || __OpenBSD__ || __DragonFly__) 2212 // pointer to internal buffer in dirname 2213 char *tmp = dirname((char*)path); 2214 dir = strdup(tmp); 2215 #elif (__TERMUX__) 2216 // dirname is not implemented 2217 dir = strdup(path); 2218 size_t len = strlen(path); 2219 rangeDown(i, len) { 2220 if (dir[i] == '/') { 2221 dir[i] = 0; 2222 break; 2223 } 2224 } 2225 #else 2226 dir = strdup(path); 2227 dirname(dir); 2228 #endif 2229 2230 if (!dir) { 2231 return(NULL); 2232 } 2233 2234 // is dirname empty? 2235 #if (__OpenBSD__) 2236 if ((dir[0]) and (dir[0] == '.' and dir[1] == 0)) { 2237 iAppendS(&dir, "/"); 2238 } 2239 #else 2240 if (strEq(dir, path)) { 2241 // set dir to pwd when dirname is empty 2242 free(dir); 2243 dir = strdup("./"); 2244 } 2245 #endif 2246 return(dir); 2247 } 2248 2249 /** 2250 * buffer dirname 2251 * 2252 * the buffer size (path) must be at least 3 chars 2253 * 2254 * \param 2255 * path 2256 * \return 2257 * path without basename (last item in the path) 2258 * "./" when path is blank or when there is only one item in the path 2259 * NULL when path is NULL 2260 */ 2261 char *bDirname(char *path) { 2262 2263 if (!path) { 2264 return(NULL); 2265 } 2266 2267 if (isBlankS(path) || !strchr(path, '/')) { 2268 // the path is blank or a filename 2269 // set dir to pwd when dirname is empty 2270 strcpy(path, "./"); 2271 return(path); 2272 } 2273 2274 #if (__OpenBSD__) 2275 // when there is a trailing / return path unchanged 2276 if (path[strlen(path)-1] == '/') { 2277 return(path); 2278 } 2279 // pointer to internal buffer in dirname 2280 char *tmp = dirname((char*)path); 2281 path[strlen(tmp)] = 0; 2282 #elif (__APPLE__ || __FreeBSD__ || __DragonFly__) 2283 // pointer to internal buffer in dirname 2284 char *tmp = dirname((char*)path); 2285 path[strlen(tmp)] = 0; 2286 #elif (__TERMUX__) 2287 // dirname is not implemented 2288 size_t len = strlen(path); 2289 rangeDown(i, len) { 2290 if (path[i] == '/') { 2291 path[i] = 0; 2292 break; 2293 } 2294 } 2295 #else 2296 dirname(path); 2297 #endif 2298 return(path); 2299 } 2300 2301 /** 2302 * buffer size dirname 2303 * 2304 * the buffer size (path) must be at least 3 chars 2305 * 2306 * \param 2307 * path 2308 * \param 2309 * pathSize path buffer size, the path strlen will be at most pathSize-1 2310 * \return 2311 * path without basename (last item in the path) 2312 * "./" when path is blank or when there is only one item in the path 2313 * NULL when path is NULL 2314 */ 2315 char *bLDirname(char *path, size_t pathSize) { 2316 2317 if (!path || !pathSize) { 2318 return(NULL); 2319 } 2320 2321 path[pathSize-1] = 0; 2322 return(bDirname(path)); 2323 } 2324 2325 #if (__OpenBSD__ || __HAIKU__) 2326 /** 2327 * expands ~/ ($HOME) or ~USER\n 2328 * duplicate and expand path. The original remains unchanged. 2329 * 2330 * \param 2331 * path string 2332 * \return 2333 * new string path or NULL (you must free the pointer) 2334 */ 2335 char *expandHome(const char* path) { 2336 2337 // sanity checks 2338 if (!path) { 2339 return(NULL); 2340 } 2341 2342 if (path[0] == 0) { 2343 // path is empty 2344 return(strdup(path)); 2345 } 2346 2347 // steps 2348 // determine path format 2349 // set user name, either current user or user name in path 2350 // add : at the end of username to match line in the /etc/passwd file 2351 // find home path in the passwd file 2352 2353 enum {noExpand, currentUser, otherUser}; 2354 2355 // determine path format 2356 int status = noExpand; 2357 if (path[0] == '~' and (path[1] == '/' or path[1] == 0)) { 2358 // path="~/..." 2359 status = currentUser; 2360 } 2361 elif (path[0] == '~' and path[1] != '/') { 2362 // path="~USER..." 2363 status = otherUser; 2364 } 2365 2366 // there is no tilde to expand, return path unchanged 2367 if (status == noExpand) { 2368 return(strdup(path)); 2369 } 2370 2371 // set user name, either current user or user name in path 2372 char user[33] = {0}; 2373 size_t pathStart = 0; 2374 2375 if (status == currentUser) { 2376 // use getlogin to find current username 2377 // sizeof(user)-1 to keep a char tp append final ':' 2378 if (getlogin_r(user, sizeof(user)-1)) { 2379 // error 2380 logME(libsheepyErrorMask, "getlogin for current user"); 2381 } { 2382 pathStart = 1; 2383 } 2384 } 2385 else { 2386 // username is in path 2387 // from index 1 (skip ~) to the first / 2388 char *slash = findS(path, "/"); 2389 if (!slash) { 2390 // no slash found, path is in the form: ~USER 2391 // copy string after ~ to the end of the string 2392 pErrorNULL(strLCpy(user, sizeof(user)-1, path+1)); 2393 pathStart = strlen(path); 2394 } 2395 else { 2396 // copy string after ~ to first slash 2397 pathStart = slash - path; 2398 pErrorNULL(strLNCat(user, sizeof(user)-1, path+1, pathStart-1)); 2399 } 2400 } 2401 2402 // add : at the end of username to match line in passwd 2403 size_t len = strlen(user); 2404 user[len] = ':'; 2405 user[len+1] = 0; 2406 2407 2408 // find home path in the passwd file 2409 char **pwd = readText("/etc/passwd"); 2410 2411 if (!pwd) { 2412 return(NULL); 2413 } 2414 2415 // result 2416 char *r = NULL; 2417 2418 forEachS(pwd, l) { 2419 if (startsWithS(l, user)) { 2420 // found the user 2421 char **l_l = split(l, ":"); 2422 // copy home path to result 2423 r = strdup(l_l[5]); 2424 listFreeS(l_l); 2425 break; 2426 } 2427 } 2428 2429 listFreeS(pwd); 2430 2431 if (!r) { 2432 // user not found in this system 2433 return(NULL); 2434 } 2435 2436 // append rest of the path to the result 2437 iAppendS(&r, path + pathStart); 2438 2439 return(r); 2440 } 2441 2442 #else 2443 /** 2444 * expands ~/ ($HOME) or ~USER\n 2445 * duplicate and expand path. The original remains unchanged. 2446 * 2447 * \param 2448 * path string 2449 * \return 2450 * new string path or NULL (you must free the pointer) 2451 */ 2452 char *expandHome(const char* path) { 2453 wordexp_t exp_result; 2454 char *p = NULL; 2455 char *r = NULL; 2456 2457 // sanity checks 2458 // duplicate path to be able to realloc (impossible when path is static) 2459 // expand ~/ or ~USER 2460 2461 // sanity checks 2462 if (!path) { 2463 return(NULL); 2464 } 2465 // duplicate path to be able to realloc (impossible when path is static) 2466 p = strdup(path); 2467 2468 if (path[0] == 0) { 2469 // path is empty 2470 // when path is empty, exp_result.we_wordv[0] is null and strlen segfaults 2471 return(p); 2472 } 2473 2474 #if (!__TERMUX__) 2475 // expand ~/ 2476 int status = wordexp(p, &exp_result, 0);; 2477 switch (status) { 2478 case WRDE_BADCHAR: 2479 free(p); 2480 shEPrintfS("expandHome error: unquoted invalid character\n"); 2481 shEPrintfS("The path was: \"%s\"\n", path); 2482 return(NULL); 2483 case WRDE_BADVAL: 2484 free(p); 2485 shEPrintfS("expandHome error: undefined shell variable\n"); 2486 shEPrintfS("The path was: \"%s\"\n", path); 2487 return(NULL); 2488 case WRDE_NOSPACE: 2489 free(p); 2490 shEPrintfS("expandHome error: out of memory\n"); 2491 shEPrintfS("The path was: \"%s\"\n", path); 2492 return(NULL); 2493 case WRDE_SYNTAX: 2494 free(p); 2495 shEPrintfS("expandHome error: syntax error\n"); 2496 shEPrintfS("The path was: \"%s\"\n", path); 2497 return(NULL); 2498 default: 2499 break; 2500 } 2501 r = REALLOC(p, strlen(exp_result.we_wordv[0])+1); 2502 if (!r) { 2503 // free p when realloc fails 2504 free(p); 2505 return(NULL); 2506 } 2507 strcpy(r, exp_result.we_wordv[0]); 2508 wordfree(&exp_result); 2509 #else 2510 iReplaceS(&p, "~", "/data/data/com.termux/files/home", 1); 2511 r = p; 2512 #endif 2513 return(r); 2514 } 2515 2516 #endif 2517 2518 #if (__OpenBSD__ || __HAIKU__) 2519 /** 2520 * expands ~/ ($HOME) or ~USER\n 2521 * 2522 * expand path. 2523 * 2524 * \param 2525 * path: string (this parameter is reallocated) 2526 * \return 2527 * path modified path\n 2528 * NULL error 2529 */ 2530 char *iExpandHome(char **path) { 2531 2532 // sanity checks 2533 if (!path || !*path) { 2534 return(NULL); 2535 } 2536 2537 2538 if ((*path)[0] == 0) { 2539 // path is empty 2540 return(*path); 2541 } 2542 2543 // steps 2544 // determine path format 2545 // set user name, either current user or user name in path 2546 // add : at the end of username to match line in the /etc/passwd file 2547 // find home path in the passwd file 2548 2549 enum {noExpand, currentUser, otherUser}; 2550 2551 // determine path format 2552 int status = noExpand; 2553 if ((*path)[0] == '~' and ((*path)[1] == '/' or (*path)[1] == 0)) { 2554 // path="~/..." 2555 status = currentUser; 2556 } 2557 elif ((*path)[0] == '~' and (*path)[1] != '/') { 2558 // path="~USER..." 2559 status = otherUser; 2560 } 2561 2562 // there is no tilde to expand, return path unchanged 2563 if (status == noExpand) { 2564 return(*path); 2565 } 2566 2567 // set user name, either current user or user name in path 2568 char user[33] = {0}; 2569 size_t pathStart = 0; 2570 2571 if (status == currentUser) { 2572 // use getlogin to find current username 2573 // sizeof(user)-1 to keep a char tp append final ':' 2574 if (getlogin_r(user, sizeof(user)-1)) { 2575 // error 2576 logME(libsheepyErrorMask, "getlogin for current user"); 2577 } { 2578 pathStart = 1; 2579 } 2580 } 2581 else { 2582 // username is in path 2583 // from index 1 (skip ~) to the first / 2584 char *slash = findS((*path), "/"); 2585 if (!slash) { 2586 // no slash found, path is in the form: ~USER 2587 // copy string after ~ to the end of the string 2588 pErrorNULL(strLCpy(user, sizeof(user)-1, (*path)+1)); 2589 pathStart = strlen(*path); 2590 } 2591 else { 2592 // copy string after ~ to first slash 2593 pathStart = slash - (*path); 2594 pErrorNULL(strLNCat(user, sizeof(user)-1, (*path)+1, pathStart-1)); 2595 } 2596 } 2597 2598 // add : at the end of username to match line in passwd 2599 size_t len = strlen(user); 2600 user[len] = ':'; 2601 user[len+1] = 0; 2602 2603 2604 // find home path in the passwd file 2605 char **pwd = readText("/etc/passwd"); 2606 2607 if (!pwd) { 2608 return(NULL); 2609 } 2610 2611 // result 2612 char *r = NULL; 2613 2614 forEachS(pwd, l) { 2615 if (startsWithS(l, user)) { 2616 // found the user 2617 char **l_l = split(l, ":"); 2618 // copy home path to result 2619 r = strdup(l_l[5]); 2620 listFreeS(l_l); 2621 break; 2622 } 2623 } 2624 2625 listFreeS(pwd); 2626 2627 if (!r) { 2628 // user not found in this system 2629 return(NULL); 2630 } 2631 2632 // append rest of the path to the result 2633 iAppendS(&r, (*path) + pathStart); 2634 2635 free(*path); 2636 *path = r; 2637 2638 return(r); 2639 } 2640 2641 #else 2642 /** 2643 * expands ~/ ($HOME) or ~USER\n 2644 * 2645 * duplicate and expand path. 2646 * 2647 * \param 2648 * path: string (this parameter is reallocated) 2649 * \return 2650 * path modified path\n 2651 * NULL error 2652 */ 2653 char *iExpandHome(char **path) { 2654 wordexp_t exp_result; 2655 2656 // sanity checks 2657 // duplicate path to be able to realloc (impossible when path is static) 2658 // expand ~/ or ~USER 2659 2660 // sanity checks 2661 if (!path || !*path) { 2662 return(NULL); 2663 } 2664 2665 if ((*path)[0] == 0) { 2666 // path is empty 2667 // when path is empty, exp_result.we_wordv[0] is null and strlen segfaults 2668 return(*path); 2669 } 2670 2671 #if (!__TERMUX__) 2672 // expand ~/ 2673 int status = wordexp(*path, &exp_result, 0);; 2674 switch (status) { 2675 case WRDE_BADCHAR: 2676 shEPrintfS("iExpandHome error: unquoted invalid character\n"); 2677 shEPrintfS("The path was: \"%s\"\n", *path); 2678 return(NULL); 2679 case WRDE_BADVAL: 2680 shEPrintfS("iExpandHome error: undefined shell variable\n"); 2681 shEPrintfS("The path was: \"%s\"\n", *path); 2682 return(NULL); 2683 case WRDE_NOSPACE: 2684 shEPrintfS("iExpandHome error: out of memory\n"); 2685 shEPrintfS("The path was: \"%s\"\n", *path); 2686 return(NULL); 2687 case WRDE_SYNTAX: 2688 shEPrintfS("iExpandHome error: syntax error\n"); 2689 shEPrintfS("The path was: \"%s\"\n", *path); 2690 return(NULL); 2691 default: 2692 break; 2693 } 2694 char *tmp = REALLOC(*path, strlen(exp_result.we_wordv[0])+1); 2695 if (!tmp) { 2696 // realloc failed 2697 return(NULL); 2698 } 2699 *path = tmp; 2700 strcpy(*path, exp_result.we_wordv[0]); 2701 wordfree(&exp_result); 2702 #else 2703 iReplaceS(path, "~", "/data/data/com.termux/files/home", 1); 2704 #endif 2705 return(*path); 2706 } 2707 #endif 2708 2709 #if (__OpenBSD__ || __HAIKU__) 2710 /** 2711 * buffer expands ~/ ($HOME) or ~USER\n 2712 * 2713 * expand path 2714 * 2715 * \param 2716 * path: string 2717 * \return 2718 * path modified path\n 2719 * NULL error 2720 */ 2721 char *bExpandHome(char *path) { 2722 2723 // sanity checks 2724 if (!path) { 2725 return(NULL); 2726 } 2727 2728 if (path[0] == 0) { 2729 // path is empty 2730 return(path); 2731 } 2732 2733 // steps 2734 // determine path format 2735 // set user name, either current user or user name in path 2736 // add : at the end of username to match line in the /etc/passwd file 2737 // find home path in the passwd file 2738 2739 enum {noExpand, currentUser, otherUser}; 2740 2741 // determine path format 2742 int status = noExpand; 2743 if (path[0] == '~' and (path[1] == '/' or path[1] == 0)) { 2744 // path="~/..." 2745 status = currentUser; 2746 } 2747 elif (path[0] == '~' and path[1] != '/') { 2748 // path="~USER..." 2749 status = otherUser; 2750 } 2751 2752 // there is no tilde to expand, return path unchanged 2753 if (status == noExpand) { 2754 return(path); 2755 } 2756 2757 // set user name, either current user or user name in path 2758 char user[33] = {0}; 2759 size_t pathStart = 0; 2760 2761 if (status == currentUser) { 2762 // use getlogin to find current username 2763 // sizeof(user)-1 to keep a char tp append final ':' 2764 if (getlogin_r(user, sizeof(user)-1)) { 2765 // error 2766 logME(libsheepyErrorMask, "getlogin for current user"); 2767 } { 2768 pathStart = 1; 2769 } 2770 } 2771 else { 2772 // username is in path 2773 // from index 1 (skip ~) to the first / 2774 char *slash = findS(path, "/"); 2775 if (!slash) { 2776 // no slash found, path is in the form: ~USER 2777 // copy string after ~ to the end of the string 2778 pErrorNULL(strLCpy(user, sizeof(user)-1, path+1)); 2779 pathStart = strlen(path); 2780 } 2781 else { 2782 // copy string after ~ to first slash 2783 pathStart = slash - path; 2784 pErrorNULL(strLNCat(user, sizeof(user)-1, path+1, pathStart-1)); 2785 } 2786 } 2787 2788 // add : at the end of username to match line in passwd 2789 size_t len = strlen(user); 2790 user[len] = ':'; 2791 user[len+1] = 0; 2792 2793 2794 // find home path in the passwd file 2795 char **pwd = readText("/etc/passwd"); 2796 2797 if (!pwd) { 2798 return(NULL); 2799 } 2800 2801 // result 2802 char *r = NULL; 2803 2804 forEachS(pwd, l) { 2805 if (startsWithS(l, user)) { 2806 // found the user 2807 char **l_l = split(l, ":"); 2808 // copy home path to result 2809 r = strdup(l_l[5]); 2810 listFreeS(l_l); 2811 break; 2812 } 2813 } 2814 2815 listFreeS(pwd); 2816 2817 if (!r) { 2818 // user not found in this system 2819 return(NULL); 2820 } 2821 2822 // append rest of the path to the result 2823 iAppendS(&r, path + pathStart); 2824 2825 strcpy(path, r); 2826 free(r); 2827 return(path); 2828 } 2829 2830 #else 2831 /** 2832 * buffer expands ~/ ($HOME) or ~USER\n 2833 * 2834 * expand path 2835 * 2836 * \param 2837 * path: string 2838 * \return 2839 * path modified path\n 2840 * NULL error 2841 */ 2842 char *bExpandHome(char *path) { 2843 wordexp_t exp_result; 2844 2845 // sanity checks 2846 if (!path) { 2847 return(NULL); 2848 } 2849 2850 if (path[0] == 0) { 2851 // path is empty 2852 // when path is empty, exp_result.we_wordv[0] is null and strlen segfaults 2853 return(path); 2854 } 2855 2856 #if (!__TERMUX__) 2857 // expand ~/ 2858 int status = wordexp(path, &exp_result, 0);; 2859 switch (status) { 2860 case WRDE_BADCHAR: 2861 shEPrintfS("bExpandHome error: unquoted invalid character\n"); 2862 shEPrintfS("The path was: \"%s\"\n", path); 2863 return(NULL); 2864 case WRDE_BADVAL: 2865 shEPrintfS("bExpandHome error: undefined shell variable\n"); 2866 shEPrintfS("The path was: \"%s\"\n", path); 2867 return(NULL); 2868 case WRDE_NOSPACE: 2869 shEPrintfS("bExpandHome error: out of memory\n"); 2870 shEPrintfS("The path was: \"%s\"\n", path); 2871 return(NULL); 2872 case WRDE_SYNTAX: 2873 shEPrintfS("bExpandHome error: syntax error\n"); 2874 shEPrintfS("The path was: \"%s\"\n", path); 2875 return(NULL); 2876 default: 2877 break; 2878 } 2879 strcpy(path, exp_result.we_wordv[0]); 2880 wordfree(&exp_result); 2881 #else 2882 bReplaceS(path, "~", "/data/data/com.termux/files/home", 1); 2883 #endif 2884 return(path); 2885 } 2886 #endif 2887 2888 #if (__OpenBSD__ || __HAIKU__) 2889 /** 2890 * buffer size expands ~/ ($HOME) or ~USER\n 2891 * 2892 * expand path 2893 * 2894 * \param 2895 * path: string 2896 * \param 2897 * pathSize path buffer size, the path strlen will be at most pathSize-1 2898 * \return 2899 * path modified path\n 2900 * NULL error 2901 */ 2902 char *bLExpandHome(char *path, size_t pathSize) { 2903 2904 // sanity checks 2905 if (!path) { 2906 return(NULL); 2907 } 2908 2909 if (path[0] == 0) { 2910 // path is empty 2911 return(path); 2912 } 2913 2914 // steps 2915 // determine path format 2916 // set user name, either current user or user name in path 2917 // add : at the end of username to match line in the /etc/passwd file 2918 // find home path in the passwd file 2919 2920 enum {noExpand, currentUser, otherUser}; 2921 2922 // determine path format 2923 int status = noExpand; 2924 if (path[0] == '~' and (path[1] == '/' or path[1] == 0)) { 2925 // path="~/..." 2926 status = currentUser; 2927 } 2928 elif (path[0] == '~' and path[1] != '/') { 2929 // path="~USER..." 2930 status = otherUser; 2931 } 2932 2933 // there is no tilde to expand, return path unchanged 2934 if (status == noExpand) { 2935 // make sure path is no longer than pathSize 2936 path[pathSize-1] = 0; 2937 return(path); 2938 } 2939 2940 // set user name, either current user or user name in path 2941 char user[33] = {0}; 2942 size_t pathStart = 0; 2943 2944 if (status == currentUser) { 2945 // use getlogin to find current username 2946 // sizeof(user)-1 to keep a char tp append final ':' 2947 if (getlogin_r(user, sizeof(user)-1)) { 2948 // error 2949 logME(libsheepyErrorMask, "getlogin for current user"); 2950 } { 2951 pathStart = 1; 2952 } 2953 } 2954 else { 2955 // username is in path 2956 // from index 1 (skip ~) to the first / 2957 char *slash = findS(path, "/"); 2958 if (!slash) { 2959 // no slash found, path is in the form: ~USER 2960 // copy string after ~ to the end of the string 2961 pErrorNULL(strLCpy(user, sizeof(user)-1, path+1)); 2962 pathStart = strlen(path); 2963 } 2964 else { 2965 // copy string after ~ to first slash 2966 pathStart = slash - path; 2967 strLNCat(user, sizeof(user)-1, path+1, pathStart-1); 2968 } 2969 } 2970 2971 // add : at the end of username to match line in passwd 2972 size_t len = strlen(user); 2973 user[len] = ':'; 2974 user[len+1] = 0; 2975 2976 2977 // find home path in the passwd file 2978 char **pwd = readText("/etc/passwd"); 2979 2980 if (!pwd) { 2981 return(NULL); 2982 } 2983 2984 // result 2985 char *r = NULL; 2986 2987 forEachS(pwd, l) { 2988 if (startsWithS(l, user)) { 2989 // found the user 2990 char **l_l = split(l, ":"); 2991 // copy home path to result 2992 r = strdup(l_l[5]); 2993 listFreeS(l_l); 2994 break; 2995 } 2996 } 2997 2998 listFreeS(pwd); 2999 3000 if (!r) { 3001 // user not found in this system 3002 return(NULL); 3003 } 3004 3005 // append rest of the path to the result 3006 iAppendS(&r, path + pathStart); 3007 3008 pErrorNULL(strLCpy(path, pathSize, r)); 3009 free(r); 3010 return(path); 3011 } 3012 3013 #else 3014 3015 /** 3016 * buffer size expands ~/ ($HOME) or ~USER\n 3017 * 3018 * expand path 3019 * 3020 * \param 3021 * path: string 3022 * \param 3023 * pathSize path buffer size, the path strlen will be at most pathSize-1 3024 * \return 3025 * path modified path\n 3026 * NULL error 3027 */ 3028 char *bLExpandHome(char *path, size_t pathSize) { 3029 wordexp_t exp_result; 3030 3031 // sanity checks 3032 if (!path) { 3033 return(NULL); 3034 } 3035 3036 if (path[0] == 0) { 3037 // path is empty 3038 // when path is empty, exp_result.we_wordv[0] is null and strlen segfaults 3039 return(path); 3040 } 3041 3042 #if (!__TERMUX__) 3043 // expand ~/ 3044 int status = wordexp(path, &exp_result, 0);; 3045 switch (status) { 3046 case WRDE_BADCHAR: 3047 shEPrintfS("bExpandHome error: unquoted invalid character\n"); 3048 shEPrintfS("The path was: \"%s\"\n", path); 3049 return(NULL); 3050 case WRDE_BADVAL: 3051 shEPrintfS("bExpandHome error: undefined shell variable\n"); 3052 shEPrintfS("The path was: \"%s\"\n", path); 3053 return(NULL); 3054 case WRDE_NOSPACE: 3055 shEPrintfS("bExpandHome error: out of memory\n"); 3056 shEPrintfS("The path was: \"%s\"\n", path); 3057 return(NULL); 3058 case WRDE_SYNTAX: 3059 shEPrintfS("bExpandHome error: syntax error\n"); 3060 shEPrintfS("The path was: \"%s\"\n", path); 3061 return(NULL); 3062 default: 3063 break; 3064 } 3065 pErrorNULL(strLCpy(path, pathSize, exp_result.we_wordv[0])); 3066 wordfree(&exp_result); 3067 #else 3068 bLReplaceS(path, pathSize, "~", "/data/data/com.termux/files/home", 1); 3069 #endif 3070 return(path); 3071 } 3072 #endif 3073 3074 /** 3075 * normalize path 3076 * 3077 * remove unecessary /, .. and . 3078 * leading / is kept 3079 * leading .. is kept 3080 * leading . is removed 3081 * 3082 * '/../' becomes '/' 3083 * 3084 * \param 3085 * path 3086 * \return 3087 * new normalized path (you must free the pointer) 3088 * NULL when path is NULL 3089 */ 3090 char *normalizePath(const char *path) { 3091 3092 // sanity checks 3093 if (!path) { 3094 return(NULL); 3095 } 3096 3097 if (isEmptyS(path)) { 3098 return(strdup("")); 3099 } 3100 3101 // list path elements 3102 char **pathL = split(path, "/"); 3103 3104 // remove empty elements 3105 pErrorNULL(iListCompactS(&pathL)); 3106 3107 if (listIsEmptyS(pathL)) { 3108 listFreeS(pathL); 3109 // keep leading / 3110 return(strdup("/")); 3111 } 3112 3113 // new path elements 3114 char **list = NULL; 3115 3116 // detect leading double dots 3117 bool onlyLeadingDoubleDots = true; 3118 3119 // add elements to list 3120 forEachCharP(pathL, level) { 3121 if (strEq(*level, "..")) { 3122 if (onlyLeadingDoubleDots) { 3123 // keep leading .. 3124 pErrorNULL(listPushS(&list, "..")); 3125 } 3126 else { 3127 // remove .. in path 3128 char *s = listPopS(&list); 3129 free(s); 3130 } 3131 } 3132 else if (!strEq(*level, ".")) { 3133 // remove . and add elements 3134 pErrorNULL(listPushS(&list, *level)); 3135 // an element is pushed, so this is the end of leading double dots 3136 onlyLeadingDoubleDots = false; 3137 } 3138 } 3139 3140 if (listLengthS(list) == 1 && strEq(list[0], "..") && getS(path, 0) == '/') { 3141 // handle ../ .. /.. /../ 3142 list[0][0] = 0; 3143 } 3144 3145 // handle /.: add empty string 3146 if (strEq(path, "/.")) { 3147 pErrorNULL(listPushS(&list, "")); 3148 } 3149 3150 // keep leading / 3151 if (getS(path, 0) == '/') { 3152 if (listIsEmptyS(list)) { 3153 // .. cancelled path: /a/b/../.. 3154 listFreeManyS(pathL, list); 3155 return(strdup("/")); 3156 } 3157 pErrorNULL(listPrependS(&list, "")); 3158 } 3159 3160 // create new path 3161 char *r = join(list, "/");; 3162 // keep order pathL, list because list can be NULL 3163 // if it is first listFreeManyS stops early 3164 listFreeManyS(pathL, list); 3165 if (!r) { 3166 return(strdup("")); 3167 } 3168 return(r); 3169 } 3170 3171 3172 /** 3173 * normalize path 3174 * 3175 * remove unecessary /, .. and . 3176 * leading / is kept 3177 * leading .. is kept 3178 * leading . is removed 3179 * 3180 * '/../' becomes '/' 3181 * 3182 * \param 3183 * path (this parameter is reallocated) 3184 * \return 3185 * path modified path 3186 * NULL when path is NULL 3187 */ 3188 char *iNormalizePath(char **path) { 3189 3190 // sanity checks 3191 if (!path || !*path) { 3192 return(NULL); 3193 } 3194 3195 if (isEmptyS(*path)) { 3196 pErrorNULL(iEmptySF(path)); 3197 return(*path); 3198 } 3199 3200 // list path elements 3201 char **pathL = split(*path, "/"); 3202 3203 // remove empty elements 3204 pErrorNULL(iListCompactS(&pathL)); 3205 3206 if (listIsEmptyS(pathL)) { 3207 listFreeS(pathL); 3208 // keep leading / 3209 free(*path); 3210 *path = strdup("/"); 3211 return(*path); 3212 } 3213 3214 // new path elements 3215 char **list = NULL; 3216 3217 // detect leading double dots 3218 bool onlyLeadingDoubleDots = true; 3219 3220 // add elements to list 3221 forEachCharP(pathL, level) { 3222 if (strEq(*level, "..")) { 3223 if (onlyLeadingDoubleDots) { 3224 // keep leading .. 3225 pErrorNULL(listPushS(&list, "..")); 3226 } 3227 else { 3228 // remove .. in path 3229 char *s = listPopS(&list); 3230 free(s); 3231 } 3232 } 3233 else if (!strEq(*level, ".")) { 3234 // remove . and add elements 3235 pErrorNULL(listPushS(&list, *level)); 3236 // an element is pushed, so this is the end of leading double dots 3237 onlyLeadingDoubleDots = false; 3238 } 3239 } 3240 3241 if (listLengthS(list) == 1 && strEq(list[0], "..") && getS(*path, 0) == '/') { 3242 // handle ../ .. /.. /../ 3243 list[0][0] = 0; 3244 } 3245 3246 // handle /.: add empty string 3247 if (strEq(*path, "/.")) { 3248 pErrorNULL(listPushS(&list, "")); 3249 } 3250 3251 // keep leading / 3252 if (getS(*path, 0) == '/') { 3253 if (listIsEmptyS(list)) { 3254 // .. cancelled path: /a/b/../.. 3255 listFreeManyS(pathL, list); 3256 free(*path); 3257 *path = strdup("/"); 3258 return(*path); 3259 } 3260 pErrorNULL(listPrependS(&list, "")); 3261 } 3262 3263 // create new path 3264 char *r = join(list, "/");; 3265 // keep order pathL, list because list can be NULL 3266 // if it is first listFreeManyS stops early 3267 listFreeManyS(pathL, list); 3268 free(*path); 3269 if (!r) { 3270 *path = strdup(""); 3271 return(*path); 3272 } 3273 *path = r; 3274 return(*path); 3275 } 3276 3277 /** 3278 * buffer normalize path 3279 * 3280 * remove unecessary /, .. and . 3281 * leading / is kept 3282 * leading .. is kept 3283 * leading . is removed 3284 * 3285 * '/../' becomes '/' 3286 * 3287 * \param 3288 * path 3289 * \return 3290 * path modified path 3291 * NULL when path is NULL 3292 */ 3293 char *bNormalizePath(char *path) { 3294 3295 // sanity checks 3296 if (!path) { 3297 return(NULL); 3298 } 3299 3300 if (isEmptyS(path)) { 3301 bEmptyS(path); 3302 return(path); 3303 } 3304 3305 // list path elements 3306 char **pathL = split(path, "/"); 3307 3308 // remove empty elements 3309 pErrorNULL(iListCompactS(&pathL)); 3310 3311 if (listIsEmptyS(pathL)) { 3312 listFreeS(pathL); 3313 // keep leading / 3314 strcpy(path, "/"); 3315 return(path); 3316 } 3317 3318 // new path elements 3319 char **list = NULL; 3320 3321 // detect leading double dots 3322 bool onlyLeadingDoubleDots = true; 3323 3324 // add elements to list 3325 forEachCharP(pathL, level) { 3326 if (strEq(*level, "..")) { 3327 if (onlyLeadingDoubleDots) { 3328 // keep leading .. 3329 pErrorNULL(listPushS(&list, "..")); 3330 } 3331 else { 3332 // remove .. in path 3333 char *s = listPopS(&list); 3334 free(s); 3335 } 3336 } 3337 else if (!strEq(*level, ".")) { 3338 // remove . and add elements 3339 pErrorNULL(listPushS(&list, *level)); 3340 // an element is pushed, so this is the end of leading double dots 3341 onlyLeadingDoubleDots = false; 3342 } 3343 } 3344 3345 if (listLengthS(list) == 1 && strEq(list[0], "..") && getS(path, 0) == '/') { 3346 // handle ../ .. /.. /../ 3347 list[0][0] = 0; 3348 } 3349 3350 // handle /.: add empty string 3351 if (strEq(path, "/.")) { 3352 pErrorNULL(listPushS(&list, "")); 3353 } 3354 3355 // keep leading / 3356 if (getS(path, 0) == '/') { 3357 if (listIsEmptyS(list)) { 3358 // .. cancelled path: /a/b/../.. 3359 listFreeManyS(pathL, list); 3360 strcpy(path, "/"); 3361 return(path); 3362 } 3363 pErrorNULL(listPrependS(&list, "")); 3364 } 3365 3366 // create new path 3367 char *r = join(list, "/");; 3368 // keep order pathL, list because list can be NULL 3369 // if it is first listFreeManyS stops early 3370 listFreeManyS(pathL, list); 3371 if (!r) { 3372 bEmptyS(path); 3373 return(path); 3374 } 3375 strcpy(path, r); 3376 free(r); 3377 return(path); 3378 } 3379 3380 /** 3381 * buffer size normalize path 3382 * 3383 * path must be at least 2 chars 3384 * 3385 * remove unecessary /, .. and . 3386 * leading / is kept 3387 * leading .. is kept 3388 * leading . is removed 3389 * 3390 * '/../' becomes '/' 3391 * 3392 * \param 3393 * path 3394 * \param 3395 * pathSize path buffer size, the path strlen will be at most pathSize-1 3396 * \return 3397 * path modified path 3398 * NULL when path is NULL 3399 */ 3400 char *bLNormalizePath(char *path, size_t pathSize) { 3401 3402 // sanity checks 3403 if (!path) { 3404 return(NULL); 3405 } 3406 3407 if (!pathSize) { 3408 return(path); 3409 } 3410 3411 if (isEmptyS(path)) { 3412 bEmptyS(path); 3413 return(path); 3414 } 3415 3416 // list path elements 3417 char **pathL = split(path, "/"); 3418 3419 // remove empty elements 3420 pErrorNULL(iListCompactS(&pathL)); 3421 3422 if (listIsEmptyS(pathL)) { 3423 listFreeS(pathL); 3424 // keep leading / 3425 strcpy(path, "/"); 3426 return(path); 3427 } 3428 3429 // new path elements 3430 char **list = NULL; 3431 3432 // detect leading double dots 3433 bool onlyLeadingDoubleDots = true; 3434 3435 // add elements to list 3436 forEachCharP(pathL, level) { 3437 if (strEq(*level, "..")) { 3438 if (onlyLeadingDoubleDots) { 3439 // keep leading .. 3440 pErrorNULL(listPushS(&list, "..")); 3441 } 3442 else { 3443 // remove .. in path 3444 char *s = listPopS(&list); 3445 free(s); 3446 } 3447 } 3448 else if (!strEq(*level, ".")) { 3449 // remove . and add elements 3450 pErrorNULL(listPushS(&list, *level)); 3451 // an element is pushed, so this is the end of leading double dots 3452 onlyLeadingDoubleDots = false; 3453 } 3454 } 3455 3456 if (listLengthS(list) == 1 && strEq(list[0], "..") && getS(path, 0) == '/') { 3457 // handle ../ .. /.. /../ 3458 list[0][0] = 0; 3459 } 3460 3461 // handle /.: add empty string 3462 if (strEq(path, "/.")) { 3463 pErrorNULL(listPushS(&list, "")); 3464 } 3465 3466 // keep leading / 3467 if (getS(path, 0) == '/') { 3468 if (listIsEmptyS(list)) { 3469 // .. cancelled path: /a/b/../.. 3470 listFreeManyS(pathL, list); 3471 strcpy(path, "/"); 3472 return(path); 3473 } 3474 pErrorNULL(listPrependS(&list, "")); 3475 } 3476 3477 // create new path 3478 char *r = join(list, "/");; 3479 // keep order pathL, list because list can be NULL 3480 // if it is first listFreeManyS stops early 3481 listFreeManyS(pathL, list); 3482 if (!r) { 3483 bEmptyS(path); 3484 return(path); 3485 } 3486 pErrorNULL(strLCpy(path, pathSize, r)); 3487 free(r); 3488 return(path); 3489 } 3490 3491 /** 3492 * relative path 3493 * 3494 * Return a relative filepath to path either from the current directory or from an optional 3495 * start directory 3496 * 3497 * \param 3498 * path path to convert 3499 * \param 3500 * start reference path, cwd when NULL 3501 * \return 3502 * new relative path (you must free the pointer) 3503 * NULL when path is NULL 3504 */ 3505 char *relPath(const char *path, const char *start) { 3506 3507 // sanity checks 3508 if (!path) { 3509 return(NULL); 3510 } 3511 3512 char *r = NULL; 3513 3514 // steps 3515 // normalize path and start 3516 // if start is not set, start is cwd 3517 // when path and start are equal, return "." 3518 // if path is relative path and start is absolute path 3519 // then path is relative to nstart 3520 // if path is absolute path and start is relative path 3521 // then start is relative to cwd 3522 // when path starts with nstart, slice path to only keep the string 3523 // after the end of nstart 3524 // find first uncommon directory between npath and nstart 3525 // count slashes in nstart after first uncommon directory 3526 // go up directories to last common directory between npath and nstart 3527 3528 // normalize path and start 3529 char *npath = expandHome(path); 3530 pErrorNULL(iNormalizePath(&npath)); 3531 char *nstart; 3532 char *cwd = getCwd(); 3533 3534 // if start is not set, start is cwd 3535 if (!start) { 3536 // relative path to cwd 3537 nstart = getCwd(); 3538 } 3539 else { 3540 // use start in argument 3541 nstart = expandHome(start);; 3542 pErrorNULL(iNormalizePath(&nstart)); 3543 } 3544 3545 // when path and start are equal, return "." 3546 if (eqS(npath, nstart)) { 3547 r = strdup("."); 3548 goto end; 3549 } 3550 3551 // if path is relative path and start is absolute path 3552 // then path is relative to nstart 3553 if (npath[0] != '/' and nstart[0] == '/') { 3554 pErrorNULL(iPrependS(&npath, "/")); 3555 pErrorNULL(iPrependS(&npath, nstart)); 3556 pErrorNULL(iNormalizePath(&npath)); 3557 } 3558 3559 // if path is absolute path and start is relative path 3560 // then start is relative to cwd 3561 if (npath[0] == '/' and nstart[0] != '/') { 3562 pErrorNULL(iPrependS(&nstart, "/")); 3563 pErrorNULL(iPrependS(&nstart, cwd)); 3564 pErrorNULL(iNormalizePath(&nstart)); 3565 } 3566 3567 // when path starts with nstart, slice path to only keep the string 3568 // after the end of nstart 3569 if (startsWithS(npath, nstart)) { 3570 if (npath[strlen(nstart)] == '/') { 3571 r = sliceS(npath, (i64)strlen(nstart)+1, 0); 3572 goto end; 3573 } 3574 // handle case when nstart is "/" after normalize 3575 if (npath[strlen(nstart)-1] == '/') { 3576 r = sliceS(npath, (i64)strlen(nstart), 0); 3577 goto end; 3578 } 3579 // fallthrough: npath starts with nstart but is a different path 3580 // Example: npath = "/usr/bin" nstart = "/us" 3581 } 3582 3583 // find first uncommon directory between npath and nstart 3584 // lib/t 3585 // lib/a/b 3586 size_t i = 0; 3587 size_t from = 0; 3588 while (npath[i] and nstart[i]) { 3589 if (npath[i] == '/') { 3590 // i+1 to skip the slash 3591 from = i+1;; 3592 } 3593 if (npath[i] != nstart[i]) { 3594 break; 3595 } 3596 i++; 3597 } 3598 3599 3600 // count slashes in nstart after first uncommon directory 3601 size_t slash = 1; 3602 rangeFrom(j, i, strlen(nstart)) 3603 if (nstart[j] == '/') { 3604 slash++; 3605 } 3606 3607 // go up directories to last common directory between npath and nstart 3608 r = repeatS("../", slash);; 3609 pErrorNULL(iAppendS(&r, npath+from)); 3610 3611 end: 3612 free(npath); 3613 free(nstart); 3614 free(cwd); 3615 return(r); 3616 } 3617 3618 /** 3619 * relative path 3620 * 3621 * Return a relative filepath to path either from the current directory or from an optional 3622 * start directory 3623 * 3624 * \param 3625 * path path to convert (this parameter is reallocated) 3626 * \param 3627 * start reference path, cwd when NULL 3628 * \return 3629 * updated relative path (you must free the pointer) 3630 * NULL when path is NULL 3631 */ 3632 char *iRelPath(char **path, const char *start) { 3633 3634 // sanity checks 3635 if (!path or !*path) { 3636 return(NULL); 3637 } 3638 3639 char *r = NULL; 3640 3641 // steps 3642 // normalize path and start 3643 // if start is not set, start is cwd 3644 // when path and start are equal, return "." 3645 // if path is relative path and start is absolute path 3646 // then path is relative to nstart 3647 // if path is absolute path and start is relative path 3648 // then start is relative to cwd 3649 // when path starts with nstart, slice path to only keep the string 3650 // after the end of nstart 3651 // find first uncommon directory between npath and nstart 3652 // count slashes in nstart after first uncommon directory 3653 // go up directories to last common directory between npath and nstart 3654 3655 // normalize path and start 3656 char *npath = expandHome(*path); 3657 pErrorNULL(iNormalizePath(&npath)); 3658 char *nstart; 3659 char *cwd = getCwd(); 3660 3661 // if start is not set, start is cwd 3662 if (!start) { 3663 // relative path to cwd 3664 nstart = getCwd(); 3665 } 3666 else { 3667 // use start in argument 3668 nstart = expandHome(start);; 3669 pErrorNULL(iNormalizePath(&nstart)); 3670 } 3671 3672 // when path and start are equal, return "." 3673 if (eqS(npath, nstart)) { 3674 r = strdup("."); 3675 goto end; 3676 } 3677 3678 // if path is relative path and start is absolute path 3679 // then path is relative to nstart 3680 if (npath[0] != '/' and nstart[0] == '/') { 3681 pErrorNULL(iPrependS(&npath, "/")); 3682 pErrorNULL(iPrependS(&npath, nstart)); 3683 pErrorNULL(iNormalizePath(&npath)); 3684 } 3685 3686 // if path is absolute path and start is relative path 3687 // then start is relative to cwd 3688 if (npath[0] == '/' and nstart[0] != '/') { 3689 pErrorNULL(iPrependS(&nstart, "/")); 3690 pErrorNULL(iPrependS(&nstart, cwd)); 3691 pErrorNULL(iNormalizePath(&nstart)); 3692 } 3693 3694 // when path starts with nstart, slice path to only keep the string 3695 // after the end of nstart 3696 if (startsWithS(npath, nstart)) { 3697 if (npath[strlen(nstart)] == '/') { 3698 r = sliceS(npath, (i64)strlen(nstart)+1, 0); 3699 goto end; 3700 } 3701 // handle case when nstart is "/" after normalize 3702 if (npath[strlen(nstart)-1] == '/') { 3703 r = sliceS(npath, (i64)strlen(nstart), 0); 3704 goto end; 3705 } 3706 // fallthrough: npath starts with nstart but is a different path 3707 // Example: npath = "/usr/bin" nstart = "/us" 3708 } 3709 3710 3711 // find first uncommon directory between npath and nstart 3712 // lib/t 3713 // lib/a/b 3714 size_t i = 0; 3715 size_t from = 0; 3716 while (npath[i] and nstart[i]) { 3717 if (npath[i] == '/') { 3718 // i+1 to skip the slash 3719 from = i+1; 3720 } 3721 if (npath[i] != nstart[i]) { 3722 break; 3723 } 3724 i++; 3725 } 3726 3727 3728 // count slashes in nstart after first uncommon directory 3729 size_t slash = 1; 3730 rangeFrom(j, i, strlen(nstart)) 3731 if (nstart[j] == '/') { 3732 slash++; 3733 } 3734 3735 // go up directories to last common directory between npath and nstart 3736 r = repeatS("../", slash);; 3737 pErrorNULL(iAppendS(&r, npath+from)); 3738 3739 end: 3740 free(npath); 3741 free(nstart); 3742 free(cwd); 3743 3744 free(*path); 3745 *path = r; 3746 return(*path); 3747 } 3748 3749 /** 3750 * relative path 3751 * 3752 * Return a relative filepath to path either from the current directory or from an optional 3753 * start directory 3754 * 3755 * \param 3756 * path path to convert 3757 * \param 3758 * start reference path, cwd when NULL 3759 * \return 3760 * relative path in dest 3761 * NULL when path or dest are NULL 3762 */ 3763 char *bRelPath(char *dest, const char *path, const char *start) { 3764 3765 // sanity checks 3766 if (!path or !dest) { 3767 return(NULL); 3768 } 3769 3770 char *r = NULL; 3771 3772 // steps 3773 // normalize path and start 3774 // if start is not set, start is cwd 3775 // when path and start are equal, return "." 3776 // if path is relative path and start is absolute path 3777 // then path is relative to nstart 3778 // if path is absolute path and start is relative path 3779 // then start is relative to cwd 3780 // when path starts with nstart, slice path to only keep the string 3781 // after the end of nstart 3782 // find first uncommon directory between npath and nstart 3783 // count slashes in nstart after first uncommon directory 3784 // go up directories to last common directory between npath and nstart 3785 3786 // normalize path and start 3787 char *npath = expandHome(path); 3788 pErrorNULL(iNormalizePath(&npath)); 3789 char *nstart; 3790 char *cwd = getCwd(); 3791 3792 // if start is not set, start is cwd 3793 if (!start) { 3794 // relative path to cwd 3795 nstart = getCwd(); 3796 } 3797 else { 3798 // use start in argument 3799 nstart = expandHome(start);; 3800 pErrorNULL(iNormalizePath(&nstart)); 3801 } 3802 3803 // when path and start are equal, return "." 3804 if (eqS(npath, nstart)) { 3805 r = strdup("."); 3806 goto end; 3807 } 3808 3809 // if path is relative path and start is absolute path 3810 // then path is relative to nstart 3811 if (npath[0] != '/' and nstart[0] == '/') { 3812 pErrorNULL(iPrependS(&npath, "/")); 3813 pErrorNULL(iPrependS(&npath, nstart)); 3814 pErrorNULL(iNormalizePath(&npath)); 3815 } 3816 3817 // if path is absolute path and start is relative path 3818 // then start is relative to cwd 3819 if (npath[0] == '/' and nstart[0] != '/') { 3820 pErrorNULL(iPrependS(&nstart, "/")); 3821 pErrorNULL(iPrependS(&nstart, cwd)); 3822 pErrorNULL(iNormalizePath(&nstart)); 3823 } 3824 3825 // when path starts with nstart, slice path to only keep the string 3826 // after the end of nstart 3827 if (startsWithS(npath, nstart)) { 3828 if (npath[strlen(nstart)] == '/') { 3829 r = sliceS(npath, (i64)strlen(nstart)+1, 0); 3830 goto end; 3831 } 3832 // handle case when nstart is "/" after normalize 3833 if (npath[strlen(nstart)-1] == '/') { 3834 r = sliceS(npath, (i64)strlen(nstart), 0); 3835 goto end; 3836 } 3837 // fallthrough: npath starts with nstart but is a different path 3838 // Example: npath = "/usr/bin" nstart = "/us" 3839 } 3840 3841 // find first uncommon directory between npath and nstart 3842 // lib/t 3843 // lib/a/b 3844 size_t i = 0; 3845 size_t from = 0; 3846 while (npath[i] and nstart[i]) { 3847 if (npath[i] == '/') { 3848 // i+1 to skip the slash 3849 from = i+1; 3850 } 3851 if (npath[i] != nstart[i]) { 3852 break; 3853 } 3854 i++; 3855 } 3856 3857 3858 // count slashes in nstart after first uncommon directory 3859 size_t slash = 1; 3860 rangeFrom(j, i, strlen(nstart)) 3861 if (nstart[j] == '/') { 3862 slash++; 3863 } 3864 3865 // go up directories to last common directory between npath and nstart 3866 r = repeatS("../", slash);; 3867 pErrorNULL(iAppendS(&r, npath+from)); 3868 3869 end: 3870 free(npath); 3871 free(nstart); 3872 free(cwd); 3873 3874 strcpy(dest, r); 3875 free(r); 3876 return(dest); 3877 } 3878 3879 /** 3880 * relative path 3881 * 3882 * Return a relative filepath to path either from the current directory or from an optional 3883 * start directory 3884 * 3885 * \param 3886 * path path to convert 3887 * \param 3888 * start reference path, cwd when NULL 3889 * \return 3890 * relative path in dest 3891 * NULL when path or dest are NULL 3892 */ 3893 char *bLRelPath(char *dest, size_t destSize, char *path, const char *start) { 3894 3895 // sanity checks 3896 if (!path or !dest) { 3897 return(NULL); 3898 } 3899 3900 char *r = NULL; 3901 3902 // steps 3903 // normalize path and start 3904 // if start is not set, start is cwd 3905 // when path and start are equal, return "." 3906 // if path is relative path and start is absolute path 3907 // then path is relative to nstart 3908 // if path is absolute path and start is relative path 3909 // then start is relative to cwd 3910 // when path starts with nstart, slice path to only keep the string 3911 // after the end of nstart 3912 // find first uncommon directory between npath and nstart 3913 // count slashes in nstart after first uncommon directory 3914 // go up directories to last common directory between npath and nstart 3915 3916 // normalize path and start 3917 char *npath = expandHome(path); 3918 pErrorNULL(iNormalizePath(&npath)); 3919 char *nstart; 3920 char *cwd = getCwd(); 3921 3922 // if start is not set, start is cwd 3923 if (!start) { 3924 // relative path to cwd 3925 nstart = getCwd(); 3926 } 3927 else { 3928 // use start in argument 3929 nstart = expandHome(start);; 3930 pErrorNULL(iNormalizePath(&nstart)); 3931 } 3932 3933 // when path and start are equal, return "." 3934 if (eqS(npath, nstart)) { 3935 r = strdup("."); 3936 goto end; 3937 } 3938 3939 // if path is relative path and start is absolute path 3940 // then path is relative to nstart 3941 if (npath[0] != '/' and nstart[0] == '/') { 3942 pErrorNULL(iPrependS(&npath, "/")); 3943 pErrorNULL(iPrependS(&npath, nstart)); 3944 pErrorNULL(iNormalizePath(&npath)); 3945 } 3946 3947 // if path is absolute path and start is relative path 3948 // then start is relative to cwd 3949 if (npath[0] == '/' and nstart[0] != '/') { 3950 pErrorNULL(iPrependS(&nstart, "/")); 3951 pErrorNULL(iPrependS(&nstart, cwd)); 3952 pErrorNULL(iNormalizePath(&nstart)); 3953 } 3954 3955 // when path starts with nstart, slice path to only keep the string 3956 // after the end of nstart 3957 if (startsWithS(npath, nstart)) { 3958 if (npath[strlen(nstart)] == '/') { 3959 r = sliceS(npath, (i64)strlen(nstart)+1, 0); 3960 goto end; 3961 } 3962 // handle case when nstart is "/" after normalize 3963 if (npath[strlen(nstart)-1] == '/') { 3964 r = sliceS(npath, (i64)strlen(nstart), 0); 3965 goto end; 3966 } 3967 // fallthrough: npath starts with nstart but is a different path 3968 // Example: npath = "/usr/bin" nstart = "/us" 3969 } 3970 3971 // find first uncommon directory between npath and nstart 3972 // lib/t 3973 // lib/a/b 3974 size_t i = 0; 3975 size_t from = 0; 3976 while (npath[i] and nstart[i]) { 3977 if (npath[i] == '/') { 3978 from = i+1; 3979 } 3980 if (npath[i] != nstart[i]) { 3981 break; 3982 } 3983 i++; 3984 } 3985 3986 3987 // count slashes in nstart after first uncommon directory 3988 size_t slash = 1; 3989 rangeFrom(j, i, strlen(nstart)) 3990 if (nstart[j] == '/') { 3991 slash++; 3992 } 3993 3994 // go up directories to last common directory between npath and nstart 3995 r = repeatS("../", slash);; 3996 pErrorNULL(iAppendS(&r, npath+from)); 3997 3998 end: 3999 free(npath); 4000 free(nstart); 4001 free(cwd); 4002 4003 pErrorNULL(strLCpy(dest, destSize, r)); 4004 free(r); 4005 return(dest); 4006 } 4007 4008 4009 4010 /** 4011 * get home path 4012 * 4013 * \return 4014 * home path (you must free the pointer) 4015 */ 4016 char *getHomePath(void) { 4017 4018 struct passwd *pw = getpwuid(getuid());; 4019 if (!pw) { 4020 return(NULL); 4021 } 4022 return(strdup(pw->pw_dir)); 4023 } 4024 4025 /** 4026 * copy home path to path 4027 * 4028 * \param 4029 * path buffer large enough for home path 4030 * \return 4031 * path pointer 4032 */ 4033 char *bGetHomePath(char *path) { 4034 4035 struct passwd *pw = getpwuid(getuid());; 4036 if (!pw) { 4037 return(NULL); 4038 } 4039 strcpy(path, pw->pw_dir); 4040 return(path); 4041 } 4042 4043 /** 4044 * copy home path to path maximum pathSize 4045 * 4046 * \param 4047 * path buffer large enough for home path 4048 * \param 4049 * pathSize size of path 4050 * \return 4051 * path pointer 4052 */ 4053 char *bLGetHomePath(char *path, size_t pathSize) { 4054 4055 struct passwd *pw = getpwuid(getuid());; 4056 if (!pw) { 4057 return(NULL); 4058 } 4059 if (strlen(pw->pw_dir)+1 > pathSize) { 4060 return(NULL); 4061 } 4062 pErrorNULL(strLCpy(path, pathSize, pw->pw_dir)); 4063 return(path); 4064 } 4065 4066 /** 4067 * get home path as a const char* 4068 * 4069 * \return 4070 * home path 4071 */ 4072 const char *getCHomePath(void) { 4073 4074 struct passwd *pw = getpwuid(getuid());; 4075 if (!pw) { 4076 return(NULL); 4077 } 4078 return(pw->pw_dir); 4079 } 4080 4081 /** 4082 * get current working directory 4083 * 4084 * \return 4085 * current path (you must free the pointer) 4086 */ 4087 char *getCwd(void) { 4088 char *r = NULL; 4089 4090 #if (__sun__) 4091 // in openIndiana, the size argument cant be 0 4092 r = getcwd(NULL, 8192); 4093 #else 4094 r = getcwd(NULL, 0); 4095 #endif 4096 if (!r) { 4097 pFuncError 4098 return(NULL); 4099 } 4100 return(r); 4101 } 4102 4103 char *bLGetCwd(char *path, size_t pathSize) { 4104 char *r = NULL; 4105 4106 r = getcwd(path, pathSize); 4107 if (!r) { 4108 pFuncError 4109 return(NULL); 4110 } 4111 return(path); 4112 } 4113 4114 4115 4116 /** 4117 * change directory 4118 * 4119 * \param 4120 * path 4121 * \return 4122 * 1 success 4123 * 0 error 4124 */ 4125 int chDir(const char *path) { 4126 4127 if (!path) { 4128 return(0); 4129 } 4130 4131 int r = chdir(path); 4132 if (r) { 4133 pFuncError 4134 shEPrintfS("The path was: \"%s\"\n", path); 4135 r = 0; 4136 } 4137 else { 4138 r = 1; 4139 } 4140 return(r); 4141 } 4142 4143 /** 4144 * is directory 4145 * 4146 * \param 4147 * path 4148 * \return 4149 * true when path is a directory 4150 * false path is not a directory, filePath is NULL or empty string 4151 */ 4152 bool isDir(const char *path) { 4153 struct stat st; 4154 4155 // sanity checks 4156 if (!path || isBlankS(path)) { 4157 return(false); 4158 } 4159 4160 if (stat(path, &st) == -1) { 4161 return(false); 4162 } 4163 4164 if (!S_ISDIR(st.st_mode)) { 4165 return(false); 4166 } 4167 return(true); 4168 } 4169 4170 /** 4171 * sheepy read link 4172 * 4173 * read the first target in the link chain 4174 * 4175 * the returned string has to be freed 4176 * 4177 * \param 4178 * path symbolic link path 4179 * \return 4180 * path to linked file or directory (you must free the pointer) 4181 * NULL failed: path is blank or NULL 4182 * path is not a symlink 4183 * malloc failed to allocate the result buffer 4184 * readlink failed 4185 */ 4186 char *shReadlink(const char *path) { 4187 char *linked = NULL; 4188 struct stat st; 4189 size_t bufSize; 4190 ssize_t r; 4191 4192 if (!path || isBlankS(path)) { 4193 return(NULL); 4194 } 4195 4196 if (lstat(path, &st) == -1) { 4197 pFuncError 4198 return(NULL); 4199 } 4200 4201 if (!S_ISLNK(st.st_mode)) { 4202 // path is a symbolic link 4203 return(NULL); 4204 } 4205 4206 if (st.st_size == 0) { 4207 bufSize = PATH_MAX; 4208 } 4209 else { 4210 bufSize = (size_t)st.st_size + 1; 4211 } 4212 4213 linked = MALLOC(bufSize); 4214 if (!linked) { 4215 pFuncError 4216 return(NULL); 4217 } 4218 4219 r = readlink(path, linked, bufSize); 4220 4221 if (r == -1) { 4222 pFuncError 4223 free(linked); 4224 return(NULL); 4225 } 4226 4227 // append null byte 4228 *(linked + r) = 0; 4229 4230 return(linked); 4231 } 4232 4233 /** 4234 * end link 4235 * 4236 * read the link chain of a symbolic link to the end 4237 * the returned string has to be freed 4238 * 4239 * \param 4240 * path symbolic link path 4241 * \return 4242 * path to linked file or directory (you must free the pointer) 4243 * NULL failed: path is blank or NULL 4244 * path is not a symlink 4245 * malloc failed to allocate the result buffer 4246 * readlink failed 4247 */ 4248 char *endlink(const char *path) { 4249 char *linked = NULL; 4250 char from[PATH_MAX]; 4251 char to[PATH_MAX]; 4252 struct stat st; 4253 size_t bufSize; 4254 ssize_t r; 4255 4256 if (!path || isBlankS(path)) { 4257 return(NULL); 4258 } 4259 4260 if (lstat(path, &st) == -1) { 4261 pFuncError 4262 return(NULL); 4263 } 4264 4265 if (!S_ISLNK(st.st_mode)) { 4266 // path is a symbolic link 4267 return(NULL); 4268 } 4269 4270 if (st.st_size == 0) { 4271 bufSize = PATH_MAX; 4272 } 4273 else { 4274 bufSize = (size_t)st.st_size + 1; 4275 } 4276 4277 pErrorNULL(strLCpy(from, sizeof from, path)); 4278 4279 while (S_ISLNK(st.st_mode)) { 4280 r = readlink(from, to, bufSize); 4281 4282 if (r == -1) { 4283 pFuncError 4284 return(NULL); 4285 } 4286 4287 // append null byte 4288 to[r] = 0; 4289 4290 if (to[0] != '/') { 4291 pErrorNULL(bDirname(from)); 4292 pErrorNULL(bLAppendManyS(from, PATH_MAX, "/", to)); 4293 pErrorNULL(bNormalizePath(from)); 4294 } 4295 else { 4296 // copy absolute path 4297 strcpy(from, to); 4298 } 4299 4300 if (lstat(from, &st) == -1) { 4301 pFuncError 4302 return(NULL); 4303 } 4304 4305 if (st.st_size == 0) { 4306 bufSize = PATH_MAX; 4307 } 4308 else { 4309 bufSize = (size_t)st.st_size + 1; 4310 } 4311 } 4312 4313 linked = strdup(from);; 4314 return(linked); 4315 } 4316 4317 /** 4318 * is symbolic link 4319 * 4320 * \param 4321 * path 4322 * \return 4323 * true when path is a symbolic link 4324 * false path is not a symbolic link, filePath is NULL or empty string 4325 */ 4326 bool isLink(const char *path) { 4327 struct stat st; 4328 4329 // sanity checks 4330 if (!path || isBlankS(path)) { 4331 return(false); 4332 } 4333 4334 if (lstat(path, &st) == -1) { 4335 return(false); 4336 } 4337 4338 if (!S_ISLNK(st.st_mode)) { 4339 return(false); 4340 } 4341 return(true); 4342 } 4343 4344 /** 4345 * detect files and directories 4346 * 4347 * \param 4348 * filePath: path to file or directory 4349 * \return 4350 * true exists 4351 * false non existant 4352 * false filePath is NULL or empty string 4353 */ 4354 bool fileExists(const char *filePath) { 4355 4356 // sanity checks 4357 if (!filePath || isBlankS(filePath)) { 4358 return(false); 4359 } 4360 4361 int r = access(filePath, F_OK); 4362 //if r 4363 // pStrError("fileExists error"); 4364 // dont print error because this is a test 4365 return(r != -1);; 4366 } 4367 4368 /** 4369 * like chmod in stdlibc but return true/false 4370 * \param 4371 * filePath: path to file or directory 4372 * mode: permissions 4373 * \return 4374 * true success 4375 * false filePath doesnt exist, not enough permissions... 4376 * false filePath is NULL or empty string 4377 */ 4378 bool fileChmod(const char *filePath, mode_t mode) { 4379 4380 // sanity checks 4381 if (!filePath || isBlankS(filePath)) { 4382 return(false); 4383 } 4384 4385 int r = chmod(filePath, mode); 4386 if (r) { 4387 pFuncError 4388 shEPrintfS("The path was: \"%s\"\n", filePath); 4389 } 4390 return(r == 0);; 4391 } 4392 4393 /** 4394 * get file size 4395 * 4396 * \param 4397 * filePath: path to file 4398 * \return 4399 * ssize_t >= 0 size 4400 * -1 an error occured or filePath is NULL or empty string 4401 */ 4402 ssize_t fileSize(const char *filePath) { 4403 struct stat st; 4404 4405 // sanity checks 4406 if (!filePath || isBlankS(filePath)) { 4407 return(-1); 4408 } 4409 4410 int r = stat(filePath, &st);; 4411 if (r) { 4412 pFuncError 4413 shEPrintfS("The path was: \"%s\"\n", filePath); 4414 return(-1); 4415 } 4416 4417 // macOS returns a varying number a number above the constant below 4418 // when the file doesnt exists 4419 if ((uint64_t)(st.st_size) > 140734000000000) { 4420 return(-1);//LCOV_EXCL_LINE 4421 } 4422 return(st.st_size); 4423 } 4424 4425 /** 4426 * get file size from file pointer 4427 * 4428 * \param 4429 * fp file pointer 4430 * \return 4431 * ssize_t >= 0 size 4432 * -1 an error occured or file pointer is NULL 4433 */ 4434 ssize_t fileSizeFP(FILE *fp) { 4435 4436 if (!fp) { 4437 return(-1); 4438 } 4439 4440 if (fseek(fp, 0L, SEEK_END) == -1) { 4441 pFuncError 4442 return(-1); 4443 } 4444 ssize_t r = ftell(fp); 4445 rewind(fp); 4446 return(r); 4447 } 4448 4449 /** 4450 * read file to string 4451 * 4452 * 0 is added at the end to terminate the string 4453 * 4454 * \param 4455 * filePath: path to file 4456 * \return 4457 * data in file (you must free the pointer) 4458 * NULL an error occured 4459 */ 4460 void *readFileToS(const char *filePath) { 4461 FILE *f = NULL; 4462 void *r = NULL; 4463 ssize_t len; 4464 size_t readStatus; 4465 4466 // sanity checks 4467 if (!filePath || isBlankS(filePath)) { 4468 return(NULL); 4469 } 4470 4471 len = fileSize(filePath);; 4472 if (len == -1) { 4473 return(NULL); 4474 } 4475 4476 // +1 to add \0 at the end 4477 r = MALLOC((size_t)len+1); 4478 if (!r) { 4479 return(NULL); 4480 } 4481 4482 f = fopen(filePath, "r"); 4483 if (!f) { 4484 free(r); 4485 pFuncError 4486 shEPrintfS("The path was: \"%s\"\n", filePath); 4487 return(NULL); 4488 } 4489 readStatus = fread(r, 1, (size_t)len , f); 4490 fclose(f); 4491 4492 if (readStatus != (size_t)len) { 4493 free(r); 4494 pFuncError 4495 shEPrintfS("The path was: \"%s\"\n", filePath); 4496 return(NULL); 4497 } 4498 4499 *((char*)r+len) = 0; 4500 4501 return(r); 4502 } 4503 4504 /** 4505 * read file to string 4506 * 4507 * 0 is added at the end to terminate the string 4508 * 4509 * \param 4510 * fp file pointer 4511 * \return 4512 * data in file (you must free the pointer) 4513 * NULL an error occured 4514 */ 4515 void *readStreamToS(FILE *fp) { 4516 void *r = NULL; 4517 ssize_t len; 4518 size_t readStatus; 4519 4520 // sanity checks 4521 if (!fp) { 4522 return(NULL); 4523 } 4524 4525 len = fileSizeFP(fp);; 4526 if (len == -1) { 4527 return(NULL); 4528 } 4529 4530 // +1 to add \0 at the end 4531 r = MALLOC((size_t)len+1); 4532 if (!r) { 4533 return(NULL); 4534 } 4535 4536 readStatus = fread(r, 1, (size_t)len , fp); 4537 4538 if (readStatus != (size_t)len) { 4539 free(r); 4540 pFuncError 4541 return(NULL); 4542 } 4543 4544 *((char*)r+len) = 0; 4545 4546 return(r); 4547 } 4548 4549 4550 /** 4551 * buffer read file to string 4552 * 4553 * 0 is added at the end to terminate the string 4554 * 4555 * \param 4556 * dst: destination buffer 4557 * \param 4558 * filePath: path to file 4559 * \return 4560 * data in file 4561 * NULL an error occured 4562 */ 4563 void *bReadFileToS(const char *filePath, void *dst) { 4564 FILE *f = NULL; 4565 ssize_t len; 4566 size_t readStatus; 4567 4568 // sanity checks 4569 if (!filePath || isBlankS(filePath) || !dst) { 4570 return(NULL); 4571 } 4572 4573 len = fileSize(filePath);; 4574 if (len == -1) { 4575 return(NULL); 4576 } 4577 4578 f = fopen(filePath, "r"); 4579 if (!f) { 4580 pFuncError 4581 shEPrintfS("The path was: \"%s\"\n", filePath); 4582 return(NULL); 4583 } 4584 4585 readStatus = fread(dst, 1, (size_t)len , f); 4586 fclose(f); 4587 4588 if (readStatus != (size_t)len) { 4589 pFuncError 4590 shEPrintfS("The path was: \"%s\"\n", filePath); 4591 return(NULL); 4592 } 4593 4594 *((char*)dst+len) = 0; 4595 4596 return(dst); 4597 } 4598 4599 /** 4600 * buffer read file to string 4601 * 4602 * 0 is added at the end to terminate the string 4603 * 4604 * \param 4605 * dst: destination buffer 4606 * \param 4607 * fp file pointer 4608 * \return 4609 * data in file 4610 * NULL an error occured 4611 */ 4612 void *bReadStreamToS(FILE *fp, void *dst) { 4613 ssize_t len; 4614 size_t readStatus; 4615 4616 // sanity checks 4617 if (!fp || !dst) { 4618 return(NULL); 4619 } 4620 4621 len = fileSizeFP(fp);; 4622 if (len == -1) { 4623 return(NULL); 4624 } 4625 4626 readStatus = fread(dst, 1, (size_t)len , fp); 4627 4628 if (readStatus != (size_t)len) { 4629 pFuncError 4630 return(NULL); 4631 } 4632 4633 *((char*)dst+len) = 0; 4634 4635 return(dst); 4636 } 4637 4638 4639 /** 4640 * buffer size read file to string 4641 * 4642 * 0 is added at the end to terminate the string 4643 * 4644 * \param 4645 * filePath: path to file 4646 * \param 4647 * dst: destination buffer 4648 * \param 4649 * dstSize path buffer size, the path strlen will be at most dstSize-1 4650 * \return 4651 * data in file 4652 * NULL an error occured 4653 */ 4654 void *bLReadFileToS(const char *filePath, void *dst, size_t dstSize) { 4655 FILE *f = NULL; 4656 ssize_t len; 4657 size_t readStatus; 4658 4659 // sanity checks 4660 if (!filePath || isBlankS(filePath) || !dst) { 4661 return(NULL); 4662 } 4663 4664 if (!dstSize) { 4665 // size 0, no change in dst 4666 return(dst); 4667 } 4668 4669 len = fileSize(filePath);; 4670 if (len == -1) { 4671 return(NULL); 4672 } 4673 4674 // truncate if necessary 4675 len = ((size_t)len < dstSize) ? len : (ssize_t)dstSize-1; 4676 4677 f = fopen(filePath, "r"); 4678 if (!f) { 4679 pFuncError 4680 shEPrintfS("The path was: \"%s\"\n", filePath); 4681 return(NULL); 4682 } 4683 4684 readStatus = fread(dst, 1, (size_t)len , f); 4685 fclose(f); 4686 4687 if (readStatus != (size_t)len) { 4688 pFuncError 4689 shEPrintfS("The path was: \"%s\"\n", filePath); 4690 return(NULL); 4691 } 4692 4693 *((char*)dst+len) = 0; 4694 4695 return(dst); 4696 } 4697 4698 /** 4699 * buffer size read file to string 4700 * 4701 * 0 is added at the end to terminate the string 4702 * 4703 * \param 4704 * dst: destination buffer 4705 * \param 4706 * fp file pointer 4707 * \return 4708 * data in file 4709 * NULL an error occured 4710 */ 4711 void *bLReadStreamToS(FILE *fp, void *dst, size_t dstSize) { 4712 ssize_t len; 4713 size_t readStatus; 4714 4715 // sanity checks 4716 if (!fp || !dst) { 4717 return(NULL); 4718 } 4719 4720 if (!dstSize) { 4721 // size 0, no change in dst 4722 return(dst); 4723 } 4724 4725 len = fileSizeFP(fp);; 4726 if (len == -1) { 4727 return(NULL); 4728 } 4729 4730 // truncate if necessary 4731 len = ((size_t)len < dstSize) ? len : (ssize_t)dstSize-1; 4732 4733 readStatus = fread(dst, 1, (size_t)len , fp); 4734 4735 if (readStatus != (size_t)len) { 4736 pFuncError 4737 return(NULL); 4738 } 4739 4740 *((char*)dst+len) = 0; 4741 4742 return(dst); 4743 } 4744 4745 /** 4746 * read file to buffer 4747 * 4748 * The function allocates the buffer 4749 * 4750 * \param 4751 * filePath path to file 4752 * \param 4753 * buffer unallocated buffer 4754 * \return 4755 * data from file in buffer (you must free the pointer) 4756 * buffer size 4757 * -1 error 4758 */ 4759 ssize_t readFile(const char *filePath, void **buffer) { 4760 FILE *f = NULL; 4761 ssize_t len; 4762 size_t readStatus; 4763 4764 // sanity checks 4765 if (!filePath || isBlankS(filePath) || !buffer) { 4766 return(-1); 4767 } 4768 4769 len = fileSize(filePath);; 4770 if (len == -1) { 4771 return(-1); 4772 } 4773 4774 // +1 to add \0 at the end 4775 *buffer = MALLOC((size_t)len); 4776 if (!*buffer) { 4777 return(-1); 4778 } 4779 4780 f = fopen(filePath, "r"); 4781 if (!f) { 4782 free(*buffer); 4783 pFuncError 4784 shEPrintfS("The path was: \"%s\"\n", filePath); 4785 return(-1); 4786 } 4787 readStatus = fread(*buffer, 1, (size_t)len , f); 4788 fclose(f); 4789 4790 if (readStatus != (size_t)len) { 4791 free(*buffer); 4792 pFuncError 4793 shEPrintfS("The path was: \"%s\"\n", filePath); 4794 return(-1); 4795 } 4796 4797 return(len); 4798 } 4799 4800 4801 /** 4802 * buffer read file to buffer 4803 * 4804 * The function allocates the buffer 4805 * 4806 * \param 4807 * filePath path to file 4808 * \param 4809 * buffer already allocated buffer 4810 * \return 4811 * data from file in buffer 4812 * buffer size 4813 * -1 error 4814 */ 4815 ssize_t bReadFile(const char *filePath, void *buffer) { 4816 FILE *f = NULL; 4817 ssize_t len; 4818 size_t readStatus; 4819 4820 // sanity checks 4821 if (!filePath || isBlankS(filePath) || !buffer) { 4822 return(-1); 4823 } 4824 4825 len = fileSize(filePath);; 4826 if (len == -1) { 4827 return(-1); 4828 } 4829 4830 f = fopen(filePath, "r"); 4831 if (!f) { 4832 pFuncError 4833 shEPrintfS("The path was: \"%s\"\n", filePath); 4834 return(-1); 4835 } 4836 readStatus = fread(buffer, 1, (size_t)len , f); 4837 fclose(f); 4838 4839 if (readStatus != (size_t)len) { 4840 pFuncError 4841 shEPrintfS("The path was: \"%s\"\n", filePath); 4842 return(-1); 4843 } 4844 4845 return(len); 4846 } 4847 4848 4849 /** 4850 * buffer size read file to buffer 4851 * 4852 * The function allocates the buffer 4853 * 4854 * \param 4855 * filePath path to file 4856 * \param 4857 * buffer already allocated buffer 4858 * \param 4859 * dstSize path buffer size 4860 * \return 4861 * data from file in buffer 4862 * buffer size 4863 * -1 error 4864 */ 4865 ssize_t bLReadFile(const char *filePath, void *buffer, size_t dstSize) { 4866 FILE *f = NULL; 4867 ssize_t len; 4868 size_t readStatus; 4869 4870 // sanity checks 4871 if (!filePath || isBlankS(filePath) || !buffer) { 4872 return(-1); 4873 } 4874 4875 if (!dstSize) { 4876 return(0); 4877 } 4878 4879 len = fileSize(filePath);; 4880 if (len == -1) { 4881 return(-1); 4882 } 4883 4884 // truncate if necessary 4885 len = ((size_t)len < dstSize) ? len : (ssize_t)dstSize; 4886 4887 f = fopen(filePath, "r"); 4888 if (!f) { 4889 pFuncError 4890 shEPrintfS("The path was: \"%s\"\n", filePath); 4891 return(-1); 4892 } 4893 readStatus = fread(buffer, 1, (size_t)len , f); 4894 fclose(f); 4895 4896 if (readStatus != (size_t)len) { 4897 pFuncError 4898 shEPrintfS("The path was: \"%s\"\n", filePath); 4899 return(-1); 4900 } 4901 4902 return(len); 4903 } 4904 4905 4906 /** 4907 * write string to file 4908 * 4909 * \param 4910 * filePath path to file 4911 * string 4912 * \return 4913 * 1 success 4914 * 0 error 4915 */ 4916 int writeFileS(const char *filePath, const char *string) { 4917 FILE *f = NULL; 4918 size_t len; 4919 size_t writeStatus; 4920 4921 // sanity checks 4922 if (!filePath || isBlankS(filePath) || !string) { 4923 return(0); 4924 } 4925 4926 len = strlen(string); 4927 4928 f = fopen(filePath, "w"); 4929 if (!f) { 4930 pFuncError 4931 shEPrintfS("The path was: \"%s\"\n", filePath); 4932 return(0); 4933 } 4934 writeStatus = fwrite(string, 1, len , f); 4935 fclose(f); 4936 4937 if (writeStatus != len) { 4938 pFuncError 4939 shEPrintfS("The path was: \"%s\"\n", filePath); 4940 return(0); 4941 } 4942 4943 return(1); 4944 } 4945 4946 4947 /** 4948 * write buffer to file 4949 * 4950 * \param 4951 * filePath path to file 4952 * buffer 4953 * len buffer size in bytes 4954 * \return 4955 * 1 success 4956 * 0 error 4957 */ 4958 int writeFile(const char *filePath, void *buffer, size_t len) { 4959 FILE *f = NULL; 4960 size_t writeStatus; 4961 4962 // sanity checks 4963 if (!filePath || isBlankS(filePath) || !buffer) { 4964 return(0); 4965 } 4966 4967 f = fopen(filePath, "w"); 4968 if (!f) { 4969 pFuncError 4970 shEPrintfS("The path was: \"%s\"\n", filePath); 4971 return(0); 4972 } 4973 writeStatus = fwrite(buffer, 1, len , f); 4974 fclose(f); 4975 4976 if (writeStatus != len) { 4977 pFuncError 4978 shEPrintfS("The path was: \"%s\"\n", filePath); 4979 return(0); 4980 } 4981 4982 return(1); 4983 } 4984 4985 4986 /** 4987 * write string to file 4988 * 4989 * \param 4990 * fp file pointer 4991 * string 4992 * \return 4993 * 1 success 4994 * 0 error 4995 */ 4996 int writeStreamS(FILE *fp, const char *string) { 4997 size_t len; 4998 size_t writeStatus; 4999 5000 // sanity checks 5001 if (!fp || !string) { 5002 return(0); 5003 } 5004 5005 len = strlen(string); 5006 5007 writeStatus = fwrite(string, 1, len , fp); 5008 5009 if (writeStatus != len) { 5010 pFuncError 5011 return(0); 5012 } 5013 5014 return(1); 5015 } 5016 5017 /** 5018 * write buffer to file 5019 * 5020 * \param 5021 * fp file pointer 5022 * buffer 5023 * len buffer size in bytes 5024 * \return 5025 * 1 success 5026 * 0 error 5027 */ 5028 int writeLStream(FILE *fp, void *buffer, size_t len) { 5029 size_t writeStatus; 5030 5031 // sanity checks 5032 if (!fp || !buffer) { 5033 return(0); 5034 } 5035 5036 writeStatus = fwrite(buffer, 1, len , fp); 5037 5038 if (writeStatus != len) { 5039 pFuncError 5040 return(0); 5041 } 5042 5043 return(1); 5044 } 5045 5046 /** 5047 * append string to filePath 5048 * 5049 * \param 5050 * filePath path to file 5051 * string 5052 * \return 5053 * true success 5054 * false failed, filePath or list are NULL 5055 */ 5056 bool appendFileS(const char *filePath, const char *string) { 5057 FILE *fp = NULL; 5058 size_t len; 5059 size_t writeStatus; 5060 5061 // sanity checks 5062 if (!filePath || isBlankS(filePath) || !string) { 5063 return(false); 5064 } 5065 5066 len = strlen(string); 5067 5068 fp = fopen(filePath, "a"); 5069 if (!fp) { 5070 pFuncError 5071 shEPrintfS("The path was: \"%s\"\n", filePath); 5072 return(false); 5073 } 5074 writeStatus = fwrite(string, 1, len , fp); 5075 fclose(fp); 5076 5077 if (writeStatus != len) { 5078 pFuncError 5079 shEPrintfS("The path was: \"%s\"\n", filePath); 5080 return(false); 5081 } 5082 5083 return(true); 5084 } 5085 5086 /** 5087 * append buffer to file 5088 * 5089 * \param 5090 * filePath path to file 5091 * buffer 5092 * len buffer size in bytes 5093 * \return 5094 * true success 5095 * false error 5096 */ 5097 bool appendFile(const char *filePath, void *buffer, size_t len) { 5098 FILE *f = NULL; 5099 size_t writeStatus; 5100 5101 // sanity checks 5102 if (!filePath || isBlankS(filePath) || !buffer) { 5103 return(0); 5104 } 5105 5106 f = fopen(filePath, "a"); 5107 if (!f) { 5108 pFuncError 5109 shEPrintfS("The path was: \"%s\"\n", filePath); 5110 return(0); 5111 } 5112 writeStatus = fwrite(buffer, 1, len , f); 5113 fclose(f); 5114 5115 if (writeStatus != len) { 5116 pFuncError 5117 shEPrintfS("The path was: \"%s\"\n", filePath); 5118 return(0); 5119 } 5120 5121 return(1); 5122 } 5123 5124 /** 5125 * list all files in a directory recursively 5126 * and sort the list 5127 * 5128 * directories are not listed 5129 * 5130 * \param 5131 * dirPath: path to directory 5132 * \return 5133 * list of files (you must free the pointer with listFreeS) 5134 * empty list when the directory is not found 5135 */ 5136 char **walkDir(const char* dirPath) { 5137 char **list = NULL; 5138 5139 // sanity checks 5140 if (!dirPath || isBlankS(dirPath)) { 5141 return(NULL); 5142 } 5143 5144 walkADir(dirPath, &list); 5145 5146 pErrorNULL(iListSortS(&list)); 5147 5148 return(list); 5149 } 5150 5151 internal void walkADir(const char *dirPath, char ***list) { 5152 DIR *d = NULL; 5153 struct dirent *dp = NULL; 5154 char *sPath = NULL; 5155 5156 d = opendir(dirPath); 5157 if (!d) { 5158 pFuncError 5159 shEPrintfS("The path was: \"%s\"\n", dirPath); 5160 return; 5161 } 5162 5163 dp = readdir(d); 5164 while (dp) { 5165 if (eqS(dp->d_name, ".") || eqS(dp->d_name, "..")) { 5166 dp = readdir(d); 5167 continue; 5168 } 5169 5170 sPath = catS(dirPath, "/", dp->d_name); 5171 5172 if (isDir(sPath)) { 5173 if (!isLink(sPath)) { 5174 walkADir(sPath, list); 5175 } 5176 } 5177 else { 5178 pErrorNULL(listPushS(list, sPath)); 5179 } 5180 free(sPath); 5181 dp = readdir(d); 5182 } 5183 5184 closedir(d); 5185 } 5186 5187 /** 5188 * list all directories in a directory recursively 5189 * and sort the list 5190 * 5191 * files are not listed 5192 * 5193 * \param 5194 * dirPath: path to directory 5195 * \return 5196 * list of directories (you must free the pointer with listFreeS) 5197 * empty list when the directory is not found 5198 */ 5199 char **walkDirDir(const char* dirPath) { 5200 char **list = NULL; 5201 5202 // sanity checks 5203 if (!dirPath || isBlankS(dirPath)) { 5204 return(NULL); 5205 } 5206 5207 walkADirDir(dirPath, &list); 5208 5209 pErrorNULL(iListSortS(&list)); 5210 5211 return(list); 5212 } 5213 5214 internal void walkADirDir(const char *dirPath, char ***list) { 5215 DIR *d = NULL; 5216 struct dirent *dp = NULL; 5217 char *sPath = NULL; 5218 5219 d = opendir(dirPath); 5220 if (!d) { 5221 pFuncError 5222 shEPrintfS("The path was: \"%s\"\n", dirPath); 5223 return; 5224 } 5225 5226 dp = readdir(d); 5227 while (dp) { 5228 if (eqS(dp->d_name, ".") || eqS(dp->d_name, "..")) { 5229 dp = readdir(d); 5230 continue; 5231 } 5232 5233 sPath = catS(dirPath, "/", dp->d_name); 5234 5235 if (isDir(sPath)) { 5236 pErrorNULL(listPushS(list, sPath)); 5237 if (!isLink(sPath)) { 5238 walkADirDir(sPath, list); 5239 } 5240 } 5241 free(sPath); 5242 dp = readdir(d); 5243 } 5244 5245 closedir(d); 5246 } 5247 5248 /** 5249 * list files in a directory 5250 * and sort the list 5251 * 5252 * directories are not listed 5253 * 5254 * \param 5255 * dirPath: path to directory 5256 * \return 5257 * list of files, dirPath is not prepended to the file names (you must free the pointer with listFreeS) 5258 * empty list when the directory is not found 5259 */ 5260 char **readDir(const char *dirPath) { 5261 char **list = NULL; 5262 DIR *d = NULL; 5263 struct dirent *dp = NULL; 5264 5265 // sanity checks 5266 if (!dirPath || isBlankS(dirPath)) { 5267 return(NULL); 5268 } 5269 5270 d = opendir(dirPath); 5271 if (!d) { 5272 pFuncError 5273 shEPrintfS("The path was: \"%s\"\n", dirPath); 5274 return(NULL); 5275 } 5276 5277 dp = readdir(d); 5278 while (dp) { 5279 if (eqS(dp->d_name, ".") || eqS(dp->d_name, "..")) { 5280 dp = readdir(d); 5281 continue; 5282 } 5283 5284 char *sPath = catS(dirPath, "/", dp->d_name); 5285 5286 if (!isDir(sPath)) { 5287 pErrorNULL(listPushS(&list, dp->d_name)); 5288 } 5289 free(sPath); 5290 dp = readdir(d); 5291 } 5292 5293 closedir(d); 5294 5295 pErrorNULL(iListSortS(&list)); 5296 5297 return(list); 5298 } 5299 5300 /** 5301 * list directories in a directory 5302 * and sort the list 5303 * 5304 * files are not listed 5305 * 5306 * \param 5307 * dirPath: path to directory 5308 * \return 5309 * list of directories, dirPath is not prepended to the names (you must free the pointer with listFreeS) 5310 * empty list when the directory is not found 5311 */ 5312 char **readDirDir(const char *dirPath) { 5313 char **list = NULL; 5314 DIR *d = NULL; 5315 struct dirent *dp = NULL; 5316 5317 // sanity checks 5318 if (!dirPath || isBlankS(dirPath)) { 5319 return(NULL); 5320 } 5321 5322 d = opendir(dirPath); 5323 if (!d) { 5324 pFuncError 5325 shEPrintfS("The path was: \"%s\"\n", dirPath); 5326 return(NULL); 5327 } 5328 5329 dp = readdir(d); 5330 while (dp) { 5331 if (eqS(dp->d_name, ".") || eqS(dp->d_name, "..")) { 5332 dp = readdir(d); 5333 continue; 5334 } 5335 5336 char *sPath = catS(dirPath, "/", dp->d_name); 5337 5338 if (isDir(sPath)) { 5339 pErrorNULL(listPushS(&list, dp->d_name)); 5340 } 5341 free(sPath); 5342 dp = readdir(d); 5343 } 5344 5345 closedir(d); 5346 5347 pErrorNULL(iListSortS(&list)); 5348 5349 return(list); 5350 } 5351 5352 /** 5353 * list all files and directories in a directory recursively 5354 * and sort the list 5355 * 5356 * directories are listed 5357 * 5358 * \param 5359 * dirPath: path to directory 5360 * \return 5361 * list of files (you must free the pointer with listFreeS) 5362 * empty list when the directory is not found 5363 */ 5364 char **walkDirAll(const char* dirPath) { 5365 char **list = NULL; 5366 5367 // sanity checks 5368 if (!dirPath || isBlankS(dirPath)) { 5369 return(NULL); 5370 } 5371 5372 walkADirAll(dirPath, &list); 5373 5374 pErrorNULL(iListSortS(&list)); 5375 5376 return(list); 5377 } 5378 5379 internal void walkADirAll(const char *dirPath, char ***list) { 5380 DIR *d = NULL; 5381 struct dirent *dp = NULL; 5382 char *sPath = NULL; 5383 5384 d = opendir(dirPath); 5385 if (!d) { 5386 pFuncError 5387 shEPrintfS("The path was: \"%s\"\n", dirPath); 5388 return; 5389 } 5390 5391 dp = readdir(d); 5392 while (dp) { 5393 if (eqS(dp->d_name, ".") || eqS(dp->d_name, "..")) { 5394 dp = readdir(d); 5395 continue; 5396 } 5397 5398 sPath = catS(dirPath, "/", dp->d_name); 5399 5400 pErrorNULL(iListPushS(list, sPath)); 5401 5402 if (isDir(sPath)) { 5403 if (!isLink(sPath)) { 5404 walkADirAll(sPath, list); 5405 } 5406 } 5407 dp = readdir(d); 5408 } 5409 5410 closedir(d); 5411 } 5412 5413 /** 5414 * list files in a directory 5415 * and sort the list 5416 * 5417 * directories are listed 5418 * 5419 * \param 5420 * dirPath: path to directory 5421 * \return 5422 * list of files, dirPath is not prepended to the file names (you must free the pointer with listFreeS) 5423 * empty list when the directory is not found 5424 */ 5425 char **readDirAll(const char *dirPath) { 5426 char **list = NULL; 5427 DIR *d = NULL; 5428 struct dirent *dp = NULL; 5429 5430 // sanity checks 5431 if (!dirPath || isBlankS(dirPath)) { 5432 return(NULL); 5433 } 5434 5435 d = opendir(dirPath); 5436 if (!d) { 5437 pFuncError 5438 shEPrintfS("The path was: \"%s\"\n", dirPath); 5439 return(NULL); 5440 } 5441 5442 dp = readdir(d); 5443 while (dp) { 5444 if (eqS(dp->d_name, ".") || eqS(dp->d_name, "..")) { 5445 dp = readdir(d); 5446 continue; 5447 } 5448 5449 char *sPath = catS(dirPath, "/", dp->d_name); 5450 5451 pErrorNULL(listPushS(&list, dp->d_name)); 5452 free(sPath); 5453 dp = readdir(d); 5454 } 5455 5456 closedir(d); 5457 5458 pErrorNULL(iListSortS(&list)); 5459 5460 return(list); 5461 } 5462 5463 /** 5464 * get umask 5465 */ 5466 mode_t getUmask(void) { 5467 5468 mode_t mask = umask(0); 5469 umask(mask); 5470 return(mask); 5471 } 5472 5473 /** 5474 * get current permissions for creating directories 5475 */ 5476 mode_t getCurrentPermissions(void) { 5477 5478 return(0777 & ~getUmask()); 5479 } 5480 5481 /** 5482 * recursive mkdir 5483 * 5484 * \param 5485 * path 5486 * \return 5487 * 1 success 5488 * 0 when path is NULL or empty 5489 */ 5490 int mkdirParents(const char* path) { 5491 char tmp[8192]; 5492 char *p = NULL; 5493 size_t len; 5494 5495 // sanity checks 5496 if (!path || isBlankS(path)) { 5497 return(0); 5498 } 5499 5500 snprintf(tmp, sizeof(tmp),"%s", path); 5501 5502 len = strlen(tmp);; 5503 5504 mode_t mode = getCurrentPermissions(); 5505 5506 if (tmp[len - 1] == '/') { 5507 tmp[len - 1] = 0; 5508 } 5509 for (p = tmp + 1; *p; p++) { 5510 if (*p == '/') { 5511 *p = 0; 5512 if (mkdir(tmp, mode) == -1) { 5513 if (errno != EEXIST) { 5514 pFuncError 5515 shEPrintfS("The path was: \"%s\"\n", tmp); 5516 return(0); 5517 } 5518 } 5519 *p = '/'; 5520 } 5521 } 5522 5523 if (mkdir(tmp, mode) == -1) { 5524 if (errno != EEXIST) { 5525 pFuncError 5526 shEPrintfS("The path was: \"%s\"\n", tmp); 5527 return(0); 5528 } 5529 } 5530 return(1); 5531 } 5532 5533 /** 5534 * remove all 5535 * delete recursively files and directories 5536 * 5537 * \param 5538 * path 5539 * \return 5540 * 1 success 5541 * 0 when path is NULL or empty 5542 */ 5543 int rmAll(const char* path) { 5544 5545 // sanity checks 5546 if (!path || isBlankS(path)) { 5547 return(0); 5548 } 5549 5550 if (!isDir(path)) { 5551 int r; 5552 pErrorResultCmd(r, remove(path), == -1, pFuncError; shEPrintfS("The path was: \"%s\"\n", path)); 5553 return(r+1); 5554 } 5555 else { 5556 return(rmADir(path)); 5557 } 5558 } 5559 5560 int rmADir(const char *dirPath) { 5561 DIR *d = NULL; 5562 struct dirent *dp = NULL; 5563 char *sPath = NULL; 5564 int r = 1;; 5565 5566 d = opendir(dirPath); 5567 if (!d) { 5568 pFuncError 5569 shEPrintfS("The path was: \"%s\"\n", dirPath); 5570 return(0); 5571 } 5572 5573 dp = readdir(d); 5574 while (dp) { 5575 if (eqS(dp->d_name, ".") || eqS(dp->d_name, "..")) { 5576 dp = readdir(d); 5577 continue; 5578 } 5579 5580 int e = asprintf(&sPath, "%s/%s", dirPath, dp->d_name); 5581 if (e == -1) { 5582 pFuncError; 5583 shEPrintfS("The path was: \"%s\"\n", dirPath); 5584 closedir(d); 5585 return(0); 5586 } 5587 5588 5589 if (isDir(sPath)) { 5590 r = rmADir(sPath);; 5591 } 5592 else { 5593 pErrorResultCmd(r, remove(sPath), == -1, pFuncError; shEPrintfS("The path was: \"%s\"\n", sPath); r=0; free(sPath); break); 5594 r = 1; 5595 } 5596 dp = readdir(d); 5597 free(sPath); 5598 } 5599 5600 closedir(d); 5601 5602 int rd; 5603 pErrorResultCmd(rd, rmdir(dirPath), == -1, pFuncError; shEPrintfS("The path was: \"%s\"\n", dirPath); return(0));; 5604 return(r); 5605 } 5606 5607 5608 /** 5609 * copy files recursively 5610 * This function is equivalent to 'cp -Ra' without wildcards and circular link detection 5611 * 5612 * when src ends with /, the files in src are copied to dst 5613 * when src does't end with /, the last directory name in src is copied to dst 5614 * The permissions are copied to the destination 5615 * 5616 * \param 5617 * src source path 5618 * dst destination path 5619 * \return 5620 * 1 success 5621 * 0 when src or dst are NULL or empty 5622 */ 5623 int copy(const char* src, const char* dst) { 5624 5625 // sanity checks 5626 if (!src || !dst || isBlankS(src) || isBlankS(dst)) { 5627 return(0); 5628 } 5629 5630 if (!fileExists(src)) { 5631 return(0); 5632 } 5633 5634 if (!isDir(src)) { 5635 // copy file 5636 if (getS(dst, -1) == '/') { 5637 // dst name is a directory, add src basename to dst 5638 char *csrc = strdup(src); 5639 char *path = basename(csrc); 5640 char *dPath = alloca(strlen(dst) + 1 + strlen(path) + 1); 5641 sprintf(dPath, "%s/%s", dst, path); 5642 free(csrc); 5643 return(copyFile(src, dPath)); 5644 } 5645 else { 5646 return(copyFile(src, dst)); 5647 } 5648 } 5649 else { 5650 if (getS(src, -1) == '/') { 5651 if (!isDir(dst)) { 5652 // create dst dir when it doesn't exists 5653 if (!mkdirParents(dst)) { 5654 if (errno != EEXIST) { 5655 shEPrintfS("copy: mkdir destination error, path: %s\n", dst); 5656 return(0); 5657 } 5658 } 5659 } 5660 return(copyADir(src, dst, "")); 5661 } 5662 else { 5663 char *csrc = strdup(src); 5664 char *path = basename(csrc); 5665 char *dPath = alloca(strlen(dst) + 1 + strlen(path) + 1); 5666 sprintf(dPath, "%s/%s", dst, path); 5667 free(csrc); 5668 5669 if (!mkdirParents(dPath)) { 5670 if (errno != EEXIST) { 5671 shEPrintfS("copy: mkdir destination error, path: %s\n", dPath); 5672 return(0); 5673 } 5674 } 5675 5676 int r = copyADir(src, dPath, ""); 5677 5678 // copy permissions 5679 struct stat st; 5680 if (stat(src, &st)) { 5681 pFuncError 5682 shEPrintfS("The path was: \"%s\"\n", src); 5683 return(0); 5684 } 5685 if (chmod(dPath, st.st_mode & 07777)) { 5686 pFuncError 5687 shEPrintfS("The path was: \"%s\"\n", dPath); 5688 return(0); 5689 } 5690 return(r); 5691 } 5692 } 5693 } 5694 5695 int copyFile(const char* src, const char* dst) { 5696 FILE *fsrc = NULL; 5697 FILE *fdst = NULL; 5698 char buf[8192]; 5699 5700 fsrc = fopen(src, "r"); 5701 pTestErrorCmd(fsrc == NULL, shEPrintfS("The source file was: %s\n", src); return(0));; 5702 5703 fdst = fopen(dst, "w"); 5704 pTestErrorCmd(fdst == NULL, shEPrintfS("The destination file was: %s\n", dst); fclose(fsrc); return(0));; 5705 5706 while (1) { 5707 size_t readStatus = fread(buf, 1, sizeof(buf), fsrc); 5708 5709 if (!readStatus) { 5710 break; 5711 } 5712 5713 size_t writeStatus = fwrite(buf, 1, readStatus, fdst); 5714 if (writeStatus != readStatus) { 5715 shPrintError 5716 shEPrintfS("The path was: \"%s\"\n", dst); 5717 fclose(fsrc); 5718 fclose(fdst); 5719 return(0); 5720 } 5721 } 5722 5723 // copy permissions 5724 struct stat st; 5725 if (stat(src, &st)) { 5726 pFuncError 5727 shEPrintfS("The path was: \"%s\"\n", src); 5728 fclose(fsrc); 5729 fclose(fdst); 5730 return(0); 5731 } 5732 if (chmod(dst, st.st_mode & 07777)) { 5733 pFuncError 5734 shEPrintfS("The path was: \"%s\"\n", dst); 5735 fclose(fsrc); 5736 fclose(fdst); 5737 return(0); 5738 } 5739 5740 fclose(fsrc); 5741 fclose(fdst); 5742 return(1); 5743 } 5744 5745 int copyADir(const char *src, const char *dst, const char *path) { 5746 DIR *d = NULL; 5747 struct dirent *dp = NULL; 5748 char *sPath = NULL; 5749 char *dPath = NULL; 5750 char *currentPath = NULL; 5751 int r = 1;; 5752 char *currentSrc = NULL; 5753 char *currentDst = NULL; 5754 5755 asprintf(¤tSrc, "%s/%s", src, path); 5756 asprintf(¤tDst, "%s/%s", dst, path); 5757 5758 d = opendir(currentSrc); 5759 if (!d) { 5760 pFuncError 5761 shEPrintfS("The path was: \"%s\"\n", currentSrc); 5762 free(currentSrc); 5763 free(currentDst); 5764 return(0); 5765 } 5766 5767 dp = readdir(d); 5768 while (dp) { 5769 if (eqS(dp->d_name, ".") || eqS(dp->d_name, "..")) { 5770 dp = readdir(d); 5771 continue; 5772 } 5773 5774 asprintf(&sPath, "%s/%s", currentSrc, dp->d_name); 5775 asprintf(&dPath, "%s/%s", currentDst, dp->d_name); 5776 5777 if (isDir(sPath)) { 5778 if (isLink(sPath)) { 5779 dp = readdir(d); 5780 free(sPath); 5781 free(dPath); 5782 continue; 5783 } 5784 mode_t mode = getCurrentPermissions(); 5785 if (mkdir(dPath, mode) == -1) { 5786 if (errno != EEXIST) { 5787 pFuncError 5788 shEPrintfS("The path was: \"%s\"\n", dPath); 5789 r = 0; 5790 free(sPath); 5791 } 5792 free(dPath); 5793 break; 5794 } 5795 asprintf(¤tPath, "%s/%s", path, dp->d_name); 5796 r = copyADir(src, dst, currentPath);; 5797 free(currentPath); 5798 // copy permissions 5799 struct stat st; 5800 if (stat(sPath, &st)) { 5801 pFuncError 5802 shEPrintfS("The path was: \"%s\"\n", sPath); 5803 r = 0; 5804 free(sPath); 5805 free(dPath); 5806 break; 5807 } 5808 if (chmod(dPath, st.st_mode & 07777)) { 5809 pFuncError 5810 shEPrintfS("The path was: \"%s\"\n", dPath); 5811 r = 0; 5812 free(sPath); 5813 free(dPath); 5814 break; 5815 } 5816 } 5817 else { 5818 pErrorResultCmd(r, copyFile(sPath, dPath), == 0, pFuncError; shEPrintfS("The path was: \"%s\"\n", sPath); free(sPath); free(dPath); break); 5819 } 5820 dp = readdir(d); 5821 free(sPath); 5822 free(dPath); 5823 } 5824 5825 closedir(d); 5826 free(currentSrc); 5827 free(currentDst); 5828 return(r); 5829 } 5830 5831 /** 5832 * rename file 5833 * 5834 * \param 5835 * src source path 5836 * dst destination path 5837 * \return 5838 * 1 success 5839 * 0 when src or dst are NULL or empty 5840 */ 5841 int shRename(const char* src, const char* dst) { 5842 5843 // sanity checks 5844 if (!src || !dst || isBlankS(src) || isBlankS(dst)) { 5845 return(0); 5846 } 5847 5848 if (!fileExists(src)) { 5849 return(0); 5850 } 5851 5852 int r = rename(src, dst);; 5853 if (r) { 5854 pFuncError 5855 shEPrintfS("The source path was: \"%s\"\n", src); 5856 shEPrintfS("The destination path was: \"%s\"\n", src); 5857 return(0); 5858 } 5859 return(1); 5860 } 5861 5862 5863 /** 5864 * move files recursively 5865 * 5866 * copy and then delete source 5867 * 5868 * called shMove because it conflicts with move in ncurses 5869 * 5870 * \param 5871 * src source path 5872 * \param 5873 * dst destination path 5874 * \return 5875 * 1 success 5876 * 0 when src or dst are NULL or empty 5877 */ 5878 int shMove(const char* src, const char* dst) { 5879 5880 int r = copy(src, dst);; 5881 if (!r) { 5882 return(r); 5883 } 5884 5885 r = rmAll(src);; 5886 return(r); 5887 } 5888 5889 // internal file pointer to /dev/urandom 5890 // used in the random functions 5891 static FILE *urandomFp = NULL; 5892 5893 // selected random function 5894 typedef uint64_t (*randomWordFt)(void); 5895 static randomWordFt randomWordF = randomWord; 5896 5897 /** 5898 * use software random numbers 5899 * works on all cpu architectures 5900 * the default random function is software 5901 */ 5902 void setSoftwareRandom(void) { 5903 5904 randomWordF = randomWord; 5905 pError0(randomUrandomOpen()); 5906 } 5907 5908 /** 5909 * use cpu hardware random number generator 5910 */ 5911 void setHardwareRandom(void) { 5912 5913 #ifdef __GNUC__ 5914 randomWordF = randomWordFromHW; 5915 #endif 5916 } 5917 5918 /** 5919 * open /dev/urandom in libsheepy 5920 * 5921 * call this function before calling randomWord and randomChoice 5922 * when random are not needed anymore call randomUrandomClose 5923 * 5924 * \return 5925 * 1 success 5926 * 0 error 5927 */ 5928 int randomUrandomOpen(void) { 5929 5930 // TODO close random file at exit, dont close in random functions 5931 // to be able to open several times, like hashtableInit 5932 if (urandomFp) { 5933 return(1); 5934 } 5935 urandomFp = fopen("/dev/urandom", "r"); 5936 if (!urandomFp) { 5937 return(0); 5938 } 5939 else { 5940 return(1); 5941 } 5942 } 5943 5944 5945 /** 5946 * close /dev/urandom in libsheepy 5947 * call this function when random are not needed anymore 5948 */ 5949 void randomUrandomClose(void) { 5950 5951 if (urandomFp) { 5952 fclose(urandomFp); 5953 urandomFp = NULL; 5954 } 5955 } 5956 5957 5958 /** 5959 * return random 64 bit unsigned integer 5960 * call randomUrandomOpen before this calling function 5961 * 5962 * \return 5963 * random uint64 integer 5964 * 0 error urandomFp file is NULL or fread failed 5965 */ 5966 uint64_t randomWord(void) { 5967 uint64_t r; 5968 size_t readStatus; 5969 5970 if (!urandomFp) { 5971 return(0); 5972 } 5973 5974 readStatus = fread(&r, sizeof(r), 1 , urandomFp); 5975 5976 if (readStatus != 1) { 5977 pFuncError 5978 return(0); 5979 } 5980 if (r == 0) { 5981 // -1 is not a valid return value, it signals errors 5982 r++; 5983 } 5984 return(r); 5985 } 5986 5987 /** 5988 * return random 64 bit unsigned integer from the cpu 5989 * when the cpu doesn't have the random generator instruction, the program 5990 * stops with 'Illegal instruction' 5991 */ 5992 uint64_t randomWordFromHW(void) { 5993 unsigned long long r; 5994 5995 #ifdef __GNUC__ 5996 #if (!defined(__arm__) && !defined(__aarch64__) && !defined(__riscv) && !defined(__i386__)) 5997 // TODO valgrind doesn't support the rdrand instruction 171117 5998 #ifndef unitTest 5999 _rdrand64_step(&r); 6000 #else 6001 r = 'a';; 6002 // unitTest 6003 #endif 6004 #else 6005 logE("HW Random generator not available on the ARM platform"); 6006 return(0); 6007 // __arm__ || __aarch64__ || __riscv || __i386__ 6008 #endif 6009 // __GNUC__ 6010 #endif 6011 return((uint64_t)r); 6012 } 6013 6014 /** 6015 * return a random value between 0 and range 0<=value<range 6016 * call randomUrandomOpen before this calling function 6017 * 6018 * \param 6019 * range - must be > 0 6020 * \return 6021 * random uint64 0<=value<range 6022 * range error 6023 */ 6024 uint64_t randomChoice(uint64_t range) { 6025 uint64_t r; 6026 6027 if (range == 0) { 6028 // range 0 is invalid 6029 return(range); 6030 } 6031 r = randomWordF(); 6032 if (r == 0) { 6033 return(range); 6034 } 6035 else { 6036 return(randomWordF() % range); 6037 } 6038 } 6039 6040 // TODO create random string function that takes charset as parameter 6041 /** 6042 * random string 6043 * 6044 * allocate and generate a random string in charset "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-," 6045 * 6046 * 6047 * \param 6048 * string length 6049 * \return 6050 * random string (you must free the pointer) 6051 * NULL error opening /dev/urandom, malloc failed, fread /dev/urandom failed, length is 0 6052 */ 6053 char *randomS(uint64_t length) { 6054 char charset[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-,";; 6055 char *r = NULL; 6056 char *workingP = NULL; 6057 int rOpen; 6058 6059 // sanity checks 6060 if (length == 0) { 6061 return(NULL); 6062 } 6063 6064 // open /dev/urandom 6065 if (randomWordF == randomWord) { 6066 rOpen = randomUrandomOpen();; 6067 if (!rOpen) { 6068 return(NULL); 6069 } 6070 } 6071 6072 // allocate result 6073 // dont use MALLOC here, the test fails 6074 r = malloc(length+1);; 6075 if (!r) { 6076 return(NULL); 6077 } 6078 6079 workingP = r; 6080 6081 // generate random values 6082 while (length-- > 0) { 6083 uint64_t rChoice; 6084 size_t len = strlen(charset); 6085 6086 rChoice = randomChoice(len); 6087 if (rChoice == len) { 6088 free(r); 6089 return(NULL); 6090 } 6091 6092 *workingP++ = charset[rChoice]; 6093 } 6094 6095 *workingP = '\0'; 6096 6097 return(r); 6098 } 6099 6100 /** 6101 * buffer random string 6102 * 6103 * allocate and generate a random string in charset "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-," 6104 * 6105 * \param 6106 * dst destination buffer 6107 * \param 6108 * dstSize destination buffer size, must be at least 2, to have at least 1 random char in the string 6109 * \return 6110 * random string 6111 * NULL error opening /dev/urandom, malloc failed, fread /dev/urandom failed, length is 0 6112 */ 6113 char *bRandomS(char *dst, size_t dstSize) { 6114 char charset[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-,";; 6115 char *workingP = NULL; 6116 int rOpen; 6117 6118 // sanity checks 6119 if (!dst || dstSize < 2) { 6120 return(NULL); 6121 } 6122 6123 // open /dev/urandom 6124 if (randomWordF == randomWord) { 6125 rOpen = randomUrandomOpen();; 6126 if (!rOpen) { 6127 return(NULL); 6128 } 6129 } 6130 6131 workingP = dst; 6132 // keep space for NUL char at the end if the string 6133 dstSize--; 6134 6135 // generate random values 6136 while (dstSize-- > 0) { 6137 uint64_t rChoice; 6138 size_t len = strlen(charset); 6139 6140 rChoice = randomChoice(len); 6141 if (rChoice == len) { 6142 return(NULL); 6143 } 6144 6145 *workingP++ = charset[rChoice]; 6146 } 6147 6148 *workingP = '\0'; 6149 6150 return(dst); 6151 } 6152 6153 /** 6154 * random alpha numerical string 6155 * 6156 * allocate and generate a random string in charset "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" 6157 * 6158 * 6159 * \param 6160 * string length 6161 * \return 6162 * random string (you must free the pointer) 6163 * NULL error opening /dev/urandom, malloc failed, fread /dev/urandom failed, length is 0 6164 */ 6165 char *randomAlphaNumS(uint64_t length) { 6166 char charset[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";; 6167 char *r = NULL; 6168 char *workingP = NULL; 6169 int rOpen; 6170 6171 // sanity checks 6172 if (length == 0) { 6173 return(NULL); 6174 } 6175 6176 // open /dev/urandom 6177 if (randomWordF == randomWord) { 6178 rOpen = randomUrandomOpen();; 6179 if (!rOpen) { 6180 return(NULL); 6181 } 6182 } 6183 6184 // allocate result 6185 // dont use MALLOC here, the test fails 6186 r = malloc(length+1);; 6187 if (!r) { 6188 return(NULL); 6189 } 6190 6191 workingP = r; 6192 6193 // generate random values 6194 while (length-- > 0) { 6195 uint64_t rChoice; 6196 size_t len = strlen(charset); 6197 6198 rChoice = randomChoice(len); 6199 if (rChoice == len) { 6200 free(r); 6201 return(NULL); 6202 } 6203 6204 *workingP++ = charset[rChoice]; 6205 } 6206 6207 *workingP = '\0'; 6208 6209 return(r); 6210 } 6211 6212 /** 6213 * buffer random alpha numerical string 6214 * 6215 * allocate and generate a random string in charset "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" 6216 * 6217 * \param 6218 * dst destination buffer 6219 * \param 6220 * dstSize destination buffer size, must be at least 2, to have at least 1 random char in the string 6221 * \return 6222 * random string 6223 * NULL error opening /dev/urandom, malloc failed, fread /dev/urandom failed, length is 0 6224 */ 6225 char *bRandomAlphaNumS(char *dst, size_t dstSize) { 6226 char charset[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";; 6227 char *workingP = NULL; 6228 int rOpen; 6229 6230 // sanity checks 6231 if (!dst || dstSize < 2) { 6232 return(NULL); 6233 } 6234 6235 // open /dev/urandom 6236 if (randomWordF == randomWord) { 6237 rOpen = randomUrandomOpen();; 6238 if (!rOpen) { 6239 return(NULL); 6240 } 6241 } 6242 6243 workingP = dst; 6244 // keep space for NUL char at the end if the string 6245 dstSize--; 6246 6247 // generate random values 6248 while (dstSize-- > 0) { 6249 uint64_t rChoice; 6250 size_t len = strlen(charset); 6251 6252 rChoice = randomChoice(len); 6253 if (rChoice == len) { 6254 return(NULL); 6255 } 6256 6257 *workingP++ = charset[rChoice]; 6258 } 6259 6260 *workingP = '\0'; 6261 6262 return(dst); 6263 } 6264 6265 #define startMax 20 6266 6267 /** 6268 * read String 6269 * read user input (one line) as a string 6270 * 6271 * there is no size limit and the buffer expands as needed 6272 * 6273 * \return 6274 * line from the user (you must free the pointer) 6275 * NULL when buffer allocation failed 6276 */ 6277 char *readS(void) { 6278 int max = startMax;; 6279 6280 char *s = MALLOC((size_t)max); 6281 if (!s) { 6282 return(NULL); 6283 } 6284 6285 int i = 0; 6286 while (1) { 6287 #ifndef unitTest 6288 int c = getchar(); 6289 #else 6290 int c; 6291 if (i < startMax) { 6292 c = 'a'; 6293 } 6294 else { 6295 c = '\n'; 6296 } 6297 #endif 6298 if (c == '\n') { 6299 s[i] = 0; 6300 break; 6301 } 6302 s[i] = (char)c; 6303 if (i == max-1) { 6304 // buffer full 6305 max += max; 6306 char *tmp = REALLOC(s, (size_t)max); 6307 if (!tmp) { 6308 free(s); 6309 return(NULL); 6310 } 6311 s = tmp; 6312 } 6313 i++; 6314 } 6315 return(s); 6316 } 6317 6318 /** 6319 * buffer read String 6320 * read user input (one line) as a string 6321 * 6322 * \param 6323 * dst destination buffer 6324 * \param 6325 * dstSize destination buffer size, must be at least 2, to have at least 1 char from the user in the string 6326 * \return 6327 * line from the user 6328 * NULL when buffer allocation failed 6329 */ 6330 char *bLReadS(char *dst, size_t dstSize) { 6331 size_t i = 0;; 6332 6333 if (!dst || dstSize < 2) { 6334 return(NULL); 6335 } 6336 6337 while (1) { 6338 #ifndef unitTest 6339 int c = getchar(); 6340 #else 6341 int c; 6342 if (i < dstSize-1) { 6343 c = 'a'; 6344 } 6345 else { 6346 c = '\n'; 6347 } 6348 #endif 6349 if (c == '\n' || i == dstSize-1) { 6350 dst[i] = 0; 6351 break; 6352 } 6353 dst[i] = (char)c; 6354 i++; 6355 } 6356 return(dst); 6357 } 6358 6359 /** 6360 * sheepy get pass 6361 * 6362 * like getpass, read password from tty 6363 * 6364 * currently used in Termux because getpass is missging 6365 */ 6366 UNUSED local char *shGetpass(void) { 6367 char *r = NULL; 6368 6369 #ifndef unitTest 6370 struct termios old; 6371 struct termios new; 6372 6373 // inspired by https://www.gnu.org/software/libc/manual/html_node/getpass.html 6374 FILE *stream = fopen("/dev/tty", "w+ce"); 6375 if (!stream) { 6376 return(NULL); 6377 } 6378 6379 /* Turn echoing off and fail if we can’t. */ 6380 if (tcgetattr (fileno (stream), &old) != 0) { 6381 fclose(stream); 6382 return(NULL); 6383 } 6384 new = old; 6385 new.c_lflag &= ~(tcflag_t)ECHO; 6386 if (tcsetattr (fileno (stream), TCSAFLUSH, &new) != 0) { 6387 fclose(stream); 6388 return(NULL); 6389 } 6390 6391 /* Read the password. */ 6392 r = readS();; 6393 6394 /* Restore terminal. */ 6395 (void) tcsetattr (fileno (stream), TCSAFLUSH, &old); 6396 fclose(stream); 6397 #else 6398 r = strdup("*****");; 6399 #endif 6400 6401 return(r); 6402 } 6403 6404 /** 6405 * read hidden password string 6406 * 6407 * \return 6408 * newly allocated password string (you must free the pointer) 6409 */ 6410 char *readPasswordS(void) { 6411 6412 #if (__TERMUX__ || __HAIKU__ || unitTest) 6413 char *r = shGetpass(); 6414 #else 6415 // TODO getpass is obsolete, see man for getpass 6416 char *p = getpass(""); 6417 if (!p) { 6418 return(NULL); 6419 } 6420 char *r = strdup(p); 6421 memset(p, 0, strlen(p)); 6422 #endif 6423 return(r); 6424 } 6425 6426 /** 6427 * write zero to all bytes in string with memset, for clearing password buffers 6428 * 6429 * \param 6430 * string 6431 * \return 6432 * true 0s are written 6433 * false error string is NULL 6434 * 6435 */ 6436 bool zeroS(char *string) { 6437 6438 if (!string) { 6439 return(false); 6440 } 6441 6442 memset(string, 0, strlen(string)); 6443 return(true); 6444 } 6445 6446 /** 6447 * write zero to all bytes in buffer with memset 6448 * 6449 * \param 6450 * buf buffer 6451 * \param 6452 * len length 6453 * \return 6454 * true 0s are written 6455 * false error string is NULL 6456 * 6457 */ 6458 bool zeroBuf(void *buf, size_t len) { 6459 6460 if (!buf || !len) { 6461 return(false); 6462 } 6463 6464 memset(buf, 0, len); 6465 return(true); 6466 } 6467 6468 /** 6469 * memory duplicate 6470 * allocate and copy buffer 6471 * 6472 * \param 6473 * buf buffer to duplicate 6474 * \param 6475 * size buffer size 6476 * \return 6477 * duplicated buffer (you must free the pointer) 6478 * NULL when there is an error 6479 * 6480 */ 6481 void *memdup(const void *buf, size_t size) { 6482 6483 // sanity checks 6484 if (!buf || !size) { 6485 return(NULL); 6486 } 6487 6488 void* out = MALLOC(size); 6489 if (out != NULL) { 6490 memcpy(out, buf, size); 6491 } 6492 6493 return(out); 6494 } 6495 6496 6497 /** 6498 * read Enter key 6499 * wait until press the enter key 6500 */ 6501 void readEnter(void) { 6502 6503 while (1) { 6504 #ifndef unitTest 6505 int c = getchar(); 6506 #else 6507 int c = '\n'; 6508 #endif 6509 if (c == '\n') { 6510 break; 6511 } 6512 } 6513 } 6514 6515 /** 6516 * readLine from file stream 6517 * the fist new line is converted to 0 6518 * 6519 * \param 6520 * fp: file stream 6521 * \return 6522 * one line in a string (you must free the pointer) 6523 * empty string when stream is empty or when there is an error reading the stream 6524 * NULL when the stream is NULL 6525 */ 6526 char *readLine(FILE *fp) { 6527 size_t len; 6528 char* line = NULL; 6529 ssize_t read; 6530 6531 // sanity checks 6532 if (!fp) { 6533 return(NULL); 6534 } 6535 6536 // read line 6537 read = getline(&line, &len, (FILE *)fp); 6538 if (read == -1) { 6539 // there is whatever data in the line buffer, free 6540 free(line); 6541 return(strdup("")); 6542 } 6543 // convert new line char to 0 6544 { 6545 char* pos = NULL; 6546 pos = strchr(line, '\n'); 6547 if (pos != NULL) 6548 *pos = '\0'; 6549 } 6550 return(line); 6551 } 6552 6553 /** 6554 * free Many String 6555 * 6556 * free variable list of pointers 6557 * freeManyS(s1, s2, ...); 6558 */ 6559 void freeManySF(char *paramType, ...) { 6560 va_list pl; 6561 6562 // add arguments to a list 6563 va_start(pl, paramType); 6564 paramType = va_arg(pl, char *); 6565 while (paramType) { 6566 free(paramType); 6567 paramType = va_arg(pl, char *); 6568 } 6569 va_end(pl); 6570 } 6571 6572 /** 6573 * duplicate string 6574 * 6575 * \param 6576 * string 6577 * \return 6578 * new identical string (you must free the pointer) 6579 * NULL when string is NULL 6580 */ 6581 char *dupS(const char *string) { 6582 6583 if (!string) { 6584 return(NULL); 6585 } 6586 return(strdup(string)); 6587 } 6588 6589 /** 6590 * sheepy Print String 6591 * 6592 * same as printf 6593 * when the formating string is NULL, "(null)" is printed 6594 * 6595 * \param 6596 * format string - can be NULL 6597 * data 6598 */ 6599 void shPrintfS(const char *fmt, ...) { 6600 va_list pl; 6601 6602 if (!fmt) { 6603 puts("(null)"); 6604 return; 6605 } 6606 va_start(pl, fmt); 6607 vfprintf(stdout, fmt, pl); 6608 va_end(pl); 6609 } 6610 6611 /** 6612 * sheepy Error printf String 6613 * print with logE 6614 * 6615 * when the formating string is NULL, "(null)" is printed 6616 * 6617 * \param 6618 * format string like printf 6619 * \return 6620 * print with logE 6621 */ 6622 void shEPrintfS(const char *fmt, ...) { 6623 va_list pl; 6624 6625 if (((libsheepyErrorMask) & logMask)) { 6626 if (!fmt) { 6627 logE("(null)\n"); 6628 return; 6629 } 6630 // print with logE 6631 char *s = NULL; 6632 va_start(pl, fmt); 6633 vasprintf(&s, fmt, pl); 6634 va_end(pl); 6635 logE(s); 6636 free(s); 6637 } 6638 } 6639 6640 /** 6641 * log and free 6642 * 6643 * \param 6644 * string to print, can be NULL 6645 */ 6646 void logNFree(char *s) { 6647 6648 if (s) { 6649 puts(s); 6650 free(s); 6651 } 6652 } 6653 6654 /** 6655 * print buffer as hexadecimal string 6656 */ 6657 void loghex(const void *buf, size_t len) { 6658 const uint8_t *b = NULL; 6659 6660 if (!buf || !len) { 6661 return; 6662 } 6663 6664 b = buf; 6665 for (size_t i = 0; i < len-1; i++) { 6666 printf("0x%02x ", b[i]); 6667 } 6668 printf("0x%02x", b[len-1]); 6669 } 6670 6671 /** 6672 * create a string with bytes in buf converted to hex strings 6673 * 6674 * \param 6675 * buf buffer to convert to hexstring 6676 * \param 6677 * len buffer size in bytes 6678 * \return 6679 * string representing the buffer in hexadecimal "0x01, 0x02,..." (you must free the pointer) 6680 */ 6681 char *toHexS(const void *buf, size_t len) { 6682 const uint8_t *b = NULL; 6683 char *r = NULL; 6684 6685 if (!buf || !len) { 6686 return(NULL); 6687 } 6688 6689 r = MALLOC(sizeof(char) * (6*len-2+1));; 6690 if (!r) { 6691 return(NULL); 6692 } 6693 6694 *r = 0; 6695 char *c = r; 6696 6697 b = buf; 6698 for (size_t i = 0; i < len-1; i++) { 6699 sprintf(c, "0x%02x, ", b[i]); 6700 c += 6;; 6701 } 6702 sprintf(c, "0x%02x", b[len-1]); 6703 6704 return(r); 6705 } 6706 6707 /** 6708 * create a string with bytes in buf converted to hex strings separated by separator 6709 * 6710 * \param 6711 * buf buffer to convert to hexstring 6712 * \param 6713 * len buffer size in bytes 6714 * \param 6715 * separator separator between the hexadecimal numbers 6716 * \return 6717 * string representing the buffer in hexadecimal "0x01SEP0x02SEP..." (you must free the pointer) 6718 */ 6719 char *toHexSepS(const void *buf, size_t len, const char *separator) { 6720 const uint8_t *b = NULL; 6721 char *r = NULL; 6722 6723 if (!buf || !len || !separator) { 6724 return(NULL); 6725 } 6726 6727 size_t sepLen = strlen(separator);; 6728 6729 r = MALLOC(sizeof(char) * ((4+sepLen)*len-sepLen+1));; 6730 if (!r) { 6731 return(NULL); 6732 } 6733 6734 *r = 0; 6735 char *c = r; 6736 6737 b = buf; 6738 for (size_t i = 0; i < len-1; i++) { 6739 sprintf(c, "0x%02x%s", b[i], separator); 6740 c += 4+sepLen;; 6741 } 6742 sprintf(c, "0x%02x", b[len-1]); 6743 6744 return(r); 6745 } 6746 6747 /** 6748 * create a string with bytes in buf converted to hex strings separated by separator and with head string in front of earch byte: HEADffSEP 6749 * 6750 * \param 6751 * buf buffer to convert to hexstring 6752 * \param 6753 * len buffer size in bytes 6754 * \param 6755 * head separator before each hexadecimal numbers 6756 * \param 6757 * separator separator after each hexadecimal numbers 6758 * \return 6759 * string representing the buffer in hexadecimal "HEAD0x01SEPHEAD0x02SEP..." (you must free the pointer) 6760 */ 6761 char *toHexHeadSepS(const void *buf, size_t len, const char *head, const char *separator) { 6762 const uint8_t *b = NULL; 6763 char *r = NULL; 6764 6765 if (!buf || !len || !separator || !head) { 6766 return(NULL); 6767 } 6768 6769 size_t headLen = strlen(head);; 6770 size_t sepLen = strlen(separator);; 6771 6772 r = MALLOC(sizeof(char) * ((2+headLen+sepLen)*len-sepLen+1));; 6773 if (!r) { 6774 return(NULL); 6775 } 6776 6777 *r = 0; 6778 char *c = r; 6779 6780 b = buf; 6781 for (size_t i = 0; i < len-1; i++) { 6782 sprintf(c, "%s%02x%s", head, b[i], separator); 6783 c += 2+headLen+sepLen;; 6784 } 6785 sprintf(c, "%s%02x", head, b[len-1]); 6786 6787 return(r); 6788 } 6789 6790 6791 /** 6792 * strCpy - copy src to dst 6793 * 6794 * like strcpy with sanity checks 6795 * 6796 * \param 6797 * dst destination buffer 6798 * \param 6799 * src source string 6800 * \return 6801 * dst string 6802 * NULL error 6803 */ 6804 char *strCpy(char *restrict dst, const char *restrict src) { 6805 6806 if (!dst || !src) { 6807 return(NULL); 6808 } 6809 6810 return(strcpy(dst, src)); 6811 } 6812 6813 6814 /** 6815 * strNCpy - copy src to dst 6816 * 6817 * null safe version of strncpy 6818 * 6819 * \param 6820 * dst destination buffer 6821 * \param 6822 * src source string 6823 * \param 6824 * srcSize source buffer size 6825 * \return 6826 * dst string 6827 * NULL error 6828 */ 6829 char *strNCpy(char *restrict dst, const char *restrict src, size_t srcSize) { 6830 6831 if (!dst || !src) { 6832 return(NULL); 6833 } 6834 6835 char *r = strncpy(dst, src, srcSize);; 6836 return(r); 6837 } 6838 6839 6840 /** 6841 * strLCpy - copy src to dst 6842 * 6843 * like strncpy and the NUL char is always added at the end of the string 6844 * 6845 * \param 6846 * dst destination buffer 6847 * \param 6848 * dstSize destination buffer size, result string will be no longer than dstSize-1 6849 * \param 6850 * src source string 6851 * \return 6852 * dst string 6853 * NULL error 6854 */ 6855 char *strLCpy(char *restrict dst, size_t dstSize, const char *restrict src) { 6856 6857 if (!dst || !src) { 6858 return(NULL); 6859 } 6860 6861 char *r = strncpy(dst, src, dstSize);; 6862 if (dstSize) { 6863 r[dstSize-1] = 0; 6864 } 6865 return(r); 6866 } 6867 6868 /** 6869 * strCat - concatenate two strings 6870 * 6871 * like strcat with sanity checks 6872 * 6873 * \param 6874 * dst destination buffer 6875 * \param 6876 * src source string 6877 * \return 6878 * string with input strings concatenated 6879 * NULL error 6880 */ 6881 char *strCat(char *restrict dst, const char *restrict src) { 6882 6883 if (!dst || !src) { 6884 return(NULL); 6885 } 6886 6887 return(strcat(dst, src)); 6888 } 6889 6890 /** 6891 * strNCat - concatenate two strings 6892 * 6893 * like strncat with sanity checks 6894 * 6895 * \param 6896 * dst destination buffer 6897 * \param 6898 * src source string 6899 * \param 6900 * srcLen max source len 6901 * \return 6902 * string with input strings concatenated 6903 * NULL error 6904 */ 6905 char *strNCat(char *restrict dst, const char *restrict src, size_t srcLen) { 6906 6907 if (!dst || !src) { 6908 return(NULL); 6909 } 6910 6911 return(strncat(dst, src, srcLen)); 6912 } 6913 6914 /** 6915 * strLCat - concatenate two strings 6916 * 6917 * like strlcat with sanity checks 6918 * 6919 * \param 6920 * dst destination buffer 6921 * \param 6922 * src source string 6923 * \param 6924 * dstSize destination buffer size, result string will be no longer than dstSize-1 6925 * \return 6926 * string with input strings concatenated 6927 * NULL error 6928 */ 6929 /* same/slower than the other implementation with -O2 and kaby lake */ 6930 char *strLCat(char *restrict dst, size_t dstSize, const char *restrict src) { 6931 6932 if (!dst || !src) { 6933 return(NULL); 6934 } 6935 6936 size_t dL = strnlen(dst, dstSize); 6937 size_t dstLen = dstSize-1; 6938 6939 if (dL >= dstLen) { 6940 // buffer is full 6941 return(dst); 6942 } 6943 6944 size_t sL = strlen(src); 6945 6946 if (dL+sL > dstLen) { 6947 // truncate 6948 return(strncat(dst, src, dstLen - dL)); 6949 } 6950 else { 6951 return(strcat(dst, src)); 6952 } 6953 } 6954 6955 /* char *strLCat(char *dst, size_t dstSize, const char *src) */ 6956 /* */ 6957 /* if !dst || !src */ 6958 /* return 0 */ 6959 /* */ 6960 /* const char *odst = dst */ 6961 /* size_t n = dstSize */ 6962 /* size_t dlen; */ 6963 /* */ 6964 /* #<{(| Find the end of dst and adjust bytes left but don't go past end. |)}># */ 6965 /* while n-- != 0 && *dst != '\0' */ 6966 /* dst++; */ 6967 /* dlen = dst - odst */ 6968 /* n = dstSize - dlen */ 6969 /* */ 6970 /* if n-- = 0 */ 6971 /* return dst */ 6972 /* while *src != '\0' */ 6973 /* if n != 0 */ 6974 /* *dst++ = *src */ 6975 /* n--; */ 6976 /* src++; */ 6977 /* */ 6978 /* *dst = '\0'; */ 6979 /* */ 6980 /* return dst */ 6981 6982 /** 6983 * strLNCat - concatenate two strings 6984 * 6985 * like strlcat with sanity checks 6986 * 6987 * \param 6988 * dst destination buffer 6989 * \param 6990 * src source string 6991 * \param 6992 * dstSize destination buffer size, result string will be no longer than dstSize-1 6993 * \param 6994 * srcLen max source len 6995 * \return 6996 * string with input strings concatenated 6997 * NULL error 6998 */ 6999 char *strLNCat(char *restrict dst, size_t dstSize, const char *restrict src, size_t srcLen) { 7000 7001 if (!dst || !src) { 7002 return(NULL); 7003 } 7004 7005 size_t dL = strnlen(dst, dstSize); 7006 size_t dstLen = dstSize-1; 7007 7008 if (dL >= dstLen) { 7009 // buffer is full 7010 return(dst); 7011 } 7012 7013 size_t sL = strnlen(src, srcLen); 7014 7015 if (dL+sL > dstLen) { 7016 // truncate 7017 return(strncat(dst, src, dstLen - dL)); 7018 } 7019 else { 7020 return(strncat(dst, src, srcLen)); 7021 } 7022 } 7023 7024 /** 7025 * cat String Function 7026 * \param 7027 * arbitrary list of strings seperated by commas 7028 * \return 7029 * string with input strings concatenated (you must free the pointer) 7030 */ 7031 char *catSF(const char *paramType, ...) { 7032 va_list pl; 7033 char **l = NULL; 7034 char *r = NULL; 7035 7036 // add arguments to a list 7037 va_start(pl, paramType); 7038 paramType = va_arg(pl, char *); 7039 while (paramType) { 7040 pErrorNULL(listPushS(&l, paramType)); 7041 paramType = va_arg(pl, char *); 7042 } 7043 va_end(pl); 7044 // join list with empty delimiter 7045 r = join(l, ""); 7046 listFreeS(l); 7047 return(r); 7048 } 7049 7050 /** 7051 * cat and copy String Function 7052 * dst has to be big enough to hold the result 7053 * 7054 * \param 7055 * dst result destination buffer 7056 * arbitrary list of strings seperated by commas 7057 * \return 7058 * dst string with input strings concatenated 7059 */ 7060 char *iCatSF(char *dst, const char *paramType, ...) { 7061 va_list pl; 7062 7063 if (!dst) { 7064 return(NULL); 7065 } 7066 7067 // empty dst string 7068 dst[0] = 0; 7069 7070 // add arguments to a list 7071 va_start(pl, paramType); 7072 paramType = va_arg(pl, char *); 7073 while (paramType) { 7074 strcat(dst, paramType); 7075 paramType = va_arg(pl, char *); 7076 } 7077 va_end(pl); 7078 return(dst); 7079 } 7080 7081 7082 /** 7083 * cat and copy String Function 7084 * \param 7085 * dst result destination buffer 7086 * arbitrary list of strings seperated by commas 7087 * \return 7088 * dst string with input strings concatenated 7089 */ 7090 char *bLCatSF(char *dst, size_t dstSize, const char *paramType, ...) { 7091 va_list pl; 7092 7093 if (!dst) { 7094 return(NULL); 7095 } 7096 7097 if (!dstSize) { 7098 return(dst); 7099 } 7100 7101 // empty dst string 7102 dst[0] = 0; 7103 7104 // add arguments to a list 7105 va_start(pl, paramType); 7106 paramType = va_arg(pl, char *); 7107 while (paramType) { 7108 pErrorNULL(strLCat(dst, dstSize, paramType)); 7109 paramType = va_arg(pl, char *); 7110 } 7111 va_end(pl); 7112 return(dst); 7113 } 7114 7115 7116 /** 7117 * format string 7118 * allocate and format string using asprintf 7119 * \param 7120 * format string and other parameters 7121 * \return 7122 * allocated and formated string (you must free the pointer) 7123 * NULL when fmt is NULL or asprintf fails 7124 */ 7125 char *formatS(const char *fmt, ...) { 7126 char *r = NULL; 7127 va_list pl; 7128 7129 if (!fmt) { 7130 return(NULL); 7131 } 7132 va_start(pl, fmt); 7133 if (vasprintf(&r, fmt, pl) == -1) { 7134 va_end(pl); 7135 return(NULL); 7136 } 7137 va_end(pl); 7138 7139 return(r); 7140 } 7141 7142 /** 7143 * format string 7144 * \param 7145 * format string and other parameters 7146 * \return 7147 * formated string 7148 * NULL when string, fmt are NULL or sprintf fails 7149 */ 7150 char *bFormatS(char *string, const char *fmt, ...) { 7151 va_list pl; 7152 7153 if (!string || !fmt) { 7154 return(NULL); 7155 } 7156 va_start(pl, fmt); 7157 if (vsprintf(string, fmt, pl) == -1) { 7158 return(NULL); 7159 } 7160 va_end(pl); 7161 7162 return(string); 7163 } 7164 7165 /** 7166 * format string 7167 * \param 7168 * format string and other parameters 7169 * \return 7170 * formated string 7171 * NULL when string, fmt is NULL or snprintf fails 7172 */ 7173 char *bLFormatS(char *string, size_t stringSize, const char *fmt, ...) { 7174 va_list pl; 7175 7176 if (!string || !fmt) { 7177 return(NULL); 7178 } 7179 va_start(pl, fmt); 7180 if (vsnprintf(string, stringSize, fmt, pl) == -1) { 7181 return(NULL); 7182 } 7183 va_end(pl); 7184 7185 return(string); 7186 } 7187 7188 /** 7189 * append strings 7190 * 7191 * \param 7192 * string1 string 7193 * string2 string to append at the end of string1 7194 * \return 7195 * new string string1+string2 (you must free the pointer) 7196 * dup string1 when string2 is NULL (you must free the pointer) 7197 * NULL when string1 is NULL 7198 */ 7199 char *appendS(const char *string1, const char *string2) { 7200 char *r = NULL; 7201 size_t l1; 7202 size_t l2; 7203 7204 if (!string1) { 7205 return(NULL); 7206 } 7207 if (!string2) { 7208 r = strdup(string1); 7209 return(r); 7210 } 7211 7212 l1 = strlen(string1); 7213 l2 = strlen(string2); 7214 7215 if (!l2) { 7216 // empty string 7217 r = strdup(string1); 7218 return(r); 7219 } 7220 7221 r = MALLOC(l1 + l2 + 1); 7222 if (!r) { 7223 return(NULL); 7224 } 7225 7226 strcpy(r,string1); 7227 strcat(r, string2); 7228 return(r); 7229 } 7230 7231 /** 7232 * append char to string 7233 * when c is 0 the result is string1 7234 * 7235 * \param 7236 * string1 string 7237 * c char to append 7238 * \return 7239 * new string string1+c (you must free the pointer) 7240 * NULL when string1 is NULL 7241 */ 7242 char *appendCharS(const char *string1, char c) { 7243 char *r = NULL; 7244 size_t l1; 7245 7246 if (!string1) { 7247 return(NULL); 7248 } 7249 if (!c) { 7250 r = strdup(string1); 7251 return(r); 7252 } 7253 7254 charToS(string2, c); 7255 7256 l1 = strlen(string1); 7257 7258 r = MALLOC(l1 + 1 + 1); 7259 if (!r) { 7260 return(NULL); 7261 } 7262 7263 strcpy(r,string1); 7264 strcat(r, string2); 7265 return(r); 7266 } 7267 7268 /** 7269 * append string to char 7270 * 7271 * \param 7272 * string1 string 7273 * c char to append 7274 * \return 7275 * new string string1+c (you must free the pointer) 7276 * NULL when string1 is NULL 7277 */ 7278 char *appendSChar(char c, const char *string2) { 7279 char *r = NULL; 7280 size_t l2; 7281 7282 charToS(string1, c); 7283 7284 if (!string2) { 7285 r = strdup(string1); 7286 return(r); 7287 } 7288 7289 l2 = strlen(string2); 7290 7291 if (!l2) { 7292 // empty string 7293 r = strdup(string1); 7294 return(r); 7295 } 7296 7297 r = MALLOC(1 + l2 + 1); 7298 if (!r) { 7299 return(NULL); 7300 } 7301 7302 strcpy(r,string1); 7303 strcat(r, string2); 7304 return(r); 7305 } 7306 7307 /** 7308 * append strings 7309 * 7310 * \param 7311 * string1 string, which is reallocated. 7312 * string2 string to append at the end of string1 7313 * \return 7314 * string1 modified string1 (realloc), string1+string2 (you must free the pointer) 7315 * string1 no change when string2 is NULL (you must free the pointer) 7316 * NULL no change when string1 is NULL 7317 */ 7318 char *iAppendS(char **string1, const char *string2) { 7319 char *tmp = NULL; 7320 size_t l1; 7321 size_t l2; 7322 7323 if (!string1) { 7324 return(NULL); 7325 } 7326 if (!string2) { 7327 return(*string1); 7328 } 7329 if (!*string1) { 7330 *string1 = strdup(string2); 7331 return(*string1); 7332 } 7333 7334 l1 = strlen(*string1); 7335 l2 = strlen(string2); 7336 7337 if (!l2) { 7338 // empty string 7339 return(*string1); 7340 } 7341 7342 tmp = REALLOC(*string1, l1 + l2 + 1); 7343 if (!tmp) { 7344 return(NULL); 7345 } 7346 7347 *string1 = tmp; 7348 strcat(*string1, string2); 7349 return(*string1); 7350 } 7351 7352 /** 7353 * append char to string 7354 * 7355 * \param 7356 * string1 string, which is reallocated. 7357 * c char to append at the end of string1 7358 * \return 7359 * string1 modified string1 (realloc), string1+c (you must free the pointer) 7360 * NULL no change when string1 is NULL 7361 */ 7362 char *iAppendCharS(char **string1, char c) { 7363 char *tmp = NULL; 7364 size_t l1; 7365 7366 if (!string1) { 7367 return(NULL); 7368 } 7369 7370 charToS(string2, c); 7371 7372 if (!*string1) { 7373 *string1 = strdup(string2); 7374 return(*string1); 7375 } 7376 7377 l1 = strlen(*string1); 7378 7379 tmp = REALLOC(*string1, l1 + 1 + 1); 7380 if (!tmp) { 7381 return(NULL); 7382 } 7383 7384 *string1 = tmp; 7385 strcat(*string1, string2); 7386 return(*string1); 7387 } 7388 7389 /** 7390 * append and free strings 7391 * 7392 * string2 is freed (except when there is an error) 7393 * 7394 * \param 7395 * string1 string, which is reallocated. 7396 * string2 string to append at the end of string1 7397 * \return 7398 * string1 modified string1 (realloc), string1+string2 (you must free the pointer) 7399 * NULL no change when string1 or string2 are NULL 7400 */ 7401 char *iAppendNFreeS(char **string1, char *string2) { 7402 char *r = NULL; 7403 7404 r = iAppendS(string1, string2); 7405 if (r) { 7406 free(string2); 7407 } 7408 return(r); 7409 } 7410 7411 /** 7412 * append many strings 7413 * 7414 * \param 7415 * string1 string, which is reallocated. 7416 * string2 string to append at the end of string1 7417 * \return 7418 * string1 modified string1, string1+string2 (you must free the pointer) 7419 * NULL no change when string1 or string2 are NULL 7420 */ 7421 char *iAppendManySF(char **string, const char *paramType, ...) { 7422 va_list pl; 7423 char *r = NULL; 7424 char **l = NULL; 7425 7426 if (!string) { 7427 return(NULL); 7428 } 7429 7430 pErrorNULL(iListPushS(&l, *string)); 7431 pErrorNULL(listPushS(&l, paramType)); 7432 7433 // add arguments to a list 7434 va_start(pl, paramType); 7435 paramType = va_arg(pl, char *); 7436 while (paramType) { 7437 pErrorNULL(listPushS(&l, paramType)); 7438 paramType = va_arg(pl, char *); 7439 } 7440 va_end(pl); 7441 // join list with empty delimiter 7442 r = join(l, ""); 7443 listFreeS(l); 7444 7445 // Already freed in listFreeS - free *string 7446 *string = r; 7447 return(r); 7448 } 7449 7450 /** 7451 * buffer append many strings 7452 * 7453 * \param 7454 * string1 string 7455 * string2 string to append at the end of string1 7456 * \return 7457 * string1 modified string1, string1+string2 7458 * NULL no change when string1 or string2 are NULL 7459 */ 7460 char *bAppendManySF(char *string, const char *paramType, ...) { 7461 va_list pl; 7462 char *r = NULL; 7463 char **l = NULL; 7464 7465 if (!string) { 7466 return(NULL); 7467 } 7468 7469 pErrorNULL(listPushS(&l, string)); 7470 pErrorNULL(listPushS(&l, paramType)); 7471 7472 // add arguments to a list 7473 va_start(pl, paramType); 7474 paramType = va_arg(pl, char *); 7475 while (paramType) { 7476 pErrorNULL(listPushS(&l, paramType)); 7477 paramType = va_arg(pl, char *); 7478 } 7479 va_end(pl); 7480 // join list with empty delimiter 7481 r = join(l, ""); 7482 listFreeS(l); 7483 7484 strcpy(string, r); 7485 free(r); 7486 return(string); 7487 } 7488 7489 /** 7490 * buffer size append many strings 7491 * 7492 * \param 7493 * string1 string 7494 * string2 string to append at the end of string1 7495 * \return 7496 * string1 modified string1, string1+string2 7497 * NULL no change when string1 or string2 are NULL 7498 */ 7499 char *bLAppendManySF(char *string, size_t stringSize, const char *paramType, ...) { 7500 va_list pl; 7501 char *r = NULL; 7502 char **l = NULL; 7503 7504 if (!string) { 7505 return(NULL); 7506 } 7507 7508 if (!stringSize) { 7509 // size 0 - no change 7510 return(string); 7511 } 7512 7513 pErrorNULL(listPushS(&l, string)); 7514 pErrorNULL(listPushS(&l, paramType)); 7515 7516 // add arguments to a list 7517 va_start(pl, paramType); 7518 paramType = va_arg(pl, char *); 7519 while (paramType) { 7520 pErrorNULL(listPushS(&l, paramType)); 7521 paramType = va_arg(pl, char *); 7522 } 7523 va_end(pl); 7524 // join list with empty delimiter 7525 r = join(l, ""); 7526 listFreeS(l); 7527 7528 pErrorNULL(strLCpy(string, stringSize, r)); 7529 free(r); 7530 return(string); 7531 } 7532 7533 /** 7534 * prepend strings 7535 * 7536 * \param 7537 * string1 string 7538 * string2 string to prepend at the beginning of string1 7539 * \return 7540 * new string string2+string1 (you must free the pointer) 7541 * dup string2 when string1 is NULL (you must free the pointer) 7542 * NULL when string2 is NULL 7543 */ 7544 char *prependS(const char *string1, const char *string2) { 7545 7546 return(appendS(string2, string1)); 7547 } 7548 7549 /** 7550 * prepend char to string 7551 * 7552 * \param 7553 * string1 string 7554 * c char to prepend at the beginning of string1 7555 * \return 7556 * new string c+string1 (you must free the pointer) 7557 * NULL when string1 is NULL 7558 */ 7559 char *prependCharS(const char *string1, char c) { 7560 7561 return(appendSChar(c, string1)); 7562 } 7563 7564 /** 7565 * prepend string to char 7566 * 7567 * \param 7568 * c char 7569 * string2 string to prepend at the beginning of c 7570 * \return 7571 * new string string2+c (you must free the pointer) 7572 * NULL when string2 is NULL 7573 */ 7574 char *prependSChar(char c, const char *string2) { 7575 7576 return(appendCharS(string2, c)); 7577 } 7578 7579 /** 7580 * prepend strings 7581 * 7582 * \param 7583 * string1 string, which is reallocated. 7584 * string2 string to prepend at the beginning of string1 7585 * \return 7586 * string1 modified string1, string2+string1 (you must free the pointer) 7587 * string1 when string2 is NULL (you must free the pointer) 7588 * NULL no change when string1 is NULL 7589 */ 7590 char *iPrependS(char **string1, const char *string2) { 7591 size_t l2; 7592 7593 if (!string1) { 7594 return(NULL); 7595 } 7596 if (!string2) { 7597 return(*string1); 7598 } 7599 if (!*string1) { 7600 *string1 = strdup(string2); 7601 return(*string1); 7602 } 7603 7604 l2 = strlen(string2); 7605 7606 if (!l2) { 7607 // empty string 7608 return(*string1); 7609 } 7610 7611 return(iInsertS(string1, 0, string2)); 7612 } 7613 7614 /** 7615 * prepend char to string 7616 * 7617 * \param 7618 * string1 string, which is reallocated. 7619 * c char to prepend at the beginning of string1 7620 * \return 7621 * string1 modified string1, c+string1 (you must free the pointer) 7622 * NULL no change when string1 is NULL 7623 */ 7624 char *iPrependCharS(char **string1, char c) { 7625 size_t l1; 7626 7627 if (!string1) { 7628 return(NULL); 7629 } 7630 7631 if (!c) { 7632 return(*string1); 7633 } 7634 7635 charToS(string2, c); 7636 7637 if (!*string1) { 7638 *string1 = strdup(string2); 7639 return(*string1); 7640 } 7641 7642 l1 = strlen(*string1); 7643 7644 char *tmp = REALLOC(*string1, l1 + 1 + 1); 7645 if (!tmp) { 7646 return(NULL); 7647 } 7648 7649 *string1 = tmp; 7650 memmove(*string1+1, *string1, l1+1); 7651 **string1 = c; 7652 return(*string1); 7653 } 7654 7655 /** 7656 * prepend and free strings 7657 * 7658 * string2 is freed 7659 * 7660 * \param 7661 * string1 string, which is reallocated. 7662 * string2 string to prepend at the beginning of string1 7663 * \return 7664 * string1 modified string1, string2+string1 (you must free the pointer) 7665 * NULL no change when string1 or string2 are NULL 7666 */ 7667 char *iPrependNFreeS(char **string1, char *string2) { 7668 char *r = NULL; 7669 7670 r = iPrependS(string1, string2); 7671 if (r) { 7672 free(string2); 7673 } 7674 return(r); 7675 } 7676 7677 7678 /** 7679 * buffer prepend strings 7680 * 7681 * \param 7682 * string1 string 7683 * string2 string to prepend at the beginning of string1 7684 * \return 7685 * string1 modified string1, string2+string1 7686 * NULL no change when string1 or string2 are NULL 7687 */ 7688 char *bPrependS(char *string1, const char *string2) { 7689 size_t l2; 7690 7691 if (!string1 || !string2) { 7692 return(NULL); 7693 } 7694 7695 if (!*string1) { 7696 strcpy(string1, string2); 7697 return(string1); 7698 } 7699 7700 l2 = strlen(string2); 7701 7702 if (!l2) { 7703 // empty string 7704 return(string1); 7705 } 7706 7707 return(bInsertS(string1, 0, string2)); 7708 } 7709 7710 /** 7711 * buffer prepend strings 7712 * 7713 * \param 7714 * string1 string 7715 * string2 string to prepend at the beginning of string1 7716 * \return 7717 * string1 modified string1, string2+string1 7718 * NULL no change when string1 or string2 are NULL 7719 */ 7720 char *bLPrependS(char *string1, size_t string1Size, const char *string2) { 7721 size_t l2; 7722 7723 if (!string1 || !string2) { 7724 return(NULL); 7725 } 7726 7727 if (!string1Size) { 7728 return(string1); 7729 } 7730 7731 if (!*string1) { 7732 pErrorNULL(strLCpy(string1, string1Size, string2)); 7733 return(string1); 7734 } 7735 7736 l2 = strlen(string2); 7737 7738 if (!l2) { 7739 // empty string 7740 return(string1); 7741 } 7742 7743 return(bLInsertS(string1, string1Size, 0, string2)); 7744 } 7745 7746 /** 7747 * replace String 7748 * the original remains unchanged 7749 * duplicate s 7750 * the olds string is replaced with the news string max times in the result 7751 * 0 for max means replace all olds strings 7752 * 7753 * \param 7754 * s: string 7755 * olds: old string to be replaced in s 7756 * news: new string replacing olds in s 7757 * max: number of times to replace olds, 0 to replace all found olds 7758 * \return 7759 * new string (you must free the pointer) 7760 * "" when s is empty 7761 * NULL when s is NULL 7762 * NULL when olds is empty 7763 */ 7764 char* replaceS(const char *s, const char *olds, const char *news, size_t max ) { 7765 char *r = NULL; 7766 char *tmp = NULL; 7767 // ins is next insert point 7768 const char *ins = NULL; 7769 size_t count; 7770 size_t lfront; 7771 7772 // sanity checks and initialization 7773 // count the number of replacements needed 7774 // allocate result 7775 // replace olds with news 7776 // copy end of string 7777 7778 // sanity checks and initialization 7779 if (!s) { 7780 return(NULL); 7781 } 7782 if (isEmptyS(s)) { 7783 // return "" when s is empty 7784 return(emptySF()); 7785 } 7786 if (!olds) { 7787 return(NULL); 7788 } 7789 size_t lolds; 7790 lolds = strlen(olds); 7791 if (!lolds) { 7792 // empty olds causes infinite loop 7793 return(NULL); 7794 } 7795 if (!news) { 7796 // empty string for NULL 7797 news = ""; 7798 } 7799 7800 // count the number of replacements needed 7801 ins = s; 7802 for (count = 0 ; (tmp = strstr(ins, olds)) ; ++count) { 7803 ins = tmp + lolds; 7804 if (max && (count == max)) { 7805 // the maximum number is replacements is reached, stop 7806 break; 7807 } 7808 } 7809 7810 7811 size_t lnews; 7812 lnews = strlen(news); 7813 7814 // allocate result 7815 tmp = r = MALLOC(strlen(s) + (lnews - lolds) * count + 1); 7816 if (!r) { 7817 return(NULL);//LCOV_EXCL_LINE 7818 } 7819 7820 // replace olds with news 7821 // ins points to the start of olds in s 7822 // tmp is the front of s, tmp points the end of s front in r 7823 // copy news to tmp, tmp points the end of news in r 7824 // s is the remainder of s after end of olds 7825 while (count--) { 7826 ins = strstr(s, olds); 7827 lfront = (size_t)(ins - s); 7828 tmp = strncpy(tmp, s, lfront) + lfront; 7829 tmp = strcpy(tmp, news) + lnews; 7830 s += lfront + lolds; 7831 } 7832 7833 // copy end of string 7834 strcpy(tmp, s); 7835 return(r); 7836 } 7837 7838 char *replaceCharSS(const char *s, char olds, const char *news, size_t max) { 7839 7840 charToS(p, olds); 7841 return(replaceS(s, p, news, max)); 7842 } 7843 7844 char *replaceSCharS(const char *s, const char *olds, char news, size_t max) { 7845 7846 charToS(p, news); 7847 return(replaceS(s, olds, p, max)); 7848 } 7849 7850 char *replaceCharCharS(const char *s, char olds, char news, size_t max) { 7851 7852 charToS(p, olds); 7853 charToS(n, news); 7854 return(replaceS(s, p, n, max)); 7855 } 7856 7857 /** 7858 * replaceSLen returns the length of the resulting string 7859 */ 7860 size_t replaceSLen(const char *s, const char *olds, const char *news, size_t max) { 7861 char *tmp = NULL; 7862 // ins is next insert point 7863 const char *ins = NULL; 7864 size_t count; 7865 7866 // sanity checks and initialization 7867 // count the number of replacements needed 7868 // allocate result 7869 // replace olds with news 7870 // copy end of string 7871 7872 // sanity checks and initialization 7873 if (!s) { 7874 return(0); 7875 } 7876 if (isEmptyS(s)) { 7877 // return "" when s is empty 7878 return(0); 7879 } 7880 if (!olds) { 7881 return(0); 7882 } 7883 size_t lolds; 7884 lolds = strlen(olds); 7885 if (!lolds) { 7886 // empty olds causes infinite loop 7887 return(0); 7888 } 7889 if (!news) { 7890 // empty string for NULL 7891 news = ""; 7892 } 7893 7894 // count the number of replacements needed 7895 ins = s; 7896 for (count = 0 ; (tmp = strstr(ins, olds)) ; ++count) { 7897 ins = tmp + lolds; 7898 if (max && (count == max)) { 7899 // the maximum number is replacements is reached, stop 7900 break; 7901 } 7902 } 7903 7904 7905 size_t lnews; 7906 lnews = strlen(news); 7907 7908 return(strlen(s) + (lnews - lolds) * count); 7909 } 7910 7911 /** 7912 * replace String 7913 * the olds string is replaced with the news string max times in the result 7914 * 0 for max means replace all olds strings 7915 * 7916 * \param 7917 * s: string (that is allocated with malloc) 7918 * olds: old string to be replaced in s 7919 * news: new string replacing olds in s 7920 * max: number of times to replace olds, 0 to replace all found olds 7921 * \return 7922 * modified s string (you must free the pointer) 7923 * NULL s not modified when s is NULL or empty and when olds is empty 7924 */ 7925 char* iReplaceS(char **s, const char *olds, const char *news, size_t max ) { 7926 char *r = NULL; 7927 char *tmp = NULL; 7928 char *workingS = NULL; 7929 // ins is next insert point 7930 char *ins = NULL; 7931 size_t count; 7932 size_t lfront; 7933 7934 // sanity checks and initialization 7935 // count the number of replacements needed 7936 // allocate result 7937 // replace olds with news 7938 // copy end of string 7939 7940 // sanity checks and initialization 7941 if (!s || !*s) { 7942 return(NULL); 7943 } 7944 if (isEmptyS(*s)) { 7945 // s is empty, do nothing 7946 return(NULL); 7947 } 7948 if (!olds) { 7949 return(NULL); 7950 } 7951 size_t lolds; 7952 lolds = strlen(olds); 7953 if (!lolds) { 7954 // empty olds causes infinite loop 7955 return(NULL); 7956 } 7957 if (!news) { 7958 // empty string for NULL 7959 news = ""; 7960 } 7961 7962 // count the number of replacements needed 7963 ins = workingS = *s; 7964 for (count = 0 ; (tmp = strstr(ins, olds)) ; ++count) { 7965 ins = tmp + lolds; 7966 if (max && (count == max)) { 7967 // the maximum number is replacements is reached, stop 7968 break; 7969 } 7970 } 7971 7972 7973 size_t lnews; 7974 lnews = strlen(news); 7975 7976 // allocate result 7977 size_t rLen = strlen(*s) + (lnews - lolds) * count + 1;; 7978 tmp = r = MALLOC(rLen); 7979 if (!r) { 7980 return(NULL); 7981 } 7982 7983 // replace olds with news 7984 // ins points to the start of olds in s 7985 // tmp is the front of s, tmp points the end of s front in r 7986 // copy news to tmp, tmp points the end of news in r 7987 // s is the remainder of s after end of olds 7988 while (count--) { 7989 ins = strstr(workingS, olds); 7990 lfront = (size_t)(ins - workingS); 7991 tmp = strncpy(tmp, workingS, lfront) + lfront; 7992 tmp = strcpy(tmp, news) + lnews; 7993 workingS += lfront + lolds; 7994 } 7995 7996 // copy end of string 7997 strcpy(tmp, workingS); 7998 7999 free(*s); 8000 *s = r; 8001 return(r); 8002 } 8003 8004 char *iReplaceCharSS(char **s, char olds, const char *news, size_t max) { 8005 8006 charToS(p, olds); 8007 return(iReplaceS(s, p, news, max)); 8008 } 8009 8010 char *iReplaceSCharS(char **s, const char *olds, char news, size_t max) { 8011 8012 charToS(p, news); 8013 return(iReplaceS(s, olds, p, max)); 8014 } 8015 8016 char *iReplaceCharCharS(char **s, char olds, char news, size_t max) { 8017 8018 charToS(p, olds); 8019 charToS(n, news); 8020 return(iReplaceS(s, p, n, max)); 8021 } 8022 8023 /** 8024 * buffer replace String 8025 * the olds string is replaced with the news string max times in the result 8026 * 0 for max means replace all olds strings 8027 * 8028 * \param 8029 * s: string 8030 * olds: old string to be replaced in s 8031 * news: new string replacing olds in s 8032 * max: number of times to replace olds, 0 to replace all found olds 8033 * \return 8034 * modified s string 8035 * NULL s not modified when s is NULL or empty and when olds is empty 8036 */ 8037 char* bReplaceS(char *s, const char *olds, const char *news, size_t max ) { 8038 char *r = NULL; 8039 char *tmp = NULL; 8040 char *workingS = NULL; 8041 // ins is next insert point 8042 char *ins = NULL; 8043 size_t count; 8044 size_t lfront; 8045 8046 // sanity checks and initialization 8047 // count the number of replacements needed 8048 // allocate result 8049 // replace olds with news 8050 // copy end of string 8051 8052 // sanity checks and initialization 8053 if (!s) { 8054 return(NULL); 8055 } 8056 if (isEmptyS(s)) { 8057 // s is empty, do nothing 8058 return(NULL); 8059 } 8060 if (!olds) { 8061 return(NULL); 8062 } 8063 size_t lolds; 8064 lolds = strlen(olds); 8065 if (!lolds) { 8066 // empty olds causes infinite loop 8067 return(NULL); 8068 } 8069 if (!news) { 8070 // empty string for NULL 8071 news = ""; 8072 } 8073 8074 // count the number of replacements needed 8075 ins = workingS = s; 8076 for (count = 0 ; (tmp = strstr(ins, olds)) ; ++count) { 8077 ins = tmp + lolds; 8078 if (max && (count == max)) { 8079 // the maximum number is replacements is reached, stop 8080 break; 8081 } 8082 } 8083 8084 8085 size_t lnews; 8086 lnews = strlen(news); 8087 8088 // allocate result 8089 size_t rLen = strlen(s) + (lnews - lolds) * count + 1;; 8090 tmp = r = MALLOC(rLen); 8091 if (!r) { 8092 return(NULL); 8093 } 8094 8095 // replace olds with news 8096 // ins points to the start of olds in s 8097 // tmp is the front of s, tmp points the end of s front in r 8098 // copy news to tmp, tmp points the end of news in r 8099 // s is the remainder of s after end of olds 8100 while (count--) { 8101 ins = strstr(workingS, olds); 8102 lfront = (size_t)(ins - workingS); 8103 tmp = strncpy(tmp, workingS, lfront) + lfront; 8104 tmp = strcpy(tmp, news) + lnews; 8105 workingS += lfront + lolds; 8106 } 8107 8108 // copy end of string 8109 strcpy(tmp, workingS); 8110 8111 strcpy(s, r); 8112 free(r); 8113 return(s); 8114 } 8115 8116 /** 8117 * buffer size replace String 8118 * the olds string is replaced with the news string max times in the result 8119 * 0 for max means replace all olds strings 8120 * 8121 * \param 8122 * s: string 8123 * olds: old string to be replaced in s 8124 * news: new string replacing olds in s 8125 * max: number of times to replace olds, 0 to replace all found olds 8126 * \return 8127 * modified s string 8128 * NULL s not modified when s is NULL or empty and when olds is empty 8129 */ 8130 char* bLReplaceS(char *s, size_t sSize, const char *olds, const char *news, size_t max) { 8131 char *r = NULL; 8132 char *tmp = NULL; 8133 char *workingS = NULL; 8134 // ins is next insert point 8135 char *ins = NULL; 8136 size_t count; 8137 size_t lfront; 8138 8139 // sanity checks and initialization 8140 // count the number of replacements needed 8141 // allocate result 8142 // replace olds with news 8143 // copy end of string 8144 8145 // sanity checks and initialization 8146 if (!s) { 8147 return(NULL); 8148 } 8149 if (!sSize) { 8150 // size 0 - no change 8151 return(s); 8152 } 8153 if (isEmptyS(s)) { 8154 // s is empty, do nothing 8155 return(NULL); 8156 } 8157 if (!olds) { 8158 return(NULL); 8159 } 8160 size_t lolds; 8161 lolds = strlen(olds); 8162 if (!lolds) { 8163 // empty olds causes infinite loop 8164 return(NULL); 8165 } 8166 if (!news) { 8167 // empty string for NULL 8168 news = ""; 8169 } 8170 8171 // count the number of replacements needed 8172 ins = workingS = s; 8173 for (count = 0 ; (tmp = strstr(ins, olds)) ; ++count) { 8174 ins = tmp + lolds; 8175 if (max && (count == max)) { 8176 // the maximum number is replacements is reached, stop 8177 break; 8178 } 8179 } 8180 8181 8182 size_t lnews; 8183 lnews = strlen(news); 8184 8185 // allocate result 8186 size_t rLen = strlen(s) + (lnews - lolds) * count + 1;; 8187 tmp = r = MALLOC(rLen); 8188 if (!r) { 8189 return(NULL); 8190 } 8191 8192 // replace olds with news 8193 // ins points to the start of olds in s 8194 // tmp is the front of s, tmp points the end of s front in r 8195 // copy news to tmp, tmp points the end of news in r 8196 // s is the remainder of s after end of olds 8197 while (count--) { 8198 ins = strstr(workingS, olds); 8199 lfront = (size_t)(ins - workingS); 8200 tmp = strncpy(tmp, workingS, lfront) + lfront; 8201 tmp = strcpy(tmp, news) + lnews; 8202 workingS += lfront + lolds; 8203 } 8204 8205 // copy end of string 8206 strcpy(tmp, workingS); 8207 8208 pErrorNULL(strLCpy(s, sSize, r)); 8209 free(r); 8210 return(s); 8211 } 8212 8213 /** 8214 * replace Many Strings 8215 * the original remains unchanged 8216 * duplicate s 8217 * the olds string is replaced with the news string max times in the result 8218 * 8219 * Example: 8220 * r = replaceManyS("asd", "s", "BNM", "a", "AAA") 8221 * ^olds ^news ^olds ^news 8222 * 8223 * \param 8224 * s: string 8225 * olds: old string to be replaced in s 8226 * news: new string replacing olds in s 8227 * ... 8228 * \return 8229 * new string (you must free the pointer) 8230 * "" when s is empty 8231 * NULL when s is NULL 8232 * NULL when only 2 parameters are given 8233 * NULL when any olds is empty 8234 */ 8235 char *replaceManySF(const char *paramType, ...) { 8236 va_list pl; 8237 char *param = NULL; 8238 char *r = NULL; 8239 char *workingS = NULL; 8240 char *olds = NULL; 8241 char *news = NULL; 8242 8243 // sanity checks 8244 if (!paramType) { 8245 return(NULL); 8246 } 8247 8248 if (isEmptyS(paramType)) { 8249 return(emptySF()); 8250 } 8251 8252 workingS = strdup(paramType); 8253 8254 // add arguments to a list 8255 va_start(pl, paramType); 8256 param = va_arg(pl, char *); 8257 while (param) { 8258 if (!olds) { 8259 olds = param; 8260 } 8261 else if (!news) { 8262 news = param; 8263 r = replaceS(workingS, olds, news, 0); 8264 free(workingS); 8265 olds = NULL; 8266 news = NULL; 8267 workingS = r; 8268 } 8269 param = va_arg(pl, char *); 8270 } 8271 va_end(pl); 8272 if (!r) { 8273 free(workingS); 8274 } 8275 return(r); 8276 } 8277 8278 /** 8279 * replace Many Strings 8280 * the olds string is replaced with the news string max times in the result 8281 * 8282 * Example: 8283 * iReplaceManyS(s, "s", "BNM", "a", "AAA") 8284 * ^olds ^news ^olds ^news 8285 * 8286 * \param 8287 * string (this parameter is reallocated) 8288 * olds: old string to be replaced in s 8289 * news: new string replacing olds in s 8290 * ... 8291 * \return 8292 * modified string (you must free the pointer) 8293 * NULL not modified when s is empty, when s is NULL, when only 2 parameters are given, 8294 * when any olds is empty 8295 */ 8296 char *iReplaceManySF(char **s, char *paramType, ...) { 8297 va_list pl; 8298 char *olds = NULL; 8299 char *news = NULL; 8300 8301 // sanity checks 8302 if (!s || !*s) { 8303 return(NULL); 8304 } 8305 8306 if (isEmptyS(*s)) { 8307 return(NULL); 8308 } 8309 8310 olds = (char *) paramType;; 8311 8312 // add arguments to a list 8313 va_start(pl, paramType); 8314 paramType = va_arg(pl, char *); 8315 while (paramType) { 8316 if (!olds) { 8317 olds = (char *) paramType; 8318 } 8319 else if (!news) { 8320 news = (char *) paramType; 8321 pErrorNULL(iReplaceS(s, olds, news, 0)); 8322 olds = NULL; 8323 news = NULL; 8324 } 8325 8326 paramType = va_arg(pl, char *); 8327 } 8328 va_end(pl); 8329 return(*s); 8330 } 8331 8332 /** 8333 * buffer replace Many Strings 8334 * the olds string is replaced with the news string max times in the result 8335 * 8336 * Example: 8337 * bReplaceManyS(s, "s", "BNM", "a", "AAA") 8338 * ^olds ^news ^olds ^news 8339 * 8340 * \param 8341 * string 8342 * olds: old string to be replaced in s 8343 * news: new string replacing olds in s 8344 * ... 8345 * \return 8346 * modified string 8347 * NULL not modified when s is empty, when s is NULL, when only 2 parameters are given, 8348 * when any olds is empty 8349 */ 8350 char *bReplaceManySF(char *s, char *paramType, ...) { 8351 va_list pl; 8352 char *olds = NULL; 8353 char *news = NULL; 8354 8355 // sanity checks 8356 if (!s) { 8357 return(NULL); 8358 } 8359 8360 if (isEmptyS(s)) { 8361 return(NULL); 8362 } 8363 8364 olds = paramType;; 8365 8366 // add arguments to a list 8367 va_start(pl, paramType); 8368 paramType = va_arg(pl, char *); 8369 while (paramType) { 8370 if (!olds) { 8371 olds = paramType; 8372 } 8373 else if (!news) { 8374 news = paramType; 8375 pErrorNULL(bReplaceS(s, olds, news, 0)); 8376 olds = NULL; 8377 news = NULL; 8378 } 8379 8380 paramType = va_arg(pl, char *); 8381 } 8382 va_end(pl); 8383 return(s); 8384 } 8385 8386 /** 8387 * buffer size replace Many Strings 8388 * the olds string is replaced with the news string max times in the result 8389 * 8390 * Example: 8391 * bReplaceManyS(s, "s", "BNM", "a", "AAA") 8392 * ^olds ^news ^olds ^news 8393 * 8394 * \param 8395 * string 8396 * olds: old string to be replaced in s 8397 * news: new string replacing olds in s 8398 * ... 8399 * \return 8400 * modified string 8401 * NULL not modified when s is empty, when s is NULL, when only 2 parameters are given, 8402 * when any olds is empty 8403 */ 8404 char *bLReplaceManySF(char *s, size_t sSize, char *paramType, ...) { 8405 va_list pl; 8406 char *olds = NULL; 8407 char *news = NULL; 8408 8409 // sanity checks 8410 if (!s) { 8411 return(NULL); 8412 } 8413 8414 if (!sSize) { 8415 return(s); 8416 } 8417 8418 if (isEmptyS(s)) { 8419 return(NULL); 8420 } 8421 8422 olds = paramType;; 8423 8424 // add arguments to a list 8425 va_start(pl, paramType); 8426 paramType = va_arg(pl, char *); 8427 while (paramType) { 8428 if (!olds) { 8429 olds = paramType; 8430 } 8431 else if (!news) { 8432 news = paramType; 8433 pErrorNULL(bLReplaceS(s, sSize, olds, news, 0)); 8434 olds = NULL; 8435 news = NULL; 8436 } 8437 8438 paramType = va_arg(pl, char *); 8439 } 8440 va_end(pl); 8441 return(s); 8442 } 8443 8444 /** 8445 * ignore case Replace String 8446 * the original remains unchanged 8447 * duplicate s 8448 * the olds string is replaced with the news string max times in the result 8449 * 0 for max means replace all olds strings 8450 * 8451 * \param 8452 * s: string 8453 * olds: old string to be replaced in s 8454 * news: new string replacing olds in s 8455 * max: number of times to replace olds, 0 to replace all found olds 8456 * \return 8457 * new string (you must free the pointer) 8458 * "" when s is empty 8459 * NULL when s is NULL 8460 * NULL when olds is empty 8461 */ 8462 char* icReplaceS(const char *s, const char *olds, const char *news, size_t max ) { 8463 char *r = NULL; 8464 char *tmp = NULL; 8465 // ins is next insert point 8466 const char *ins = NULL; 8467 size_t count; 8468 size_t lfront; 8469 8470 // sanity checks and initialization 8471 // count the number of replacements needed 8472 // allocate result 8473 // replace olds with news 8474 // copy end of string 8475 8476 // sanity checks and initialization 8477 if (!s) { 8478 return(NULL); 8479 } 8480 if (isEmptyS(s)) { 8481 // return "" when s is empty 8482 return(emptySF()); 8483 } 8484 if (!olds) { 8485 return(NULL); 8486 } 8487 size_t lolds; 8488 lolds = strlen(olds); 8489 if (!lolds) { 8490 // empty olds causes infinite loop 8491 return(NULL); 8492 } 8493 if (!news) { 8494 // empty string for NULL 8495 news = ""; 8496 } 8497 8498 // count the number of replacements needed 8499 ins = s; 8500 for (count = 0 ; (tmp = strcasestr(ins, olds)) ; ++count) { 8501 ins = tmp + lolds; 8502 if (max && (count == max)) { 8503 // the maximum number is replacements is reached, stop 8504 break; 8505 } 8506 } 8507 8508 8509 size_t lnews; 8510 lnews = strlen(news); 8511 8512 // allocate result 8513 tmp = r = MALLOC(strlen(s) + (lnews - lolds) * count + 1); 8514 if (!r) { 8515 return(NULL);//LCOV_EXCL_LINE 8516 } 8517 8518 // replace olds with news 8519 // ins points to the start of olds in s 8520 // tmp is the front of s, tmp points the end of s front in r 8521 // copy news to tmp, tmp points the end of news in r 8522 // s is the remainder of s after end of olds 8523 while (count--) { 8524 ins = strcasestr(s, olds); 8525 lfront = (size_t)(ins - s); 8526 tmp = strncpy(tmp, s, lfront) + lfront; 8527 tmp = strcpy(tmp, news) + lnews; 8528 s += lfront + lolds; 8529 } 8530 8531 // copy end of string 8532 strcpy(tmp, s); 8533 return(r); 8534 } 8535 8536 char *icReplaceCharSS(const char *s, char olds, const char *news, size_t max) { 8537 8538 charToS(p, olds); 8539 return(icReplaceS(s, p, news, max)); 8540 } 8541 8542 char *icReplaceSCharS(const char *s, const char *olds, char news, size_t max) { 8543 8544 charToS(p, news); 8545 return(icReplaceS(s, olds, p, max)); 8546 } 8547 8548 char *icReplaceCharCharS(const char *s, char olds, char news, size_t max) { 8549 8550 charToS(p, olds); 8551 charToS(n, news); 8552 return(icReplaceS(s, p, n, max)); 8553 } 8554 8555 8556 /** 8557 * in place ignore case replace String 8558 * the olds string is replaced with the news string max times in the result 8559 * 0 for max means replace all olds strings 8560 * 8561 * \param 8562 * s: string (this parameter is reallocated) 8563 * olds: old string to be replaced in s 8564 * news: new string replacing olds in s 8565 * max: number of times to replace olds, 0 to replace all found olds 8566 * \return 8567 * modified s string (you must free the pointer) 8568 * NULL s not modified when s is NULL or empty and when olds is empty 8569 */ 8570 char* iicReplaceS(char **s, const char *olds, const char *news, size_t max ) { 8571 char *r = NULL; 8572 char *tmp = NULL; 8573 char *workingS = NULL; 8574 // ins is next insert point 8575 char *ins = NULL; 8576 size_t count; 8577 size_t lfront; 8578 8579 // sanity checks and initialization 8580 // count the number of replacements needed 8581 // allocate result 8582 // replace olds with news 8583 // copy end of string 8584 8585 // sanity checks and initialization 8586 if (!s || !*s) { 8587 return(NULL); 8588 } 8589 if (isEmptyS(*s)) { 8590 // s is empty, do nothing 8591 return(NULL); 8592 } 8593 if (!olds) { 8594 return(NULL); 8595 } 8596 size_t lolds; 8597 lolds = strlen(olds); 8598 if (!lolds) { 8599 // empty olds causes infinite loop 8600 return(NULL); 8601 } 8602 if (!news) { 8603 // empty string for NULL 8604 news = ""; 8605 } 8606 8607 // count the number of replacements needed 8608 ins = workingS = *s; 8609 for (count = 0 ; (tmp = strcasestr(ins, olds)) ; ++count) { 8610 ins = tmp + lolds; 8611 if (max && (count == max)) { 8612 // the maximum number is replacements is reached, stop 8613 break; 8614 } 8615 } 8616 8617 8618 size_t lnews; 8619 lnews = strlen(news); 8620 8621 // allocate result 8622 size_t rLen = strlen(*s) + (lnews - lolds) * count + 1;; 8623 tmp = r = MALLOC(rLen); 8624 if (!r) { 8625 return(NULL); 8626 } 8627 8628 // replace olds with news 8629 // ins points to the start of olds in s 8630 // tmp is the front of s, tmp points the end of s front in r 8631 // copy news to tmp, tmp points the end of news in r 8632 // s is the remainder of s after end of olds 8633 while (count--) { 8634 ins = strcasestr(workingS, olds); 8635 lfront = (size_t)(ins - workingS); 8636 tmp = strncpy(tmp, workingS, lfront) + lfront; 8637 tmp = strcpy(tmp, news) + lnews; 8638 workingS += lfront + lolds; 8639 } 8640 8641 // copy end of string 8642 strcpy(tmp, workingS); 8643 8644 free(*s); 8645 *s = r; 8646 return(r); 8647 } 8648 8649 char *iicReplaceCharSS(char **s, char olds, const char *news, size_t max) { 8650 8651 charToS(p, olds); 8652 return(iicReplaceS(s, p, news, max)); 8653 } 8654 8655 char *iicReplaceSCharS(char **s, const char *olds, char news, size_t max) { 8656 8657 charToS(p, news); 8658 return(iicReplaceS(s, olds, p, max)); 8659 } 8660 8661 char *iicReplaceCharCharS(char **s, char olds, char news, size_t max) { 8662 8663 charToS(p, olds); 8664 charToS(n, news); 8665 return(iicReplaceS(s, p, n, max)); 8666 } 8667 8668 /** 8669 * buffer ignore case replace String 8670 * the olds string is replaced with the news string max times in the result 8671 * 0 for max means replace all olds strings 8672 * 8673 * \param 8674 * s: string 8675 * olds: old string to be replaced in s 8676 * news: new string replacing olds in s 8677 * max: number of times to replace olds, 0 to replace all found olds 8678 * \return 8679 * modified s string 8680 * NULL s not modified when s is NULL or empty and when olds is empty 8681 */ 8682 char* bicReplaceS(char *s, const char *olds, const char *news, size_t max ) { 8683 char *r = NULL; 8684 char *tmp = NULL; 8685 char *workingS = NULL; 8686 // ins is next insert point 8687 char *ins = NULL; 8688 size_t count; 8689 size_t lfront; 8690 8691 // sanity checks and initialization 8692 // count the number of replacements needed 8693 // allocate result 8694 // replace olds with news 8695 // copy end of string 8696 8697 // sanity checks and initialization 8698 if (!s) { 8699 return(NULL); 8700 } 8701 if (isEmptyS(s)) { 8702 // s is empty, do nothing 8703 return(NULL); 8704 } 8705 if (!olds) { 8706 return(NULL); 8707 } 8708 size_t lolds; 8709 lolds = strlen(olds); 8710 if (!lolds) { 8711 // empty olds causes infinite loop 8712 return(NULL); 8713 } 8714 if (!news) { 8715 // empty string for NULL 8716 news = ""; 8717 } 8718 8719 // count the number of replacements needed 8720 ins = workingS = s; 8721 for (count = 0 ; (tmp = strcasestr(ins, olds)) ; ++count) { 8722 ins = tmp + lolds; 8723 if (max && (count == max)) { 8724 // the maximum number is replacements is reached, stop 8725 break; 8726 } 8727 } 8728 8729 8730 size_t lnews; 8731 lnews = strlen(news); 8732 8733 // allocate result 8734 size_t rLen = strlen(s) + (lnews - lolds) * count + 1;; 8735 tmp = r = MALLOC(rLen); 8736 if (!r) { 8737 return(NULL); 8738 } 8739 8740 // replace olds with news 8741 // ins points to the start of olds in s 8742 // tmp is the front of s, tmp points the end of s front in r 8743 // copy news to tmp, tmp points the end of news in r 8744 // s is the remainder of s after end of olds 8745 while (count--) { 8746 ins = strcasestr(workingS, olds); 8747 lfront = (size_t)(ins - workingS); 8748 tmp = strncpy(tmp, workingS, lfront) + lfront; 8749 tmp = strcpy(tmp, news) + lnews; 8750 workingS += lfront + lolds; 8751 } 8752 8753 // copy end of string 8754 strcpy(tmp, workingS); 8755 8756 strcpy(s, r); 8757 free(r); 8758 return(s); 8759 } 8760 8761 /** 8762 * buffer size ignore case replace String 8763 * the olds string is replaced with the news string max times in the result 8764 * 0 for max means replace all olds strings 8765 * 8766 * \param 8767 * s: string 8768 * olds: old string to be replaced in s 8769 * news: new string replacing olds in s 8770 * max: number of times to replace olds, 0 to replace all found olds 8771 * \return 8772 * modified s string 8773 * NULL s not modified when s is NULL or empty and when olds is empty 8774 */ 8775 char* bLicReplaceS(char *s, size_t sSize, const char *olds, const char *news, size_t max) { 8776 char *r = NULL; 8777 char *tmp = NULL; 8778 char *workingS = NULL; 8779 // ins is next insert point 8780 char *ins = NULL; 8781 size_t count; 8782 size_t lfront; 8783 8784 // sanity checks and initialization 8785 // count the number of replacements needed 8786 // allocate result 8787 // replace olds with news 8788 // copy end of string 8789 8790 // sanity checks and initialization 8791 if (!s) { 8792 return(NULL); 8793 } 8794 if (!sSize) { 8795 // size 0 - no change 8796 return(s); 8797 } 8798 if (isEmptyS(s)) { 8799 // s is empty, do nothing 8800 return(NULL); 8801 } 8802 if (!olds) { 8803 return(NULL); 8804 } 8805 size_t lolds; 8806 lolds = strlen(olds); 8807 if (!lolds) { 8808 // empty olds causes infinite loop 8809 return(NULL); 8810 } 8811 if (!news) { 8812 // empty string for NULL 8813 news = ""; 8814 } 8815 8816 // count the number of replacements needed 8817 ins = workingS = s; 8818 for (count = 0 ; (tmp = strcasestr(ins, olds)) ; ++count) { 8819 ins = tmp + lolds; 8820 if (max && (count == max)) { 8821 // the maximum number is replacements is reached, stop 8822 break; 8823 } 8824 } 8825 8826 8827 size_t lnews; 8828 lnews = strlen(news); 8829 8830 // allocate result 8831 size_t rLen = strlen(s) + (lnews - lolds) * count + 1;; 8832 tmp = r = MALLOC(rLen); 8833 if (!r) { 8834 return(NULL); 8835 } 8836 8837 // replace olds with news 8838 // ins points to the start of olds in s 8839 // tmp is the front of s, tmp points the end of s front in r 8840 // copy news to tmp, tmp points the end of news in r 8841 // s is the remainder of s after end of olds 8842 while (count--) { 8843 ins = strcasestr(workingS, olds); 8844 lfront = (size_t)(ins - workingS); 8845 tmp = strncpy(tmp, workingS, lfront) + lfront; 8846 tmp = strcpy(tmp, news) + lnews; 8847 workingS += lfront + lolds; 8848 } 8849 8850 // copy end of string 8851 strcpy(tmp, workingS); 8852 8853 pErrorNULL(strLCpy(s, sSize, r)); 8854 free(r); 8855 return(s); 8856 } 8857 8858 /** 8859 * ignore case replace Many Strings 8860 * the original remains unchanged 8861 * duplicate s 8862 * the olds string is replaced with the news string max times in the result 8863 * 8864 * Example: 8865 * r = icReplaceManyS("asd", "s", "BNM", "a", "AAA") 8866 * ^olds ^news ^olds ^news 8867 * 8868 * \param 8869 * s: string 8870 * olds: old string to be replaced in s 8871 * news: new string replacing olds in s 8872 * ... 8873 * \return 8874 * new string (you must free the pointer) 8875 * "" when s is empty 8876 * NULL when s is NULL 8877 * NULL when only 2 parameters are given 8878 * NULL when any olds is empty 8879 */ 8880 char *icReplaceManySF(const char *paramType, ...) { 8881 va_list pl; 8882 char *r = NULL; 8883 char *param = NULL; 8884 char *workingS = NULL; 8885 char *olds = NULL; 8886 char *news = NULL; 8887 8888 // sanity checks 8889 if (!paramType) { 8890 return(NULL); 8891 } 8892 8893 if (isEmptyS(paramType)) { 8894 return(emptySF()); 8895 } 8896 8897 workingS = strdup(paramType); 8898 8899 // add arguments to a list 8900 va_start(pl, paramType); 8901 param = va_arg(pl, char *); 8902 while (param) { 8903 if (!olds) { 8904 olds = param; 8905 } 8906 else if (!news) { 8907 news = param; 8908 r = icReplaceS(workingS, olds, news, 0); 8909 free(workingS); 8910 olds = NULL; 8911 news = NULL; 8912 workingS = r; 8913 } 8914 param = va_arg(pl, char *); 8915 } 8916 va_end(pl); 8917 if (!r) { 8918 free(workingS); 8919 } 8920 return(r); 8921 } 8922 8923 /** 8924 * in place ignore case replace Many Strings 8925 * the olds string is replaced with the news string max times in the result 8926 * 8927 * Example: 8928 * iicReplaceManyS(s, "s", "BNM", "a", "AAA") 8929 * ^olds ^news ^olds ^news 8930 * 8931 * \param 8932 * string (this parameter is reallocated) 8933 * olds: old string to be replaced in s 8934 * news: new string replacing olds in s 8935 * ... 8936 * \return 8937 * modified string (you must free the pointer) 8938 * NULL not modified when s is empty, when s is NULL, when only 2 parameters are given, 8939 * when any olds is empty 8940 */ 8941 char *iicReplaceManySF(char **s, char *paramType, ...) { 8942 va_list pl; 8943 char *olds = NULL; 8944 char *news = NULL; 8945 8946 // sanity checks 8947 if (!s || !*s) { 8948 return(NULL); 8949 } 8950 8951 if (isEmptyS(*s)) { 8952 return(NULL); 8953 } 8954 8955 olds = paramType;; 8956 8957 // add arguments to a list 8958 va_start(pl, paramType); 8959 paramType = va_arg(pl, char *); 8960 while (paramType) { 8961 if (!olds) { 8962 olds = paramType; 8963 } 8964 else if (!news) { 8965 news = paramType; 8966 pErrorNULL(iicReplaceS(s, olds, news, 0)); 8967 olds = NULL; 8968 news = NULL; 8969 } 8970 8971 paramType = va_arg(pl, char *); 8972 } 8973 va_end(pl); 8974 return(*s); 8975 } 8976 8977 /** 8978 * buffer ignore case replace Many Strings 8979 * the olds string is replaced with the news string max times in the result 8980 * 8981 * Example: 8982 * bReplaceManyS(s, "s", "BNM", "a", "AAA") 8983 * ^olds ^news ^olds ^news 8984 * 8985 * \param 8986 * string 8987 * olds: old string to be replaced in s 8988 * news: new string replacing olds in s 8989 * ... 8990 * \return 8991 * modified string 8992 * NULL not modified when s is empty, when s is NULL, when only 2 parameters are given, 8993 * when any olds is empty 8994 */ 8995 char *bicReplaceManySF(char *s, char *paramType, ...) { 8996 va_list pl; 8997 char *olds = NULL; 8998 char *news = NULL; 8999 9000 // sanity checks 9001 if (!s) { 9002 return(NULL); 9003 } 9004 9005 if (isEmptyS(s)) { 9006 return(NULL); 9007 } 9008 9009 olds = paramType;; 9010 9011 // add arguments to a list 9012 va_start(pl, paramType); 9013 paramType = va_arg(pl, char *); 9014 while (paramType) { 9015 if (!olds) { 9016 olds = paramType; 9017 } 9018 else if (!news) { 9019 news = paramType; 9020 pErrorNULL(bicReplaceS(s, olds, news, 0)); 9021 olds = NULL; 9022 news = NULL; 9023 } 9024 9025 paramType = va_arg(pl, char *); 9026 } 9027 va_end(pl); 9028 return(s); 9029 } 9030 9031 /** 9032 * buffer size ignore case replace Many Strings 9033 * the olds string is replaced with the news string max times in the result 9034 * 9035 * Example: 9036 * bReplaceManyS(s, "s", "BNM", "a", "AAA") 9037 * ^olds ^news ^olds ^news 9038 * 9039 * \param 9040 * string 9041 * olds: old string to be replaced in s 9042 * news: new string replacing olds in s 9043 * ... 9044 * \return 9045 * modified string 9046 * NULL not modified when s is empty, when s is NULL, when only 2 parameters are given, 9047 * when any olds is empty 9048 */ 9049 char *bLicReplaceManySF(char *s, size_t sSize, char *paramType, ...) { 9050 va_list pl; 9051 char *olds = NULL; 9052 char *news = NULL; 9053 9054 // sanity checks 9055 if (!s) { 9056 return(NULL); 9057 } 9058 9059 if (!sSize) { 9060 return(s); 9061 } 9062 9063 if (isEmptyS(s)) { 9064 return(NULL); 9065 } 9066 9067 olds = paramType;; 9068 9069 // add arguments to a list 9070 va_start(pl, paramType); 9071 paramType = va_arg(pl, char *); 9072 while (paramType) { 9073 if (!olds) { 9074 olds = paramType; 9075 } 9076 else if (!news) { 9077 news = paramType; 9078 pErrorNULL(bLicReplaceS(s, sSize, olds, news, 0)); 9079 olds = NULL; 9080 news = NULL; 9081 } 9082 9083 paramType = va_arg(pl, char *); 9084 } 9085 va_end(pl); 9086 return(s); 9087 } 9088 9089 9090 /** 9091 * string Equal 9092 * compare string1 to string2 9093 * 9094 * \param 9095 * 2 strings 9096 * \return 9097 * true the strings have identical content 9098 * false they differ 9099 */ 9100 bool eqS(const char *string1, const char *string2) { 9101 9102 // sanity checks 9103 if (!string1 || !string2) { 9104 return(false); 9105 } 9106 return(strcmp(string1,string2) == 0);; 9107 } 9108 9109 bool eqCharS(char c, const char *string2) { 9110 9111 // sanity checks 9112 if (!string2) { 9113 return(false); 9114 } 9115 charToS(s, c); 9116 return(strcmp(s,string2) == 0);; 9117 } 9118 9119 bool eqSChar(const char *string1, char c) { 9120 9121 // sanity checks 9122 if (!string1) { 9123 return(false); 9124 } 9125 charToS(s, c); 9126 return(strcmp(string1,s) == 0);; 9127 } 9128 9129 /** 9130 * string Index Equal 9131 * compare string1 at index to string2 9132 * when string2 is empty, the result is false 9133 * 9134 * \param 9135 * 2 strings 9136 * \return 9137 * true string1 at index is equal to string2 9138 * false they differ 9139 */ 9140 bool eqIS(const char *string1, const char *string2, int64_t index) { 9141 9142 // sanity checks 9143 if (!string1 || !string2) { 9144 return(false); 9145 } 9146 9147 int64_t len = (int64_t)strlen(string1); 9148 if (index >= len && len) { 9149 // && len: string1 is empty, check below if string2 is also empty 9150 // when string1 and string2 are empty and index is 0, the result is true 9151 return(false); 9152 } 9153 if (index < -len) { 9154 return(false); 9155 } 9156 if (index < 0) { 9157 index = len + index; 9158 } 9159 9160 int64_t len2 = (int64_t)strlen(string2); 9161 if (!len2 && !len && !index) { 9162 // string1 and string2 are empty and index is 0 9163 return(true); 9164 } 9165 if (!len2) { 9166 return(false); 9167 } 9168 if (index > (len - len2)) { 9169 return(false); 9170 } 9171 9172 return(strncmp(string1 + index, string2, (size_t)len2) == 0);; 9173 } 9174 9175 bool eqICharS(const char *string1, char c, int64_t index) { 9176 9177 charToS(s,c); 9178 return(eqIS(string1, s, index)); 9179 } 9180 9181 /** 9182 * starts With String 9183 * compare start of string1 with string2 9184 * 9185 * \param 9186 * 2 strings 9187 * \return 9188 * true when string1 starts with string2 9189 * false for other cases 9190 */ 9191 bool startsWithS(const char *string1, const char *string2) { 9192 9193 // sanity checks 9194 if (!string1 || !string2) { 9195 return(false); 9196 } 9197 return(strncmp(string1, string2, strlen(string2)) == 0);; 9198 } 9199 9200 bool startsWithCharS(const char *string1, char c) { 9201 9202 if (!string1) { 9203 return(false); 9204 } 9205 return(*string1 == c);; 9206 } 9207 9208 /** 9209 * ends With String 9210 * compare end of string1 with string2 9211 * 9212 * \param 9213 * 2 strings 9214 * \return 9215 * true when string1 ends with string2 9216 * false for other cases 9217 */ 9218 bool endsWithS(const char *string1, const char *string2) { 9219 9220 // sanity checks 9221 if (!string1 || !string2) { 9222 return(false); 9223 } 9224 9225 if (strlen(string1) < strlen(string2)) { 9226 return(false); 9227 } 9228 return(strcmp(string1 + strlen(string1) - strlen(string2), string2) == 0);; 9229 } 9230 9231 bool endsWithCharS(const char *string1, char c) { 9232 9233 // sanity checks 9234 if (!string1) { 9235 return(false); 9236 } 9237 9238 if (!strlen(string1) && !c) { 9239 // string1 is empty and c is 0 9240 return(true); 9241 } 9242 if (!strlen(string1)) { 9243 return(false); 9244 } 9245 return(*(string1+strlen(string1)-1) == c);; 9246 } 9247 9248 /** 9249 * count String 9250 * count number of (non-overlapping) occurrences of a substring 9251 * 9252 * Example: 9253 * assert(countS("aaa aaa", "a") == 6); 9254 * assert(countS("aaa aaa", "ab") == 0); 9255 * assert(countS("aaa aaa", "aa") == 2); 9256 * 9257 * \param 9258 * 2 strings 9259 * \return 9260 * string count 9261 * -1 when there is an error 9262 */ 9263 ssize_t countS(const char *s, const char *needle) { 9264 9265 // sanity checks 9266 if (!s || !needle || !needle[0]) { 9267 return(-1); 9268 } 9269 9270 ssize_t r = 0; 9271 size_t len = strlen(needle); 9272 9273 while (s != NULL) { 9274 s = strstr(s, needle); 9275 if (s != NULL) { 9276 r++; 9277 s += len; 9278 } 9279 else { 9280 break; 9281 } 9282 } 9283 9284 return(r); 9285 } 9286 9287 ssize_t countCharS(const char *s, char c) { 9288 9289 // sanity checks 9290 if (!s || !c) { 9291 return(-1); 9292 } 9293 9294 ssize_t r = 0; 9295 9296 while (*s != 0) { 9297 if (*s == c) { 9298 r++; 9299 } 9300 s++; 9301 } 9302 9303 return(r); 9304 } 9305 9306 /** 9307 * ignore case string Equal 9308 * compare string1 to string2 9309 * 9310 * \param 9311 * 2 strings 9312 * \return 9313 * true the strings have identical content 9314 * false they differ 9315 */ 9316 bool icEqS(const char *string1, const char *string2) { 9317 9318 // sanity checks 9319 if (!string1 || !string2) { 9320 return(false); 9321 } 9322 return(strcasecmp(string1,string2) == 0);; 9323 } 9324 9325 bool icEqCharS(char c, const char *string2) { 9326 9327 // sanity checks 9328 if (!string2) { 9329 return(false); 9330 } 9331 charToS(s, c); 9332 return(strcasecmp(s,string2) == 0);; 9333 } 9334 9335 bool icEqSChar(const char *string1, char c) { 9336 9337 // sanity checks 9338 if (!string1) { 9339 return(false); 9340 } 9341 charToS(s, c); 9342 return(strcasecmp(string1,s) == 0);; 9343 } 9344 9345 /** 9346 * ignore case string Index Equal 9347 * compare string1 at index to string2 9348 * when string2 is empty, the result is false 9349 * 9350 * \param 9351 * 2 strings 9352 * \return 9353 * true string1 at index is equal to string2 9354 * false they differ 9355 */ 9356 bool icEqIS(const char *string1, const char *string2, int64_t index) { 9357 9358 // sanity checks 9359 if (!string1 || !string2) { 9360 return(false); 9361 } 9362 9363 int64_t len = (int64_t)strlen(string1); 9364 if (index >= len && len) { 9365 // && len: string1 is empty, check below if string2 is also empty 9366 // when string1 and string2 are empty and index is 0, the result is true 9367 return(false); 9368 } 9369 if (index < -len) { 9370 return(false); 9371 } 9372 if (index < 0) { 9373 index = len + index; 9374 } 9375 9376 int64_t len2 = (int64_t)strlen(string2); 9377 if (!len2 && !len && !index) { 9378 // string1 and string2 are empty and index is 0 9379 return(true); 9380 } 9381 if (!len2) { 9382 return(false); 9383 } 9384 if (index > (len - len2)) { 9385 return(false); 9386 } 9387 9388 return(strncasecmp(string1 + index, string2, (size_t)len2) == 0);; 9389 } 9390 9391 bool icEqICharS(const char *string1, char c, int64_t index) { 9392 9393 charToS(s,c); 9394 return(icEqIS(string1, s, index)); 9395 } 9396 9397 /** 9398 * ignore case starts With String 9399 * compare start of string1 with string2 9400 * 9401 * \param 9402 * 2 strings 9403 * \return 9404 * true when string1 starts with string2 9405 * false for other cases 9406 */ 9407 bool icStartsWithS(const char *string1, const char *string2) { 9408 9409 // sanity checks 9410 if (!string1 || !string2) { 9411 return(false); 9412 } 9413 return(strncasecmp(string1, string2, strlen(string2)) == 0);; 9414 } 9415 9416 bool icStartsWithCharS(const char *string1, char c) { 9417 9418 if (!string1) { 9419 return(false); 9420 } 9421 return(toupper(*string1) == toupper(c));; 9422 } 9423 9424 /** 9425 * ignore case ends With String 9426 * compare end of string1 with string2 9427 * 9428 * \param 9429 * 2 strings 9430 * \return 9431 * true when string1 ends with string2 9432 * false for other cases 9433 */ 9434 bool icEndsWithS(const char *string1, const char *string2) { 9435 9436 // sanity checks 9437 if (!string1 || !string2) { 9438 return(false); 9439 } 9440 9441 if (strlen(string1) < strlen(string2)) { 9442 return(false); 9443 } 9444 return(strcasecmp(string1 + strlen(string1) - strlen(string2), string2) == 0);; 9445 } 9446 9447 bool icEndsWithCharS(const char *string1, char c) { 9448 9449 // sanity checks 9450 if (!string1) { 9451 return(false); 9452 } 9453 9454 if (!strlen(string1) && !c) { 9455 // string1 is empty and c is 0 9456 return(true); 9457 } 9458 if (!strlen(string1)) { 9459 return(false); 9460 } 9461 return(toupper(*(string1+strlen(string1)-1)) == toupper(c));; 9462 } 9463 9464 /** 9465 * ignore case count String 9466 * count number of (non-overlapping) occurrences of a substring 9467 * 9468 * Example: 9469 * assert(countS("aaa aaa", "a") == 6); 9470 * assert(countS("aaa aaa", "ab") == 0); 9471 * assert(countS("aaa aaa", "aa") == 2); 9472 * 9473 * \param 9474 * 2 strings 9475 * \return 9476 * string count 9477 * -1 when there is an error 9478 */ 9479 ssize_t icCountS(const char *s, const char *needle) { 9480 9481 // sanity checks 9482 if (!s || !needle || !needle[0]) { 9483 return(-1); 9484 } 9485 9486 ssize_t r = 0; 9487 size_t len = strlen(needle); 9488 9489 while (s != NULL) { 9490 s = strcasestr(s, needle); 9491 if (s != NULL) { 9492 r++; 9493 s += len; 9494 } 9495 else { 9496 break; 9497 } 9498 } 9499 9500 return(r); 9501 } 9502 9503 ssize_t icCountCharS(const char *s, char c) { 9504 9505 // sanity checks 9506 if (!s || !c) { 9507 return(-1); 9508 } 9509 9510 ssize_t r = 0; 9511 9512 c = (char)tolower(c); 9513 9514 while (*s != 0) { 9515 if (tolower(*s) == c) { 9516 r++; 9517 } 9518 s++; 9519 } 9520 9521 return(r); 9522 } 9523 9524 /** 9525 * has control char 9526 * 9527 * \return 9528 * true when there is a terminal control in string 9529 */ 9530 bool hasCtrlChar(const char *string) { 9531 9532 if (!string) { 9533 return(false); 9534 } 9535 9536 range(i, strlen(string)) { 9537 if (iscntrl(string[i])) { 9538 return(true); 9539 } 9540 } 9541 9542 return(false); 9543 } 9544 9545 /** 9546 * remove terminal control char from string 9547 * 9548 * \param 9549 * string 9550 * \return 9551 * new string without the control chars 9552 * NULL when string is NULL 9553 */ 9554 char *stripCtrlS(const char *string) { 9555 char *r = NULL; 9556 9557 if (!string) { 9558 return(NULL); 9559 } 9560 9561 size_t len = strlen(string)+1; 9562 r = MALLOC(len); 9563 if (!r) { 9564 return(NULL); 9565 } 9566 9567 size_t j = 0; 9568 range(i, len) { 9569 if (!iscntrl(string[i])) { 9570 r[j++] = string[i]; 9571 } 9572 } 9573 r[j] = 0; 9574 return(r); 9575 } 9576 9577 /** 9578 * remove terminal control char from string 9579 * 9580 * \param 9581 * string pointer to a string 9582 * \return 9583 * string without the control chars 9584 * NULL when string is NULL 9585 */ 9586 char *iStripCtrlS(char **string) { 9587 9588 if (!string || !*string) { 9589 return(NULL); 9590 } 9591 9592 size_t i = 0, j = 0; 9593 9594 while ((*string)[i]) { 9595 if (!iscntrl((*string)[i])) { 9596 (*string)[j++] = (*string)[i]; 9597 } 9598 i++; 9599 } 9600 9601 (*string)[j] = 0;; 9602 return(*string); 9603 } 9604 9605 /** 9606 * remove terminal control char from string 9607 * 9608 * \param 9609 * string 9610 * \return 9611 * string without the control chars 9612 * NULL when string is NULL 9613 */ 9614 char *bStripCtrlS(char *string) { 9615 9616 if (!string) { 9617 return(NULL); 9618 } 9619 9620 size_t i = 0, j = 0; 9621 9622 while (string[i]) { 9623 if (!iscntrl(string[i])) { 9624 string[j++] = string[i]; 9625 } 9626 i++; 9627 } 9628 9629 string[j] = 0;; 9630 return(string); 9631 } 9632 9633 /** 9634 * remove ansi colors from string 9635 * 9636 * \param 9637 * string 9638 * \return 9639 * new string without colors 9640 * NULL when string is NULL 9641 */ 9642 char *stripColorsS(const char *string) { 9643 char *r = NULL; 9644 9645 if (!string) { 9646 return(NULL); 9647 } 9648 9649 size_t len = strlen(string); 9650 r = MALLOC(len+1); 9651 if (!r) { 9652 return(NULL); 9653 } 9654 9655 size_t j = 0; 9656 uint16_t state = 0; 9657 range(i, len) { 9658 char ch = string[i]; 9659 // suppress \r only when followed by \n 9660 if (state == 1) { 9661 if (ch != 0x0d) { 9662 state = 0; 9663 } 9664 if (ch != 0x0a) { 9665 r[j++] = 0x0d; 9666 } 9667 } 9668 if (state == 0 && ch == 0x0d) { 9669 state = 1; 9670 } 9671 // strip colors 9672 if (state == 5) { 9673 state = 0; 9674 continue; 9675 } 9676 if (state == 4) { 9677 if (ch == 7) { 9678 state = 0; 9679 continue; 9680 } 9681 elif (ch == 0x1b) { 9682 state = 5; 9683 } 9684 } 9685 if (state == 3) { 9686 if (ch != ';' && (ch < '0' || ch > '9') && ch != '?') { 9687 state = 0; 9688 continue; 9689 } 9690 } 9691 if (state == 2) { 9692 if (ch == '[') { 9693 state = 3; 9694 } 9695 elif (ch == ']' && string[i+1] <= '9') { 9696 state = 4; 9697 } 9698 elif (ch == '%') { 9699 state = 0; 9700 continue; 9701 } 9702 } 9703 if (state == 0 && ch == 0x1b) { 9704 state = 2; 9705 } 9706 if (state == 0) { 9707 r[j++] = ch; 9708 } 9709 } 9710 r[j] = 0; 9711 return(r); 9712 } 9713 9714 /** 9715 * remove ansi colors from string 9716 * 9717 * \param 9718 * string pointer to a string 9719 * \return 9720 * string without the control chars 9721 * NULL when string is NULL 9722 */ 9723 char *iStripColorsS(char **string) { 9724 9725 if (!string || !*string) { 9726 return(NULL); 9727 } 9728 9729 size_t i = 0, j = 0; 9730 uint16_t state = 0; 9731 9732 while ((*string)[i]) { 9733 char ch = (*string)[i]; 9734 // suppress \r only when followed by \n 9735 if (state == 1) { 9736 if (ch != 0x0d) { 9737 state = 0; 9738 } 9739 if (ch != 0x0a) { 9740 (*string)[j++] = 0x0d; 9741 } 9742 } 9743 if (state == 0 && ch == 0x0d) { 9744 state = 1; 9745 } 9746 // strip colors 9747 if (state == 5) { 9748 state = 0; 9749 goto cont; 9750 } 9751 if (state == 4) { 9752 if (ch == 7) { 9753 state = 0; 9754 goto cont; 9755 } 9756 elif (ch == 0x1b) { 9757 state = 5; 9758 } 9759 } 9760 if (state == 3) { 9761 if (ch != ';' && (ch < '0' || ch > '9') && ch != '?') { 9762 state = 0; 9763 goto cont; 9764 } 9765 } 9766 if (state == 2) { 9767 if (ch == '[') { 9768 state = 3; 9769 } 9770 elif (ch == ']' && (*string)[i+1] <= '9') { 9771 state = 4; 9772 } 9773 elif (ch == '%') { 9774 state = 0; 9775 goto cont; 9776 } 9777 } 9778 if (state == 0 && ch == 0x1b) { 9779 state = 2; 9780 } 9781 if (state == 0) { 9782 (*string)[j++] = ch; 9783 } 9784 cont: 9785 i++; 9786 } 9787 9788 (*string)[j] = 0; 9789 return(*string); 9790 } 9791 9792 /** 9793 * remove terminal control char from string 9794 * 9795 * \param 9796 * string 9797 * \return 9798 * string without the control chars 9799 * NULL when string is NULL 9800 */ 9801 char *bStripColorsS(char *string) { 9802 9803 if (!string) { 9804 return(NULL); 9805 } 9806 9807 size_t i = 0, j = 0; 9808 uint16_t state = 0; 9809 9810 while (string[i]) { 9811 char ch = string[i]; 9812 // suppress \r only when followed by \n 9813 if (state == 1) { 9814 if (ch != 0x0d) { 9815 state = 0; 9816 } 9817 if (ch != 0x0a) { 9818 string[j++] = 0x0d; 9819 } 9820 } 9821 if (state == 0 && ch == 0x0d) { 9822 state = 1; 9823 } 9824 // strip colors 9825 if (state == 5) { 9826 state = 0; 9827 goto cont; 9828 } 9829 if (state == 4) { 9830 if (ch == 7) { 9831 state = 0; 9832 goto cont; 9833 } 9834 elif (ch == 0x1b) { 9835 state = 5; 9836 } 9837 } 9838 if (state == 3) { 9839 if (ch != ';' && (ch < '0' || ch > '9') && ch != '?') { 9840 state = 0; 9841 goto cont; 9842 } 9843 } 9844 if (state == 2) { 9845 if (ch == '[') { 9846 state = 3; 9847 } 9848 elif (ch == ']' && string[i+1] <= '9') { 9849 state = 4; 9850 } 9851 elif (ch == '%') { 9852 state = 0; 9853 goto cont; 9854 } 9855 } 9856 if (state == 0 && ch == 0x1b) { 9857 state = 2; 9858 } 9859 if (state == 0) { 9860 string[j++] = ch; 9861 } 9862 cont: 9863 i++; 9864 } 9865 9866 string[j] = 0; 9867 return(string); 9868 } 9869 9870 9871 /** 9872 * add backslash '\' before delim('\'' or '"') and backslash 9873 * the backslashes in the result avoid splitting the string 9874 * when it is in a source file or a json string 9875 * \param 9876 * s string to escape 9877 * \param 9878 * delim string delimiter ' or " 9879 * \return 9880 * new string with escape backslash (free this buffer) 9881 * null when s is null 9882 */ 9883 char* quoteS(const char *s, char delim) { 9884 char *r = NULL; 9885 9886 // steps 9887 // sanity check 9888 // compute result string length to allocate the buffer once 9889 // copy s and add the bashslashes 9890 // terminate the result string 9891 9892 // sanity check 9893 if (!s) { 9894 return(null); 9895 } 9896 char delims[3] = {delim, '\\', 0/*terminate accept string for strpbrk*/}; 9897 9898 // compute result string length to allocate the buffer once 9899 size_t count = 0; 9900 const char *tmp = s; 9901 tmp = strpbrk(tmp, delims); 9902 while (tmp) { 9903 inc count; 9904 inc tmp; 9905 tmp = strpbrk(tmp, delims); 9906 } 9907 9908 if (!count) { 9909 return(strdup(s)); 9910 } 9911 9912 r = malloc(strlen(s) + 1 + count); 9913 if (not r) { 9914 return(null); 9915 } 9916 9917 // copy s and add the bashslashes 9918 size_t i = 0; 9919 while (*s) { 9920 if (*s == delims[0] or *s == delims[1]) { 9921 r[i++] = '\\'; 9922 } 9923 r[i++] = *s; 9924 inc s; 9925 } 9926 9927 // terminate the result string 9928 r[i] = 0; 9929 return(r); 9930 } 9931 9932 9933 /** 9934 * add backslash '\' before delim('\'' or '"') and backslash 9935 * the backslashes in the result avoid splitting the string 9936 * when it is in a source file or a json string 9937 * \param 9938 * dest destination buffer, it should be big enough 9939 * \param 9940 * s string to escape 9941 * \param 9942 * delim string delimiter ' or " 9943 * \return 9944 * new string with escape backslash (free this buffer) 9945 * null when s is null 9946 */ 9947 char* bQuoteS(char *dest, const char *s, char delim) { 9948 9949 // steps 9950 // sanity check 9951 // copy s and add the bashslashes 9952 // terminate the result string 9953 9954 // sanity check 9955 if (!s or !dest) { 9956 return(null); 9957 } 9958 char delims[3] = {delim, '\\', 0/*terminate accept string for strpbrk*/}; 9959 9960 // copy s and add the bashslashes 9961 size_t i = 0; 9962 while (*s) { 9963 if (*s == delims[0] or *s == delims[1]) { 9964 dest[i++] = '\\'; 9965 } 9966 dest[i++] = *s; 9967 inc s; 9968 } 9969 9970 // terminate the result string 9971 dest[i] = 0; 9972 return(dest); 9973 } 9974 9975 9976 /** 9977 * add backslash '\' before delim('\'' or '"') and backslash 9978 * the backslashes in the result avoid splitting the string 9979 * when it is in a source file or a json string 9980 * \param 9981 * dest destination buffer 9982 * \param 9983 * destSize destination buffer size 9984 * \param 9985 * s string to escape 9986 * \param 9987 * delim string delimiter ' or " 9988 * \return 9989 * new string with escape backslash (free this buffer) 9990 * null when s is null 9991 */ 9992 char* bLQuoteS(char *dest, size_t destSize, const char *s, char delim) { 9993 9994 // steps 9995 // sanity check 9996 // copy s and add the bashslashes 9997 // terminate the result string 9998 9999 // sanity check 10000 if (!s or !dest or !destSize) { 10001 return(null); 10002 } 10003 char delims[3] = {delim, '\\', 0/*terminate accept string for strpbrk*/}; 10004 10005 // copy s and add the bashslashes 10006 size_t i = 0; 10007 while (*s) { 10008 bool isBackslash = no; 10009 if (*s == delims[0] or *s == delims[1]) { 10010 dest[i++] = '\\'; 10011 if (i >= destSize) { 10012 // end of dest buffer is reached 10013 dec i; 10014 break; 10015 } 10016 isBackslash = yes; 10017 } 10018 dest[i++] = *s; 10019 if (i >= destSize) { 10020 // end of dest buffer is reached 10021 dec i; 10022 // remove backslash 10023 if (isBackslash) { 10024 dec i; 10025 } 10026 break; 10027 } 10028 inc s; 10029 } 10030 10031 // terminate the result string 10032 dest[i] = 0; 10033 return(dest); 10034 } 10035 10036 10037 /** 10038 * return the length of the escaped string (without the terminating \0) 10039 */ 10040 size_t quoteLenS(const char *s, char delim) { 10041 size_t r = 0;; 10042 10043 if (!s) { 10044 return(0); 10045 } 10046 char delims[3] = {delim, '\\', 0/*terminate accept string for strpbrk*/}; 10047 10048 // compute result string length to allocate the buffer once 10049 const char *tmp = s; 10050 tmp = strpbrk(tmp, delims); 10051 while (tmp) { 10052 inc r; 10053 inc tmp; 10054 tmp = strpbrk(tmp, delims); 10055 } 10056 10057 r += strlen(s); 10058 return(r); 10059 } 10060 10061 10062 /** 10063 * escape string according the json specification (RFC 8259) 10064 * if there is \uNNNN in the string, the backslash is escaped and it will 10065 * be parsed as the string '\uNNNN' be the json parsers 10066 * the unicode characters should be converted to UTF8 codepoints instead of 10067 * using \uNNNN 10068 * the result can be included in a json string and the parsing 10069 * will be correct 10070 * \param 10071 * s string to escape 10072 * \param 10073 * delim string delimiter ' or " 10074 * \return 10075 * new string with escape backslash (free this buffer) 10076 * null when s is null 10077 */ 10078 char* escapeS(const char *s, char delim) { 10079 char *r = NULL; 10080 10081 // steps 10082 // sanity check 10083 // compute result string length to allocate the buffer once 10084 // copy s and add the bashslashes 10085 // terminate the result string 10086 10087 // sanity check 10088 if (!s) { 10089 return(null); 10090 } 10091 char delims[] = {delim, '\\', '\b', '\f', '\n', '\r', '\t', 0/*terminate accept string for strpbrk*/}; 10092 10093 // compute result string length to allocate the buffer once 10094 size_t count = 0; 10095 const char *tmp = s; 10096 tmp = strpbrk(tmp, delims); 10097 while (tmp) { 10098 inc count; 10099 inc tmp; 10100 tmp = strpbrk(tmp, delims); 10101 } 10102 10103 if (!count) { 10104 return(strdup(s)); 10105 } 10106 r = malloc(strlen(s) + 1 + count); 10107 if (not r) { 10108 return(null); 10109 } 10110 10111 // copy s and add the bashslashes 10112 size_t i = 0; 10113 while (*s) { 10114 arange(j, delims) { 10115 if (*s == delims[j]) { 10116 r[i++] = '\\'; 10117 break; 10118 } 10119 } 10120 switch (*s) { 10121 case '\b': 10122 r[i++] = 'b'; 10123 break; 10124 case '\f': 10125 r[i++] = 'f'; 10126 break; 10127 case '\n': 10128 r[i++] = 'n'; 10129 break; 10130 case '\r': 10131 r[i++] = 'r'; 10132 break; 10133 case '\t': 10134 r[i++] = 't'; 10135 break; 10136 default: 10137 r[i++] = *s; 10138 break; 10139 } 10140 inc s; 10141 } 10142 10143 // terminate the result string 10144 r[i] = 0; 10145 return(r); 10146 } 10147 10148 10149 /** 10150 * escape string according the json specification (RFC 8259) 10151 * if there is \uNNNN in the string, the backslash is escaped and it will 10152 * be parsed as the string '\uNNNN' be the json parsers 10153 * the unicode characters should be converted to UTF8 codepoints instead of 10154 * using \uNNNN 10155 * the result can be included in a json string and the parsing 10156 * will be correct 10157 * \param 10158 * dest destination buffer 10159 * \param 10160 * s string to escape 10161 * \param 10162 * delim string delimiter ' or " 10163 * \return 10164 * new string with escape backslash (free this buffer) 10165 * null when s is null 10166 */ 10167 char* bEscapeS(char *dest, const char *s, char delim) { 10168 10169 // steps 10170 // sanity check 10171 // copy s and add the bashslashes 10172 // terminate the result string 10173 10174 // sanity check 10175 if (!s or !dest) { 10176 return(null); 10177 } 10178 char delims[] = {delim, '\\', '\b', '\f', '\n', '\r', '\t', 0/*terminate accept string for strpbrk*/}; 10179 10180 // copy s and add the bashslashes 10181 size_t i = 0; 10182 while (*s) { 10183 arange(j, delims) { 10184 if (*s == delims[j]) { 10185 dest[i++] = '\\'; 10186 break; 10187 } 10188 } 10189 switch(*s) { 10190 case '\b': 10191 dest[i++] = 'b'; 10192 break; 10193 case '\f': 10194 dest[i++] = 'f'; 10195 break; 10196 case '\n': 10197 dest[i++] = 'n'; 10198 break; 10199 case '\r': 10200 dest[i++] = 'r'; 10201 break; 10202 case '\t': 10203 dest[i++] = 't'; 10204 break; 10205 default: 10206 dest[i++] = *s; 10207 break; 10208 } 10209 inc s; 10210 } 10211 10212 // terminate the result string 10213 dest[i] = 0; 10214 return(dest); 10215 } 10216 10217 10218 /** 10219 * escape string according the json specification (RFC 8259) 10220 * if there is \uNNNN in the string, the backslash is escaped and it will 10221 * be parsed as the string '\uNNNN' be the json parsers 10222 * the unicode characters should be converted to UTF8 codepoints instead of 10223 * using \uNNNN 10224 * the result can be included in a json string and the parsing 10225 * will be correct 10226 * \param 10227 * dest destination buffer 10228 * \param 10229 * destSize destination buffer size 10230 * \param 10231 * s string to escape 10232 * \param 10233 * delim string delimiter ' or " 10234 * \return 10235 * new string with escape backslash (free this buffer) 10236 * null when s is null 10237 */ 10238 char* bLEscapeS(char *dest, size_t destSize, const char *s, char delim) { 10239 10240 // steps 10241 // sanity check 10242 // copy s and add the bashslashes 10243 // terminate the result string 10244 10245 // sanity check 10246 if (!s or !dest or !destSize) { 10247 return(null); 10248 } 10249 char delims[] = {delim, '\\', '\b', '\f', '\n', '\r', '\t', 0/*terminate accept string for strpbrk*/}; 10250 10251 // copy s and add the bashslashes 10252 size_t i = 0; 10253 while (*s) { 10254 bool isBackslash = no; 10255 arange(j, delims) { 10256 if (*s == delims[j]) { 10257 dest[i++] = '\\'; 10258 if (i >= destSize) { 10259 // end of dest buffer is reached 10260 dec i; 10261 goto end; 10262 } 10263 isBackslash = yes; 10264 break; 10265 } 10266 } 10267 switch(*s) { 10268 case '\b': 10269 dest[i++] = 'b'; 10270 break; 10271 case '\f': 10272 dest[i++] = 'f'; 10273 break; 10274 case '\n': 10275 dest[i++] = 'n'; 10276 break; 10277 case '\r': 10278 dest[i++] = 'r'; 10279 break; 10280 case '\t': 10281 dest[i++] = 't'; 10282 break; 10283 default: 10284 dest[i++] = *s; 10285 break; 10286 } 10287 if (i >= destSize) { 10288 // end of dest buffer is reached 10289 dec i; 10290 // remove backslash 10291 if (isBackslash) { 10292 dec i; 10293 } 10294 break; 10295 } 10296 inc s; 10297 } 10298 10299 // terminate the result string 10300 end: 10301 dest[i] = 0; 10302 return(dest); 10303 } 10304 10305 10306 /** 10307 * return the length of the escaped string (without the terminating \0) 10308 */ 10309 size_t escapeLenS(const char *s, char delim) { 10310 size_t r = 0;; 10311 10312 if (!s) { 10313 return(0); 10314 } 10315 char delims[] = {delim, '\\', '\b', '\f', '\n', '\r', '\t', 0/*terminate accept string for strpbrk*/}; 10316 10317 // compute result string length to allocate the buffer once 10318 const char *tmp = s; 10319 tmp = strpbrk(tmp, delims); 10320 while (tmp) { 10321 inc r; 10322 inc tmp; 10323 tmp = strpbrk(tmp, delims); 10324 } 10325 10326 r += strlen(s); 10327 return(r); 10328 } 10329 10330 10331 /** 10332 * convert number between 0 and 15 to hexadecimal character '0' to 'F' 10333 */ 10334 char nibbleToHex(u8 n) { 10335 10336 if (n > 15) { 10337 return 'X'; 10338 } 10339 elif (n < 10) { 10340 return((char)(n + '0')); 10341 } 10342 else { 10343 return((char)((n-10) + 'A')); 10344 } 10345 } 10346 10347 10348 /** 10349 * escape string to become a valid C source string 10350 * control characters, backslash and double quotes are escaped. 10351 * control characters without an escaped representation (\a) are represented as 10352 * hexidecimal literal '\xNN' 10353 * the result can be included in C source code and the parsing will be 10354 * correct 10355 * \param 10356 * S string to escape 10357 * \return 10358 * new escaped string (free this buffer) 10359 * null when S is null 10360 */ 10361 char* cEscapeS(const char *S) { 10362 char *r = NULL; 10363 10364 // u8 because nibbles are needed for control characters without an escaped representation 10365 const u8 *s = (const u8*)S; 10366 10367 // steps 10368 // sanity check 10369 // compute result string length to allocate the buffer once 10370 // search control characters without an escaped representation 10371 // copy s and add the bashslashes 10372 // terminate the result string 10373 10374 // sanity check 10375 if (!s) { 10376 return(null); 10377 } 10378 char delims[] = {'"', '\\', '\a', '\b', '\t', '\n', '\v', '\f', '\r', 0/*terminate accept string for strpbrk*/}; 10379 10380 // compute result string length to allocate the buffer once 10381 size_t count = 0; 10382 const char *tmp = S; 10383 tmp = strpbrk(tmp, delims); 10384 while (tmp) { 10385 inc count; 10386 inc tmp; 10387 tmp = strpbrk(tmp, delims); 10388 } 10389 10390 // search control characters without an escaped representation 10391 tmp = S; 10392 while (*tmp) { 10393 if (*tmp > 0x1F) { 10394 goto cont; 10395 } 10396 bool found = no; 10397 arange(j, delims) { 10398 if (*tmp == delims[j]) { 10399 found = yes; 10400 break; 10401 } 10402 } 10403 if (not found) { 10404 // allocate space for ""\xNN"" 10405 // it is 8 bytes but one byte is counted with strlen(s) 10406 count += 7; 10407 } 10408 cont: 10409 inc tmp; 10410 } 10411 10412 if (!count) { 10413 return(strdup(S)); 10414 } 10415 r = malloc(strlen(S) + 1 + count); 10416 if (not r) { 10417 return(null); 10418 } 10419 10420 // copy s and add the bashslashes 10421 size_t i = 0; 10422 while (*s) { 10423 arange(j, delims) { 10424 if (*s == delims[j]) { 10425 r[i++] = '\\'; 10426 break; 10427 } 10428 } 10429 switch(*s) { 10430 case '\a': 10431 r[i++] = 'a'; 10432 break; 10433 case '\b': 10434 r[i++] = 'b'; 10435 break; 10436 case '\t': 10437 r[i++] = 't'; 10438 break; 10439 case '\n': 10440 r[i++] = 'n'; 10441 break; 10442 case '\v': 10443 r[i++] = 'v'; 10444 break; 10445 case '\f': 10446 r[i++] = 'f'; 10447 break; 10448 case '\r': 10449 r[i++] = 'r'; 10450 break; 10451 default: 10452 if (*s > 0x1F) { 10453 r[i++] = (char)*s; 10454 } 10455 else { 10456 // byte 0x3 becomes ""\x03"" 10457 r[i++] = '"'; 10458 r[i++] = '"'; 10459 r[i++] = '\\'; 10460 r[i++] = 'x'; 10461 r[i++] = nibbleToHex(*s >> 4); 10462 r[i++] = nibbleToHex(*s & 0xF); 10463 r[i++] = '"'; 10464 r[i++] = '"'; 10465 } 10466 break; 10467 } 10468 inc s; 10469 } 10470 10471 // terminate the result string 10472 r[i] = 0; 10473 return(r); 10474 } 10475 10476 10477 /** 10478 * escape string to become a valid C source string 10479 * control characters, backslash and double quotes are escaped. 10480 * control characters without an escaped representation (\a) are represented as 10481 * hexidecimal literal '\xNN' 10482 * the result can be included in C source code and the parsing will be 10483 * correct 10484 * \param 10485 * dest destination buffer 10486 * \param 10487 * S string to escape 10488 * \return 10489 * new escaped string (free this buffer) 10490 * null when S is null 10491 */ 10492 char* bCEscapeS(char *dest, const char *S) { 10493 10494 // u8 because nibbles are needed for control characters without an escaped representation 10495 const u8 *s = (const u8*)S; 10496 10497 // steps 10498 // sanity check 10499 // copy s and add the bashslashes 10500 // terminate the result string 10501 10502 // sanity check 10503 if (!s or !dest) { 10504 return(null); 10505 } 10506 char delims[] = {'"', '\\', '\a', '\b', '\t', '\n', '\v', '\f', '\r', 0/*terminate accept string for strpbrk*/}; 10507 10508 // copy s and add the bashslashes 10509 size_t i = 0; 10510 while (*s) { 10511 arange(j, delims) { 10512 if (*s == delims[j]) { 10513 dest[i++] = '\\'; 10514 break; 10515 } 10516 } 10517 switch(*s) { 10518 case '\a': 10519 dest[i++] = 'a'; 10520 break; 10521 case '\b': 10522 dest[i++] = 'b'; 10523 break; 10524 case '\t': 10525 dest[i++] = 't'; 10526 break; 10527 case '\n': 10528 dest[i++] = 'n'; 10529 break; 10530 case '\v': 10531 dest[i++] = 'v'; 10532 break; 10533 case '\f': 10534 dest[i++] = 'f'; 10535 break; 10536 case '\r': 10537 dest[i++] = 'r'; 10538 break; 10539 default: 10540 if (*s > 0x1F) { 10541 dest[i++] = (char)*s; 10542 } 10543 else { 10544 // byte 0x3 becomes ""\x03"" 10545 dest[i++] = '"'; 10546 dest[i++] = '"'; 10547 dest[i++] = '\\'; 10548 dest[i++] = 'x'; 10549 dest[i++] = nibbleToHex(*s >> 4); 10550 dest[i++] = nibbleToHex(*s & 0xF); 10551 dest[i++] = '"'; 10552 dest[i++] = '"'; 10553 } 10554 break; 10555 } 10556 inc s; 10557 } 10558 10559 // terminate the result string 10560 dest[i] = 0; 10561 return(dest); 10562 } 10563 10564 10565 /** 10566 * escape string to become a valid C source string 10567 * control characters, backslash and double quotes are escaped. 10568 * control characters without an escaped representation (\a) are represented as 10569 * hexidecimal literal '\xNN' 10570 * the result can be included in C source code and the parsing will be 10571 * correct 10572 * \param 10573 * dest destination buffer 10574 * \param 10575 * destSize destination buffer size 10576 * \param 10577 * S string to escape 10578 * \return 10579 * new escaped string (free this buffer) 10580 * null when S is null 10581 */ 10582 char* bLCEscapeS(char *dest, size_t destSize, const char *S) { 10583 10584 // u8 because nibbles are needed for control characters without an escaped representation 10585 const u8 *s = (const u8*)S; 10586 10587 // steps 10588 // sanity check 10589 // copy s and add the bashslashes 10590 // terminate the result string 10591 10592 // sanity check 10593 if (!s or !dest or !destSize) { 10594 return(null); 10595 } 10596 char delims[] = {'"', '\\', '\a', '\b', '\t', '\n', '\v', '\f', '\r', 0/*terminate accept string for strpbrk*/}; 10597 10598 // copy s and add the bashslashes 10599 size_t i = 0; 10600 while (*s) { 10601 arange(j, delims) { 10602 if (*s == delims[j]) { 10603 dest[i++] = '\\'; 10604 if (i >= destSize) { 10605 // end of dest buffer is reached 10606 dec i; 10607 goto end; 10608 } 10609 break; 10610 } 10611 } 10612 switch(*s) { 10613 case '\a': 10614 dest[i++] = 'a'; 10615 if (i >= destSize) { 10616 // end of dest buffer is reached 10617 dec i; 10618 // remove backslash 10619 dest[i-1] = 0; 10620 goto end; 10621 } 10622 break; 10623 case '\b': 10624 dest[i++] = 'b'; 10625 if (i >= destSize) { 10626 // end of dest buffer is reached 10627 dec i; 10628 // remove backslash 10629 dest[i-1] = 0; 10630 goto end; 10631 } 10632 break; 10633 case '\t': 10634 dest[i++] = 't'; 10635 if (i >= destSize) { 10636 // end of dest buffer is reached 10637 dec i; 10638 // remove backslash 10639 dest[i-1] = 0; 10640 goto end; 10641 } 10642 break; 10643 case '\n': 10644 dest[i++] = 'n'; 10645 if (i >= destSize) { 10646 // end of dest buffer is reached 10647 dec i; 10648 // remove backslash 10649 dest[i-1] = 0; 10650 goto end; 10651 } 10652 break; 10653 case '\v': 10654 dest[i++] = 'v'; 10655 if (i >= destSize) { 10656 // end of dest buffer is reached 10657 dec i; 10658 // remove backslash 10659 dest[i-1] = 0; 10660 goto end; 10661 } 10662 break; 10663 case '\f': 10664 dest[i++] = 'f'; 10665 if (i >= destSize) { 10666 // end of dest buffer is reached 10667 dec i; 10668 // remove backslash 10669 dest[i-1] = 0; 10670 goto end; 10671 } 10672 break; 10673 case '\r': 10674 dest[i++] = 'r'; 10675 if (i >= destSize) { 10676 // end of dest buffer is reached 10677 dec i; 10678 // remove backslash 10679 dest[i-1] = 0; 10680 goto end; 10681 } 10682 break; 10683 default: 10684 if (*s > 0x1F) { 10685 dest[i++] = (char)*s; 10686 if (i >= destSize) { 10687 // end of dest buffer is reached 10688 dec i; 10689 if (*s == '"' || *s == '\\') { 10690 // remove backslash 10691 dest[i-1] = 0; 10692 } 10693 goto end; 10694 } 10695 } 10696 else { 10697 // check if there is enough space 10698 if (i+8 >= destSize) { 10699 goto end; 10700 } 10701 // byte 0x3 becomes ""\x03"" 10702 dest[i++] = '"'; 10703 dest[i++] = '"'; 10704 dest[i++] = '\\'; 10705 dest[i++] = 'x'; 10706 dest[i++] = nibbleToHex(*s >> 4); 10707 dest[i++] = nibbleToHex(*s & 0xF); 10708 dest[i++] = '"'; 10709 dest[i++] = '"'; 10710 } 10711 break; 10712 } 10713 inc s; 10714 } 10715 10716 // terminate the result string 10717 end: 10718 dest[i] = 0; 10719 return(dest); 10720 } 10721 10722 10723 /** 10724 * return the length of the escaped string (without the terminating \0) 10725 */ 10726 size_t cEscapeLenS(const char *s) { 10727 size_t r = 0;; 10728 10729 if (!s) { 10730 return(0); 10731 } 10732 char delims[] = {'"', '\\', '\a', '\b', '\t', '\n', '\v', '\f', '\r', 0/*terminate accept string for strpbrk*/}; 10733 10734 // compute result string length to allocate the buffer once 10735 const char *tmp = s; 10736 tmp = strpbrk(tmp, delims); 10737 while (tmp) { 10738 inc r; 10739 inc tmp; 10740 tmp = strpbrk(tmp, delims); 10741 } 10742 10743 // search control characters without an escaped representation 10744 tmp = s; 10745 while (*tmp) { 10746 if (*tmp > 0x1F) { 10747 goto cont; 10748 } 10749 bool found = no; 10750 arange(j, delims) { 10751 if (*tmp == delims[j]) { 10752 found = yes; 10753 break; 10754 } 10755 } 10756 if (not found) { 10757 // allocate space for ""\xNN"" 10758 // it is 8 bytes but one byte is counted with strlen(s) 10759 r += 7; 10760 } 10761 cont: 10762 inc tmp; 10763 } 10764 10765 r += strlen(s); 10766 return(r); 10767 } 10768 10769 10770 /** 10771 * is Number (integer or float) String 10772 * 10773 * 1, -12 10774 * 1e+4, -1.44E-1 10775 * 10776 * \param 10777 * string 10778 * \return 10779 * true when string is a number 10780 * false when string is not a number or string is empty or NULL 10781 */ 10782 bool isNumber(const char *string) { 10783 10784 // sanity checks 10785 if (!string || *string == 0) { 10786 return(false); 10787 } 10788 10789 // . not allowed in first position 10790 // first position can be digit, '.' or '-' but not "-" and not "." 10791 if (!isdigit(*string) && (*string != '-') && (*string != '.')) { 10792 return(false); 10793 } 10794 10795 // save pointer to first char to verify if there is a leader . and an exponent 10796 const char *firstChar = string; 10797 string++; 10798 10799 bool r = false; 10800 int dots = 0; 10801 int exponents = 0; 10802 if (*(string-1) == '.') { 10803 // count first '.' 10804 dots++; 10805 } 10806 while ((isdigit(*string) || (*string == '.') || (*string == 'e') || (*string == 'E') || (((*string == '-') || (*string == '+')) && ((*(string-1) == 'E') || (*(string-1) == 'e')))) && *string != 0) { 10807 if (*string == '.') { 10808 dots++; 10809 if (*firstChar == '-') { 10810 // -.234 allowed 10811 firstChar = string; 10812 } 10813 if ((dots > 1) || (exponents > 0)) { 10814 // only one '.' allowed but not after exponent 10815 break; 10816 } 10817 } 10818 if ((*string == 'e') || (*string == 'E')) { 10819 exponents++; 10820 if ((exponents > 1) || (*firstChar == '.')) { 10821 // only one 'e' or 'E' allowed 10822 break; 10823 } 10824 } 10825 string++; 10826 } 10827 10828 // strings ending with '.', '-', 'e' and 'E' are not numbers 10829 if ((*string == 0) && (*(string-1) != '.') && (*(string-1) != '-') && (*(string-1) != 'e') && (*(string-1) != 'E')) { 10830 r = true; 10831 } 10832 return(r); 10833 } 10834 10835 /** 10836 * is Integer String 10837 * 10838 * \param 10839 * string 10840 * \return 10841 * true when string is an integer 10842 * false when string is not an integer or string is empty or NULL 10843 */ 10844 bool isInt(const char *string) { 10845 10846 // sanity checks 10847 if (!string || *string == 0) { 10848 return(false); 10849 } 10850 10851 // . not allowed in first position 10852 // first position can be digit or - but not "-" 10853 if (!isdigit(*string) && (*string != '-')) { 10854 return(false); 10855 } 10856 string++; 10857 10858 bool r = false; 10859 while (isdigit(*string) && *string != 0) { 10860 string++; 10861 } 10862 10863 // strings ending with '-' are not integers 10864 if ((*string == 0) && (*(string-1) != '-')) { 10865 r = true; 10866 } 10867 return(r); 10868 } 10869 10870 /** 10871 * convert string to decimal integer 10872 * 10873 * \param 10874 * string 10875 * \return 10876 * int64_t 10877 * 0 when string represents 0 or doesnt represent a number or the input is NULL 10878 */ 10879 int64_t parseInt(const char *string) { 10880 10881 // sanity checks 10882 if (!string) { 10883 return(0); 10884 } 10885 while (!isdigit(*string) && *string != '-' && *string != 0) { 10886 string++; 10887 } 10888 int64_t r = strtoll(string, NULL, 10); 10889 if (r == INT64_MAX || r == INT64_MIN) { 10890 pFuncError 10891 shEPrintfS("The string was: \"%s\"\n", string); 10892 } 10893 return(r); 10894 } 10895 10896 int64_t parseIntChar(char c) { 10897 10898 if (!isdigit(c)) { 10899 return(-1); 10900 } 10901 return(c - '0'); 10902 } 10903 10904 /** 10905 * convert string to decimal integer 10906 * 10907 * \param 10908 * string 10909 * \return 10910 * int64_t 10911 * 0 when string represents 0 or doesnt represent a number or the input is NULL 10912 */ 10913 int64_t parseI64(const char *string) { 10914 10915 // sanity checks 10916 if (!string) { 10917 return(0); 10918 } 10919 while (!isdigit(*string) && *string != '-' && *string != 0) { 10920 string++; 10921 } 10922 int64_t r = strtoll(string, NULL, 10); 10923 if (r == INT64_MAX || r == INT64_MIN) { 10924 pFuncError 10925 shEPrintfS("The string was: \"%s\"\n", string); 10926 } 10927 return(r); 10928 } 10929 10930 int64_t parseI64Char(char c) { 10931 10932 if (!isdigit(c)) { 10933 return(-1); 10934 } 10935 return(c - '0'); 10936 } 10937 10938 /** 10939 * convert string to double 10940 * 10941 * \param 10942 * string 10943 * \return 10944 * double 10945 * 0 when string represents 0 or doesnt represent a number or the input is NULL 10946 */ 10947 double parseDouble(const char *string) { 10948 10949 // sanity checks 10950 if (!string) { 10951 return(0); 10952 } 10953 while (!isdigit(*string) && *string != '-' && *string != 0) { 10954 string++; 10955 } 10956 double r = strtod(string, NULL); 10957 return(r); 10958 } 10959 10960 double parseDoubleChar(char c) { 10961 10962 if (!isdigit(c)) { 10963 return(-1); 10964 } 10965 return((double)(c - '0')); 10966 } 10967 10968 /** 10969 * parse hexadecimal number in a string 10970 * 10971 * \param 10972 * string hexadecimal string starting with 0x 10973 * \return 10974 * integer value 10975 * 0 failed or the value is 0 10976 */ 10977 uint64_t parseHex(const char *string) { 10978 10979 if (!string) { 10980 return(0); 10981 } 10982 while (!isdigit(*string) && *string != '-' && *string != 0) { 10983 string++; 10984 } 10985 uint64_t r = strtoul(string, NULL, 16);; 10986 if (r == ULONG_MAX) { 10987 pFuncError 10988 shEPrintfS("The string was: \"%s\"\n", string); 10989 } 10990 return(r); 10991 } 10992 10993 /** 10994 * int To String 10995 * 10996 * convert int to string 10997 * 10998 * \param 10999 * int64 number 11000 * \return 11001 * string representing the number (you must free the pointer) 11002 */ 11003 char *intToS(int64_t n) { 11004 char s[50]; 11005 char *r = NULL; 11006 11007 sprintf(s, "%" PRIi64, n); 11008 r = strdup(s); 11009 return(r); 11010 } 11011 11012 /** 11013 * buffer int To String 11014 * 11015 * convert int to string 11016 * 11017 * \param 11018 * int64 number 11019 * \return 11020 * string representing the number 11021 */ 11022 char *bIntToS(char *s, int64_t n) { 11023 11024 if (!s) { 11025 return(NULL); 11026 } 11027 sprintf(s, "%" PRIi64, n); 11028 return(s); 11029 } 11030 11031 /** 11032 * double To String 11033 * 11034 * convert int to string 11035 * 11036 * \param 11037 * double number 11038 * \return 11039 * string representing the number (you must free the pointer) 11040 */ 11041 char *doubleToS(double n) { 11042 char s[256]; 11043 char *r = NULL; 11044 11045 sprintf(s, "%e", n); 11046 r = strdup(s); 11047 return(r); 11048 } 11049 11050 /** 11051 * buffer double To String 11052 * 11053 * convert int to string 11054 * 11055 * \param 11056 * double number 11057 * \return 11058 * string representing the number 11059 */ 11060 char *bDoubleToS(char *s, double n) { 11061 11062 if (!s) { 11063 return(NULL); 11064 } 11065 sprintf(s, "%e", n); 11066 return(s); 11067 } 11068 11069 /** 11070 * length string 11071 * 11072 * return strlen when possible 11073 * 11074 * \param 11075 * string 11076 * \return 11077 * strlen value 11078 * 0 when string is NULL 11079 */ 11080 size_t lenS(const char *string) { 11081 11082 if (!string) { 11083 return(0); 11084 } 11085 return(strlen(string)); 11086 } 11087 11088 /** 11089 * string buffer size 11090 * 11091 * return strlen+1 when possible 11092 * 11093 * \param 11094 * string 11095 * \return 11096 * strlen+1 value 11097 * 0 when string is NULL 11098 */ 11099 size_t sizeS(const char *string) { 11100 11101 if (!string) { 11102 return(0); 11103 } 11104 return(strlen(string)+1); 11105 } 11106 11107 /** 11108 * upper case String 11109 * duplicate string 11110 * 11111 * \param 11112 * string 11113 * \return 11114 * new upper case string (you must free the pointer) 11115 */ 11116 char *upperS(const char *string) { 11117 char *r = NULL; 11118 11119 // sanity checks 11120 if (!string) { 11121 return(NULL); 11122 } 11123 11124 r = strdup(string); 11125 if (!r) { 11126 return(NULL); 11127 } 11128 11129 // upper case 11130 size_t i = 0; 11131 while (r[i] != 0) { 11132 r[i] = (char)toupper(r[i]); 11133 i++; 11134 } 11135 return(r); 11136 } 11137 11138 /** 11139 * upper case String 11140 * 11141 * \param 11142 * string 11143 * \return 11144 * upper case string 11145 * NULL error 11146 */ 11147 char *iUpperS(char **string) { 11148 11149 // sanity checks 11150 if (!string || !*string) { 11151 return(NULL); 11152 } 11153 11154 // upper case 11155 size_t i = 0; 11156 while ((*string)[i] != 0) { 11157 (*string)[i] = (char)toupper((*string)[i]); 11158 i++; 11159 } 11160 return(*string); 11161 } 11162 11163 /** 11164 * buffer upper case String 11165 * 11166 * \param 11167 * string 11168 * \return 11169 * upper case string 11170 * NULL error 11171 */ 11172 char *bUpperS(char *string) { 11173 11174 // sanity checks 11175 if (!string) { 11176 return(NULL); 11177 } 11178 11179 // upper case 11180 size_t i = 0; 11181 while (string[i] != 0) { 11182 string[i] = (char)toupper(string[i]); 11183 i++; 11184 } 11185 return(string); 11186 } 11187 11188 /** 11189 * lower case String 11190 * duplicate string 11191 * 11192 * \param 11193 * string 11194 * \return 11195 * new lower case string (you must free the pointer) 11196 */ 11197 char *lowerS(const char *string) { 11198 char *r = NULL; 11199 11200 // sanity checks 11201 if (!string) { 11202 return(NULL); 11203 } 11204 11205 r = strdup(string); 11206 if (!r) { 11207 return(NULL); 11208 } 11209 11210 // lower case 11211 size_t i = 0; 11212 while (r[i] != 0) { 11213 r[i] = (char)tolower(r[i]); 11214 i++; 11215 } 11216 return(r); 11217 } 11218 11219 /** 11220 * lower case String 11221 * 11222 * \param 11223 * string 11224 * \return 11225 * lower case string 11226 * NULL error 11227 */ 11228 char *iLowerS(char **string) { 11229 11230 // sanity checks 11231 if (!string || !*string) { 11232 return(NULL); 11233 } 11234 11235 // lower case 11236 size_t i = 0; 11237 while ((*string)[i] != 0) { 11238 (*string)[i] = (char)tolower((*string)[i]); 11239 i++; 11240 } 11241 return(*string); 11242 } 11243 11244 /** 11245 * buffer lower case String 11246 * 11247 * \param 11248 * string 11249 * \return 11250 * lower case string 11251 * NULL error 11252 */ 11253 char *bLowerS(char *string) { 11254 11255 // sanity checks 11256 if (!string) { 11257 return(NULL); 11258 } 11259 11260 // lower case 11261 size_t i = 0; 11262 while (string[i] != 0) { 11263 string[i] = (char)tolower(string[i]); 11264 i++; 11265 } 11266 return(string); 11267 } 11268 11269 /** 11270 * trim String 11271 * duplicate string 11272 * 11273 * \param 11274 * string 11275 * \return 11276 * new string without leading or trailing spaces (you must free the pointer) 11277 */ 11278 char *trimS(const char *string) { 11279 char *r = NULL; 11280 const char *end = NULL; 11281 size_t len; 11282 11283 // sanity checks 11284 if (!string) { 11285 return(NULL); 11286 } 11287 11288 // remove heading spaces 11289 while (isspace(*string)) { 11290 string++; 11291 } 11292 11293 if (!*string) { 11294 // all spaces 11295 emptyS(r) 11296 return(r); 11297 } 11298 11299 // remove trailing spaces 11300 end = string + strlen(string) - 1; 11301 while (isspace(*end)) { 11302 end--; 11303 } 11304 11305 // copy range to new string 11306 len = (size_t)(end - string + 2); 11307 r = MALLOC(len); 11308 if (!r) { 11309 return(NULL); 11310 } 11311 r = strncpy(r, string, len - 1); 11312 r[len - 1] = 0; 11313 return(r); 11314 } 11315 11316 /** 11317 * trim String 11318 * 11319 * \param 11320 * string (this parameter is reallocated) 11321 * \return 11322 * string without leading or trailing spaces 11323 * NULL error 11324 */ 11325 char *iTrimS(char **string) { 11326 char *workingS = NULL; 11327 char *r = NULL; 11328 char *end = NULL; 11329 size_t len; 11330 11331 // sanity checks 11332 if (!string || !*string) { 11333 return(NULL); 11334 } 11335 11336 workingS = *string; 11337 11338 // remove heading spaces 11339 while (isspace(*workingS)) { 11340 workingS++; 11341 } 11342 11343 if (!*workingS) { 11344 // all spaces 11345 free(*string); 11346 emptyS(*string) 11347 return(*string); 11348 } 11349 11350 // remove trailing spaces 11351 end = workingS + strlen(workingS) - 1; 11352 while (isspace(*end)) { 11353 end--; 11354 } 11355 11356 // copy range to new string 11357 len = (size_t)(end - workingS + 2); 11358 r = MALLOC(len); 11359 if (!r) { 11360 return(NULL); 11361 } 11362 r = strncpy(r, workingS, len - 1); 11363 r[len - 1] = 0; 11364 free(*string); 11365 *string = r;; 11366 return(r); 11367 } 11368 11369 /** 11370 * buffer trim String 11371 * 11372 * \param 11373 * string 11374 * \return 11375 * string without leading or trailing spaces 11376 * NULL error 11377 */ 11378 char *bTrimS(char *string) { 11379 char *workingS = NULL; 11380 char *r = NULL; 11381 char *end = NULL; 11382 size_t len; 11383 11384 // sanity checks 11385 if (!string) { 11386 return(NULL); 11387 } 11388 11389 workingS = string; 11390 11391 // remove heading spaces 11392 while (isspace(*workingS)) { 11393 workingS++; 11394 } 11395 11396 if (!*workingS) { 11397 // all spaces 11398 bEmptyS(string); 11399 return(string); 11400 } 11401 11402 // remove trailing spaces 11403 end = workingS + strlen(workingS) - 1; 11404 while (isspace(*end)) { 11405 end--; 11406 } 11407 11408 // copy range to new string 11409 len = (size_t)(end - workingS + 2); 11410 r = MALLOC(len); 11411 if (!r) { 11412 return(NULL); 11413 } 11414 r = strncpy(r, workingS, len - 1); 11415 r[len - 1] = 0; 11416 strcpy(string, r); 11417 free(r); 11418 return(string); 11419 } 11420 11421 /** 11422 * left trim String 11423 * duplicate string 11424 * 11425 * \param 11426 * string 11427 * \return 11428 * new string without leading spaces (you must free the pointer) 11429 */ 11430 char *lTrimS(const char *string) { 11431 char *r = NULL; 11432 11433 // sanity checks 11434 if (!string) { 11435 return(NULL); 11436 } 11437 11438 // remove heading spaces 11439 while (isspace(*string)) { 11440 string++; 11441 } 11442 11443 if (!*string) { 11444 // all spaces 11445 emptyS(r) 11446 return(r); 11447 } 11448 11449 r = strdup(string); 11450 return(r); 11451 } 11452 11453 11454 /** 11455 * left trim String 11456 * 11457 * \param 11458 * string (this parameter is reallocated) 11459 * \return 11460 * string without leading spaces (you must free the pointer) 11461 * NULL error 11462 */ 11463 char *iLTrimS(char **string) { 11464 char *workingS = NULL; 11465 char *r = NULL; 11466 11467 // sanity checks 11468 if (!string || !*string) { 11469 return(NULL); 11470 } 11471 11472 workingS = *string; 11473 11474 // remove heading spaces 11475 while (isspace(*workingS)) { 11476 workingS++; 11477 } 11478 11479 r = strdup(workingS); 11480 if (!r) { 11481 return(NULL); 11482 } 11483 free(*string); 11484 *string = r;; 11485 return(r); 11486 } 11487 11488 /** 11489 * buffer left trim String 11490 * 11491 * \param 11492 * string 11493 * \return 11494 * string without leading spaces 11495 * NULL error 11496 */ 11497 char *bLTrimS(char *string) { 11498 char *workingS = NULL; 11499 11500 // sanity checks 11501 if (!string) { 11502 return(NULL); 11503 } 11504 11505 workingS = string; 11506 11507 // remove heading spaces 11508 while (isspace(*workingS)) { 11509 workingS++; 11510 } 11511 11512 memmove(string, workingS, strlen(workingS)+1); 11513 return(string); 11514 } 11515 11516 /** 11517 * right trim String 11518 * duplicate string 11519 * 11520 * \param 11521 * string 11522 * \return 11523 * new string without trailing spaces (you must free the pointer) 11524 */ 11525 char *rTrimS(const char *string) { 11526 char *r = NULL; 11527 const char *end = NULL; 11528 size_t len; 11529 11530 // sanity checks 11531 if (!string) { 11532 return(NULL); 11533 } 11534 11535 // remove trailing spaces 11536 end = string + strlen(string) - 1; 11537 while (((end >= string) && isspace(*end))) { 11538 end--; 11539 } 11540 11541 // copy range to new string 11542 len = (size_t)(end - string + 2); 11543 r = MALLOC(len); 11544 if (!r) { 11545 return(NULL); 11546 } 11547 r = strncpy(r, string, len - 1); 11548 r[len - 1] = 0; 11549 return(r); 11550 } 11551 11552 11553 /** 11554 * right trim String 11555 * 11556 * \param 11557 * string 11558 * \return 11559 * string without trailing spaces 11560 * NULL error 11561 */ 11562 char *iRTrimS(char **string) { 11563 char *workingS = NULL; 11564 char *end = NULL; 11565 11566 // sanity checks 11567 if (!string || !*string) { 11568 return(NULL); 11569 } 11570 11571 workingS = *string; 11572 11573 // remove trailing spaces 11574 end = workingS + strlen(workingS) - 1; 11575 while (((end >= workingS) && isspace(*end))) { 11576 end--; 11577 } 11578 11579 *(end+1) = 0;; 11580 return(*string); 11581 } 11582 11583 /** 11584 * buffer right trim String 11585 * 11586 * \param 11587 * string 11588 * \return 11589 * string without trailing spaces 11590 * NULL error 11591 */ 11592 char *bRTrimS(char *string) { 11593 char *workingS = NULL; 11594 char *end = NULL; 11595 11596 // sanity checks 11597 if (!string) { 11598 return(NULL); 11599 } 11600 11601 workingS = string; 11602 11603 // remove trailing spaces 11604 end = workingS + strlen(workingS) - 1; 11605 while (((end >= workingS) && isspace(*end))) { 11606 end--; 11607 } 11608 11609 *(end+1) = 0;; 11610 return(string); 11611 } 11612 11613 /** 11614 * uniq String 11615 * duplicate string 11616 * 11617 * remove successive repetitions of char c 11618 * 11619 * \param 11620 * string 11621 * c character to remove 11622 * \return 11623 * new string without successive repetitions of char c (you must free the pointer) 11624 */ 11625 char *uniqS(const char *string, char c) { 11626 char *r = NULL; 11627 size_t len; 11628 11629 // sanity checks 11630 if (!string) { 11631 return(NULL); 11632 } 11633 11634 r = strdup(string); 11635 len = strlen(string); 11636 11637 if (len < 2) { 11638 // string is too short to have repetitions 11639 return(r); 11640 } 11641 11642 // index in r 11643 size_t j = 1;; 11644 rangeFrom(i, 1, len) 11645 if (r[i-1] == c && r[i] == c) { 11646 // skip 11647 continue; 11648 } 11649 else { 11650 r[j] = r[i]; 11651 j++; 11652 } 11653 11654 r[j] = 0; 11655 11656 return(r); 11657 } 11658 11659 /** 11660 * uniq String 11661 * 11662 * remove successive repetitions of char c 11663 * 11664 * \param 11665 * string 11666 * c character to remove 11667 * \return 11668 * string without successive repetitions of char c 11669 * NULL error 11670 */ 11671 char *iUniqS(char **string, char c) { 11672 size_t len; 11673 11674 // sanity checks 11675 if (!string || !*string) { 11676 return(NULL); 11677 } 11678 11679 len = strlen(*string); 11680 11681 if (len < 2) { 11682 // string is too short to have repetitions 11683 return(*string); 11684 } 11685 11686 // index in r 11687 size_t j = 1;; 11688 rangeFrom(i, 1, len) 11689 if ((*string)[i-1] == c && (*string)[i] == c) { 11690 // skip 11691 continue; 11692 } 11693 else { 11694 (*string)[j] = (*string)[i]; 11695 j++; 11696 } 11697 11698 (*string)[j] = 0; 11699 11700 return(*string); 11701 } 11702 11703 /** 11704 * buffer uniq String 11705 * 11706 * remove successive repetitions of char c 11707 * 11708 * \param 11709 * string 11710 * c character to remove 11711 * \return 11712 * string without successive repetitions of char c 11713 * NULL error 11714 */ 11715 char *bUniqS(char *string, char c) { 11716 size_t len; 11717 11718 // sanity checks 11719 if (!string) { 11720 return(NULL); 11721 } 11722 11723 len = strlen(string); 11724 11725 if (len < 2) { 11726 // string is too short to have repetitions 11727 return(string); 11728 } 11729 11730 // index in r 11731 size_t j = 1;; 11732 rangeFrom(i, 1, len) 11733 if (string[i-1] == c && string[i] == c) { 11734 // skip 11735 continue; 11736 } 11737 else { 11738 string[j] = string[i]; 11739 j++; 11740 } 11741 11742 string[j] = 0; 11743 11744 return(string); 11745 } 11746 11747 /** 11748 * ignore case uniq String 11749 * duplicate string 11750 * 11751 * remove successive repetitions of char c 11752 * 11753 * \param 11754 * string 11755 * c character to remove 11756 * \return 11757 * new string without successive repetitions of char c (you must free the pointer) 11758 */ 11759 char *icUniqS(const char *string, char c) { 11760 char *r = NULL; 11761 size_t len; 11762 11763 // sanity checks 11764 if (!string) { 11765 return(NULL); 11766 } 11767 11768 r = strdup(string); 11769 len = strlen(string); 11770 11771 if (len < 2) { 11772 // string is too short to have repetitions 11773 return(r); 11774 } 11775 11776 c = (char)tolower(c); 11777 11778 // index in r 11779 size_t j = 1;; 11780 rangeFrom(i, 1, len) 11781 if (tolower(r[i-1]) == c && tolower(r[i]) == c) { 11782 // skip 11783 continue; 11784 } 11785 else { 11786 r[j] = r[i]; 11787 j++; 11788 } 11789 11790 r[j] = 0; 11791 11792 return(r); 11793 } 11794 11795 /** 11796 * in place ignore case uniq String 11797 * 11798 * remove successive repetitions of char c 11799 * 11800 * \param 11801 * string 11802 * c character to remove 11803 * \return 11804 * string without successive repetitions of char c 11805 * NULL error 11806 */ 11807 char *iicUniqS(char **string, char c) { 11808 size_t len; 11809 11810 // sanity checks 11811 if (!string || !*string) { 11812 return(NULL); 11813 } 11814 11815 len = strlen(*string); 11816 11817 if (len < 2) { 11818 // string is too short to have repetitions 11819 return(*string); 11820 } 11821 11822 c = (char)tolower(c); 11823 11824 // index in r 11825 size_t j = 1;; 11826 rangeFrom(i, 1, len) 11827 if (tolower((*string)[i-1]) == c && tolower((*string)[i]) == c) { 11828 // skip 11829 continue; 11830 } 11831 else { 11832 (*string)[j] = (*string)[i]; 11833 j++; 11834 } 11835 11836 (*string)[j] = 0; 11837 11838 return(*string); 11839 } 11840 11841 /** 11842 * ignore case buffer uniq String 11843 * 11844 * remove successive repetitions of char c 11845 * 11846 * \param 11847 * string 11848 * c character to remove 11849 * \return 11850 * string without successive repetitions of char c 11851 * NULL error 11852 */ 11853 char *bicUniqS(char *string, char c) { 11854 size_t len; 11855 11856 // sanity checks 11857 if (!string) { 11858 return(NULL); 11859 } 11860 11861 len = strlen(string); 11862 11863 if (len < 2) { 11864 // string is too short to have repetitions 11865 return(string); 11866 } 11867 11868 c = (char)tolower(c); 11869 11870 // index in r 11871 size_t j = 1;; 11872 rangeFrom(i, 1, len) 11873 if (tolower(string[i-1]) == c && tolower(string[i]) == c) { 11874 // skip 11875 continue; 11876 } 11877 else { 11878 string[j] = string[i]; 11879 j++; 11880 } 11881 11882 string[j] = 0; 11883 11884 return(string); 11885 } 11886 11887 /** 11888 * repeat string count times 11889 * 11890 * \param 11891 * string 11892 * \param 11893 * count number of times string is repeated 11894 * \return 11895 * new string with string repeated count times (you must free the pointer) 11896 * NULL when string is NULL 11897 */ 11898 char *repeatS(const char *string, size_t count) { 11899 char *r = NULL; 11900 11901 // sanity 11902 if (!string) { 11903 return(NULL); 11904 } 11905 if (!count || !string[0]) { 11906 emptyS(r); 11907 return(r); 11908 } 11909 11910 size_t slen = strlen(string); 11911 size_t len = slen * count; 11912 11913 r = MALLOC(len+1);; 11914 if (!r) { 11915 return(NULL); 11916 } 11917 11918 strcpy(r, string); 11919 count--; 11920 11921 if (count) { 11922 range(i, count) { 11923 strcpy(r + slen * (1 + i), string); 11924 } 11925 } 11926 11927 return(r); 11928 } 11929 11930 /** 11931 * repeat string count times 11932 * 11933 * \param 11934 * string (this parameter is reallocated) 11935 * \param 11936 * count number of times string is repeated 11937 * \return 11938 * string with string repeated count times 11939 * NULL when string is NULL 11940 */ 11941 char *iRepeatS(char **string, size_t count) { 11942 char *r = NULL; 11943 11944 // sanity 11945 if (!string || !*string) { 11946 return(NULL); 11947 } 11948 if (!count || !(*string)[0]) { 11949 emptyS(r); 11950 goto end; 11951 } 11952 11953 size_t slen = strlen(*string); 11954 size_t len = slen * count; 11955 11956 r = MALLOC(len+1);; 11957 if (!r) { 11958 return(NULL); 11959 } 11960 11961 strcpy(r, *string); 11962 count--; 11963 11964 if (count) { 11965 range(i, count) { 11966 strcpy(r + slen * (1 + i), *string); 11967 } 11968 } 11969 11970 end: 11971 free(*string); 11972 *string = r; 11973 return(*string); 11974 } 11975 11976 /** 11977 * repeat string count times 11978 * 11979 * \param 11980 * dest buffer big enough to hold count times string 11981 * \param 11982 * string 11983 * \param 11984 * count number of times string is repeated 11985 * \return 11986 * dest with string repeated count times 11987 * NULL when dest or string are NULL 11988 */ 11989 char *bRepeatS(char *dest, const char *string, size_t count) { 11990 11991 // sanity 11992 if (!dest || !string) { 11993 return(NULL); 11994 } 11995 if (!count || !string[0]) { 11996 bEmptyS(dest); 11997 return(dest); 11998 } 11999 12000 size_t slen = strlen(string); 12001 12002 strcpy(dest, string); 12003 count--; 12004 12005 if (count) { 12006 range(i, count) { 12007 strcpy(dest + slen * (1 + i), string); 12008 } 12009 } 12010 12011 return(dest); 12012 } 12013 12014 /** 12015 * repeat string count times 12016 * 12017 * \param 12018 * dest buffer big enough to hold count times string 12019 * \param 12020 * destSize dest buffer size (sizeof(dest)) 12021 * \param 12022 * string 12023 * \param 12024 * count number of times string is repeated 12025 * \return 12026 * dest with string repeated count times 12027 * NULL when dest or string are NULL 12028 */ 12029 char *bLRepeatS(char *dest, size_t destSize, const char *string, size_t count) { 12030 12031 // sanity 12032 if (!dest || !string) { 12033 return(NULL); 12034 } 12035 if (!count || !string[0]) { 12036 bEmptyS(dest); 12037 return(dest); 12038 } 12039 12040 size_t slen = strlen(string); 12041 size_t len = slen * count; 12042 12043 if (len >= destSize) { 12044 return(NULL); 12045 } 12046 12047 strcpy(dest, string); 12048 count--; 12049 12050 if (count) { 12051 range(i, count) { 12052 strcpy(dest + slen * (1 + i), string); 12053 } 12054 } 12055 12056 return(dest); 12057 } 12058 12059 /** 12060 * repeat char count times 12061 * 12062 * \param 12063 * c char to repeat 12064 * \param 12065 * count number of times c is repeated 12066 * \return 12067 * new string with c repeated count times (you must free the pointer) 12068 */ 12069 char *repeatCharS(char c, size_t count) { 12070 12071 charToS(s,c); 12072 return(repeatS(s, count)); 12073 } 12074 12075 /** 12076 * repeat char count times 12077 * 12078 * \param 12079 * dest buffer big enough to hold count times c 12080 * \param 12081 * c char to repeat 12082 * \param 12083 * count number of times c is repeated 12084 * \return 12085 * dest with c repeated count times 12086 * NULL when dest is NULL 12087 */ 12088 char *bRepeatCharS(char *dest, char c, size_t count) { 12089 12090 charToS(s,c); 12091 return(bRepeatS(dest, s, count)); 12092 } 12093 12094 /** 12095 * repeat char count times 12096 * 12097 * \param 12098 * dest buffer big enough to hold count times c 12099 * \param 12100 * destSize dest buffer size (sizeof(dest)) 12101 * \param 12102 * c char to repeat 12103 * \param 12104 * count number of times c is repeated 12105 * \return 12106 * dest with c repeated count times 12107 * NULL when dest is NULL 12108 */ 12109 char *bLRepeatCharS(char *dest, size_t destSize, char c, size_t count) { 12110 12111 charToS(s,c); 12112 return(bLRepeatS(dest, destSize, s, count)); 12113 } 12114 12115 /** 12116 * length of string repeated count times 12117 * 12118 * \param 12119 * string 12120 * \param 12121 * count number of times string is repeated 12122 * \return 12123 * length of string repeated count times 12124 * -1 when string is NULL 12125 */ 12126 ssize_t repeatLenS(const char *string, size_t count) { 12127 12128 // sanity 12129 if (!string) { 12130 return(-1); 12131 } 12132 if (!count || !string[0]) { 12133 return(0); 12134 } 12135 12136 ssize_t r = (ssize_t)(strlen(string) * count); 12137 12138 return(r); 12139 } 12140 12141 /** 12142 * ellipsis start string 12143 * 12144 * This function pads the current string with a given string if current string is longer than target length 12145 * If target length is more than current string's length, the current string is returned as is 12146 * 12147 * \param 12148 * string 12149 * \param 12150 * targetLength The length of the resulting string once the current string has been padded. If the value is less 12151 * than the current string's length, the current string is truncated from the right and the pad is 12152 * applied once 12153 * \param 12154 * ellipsisString The string to pad the current string with. 12155 * \return 12156 * new string of the specified length with the pad string applied from the start (you must free the pointer) 12157 * NULL when string or ellipsisString are NULL 12158 */ 12159 char *ellipsisStartS(const char *string, size_t targetLength, const char *ellipsisString) { 12160 12161 // sanity 12162 if (!string or !ellipsisString) { 12163 return(NULL); 12164 } 12165 12166 if (!targetLength) { 12167 return(strdup("")); 12168 } 12169 12170 size_t len = strlen(string); 12171 12172 if (len <= targetLength) { 12173 return(strdup(string)); 12174 } 12175 else { 12176 // truncate string 12177 char *ellip = strdup(ellipsisString); 12178 string += ((len - targetLength) + strlen(ellipsisString)) <= len ? (len - targetLength) + strlen(ellipsisString) : len; 12179 pErrorNULL(iAppendS(&ellip, string)); 12180 // make sure the result is target length 12181 pErrorNULL(iSliceS(&ellip, 0, (int64_t)targetLength)); 12182 return(ellip); 12183 } 12184 } 12185 12186 12187 /** 12188 * ellipsis start string 12189 * 12190 * This function pads the current string with a given string if current string is longer than target length 12191 * If target length is more than current string's length, the current string is returned as is 12192 * 12193 * \param 12194 * string (this parameter is reallocated) 12195 * \param 12196 * targetLength The length of the resulting string once the current string has been padded. If the value is less 12197 * than the current string's length, the current string is truncated from the right and the pad is 12198 * applied once 12199 * \param 12200 * ellipsisString The string to pad the current string with. 12201 * \return 12202 * updated string of the specified length with the pad string applied from the start 12203 * NULL when string or ellipsisString are NULL 12204 */ 12205 char *iEllipsisStartS(char **string, size_t targetLength, const char *ellipsisString) { 12206 12207 // sanity 12208 if (!string or !*string or !ellipsisString) { 12209 return(NULL); 12210 } 12211 12212 if (!targetLength) { 12213 (*string)[0] = 0; 12214 return(*string); 12215 } 12216 12217 size_t len = strlen(*string); 12218 12219 if (len > targetLength) { 12220 // truncate string 12221 char *ellip = strdup(ellipsisString); 12222 char *str = *string + (((len - targetLength) + strlen(ellipsisString)) <= len ? (len - targetLength) + strlen(ellipsisString) : len); 12223 pErrorNULL(iAppendS(&ellip, str)); 12224 // make sure the result is target length 12225 pErrorNULL(iSliceS(&ellip, 0, (int64_t)targetLength)); 12226 free(*string); 12227 *string = ellip; 12228 } 12229 return(*string); 12230 } 12231 12232 /** 12233 * ellipsis start string 12234 * 12235 * This function pads the current string with a given string if current string is longer than target length 12236 * If target length is more than current string's length, the current string is returned as is 12237 * 12238 * \param 12239 * string 12240 * \param 12241 * targetLength The length of the resulting string once the current string has been padded. If the value is less 12242 * than the current string's length, the current string is truncated from the right and the pad is 12243 * applied once 12244 * \param 12245 * ellipsisString The string to pad the current string with. 12246 * \return 12247 * string in dest of the specified length with the pad string applied from the start 12248 * NULL when dest, string or ellipsisString are NULL 12249 */ 12250 char *bEllipsisStartS(char *dest, const char *string, size_t targetLength, const char *ellipsisString) { 12251 12252 // sanity 12253 if (!string or !ellipsisString or !dest) { 12254 return(NULL); 12255 } 12256 12257 if (!targetLength) { 12258 dest[0] = 0; 12259 return(dest); 12260 } 12261 12262 size_t len = strlen(string); 12263 12264 if (len <= targetLength) { 12265 strcpy(dest, string); 12266 } 12267 else { 12268 // truncate string 12269 char *ellip = strdup(ellipsisString); 12270 string += ((len - targetLength) + strlen(ellipsisString)) <= len ? (len - targetLength) + strlen(ellipsisString) : len; 12271 pErrorNULL(iAppendS(&ellip, string)); 12272 // make sure the result is target length 12273 pErrorNULL(iSliceS(&ellip, 0, (int64_t)targetLength)); 12274 strncpy(dest, ellip, targetLength+1); 12275 free(ellip); 12276 } 12277 return(dest); 12278 } 12279 12280 /** 12281 * ellipsis start string 12282 * 12283 * This function pads the current string with a given string if current string is longer than target length 12284 * If target length is more than current string's length, the current string is returned as is 12285 * 12286 * \param 12287 * string 12288 * \param 12289 * targetLength The length of the resulting string once the current string has been padded. If the value is less 12290 * than the current string's length, the current string is truncated from the right and the pad is 12291 * applied once 12292 * \param 12293 * ellipsisString The string to pad the current string with. 12294 * \return 12295 * string in dest of the specified length with the pad string applied from the start 12296 * NULL when dest, string or ellipsisString are NULL 12297 */ 12298 char *bLEllipsisStartS(char *dest, size_t destSize, const char *string, size_t targetLength, const char *ellipsisString) { 12299 12300 // sanity 12301 if (!string or !ellipsisString or !dest) { 12302 return(NULL); 12303 } 12304 12305 if (!destSize) { 12306 return(dest); 12307 } 12308 12309 if (!targetLength) { 12310 dest[0] = 0;; 12311 return(dest); 12312 } 12313 12314 targetLength = destSize > targetLength ? targetLength : destSize;; 12315 12316 size_t len = strlen(string); 12317 12318 if (len <= targetLength) { 12319 pErrorNULL(strLCpy(dest, destSize, string)); 12320 } 12321 else { 12322 // truncate string 12323 char *ellip = strdup(ellipsisString); 12324 string += ((len - targetLength) + strlen(ellipsisString)) <= len ? (len - targetLength) + strlen(ellipsisString) : len; 12325 pErrorNULL(iAppendS(&ellip, string)); 12326 // make sure the result is target length 12327 pErrorNULL(iSliceS(&ellip, 0, (int64_t)targetLength)); 12328 pErrorNULL(strLCpy(dest, destSize, ellip)); 12329 free(ellip); 12330 } 12331 return(dest); 12332 } 12333 12334 /** 12335 * ellipsis start string 12336 * 12337 * This function pads the current string with a given string if current string is longer than target length 12338 * If target length is more than current string's length, the current string is returned as is 12339 * 12340 * \param 12341 * string 12342 * \param 12343 * targetLength The length of the resulting string once the current string has been padded. If the value is less 12344 * than the current string's length, the current string is truncated from the right and the pad is 12345 * applied once 12346 * \param 12347 * ellipsisChar The char to pad the current string with. 12348 * \return 12349 * new string of the specified length with the pad string applied from the start (you must free the pointer) 12350 * NULL when string or ellipsisString are NULL 12351 */ 12352 char *ellipsisStartCharS(const char *string, size_t targetLength, char ellipsisChar) { 12353 12354 // sanity 12355 if (!string) { 12356 return(NULL); 12357 } 12358 12359 if (!targetLength) { 12360 return(strdup("")); 12361 } 12362 12363 charToS(ellipsisString, ellipsisChar); 12364 12365 size_t len = strlen(string); 12366 12367 if (len <= targetLength) { 12368 return(strdup(string)); 12369 } 12370 else { 12371 // truncate string 12372 char *ellip = strdup(ellipsisString); 12373 string += ((len - targetLength) + strlen(ellipsisString)) <= len ? (len - targetLength) + strlen(ellipsisString) : len; 12374 pErrorNULL(iAppendS(&ellip, string)); 12375 // make sure the result is target length 12376 pErrorNULL(iSliceS(&ellip, 0, (int64_t)targetLength)); 12377 return(ellip); 12378 } 12379 } 12380 12381 /** 12382 * ellipsis start string 12383 * 12384 * This function pads the current string with a given string if current string is longer than target length 12385 * If target length is more than current string's length, the current string is returned as is 12386 * 12387 * \param 12388 * string (this parameter is reallocated) 12389 * \param 12390 * targetLength The length of the resulting string once the current string has been padded. If the value is less 12391 * than the current string's length, the current string is truncated from the right and the pad is 12392 * applied once 12393 * \param 12394 * ellipsisChar The char to pad the current string with. 12395 * \return 12396 * updated string of the specified length with the pad string applied from the start 12397 * NULL when string or ellipsisString are NULL 12398 */ 12399 char *iEllipsisStartCharS(char **string, size_t targetLength, char ellipsisChar) { 12400 12401 // sanity 12402 if (!string or !*string) { 12403 return(NULL); 12404 } 12405 12406 if (!targetLength) { 12407 (*string)[0] = 0; 12408 return(*string); 12409 } 12410 12411 charToS(ellipsisString, ellipsisChar); 12412 12413 size_t len = strlen(*string); 12414 12415 if (len > targetLength) { 12416 // truncate string 12417 char *ellip = strdup(ellipsisString); 12418 char *str = *string + (((len - targetLength) + strlen(ellipsisString)) <= len ? (len - targetLength) + strlen(ellipsisString) : len); 12419 pErrorNULL(iAppendS(&ellip, str)); 12420 // make sure the result is target length 12421 pErrorNULL(iSliceS(&ellip, 0, (int64_t)targetLength)); 12422 free(*string); 12423 *string = ellip; 12424 } 12425 return(*string); 12426 } 12427 12428 /** 12429 * ellipsis start string 12430 * 12431 * This function pads the current string with a given string if current string is longer than target length 12432 * If target length is more than current string's length, the current string is returned as is 12433 * 12434 * \param 12435 * string 12436 * \param 12437 * targetLength The length of the resulting string once the current string has been padded. If the value is less 12438 * than the current string's length, the current string is truncated from the right and the pad is 12439 * applied once 12440 * \param 12441 * ellipsisChar The char to pad the current string with. 12442 * \return 12443 * string in dest of the specified length with the pad string applied from the start 12444 * NULL when dest, string or ellipsisString are NULL 12445 */ 12446 char *bEllipsisStartCharS(char *dest, const char *string, size_t targetLength, char ellipsisChar) { 12447 12448 // sanity 12449 if (!string or !dest) { 12450 return(NULL); 12451 } 12452 12453 if (!targetLength) { 12454 dest[0] = 0; 12455 return(dest); 12456 } 12457 12458 charToS(ellipsisString, ellipsisChar); 12459 12460 size_t len = strlen(string); 12461 12462 if (len <= targetLength) { 12463 strcpy(dest, string); 12464 } 12465 else { 12466 // truncate string 12467 char *ellip = strdup(ellipsisString); 12468 string += ((len - targetLength) + strlen(ellipsisString)) <= len ? (len - targetLength) + strlen(ellipsisString) : len; 12469 pErrorNULL(iAppendS(&ellip, string)); 12470 // make sure the result is target length 12471 pErrorNULL(iSliceS(&ellip, 0, (int64_t)targetLength)); 12472 strncpy(dest, ellip, targetLength+1); 12473 free(ellip); 12474 } 12475 return(dest); 12476 } 12477 12478 /** 12479 * ellipsis start string 12480 * 12481 * This function pads the current string with a given string if current string is longer than target length 12482 * If target length is more than current string's length, the current string is returned as is 12483 * 12484 * \param 12485 * string 12486 * \param 12487 * targetLength The length of the resulting string once the current string has been padded. If the value is less 12488 * than the current string's length, the current string is truncated from the right and the pad is 12489 * applied once 12490 * \param 12491 * ellipsisChar The char to pad the current string with. 12492 * \return 12493 * string in dest of the specified length with the pad string applied from the start 12494 * NULL when dest, string or ellipsisString are NULL 12495 */ 12496 char *bLEllipsisStartCharS(char *dest, size_t destSize, const char *string, size_t targetLength, char ellipsisChar) { 12497 12498 // sanity 12499 if (!string or !dest) { 12500 return(NULL); 12501 } 12502 12503 if (!destSize) { 12504 return(dest); 12505 } 12506 12507 if (!targetLength) { 12508 dest[0] = 0; 12509 return(dest); 12510 } 12511 12512 charToS(ellipsisString, ellipsisChar); 12513 12514 targetLength = destSize > targetLength ? targetLength : destSize;; 12515 12516 size_t len = strlen(string); 12517 12518 if (len <= targetLength) { 12519 pErrorNULL(strLCpy(dest, destSize, string)); 12520 } 12521 else { 12522 // truncate string 12523 char *ellip = strdup(ellipsisString); 12524 string += ((len - targetLength) + strlen(ellipsisString)) <= len ? (len - targetLength) + strlen(ellipsisString) : len; 12525 pErrorNULL(iAppendS(&ellip, string)); 12526 // make sure the result is target length 12527 pErrorNULL(iSliceS(&ellip, 0, (int64_t)targetLength)); 12528 pErrorNULL(strLCpy(dest, destSize, ellip)); 12529 free(ellip); 12530 } 12531 return(dest); 12532 } 12533 12534 12535 /** 12536 * length of string after ellipsis 12537 * 12538 * \param 12539 * string 12540 * \return 12541 * length of string after ellipsis 12542 * -1 when string is NULL 12543 */ 12544 ssize_t ellipsisLenS(const char *string, size_t targetLength, const char *ellipsisString) { 12545 12546 // sanity 12547 if (!string or !ellipsisString) { 12548 return(-1); 12549 } 12550 12551 size_t len = strlen(string); 12552 12553 if (len <= targetLength) { 12554 return((ssize_t)len); 12555 } 12556 else { 12557 return((ssize_t)targetLength); 12558 } 12559 } 12560 12561 /** 12562 * ellipsis end string 12563 * 12564 * This function pads the current string with a given string if current string is longer than target length 12565 * If target length is more than current string's length, the current string is returned as is 12566 * 12567 * \param 12568 * string 12569 * \param 12570 * targetLength The length of the resulting string once the current string has been padded. If the value is less 12571 * than the current string's length, the current string is truncated from the left and the pad is 12572 * applied once 12573 * \param 12574 * ellipsisString The string to pad the current string with. 12575 * \return 12576 * new string of the specified length with the pad string applied from the end (you must free the pointer) 12577 * NULL when string or ellipsisString are NULL 12578 */ 12579 char *ellipsisEndS(const char *string, size_t targetLength, const char *ellipsisString) { 12580 12581 // sanity 12582 if (!string or !ellipsisString) { 12583 return(NULL); 12584 } 12585 12586 if (!targetLength) { 12587 return(strdup("")); 12588 } 12589 12590 size_t len = strlen(string); 12591 12592 if (len <= targetLength) { 12593 return(strdup(string)); 12594 } 12595 else { 12596 // truncate string 12597 char *ellip; 12598 if ( strlen(ellipsisString) < targetLength) { 12599 ellip = sliceS(string, 0, (int64_t)(targetLength - strlen(ellipsisString))); 12600 pErrorNULL(iAppendS(&ellip, ellipsisString)); 12601 } 12602 else { 12603 // ellipsisString is longer than targetLength 12604 ellip = sliceS(ellipsisString, 0, (int64_t)targetLength); 12605 } 12606 return(ellip); 12607 } 12608 } 12609 12610 /** 12611 * ellipsis end string 12612 * 12613 * This function pads the current string with a given string if current string is longer than target length 12614 * If target length is more than current string's length, the current string is returned as is 12615 * 12616 * \param 12617 * string (this parameter is reallocated) 12618 * \param 12619 * targetLength The length of the resulting string once the current string has been padded. If the value is less 12620 * than the current string's length, the current string is truncated from the left and the pad is 12621 * applied once 12622 * \param 12623 * ellipsisString The string to pad the current string with. 12624 * \return 12625 * updated string of the specified length with the pad string applied from the end 12626 * NULL when string or ellipsisString are NULL 12627 */ 12628 char *iEllipsisEndS(char **string, size_t targetLength, const char *ellipsisString) { 12629 12630 // sanity 12631 if (!string or !*string or !ellipsisString) { 12632 return(NULL); 12633 } 12634 12635 if (!targetLength) { 12636 (*string)[0] = 0; 12637 return(*string); 12638 } 12639 12640 size_t len = strlen(*string); 12641 12642 if (len > targetLength) { 12643 // truncate string 12644 char *ellip; 12645 if ( strlen(ellipsisString) < targetLength) { 12646 ellip = sliceS(*string, 0, (int64_t)(targetLength - strlen(ellipsisString))); 12647 pErrorNULL(iAppendS(&ellip, ellipsisString)); 12648 } 12649 else { 12650 // ellipsisString is longer than targetLength 12651 ellip = sliceS(ellipsisString, 0, (int64_t)targetLength); 12652 } 12653 free(*string); 12654 *string = ellip; 12655 } 12656 return(*string); 12657 } 12658 12659 /** 12660 * ellipsis end string 12661 * 12662 * This function pads the current string with a given string if current string is longer than target length 12663 * If target length is more than current string's length, the current string is returned as is 12664 * 12665 * \param 12666 * string 12667 * \param 12668 * targetLength The length of the resulting string once the current string has been padded. If the value is less 12669 * than the current string's length, the current string is truncated from the left and the pad is 12670 * applied once 12671 * \param 12672 * ellipsisString The string to pad the current string with. 12673 * \return 12674 * string in dest of the specified length with the pad string applied from the end 12675 * NULL when dest, string or ellipsisString are NULL 12676 */ 12677 char *bEllipsisEndS(char *dest, const char *string, size_t targetLength, const char *ellipsisString) { 12678 12679 // sanity 12680 if (!string or !ellipsisString or !dest) { 12681 return(NULL); 12682 } 12683 12684 if (!targetLength) { 12685 dest[0] = 0; 12686 return(dest); 12687 } 12688 12689 size_t len = strlen(string); 12690 12691 if (len <= targetLength) { 12692 strcpy(dest, string); 12693 } 12694 else { 12695 // truncate string 12696 char *ellip; 12697 if ( strlen(ellipsisString) < targetLength) { 12698 ellip = sliceS(string, 0, (int64_t)(targetLength - strlen(ellipsisString))); 12699 pErrorNULL(iAppendS(&ellip, ellipsisString)); 12700 } 12701 else { 12702 // ellipsisString is longer than targetLength 12703 ellip = sliceS(ellipsisString, 0, (int64_t)targetLength); 12704 } 12705 if (!ellip) { 12706 return(NULL); 12707 } 12708 strncpy(dest, ellip, targetLength+1); 12709 free(ellip); 12710 } 12711 return(dest); 12712 } 12713 12714 /** 12715 * ellipsis end string 12716 * 12717 * This function pads the current string with a given string if current string is longer than target length 12718 * If target length is more than current string's length, the current string is returned as is 12719 * 12720 * \param 12721 * string 12722 * \param 12723 * targetLength The length of the resulting string once the current string has been padded. If the value is less 12724 * than the current string's length, the current string is truncated from the left and the pad is 12725 * applied once 12726 * \param 12727 * ellipsisString The string to pad the current string with. 12728 * \return 12729 * string in dest of the specified length with the pad string applied from the end 12730 * NULL when dest, string or ellipsisString are NULL 12731 */ 12732 char *bLEllipsisEndS(char *dest, size_t destSize, const char *string, size_t targetLength, const char *ellipsisString) { 12733 12734 // sanity 12735 if (!string or !ellipsisString or !dest) { 12736 return(NULL); 12737 } 12738 12739 if (!destSize) { 12740 return(dest); 12741 } 12742 12743 if (!targetLength) { 12744 dest[0] = 0; 12745 return(dest); 12746 } 12747 12748 targetLength = destSize > targetLength ? targetLength : destSize;; 12749 12750 size_t len = strlen(string); 12751 12752 if (len <= targetLength) { 12753 pErrorNULL(strLCpy(dest, destSize, string)); 12754 } 12755 else { 12756 // truncate string 12757 char *ellip; 12758 if ( strlen(ellipsisString) < targetLength) { 12759 ellip = sliceS(string, 0, (int64_t)(targetLength - strlen(ellipsisString))); 12760 pErrorNULL(iAppendS(&ellip, ellipsisString)); 12761 } 12762 else { 12763 // ellipsisString is longer than targetLength 12764 ellip = sliceS(ellipsisString, 0, (int64_t)targetLength); 12765 } 12766 pErrorNULL(strLCpy(dest, destSize, ellip)); 12767 free(ellip); 12768 } 12769 return(dest); 12770 } 12771 12772 /** 12773 * ellipsis end string 12774 * 12775 * This function pads the current string with a given string if current string is longer than target length 12776 * If target length is more than current string's length, the current string is returned as is 12777 * 12778 * \param 12779 * string 12780 * \param 12781 * targetLength The length of the resulting string once the current string has been padded. If the value is less 12782 * than the current string's length, the current string is truncated from the left and the pad is 12783 * applied once 12784 * \param 12785 * ellipsisChar The char to pad the current string with. 12786 * \return 12787 * new string of the specified length with the pad string applied from the end (you must free the pointer) 12788 * NULL when string or ellipsisString are NULL 12789 */ 12790 char *ellipsisEndCharS(const char *string, size_t targetLength, char ellipsisChar) { 12791 12792 // sanity 12793 if (!string) { 12794 return(NULL); 12795 } 12796 12797 if (!targetLength) { 12798 return(strdup("")); 12799 } 12800 12801 charToS(ellipsisString, ellipsisChar); 12802 12803 size_t len = strlen(string); 12804 12805 if (len <= targetLength) { 12806 return(strdup(string)); 12807 } 12808 else { 12809 // truncate string 12810 char *ellip; 12811 ellip = sliceS(string, 0, (int64_t)(targetLength - strlen(ellipsisString))); 12812 pErrorNULL(iAppendS(&ellip, ellipsisString)); 12813 return(ellip); 12814 } 12815 } 12816 12817 /** 12818 * ellipsis end string 12819 * 12820 * This function pads the current string with a given string if current string is longer than target length 12821 * If target length is more than current string's length, the current string is returned as is 12822 * 12823 * \param 12824 * string (this parameter is reallocated) 12825 * \param 12826 * targetLength The length of the resulting string once the current string has been padded. If the value is less 12827 * than the current string's length, the current string is truncated from the left and the pad is 12828 * applied once 12829 * \param 12830 * ellipsisChar The char to pad the current string with. 12831 * \return 12832 * updated string of the specified length with the pad string applied from the end 12833 * NULL when string or ellipsisString are NULL 12834 */ 12835 char *iEllipsisEndCharS(char **string, size_t targetLength, char ellipsisChar) { 12836 12837 // sanity 12838 if (!string or !*string) { 12839 return(NULL); 12840 } 12841 12842 if (!targetLength) { 12843 (*string)[0] = 0; 12844 return(*string); 12845 } 12846 12847 charToS(ellipsisString, ellipsisChar); 12848 12849 size_t len = strlen(*string); 12850 12851 if (len > targetLength) { 12852 // truncate string 12853 char *ellip; 12854 ellip = sliceS(*string, 0, (int64_t)(targetLength - strlen(ellipsisString))); 12855 pErrorNULL(iAppendS(&ellip, ellipsisString)); 12856 free(*string); 12857 *string = ellip; 12858 } 12859 return(*string); 12860 } 12861 12862 /** 12863 * ellipsis end string 12864 * 12865 * This function pads the current string with a given string if current string is longer than target length 12866 * If target length is more than current string's length, the current string is returned as is 12867 * 12868 * \param 12869 * string 12870 * \param 12871 * targetLength The length of the resulting string once the current string has been padded. If the value is less 12872 * than the current string's length, the current string is truncated from the left and the pad is 12873 * applied once 12874 * \param 12875 * ellipsisChar The char to pad the current string with. 12876 * \return 12877 * string in dest of the specified length with the pad string applied from the end 12878 * NULL when dest, string or ellipsisString are NULL 12879 */ 12880 char *bEllipsisEndCharS(char *dest, const char *string, size_t targetLength, char ellipsisChar) { 12881 12882 // sanity 12883 if (!string or !dest) { 12884 return(NULL); 12885 } 12886 12887 if (!targetLength) { 12888 dest[0] = 0; 12889 return(dest); 12890 } 12891 12892 charToS(ellipsisString, ellipsisChar); 12893 12894 size_t len = strlen(string); 12895 12896 if (len <= targetLength) { 12897 strcpy(dest, string); 12898 } 12899 else { 12900 // truncate string 12901 char *ellip; 12902 ellip = sliceS(string, 0, (int64_t)(targetLength - strlen(ellipsisString))); 12903 if (!ellip) { 12904 return(NULL); 12905 } 12906 pErrorNULL(iAppendS(&ellip, ellipsisString)); 12907 strncpy(dest, ellip, targetLength+1); 12908 free(ellip); 12909 } 12910 return(dest); 12911 } 12912 12913 /** 12914 * ellipsis end string 12915 * 12916 * This function pads the current string with a given string if current string is longer than target length 12917 * If target length is more than current string's length, the current string is returned as is 12918 * 12919 * \param 12920 * string 12921 * \param 12922 * targetLength The length of the resulting string once the current string has been padded. If the value is less 12923 * than the current string's length, the current string is truncated from the left and the pad is 12924 * applied once 12925 * \param 12926 * ellipsisString The string to pad the current string with. 12927 * \return 12928 * string in dest of the specified length with the pad string applied from the end 12929 * NULL when dest, string or ellipsisString are NULL 12930 */ 12931 char *bLEllipsisEndCharS(char *dest, size_t destSize, const char *string, size_t targetLength, char ellipsisChar) { 12932 12933 // sanity 12934 if (!string or !dest) { 12935 return(NULL); 12936 } 12937 12938 if (!destSize) { 12939 return(dest); 12940 } 12941 12942 if (!targetLength) { 12943 dest[0] = 0; 12944 return(dest); 12945 } 12946 12947 charToS(ellipsisString, ellipsisChar); 12948 12949 targetLength = destSize > targetLength ? targetLength : destSize;; 12950 12951 size_t len = strlen(string); 12952 12953 if (len <= targetLength) { 12954 pErrorNULL(strLCpy(dest, destSize, string)); 12955 } 12956 else { 12957 // truncate string 12958 char *ellip; 12959 ellip = sliceS(string, 0, (int64_t)(targetLength - strlen(ellipsisString))); 12960 pErrorNULL(iAppendS(&ellip, ellipsisString)); 12961 pErrorNULL(strLCpy(dest, destSize, ellip)); 12962 free(ellip); 12963 } 12964 return(dest); 12965 } 12966 12967 12968 /** 12969 * pad start string 12970 * 12971 * This function pads the current string with a given string (repeated, if needed) until the 12972 * resulting string reaches a given length. The padding is applied from the start (left) of the current 12973 * string 12974 * 12975 * \param 12976 * string 12977 * \param 12978 * targetLength The length of the resulting string once the current string has been padded. If the value is less 12979 * than the current string's length, the current string is returned as is 12980 * \param 12981 * padString The string to pad the current string with. If this string is too long to stay within the target 12982 * length, it will be truncated from the right. The current string is returned as is 12983 * when an empty string is supplied 12984 * \return 12985 * new string of the specified length with the pad string applied from the start (you must free the pointer) 12986 * NULL when string or padString are NULL 12987 */ 12988 char *padStartS(const char *string, size_t targetLength, const char *padString) { 12989 12990 // sanity 12991 if (!string) { 12992 return(NULL); 12993 } 12994 if (strlen(string) >= targetLength) { 12995 return(strdup(string)); 12996 } 12997 if (!padString) { 12998 return(NULL); 12999 } 13000 if (!strlen(padString)) { 13001 return(strdup(string)); 13002 } 13003 13004 targetLength -= strlen(string); 13005 13006 char *pads = strdup(padString);; 13007 if (!pads) { 13008 return(NULL); 13009 } 13010 if (targetLength > strlen(padString)) { 13011 pErrorNULL(iRepeatS(&pads, targetLength/strlen(padString)+1)); 13012 } 13013 13014 pErrorNULL(iSliceS(&pads, 0, (int64_t)targetLength)); 13015 13016 char *r = appendS(pads, string); 13017 free(pads); 13018 13019 return(r); 13020 } 13021 13022 /** 13023 * pad start string 13024 * 13025 * This function pads the current string with a given string (repeated, if needed) until the 13026 * resulting string reaches a given length. The padding is applied from the start (left) of the current 13027 * string 13028 * 13029 * \param 13030 * string (this parameter is reallocated) 13031 * \param 13032 * targetLength The length of the resulting string once the current string has been padded. If the value is less 13033 * than the current string's length, the current string is returned as is 13034 * \param 13035 * padString The string to pad the current string with. If this string is too long to stay within the target 13036 * length, it will be truncated from the right. The current string is returned as is 13037 * when an empty string is supplied 13038 * \return 13039 * updated string of the specified length with the pad string applied from the start 13040 * NULL when string or padString are NULL 13041 */ 13042 char *iPadStartS(char **string, size_t targetLength, const char *padString) { 13043 13044 // sanity 13045 if (!string or !*string) { 13046 return(NULL); 13047 } 13048 if (strlen(*string) >= targetLength) { 13049 return(*string); 13050 } 13051 if (!padString) { 13052 return(NULL); 13053 } 13054 if (!strlen(padString)) { 13055 return(*string); 13056 } 13057 13058 targetLength -= strlen(*string); 13059 13060 char *pads = strdup(padString);; 13061 if (targetLength > strlen(padString)) { 13062 pErrorNULL(iRepeatS(&pads, targetLength/strlen(padString)+1)); 13063 } 13064 13065 pErrorNULL(iSliceS(&pads, 0, (int64_t)targetLength)); 13066 13067 pErrorNULL(iAppendS(&pads, *string)); 13068 free(*string); 13069 *string = pads; 13070 13071 return(*string); 13072 } 13073 13074 /** 13075 * pad start string 13076 * 13077 * This function pads the current string with a given string (repeated, if needed) until the 13078 * resulting string reaches a given length. The padding is applied from the start (left) of the current 13079 * string 13080 * 13081 * \param 13082 * string 13083 * \param 13084 * targetLength The length of the resulting string once the current string has been padded. If the value is less 13085 * than the current string's length, the current string is returned as is 13086 * \param 13087 * padString The string to pad the current string with. If this string is too long to stay within the target 13088 * length, it will be truncated from the right. The current string is returned as is 13089 * when an empty string is supplied 13090 * \return 13091 * new string of the specified length with the pad string applied from the start 13092 * NULL when dest, string or padString are NULL 13093 */ 13094 char *bPadStartS(char *dest, const char *string, size_t targetLength, const char *padString) { 13095 13096 // sanity 13097 if (!dest or !string) { 13098 return(NULL); 13099 } 13100 if (strlen(string) >= targetLength) { 13101 strcpy(dest, string); 13102 return(dest); 13103 } 13104 if (!padString) { 13105 return(NULL); 13106 } 13107 if (!strlen(padString)) { 13108 strcpy(dest, string); 13109 return(dest); 13110 } 13111 13112 targetLength -= strlen(string); 13113 13114 char *pads = strdup(padString);; 13115 if (!pads) { 13116 return(NULL); 13117 } 13118 if (targetLength > strlen(padString)) { 13119 pErrorNULL(iRepeatS(&pads, targetLength/strlen(padString)+1)); 13120 } 13121 13122 pErrorNULL(iSliceS(&pads, 0, (int64_t)targetLength)); 13123 13124 char *r = appendS(pads, string); 13125 free(pads); 13126 if (!r) { 13127 return(NULL); 13128 } 13129 13130 strcpy(dest, r); 13131 free(r); 13132 13133 return(dest); 13134 } 13135 13136 /** 13137 * pad start string 13138 * 13139 * This function pads the current string with a given string (repeated, if needed) until the 13140 * resulting string reaches a given length. The padding is applied from the start (left) of the current 13141 * string 13142 * 13143 * \param 13144 * string 13145 * \param 13146 * targetLength The length of the resulting string once the current string has been padded. If the value is less 13147 * than the current string's length, the current string is returned as is 13148 * \param 13149 * padString The string to pad the current string with. If this string is too long to stay within the target 13150 * length, it will be truncated from the right. The current string is returned as is 13151 * when an empty string is supplied 13152 * \return 13153 * new string of the specified length with the pad string applied from the start 13154 * NULL when dest, string or padString are NULL 13155 */ 13156 char *bLPadStartS(char *dest, size_t destSize, const char *string, size_t targetLength, const char *padString) { 13157 13158 // sanity 13159 if (!dest or !string) { 13160 return(NULL); 13161 } 13162 if (strlen(string) >= targetLength) { 13163 pErrorNULL(strLCpy(dest, destSize, string)); 13164 return(dest); 13165 } 13166 if (!padString) { 13167 return(NULL); 13168 } 13169 if (!strlen(padString)) { 13170 pErrorNULL(strLCpy(dest, destSize, string)); 13171 return(dest); 13172 } 13173 13174 targetLength -= strlen(string); 13175 13176 char *pads = strdup(padString);; 13177 if (!pads) { 13178 return(NULL); 13179 } 13180 if (targetLength > strlen(padString)) { 13181 pErrorNULL(iRepeatS(&pads, targetLength/strlen(padString)+1)); 13182 } 13183 13184 pErrorNULL(iSliceS(&pads, 0, (int64_t)targetLength)); 13185 13186 char *r = appendS(pads, string); 13187 free(pads); 13188 if (!r) { 13189 return(NULL); 13190 } 13191 13192 pErrorNULL(strLCpy(dest, destSize, r)); 13193 free(r); 13194 13195 return(dest); 13196 } 13197 13198 /** 13199 * pad start string 13200 * 13201 * This function pads the current string with a given character (repeated, if needed) until the 13202 * resulting string reaches a given length. The padding is applied from the start (left) of the current 13203 * string 13204 * 13205 * \param 13206 * string 13207 * \param 13208 * targetLength The length of the resulting string once the current string has been padded. If the value is less 13209 * than the current string's length, the current string is returned as is 13210 * \param 13211 * padChar The character to pad the current string with 13212 * \return 13213 * new string of the specified length with the pad character applied from the start (you must free the pointer) 13214 * NULL when string is NULL 13215 */ 13216 char *padStartCharS(const char *string, size_t targetLength, char padChar) { 13217 13218 // sanity 13219 if (!string) { 13220 return(NULL); 13221 } 13222 if (strlen(string) >= targetLength) { 13223 return(strdup(string)); 13224 } 13225 13226 targetLength -= strlen(string); 13227 13228 charToS(padString, padChar); 13229 13230 char *pads = strdup(padString);; 13231 if (!pads) { 13232 return(NULL); 13233 } 13234 if (targetLength > strlen(padString)) { 13235 pErrorNULL(iRepeatS(&pads, targetLength/strlen(padString)+1)); 13236 } 13237 13238 pErrorNULL(iSliceS(&pads, 0, (int64_t)targetLength)); 13239 13240 char *r = appendS(pads, string); 13241 free(pads); 13242 13243 return(r); 13244 } 13245 13246 /** 13247 * pad start string 13248 * 13249 * This function pads the current string with a given character (repeated, if needed) until the 13250 * resulting string reaches a given length. The padding is applied from the start (left) of the current 13251 * string 13252 * 13253 * \param 13254 * string (this parameter is reallocated) 13255 * \param 13256 * targetLength The length of the resulting string once the current string has been padded. If the value is less 13257 * than the current string's length, the current string is returned as is 13258 * \param 13259 * padChar The character to pad the current string with 13260 * \return 13261 * new string of the specified length with the pad character applied from the start 13262 * NULL when string is NULL 13263 */ 13264 char *iPadStartCharS(char **string, size_t targetLength, char padChar) { 13265 13266 // sanity 13267 if (!string or !*string) { 13268 return(NULL); 13269 } 13270 if (strlen(*string) >= targetLength) { 13271 return(*string); 13272 } 13273 13274 targetLength -= strlen(*string); 13275 13276 charToS(padString, padChar); 13277 13278 char *pads = strdup(padString);; 13279 if (targetLength > strlen(padString)) { 13280 pErrorNULL(iRepeatS(&pads, targetLength/strlen(padString)+1)); 13281 } 13282 13283 pErrorNULL(iSliceS(&pads, 0, (int64_t)targetLength)); 13284 13285 pErrorNULL(iAppendS(&pads, *string)); 13286 free(*string); 13287 *string = pads; 13288 13289 return(*string); 13290 } 13291 13292 /** 13293 * pad start string 13294 * 13295 * This function pads the current string with a given character (repeated, if needed) until the 13296 * resulting string reaches a given length. The padding is applied from the start (left) of the current 13297 * string 13298 * 13299 * \param 13300 * string 13301 * \param 13302 * targetLength The length of the resulting string once the current string has been padded. If the value is less 13303 * than the current string's length, the current string is returned as is 13304 * \param 13305 * padChar The character to pad the current string with 13306 * \return 13307 * new string of the specified length with the pad character applied from the start 13308 * NULL when dest or string are NULL 13309 */ 13310 char *bPadStartCharS(char *dest, const char *string, size_t targetLength, char padChar) { 13311 13312 // sanity 13313 if (!dest or !string) { 13314 return(NULL); 13315 } 13316 if (strlen(string) >= targetLength) { 13317 strcpy(dest, string); 13318 return(dest); 13319 } 13320 13321 targetLength -= strlen(string); 13322 13323 charToS(padString, padChar); 13324 13325 char *pads = strdup(padString);; 13326 if (!pads) { 13327 return(NULL); 13328 } 13329 if (targetLength > strlen(padString)) { 13330 pErrorNULL(iRepeatS(&pads, targetLength/strlen(padString)+1)); 13331 } 13332 13333 pErrorNULL(iSliceS(&pads, 0, (int64_t)targetLength)); 13334 13335 char *r = appendS(pads, string); 13336 free(pads); 13337 if (!r) { 13338 return(NULL); 13339 } 13340 13341 strcpy(dest, r); 13342 free(r); 13343 13344 return(dest); 13345 } 13346 13347 /** 13348 * pad start string 13349 * 13350 * This function pads the current string with a given character (repeated, if needed) until the 13351 * resulting string reaches a given length. The padding is applied from the start (left) of the current 13352 * string 13353 * 13354 * \param 13355 * string 13356 * \param 13357 * targetLength The length of the resulting string once the current string has been padded. If the value is less 13358 * than the current string's length, the current string is returned as is 13359 * \param 13360 * padChar The character to pad the current string with 13361 * \return 13362 * new string of the specified length with the pad character applied from the start 13363 * NULL when dest or string are NULL 13364 */ 13365 char *bLPadStartCharS(char *dest, size_t destSize, const char *string, size_t targetLength, char padChar) { 13366 13367 // sanity 13368 if (!dest or !string) { 13369 return(NULL); 13370 } 13371 if (strlen(string) >= targetLength) { 13372 pErrorNULL(strLCpy(dest, destSize, string)); 13373 return(dest); 13374 } 13375 13376 targetLength -= strlen(string); 13377 13378 charToS(padString, padChar); 13379 13380 char *pads = strdup(padString);; 13381 if (!pads) { 13382 return(NULL); 13383 } 13384 if (targetLength > strlen(padString)) { 13385 pErrorNULL(iRepeatS(&pads, targetLength/strlen(padString)+1)); 13386 } 13387 13388 pErrorNULL(iSliceS(&pads, 0, (int64_t)targetLength)); 13389 13390 char *r = appendS(pads, string); 13391 free(pads); 13392 if (!r) { 13393 return(NULL); 13394 } 13395 13396 pErrorNULL(strLCpy(dest, destSize, r)); 13397 free(r); 13398 13399 return(dest); 13400 } 13401 13402 /** 13403 * length of string after padStart 13404 * 13405 * \param 13406 * string 13407 * \return 13408 * length of string after padStart 13409 * -1 when string is NULL 13410 */ 13411 ssize_t padStartLenS(const char *string, size_t targetLength, const char *padString) { 13412 13413 // sanity 13414 if (!string) { 13415 return(-1); 13416 } 13417 if (strlen(string) >= targetLength) { 13418 return((ssize_t)strlen(string)); 13419 } 13420 if (!padString) { 13421 return(-1); 13422 } 13423 if (!strlen(padString)) { 13424 return((ssize_t)strlen(string)); 13425 } 13426 13427 return((ssize_t)targetLength); 13428 } 13429 13430 /** 13431 * pad end string 13432 * 13433 * This function pads the current string with a given string (repeated, if needed) until the 13434 * resulting string reaches a given length. The padding is applied from the end (right) of the current 13435 * string 13436 * 13437 * \param 13438 * string 13439 * \param 13440 * targetLength The length of the resulting string once the current string has been padded. If the value is lower 13441 * than the current string's length, the current string is returned as is 13442 * \param 13443 * padString The string to pad the current string with. If this string is too long to stay within the target 13444 * length, it will be truncated and the left-most part will be applied. The current string is returned as is 13445 * when an empty string is supplied 13446 * \return 13447 * new string of the specified length with the pad string applied at the end of the current string (you must free the pointer) 13448 * NULL when string or padString are NULL 13449 */ 13450 char *padEndS(const char *string, size_t targetLength, const char *padString) { 13451 13452 // sanity 13453 if (!string) { 13454 return(NULL); 13455 } 13456 if (strlen(string) > targetLength) { 13457 return(strdup(string)); 13458 } 13459 if (!padString) { 13460 return(NULL); 13461 } 13462 if (!strlen(padString)) { 13463 return(strdup(string)); 13464 } 13465 13466 targetLength -= strlen(string); 13467 13468 char *pads = strdup(padString);; 13469 if (!pads) { 13470 return(NULL); 13471 } 13472 if (targetLength > strlen(padString)) { 13473 pErrorNULL(iRepeatS(&pads, targetLength/strlen(padString)+1)); 13474 } 13475 13476 pErrorNULL(iSliceS(&pads, 0, (int64_t)targetLength)); 13477 13478 char *r = appendS(string, pads); 13479 free(pads); 13480 13481 return(r); 13482 } 13483 13484 13485 13486 /** 13487 * pad end string 13488 * 13489 * This function pads the current string with a given string (repeated, if needed) so that the 13490 * resulting string reaches a given length. The padding is applied from the end (right) of the current 13491 * string 13492 * 13493 * \param 13494 * string (this parameter is reallocated) 13495 * \param 13496 * targetLength The length of the resulting string once the current string has been padded. If the value is lower 13497 * than the current string's length, the current string will be returned as is 13498 * \param 13499 * padString The string to pad the current string with. If this string is too long to stay within the target 13500 * length, it will be truncated and the left-most part will be applied. The current string is returned as is 13501 * when an empty string is supplied 13502 * \return 13503 * updated string of the specified length with the pad string applied at the end of the current string 13504 * NULL when string or padString are NULL 13505 */ 13506 char *iPadEndS(char **string, size_t targetLength, const char *padString) { 13507 13508 // sanity 13509 if (!string or !*string) { 13510 return(NULL); 13511 } 13512 if (strlen(*string) > targetLength) { 13513 return(*string); 13514 } 13515 if (!padString) { 13516 return(NULL); 13517 } 13518 if (!strlen(padString)) { 13519 return(*string); 13520 } 13521 13522 targetLength -= strlen(*string); 13523 13524 char *pads = strdup(padString);; 13525 if (!pads) { 13526 return(NULL); 13527 } 13528 if (targetLength > strlen(padString)) { 13529 pErrorNULL(iRepeatS(&pads, targetLength/strlen(padString)+1)); 13530 } 13531 13532 pErrorNULL(iSliceS(&pads, 0, (int64_t)targetLength)); 13533 13534 pErrorNULL(iAppendS(string, pads)); 13535 free(pads); 13536 13537 return(*string); 13538 } 13539 13540 /** 13541 * pad end string 13542 * 13543 * This function pads the current string with a given string (repeated, if needed) so that the 13544 * resulting string reaches a given length. The padding is applied from the end (right) of the current 13545 * string 13546 * 13547 * \param 13548 * string 13549 * \param 13550 * targetLength The length of the resulting string once the current string has been padded. If the value is lower 13551 * than the current string's length, the current string will be returned as is 13552 * \param 13553 * padString The string to pad the current string with. If this string is too long to stay within the target 13554 * length, it will be truncated and the left-most part will be applied. The current string is returned as is 13555 * when an empty string is supplied 13556 * \return 13557 * new string of the specified length with the pad string applied at the end of the current string 13558 * NULL when dest, string or padString are NULL 13559 */ 13560 char *bPadEndS(char *dest, const char *string, size_t targetLength, const char *padString) { 13561 13562 // sanity 13563 if (!dest or !string) { 13564 return(NULL); 13565 } 13566 if (strlen(string) > targetLength) { 13567 strcpy(dest, string); 13568 return(dest); 13569 } 13570 if (!padString) { 13571 return(NULL); 13572 } 13573 if (!strlen(padString)) { 13574 strcpy(dest, string); 13575 return(dest); 13576 } 13577 13578 targetLength -= strlen(string); 13579 13580 char *pads = strdup(padString);; 13581 if (!pads) { 13582 return(NULL); 13583 } 13584 if (targetLength > strlen(padString)) { 13585 pErrorNULL(iRepeatS(&pads, targetLength/strlen(padString)+1)); 13586 } 13587 13588 pErrorNULL(iSliceS(&pads, 0, (int64_t)targetLength)); 13589 13590 char *r = appendS(string, pads); 13591 free(pads); 13592 if (!r) { 13593 return(NULL); 13594 } 13595 13596 strcpy(dest, r); 13597 free(r); 13598 13599 return(dest); 13600 } 13601 13602 /** 13603 * pad end string 13604 * 13605 * This function pads the current string with a given string (repeated, if needed) so that the 13606 * resulting string reaches a given length. The padding is applied from the end (right) of the current 13607 * string 13608 * 13609 * \param 13610 * string 13611 * \param 13612 * targetLength The length of the resulting string once the current string has been padded. If the value is lower 13613 * than the current string's length, the current string will be returned as is 13614 * \param 13615 * padString The string to pad the current string with. If this string is too long to stay within the target 13616 * length, it will be truncated and the left-most part will be applied. The current string is returned as is 13617 * when an empty string is supplied 13618 * \return 13619 * new string of the specified length with the pad string applied at the end of the current string 13620 * NULL when dest, string or padString are NULL 13621 */ 13622 char *bLPadEndS(char *dest, size_t destSize, const char *string, size_t targetLength, const char *padString) { 13623 13624 // sanity 13625 if (!dest or !string) { 13626 return(NULL); 13627 } 13628 if (strlen(string) > targetLength) { 13629 pErrorNULL(strLCpy(dest, destSize, string)); 13630 return(dest); 13631 } 13632 if (!padString) { 13633 return(NULL); 13634 } 13635 if (!strlen(padString)) { 13636 pErrorNULL(strLCpy(dest, destSize, string)); 13637 return(dest); 13638 } 13639 13640 targetLength -= strlen(string); 13641 13642 char *pads = strdup(padString);; 13643 if (!pads) { 13644 return(NULL); 13645 } 13646 if (targetLength > strlen(padString)) { 13647 pErrorNULL(iRepeatS(&pads, targetLength/strlen(padString)+1)); 13648 } 13649 13650 pErrorNULL(iSliceS(&pads, 0, (int64_t)targetLength)); 13651 13652 char *r = appendS(string, pads); 13653 free(pads); 13654 if (!r) { 13655 return(NULL); 13656 } 13657 13658 pErrorNULL(strLCpy(dest, destSize, r)); 13659 free(r); 13660 13661 return(dest); 13662 } 13663 13664 /** 13665 * pad end string 13666 * 13667 * This function pads the current string with a given character (repeated, if needed) so that the 13668 * resulting string reaches a given length. The padding is applied from the end (right) of the current 13669 * string 13670 * 13671 * \param 13672 * string 13673 * \param 13674 * targetLength The length of the resulting string once the current string has been padded. If the value is lower 13675 * than the current string's length, the current string will be returned as is 13676 * \param 13677 * padChar The character to pad the current string with 13678 * \return 13679 * new string of the specified length with the pad character applied at the end of the current string (you must free the pointer) 13680 * NULL when string is NULL 13681 */ 13682 char *padEndCharS(const char *string, size_t targetLength, char padChar) { 13683 13684 // sanity 13685 if (!string) { 13686 return(NULL); 13687 } 13688 if (strlen(string) > targetLength) { 13689 return(strdup(string)); 13690 } 13691 13692 targetLength -= strlen(string); 13693 13694 charToS(padString, padChar); 13695 13696 char *pads = strdup(padString);; 13697 if (!pads) { 13698 return(NULL); 13699 } 13700 if (targetLength > strlen(padString)) { 13701 pErrorNULL(iRepeatS(&pads, targetLength/strlen(padString)+1)); 13702 } 13703 13704 pErrorNULL(iSliceS(&pads, 0, (int64_t)targetLength)); 13705 13706 char *r = appendS(string, pads); 13707 free(pads); 13708 13709 return(r); 13710 } 13711 13712 /** 13713 * pad end string 13714 * 13715 * This function pads the current string with a given character (repeated, if needed) so that the 13716 * resulting string reaches a given length. The padding is applied from the end (right) of the current 13717 * string 13718 * 13719 * \param 13720 * string (this parameter is reallocated) 13721 * \param 13722 * targetLength The length of the resulting string once the current string has been padded. If the value is lower 13723 * than the current string's length, the current string will be returned as is 13724 * \param 13725 * padChar The character to pad the current string with 13726 * \return 13727 * updated string of the specified length with the pad character applied at the end of the current string 13728 * NULL when string is NULL 13729 */ 13730 char *iPadEndCharS(char **string, size_t targetLength, char padChar) { 13731 13732 // sanity 13733 if (!string or !*string) { 13734 return(NULL); 13735 } 13736 if (strlen(*string) > targetLength) { 13737 return(*string); 13738 } 13739 13740 targetLength -= strlen(*string); 13741 13742 charToS(padString, padChar); 13743 13744 char *pads = strdup(padString);; 13745 if (!pads) { 13746 return(NULL); 13747 } 13748 if (targetLength > strlen(padString)) { 13749 pErrorNULL(iRepeatS(&pads, targetLength/strlen(padString)+1)); 13750 } 13751 13752 pErrorNULL(iSliceS(&pads, 0, (int64_t)targetLength)); 13753 13754 pErrorNULL(iAppendS(string, pads)); 13755 free(pads); 13756 13757 return(*string); 13758 } 13759 13760 /** 13761 * pad end string 13762 * 13763 * This function pads the current string with a given character (repeated, if needed) so that the 13764 * resulting string reaches a given length. The padding is applied from the end (right) of the current 13765 * string 13766 * 13767 * \param 13768 * string 13769 * \param 13770 * targetLength The length of the resulting string once the current string has been padded. If the value is lower 13771 * than the current string's length, the current string will be returned as is 13772 * \param 13773 * padChar The character to pad the current string with 13774 * \return 13775 * new string of the specified length with the pad character applied at the end of the current string 13776 * NULL when dest or string are NULL 13777 */ 13778 char *bPadEndCharS(char *dest, const char *string, size_t targetLength, char padChar) { 13779 13780 // sanity 13781 if (!dest or !string) { 13782 return(NULL); 13783 } 13784 if (strlen(string) > targetLength) { 13785 strcpy(dest, string); 13786 return(dest); 13787 } 13788 13789 targetLength -= strlen(string); 13790 13791 charToS(padString, padChar); 13792 13793 char *pads = strdup(padString);; 13794 if (!pads) { 13795 return(NULL); 13796 } 13797 if (targetLength > strlen(padString)) { 13798 pErrorNULL(iRepeatS(&pads, targetLength/strlen(padString)+1)); 13799 } 13800 13801 pErrorNULL(iSliceS(&pads, 0, (int64_t)targetLength)); 13802 13803 char *r = appendS(string, pads); 13804 free(pads); 13805 if (!r) { 13806 return(NULL); 13807 } 13808 13809 strcpy(dest, r); 13810 free(r); 13811 13812 return(dest); 13813 } 13814 13815 /** 13816 * pad end string 13817 * 13818 * This function pads the current string with a given character (repeated, if needed) so that the 13819 * resulting string reaches a given length. The padding is applied from the end (right) of the current 13820 * string 13821 * 13822 * \param 13823 * string 13824 * \param 13825 * targetLength The length of the resulting string once the current string has been padded. If the value is lower 13826 * than the current string's length, the current string will be returned as is 13827 * \param 13828 * padChar The string to pad the current string with 13829 * \return 13830 * new string of the specified length with the pad character applied at the end of the current string 13831 * NULL when dest, string or padString are NULL 13832 */ 13833 char *bLPadEndCharS(char *dest, size_t destSize, const char *string, size_t targetLength, char padChar) { 13834 13835 // sanity 13836 if (!dest or !string) { 13837 return(NULL); 13838 } 13839 if (strlen(string) > targetLength) { 13840 pErrorNULL(strLCpy(dest, destSize, string)); 13841 return(dest); 13842 } 13843 13844 targetLength -= strlen(string); 13845 13846 charToS(padString, padChar); 13847 13848 char *pads = strdup(padString);; 13849 if (!pads) { 13850 return(NULL); 13851 } 13852 if (targetLength > strlen(padString)) { 13853 pErrorNULL(iRepeatS(&pads, targetLength/strlen(padString)+1)); 13854 } 13855 13856 pErrorNULL(iSliceS(&pads, 0, (int64_t)targetLength)); 13857 13858 char *r = appendS(string, pads); 13859 free(pads); 13860 if (!r) { 13861 return(NULL); 13862 } 13863 13864 pErrorNULL(strLCpy(dest, destSize, r)); 13865 free(r); 13866 13867 return(dest); 13868 } 13869 13870 13871 /** 13872 * length of string after padEnd 13873 * 13874 * \param 13875 * string 13876 * \return 13877 * length of string after padEnd 13878 * -1 when string is NULL 13879 */ 13880 ssize_t padEndLenS(const char *string, size_t targetLength, const char *padString) { 13881 13882 // sanity 13883 if (!string) { 13884 return(-1); 13885 } 13886 if (strlen(string) > targetLength) { 13887 return((ssize_t)strlen(string)); 13888 } 13889 if (!padString) { 13890 return(-1); 13891 } 13892 if (!strlen(padString)) { 13893 return((ssize_t)strlen(string)); 13894 } 13895 13896 return((ssize_t)targetLength); 13897 } 13898 13899 /** 13900 * get string 13901 * 13902 * get char at python index 13903 * 13904 */ 13905 char getS(const char *string, int64_t index) { 13906 int64_t len; 13907 13908 if (!string) { 13909 return(0); 13910 } 13911 13912 len = (int64_t)strlen(string); 13913 if (index >= len) { 13914 return(0); 13915 } 13916 if (index < -len) { 13917 return(0); 13918 } 13919 if (index < 0) { 13920 index = len + index; 13921 } 13922 13923 return(*(string+index)); 13924 } 13925 13926 /** 13927 * set string 13928 * 13929 * set char at python index 13930 */ 13931 char *setS(char *string, int64_t index, char c) { 13932 int64_t len; 13933 13934 if (!string) { 13935 return(NULL); 13936 } 13937 13938 len = (int64_t)strlen(string); 13939 if (index >= len) { 13940 return(NULL); 13941 } 13942 if (index < -len) { 13943 return(NULL); 13944 } 13945 if (index < 0) { 13946 index = len + index; 13947 } 13948 13949 *(string+index) = c; 13950 return(string); 13951 } 13952 13953 /** 13954 * swap characters in string 13955 * 13956 * \param 13957 * string 13958 * \param 13959 * index1 index of character to swap 13960 * \param 13961 * index2 index of second character to swap 13962 * \return 13963 * new string with characters swapped at index1 and index2 (you must free this pointer) 13964 * NULL when string is NULL or when index1 or index2 are outside the string 13965 */ 13966 char *swapS(char *string, int64_t index1, int64_t index2) { 13967 int64_t len; 13968 13969 if (!string) { 13970 return(NULL); 13971 } 13972 13973 len = (int64_t)strlen(string); 13974 if (index1 >= len) { 13975 return(NULL); 13976 } 13977 if (index1 < -len) { 13978 return(NULL); 13979 } 13980 if (index1 < 0) { 13981 index1 = len + index1; 13982 } 13983 13984 if (index2 >= len) { 13985 return(NULL); 13986 } 13987 if (index2 < -len) { 13988 return(NULL); 13989 } 13990 if (index2 < 0) { 13991 index2 = len + index2; 13992 } 13993 13994 char *r = strdup(string); 13995 if (!r) { 13996 return(NULL); 13997 } 13998 13999 char tmp = r[index1]; 14000 r[index1] = r[index2]; 14001 r[index2] = tmp;; 14002 14003 return(r); 14004 } 14005 14006 /** 14007 * swap characters in string 14008 * 14009 * \param 14010 * string 14011 * \param 14012 * index1 index of character to swap 14013 * \param 14014 * index2 index of second character to swap 14015 * \return 14016 * updated string with characters swapped at index1 and index2 (you must free this pointer) 14017 * NULL when string is NULL or when index1 or index2 are outside the string 14018 */ 14019 char *iSwapS(char **string, int64_t index1, int64_t index2) { 14020 int64_t len; 14021 14022 if (!string or !*string) { 14023 return(NULL); 14024 } 14025 14026 len = (int64_t)strlen(*string); 14027 if (index1 >= len) { 14028 return(NULL); 14029 } 14030 if (index1 < -len) { 14031 return(NULL); 14032 } 14033 if (index1 < 0) { 14034 index1 = len + index1; 14035 } 14036 14037 if (index2 >= len) { 14038 return(NULL); 14039 } 14040 if (index2 < -len) { 14041 return(NULL); 14042 } 14043 if (index2 < 0) { 14044 index2 = len + index2; 14045 } 14046 14047 char tmp = (*string)[index1]; 14048 (*string)[index1] = (*string)[index2]; 14049 (*string)[index2] = tmp;; 14050 14051 return(*string); 14052 } 14053 14054 /** 14055 * swap characters in string 14056 * 14057 * \param 14058 * string 14059 * \param 14060 * index1 index of character to swap 14061 * \param 14062 * index2 index of second character to swap 14063 * \return 14064 * string with characters swapped at index1 and index2 14065 * NULL when string is NULL or when index1 or index2 are outside the string 14066 */ 14067 char *bSwapS(char *string, int64_t index1, int64_t index2) { 14068 int64_t len; 14069 14070 if (!string) { 14071 return(NULL); 14072 } 14073 14074 len = (int64_t)strlen(string); 14075 if (index1 >= len) { 14076 return(NULL); 14077 } 14078 if (index1 < -len) { 14079 return(NULL); 14080 } 14081 if (index1 < 0) { 14082 index1 = len + index1; 14083 } 14084 14085 if (index2 >= len) { 14086 return(NULL); 14087 } 14088 if (index2 < -len) { 14089 return(NULL); 14090 } 14091 if (index2 < 0) { 14092 index2 = len + index2; 14093 } 14094 14095 char tmp = string[index1]; 14096 string[index1] = string[index2]; 14097 string[index2] = tmp;; 14098 14099 return(string); 14100 } 14101 14102 /** 14103 * swap characters in string 14104 * 14105 * if string's length is more than size then size is the end of string 14106 * and the indexes are computed relative to size 14107 * 14108 * \param 14109 * string 14110 * \param 14111 * size string buffer size 14112 * \param 14113 * index1 index of character to swap 14114 * \param 14115 * index2 index of second character to swap 14116 * \return 14117 * string with characters swapped at index1 and index2 14118 * NULL when string is NULL or when index1 or index2 are outside the string 14119 */ 14120 char *bLSwapS(char *string, size_t size, int64_t index1, int64_t index2) { 14121 int64_t len; 14122 14123 if (!string) { 14124 return(NULL); 14125 } 14126 14127 if (!size) { 14128 return(string); 14129 } 14130 14131 len = (int64_t)strlen(string); 14132 14133 if ((size_t)len+1 > size) { 14134 len = (int64_t)(size-1); 14135 } 14136 14137 if (index1 >= len) { 14138 return(NULL); 14139 } 14140 if (index1 < -len) { 14141 return(NULL); 14142 } 14143 if (index1 < 0) { 14144 index1 = len + index1; 14145 } 14146 14147 if (index2 >= len) { 14148 return(NULL); 14149 } 14150 if (index2 < -len) { 14151 return(NULL); 14152 } 14153 if (index2 < 0) { 14154 index2 = len + index2; 14155 } 14156 14157 char tmp = string[index1]; 14158 string[index1] = string[index2]; 14159 string[index2] = tmp;; 14160 14161 return(string); 14162 } 14163 14164 14165 /** 14166 * slice String 14167 * return new string which is the string between start and end 14168 * negative indexes are allowed 14169 * 14170 * (copy substring from start to end) 14171 * 14172 * \param 14173 * string to slice 14174 * start: start index, must be in the string 14175 * end: end index, must be in the string after start 14176 * \return 14177 * new sliced string (you must free the pointer) 14178 * "" when start=end 14179 * NULL when start and end are not set correctly 14180 */ 14181 char *sliceS(const char *string, int64_t start, int64_t end) { 14182 char *s = NULL; 14183 int64_t len; 14184 14185 // sanity checks 14186 if (!string) { 14187 return(NULL); 14188 } 14189 14190 len = (int64_t)strlen(string); 14191 if (start > len) { 14192 return(NULL); 14193 } 14194 if (end > len) { 14195 end = len; 14196 } 14197 if (start <= -len) { 14198 start = -len; 14199 } 14200 if (end <= -len) { 14201 return(NULL); 14202 } 14203 if (start < 0) { 14204 start = len + start; 14205 } 14206 if (end <= 0) { 14207 end = len + end; 14208 } 14209 if (end < start) { 14210 return(NULL); 14211 } 14212 14213 if (start == end) { 14214 emptyS(s) 14215 } 14216 else { 14217 // start < end < len 14218 // copy range to a new string 14219 int64_t n; 14220 n = end - start; 14221 s = MALLOC((size_t)(n+1)); 14222 if (!s) { 14223 return(NULL);//LCOV_EXCL_LINE 14224 } 14225 s = strncpy(s, string+start, (size_t)n); 14226 s[n] = 0; 14227 } 14228 14229 return(s); 14230 } 14231 14232 /** 14233 * slice String 14234 * return string which is the string between start and end 14235 * negative indexes are allowed 14236 * 14237 * \param 14238 * string to slice (this parameter is reallocated) 14239 * start: start index, must be in the string 14240 * end: end index, must be in the string after start 14241 * \return 14242 * sliced string (you must free the pointer) 14243 * "" when start=end 14244 * NULL unchanged string when start and end are not set correctly 14245 */ 14246 char *iSliceS(char **string, int64_t start, int64_t end) { 14247 char *s = NULL; 14248 int64_t len; 14249 14250 // sanity checks 14251 if (!string || !*string) { 14252 return(NULL); 14253 } 14254 14255 len = (int64_t)strlen(*string); 14256 if (start > len) { 14257 free(*string); 14258 emptyS(*string); 14259 return(NULL); 14260 } 14261 if (end > len) { 14262 end = len; 14263 } 14264 if (start <= -len) { 14265 start = -len; 14266 } 14267 if (end <= -len) { 14268 free(*string); 14269 emptyS(*string); 14270 return(NULL); 14271 } 14272 if (start < 0) { 14273 start = len + start; 14274 } 14275 if (end <= 0) { 14276 end = len + end; 14277 } 14278 if (end < start) { 14279 free(*string); 14280 emptyS(*string); 14281 return(NULL); 14282 } 14283 14284 if (start == end) { 14285 emptyS(s); 14286 } 14287 else { 14288 // start < end < len 14289 // copy range to a new string 14290 int64_t n; 14291 n = end - start; 14292 s = MALLOC((size_t)(n+1)); 14293 if (!s) { 14294 return(NULL); 14295 } 14296 s = strncpy(s, (*string)+start, (size_t)n); 14297 s[n] = 0; 14298 } 14299 14300 free(*string); 14301 *string = s; 14302 return(s); 14303 } 14304 14305 /** 14306 * buffer slice String 14307 * return string which is the string between start and end 14308 * negative indexes are allowed 14309 * 14310 * \param 14311 * string to slice 14312 * start: start index, must be in the string 14313 * end: end index, must be in the string after start 14314 * \return 14315 * sliced string 14316 * "" when start=end 14317 * NULL unchanged string when start and end are not set correctly 14318 */ 14319 char *bSliceS(char *string, int64_t start, int64_t end) { 14320 int64_t len; 14321 14322 // sanity checks 14323 if (!string) { 14324 return(NULL); 14325 } 14326 14327 len = (int64_t)strlen(string); 14328 if (start > len) { 14329 bEmptyS(string); 14330 return(NULL); 14331 } 14332 if (end > len) { 14333 end = len; 14334 } 14335 if (start <= -len) { 14336 start = -len; 14337 } 14338 if (end <= -len) { 14339 bEmptyS(string); 14340 return(NULL); 14341 } 14342 if (start < 0) { 14343 start = len + start; 14344 } 14345 if (end <= 0) { 14346 end = len + end; 14347 } 14348 if (end < start) { 14349 bEmptyS(string); 14350 return(NULL); 14351 } 14352 14353 if (start == end) { 14354 bEmptyS(string); 14355 } 14356 else { 14357 // start < end < len 14358 // copy range to a new string 14359 int64_t n; 14360 n = end - start; 14361 if (start) { 14362 memmove(string, string+start, (size_t)n); 14363 } 14364 string[n] = 0; 14365 } 14366 14367 return(string); 14368 } 14369 14370 /** 14371 * buffer size slice String 14372 * return string which is the string between start and end 14373 * negative indexes are allowed 14374 * 14375 * \param 14376 * string to slice 14377 * \param 14378 * stringSize string buffer size 14379 * \param 14380 * start: start index, must be in the string 14381 * \param 14382 * end: end index, must be in the string after start 14383 * \return 14384 * sliced string 14385 * "" when start=end 14386 * NULL unchanged string when start and end are not set correctly 14387 */ 14388 char *bLSliceS(char *string, size_t stringSize, int64_t start, int64_t end) { 14389 int64_t len; 14390 14391 // sanity checks 14392 if (!string || !stringSize) { 14393 return(NULL); 14394 } 14395 14396 len = (int64_t)strlen(string); 14397 if ((size_t)len+1 > stringSize) { 14398 len = (int64_t)(stringSize - 1); 14399 } 14400 14401 // compute string length without NUL 14402 if (start > len) { 14403 bEmptyS(string); 14404 return(NULL); 14405 } 14406 if (end > len) { 14407 end = len; 14408 } 14409 if (start <= -len) { 14410 start = -len; 14411 } 14412 if (end <= -len) { 14413 bEmptyS(string); 14414 return(NULL); 14415 } 14416 if (start < 0) { 14417 start = len + start; 14418 } 14419 if (end <= 0) { 14420 end = len + end; 14421 } 14422 if (end < start) { 14423 bEmptyS(string); 14424 return(NULL); 14425 } 14426 14427 if (start == end) { 14428 bEmptyS(string); 14429 } 14430 else { 14431 // start < end < len 14432 // copy range to a new string 14433 int64_t n; 14434 n = end - start; 14435 if (start) { 14436 memmove(string, string+start, (size_t)n); 14437 } 14438 string[n] = 0; 14439 } 14440 14441 return(string); 14442 } 14443 14444 /** 14445 * Crop String 14446 * return a new string with characters from start and end in string 14447 * and delete characters from start to end in the original string 14448 * negative indexes are allowed 14449 * 14450 * \param 14451 * string 14452 * \param 14453 * start index, must be in the list 14454 * \param 14455 * end index, must be in the list 14456 * \return 14457 * new sliced string (you must free the pointer with free) 14458 * empty list when start=end 14459 * unchanged when list is empty 14460 * unchanged when list is NULL or when start and end are not set correctly 14461 * NULL error 14462 */ 14463 char *cropS(char *string, int64_t start, int64_t end) { 14464 char *l = NULL; 14465 int64_t len; 14466 14467 // sanity checks 14468 if (!string) { 14469 return(NULL); 14470 } 14471 14472 len = (int64_t)strlen(string); 14473 14474 if (start > len) { 14475 return(NULL); 14476 } 14477 if (end > len) { 14478 end = len; 14479 } 14480 if (start <= -len) { 14481 start = -len; 14482 } 14483 if (end <= -len) { 14484 return(NULL); 14485 } 14486 if (start < 0) { 14487 start = len + start; 14488 } 14489 if (end <= 0) { 14490 end = len + end; 14491 } 14492 if (end < start) { 14493 return(NULL); 14494 } 14495 14496 if (start < end) { 14497 // start < end < len 14498 int64_t n; 14499 n = end - start; 14500 l = MALLOC((size_t)(n+1) * sizeof(char)); 14501 if (!l) { 14502 return(NULL); 14503 } 14504 pErrorNULL(strLCpy(l, (size_t)(n+1) * sizeof(char), string+start)); 14505 memmove(string+start, string+end, (size_t)(len-end+1)); 14506 } 14507 else { 14508 // start = end, return empty string 14509 l = strdup(""); 14510 } 14511 14512 return(l); 14513 } 14514 14515 /** 14516 * Crop String 14517 * return a new string with characters from start and end in string 14518 * and delete characters from start to end in the original string 14519 * negative indexes are allowed 14520 * 14521 * \param 14522 * string 14523 * \param 14524 * start index, must be in the list 14525 * \param 14526 * end index, must be in the list 14527 * \return 14528 * new sliced string (you must free the pointer with free) 14529 * empty list when start=end 14530 * unchanged when list is empty 14531 * unchanged when list is NULL or when start and end are not set correctly 14532 * NULL error 14533 */ 14534 char *iCropS(char **string, int64_t start, int64_t end) { 14535 char *l = NULL; 14536 int64_t len; 14537 14538 // sanity checks 14539 if (!string || !*string) { 14540 return(NULL); 14541 } 14542 14543 len = (int64_t)strlen(*string); 14544 14545 if (start > len) { 14546 return(NULL); 14547 } 14548 if (end > len) { 14549 end = len; 14550 } 14551 if (start <= -len) { 14552 start = -len; 14553 } 14554 if (end <= -len) { 14555 return(NULL); 14556 } 14557 if (start < 0) { 14558 start = len + start; 14559 } 14560 if (end <= 0) { 14561 end = len + end; 14562 } 14563 if (end < start) { 14564 return(NULL); 14565 } 14566 14567 if (start < end) { 14568 // start < end < len 14569 int64_t n; 14570 n = end - start; 14571 l = MALLOC((size_t)(n+1) * sizeof(char)); 14572 if (!l) { 14573 return(NULL); 14574 } 14575 pErrorNULL(strLCpy(l, (size_t)(n+1) * sizeof(char), *string+start)); 14576 memmove(*string+start, *string+end, (size_t)(len-end+1)); 14577 } 14578 else { 14579 // start = end, return empty string 14580 l = strdup(""); 14581 } 14582 14583 return(l); 14584 } 14585 14586 char cropElemS(char *string, int64_t index) { 14587 int64_t len; 14588 14589 if (!string) { 14590 return(0); 14591 } 14592 14593 len = (int64_t)strlen(string); 14594 if (index >= len) { 14595 return(0); 14596 } 14597 if (index < -len) { 14598 return(0); 14599 } 14600 if (index < 0) { 14601 index = len + index; 14602 } 14603 14604 char r = *(string+index); 14605 14606 if (index == len-1) { 14607 string[len-1] = 0; 14608 } 14609 else { 14610 memmove(string+index, string+index+1, (size_t)(len - index)); 14611 } 14612 14613 return(r); 14614 } 14615 14616 char iCropElemS(char **string, int64_t index) { 14617 14618 if (!string) { 14619 return(0); 14620 } 14621 14622 return(cropElemS(*string, index)); 14623 } 14624 14625 /** 14626 * insert string in string at index 14627 * 14628 * return new string with toInsert at index 14629 * negative indexes are allowed 14630 * index -1 is the end of the array and is equivalent to index len 14631 * 14632 * \param 14633 * string 14634 * \param 14635 * index in string 14636 * \param 14637 * toInsert string 14638 * \return 14639 * new string (you must free the pointer) 14640 * NULL when string is NULL or invalid index 14641 */ 14642 char *insertS(const char *string, int64_t index, const char *toInsert) { 14643 char *r = NULL; 14644 int64_t len; 14645 14646 // sanity checks 14647 if (!string) { 14648 if (index || !toInsert) { 14649 return(NULL); 14650 } 14651 return(strdup(toInsert)); 14652 } 14653 if (!toInsert || isEmptyS(toInsert)) { 14654 return(strdup(string)); 14655 } 14656 14657 len = (int64_t)strlen(string); 14658 if (!len && index == -1) { 14659 // empty string, index -1 is equal to 0 14660 index = 0; 14661 } 14662 bool neg = false; 14663 if (index < 0) { 14664 neg = true; 14665 } 14666 14667 if (index > len) { 14668 return(NULL); 14669 } 14670 if (neg) { 14671 index++; 14672 } 14673 if (index < -len) { 14674 return(NULL); 14675 } 14676 if (neg) { 14677 index = len + index; 14678 } 14679 14680 14681 if (index == 0) { 14682 // insert at beginning 14683 return(catS(toInsert, string)); 14684 } 14685 14686 char *s1 = sliceS(string, 0, index); 14687 char *s2 = sliceS(string, index, 0); 14688 r = catS(s1, toInsert, s2); 14689 freeManyS(s1,s2); 14690 14691 return(r); 14692 } 14693 14694 /** 14695 * insert string in string at index and free toInsert when successful 14696 * 14697 * return new string with toInsert at index 14698 * negative indexes are allowed 14699 * index -1 is the end of the array and is equivalent to index len 14700 * 14701 * \param 14702 * string 14703 * \param 14704 * index in string 14705 * \param 14706 * toInsert string 14707 * \return 14708 * new string (you must free the pointer) 14709 * NULL when string is NULL or invalid index 14710 */ 14711 char *insertNFreeS(const char *string, int64_t index, char *toInsert) { 14712 char *r = NULL; 14713 int64_t len; 14714 14715 // sanity checks 14716 if (!string) { 14717 if (index) { 14718 return(NULL); 14719 } 14720 if (!toInsert) { 14721 return(NULL); 14722 } 14723 r = strdup(toInsert); 14724 free(toInsert); 14725 return(r); 14726 } 14727 14728 len = (int64_t)strlen(string); 14729 if (!len && index == -1) { 14730 // empty string, index -1 is equal to 0 14731 index = 0; 14732 } 14733 bool neg = false; 14734 if (index < 0) { 14735 neg = true; 14736 } 14737 14738 if (index > len) { 14739 return(NULL); 14740 } 14741 if (neg) { 14742 index++; 14743 } 14744 if (index < -len) { 14745 return(NULL); 14746 } 14747 if (neg) { 14748 index = len + index; 14749 } 14750 14751 14752 if (!toInsert || isEmptyS(toInsert)) { 14753 free(toInsert); 14754 return(strdup(string)); 14755 } 14756 14757 if (index == 0) { 14758 // insert at beginning 14759 r = catS(toInsert, string); 14760 free(toInsert); 14761 return(r); 14762 } 14763 14764 char *s1 = sliceS(string, 0, index); 14765 char *s2 = sliceS(string, index, 0); 14766 r = catS(s1, toInsert, s2); 14767 freeManyS(s1,s2, toInsert); 14768 14769 return(r); 14770 } 14771 14772 /** 14773 * insert string in string at index 14774 * 14775 * return string with toInsert at index 14776 * negative indexes are allowed 14777 * index -1 is the end of the array and is equivalent to index len 14778 * 14779 * \param 14780 * string (this parameter is reallocated) 14781 * \param 14782 * index in string 14783 * \param 14784 * toInsert string 14785 * \return 14786 * modified string (you must free the pointer) 14787 * NULL unchanged string when string is NULL or invalid index 14788 */ 14789 char *iInsertS(char **string, int64_t index, const char *toInsert) { 14790 char *r = NULL; 14791 int64_t len; 14792 14793 // sanity checks 14794 if (!string) { 14795 return(NULL); 14796 } 14797 if (!*string) { 14798 if (index) { 14799 return(NULL); 14800 } 14801 r = strdup(toInsert); 14802 *string = r; 14803 return(r); 14804 } 14805 14806 len = (int64_t)strlen(*string); 14807 14808 if (!len && index == -1) { 14809 // empty string, index -1 is equal to 0 14810 index = 0; 14811 } 14812 bool neg = false; 14813 if (index < 0) { 14814 neg = true; 14815 } 14816 14817 if (index > len) { 14818 return(NULL); 14819 } 14820 if (neg) { 14821 index++; 14822 } 14823 if (index < -len) { 14824 return(NULL); 14825 } 14826 if (neg) { 14827 index = len + index; 14828 } 14829 14830 14831 if (!toInsert || isEmptyS(toInsert)) { 14832 return(*string); 14833 } 14834 14835 if (index == 0) { 14836 // insert at beginning 14837 r = catS(toInsert, *string); 14838 } 14839 else { 14840 char *s1 = sliceS(*string, 0, index); 14841 char *s2 = sliceS(*string, index, 0); 14842 r = catS(s1, toInsert, s2); 14843 freeManyS(s1,s2); 14844 } 14845 14846 free(*string); 14847 *string = r; 14848 return(r); 14849 } 14850 14851 /** 14852 * insert string in string at index and free toInsert 14853 * 14854 * return string with toInsert at index 14855 * negative indexes are allowed 14856 * index -1 is the end of the array and is equivalent to index len 14857 * 14858 * \param 14859 * string (this parameter is reallocated) 14860 * \param 14861 * index in string 14862 * \param 14863 * toInsert string 14864 * \return 14865 * modified string (you must free the pointer) 14866 * NULL unchanged string when string is NULL or invalid index 14867 */ 14868 char *iInsertNFreeS(char **string, int64_t index, char *toInsert) { 14869 char *r = NULL; 14870 int64_t len; 14871 14872 // sanity checks 14873 if (!string) { 14874 return(NULL); 14875 } 14876 if (!*string) { 14877 if (index) { 14878 return(NULL); 14879 } 14880 r = strdup(toInsert); 14881 free(toInsert); 14882 *string = r; 14883 return(r); 14884 } 14885 14886 len = (int64_t)strlen(*string); 14887 14888 if (!len && index == -1) { 14889 // empty string, index -1 is equal to 0 14890 index = 0; 14891 } 14892 bool neg = false; 14893 if (index < 0) { 14894 neg = true; 14895 } 14896 14897 if (index > len) { 14898 return(NULL); 14899 } 14900 if (neg) { 14901 index++; 14902 } 14903 if (index < -len) { 14904 return(NULL); 14905 } 14906 if (neg) { 14907 index = len + index; 14908 } 14909 14910 14911 if (!toInsert || isEmptyS(toInsert)) { 14912 free(toInsert); 14913 return(*string); 14914 } 14915 14916 if (index == 0) { 14917 // insert at beginning 14918 r = catS(toInsert, *string); 14919 } 14920 else { 14921 char *s1 = sliceS(*string, 0, index); 14922 char *s2 = sliceS(*string, index, 0); 14923 r = catS(s1, toInsert, s2); 14924 freeManyS(s1,s2); 14925 } 14926 free(toInsert); 14927 14928 free(*string); 14929 *string = r; 14930 return(r); 14931 } 14932 14933 /** 14934 * buffer insert string in string at index 14935 * 14936 * return string with toInsert at index 14937 * negative indexes are allowed 14938 * index -1 is the end of the array and is equivalent to index len 14939 * 14940 * \param 14941 * string 14942 * \param 14943 * index in string 14944 * \param 14945 * toInsert string 14946 * \return 14947 * modified string 14948 * NULL unchanged string when string is NULL or invalid index 14949 */ 14950 char *bInsertS(char *string, int64_t index, const char *toInsert) { 14951 int64_t len; 14952 14953 // sanity checks 14954 if (!string) { 14955 return(NULL); 14956 } 14957 len = (int64_t)strlen(string); 14958 14959 if (!len && index == -1) { 14960 // empty string, index -1 is equal to 0 14961 index = 0; 14962 } 14963 bool neg = false; 14964 if (index < 0) { 14965 neg = true; 14966 } 14967 14968 if (index > len) { 14969 return(NULL); 14970 } 14971 if (neg) { 14972 index++; 14973 } 14974 if (index < -len) { 14975 return(NULL); 14976 } 14977 if (neg) { 14978 index = len + index; 14979 } 14980 14981 14982 if (!toInsert || isEmptyS(toInsert)) { 14983 return(string); 14984 } 14985 14986 if (index == 0) { 14987 // insert at beginning 14988 char *s = alloca((size_t)(len+1));; 14989 strcpy(s, string); 14990 pErrorNULL(bCatS(string, toInsert, s)); 14991 } 14992 else { 14993 char *s1 = alloca((size_t)(index+1));; 14994 pErrorNULL(strLCpy(s1, (size_t)(index+1), string)); 14995 char *s2 = alloca((size_t)(len-index+1));; 14996 strcpy(s2, string+index); 14997 pErrorNULL(bCatS(string, s1, toInsert, s2)); 14998 } 14999 return(string); 15000 } 15001 15002 /** 15003 * buffer size insert string in string at index 15004 * 15005 * return string with toInsert at index 15006 * negative indexes are allowed 15007 * index -1 is the end of the array and is equivalent to index len 15008 * 15009 * \param 15010 * string 15011 * \param 15012 * index in string 15013 * \param 15014 * toInsert string 15015 * \return 15016 * modified string 15017 * NULL unchanged string when string is NULL or invalid index 15018 */ 15019 char *bLInsertS(char *string, size_t stringSize, int64_t index, const char *toInsert) { 15020 int64_t len; 15021 15022 // sanity checks 15023 if (!string) { 15024 return(NULL); 15025 } 15026 15027 if (!stringSize) { 15028 // string size is 0 - no change 15029 return(string); 15030 } 15031 15032 len = (int64_t)strlen(string); 15033 15034 if (!len && index == -1) { 15035 // empty string, index -1 is equal to 0 15036 index = 0; 15037 } 15038 bool neg = false; 15039 if (index < 0) { 15040 neg = true; 15041 } 15042 15043 if (index > len) { 15044 return(NULL); 15045 } 15046 if (neg) { 15047 index++; 15048 } 15049 if (index < -len) { 15050 return(NULL); 15051 } 15052 if (neg) { 15053 index = len + index; 15054 } 15055 15056 15057 if (!toInsert || isEmptyS(toInsert)) { 15058 return(string); 15059 } 15060 15061 if (index == 0) { 15062 // insert at beginning 15063 char *s = alloca((size_t)(len+1));; 15064 strcpy(s, string); 15065 pErrorNULL(bLCatS(string, stringSize, toInsert, s)); 15066 } 15067 else { 15068 char *s1 = alloca((size_t)(index+1));; 15069 pErrorNULL(strLCpy(s1, (size_t)(index+1), string)); 15070 char *s2 = alloca((size_t)(len-index+1));; 15071 strcpy(s2, string+index); 15072 pErrorNULL(bLCatS(string, stringSize, s1, toInsert, s2)); 15073 } 15074 return(string); 15075 } 15076 15077 /** 15078 * inject a char in string at index 15079 * 15080 * return new string with toInject at index 15081 * negative indexes are allowed 15082 * index -1 is the end of the array and is equivalent to index len 15083 * 15084 * \param 15085 * string 15086 * \param 15087 * index in string 15088 * \param 15089 * toInject char 15090 * \return 15091 * new string (you must free the pointer) 15092 * NULL when string is NULL or invalid index 15093 */ 15094 char *injectS(const char *string, int64_t index, char toInject) { 15095 char *r = NULL; 15096 int64_t len; 15097 15098 // sanity checks 15099 if (!string) { 15100 if (index) { 15101 return(NULL); 15102 } 15103 charToS(inject, toInject); 15104 return(strdup(inject)); 15105 } 15106 15107 len = (int64_t)strlen(string); 15108 15109 if (!len && index == -1) { 15110 // empty string, index -1 is equal to 0 15111 index = 0; 15112 } 15113 bool neg = false; 15114 if (index < 0) { 15115 neg = true; 15116 } 15117 15118 if (index > len) { 15119 return(NULL); 15120 } 15121 if (neg) { 15122 index++; 15123 } 15124 if (index < -len) { 15125 return(NULL); 15126 } 15127 if (neg) { 15128 index = len + index; 15129 } 15130 15131 15132 charToS(inject, toInject); 15133 15134 if (index == 0) { 15135 // inject at beginning 15136 return(catS(inject, string)); 15137 } 15138 15139 char *s1 = sliceS(string, 0, index); 15140 char *s2 = sliceS(string, index, 0); 15141 r = catS(s1, inject, s2); 15142 freeManyS(s1,s2); 15143 15144 return(r); 15145 } 15146 15147 /** 15148 * inject a char in string at index 15149 * 15150 * return string with toInject at index 15151 * negative indexes are allowed 15152 * index -1 is the end of the array and is equivalent to index len 15153 * 15154 * \param 15155 * string (this parameter is reallocated) 15156 * \param 15157 * index in string 15158 * \param 15159 * toInject char 15160 * \return 15161 * modified string (you must free the pointer) 15162 * NULL unchanged string when string is NULL or invalid index 15163 */ 15164 char *iInjectS(char **string, int64_t index, char toInject) { 15165 char *r = NULL; 15166 int64_t len; 15167 15168 // sanity checks 15169 if (!string) { 15170 return(NULL); 15171 } 15172 if (!*string) { 15173 if (index) { 15174 return(NULL); 15175 } 15176 charToS(inject, toInject); 15177 *string = strdup(inject); 15178 return(*string); 15179 } 15180 15181 len = (int64_t)strlen(*string); 15182 15183 if (!len && index == -1) { 15184 // empty string, index -1 is equal to 0 15185 index = 0; 15186 } 15187 bool neg = false; 15188 if (index < 0) { 15189 neg = true; 15190 } 15191 15192 if (index > len) { 15193 return(NULL); 15194 } 15195 if (neg) { 15196 index++; 15197 } 15198 if (index < -len) { 15199 return(NULL); 15200 } 15201 if (neg) { 15202 index = len + index; 15203 } 15204 15205 15206 charToS(inject, toInject); 15207 15208 if (index == 0) { 15209 // inject at beginning 15210 r = catS(inject, *string); 15211 } 15212 else { 15213 char *s1 = sliceS(*string, 0, index); 15214 char *s2 = sliceS(*string, index, 0); 15215 r = catS(s1, inject, s2); 15216 freeManyS(s1,s2); 15217 } 15218 15219 free(*string); 15220 *string = r; 15221 return(r); 15222 } 15223 15224 /** 15225 * buffer inject a char in string at index 15226 * 15227 * return string with toInject at index 15228 * negative indexes are allowed 15229 * index -1 is the end of the array and is equivalent to index len 15230 * 15231 * \param 15232 * string 15233 * \param 15234 * index in string 15235 * \param 15236 * toInject char 15237 * \return 15238 * modified string 15239 * NULL unchanged string when string is NULL or invalid index 15240 */ 15241 char *bInjectS(char *string, int64_t index, char toInject) { 15242 int64_t len; 15243 15244 // sanity checks 15245 if (!string) { 15246 return(NULL); 15247 } 15248 15249 len = (int64_t)strlen(string); 15250 15251 if (!len && index == -1) { 15252 // empty string, index -1 is equal to 0 15253 index = 0; 15254 } 15255 bool neg = false; 15256 if (index < 0) { 15257 neg = true; 15258 } 15259 15260 if (index > len) { 15261 return(NULL); 15262 } 15263 if (neg) { 15264 index++; 15265 } 15266 if (index < -len) { 15267 return(NULL); 15268 } 15269 if (neg) { 15270 index = len + index; 15271 } 15272 15273 15274 charToS(inject, toInject); 15275 15276 if (index == 0) { 15277 // inject at beginning 15278 pErrorNULL(bPrependS(string, inject)); 15279 } 15280 else { 15281 char *s1 = alloca((size_t)(index+1));; 15282 pErrorNULL(strLCpy(s1, (size_t)(index+1), string)); 15283 char *s2 = alloca((size_t)(len-index+1));; 15284 strcpy(s2, string+index); 15285 pErrorNULL(bCatS(string, s1, inject, s2)); 15286 } 15287 return(string); 15288 } 15289 15290 /** 15291 * buffer size inject a char in string at index 15292 * 15293 * return string with toInject at index 15294 * negative indexes are allowed 15295 * index -1 is the end of the array and is equivalent to index len 15296 * 15297 * \param 15298 * string 15299 * \param 15300 * index in string 15301 * \param 15302 * toInject char 15303 * \return 15304 * modified string 15305 * NULL unchanged string when string is NULL or invalid index 15306 */ 15307 char *bLInjectS(char *string, size_t stringSize, int64_t index, char toInject) { 15308 int64_t len; 15309 15310 // sanity checks 15311 if (!string) { 15312 return(NULL); 15313 } 15314 15315 if (!stringSize) { 15316 // size 0 - no change 15317 return(string); 15318 } 15319 15320 len = (int64_t)strlen(string); 15321 15322 if (!len && index == -1) { 15323 // empty string, index -1 is equal to 0 15324 index = 0; 15325 } 15326 bool neg = false; 15327 if (index < 0) { 15328 neg = true; 15329 } 15330 15331 if (index > len) { 15332 return(NULL); 15333 } 15334 if (neg) { 15335 index++; 15336 } 15337 if (index < -len) { 15338 return(NULL); 15339 } 15340 if (neg) { 15341 index = len + index; 15342 } 15343 15344 15345 charToS(inject, toInject); 15346 15347 if (index == 0) { 15348 // inject at beginning 15349 pErrorNULL(bLPrependS(string, stringSize, inject)); 15350 } 15351 else { 15352 char *s1 = alloca((size_t)(index+1));; 15353 pErrorNULL(strLCpy(s1, (size_t)(index+1), string)); 15354 char *s2 = alloca((size_t)(len-index+1));; 15355 strcpy(s2, string+index); 15356 pErrorNULL(bLCatS(string, stringSize, s1, inject, s2)); 15357 } 15358 return(string); 15359 } 15360 15361 /** 15362 * delete string 15363 * 15364 * return new string without the string between start and end 15365 * negative indexes are allowed 15366 * 15367 * \param 15368 * string to delete 15369 * \param 15370 * start: start index, must be in the string 15371 * \param 15372 * end: end index, must be in the string after start 15373 * \return 15374 * new sliced string (you must free the pointer) 15375 * new identical string when start=end or when start and end are not set correctly 15376 * NULL when input string is NULL or when malloc failed or when end is under start 15377 */ 15378 char *delS(const char *string, int64_t start, int64_t end) { 15379 char *s = NULL; 15380 int64_t len; 15381 15382 // sanity checks 15383 if (!string) { 15384 return(NULL); 15385 } 15386 15387 len = (int64_t)strlen(string); 15388 15389 if (start >= len) { 15390 start = len; 15391 } 15392 if (end > len) { 15393 end = len; 15394 } 15395 if (start <= -len) { 15396 start = -len; 15397 } 15398 if (end <= -len) { 15399 end = -len; 15400 } 15401 if (start < 0) { 15402 start = len + start; 15403 } 15404 if (end <= 0) { 15405 end = len + end; 15406 } 15407 if (end < start) { 15408 return(NULL); 15409 } 15410 15411 if (start == end) { 15412 return(strdup(string)); 15413 } 15414 15415 // start < end < len 15416 // copy range to a new string 15417 int64_t n; 15418 n = end - start; 15419 s = MALLOC((size_t)(len-n+1)); 15420 if (!s) { 15421 return(NULL);//LCOV_EXCL_LINE 15422 } 15423 strncpy(s, string, (size_t)start); 15424 strncpy(s+start, string+start+n, (size_t)(len-n-start)); 15425 s[len-n] = 0; 15426 15427 return(s); 15428 } 15429 15430 /** 15431 * delete string 15432 * 15433 * return string without the string between start and end 15434 * negative indexes are allowed 15435 * 15436 * \param 15437 * string to delete (this parameter is reallocated) 15438 * \param 15439 * start: start index, must be in the string 15440 * \param 15441 * end: end index, must be in the string after start 15442 * \return 15443 * sliced string (you must free the pointer) 15444 * unchanged string when start=end 15445 * NULL when start and end are not set correctly 15446 * or when input string is NULL or when malloc failed or when end is under start 15447 */ 15448 char *iDelS(char **string, int64_t start, int64_t end) { 15449 char *s = NULL; 15450 int64_t len; 15451 15452 // sanity checks 15453 if (!string || !*string) { 15454 return(NULL); 15455 } 15456 15457 len = (int64_t)strlen(*string); 15458 15459 if (start >= len) { 15460 start = len; 15461 } 15462 if (end > len) { 15463 end = len; 15464 } 15465 if (start <= -len) { 15466 start = -len; 15467 } 15468 if (end <= -len) { 15469 end = -len; 15470 } 15471 if (start < 0) { 15472 start = len + start; 15473 } 15474 if (end <= 0) { 15475 end = len + end; 15476 } 15477 if (end < start) { 15478 return(NULL); 15479 } 15480 15481 if (start == end) { 15482 return(*string); 15483 } 15484 15485 // start < end < len 15486 // copy range to a new string 15487 int64_t n; 15488 n = end - start; 15489 s = MALLOC((size_t)(len-n+1)); 15490 if (!s) { 15491 return(NULL); 15492 } 15493 strncpy(s, *string, (size_t)start); 15494 strncpy(s+start, (*string)+start+n, (size_t)(len-n-start)); 15495 s[len-n] = 0; 15496 15497 free(*string); 15498 *string = s; 15499 return(s); 15500 } 15501 15502 /** 15503 * buffer delete string 15504 * 15505 * return string without the string between start and end 15506 * negative indexes are allowed 15507 * 15508 * \param 15509 * string to delete 15510 * \param 15511 * start: start index, must be in the string 15512 * \param 15513 * end: end index, must be in the string after start 15514 * \return 15515 * sliced string 15516 * unchanged string when start=end 15517 * NULL when start and end are not set correctly 15518 * or when input string is NULL or when malloc failed or when end is under start 15519 */ 15520 char *bDelS(char *string, int64_t start, int64_t end) { 15521 int64_t len; 15522 15523 // sanity checks 15524 if (!string) { 15525 return(NULL); 15526 } 15527 15528 len = (int64_t)strlen(string); 15529 15530 if (start >= len) { 15531 start = len; 15532 } 15533 if (end > len) { 15534 end = len; 15535 } 15536 if (start <= -len) { 15537 start = -len; 15538 } 15539 if (end <= -len) { 15540 end = -len; 15541 } 15542 if (start < 0) { 15543 start = len + start; 15544 } 15545 if (end <= 0) { 15546 end = len + end; 15547 } 15548 if (end < start) { 15549 return(NULL); 15550 } 15551 15552 if (start == end) { 15553 return(string); 15554 } 15555 15556 // start < end < len 15557 // copy range to a new string 15558 int64_t n; 15559 n = end - start; 15560 memmove(string+start, string+start+n, (size_t)(len-n-start)); 15561 string[len-n] = 0; 15562 15563 return(string); 15564 } 15565 15566 /** 15567 * buffer size delete string 15568 * 15569 * return string without the string between start and end 15570 * negative indexes are allowed 15571 * 15572 * \param 15573 * string to delete 15574 * \param 15575 * stringSize string buffer size 15576 * \param 15577 * start: start index, must be in the string 15578 * \param 15579 * end: end index, must be in the string after start 15580 * \return 15581 * sliced string 15582 * unchanged string when start=end 15583 * NULL when start and end are not set correctly 15584 * or when input string is NULL or when malloc failed or when end is under start 15585 */ 15586 char *bLDelS(char *string, size_t stringSize, int64_t start, int64_t end) { 15587 int64_t len; 15588 15589 // sanity checks 15590 if (!string || !stringSize) { 15591 return(NULL); 15592 } 15593 15594 len = (int64_t)strlen(string); 15595 if ((size_t)len+1 > stringSize) { 15596 len = (int64_t)(stringSize - 1); 15597 } 15598 15599 // compute string length without NUL 15600 if (start >= (int64_t)len) { 15601 start = len; 15602 } 15603 if (end > (int64_t)len) { 15604 end = len; 15605 } 15606 if (start <= -(int64_t)len) { 15607 start = -len; 15608 } 15609 if (end <= -(int64_t)len) { 15610 end = -len; 15611 } 15612 if (start < 0) { 15613 start = len + start; 15614 } 15615 if (end <= 0) { 15616 end = len + end; 15617 } 15618 if (end < start) { 15619 return(NULL); 15620 } 15621 15622 if (start == end) { 15623 return(string); 15624 } 15625 15626 // start < end < len 15627 // copy range to a new string 15628 int64_t n; 15629 n = end - start; 15630 memmove(string+start, string+start+n, (size_t)(len-n-start)); 15631 string[len-n] = 0; 15632 15633 return(string); 15634 } 15635 15636 /** 15637 * delete element/character string 15638 * 15639 * return new string without the character at given index 15640 * negative indexes are allowed 15641 * 15642 * \param 15643 * string to delete 15644 * \param 15645 * index: must be in the string, -1 is the last character in the string 15646 * \return 15647 * new string (you must free the pointer) 15648 * NULL when input string is NULL or when malloc failed 15649 */ 15650 char *delElemS(const char *string, int64_t index) { 15651 char *s = NULL; 15652 int64_t len; 15653 15654 if (!string) { 15655 return(NULL); 15656 } 15657 15658 len = (int64_t)strlen(string); 15659 if (index >= len) { 15660 return(NULL); 15661 } 15662 if (index < -len) { 15663 return(NULL); 15664 } 15665 if (index < 0) { 15666 index = len + index; 15667 } 15668 15669 s = MALLOC((size_t)(len-1+1)); 15670 if (!s) { 15671 return(NULL);//LCOV_EXCL_LINE 15672 } 15673 strncpy(s, string, (size_t)index); 15674 strncpy(s+index, string+index+1, (size_t)(len-1-index)); 15675 s[len-1] = 0; 15676 return(s); 15677 } 15678 15679 /** 15680 * delete element/character string 15681 * 15682 * return string without the character at given index 15683 * negative indexes are allowed 15684 * 15685 * \param 15686 * string to delete (this parameter is reallocated) 15687 * \param 15688 * index: must be in the string, -1 is the last character in the string 15689 * \return 15690 * new string (you must free the pointer) 15691 * NULL when input string is NULL or when malloc failed 15692 */ 15693 char *iDelElemS(char **string, int64_t index) { 15694 char *s = NULL; 15695 int64_t len; 15696 15697 // sanity checks 15698 if (!string || !*string) { 15699 return(NULL); 15700 } 15701 15702 len = (int64_t)strlen(*string); 15703 if (index >= len) { 15704 return(NULL); 15705 } 15706 if (index < -len) { 15707 return(NULL); 15708 } 15709 if (index < 0) { 15710 index = len + index; 15711 } 15712 15713 s = MALLOC((size_t)(len-1+1)); 15714 if (!s) { 15715 return(NULL);//LCOV_EXCL_LINE 15716 } 15717 strncpy(s, *string, (size_t)index); 15718 strncpy(s+index, *string+index+1, (size_t)(len-1-index)); 15719 s[len-1] = 0; 15720 15721 free(*string); 15722 *string = s; 15723 return(s); 15724 } 15725 15726 /** 15727 * buffer delete element/character string 15728 * 15729 * return string without the character at given index 15730 * negative indexes are allowed 15731 * 15732 * \param 15733 * string to delete 15734 * \param 15735 * index: must be in the string, -1 is the last character in the string 15736 * \return 15737 * string with one less character 15738 * NULL when input string is NULL or when malloc failed 15739 */ 15740 char *bDelElemS(char *string, int64_t index) { 15741 int64_t len; 15742 15743 // sanity checks 15744 if (!string) { 15745 return(NULL); 15746 } 15747 15748 len = (int64_t)strlen(string); 15749 if (index >= len) { 15750 return(NULL); 15751 } 15752 if (index < -len) { 15753 return(NULL); 15754 } 15755 if (index < 0) { 15756 index = len + index; 15757 } 15758 15759 memmove(string+index, string+index+1, (size_t)(len-1-index)); 15760 string[len-1] = 0; 15761 15762 return(string); 15763 } 15764 15765 /** 15766 * buffer size delete element/character string 15767 * 15768 * return string without the character at given index 15769 * negative indexes are allowed 15770 * 15771 * \param 15772 * string to delete 15773 * \param 15774 * stringSize string buffer size 15775 * \param 15776 * index: must be in the string, -1 is the last character in the string 15777 * \return 15778 * string with one less character 15779 * NULL when input string is NULL or when malloc failed 15780 */ 15781 char *bLDelElemS(char *string, size_t stringSize, int64_t index) { 15782 int64_t len; 15783 15784 // sanity checks 15785 if (!string || !stringSize) { 15786 return(NULL); 15787 } 15788 15789 len = (int64_t)strlen(string); 15790 if ((size_t)len+1 > stringSize) { 15791 len = (int64_t)(stringSize - 1); 15792 } 15793 15794 // compute string length without NUL 15795 if (index >= (int64_t)len) { 15796 return(NULL); 15797 } 15798 if (index < -(int64_t)len) { 15799 return(NULL); 15800 } 15801 if (index < 0) { 15802 index = (int64_t)len + index; 15803 } 15804 15805 memmove(string+index, string+index+1, (size_t)(len-1-index)); 15806 string[len-1] = 0; 15807 15808 return(string); 15809 } 15810 15811 /** 15812 * find String 15813 * 15814 * \param 15815 * string 15816 * \param 15817 * needle: string to find 15818 * \return 15819 * pointer to first occurence of needle in string 15820 * NULL when needle is not found 15821 * NULL when string or needle are NULL 15822 */ 15823 char *findS(const char *string, const char *needle) { 15824 15825 // sanity checks 15826 if (!string || !needle) { 15827 return(NULL); 15828 } 15829 return(strstr(string, needle)); 15830 } 15831 15832 char *findCharS(const char *string, char c) { 15833 15834 // sanity checks 15835 if (!string) { 15836 return(NULL); 15837 } 15838 return(strchr(string, c)); 15839 } 15840 15841 /** 15842 * indexOf String 15843 * relative to start 15844 * 15845 * \param 15846 * string 15847 * \param 15848 * needle: string to find 15849 * \return 15850 * index of first occurence of needle in string 15851 * -1 when needle is not found 15852 * -1 when string or needle are NULL 15853 */ 15854 ssize_t indexOfS(const char *string, const char *needle) { 15855 15856 char *r = findS(string, needle); 15857 if (!r) { 15858 return(-1); 15859 } 15860 return((ssize_t)(r - string)); 15861 } 15862 15863 ssize_t indexOfCharS(const char *string, char c) { 15864 15865 char *r = findCharS(string, c); 15866 if (!r) { 15867 return(-1); 15868 } 15869 return((ssize_t)(r - string)); 15870 } 15871 15872 /** 15873 * has String 15874 * 15875 * \param 15876 * string 15877 * \param 15878 * needle: string to find 15879 * \return 15880 * true when needle is in string 15881 * false when needle is not found 15882 * false when string or needle are NULL 15883 */ 15884 bool hasS(const char *string, const char *needle) { 15885 15886 // sanity checks 15887 if (!string || !needle) { 15888 return(false); 15889 } 15890 15891 if (!strstr(string, needle)) { 15892 return(false); 15893 } 15894 return(true); 15895 } 15896 15897 bool hasCharS(const char *string, char c) { 15898 15899 // sanity checks 15900 if (!string) { 15901 return(false); 15902 } 15903 if (!strchr(string, c)) { 15904 return(false); 15905 } 15906 return(true); 15907 } 15908 15909 /** 15910 * ignore case Find String 15911 * 15912 * \param 15913 * string 15914 * \param 15915 * needle: string to find 15916 * \return 15917 * pointer to first occurence of needle in string 15918 * NULL when needle is not found 15919 * NULL when string or needle are NULL 15920 */ 15921 char *icFindS(const char *string, const char *needle) { 15922 15923 // sanity checks 15924 if (!string || !needle) { 15925 return(NULL); 15926 } 15927 return(strcasestr(string, needle)); 15928 } 15929 15930 char *icFindCharS(const char *string, char c) { 15931 15932 // sanity checks 15933 if (!string) { 15934 return(NULL); 15935 } 15936 if (c == 0) { 15937 // include terminating '\0' in comparison 15938 // like findCharS 15939 return(strchr(string, c)); 15940 } 15941 charToS(s, c); 15942 return(icFindS(string, s)); 15943 } 15944 15945 /** 15946 * ignore case indexOf String 15947 * relative to start 15948 * 15949 * \param 15950 * string 15951 * \param 15952 * needle: string to find 15953 * \return 15954 * index of first occurence of needle in string 15955 * -1 when needle is not found 15956 * -1 when string or needle are NULL 15957 */ 15958 ssize_t icIndexOfS(const char *string, const char *needle) { 15959 15960 char *r = icFindS(string, needle); 15961 if (!r) { 15962 return(-1); 15963 } 15964 return((ssize_t)(r - string)); 15965 } 15966 15967 ssize_t icIndexOfCharS(const char *string, char c) { 15968 15969 char *r = icFindCharS(string, c); 15970 if (!r) { 15971 return(-1); 15972 } 15973 return((ssize_t)(r - string)); 15974 } 15975 15976 /** 15977 * ignore case has String 15978 * 15979 * \param 15980 * string 15981 * \param 15982 * needle: string to find 15983 * \return 15984 * true when needle is in string 15985 * false when needle is not found 15986 * false when string or needle are NULL 15987 */ 15988 bool icHasS(const char *string, const char *needle) { 15989 15990 // sanity checks 15991 if (!string || !needle) { 15992 return(false); 15993 } 15994 15995 if (!strcasestr(string, needle)) { 15996 return(false); 15997 } 15998 return(true); 15999 } 16000 16001 bool icHasCharS(const char *string, char c) { 16002 16003 // sanity checks 16004 if (!string) { 16005 return(false); 16006 } 16007 charToS(s,c); 16008 return(icHasS(string, s)); 16009 } 16010 16011 /** 16012 * token in String 16013 * 16014 * parse string into a sequence of tokens delimited by the ENTIRE DELIM string 16015 * work like strtok_r from c stdlib 16016 * (for strtok_r, when delim has multiple characters, each character is a delimiter) 16017 * 16018 * on first call s is the string to parse, optionally initialize *saveptr to NULL 16019 * on next calls, s should be NULL 16020 * 16021 * \param 16022 * s string to parse, the s string is modified 16023 * \param 16024 * delim string 16025 * \return 16026 * token 16027 * *saveptr is set to NULL when the last token is found 16028 */ 16029 char *tokS(char *s, const char *delim, char **saveptr) { 16030 char *r = NULL; 16031 16032 // sanity checks 16033 if (!delim) { 16034 return(NULL); 16035 } 16036 if (s) { 16037 *saveptr = s; 16038 } 16039 else if (!*saveptr) { 16040 return(NULL); 16041 } 16042 r = *saveptr; 16043 *saveptr = findS(*saveptr, delim); 16044 if (*saveptr) { 16045 // delimiter is found 16046 **saveptr = 0; 16047 // shift start of working string after the delimiter 16048 *saveptr += strlen(delim); 16049 } 16050 return(r); 16051 } 16052 16053 /** 16054 * ignore case token in String 16055 * 16056 * parse string into a sequence of tokens delimited by the ENTIRE DELIM string 16057 * work like strtok_r from c stdlib 16058 * (for strtok_r, when delim has multiple characters, each character is a delimiter) 16059 * 16060 * on first call s is the string to parse, optionally initialize *saveptr to NULL 16061 * on next calls, s should be NULL 16062 * 16063 * \param 16064 * s string to parse, the s string is modified 16065 * \param 16066 * delim string 16067 * \return 16068 * token 16069 * *saveptr is set to NULL when the last token is found 16070 */ 16071 char *icTokS(char *s, const char *delim, char **saveptr) { 16072 char *r = NULL; 16073 16074 // sanity checks 16075 if (!delim) { 16076 return(NULL); 16077 } 16078 if (s) { 16079 *saveptr = s; 16080 } 16081 else if (!*saveptr) { 16082 return(NULL); 16083 } 16084 r = *saveptr; 16085 *saveptr = icFindS(*saveptr, delim); 16086 if (*saveptr) { 16087 // delimiter is found 16088 **saveptr = 0; 16089 // shift start of working string after the delimiter 16090 *saveptr += strlen(delim); 16091 } 16092 return(r); 16093 } 16094 16095 16096 16097 16098 // 16099 // UTF-8 string functions 16100 // 16101 // UNICODE v10.0 16102 // 16103 16104 /** 16105 * character length of UTF-8 string 16106 * 16107 * string is not checked for validity 16108 */ 16109 size_t lenUTF8(const char *s) { 16110 size_t r = 0;; 16111 16112 if (!s) { 16113 return(0); 16114 } 16115 while (*s) { 16116 r += (*s++ & 0xC0) != 0x80; 16117 } 16118 return(r); 16119 } 16120 16121 /** 16122 * buffer character length of UTF-8 string 16123 * 16124 * string is not checked for validity 16125 * 16126 * bLLenUTF8 checks at most maxSize bytes 16127 */ 16128 size_t bLLenUTF8(const char *s, size_t maxSize) { 16129 size_t r = 0;; 16130 16131 if (!s) { 16132 return(0); 16133 } 16134 16135 const char *t = s; 16136 while (*s && ((size_t)(s-t)+1 < maxSize)) { 16137 r += (*s++ & 0xC0) != 0x80; 16138 } 16139 return(r); 16140 } 16141 16142 16143 // https://stackoverflow.com/questions/1031645/how-to-detect-utf-8-in-plain-c/43338168#43338168 16144 // christoph's answer 16145 16146 /** 16147 * is UTF-8 string 16148 * 16149 * check if string is a valid UTF-8 string 16150 * 16151 * \param 16152 * string UTF-8 encoded string 16153 * \return 16154 * true string is valid UTF-8 16155 * false string is invalid UTF-8 16156 */ 16157 bool isUTF8(const char * string) { 16158 16159 if (!string) { 16160 return(false); 16161 } 16162 16163 const unsigned char * bytes = (const unsigned char *)string; 16164 while (*bytes) { 16165 // ASCII 16166 // use bytes[0] <= 0x7F to allow ASCII control characters 16167 if (bytes[0] == 0x09 || bytes[0] == 0x0A || bytes[0] == 0x0D || (0x20 <= bytes[0] && bytes[0] <= 0x7E)) { 16168 bytes += 1; 16169 continue; 16170 } 16171 16172 // non-overlong 2-byte 16173 if ((0xC2 <= bytes[0] && bytes[0] <= 0xDF) && (0x80 <= bytes[1] && bytes[1] <= 0xBF)) { 16174 bytes += 2; 16175 continue; 16176 } 16177 16178 // excluding overlongs 16179 // straight 3-byte 16180 // excluding surrogates 16181 if ((bytes[0] == 0xE0 && (0xA0 <= bytes[1] && bytes[1] <= 0xBF) && (0x80 <= bytes[2] && bytes[2] <= 0xBF)) || (((0xE1 <= bytes[0] && bytes[0] <= 0xEC) || bytes[0] == 0xEE || bytes[0] == 0xEF) && (0x80 <= bytes[1] && bytes[1] <= 0xBF) && (0x80 <= bytes[2] && bytes[2] <= 0xBF)) || (bytes[0] == 0xED && (0x80 <= bytes[1] && bytes[1] <= 0x9F) && (0x80 <= bytes[2] && bytes[2] <= 0xBF))) { 16182 bytes += 3; 16183 continue; 16184 } 16185 16186 // planes 1-3 16187 // planes 4-15 16188 // plane 16 16189 if ((bytes[0] == 0xF0 && (0x90 <= bytes[1] && bytes[1] <= 0xBF) && (0x80 <= bytes[2] && bytes[2] <= 0xBF) && (0x80 <= bytes[3] && bytes[3] <= 0xBF)) || ((0xF1 <= bytes[0] && bytes[0] <= 0xF3) && (0x80 <= bytes[1] && bytes[1] <= 0xBF) && (0x80 <= bytes[2] && bytes[2] <= 0xBF) && (0x80 <= bytes[3] && bytes[3] <= 0xBF)) || (bytes[0] == 0xF4 && (0x80 <= bytes[1] && bytes[1] <= 0x8F) && (0x80 <= bytes[2] && bytes[2] <= 0xBF) && (0x80 <= bytes[3] && bytes[3] <= 0xBF))) { 16190 bytes += 4; 16191 continue; 16192 } 16193 16194 return(false); 16195 } 16196 16197 return(true); 16198 } 16199 16200 /** 16201 * buffer length is UTF-8 string 16202 * 16203 * check if string is a valid UTF-8 string 16204 * 16205 * \param 16206 * string UTF-8 encoded string 16207 * \return 16208 * true string is valid UTF-8 16209 * false string is invalid UTF-8 16210 */ 16211 bool bLIsUTF8(const char * string, size_t stringSize) { 16212 16213 if (!string || !stringSize) { 16214 return(false); 16215 } 16216 16217 const unsigned char * bytes = (const unsigned char *)string; 16218 while (*bytes) { 16219 16220 // ASCII 16221 // use bytes[0] <= 0x7F to allow ASCII control characters 16222 if (bytes[0] == 0x09 || bytes[0] == 0x0A || bytes[0] == 0x0D || (0x20 <= bytes[0] && bytes[0] <= 0x7E)) { 16223 bytes += 1; 16224 if ((size_t)(bytes - (const unsigned char *)string)+1 > stringSize) { 16225 return(false); 16226 } 16227 continue; 16228 } 16229 16230 // non-overlong 2-byte 16231 if ((0xC2 <= bytes[0] && bytes[0] <= 0xDF) && (0x80 <= bytes[1] && bytes[1] <= 0xBF)) { 16232 bytes += 2; 16233 if ((size_t)(bytes - (const unsigned char *)string)+1 > stringSize) { 16234 return(false); 16235 } 16236 continue; 16237 } 16238 16239 // excluding overlongs 16240 // straight 3-byte 16241 // excluding surrogates 16242 if ((bytes[0] == 0xE0 && (0xA0 <= bytes[1] && bytes[1] <= 0xBF) && (0x80 <= bytes[2] && bytes[2] <= 0xBF)) || (((0xE1 <= bytes[0] && bytes[0] <= 0xEC) || bytes[0] == 0xEE || bytes[0] == 0xEF) && (0x80 <= bytes[1] && bytes[1] <= 0xBF) && (0x80 <= bytes[2] && bytes[2] <= 0xBF)) || (bytes[0] == 0xED && (0x80 <= bytes[1] && bytes[1] <= 0x9F) && (0x80 <= bytes[2] && bytes[2] <= 0xBF))) { 16243 bytes += 3; 16244 if ((size_t)(bytes - (const unsigned char *)string)+1 > stringSize) { 16245 return(false); 16246 } 16247 continue; 16248 } 16249 16250 // planes 1-3 16251 // planes 4-15 16252 // plane 16 16253 if ((bytes[0] == 0xF0 && (0x90 <= bytes[1] && bytes[1] <= 0xBF) && (0x80 <= bytes[2] && bytes[2] <= 0xBF) && (0x80 <= bytes[3] && bytes[3] <= 0xBF)) || ((0xF1 <= bytes[0] && bytes[0] <= 0xF3) && (0x80 <= bytes[1] && bytes[1] <= 0xBF) && (0x80 <= bytes[2] && bytes[2] <= 0xBF) && (0x80 <= bytes[3] && bytes[3] <= 0xBF)) || (bytes[0] == 0xF4 && (0x80 <= bytes[1] && bytes[1] <= 0x8F) && (0x80 <= bytes[2] && bytes[2] <= 0xBF) && (0x80 <= bytes[3] && bytes[3] <= 0xBF))) { 16254 bytes += 4; 16255 if ((size_t)(bytes - (const unsigned char *)string)+1 > stringSize) { 16256 return(false); 16257 } 16258 continue; 16259 } 16260 16261 return(false); 16262 } 16263 16264 return(true); 16265 } 16266 16267 /** 16268 * is code point UTF8 encoded string 16269 * 16270 * Check if a UTF8 code point is valid 16271 * 16272 * This function checks only the first code point 16273 * 16274 * \param 16275 * bytes string, NUL-terminated or not, bytes can be a pointer inside a UTF8 encoded string 16276 * \return 16277 * true bytes is a valid UTF-8 code point 16278 * false bytes is invalid code point 16279 */ 16280 bool isCodeUTF8(const char *code) { 16281 16282 if (!code) { 16283 return(false); 16284 } 16285 const unsigned char * bytes = (const unsigned char *)code; 16286 // ASCII 16287 // use bytes[0] <= 0x7F to allow ASCII control characters 16288 if (bytes[0] == 0x09 || bytes[0] == 0x0A || bytes[0] == 0x0D || (0x20 <= bytes[0] && bytes[0] <= 0x7E)) { 16289 return(true); 16290 } 16291 16292 // non-overlong 2-byte 16293 if ((0xC2 <= bytes[0] && bytes[0] <= 0xDF) && (0x80 <= bytes[1] && bytes[1] <= 0xBF)) { 16294 return(true); 16295 } 16296 16297 // excluding overlongs 16298 // straight 3-byte 16299 // excluding surrogates 16300 if ((bytes[0] == 0xE0 && (0xA0 <= bytes[1] && bytes[1] <= 0xBF) && (0x80 <= bytes[2] && bytes[2] <= 0xBF)) || (((0xE1 <= bytes[0] && bytes[0] <= 0xEC) || bytes[0] == 0xEE || bytes[0] == 0xEF) && (0x80 <= bytes[1] && bytes[1] <= 0xBF) && (0x80 <= bytes[2] && bytes[2] <= 0xBF)) || (bytes[0] == 0xED && (0x80 <= bytes[1] && bytes[1] <= 0x9F) && (0x80 <= bytes[2] && bytes[2] <= 0xBF))) { 16301 return(true); 16302 } 16303 16304 // planes 1-3 16305 // planes 4-15 16306 // plane 16 16307 if ((bytes[0] == 0xF0 && (0x90 <= bytes[1] && bytes[1] <= 0xBF) && (0x80 <= bytes[2] && bytes[2] <= 0xBF) && (0x80 <= bytes[3] && bytes[3] <= 0xBF)) || ((0xF1 <= bytes[0] && bytes[0] <= 0xF3) && (0x80 <= bytes[1] && bytes[1] <= 0xBF) && (0x80 <= bytes[2] && bytes[2] <= 0xBF) && (0x80 <= bytes[3] && bytes[3] <= 0xBF)) || (bytes[0] == 0xF4 && (0x80 <= bytes[1] && bytes[1] <= 0x8F) && (0x80 <= bytes[2] && bytes[2] <= 0xBF) && (0x80 <= bytes[3] && bytes[3] <= 0xBF))) { 16308 return(true); 16309 } 16310 16311 return(false); 16312 } 16313 16314 // INCLUDE libsheepyC.c 16315 /** maximum rune value */ 16316 #define runeMax 0x10FFFF 16317 16318 /** code point length, 0 when invalid code point, x is first byte in code point */ 16319 #define UTFSEQ(x) ((((x) & 0x80) == 0x00) ? 1 /* 0xxxxxxx */ \ 16320 : (((x) & 0xC0) == 0x80) ? 0 /* 10xxxxxx */ \ 16321 : (((x) & 0xE0) == 0xC0) ? 2 /* 110xxxxx */ \ 16322 : (((x) & 0xF0) == 0xE0) ? 3 /* 1110xxxx */ \ 16323 : (((x) & 0xF8) == 0xF0) ? 4 /* 11110xxx */ \ 16324 : (((x) & 0xFC) == 0xF8) ? 5 /* 111110xx */ \ 16325 : (((x) & 0xFE) == 0xFC) ? 6 /* 1111110x */ \ 16326 : 0 ) 16327 16328 #define BADRUNE(x) ((x) < 0 || (x) > runeMax \ 16329 || ((x) & 0xFFFE) == 0xFFFE \ 16330 || ((x) >= 0xD800 && (x) <= 0xDFFF) \ 16331 || ((x) >= 0xFDD0 && (x) <= 0xFDEF)) 16332 16333 #define UNICODE_LAST_CHAR_PART1 0x2FAFF 16334 #define UNICODE_LAST_PAGE_PART1 762 16335 #define UNICODE_MAX_TABLE_INDEX 10000 16336 #define UNICODE_NOT_PRESENT_OFFSET 65535 16337 16338 /** 16339 * Unicode types: 16340 * UNICODE_CONTROL: General category "Other, Control" (Cc) 16341 * UNICODE_FORMAT: General category "Other, Format" (Cf) 16342 * UNICODE_UNASSIGNED: General category "Other, Not Assigned" (Cn) 16343 * UNICODE_PRIVATE_USE: General category "Other, Private Use" (Co) 16344 * UNICODE_SURROGATE: General category "Other, Surrogate" (Cs) 16345 * UNICODE_LOWERCASE_LETTER: General category "Letter, Lowercase" (Ll) 16346 * UNICODE_MODIFIER_LETTER: General category "Letter, Modifier" (Lm) 16347 * UNICODE_OTHER_LETTER: General category "Letter, Other" (Lo) 16348 * UNICODE_TITLECASE_LETTER: General category "Letter, Titlecase" (Lt) 16349 * UNICODE_UPPERCASE_LETTER: General category "Letter, Uppercase" (Lu) 16350 * UNICODE_SPACING_MARK: General category "Mark, Spacing" (Mc) 16351 * UNICODE_ENCLOSING_MARK: General category "Mark, Enclosing" (Me) 16352 * UNICODE_NON_SPACING_MARK: General category "Mark, Nonspacing" (Mn) 16353 * UNICODE_DECIMAL_NUMBER: General category "Number, Decimal Digit" (Nd) 16354 * UNICODE_LETTER_NUMBER: General category "Number, Letter" (Nl) 16355 * UNICODE_OTHER_NUMBER: General category "Number, Other" (No) 16356 * UNICODE_CONNECT_PUNCTUATION: General category "Punctuation, Connector" (Pc) 16357 * UNICODE_DASH_PUNCTUATION: General category "Punctuation, Dash" (Pd) 16358 * UNICODE_CLOSE_PUNCTUATION: General category "Punctuation, Close" (Pe) 16359 * UNICODE_FINAL_PUNCTUATION: General category "Punctuation, Final quote" (Pf) 16360 * UNICODE_INITIAL_PUNCTUATION: General category "Punctuation, Initial quote" (Pi) 16361 * UNICODE_OTHER_PUNCTUATION: General category "Punctuation, Other" (Po) 16362 * UNICODE_OPEN_PUNCTUATION: General category "Punctuation, Open" (Ps) 16363 * UNICODE_CURRENCY_SYMBOL: General category "Symbol, Currency" (Sc) 16364 * UNICODE_MODIFIER_SYMBOL: General category "Symbol, Modifier" (Sk) 16365 * UNICODE_MATH_SYMBOL: General category "Symbol, Math" (Sm) 16366 * UNICODE_OTHER_SYMBOL: General category "Symbol, Other" (So) 16367 * UNICODE_LINE_SEPARATOR: General category "Separator, Line" (Zl) 16368 * UNICODE_PARAGRAPH_SEPARATOR: General category "Separator, Paragraph" (Zp) 16369 * UNICODE_SPACE_SEPARATOR: General category "Separator, Space" (Zs) 16370 * 16371 * These are the possible character classifications from the 16372 * Unicode specification. 16373 * See [Unicode Character Database](http://www.unicode.org/reports/tr44/#General_Category_Values). 16374 */ 16375 typedef enum 16376 { 16377 UNICODE_CONTROL, 16378 UNICODE_FORMAT, 16379 UNICODE_UNASSIGNED, 16380 UNICODE_PRIVATE_USE, 16381 UNICODE_SURROGATE, 16382 UNICODE_LOWERCASE_LETTER, 16383 UNICODE_MODIFIER_LETTER, 16384 UNICODE_OTHER_LETTER, 16385 UNICODE_TITLECASE_LETTER, 16386 UNICODE_UPPERCASE_LETTER, 16387 UNICODE_SPACING_MARK, 16388 UNICODE_ENCLOSING_MARK, 16389 UNICODE_NON_SPACING_MARK, 16390 UNICODE_DECIMAL_NUMBER, 16391 UNICODE_LETTER_NUMBER, 16392 UNICODE_OTHER_NUMBER, 16393 UNICODE_CONNECT_PUNCTUATION, 16394 UNICODE_DASH_PUNCTUATION, 16395 UNICODE_CLOSE_PUNCTUATION, 16396 UNICODE_FINAL_PUNCTUATION, 16397 UNICODE_INITIAL_PUNCTUATION, 16398 UNICODE_OTHER_PUNCTUATION, 16399 UNICODE_OPEN_PUNCTUATION, 16400 UNICODE_CURRENCY_SYMBOL, 16401 UNICODE_MODIFIER_SYMBOL, 16402 UNICODE_MATH_SYMBOL, 16403 UNICODE_OTHER_SYMBOL, 16404 UNICODE_LINE_SEPARATOR, 16405 UNICODE_PARAGRAPH_SEPARATOR, 16406 UNICODE_SPACE_SEPARATOR 16407 } unicodeType; 16408 16409 static const rune attr_data[][256] = { 16410 { /* page 0, index 0 */ 16411 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16412 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16413 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16414 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16415 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16416 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 16417 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16418 0x0000, 0x0000, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 16419 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 16420 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 16421 0x007a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0041, 0x0042, 16422 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 16423 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 16424 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x0000, 0x0000, 0x0000, 16425 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16426 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16427 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16428 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16429 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16430 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16431 0x0000, 0x039c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16432 0x0000, 0x0000, 0x0000, 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 16433 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 16434 0x00ef, 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x0000, 16435 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x1000000, 16436 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 16437 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 0x00d0, 0x00d1, 16438 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x0000, 0x00d8, 0x00d9, 0x00da, 16439 0x00db, 0x00dc, 0x00dd, 0x00de, 0x0178 16440 }, 16441 { /* page 1, index 1 */ 16442 0x0101, 0x0100, 0x0103, 0x0102, 0x0105, 0x0104, 0x0107, 0x0106, 0x0109, 16443 0x0108, 0x010b, 0x010a, 0x010d, 0x010c, 0x010f, 0x010e, 0x0111, 0x0110, 16444 0x0113, 0x0112, 0x0115, 0x0114, 0x0117, 0x0116, 0x0119, 0x0118, 0x011b, 16445 0x011a, 0x011d, 0x011c, 0x011f, 0x011e, 0x0121, 0x0120, 0x0123, 0x0122, 16446 0x0125, 0x0124, 0x0127, 0x0126, 0x0129, 0x0128, 0x012b, 0x012a, 0x012d, 16447 0x012c, 0x012f, 0x012e, 0x1000007, 0x0049, 0x0133, 0x0132, 0x0135, 16448 0x0134, 0x0137, 0x0136, 0x0000, 0x013a, 0x0139, 0x013c, 0x013b, 0x013e, 16449 0x013d, 0x0140, 0x013f, 0x0142, 0x0141, 0x0144, 0x0143, 0x0146, 0x0145, 16450 0x0148, 0x0147, 0x1000086, 0x014b, 0x014a, 0x014d, 0x014c, 0x014f, 16451 0x014e, 0x0151, 0x0150, 0x0153, 0x0152, 0x0155, 0x0154, 0x0157, 0x0156, 16452 0x0159, 0x0158, 0x015b, 0x015a, 0x015d, 0x015c, 0x015f, 0x015e, 0x0161, 16453 0x0160, 0x0163, 0x0162, 0x0165, 0x0164, 0x0167, 0x0166, 0x0169, 0x0168, 16454 0x016b, 0x016a, 0x016d, 0x016c, 0x016f, 0x016e, 0x0171, 0x0170, 0x0173, 16455 0x0172, 0x0175, 0x0174, 0x0177, 0x0176, 0x00ff, 0x017a, 0x0179, 0x017c, 16456 0x017b, 0x017e, 0x017d, 0x0053, 0x0243, 0x0253, 0x0183, 0x0182, 0x0185, 16457 0x0184, 0x0254, 0x0188, 0x0187, 0x0256, 0x0257, 0x018c, 0x018b, 0x0000, 16458 0x01dd, 0x0259, 0x025b, 0x0192, 0x0191, 0x0260, 0x0263, 0x01f6, 0x0269, 16459 0x0268, 0x0199, 0x0198, 0x023d, 0x0000, 0x026f, 0x0272, 0x0220, 0x0275, 16460 0x01a1, 0x01a0, 0x01a3, 0x01a2, 0x01a5, 0x01a4, 0x0280, 0x01a8, 0x01a7, 16461 0x0283, 0x0000, 0x0000, 0x01ad, 0x01ac, 0x0288, 0x01b0, 0x01af, 0x028a, 16462 0x028b, 0x01b4, 0x01b3, 0x01b6, 0x01b5, 0x0292, 0x01b9, 0x01b8, 0x0000, 16463 0x0000, 0x01bd, 0x01bc, 0x0000, 0x01f7, 0x0000, 0x0000, 0x0000, 0x0000, 16464 0x01c6, 0x0000, 0x01c4, 0x01c9, 0x0000, 0x01c7, 0x01cc, 0x0000, 0x01ca, 16465 0x01ce, 0x01cd, 0x01d0, 0x01cf, 0x01d2, 0x01d1, 0x01d4, 0x01d3, 0x01d6, 16466 0x01d5, 0x01d8, 0x01d7, 0x01da, 0x01d9, 0x01dc, 0x01db, 0x018e, 0x01df, 16467 0x01de, 0x01e1, 0x01e0, 0x01e3, 0x01e2, 0x01e5, 0x01e4, 0x01e7, 0x01e6, 16468 0x01e9, 0x01e8, 0x01eb, 0x01ea, 0x01ed, 0x01ec, 0x01ef, 0x01ee, 16469 0x10000ad, 0x01f3, 0x0000, 0x01f1, 0x01f5, 0x01f4, 0x0195, 0x01bf, 16470 0x01f9, 0x01f8, 0x01fb, 0x01fa, 0x01fd, 0x01fc, 0x01ff, 0x01fe 16471 }, 16472 { /* page 2, index 2 */ 16473 0x0201, 0x0200, 0x0203, 0x0202, 0x0205, 0x0204, 0x0207, 0x0206, 0x0209, 16474 0x0208, 0x020b, 0x020a, 0x020d, 0x020c, 0x020f, 0x020e, 0x0211, 0x0210, 16475 0x0213, 0x0212, 0x0215, 0x0214, 0x0217, 0x0216, 0x0219, 0x0218, 0x021b, 16476 0x021a, 0x021d, 0x021c, 0x021f, 0x021e, 0x019e, 0x0000, 0x0223, 0x0222, 16477 0x0225, 0x0224, 0x0227, 0x0226, 0x0229, 0x0228, 0x022b, 0x022a, 0x022d, 16478 0x022c, 0x022f, 0x022e, 0x0231, 0x0230, 0x0233, 0x0232, 0x0000, 0x0000, 16479 0x0000, 0x0000, 0x0000, 0x0000, 0x2c65, 0x023c, 0x023b, 0x019a, 0x2c66, 16480 0x2c7e, 0x2c7f, 0x0242, 0x0241, 0x0180, 0x0289, 0x028c, 0x0247, 0x0246, 16481 0x0249, 0x0248, 0x024b, 0x024a, 0x024d, 0x024c, 0x024f, 0x024e, 0x2c6f, 16482 0x2c6d, 0x2c70, 0x0181, 0x0186, 0x0000, 0x0189, 0x018a, 0x0000, 0x018f, 16483 0x0000, 0x0190, 0xa7ab, 0x0000, 0x0000, 0x0000, 0x0193, 0xa7ac, 0x0000, 16484 0x0194, 0x0000, 0xa78d, 0xa7aa, 0x0000, 0x0197, 0x0196, 0xa7ae, 0x2c62, 16485 0xa7ad, 0x0000, 0x0000, 0x019c, 0x0000, 0x2c6e, 0x019d, 0x0000, 0x0000, 16486 0x019f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2c64, 16487 0x0000, 0x0000, 0x01a6, 0x0000, 0x0000, 0x01a9, 0x0000, 0x0000, 0x0000, 16488 0xa7b1, 0x01ae, 0x0244, 0x01b1, 0x01b2, 0x0245, 0x0000, 0x0000, 0x0000, 16489 0x0000, 0x0000, 0x01b7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16490 0x0000, 0x0000, 0x0000, 0x0000, 0xa7b2, 0xa7b0, 0x0000, 0x0000, 0x0000, 16491 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16492 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16493 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16494 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16495 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16496 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16497 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16498 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16499 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16500 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16501 0x0000, 0x0000, 0x0000, 0x0000 16502 }, 16503 { /* page 3, index 3 */ 16504 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16505 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16506 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16507 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16508 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16509 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16510 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16511 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16512 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16513 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16514 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16515 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16516 0x0000, 0x0000, 0x0000, 0x0000, 0x0371, 0x0370, 0x0373, 0x0372, 0x0000, 16517 0x0000, 0x0377, 0x0376, 0x0000, 0x0000, 0x0000, 0x03fd, 0x03fe, 0x03ff, 16518 0x0000, 0x03f3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03ac, 16519 0x0000, 0x03ad, 0x03ae, 0x03af, 0x0000, 0x03cc, 0x0000, 0x03cd, 0x03ce, 16520 0x100008f, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 16521 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 16522 0x03c1, 0x0000, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9, 16523 0x03ca, 0x03cb, 0x0386, 0x0388, 0x0389, 0x038a, 0x100009e, 0x0391, 16524 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 16525 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x03a3, 16526 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x038c, 16527 0x038e, 0x038f, 0x03d7, 0x0392, 0x0398, 0x0000, 0x0000, 0x0000, 0x03a6, 16528 0x03a0, 0x03cf, 0x03d9, 0x03d8, 0x03db, 0x03da, 0x03dd, 0x03dc, 0x03df, 16529 0x03de, 0x03e1, 0x03e0, 0x03e3, 0x03e2, 0x03e5, 0x03e4, 0x03e7, 0x03e6, 16530 0x03e9, 0x03e8, 0x03eb, 0x03ea, 0x03ed, 0x03ec, 0x03ef, 0x03ee, 0x039a, 16531 0x03a1, 0x03f9, 0x037f, 0x03b8, 0x0395, 0x0000, 0x03f8, 0x03f7, 0x03f2, 16532 0x03fb, 0x03fa, 0x0000, 0x037b, 0x037c, 0x037d 16533 }, 16534 { /* page 4, index 4 */ 16535 0x0450, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, 0x0458, 16536 0x0459, 0x045a, 0x045b, 0x045c, 0x045d, 0x045e, 0x045f, 0x0430, 0x0431, 16537 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 16538 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 16539 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 16540 0x044d, 0x044e, 0x044f, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 16541 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 16542 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 16543 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0400, 16544 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, 0x0408, 0x0409, 16545 0x040a, 0x040b, 0x040c, 0x040d, 0x040e, 0x040f, 0x0461, 0x0460, 0x0463, 16546 0x0462, 0x0465, 0x0464, 0x0467, 0x0466, 0x0469, 0x0468, 0x046b, 0x046a, 16547 0x046d, 0x046c, 0x046f, 0x046e, 0x0471, 0x0470, 0x0473, 0x0472, 0x0475, 16548 0x0474, 0x0477, 0x0476, 0x0479, 0x0478, 0x047b, 0x047a, 0x047d, 0x047c, 16549 0x047f, 0x047e, 0x0481, 0x0480, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16550 0x0000, 0x0000, 0x0000, 0x048b, 0x048a, 0x048d, 0x048c, 0x048f, 0x048e, 16551 0x0491, 0x0490, 0x0493, 0x0492, 0x0495, 0x0494, 0x0497, 0x0496, 0x0499, 16552 0x0498, 0x049b, 0x049a, 0x049d, 0x049c, 0x049f, 0x049e, 0x04a1, 0x04a0, 16553 0x04a3, 0x04a2, 0x04a5, 0x04a4, 0x04a7, 0x04a6, 0x04a9, 0x04a8, 0x04ab, 16554 0x04aa, 0x04ad, 0x04ac, 0x04af, 0x04ae, 0x04b1, 0x04b0, 0x04b3, 0x04b2, 16555 0x04b5, 0x04b4, 0x04b7, 0x04b6, 0x04b9, 0x04b8, 0x04bb, 0x04ba, 0x04bd, 16556 0x04bc, 0x04bf, 0x04be, 0x04cf, 0x04c2, 0x04c1, 0x04c4, 0x04c3, 0x04c6, 16557 0x04c5, 0x04c8, 0x04c7, 0x04ca, 0x04c9, 0x04cc, 0x04cb, 0x04ce, 0x04cd, 16558 0x04c0, 0x04d1, 0x04d0, 0x04d3, 0x04d2, 0x04d5, 0x04d4, 0x04d7, 0x04d6, 16559 0x04d9, 0x04d8, 0x04db, 0x04da, 0x04dd, 0x04dc, 0x04df, 0x04de, 0x04e1, 16560 0x04e0, 0x04e3, 0x04e2, 0x04e5, 0x04e4, 0x04e7, 0x04e6, 0x04e9, 0x04e8, 16561 0x04eb, 0x04ea, 0x04ed, 0x04ec, 0x04ef, 0x04ee, 0x04f1, 0x04f0, 0x04f3, 16562 0x04f2, 0x04f5, 0x04f4, 0x04f7, 0x04f6, 0x04f9, 0x04f8, 0x04fb, 0x04fa, 16563 0x04fd, 0x04fc, 0x04ff, 0x04fe 16564 }, 16565 { /* page 5, index 5 */ 16566 0x0501, 0x0500, 0x0503, 0x0502, 0x0505, 0x0504, 0x0507, 0x0506, 0x0509, 16567 0x0508, 0x050b, 0x050a, 0x050d, 0x050c, 0x050f, 0x050e, 0x0511, 0x0510, 16568 0x0513, 0x0512, 0x0515, 0x0514, 0x0517, 0x0516, 0x0519, 0x0518, 0x051b, 16569 0x051a, 0x051d, 0x051c, 0x051f, 0x051e, 0x0521, 0x0520, 0x0523, 0x0522, 16570 0x0525, 0x0524, 0x0527, 0x0526, 0x0529, 0x0528, 0x052b, 0x052a, 0x052d, 16571 0x052c, 0x052f, 0x052e, 0x0000, 0x0561, 0x0562, 0x0563, 0x0564, 0x0565, 16572 0x0566, 0x0567, 0x0568, 0x0569, 0x056a, 0x056b, 0x056c, 0x056d, 0x056e, 16573 0x056f, 0x0570, 0x0571, 0x0572, 0x0573, 0x0574, 0x0575, 0x0576, 0x0577, 16574 0x0578, 0x0579, 0x057a, 0x057b, 0x057c, 0x057d, 0x057e, 0x057f, 0x0580, 16575 0x0581, 0x0582, 0x0583, 0x0584, 0x0585, 0x0586, 0x0000, 0x0000, 0x0000, 16576 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0531, 0x0532, 16577 0x0533, 0x0534, 0x0535, 0x0536, 0x0537, 0x0538, 0x0539, 0x053a, 0x053b, 16578 0x053c, 0x053d, 0x053e, 0x053f, 0x0540, 0x0541, 0x0542, 0x0543, 0x0544, 16579 0x0545, 0x0546, 0x0547, 0x0548, 0x0549, 0x054a, 0x054b, 0x054c, 0x054d, 16580 0x054e, 0x054f, 0x0550, 0x0551, 0x0552, 0x0553, 0x0554, 0x0555, 0x0556, 16581 0x1000044, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16582 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16583 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16584 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16585 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16586 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16587 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16588 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16589 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16590 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16591 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16592 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16593 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16594 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 16595 }, 16596 { /* page 6, index 6 */ 16597 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16598 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16599 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16600 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16601 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16602 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16603 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16604 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16605 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16606 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16607 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 16608 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 16609 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16610 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16611 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16612 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16613 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16614 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16615 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16616 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16617 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16618 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16619 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16620 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16621 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16622 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16623 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 16624 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 16625 0x0000, 0x0000, 0x0000, 0x0000 16626 }, 16627 { /* page 7, index 7 */ 16628 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16629 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16630 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16631 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16632 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16633 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16634 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16635 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16636 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16637 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16638 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16639 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16640 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16641 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16642 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16643 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16644 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16645 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16646 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16647 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16648 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16649 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 16650 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16651 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16652 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16653 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16654 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16655 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16656 0x0000, 0x0000, 0x0000, 0x0000 16657 }, 16658 { /* page 9, index 8 */ 16659 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16660 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16661 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16662 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16663 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16664 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16665 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16666 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16667 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16668 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16669 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16670 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 16671 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16672 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16673 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16674 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16675 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16676 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16677 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16678 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16679 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16680 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16681 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16682 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16683 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16684 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 16685 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 16686 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16687 0x0000, 0x0000, 0x0000, 0x0000 16688 }, 16689 { /* page 10, index 9 */ 16690 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16691 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16692 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16693 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16694 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16695 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16696 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16697 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16698 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16699 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16700 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16701 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 16702 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16703 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16704 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16705 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16706 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16707 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16708 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16709 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16710 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16711 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16712 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16713 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16714 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16715 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 16716 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 16717 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16718 0x0000, 0x0000, 0x0000, 0x0000 16719 }, 16720 { /* page 11, index 10 */ 16721 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16722 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16723 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16724 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16725 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16726 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16727 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16728 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16729 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16730 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16731 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16732 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 16733 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16734 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16735 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16736 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16737 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16738 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16739 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16740 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16741 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16742 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16743 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16744 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16745 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16746 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 16747 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 16748 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16749 0x0000, 0x0000, 0x0000, 0x0000 16750 }, 16751 { /* page 12, index 11 */ 16752 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16753 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16754 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16755 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16756 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16757 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16758 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16759 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16760 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16761 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16762 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16763 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 16764 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16765 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16766 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16767 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16768 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16769 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16770 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16771 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16772 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16773 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16774 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16775 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16776 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16777 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 16778 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 16779 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16780 0x0000, 0x0000, 0x0000, 0x0000 16781 }, 16782 { /* page 13, index 12 */ 16783 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16784 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16785 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16786 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16787 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16788 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16789 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16790 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16791 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16792 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16793 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16794 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 16795 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16796 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16797 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16798 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16799 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16800 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16801 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16802 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16803 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16804 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16805 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16806 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16807 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16808 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 16809 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 16810 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16811 0x0000, 0x0000, 0x0000, 0x0000 16812 }, 16813 { /* page 14, index 13 */ 16814 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16815 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16816 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16817 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16818 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16819 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16820 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16821 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16822 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16823 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 16824 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16825 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16826 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16827 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16828 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16829 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16830 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16831 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16832 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16833 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16834 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16835 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16836 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16837 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 16838 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16839 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16840 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16841 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16842 0x0000, 0x0000, 0x0000, 0x0000 16843 }, 16844 { /* page 15, index 14 */ 16845 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16846 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16847 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16848 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 16849 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 16850 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16851 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16852 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16853 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16854 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16855 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16856 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16857 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16858 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16859 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16860 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16861 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16862 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16863 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16864 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16865 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16866 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16867 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16868 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16869 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16870 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16871 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16872 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16873 0x0000, 0x0000, 0x0000, 0x0000 16874 }, 16875 { /* page 16, index 15 */ 16876 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16877 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16878 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16879 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16880 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16881 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16882 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16883 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 16884 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16885 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16886 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16887 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16888 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16889 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16890 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16891 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16892 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 16893 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2d00, 0x2d01, 16894 0x2d02, 0x2d03, 0x2d04, 0x2d05, 0x2d06, 0x2d07, 0x2d08, 0x2d09, 0x2d0a, 16895 0x2d0b, 0x2d0c, 0x2d0d, 0x2d0e, 0x2d0f, 0x2d10, 0x2d11, 0x2d12, 0x2d13, 16896 0x2d14, 0x2d15, 0x2d16, 0x2d17, 0x2d18, 0x2d19, 0x2d1a, 0x2d1b, 0x2d1c, 16897 0x2d1d, 0x2d1e, 0x2d1f, 0x2d20, 0x2d21, 0x2d22, 0x2d23, 0x2d24, 0x2d25, 16898 0x0000, 0x2d27, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2d2d, 0x0000, 16899 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16900 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16901 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16902 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16903 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16904 0x0000, 0x0000, 0x0000, 0x0000 16905 }, 16906 { /* page 19, index 16 */ 16907 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16908 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16909 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16910 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16911 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16912 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16913 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16914 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16915 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16916 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16917 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16918 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16919 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16920 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16921 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16922 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16923 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16924 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xab70, 0xab71, 16925 0xab72, 0xab73, 0xab74, 0xab75, 0xab76, 0xab77, 0xab78, 0xab79, 0xab7a, 16926 0xab7b, 0xab7c, 0xab7d, 0xab7e, 0xab7f, 0xab80, 0xab81, 0xab82, 0xab83, 16927 0xab84, 0xab85, 0xab86, 0xab87, 0xab88, 0xab89, 0xab8a, 0xab8b, 0xab8c, 16928 0xab8d, 0xab8e, 0xab8f, 0xab90, 0xab91, 0xab92, 0xab93, 0xab94, 0xab95, 16929 0xab96, 0xab97, 0xab98, 0xab99, 0xab9a, 0xab9b, 0xab9c, 0xab9d, 0xab9e, 16930 0xab9f, 0xaba0, 0xaba1, 0xaba2, 0xaba3, 0xaba4, 0xaba5, 0xaba6, 0xaba7, 16931 0xaba8, 0xaba9, 0xabaa, 0xabab, 0xabac, 0xabad, 0xabae, 0xabaf, 0xabb0, 16932 0xabb1, 0xabb2, 0xabb3, 0xabb4, 0xabb5, 0xabb6, 0xabb7, 0xabb8, 0xabb9, 16933 0xabba, 0xabbb, 0xabbc, 0xabbd, 0xabbe, 0xabbf, 0x13f8, 0x13f9, 0x13fa, 16934 0x13fb, 0x13fc, 0x13fd, 0x0000, 0x0000, 0x13f0, 0x13f1, 0x13f2, 0x13f3, 16935 0x13f4, 0x13f5, 0x0000, 0x0000 16936 }, 16937 { /* page 23, index 17 */ 16938 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16939 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16940 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16941 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16942 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16943 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16944 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16945 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16946 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16947 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16948 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16949 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16950 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16951 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16952 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16953 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16954 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16955 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16956 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16957 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16958 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16959 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16960 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16961 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16962 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16963 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 16964 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16965 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16966 0x0000, 0x0000, 0x0000, 0x0000 16967 }, 16968 { /* page 24, index 18 */ 16969 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16970 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 16971 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 16972 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16973 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16974 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16975 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16976 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16977 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16978 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16979 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16980 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16981 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16982 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16983 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16984 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16985 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16986 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16987 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16988 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16989 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16990 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16991 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16992 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16993 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16994 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16995 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16996 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16997 0x0000, 0x0000, 0x0000, 0x0000 16998 }, 16999 { /* page 25, index 19 */ 17000 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17001 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17002 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17003 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17004 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17005 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17006 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17007 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 17008 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 17009 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17010 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17011 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17012 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17013 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17014 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17015 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17016 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17017 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17018 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17019 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17020 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17021 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17022 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17023 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 17024 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17025 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17026 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17027 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17028 0x0000, 0x0000, 0x0000, 0x0000 17029 }, 17030 { /* page 26, index 20 */ 17031 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17032 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17033 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17034 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17035 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17036 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17037 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17038 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17039 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17040 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17041 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17042 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17043 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17044 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17045 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 17046 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17047 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 17048 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17049 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17050 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17051 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17052 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17053 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17054 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17055 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17056 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17057 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17058 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17059 0x0000, 0x0000, 0x0000, 0x0000 17060 }, 17061 { /* page 27, index 21 */ 17062 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17063 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17064 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17065 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17066 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17067 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17068 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17069 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17070 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17071 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 17072 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17073 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17074 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17075 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17076 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17077 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17078 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17079 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17080 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17081 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 17082 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 17083 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17084 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17085 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17086 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17087 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17088 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17089 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17090 0x0000, 0x0000, 0x0000, 0x0000 17091 }, 17092 { /* page 28, index 22 */ 17093 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17094 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17095 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17096 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17097 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17098 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17099 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17100 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 17101 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17102 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 17103 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17104 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17105 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17106 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17107 0x0000, 0x0000, 0x0412, 0x0414, 0x041e, 0x0421, 0x0422, 0x0422, 0x042a, 17108 0x0462, 0xa64a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17109 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17110 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17111 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17112 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17113 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17114 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17115 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17116 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17117 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17118 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17119 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17120 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17121 0x0000, 0x0000, 0x0000, 0x0000 17122 }, 17123 { /* page 29, index 23 */ 17124 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17125 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17126 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17127 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17128 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17129 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17130 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17131 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17132 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17133 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17134 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17135 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17136 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17137 0x0000, 0x0000, 0x0000, 0x0000, 0xa77d, 0x0000, 0x0000, 0x0000, 0x2c63, 17138 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17139 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17140 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17141 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17142 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17143 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17144 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17145 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17146 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17147 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17148 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17149 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17150 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17151 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17152 0x0000, 0x0000, 0x0000, 0x0000 17153 }, 17154 { /* page 30, index 24 */ 17155 0x1e01, 0x1e00, 0x1e03, 0x1e02, 0x1e05, 0x1e04, 0x1e07, 0x1e06, 0x1e09, 17156 0x1e08, 0x1e0b, 0x1e0a, 0x1e0d, 0x1e0c, 0x1e0f, 0x1e0e, 0x1e11, 0x1e10, 17157 0x1e13, 0x1e12, 0x1e15, 0x1e14, 0x1e17, 0x1e16, 0x1e19, 0x1e18, 0x1e1b, 17158 0x1e1a, 0x1e1d, 0x1e1c, 0x1e1f, 0x1e1e, 0x1e21, 0x1e20, 0x1e23, 0x1e22, 17159 0x1e25, 0x1e24, 0x1e27, 0x1e26, 0x1e29, 0x1e28, 0x1e2b, 0x1e2a, 0x1e2d, 17160 0x1e2c, 0x1e2f, 0x1e2e, 0x1e31, 0x1e30, 0x1e33, 0x1e32, 0x1e35, 0x1e34, 17161 0x1e37, 0x1e36, 0x1e39, 0x1e38, 0x1e3b, 0x1e3a, 0x1e3d, 0x1e3c, 0x1e3f, 17162 0x1e3e, 0x1e41, 0x1e40, 0x1e43, 0x1e42, 0x1e45, 0x1e44, 0x1e47, 0x1e46, 17163 0x1e49, 0x1e48, 0x1e4b, 0x1e4a, 0x1e4d, 0x1e4c, 0x1e4f, 0x1e4e, 0x1e51, 17164 0x1e50, 0x1e53, 0x1e52, 0x1e55, 0x1e54, 0x1e57, 0x1e56, 0x1e59, 0x1e58, 17165 0x1e5b, 0x1e5a, 0x1e5d, 0x1e5c, 0x1e5f, 0x1e5e, 0x1e61, 0x1e60, 0x1e63, 17166 0x1e62, 0x1e65, 0x1e64, 0x1e67, 0x1e66, 0x1e69, 0x1e68, 0x1e6b, 0x1e6a, 17167 0x1e6d, 0x1e6c, 0x1e6f, 0x1e6e, 0x1e71, 0x1e70, 0x1e73, 0x1e72, 0x1e75, 17168 0x1e74, 0x1e77, 0x1e76, 0x1e79, 0x1e78, 0x1e7b, 0x1e7a, 0x1e7d, 0x1e7c, 17169 0x1e7f, 0x1e7e, 0x1e81, 0x1e80, 0x1e83, 0x1e82, 0x1e85, 0x1e84, 0x1e87, 17170 0x1e86, 0x1e89, 0x1e88, 0x1e8b, 0x1e8a, 0x1e8d, 0x1e8c, 0x1e8f, 0x1e8e, 17171 0x1e91, 0x1e90, 0x1e93, 0x1e92, 0x1e95, 0x1e94, 0x10000b6, 0x10000bf, 17172 0x10000c8, 0x10000d1, 0x10000da, 0x1e60, 0x0000, 0x0000, 0x00df, 0x0000, 17173 0x1ea1, 0x1ea0, 0x1ea3, 0x1ea2, 0x1ea5, 0x1ea4, 0x1ea7, 0x1ea6, 0x1ea9, 17174 0x1ea8, 0x1eab, 0x1eaa, 0x1ead, 0x1eac, 0x1eaf, 0x1eae, 0x1eb1, 0x1eb0, 17175 0x1eb3, 0x1eb2, 0x1eb5, 0x1eb4, 0x1eb7, 0x1eb6, 0x1eb9, 0x1eb8, 0x1ebb, 17176 0x1eba, 0x1ebd, 0x1ebc, 0x1ebf, 0x1ebe, 0x1ec1, 0x1ec0, 0x1ec3, 0x1ec2, 17177 0x1ec5, 0x1ec4, 0x1ec7, 0x1ec6, 0x1ec9, 0x1ec8, 0x1ecb, 0x1eca, 0x1ecd, 17178 0x1ecc, 0x1ecf, 0x1ece, 0x1ed1, 0x1ed0, 0x1ed3, 0x1ed2, 0x1ed5, 0x1ed4, 17179 0x1ed7, 0x1ed6, 0x1ed9, 0x1ed8, 0x1edb, 0x1eda, 0x1edd, 0x1edc, 0x1edf, 17180 0x1ede, 0x1ee1, 0x1ee0, 0x1ee3, 0x1ee2, 0x1ee5, 0x1ee4, 0x1ee7, 0x1ee6, 17181 0x1ee9, 0x1ee8, 0x1eeb, 0x1eea, 0x1eed, 0x1eec, 0x1eef, 0x1eee, 0x1ef1, 17182 0x1ef0, 0x1ef3, 0x1ef2, 0x1ef5, 0x1ef4, 0x1ef7, 0x1ef6, 0x1ef9, 0x1ef8, 17183 0x1efb, 0x1efa, 0x1efd, 0x1efc, 0x1eff, 0x1efe 17184 }, 17185 { /* page 31, index 25 */ 17186 0x1f08, 0x1f09, 0x1f0a, 0x1f0b, 0x1f0c, 0x1f0d, 0x1f0e, 0x1f0f, 0x1f00, 17187 0x1f01, 0x1f02, 0x1f03, 0x1f04, 0x1f05, 0x1f06, 0x1f07, 0x1f18, 0x1f19, 17188 0x1f1a, 0x1f1b, 0x1f1c, 0x1f1d, 0x0000, 0x0000, 0x1f10, 0x1f11, 0x1f12, 17189 0x1f13, 0x1f14, 0x1f15, 0x0000, 0x0000, 0x1f28, 0x1f29, 0x1f2a, 0x1f2b, 17190 0x1f2c, 0x1f2d, 0x1f2e, 0x1f2f, 0x1f20, 0x1f21, 0x1f22, 0x1f23, 0x1f24, 17191 0x1f25, 0x1f26, 0x1f27, 0x1f38, 0x1f39, 0x1f3a, 0x1f3b, 0x1f3c, 0x1f3d, 17192 0x1f3e, 0x1f3f, 0x1f30, 0x1f31, 0x1f32, 0x1f33, 0x1f34, 0x1f35, 0x1f36, 17193 0x1f37, 0x1f48, 0x1f49, 0x1f4a, 0x1f4b, 0x1f4c, 0x1f4d, 0x0000, 0x0000, 17194 0x1f40, 0x1f41, 0x1f42, 0x1f43, 0x1f44, 0x1f45, 0x0000, 0x0000, 17195 0x10000e3, 0x1f59, 0x10000ee, 0x1f5b, 0x10000fd, 0x1f5d, 0x100010c, 17196 0x1f5f, 0x0000, 0x1f51, 0x0000, 0x1f53, 0x0000, 0x1f55, 0x0000, 0x1f57, 17197 0x1f68, 0x1f69, 0x1f6a, 0x1f6b, 0x1f6c, 0x1f6d, 0x1f6e, 0x1f6f, 0x1f60, 17198 0x1f61, 0x1f62, 0x1f63, 0x1f64, 0x1f65, 0x1f66, 0x1f67, 0x1fba, 0x1fbb, 17199 0x1fc8, 0x1fc9, 0x1fca, 0x1fcb, 0x1fda, 0x1fdb, 0x1ff8, 0x1ff9, 0x1fea, 17200 0x1feb, 0x1ffa, 0x1ffb, 0x0000, 0x0000, 0x10001b7, 0x10001c4, 0x10001d1, 17201 0x10001de, 0x10001eb, 0x10001f8, 0x1000205, 0x1000212, 0x100021f, 17202 0x1000229, 0x1000233, 0x100023d, 0x1000247, 0x1000251, 0x100025b, 17203 0x1000265, 0x100026f, 0x100027c, 0x1000289, 0x1000296, 0x10002a3, 17204 0x10002b0, 0x10002bd, 0x10002ca, 0x10002d7, 0x10002e1, 0x10002eb, 17205 0x10002f5, 0x10002ff, 0x1000309, 0x1000313, 0x100031d, 0x1000327, 17206 0x1000334, 0x1000341, 0x100034e, 0x100035b, 0x1000368, 0x1000375, 17207 0x1000382, 0x100038f, 0x1000399, 0x10003a3, 0x10003ad, 0x10003b7, 17208 0x10003c1, 0x10003cb, 0x10003d5, 0x1fb8, 0x1fb9, 0x100041e, 0x10003df, 17209 0x100042b, 0x0000, 0x100011b, 0x1000466, 0x1fb0, 0x1fb1, 0x1f70, 0x1f71, 17210 0x10003eb, 0x0000, 0x0399, 0x0000, 0x0000, 0x0000, 0x1000436, 0x10003f4, 17211 0x1000443, 0x0000, 0x1000126, 0x1000475, 0x1f72, 0x1f73, 0x1f74, 0x1f75, 17212 0x1000400, 0x0000, 0x0000, 0x0000, 0x1fd8, 0x1fd9, 0x1000131, 0x1000140, 17213 0x0000, 0x0000, 0x100014f, 0x100015a, 0x1fd0, 0x1fd1, 0x1f76, 0x1f77, 17214 0x0000, 0x0000, 0x0000, 0x0000, 0x1fe8, 0x1fe9, 0x1000169, 0x1000178, 17215 0x1000187, 0x1fec, 0x1000192, 0x100019d, 0x1fe0, 0x1fe1, 0x1f7a, 0x1f7b, 17216 0x1fe5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x100044e, 0x1000409, 17217 0x100045b, 0x0000, 0x10001ac, 0x1000484, 0x1f78, 0x1f79, 0x1f7c, 0x1f7d, 17218 0x1000415, 0x0000, 0x0000, 0x0000 17219 }, 17220 { /* page 33, index 26 */ 17221 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17222 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17223 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17224 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17225 0x0000, 0x0000, 0x03c9, 0x0000, 0x0000, 0x0000, 0x006b, 0x00e5, 0x0000, 17226 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x214e, 0x0000, 0x0000, 0x0000, 17227 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17228 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17229 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2132, 0x0000, 0x0000, 17230 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17231 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17232 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17233 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17234 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17235 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2184, 0x2183, 0x0000, 0x0000, 17236 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17237 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17238 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17239 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17240 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17241 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17242 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17243 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17244 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17245 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17246 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17247 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17248 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17249 0x0000, 0x0000, 0x0000, 0x0000 17250 }, 17251 { /* page 44, index 27 */ 17252 0x2c30, 0x2c31, 0x2c32, 0x2c33, 0x2c34, 0x2c35, 0x2c36, 0x2c37, 0x2c38, 17253 0x2c39, 0x2c3a, 0x2c3b, 0x2c3c, 0x2c3d, 0x2c3e, 0x2c3f, 0x2c40, 0x2c41, 17254 0x2c42, 0x2c43, 0x2c44, 0x2c45, 0x2c46, 0x2c47, 0x2c48, 0x2c49, 0x2c4a, 17255 0x2c4b, 0x2c4c, 0x2c4d, 0x2c4e, 0x2c4f, 0x2c50, 0x2c51, 0x2c52, 0x2c53, 17256 0x2c54, 0x2c55, 0x2c56, 0x2c57, 0x2c58, 0x2c59, 0x2c5a, 0x2c5b, 0x2c5c, 17257 0x2c5d, 0x2c5e, 0x0000, 0x2c00, 0x2c01, 0x2c02, 0x2c03, 0x2c04, 0x2c05, 17258 0x2c06, 0x2c07, 0x2c08, 0x2c09, 0x2c0a, 0x2c0b, 0x2c0c, 0x2c0d, 0x2c0e, 17259 0x2c0f, 0x2c10, 0x2c11, 0x2c12, 0x2c13, 0x2c14, 0x2c15, 0x2c16, 0x2c17, 17260 0x2c18, 0x2c19, 0x2c1a, 0x2c1b, 0x2c1c, 0x2c1d, 0x2c1e, 0x2c1f, 0x2c20, 17261 0x2c21, 0x2c22, 0x2c23, 0x2c24, 0x2c25, 0x2c26, 0x2c27, 0x2c28, 0x2c29, 17262 0x2c2a, 0x2c2b, 0x2c2c, 0x2c2d, 0x2c2e, 0x0000, 0x2c61, 0x2c60, 0x026b, 17263 0x1d7d, 0x027d, 0x023a, 0x023e, 0x2c68, 0x2c67, 0x2c6a, 0x2c69, 0x2c6c, 17264 0x2c6b, 0x0251, 0x0271, 0x0250, 0x0252, 0x0000, 0x2c73, 0x2c72, 0x0000, 17265 0x2c76, 0x2c75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17266 0x023f, 0x0240, 0x2c81, 0x2c80, 0x2c83, 0x2c82, 0x2c85, 0x2c84, 0x2c87, 17267 0x2c86, 0x2c89, 0x2c88, 0x2c8b, 0x2c8a, 0x2c8d, 0x2c8c, 0x2c8f, 0x2c8e, 17268 0x2c91, 0x2c90, 0x2c93, 0x2c92, 0x2c95, 0x2c94, 0x2c97, 0x2c96, 0x2c99, 17269 0x2c98, 0x2c9b, 0x2c9a, 0x2c9d, 0x2c9c, 0x2c9f, 0x2c9e, 0x2ca1, 0x2ca0, 17270 0x2ca3, 0x2ca2, 0x2ca5, 0x2ca4, 0x2ca7, 0x2ca6, 0x2ca9, 0x2ca8, 0x2cab, 17271 0x2caa, 0x2cad, 0x2cac, 0x2caf, 0x2cae, 0x2cb1, 0x2cb0, 0x2cb3, 0x2cb2, 17272 0x2cb5, 0x2cb4, 0x2cb7, 0x2cb6, 0x2cb9, 0x2cb8, 0x2cbb, 0x2cba, 0x2cbd, 17273 0x2cbc, 0x2cbf, 0x2cbe, 0x2cc1, 0x2cc0, 0x2cc3, 0x2cc2, 0x2cc5, 0x2cc4, 17274 0x2cc7, 0x2cc6, 0x2cc9, 0x2cc8, 0x2ccb, 0x2cca, 0x2ccd, 0x2ccc, 0x2ccf, 17275 0x2cce, 0x2cd1, 0x2cd0, 0x2cd3, 0x2cd2, 0x2cd5, 0x2cd4, 0x2cd7, 0x2cd6, 17276 0x2cd9, 0x2cd8, 0x2cdb, 0x2cda, 0x2cdd, 0x2cdc, 0x2cdf, 0x2cde, 0x2ce1, 17277 0x2ce0, 0x2ce3, 0x2ce2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17278 0x0000, 0x2cec, 0x2ceb, 0x2cee, 0x2ced, 0x0000, 0x0000, 0x0000, 0x2cf3, 17279 0x2cf2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17280 0x0000, 0x0000, 0x0000, 0x0000 17281 }, 17282 { /* page 45, index 28 */ 17283 0x10a0, 0x10a1, 0x10a2, 0x10a3, 0x10a4, 0x10a5, 0x10a6, 0x10a7, 0x10a8, 17284 0x10a9, 0x10aa, 0x10ab, 0x10ac, 0x10ad, 0x10ae, 0x10af, 0x10b0, 0x10b1, 17285 0x10b2, 0x10b3, 0x10b4, 0x10b5, 0x10b6, 0x10b7, 0x10b8, 0x10b9, 0x10ba, 17286 0x10bb, 0x10bc, 0x10bd, 0x10be, 0x10bf, 0x10c0, 0x10c1, 0x10c2, 0x10c3, 17287 0x10c4, 0x10c5, 0x0000, 0x10c7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17288 0x10cd, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17289 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17290 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17291 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17292 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17293 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17294 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17295 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17296 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17297 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17298 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17299 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17300 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17301 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17302 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17303 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17304 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17305 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17306 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17307 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17308 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17309 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17310 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17311 0x0000, 0x0000, 0x0000, 0x0000 17312 }, 17313 { /* page 166, index 29 */ 17314 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17315 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17316 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17317 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 17318 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 17319 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17320 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17321 0x0000, 0xa641, 0xa640, 0xa643, 0xa642, 0xa645, 0xa644, 0xa647, 0xa646, 17322 0xa649, 0xa648, 0xa64b, 0xa64a, 0xa64d, 0xa64c, 0xa64f, 0xa64e, 0xa651, 17323 0xa650, 0xa653, 0xa652, 0xa655, 0xa654, 0xa657, 0xa656, 0xa659, 0xa658, 17324 0xa65b, 0xa65a, 0xa65d, 0xa65c, 0xa65f, 0xa65e, 0xa661, 0xa660, 0xa663, 17325 0xa662, 0xa665, 0xa664, 0xa667, 0xa666, 0xa669, 0xa668, 0xa66b, 0xa66a, 17326 0xa66d, 0xa66c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17327 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17328 0x0000, 0x0000, 0xa681, 0xa680, 0xa683, 0xa682, 0xa685, 0xa684, 0xa687, 17329 0xa686, 0xa689, 0xa688, 0xa68b, 0xa68a, 0xa68d, 0xa68c, 0xa68f, 0xa68e, 17330 0xa691, 0xa690, 0xa693, 0xa692, 0xa695, 0xa694, 0xa697, 0xa696, 0xa699, 17331 0xa698, 0xa69b, 0xa69a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17332 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17333 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17334 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17335 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17336 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17337 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17338 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17339 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17340 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17341 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17342 0x0000, 0x0000, 0x0000, 0x0000 17343 }, 17344 { /* page 167, index 30 */ 17345 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17346 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17347 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17348 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa723, 0xa722, 17349 0xa725, 0xa724, 0xa727, 0xa726, 0xa729, 0xa728, 0xa72b, 0xa72a, 0xa72d, 17350 0xa72c, 0xa72f, 0xa72e, 0x0000, 0x0000, 0xa733, 0xa732, 0xa735, 0xa734, 17351 0xa737, 0xa736, 0xa739, 0xa738, 0xa73b, 0xa73a, 0xa73d, 0xa73c, 0xa73f, 17352 0xa73e, 0xa741, 0xa740, 0xa743, 0xa742, 0xa745, 0xa744, 0xa747, 0xa746, 17353 0xa749, 0xa748, 0xa74b, 0xa74a, 0xa74d, 0xa74c, 0xa74f, 0xa74e, 0xa751, 17354 0xa750, 0xa753, 0xa752, 0xa755, 0xa754, 0xa757, 0xa756, 0xa759, 0xa758, 17355 0xa75b, 0xa75a, 0xa75d, 0xa75c, 0xa75f, 0xa75e, 0xa761, 0xa760, 0xa763, 17356 0xa762, 0xa765, 0xa764, 0xa767, 0xa766, 0xa769, 0xa768, 0xa76b, 0xa76a, 17357 0xa76d, 0xa76c, 0xa76f, 0xa76e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17358 0x0000, 0x0000, 0x0000, 0x0000, 0xa77a, 0xa779, 0xa77c, 0xa77b, 0x1d79, 17359 0xa77f, 0xa77e, 0xa781, 0xa780, 0xa783, 0xa782, 0xa785, 0xa784, 0xa787, 17360 0xa786, 0x0000, 0x0000, 0x0000, 0xa78c, 0xa78b, 0x0265, 0x0000, 0x0000, 17361 0xa791, 0xa790, 0xa793, 0xa792, 0x0000, 0x0000, 0xa797, 0xa796, 0xa799, 17362 0xa798, 0xa79b, 0xa79a, 0xa79d, 0xa79c, 0xa79f, 0xa79e, 0xa7a1, 0xa7a0, 17363 0xa7a3, 0xa7a2, 0xa7a5, 0xa7a4, 0xa7a7, 0xa7a6, 0xa7a9, 0xa7a8, 0x0266, 17364 0x025c, 0x0261, 0x026c, 0x026a, 0x0000, 0x029e, 0x0287, 0x029d, 0xab53, 17365 0xa7b5, 0xa7b4, 0xa7b7, 0xa7b6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17366 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17367 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17368 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17369 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17370 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17371 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17372 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17373 0x0000, 0x0000, 0x0000, 0x0000 17374 }, 17375 { /* page 168, index 31 */ 17376 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17377 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17378 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17379 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17380 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17381 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17382 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17383 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17384 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17385 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17386 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17387 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17388 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17389 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17390 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17391 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17392 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17393 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17394 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17395 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17396 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17397 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17398 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17399 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 17400 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17401 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17402 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17403 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17404 0x0000, 0x0000, 0x0000, 0x0000 17405 }, 17406 { /* page 169, index 32 */ 17407 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 17408 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17409 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17410 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17411 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17412 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17413 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17414 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17415 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17416 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17417 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17418 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17419 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17420 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17421 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17422 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17423 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17424 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17425 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17426 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17427 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17428 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17429 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17430 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 17431 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17432 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17433 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 17434 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 17435 0x0000, 0x0000, 0x0000, 0x0000 17436 }, 17437 { /* page 170, index 33 */ 17438 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17439 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17440 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17441 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17442 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17443 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17444 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17445 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17446 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17447 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 17448 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17449 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17450 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17451 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17452 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17453 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17454 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17455 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17456 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17457 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17458 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17459 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17460 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17461 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17462 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17463 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17464 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17465 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17466 0x0000, 0x0000, 0x0000, 0x0000 17467 }, 17468 { /* page 171, index 34 */ 17469 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17470 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17471 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17472 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17473 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17474 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17475 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17476 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17477 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17478 0x0000, 0x0000, 0xa7b3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17479 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17480 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17481 0x0000, 0x0000, 0x0000, 0x0000, 0x13a0, 0x13a1, 0x13a2, 0x13a3, 0x13a4, 17482 0x13a5, 0x13a6, 0x13a7, 0x13a8, 0x13a9, 0x13aa, 0x13ab, 0x13ac, 0x13ad, 17483 0x13ae, 0x13af, 0x13b0, 0x13b1, 0x13b2, 0x13b3, 0x13b4, 0x13b5, 0x13b6, 17484 0x13b7, 0x13b8, 0x13b9, 0x13ba, 0x13bb, 0x13bc, 0x13bd, 0x13be, 0x13bf, 17485 0x13c0, 0x13c1, 0x13c2, 0x13c3, 0x13c4, 0x13c5, 0x13c6, 0x13c7, 0x13c8, 17486 0x13c9, 0x13ca, 0x13cb, 0x13cc, 0x13cd, 0x13ce, 0x13cf, 0x13d0, 0x13d1, 17487 0x13d2, 0x13d3, 0x13d4, 0x13d5, 0x13d6, 0x13d7, 0x13d8, 0x13d9, 0x13da, 17488 0x13db, 0x13dc, 0x13dd, 0x13de, 0x13df, 0x13e0, 0x13e1, 0x13e2, 0x13e3, 17489 0x13e4, 0x13e5, 0x13e6, 0x13e7, 0x13e8, 0x13e9, 0x13ea, 0x13eb, 0x13ec, 17490 0x13ed, 0x13ee, 0x13ef, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17491 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17492 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17493 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17494 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17495 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 17496 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 17497 0x0000, 0x0000, 0x0000, 0x0000 17498 }, 17499 { /* page 251, index 35 */ 17500 0x100000f, 0x1000016, 0x100001d, 0x1000024, 0x100002d, 0x1000036, 17501 0x100003d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17502 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x100004f, 0x100005a, 0x1000065, 17503 0x1000070, 0x100007b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17504 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17505 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17506 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17507 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17508 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17509 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17510 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17511 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17512 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17513 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17514 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17515 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17516 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17517 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17518 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17519 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17520 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17521 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17522 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17523 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17524 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17525 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17526 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17527 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17528 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17529 0x0000 17530 }, 17531 { /* page 255, index 36 */ 17532 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17533 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 17534 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 17535 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xff41, 0xff42, 0xff43, 17536 0xff44, 0xff45, 0xff46, 0xff47, 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 17537 0xff4d, 0xff4e, 0xff4f, 0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 17538 0xff56, 0xff57, 0xff58, 0xff59, 0xff5a, 0x0000, 0x0000, 0x0000, 0x0000, 17539 0x0000, 0x0000, 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 17540 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30, 17541 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 17542 0xff3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17543 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17544 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17545 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17546 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17547 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17548 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17549 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17550 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17551 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17552 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17553 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17554 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17555 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17556 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17557 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17558 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17559 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17560 0x0000, 0x0000, 0x0000, 0x0000 17561 }, 17562 { /* page 260, index 37 */ 17563 0x10428, 0x10429, 0x1042a, 0x1042b, 0x1042c, 0x1042d, 0x1042e, 0x1042f, 17564 0x10430, 0x10431, 0x10432, 0x10433, 0x10434, 0x10435, 0x10436, 0x10437, 17565 0x10438, 0x10439, 0x1043a, 0x1043b, 0x1043c, 0x1043d, 0x1043e, 0x1043f, 17566 0x10440, 0x10441, 0x10442, 0x10443, 0x10444, 0x10445, 0x10446, 0x10447, 17567 0x10448, 0x10449, 0x1044a, 0x1044b, 0x1044c, 0x1044d, 0x1044e, 0x1044f, 17568 0x10400, 0x10401, 0x10402, 0x10403, 0x10404, 0x10405, 0x10406, 0x10407, 17569 0x10408, 0x10409, 0x1040a, 0x1040b, 0x1040c, 0x1040d, 0x1040e, 0x1040f, 17570 0x10410, 0x10411, 0x10412, 0x10413, 0x10414, 0x10415, 0x10416, 0x10417, 17571 0x10418, 0x10419, 0x1041a, 0x1041b, 0x1041c, 0x1041d, 0x1041e, 0x1041f, 17572 0x10420, 0x10421, 0x10422, 0x10423, 0x10424, 0x10425, 0x10426, 0x10427, 17573 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17574 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17575 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17576 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17577 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17578 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17579 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17580 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17581 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17582 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 17583 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x104d8, 0x104d9, 17584 0x104da, 0x104db, 0x104dc, 0x104dd, 0x104de, 0x104df, 0x104e0, 0x104e1, 17585 0x104e2, 0x104e3, 0x104e4, 0x104e5, 0x104e6, 0x104e7, 0x104e8, 0x104e9, 17586 0x104ea, 0x104eb, 0x104ec, 0x104ed, 0x104ee, 0x104ef, 0x104f0, 0x104f1, 17587 0x104f2, 0x104f3, 0x104f4, 0x104f5, 0x104f6, 0x104f7, 0x104f8, 0x104f9, 17588 0x104fa, 0x104fb, 0x0000, 0x0000, 0x0000, 0x0000, 0x104b0, 0x104b1, 17589 0x104b2, 0x104b3, 0x104b4, 0x104b5, 0x104b6, 0x104b7, 0x104b8, 0x104b9, 17590 0x104ba, 0x104bb, 0x104bc, 0x104bd, 0x104be, 0x104bf, 0x104c0, 0x104c1, 17591 0x104c2, 0x104c3, 0x104c4, 0x104c5, 0x104c6, 0x104c7, 0x104c8, 0x104c9, 17592 0x104ca, 0x104cb, 0x104cc, 0x104cd, 0x104ce, 0x104cf, 0x104d0, 0x104d1, 17593 0x104d2, 0x104d3, 0x0000, 0x0000, 0x0000, 0x0000 17594 }, 17595 { /* page 268, index 38 */ 17596 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17597 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17598 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17599 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17600 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17601 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17602 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17603 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17604 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17605 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17606 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17607 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17608 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17609 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17610 0x0000, 0x0000, 0x10cc0, 0x10cc1, 0x10cc2, 0x10cc3, 0x10cc4, 0x10cc5, 17611 0x10cc6, 0x10cc7, 0x10cc8, 0x10cc9, 0x10cca, 0x10ccb, 0x10ccc, 0x10ccd, 17612 0x10cce, 0x10ccf, 0x10cd0, 0x10cd1, 0x10cd2, 0x10cd3, 0x10cd4, 0x10cd5, 17613 0x10cd6, 0x10cd7, 0x10cd8, 0x10cd9, 0x10cda, 0x10cdb, 0x10cdc, 0x10cdd, 17614 0x10cde, 0x10cdf, 0x10ce0, 0x10ce1, 0x10ce2, 0x10ce3, 0x10ce4, 0x10ce5, 17615 0x10ce6, 0x10ce7, 0x10ce8, 0x10ce9, 0x10cea, 0x10ceb, 0x10cec, 0x10ced, 17616 0x10cee, 0x10cef, 0x10cf0, 0x10cf1, 0x10cf2, 0x0000, 0x0000, 0x0000, 17617 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17618 0x0000, 0x10c80, 0x10c81, 0x10c82, 0x10c83, 0x10c84, 0x10c85, 0x10c86, 17619 0x10c87, 0x10c88, 0x10c89, 0x10c8a, 0x10c8b, 0x10c8c, 0x10c8d, 0x10c8e, 17620 0x10c8f, 0x10c90, 0x10c91, 0x10c92, 0x10c93, 0x10c94, 0x10c95, 0x10c96, 17621 0x10c97, 0x10c98, 0x10c99, 0x10c9a, 0x10c9b, 0x10c9c, 0x10c9d, 0x10c9e, 17622 0x10c9f, 0x10ca0, 0x10ca1, 0x10ca2, 0x10ca3, 0x10ca4, 0x10ca5, 0x10ca6, 17623 0x10ca7, 0x10ca8, 0x10ca9, 0x10caa, 0x10cab, 0x10cac, 0x10cad, 0x10cae, 17624 0x10caf, 0x10cb0, 0x10cb1, 0x10cb2, 0x0000, 0x0000, 0x0000, 0x0000, 17625 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 17626 }, 17627 { /* page 272, index 39 */ 17628 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17629 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17630 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17631 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17632 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17633 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17634 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17635 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17636 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17637 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17638 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17639 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 17640 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17641 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17642 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17643 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17644 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17645 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17646 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17647 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17648 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17649 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17650 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17651 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17652 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17653 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17654 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 17655 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 17656 0x0000, 0x0000, 0x0000, 0x0000 17657 }, 17658 { /* page 273, index 40 */ 17659 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17660 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17661 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17662 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17663 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17664 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17665 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 17666 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17667 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17668 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17669 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17670 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17671 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17672 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17673 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17674 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17675 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17676 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17677 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17678 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17679 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17680 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17681 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17682 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 17683 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17684 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17685 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17686 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17687 0x0000, 0x0000, 0x0000, 0x0000 17688 }, 17689 { /* page 274, index 41 */ 17690 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17691 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17692 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17693 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17694 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17695 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17696 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17697 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17698 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17699 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17700 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17701 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17702 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17703 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17704 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17705 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17706 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17707 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17708 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17709 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17710 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17711 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17712 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17713 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17714 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17715 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17716 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 17717 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 17718 0x0000, 0x0000, 0x0000, 0x0000 17719 }, 17720 { /* page 276, index 42 */ 17721 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17722 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17723 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17724 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17725 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17726 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17727 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17728 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17729 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17730 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 17731 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17732 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17733 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17734 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17735 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17736 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17737 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17738 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17739 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17740 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17741 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17742 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17743 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17744 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 17745 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17746 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17747 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17748 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17749 0x0000, 0x0000, 0x0000, 0x0000 17750 }, 17751 { /* page 278, index 43 */ 17752 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17753 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17754 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17755 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17756 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17757 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17758 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17759 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17760 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17761 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 17762 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17763 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17764 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17765 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17766 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17767 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17768 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17769 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17770 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17771 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17772 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17773 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 17774 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17775 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17776 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17777 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17778 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17779 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17780 0x0000, 0x0000, 0x0000, 0x0000 17781 }, 17782 { /* page 279, index 44 */ 17783 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17784 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17785 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17786 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17787 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17788 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 17789 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17790 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17791 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17792 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17793 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17794 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17795 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17796 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17797 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17798 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17799 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17800 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17801 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17802 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17803 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17804 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17805 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17806 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17807 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17808 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17809 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17810 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17811 0x0000, 0x0000, 0x0000, 0x0000 17812 }, 17813 { /* page 280, index 45 */ 17814 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17815 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17816 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17817 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17818 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17819 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17820 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17821 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17822 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17823 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17824 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17825 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17826 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17827 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17828 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17829 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17830 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17831 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x118c0, 0x118c1, 17832 0x118c2, 0x118c3, 0x118c4, 0x118c5, 0x118c6, 0x118c7, 0x118c8, 0x118c9, 17833 0x118ca, 0x118cb, 0x118cc, 0x118cd, 0x118ce, 0x118cf, 0x118d0, 0x118d1, 17834 0x118d2, 0x118d3, 0x118d4, 0x118d5, 0x118d6, 0x118d7, 0x118d8, 0x118d9, 17835 0x118da, 0x118db, 0x118dc, 0x118dd, 0x118de, 0x118df, 0x118a0, 0x118a1, 17836 0x118a2, 0x118a3, 0x118a4, 0x118a5, 0x118a6, 0x118a7, 0x118a8, 0x118a9, 17837 0x118aa, 0x118ab, 0x118ac, 0x118ad, 0x118ae, 0x118af, 0x118b0, 0x118b1, 17838 0x118b2, 0x118b3, 0x118b4, 0x118b5, 0x118b6, 0x118b7, 0x118b8, 0x118b9, 17839 0x118ba, 0x118bb, 0x118bc, 0x118bd, 0x118be, 0x118bf, 0x0000, 0x0001, 17840 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 17841 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17842 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17843 0x0000, 0x0000, 0x0000 17844 }, 17845 { /* page 284, index 46 */ 17846 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17847 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17848 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17849 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17850 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17851 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17852 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17853 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17854 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17855 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 17856 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17857 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17858 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17859 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17860 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17861 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17862 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17863 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17864 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17865 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17866 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17867 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17868 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17869 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17870 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17871 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17872 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17873 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17874 0x0000, 0x0000, 0x0000, 0x0000 17875 }, 17876 { /* page 285, index 47 */ 17877 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17878 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17879 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17880 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17881 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17882 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17883 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17884 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17885 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17886 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 17887 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17888 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17889 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17890 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17891 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17892 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17893 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17894 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17895 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17896 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17897 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17898 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17899 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17900 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17901 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17902 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17903 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17904 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17905 0x0000, 0x0000, 0x0000, 0x0000 17906 }, 17907 { /* page 362, index 48 */ 17908 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17909 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17910 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17911 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17912 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17913 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17914 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17915 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17916 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17917 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17918 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 17919 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 17920 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17921 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17922 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17923 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17924 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17925 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17926 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17927 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17928 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17929 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17930 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17931 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17932 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17933 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17934 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17935 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17936 0x0000, 0x0000, 0x0000, 0x0000 17937 }, 17938 { /* page 363, index 49 */ 17939 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17940 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17941 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17942 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17943 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17944 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17945 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17946 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17947 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17948 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 17949 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17950 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17951 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17952 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17953 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17954 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17955 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17956 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17957 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17958 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17959 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17960 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17961 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17962 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17963 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17964 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17965 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17966 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17967 0x0000, 0x0000, 0x0000, 0x0000 17968 }, 17969 { /* page 471, index 50 */ 17970 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17971 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17972 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17973 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17974 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17975 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17976 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17977 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17978 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17979 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17980 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17981 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17982 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17983 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17984 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17985 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17986 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17987 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17988 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17989 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17990 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17991 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17992 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17993 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 17994 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 17995 0x0009, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 17996 0x0008, 0x0009, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 17997 0x0007, 0x0008, 0x0009, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 17998 0x0006, 0x0007, 0x0008, 0x0009 17999 }, 18000 { /* page 489, index 51 */ 18001 0x1e922, 0x1e923, 0x1e924, 0x1e925, 0x1e926, 0x1e927, 0x1e928, 0x1e929, 18002 0x1e92a, 0x1e92b, 0x1e92c, 0x1e92d, 0x1e92e, 0x1e92f, 0x1e930, 0x1e931, 18003 0x1e932, 0x1e933, 0x1e934, 0x1e935, 0x1e936, 0x1e937, 0x1e938, 0x1e939, 18004 0x1e93a, 0x1e93b, 0x1e93c, 0x1e93d, 0x1e93e, 0x1e93f, 0x1e940, 0x1e941, 18005 0x1e942, 0x1e943, 0x1e900, 0x1e901, 0x1e902, 0x1e903, 0x1e904, 0x1e905, 18006 0x1e906, 0x1e907, 0x1e908, 0x1e909, 0x1e90a, 0x1e90b, 0x1e90c, 0x1e90d, 18007 0x1e90e, 0x1e90f, 0x1e910, 0x1e911, 0x1e912, 0x1e913, 0x1e914, 0x1e915, 18008 0x1e916, 0x1e917, 0x1e918, 0x1e919, 0x1e91a, 0x1e91b, 0x1e91c, 0x1e91d, 18009 0x1e91e, 0x1e91f, 0x1e920, 0x1e921, 0x0000, 0x0000, 0x0000, 0x0000, 18010 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18011 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 18012 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18013 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18014 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18015 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18016 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18017 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18018 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18019 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18020 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18021 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18022 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18023 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18024 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18025 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18026 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18027 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18028 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18029 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18030 0x0000, 0x0000, 0x0000, 0x0000 18031 } 18032 }; 18033 18034 /* U+0000 through U+2FAFF */ 18035 static const int16_t attr_table_part1[763] = { 18036 0 /* page 0 */, 18037 1 /* page 1 */, 18038 2 /* page 2 */, 18039 3 /* page 3 */, 18040 4 /* page 4 */, 18041 5 /* page 5 */, 18042 6 /* page 6 */, 18043 7 /* page 7 */, 18044 0x0000 + UNICODE_MAX_TABLE_INDEX, 18045 8 /* page 9 */, 18046 9 /* page 10 */, 18047 10 /* page 11 */, 18048 11 /* page 12 */, 18049 12 /* page 13 */, 18050 13 /* page 14 */, 18051 14 /* page 15 */, 18052 15 /* page 16 */, 18053 0x0000 + UNICODE_MAX_TABLE_INDEX, 18054 0x0000 + UNICODE_MAX_TABLE_INDEX, 18055 16 /* page 19 */, 18056 0x0000 + UNICODE_MAX_TABLE_INDEX, 18057 0x0000 + UNICODE_MAX_TABLE_INDEX, 18058 0x0000 + UNICODE_MAX_TABLE_INDEX, 18059 17 /* page 23 */, 18060 18 /* page 24 */, 18061 19 /* page 25 */, 18062 20 /* page 26 */, 18063 21 /* page 27 */, 18064 22 /* page 28 */, 18065 23 /* page 29 */, 18066 24 /* page 30 */, 18067 25 /* page 31 */, 18068 0x0000 + UNICODE_MAX_TABLE_INDEX, 18069 26 /* page 33 */, 18070 0x0000 + UNICODE_MAX_TABLE_INDEX, 18071 0x0000 + UNICODE_MAX_TABLE_INDEX, 18072 0x0000 + UNICODE_MAX_TABLE_INDEX, 18073 0x0000 + UNICODE_MAX_TABLE_INDEX, 18074 0x0000 + UNICODE_MAX_TABLE_INDEX, 18075 0x0000 + UNICODE_MAX_TABLE_INDEX, 18076 0x0000 + UNICODE_MAX_TABLE_INDEX, 18077 0x0000 + UNICODE_MAX_TABLE_INDEX, 18078 0x0000 + UNICODE_MAX_TABLE_INDEX, 18079 0x0000 + UNICODE_MAX_TABLE_INDEX, 18080 27 /* page 44 */, 18081 28 /* page 45 */, 18082 0x0000 + UNICODE_MAX_TABLE_INDEX, 18083 0x0000 + UNICODE_MAX_TABLE_INDEX, 18084 0x0000 + UNICODE_MAX_TABLE_INDEX, 18085 0x0000 + UNICODE_MAX_TABLE_INDEX, 18086 0x0000 + UNICODE_MAX_TABLE_INDEX, 18087 0x0000 + UNICODE_MAX_TABLE_INDEX, 18088 0x0000 + UNICODE_MAX_TABLE_INDEX, 18089 0x0000 + UNICODE_MAX_TABLE_INDEX, 18090 0x0000 + UNICODE_MAX_TABLE_INDEX, 18091 0x0000 + UNICODE_MAX_TABLE_INDEX, 18092 0x0000 + UNICODE_MAX_TABLE_INDEX, 18093 0x0000 + UNICODE_MAX_TABLE_INDEX, 18094 0x0000 + UNICODE_MAX_TABLE_INDEX, 18095 0x0000 + UNICODE_MAX_TABLE_INDEX, 18096 0x0000 + UNICODE_MAX_TABLE_INDEX, 18097 0x0000 + UNICODE_MAX_TABLE_INDEX, 18098 0x0000 + UNICODE_MAX_TABLE_INDEX, 18099 0x0000 + UNICODE_MAX_TABLE_INDEX, 18100 0x0000 + UNICODE_MAX_TABLE_INDEX, 18101 0x0000 + UNICODE_MAX_TABLE_INDEX, 18102 0x0000 + UNICODE_MAX_TABLE_INDEX, 18103 0x0000 + UNICODE_MAX_TABLE_INDEX, 18104 0x0000 + UNICODE_MAX_TABLE_INDEX, 18105 0x0000 + UNICODE_MAX_TABLE_INDEX, 18106 0x0000 + UNICODE_MAX_TABLE_INDEX, 18107 0x0000 + UNICODE_MAX_TABLE_INDEX, 18108 0x0000 + UNICODE_MAX_TABLE_INDEX, 18109 0x0000 + UNICODE_MAX_TABLE_INDEX, 18110 0x0000 + UNICODE_MAX_TABLE_INDEX, 18111 0x0000 + UNICODE_MAX_TABLE_INDEX, 18112 0x0000 + UNICODE_MAX_TABLE_INDEX, 18113 0x0000 + UNICODE_MAX_TABLE_INDEX, 18114 0x0000 + UNICODE_MAX_TABLE_INDEX, 18115 0x0000 + UNICODE_MAX_TABLE_INDEX, 18116 0x0000 + UNICODE_MAX_TABLE_INDEX, 18117 0x0000 + UNICODE_MAX_TABLE_INDEX, 18118 0x0000 + UNICODE_MAX_TABLE_INDEX, 18119 0x0000 + UNICODE_MAX_TABLE_INDEX, 18120 0x0000 + UNICODE_MAX_TABLE_INDEX, 18121 0x0000 + UNICODE_MAX_TABLE_INDEX, 18122 0x0000 + UNICODE_MAX_TABLE_INDEX, 18123 0x0000 + UNICODE_MAX_TABLE_INDEX, 18124 0x0000 + UNICODE_MAX_TABLE_INDEX, 18125 0x0000 + UNICODE_MAX_TABLE_INDEX, 18126 0x0000 + UNICODE_MAX_TABLE_INDEX, 18127 0x0000 + UNICODE_MAX_TABLE_INDEX, 18128 0x0000 + UNICODE_MAX_TABLE_INDEX, 18129 0x0000 + UNICODE_MAX_TABLE_INDEX, 18130 0x0000 + UNICODE_MAX_TABLE_INDEX, 18131 0x0000 + UNICODE_MAX_TABLE_INDEX, 18132 0x0000 + UNICODE_MAX_TABLE_INDEX, 18133 0x0000 + UNICODE_MAX_TABLE_INDEX, 18134 0x0000 + UNICODE_MAX_TABLE_INDEX, 18135 0x0000 + UNICODE_MAX_TABLE_INDEX, 18136 0x0000 + UNICODE_MAX_TABLE_INDEX, 18137 0x0000 + UNICODE_MAX_TABLE_INDEX, 18138 0x0000 + UNICODE_MAX_TABLE_INDEX, 18139 0x0000 + UNICODE_MAX_TABLE_INDEX, 18140 0x0000 + UNICODE_MAX_TABLE_INDEX, 18141 0x0000 + UNICODE_MAX_TABLE_INDEX, 18142 0x0000 + UNICODE_MAX_TABLE_INDEX, 18143 0x0000 + UNICODE_MAX_TABLE_INDEX, 18144 0x0000 + UNICODE_MAX_TABLE_INDEX, 18145 0x0000 + UNICODE_MAX_TABLE_INDEX, 18146 0x0000 + UNICODE_MAX_TABLE_INDEX, 18147 0x0000 + UNICODE_MAX_TABLE_INDEX, 18148 0x0000 + UNICODE_MAX_TABLE_INDEX, 18149 0x0000 + UNICODE_MAX_TABLE_INDEX, 18150 0x0000 + UNICODE_MAX_TABLE_INDEX, 18151 0x0000 + UNICODE_MAX_TABLE_INDEX, 18152 0x0000 + UNICODE_MAX_TABLE_INDEX, 18153 0x0000 + UNICODE_MAX_TABLE_INDEX, 18154 0x0000 + UNICODE_MAX_TABLE_INDEX, 18155 0x0000 + UNICODE_MAX_TABLE_INDEX, 18156 0x0000 + UNICODE_MAX_TABLE_INDEX, 18157 0x0000 + UNICODE_MAX_TABLE_INDEX, 18158 0x0000 + UNICODE_MAX_TABLE_INDEX, 18159 0x0000 + UNICODE_MAX_TABLE_INDEX, 18160 0x0000 + UNICODE_MAX_TABLE_INDEX, 18161 0x0000 + UNICODE_MAX_TABLE_INDEX, 18162 0x0000 + UNICODE_MAX_TABLE_INDEX, 18163 0x0000 + UNICODE_MAX_TABLE_INDEX, 18164 0x0000 + UNICODE_MAX_TABLE_INDEX, 18165 0x0000 + UNICODE_MAX_TABLE_INDEX, 18166 0x0000 + UNICODE_MAX_TABLE_INDEX, 18167 0x0000 + UNICODE_MAX_TABLE_INDEX, 18168 0x0000 + UNICODE_MAX_TABLE_INDEX, 18169 0x0000 + UNICODE_MAX_TABLE_INDEX, 18170 0x0000 + UNICODE_MAX_TABLE_INDEX, 18171 0x0000 + UNICODE_MAX_TABLE_INDEX, 18172 0x0000 + UNICODE_MAX_TABLE_INDEX, 18173 0x0000 + UNICODE_MAX_TABLE_INDEX, 18174 0x0000 + UNICODE_MAX_TABLE_INDEX, 18175 0x0000 + UNICODE_MAX_TABLE_INDEX, 18176 0x0000 + UNICODE_MAX_TABLE_INDEX, 18177 0x0000 + UNICODE_MAX_TABLE_INDEX, 18178 0x0000 + UNICODE_MAX_TABLE_INDEX, 18179 0x0000 + UNICODE_MAX_TABLE_INDEX, 18180 0x0000 + UNICODE_MAX_TABLE_INDEX, 18181 0x0000 + UNICODE_MAX_TABLE_INDEX, 18182 0x0000 + UNICODE_MAX_TABLE_INDEX, 18183 0x0000 + UNICODE_MAX_TABLE_INDEX, 18184 0x0000 + UNICODE_MAX_TABLE_INDEX, 18185 0x0000 + UNICODE_MAX_TABLE_INDEX, 18186 0x0000 + UNICODE_MAX_TABLE_INDEX, 18187 0x0000 + UNICODE_MAX_TABLE_INDEX, 18188 0x0000 + UNICODE_MAX_TABLE_INDEX, 18189 0x0000 + UNICODE_MAX_TABLE_INDEX, 18190 0x0000 + UNICODE_MAX_TABLE_INDEX, 18191 0x0000 + UNICODE_MAX_TABLE_INDEX, 18192 0x0000 + UNICODE_MAX_TABLE_INDEX, 18193 0x0000 + UNICODE_MAX_TABLE_INDEX, 18194 0x0000 + UNICODE_MAX_TABLE_INDEX, 18195 0x0000 + UNICODE_MAX_TABLE_INDEX, 18196 0x0000 + UNICODE_MAX_TABLE_INDEX, 18197 0x0000 + UNICODE_MAX_TABLE_INDEX, 18198 0x0000 + UNICODE_MAX_TABLE_INDEX, 18199 0x0000 + UNICODE_MAX_TABLE_INDEX, 18200 0x0000 + UNICODE_MAX_TABLE_INDEX, 18201 0x0000 + UNICODE_MAX_TABLE_INDEX, 18202 29 /* page 166 */, 18203 30 /* page 167 */, 18204 31 /* page 168 */, 18205 32 /* page 169 */, 18206 33 /* page 170 */, 18207 34 /* page 171 */, 18208 0x0000 + UNICODE_MAX_TABLE_INDEX, 18209 0x0000 + UNICODE_MAX_TABLE_INDEX, 18210 0x0000 + UNICODE_MAX_TABLE_INDEX, 18211 0x0000 + UNICODE_MAX_TABLE_INDEX, 18212 0x0000 + UNICODE_MAX_TABLE_INDEX, 18213 0x0000 + UNICODE_MAX_TABLE_INDEX, 18214 0x0000 + UNICODE_MAX_TABLE_INDEX, 18215 0x0000 + UNICODE_MAX_TABLE_INDEX, 18216 0x0000 + UNICODE_MAX_TABLE_INDEX, 18217 0x0000 + UNICODE_MAX_TABLE_INDEX, 18218 0x0000 + UNICODE_MAX_TABLE_INDEX, 18219 0x0000 + UNICODE_MAX_TABLE_INDEX, 18220 0x0000 + UNICODE_MAX_TABLE_INDEX, 18221 0x0000 + UNICODE_MAX_TABLE_INDEX, 18222 0x0000 + UNICODE_MAX_TABLE_INDEX, 18223 0x0000 + UNICODE_MAX_TABLE_INDEX, 18224 0x0000 + UNICODE_MAX_TABLE_INDEX, 18225 0x0000 + UNICODE_MAX_TABLE_INDEX, 18226 0x0000 + UNICODE_MAX_TABLE_INDEX, 18227 0x0000 + UNICODE_MAX_TABLE_INDEX, 18228 0x0000 + UNICODE_MAX_TABLE_INDEX, 18229 0x0000 + UNICODE_MAX_TABLE_INDEX, 18230 0x0000 + UNICODE_MAX_TABLE_INDEX, 18231 0x0000 + UNICODE_MAX_TABLE_INDEX, 18232 0x0000 + UNICODE_MAX_TABLE_INDEX, 18233 0x0000 + UNICODE_MAX_TABLE_INDEX, 18234 0x0000 + UNICODE_MAX_TABLE_INDEX, 18235 0x0000 + UNICODE_MAX_TABLE_INDEX, 18236 0x0000 + UNICODE_MAX_TABLE_INDEX, 18237 0x0000 + UNICODE_MAX_TABLE_INDEX, 18238 0x0000 + UNICODE_MAX_TABLE_INDEX, 18239 0x0000 + UNICODE_MAX_TABLE_INDEX, 18240 0x0000 + UNICODE_MAX_TABLE_INDEX, 18241 0x0000 + UNICODE_MAX_TABLE_INDEX, 18242 0x0000 + UNICODE_MAX_TABLE_INDEX, 18243 0x0000 + UNICODE_MAX_TABLE_INDEX, 18244 0x0000 + UNICODE_MAX_TABLE_INDEX, 18245 0x0000 + UNICODE_MAX_TABLE_INDEX, 18246 0x0000 + UNICODE_MAX_TABLE_INDEX, 18247 0x0000 + UNICODE_MAX_TABLE_INDEX, 18248 0x0000 + UNICODE_MAX_TABLE_INDEX, 18249 0x0000 + UNICODE_MAX_TABLE_INDEX, 18250 0x0000 + UNICODE_MAX_TABLE_INDEX, 18251 0x0000 + UNICODE_MAX_TABLE_INDEX, 18252 0x0000 + UNICODE_MAX_TABLE_INDEX, 18253 0x0000 + UNICODE_MAX_TABLE_INDEX, 18254 0x0000 + UNICODE_MAX_TABLE_INDEX, 18255 0x0000 + UNICODE_MAX_TABLE_INDEX, 18256 0x0000 + UNICODE_MAX_TABLE_INDEX, 18257 0x0000 + UNICODE_MAX_TABLE_INDEX, 18258 0x0000 + UNICODE_MAX_TABLE_INDEX, 18259 0x0000 + UNICODE_MAX_TABLE_INDEX, 18260 0x0000 + UNICODE_MAX_TABLE_INDEX, 18261 0x0000 + UNICODE_MAX_TABLE_INDEX, 18262 0x0000 + UNICODE_MAX_TABLE_INDEX, 18263 0x0000 + UNICODE_MAX_TABLE_INDEX, 18264 0x0000 + UNICODE_MAX_TABLE_INDEX, 18265 0x0000 + UNICODE_MAX_TABLE_INDEX, 18266 0x0000 + UNICODE_MAX_TABLE_INDEX, 18267 0x0000 + UNICODE_MAX_TABLE_INDEX, 18268 0x0000 + UNICODE_MAX_TABLE_INDEX, 18269 0x0000 + UNICODE_MAX_TABLE_INDEX, 18270 0x0000 + UNICODE_MAX_TABLE_INDEX, 18271 0x0000 + UNICODE_MAX_TABLE_INDEX, 18272 0x0000 + UNICODE_MAX_TABLE_INDEX, 18273 0x0000 + UNICODE_MAX_TABLE_INDEX, 18274 0x0000 + UNICODE_MAX_TABLE_INDEX, 18275 0x0000 + UNICODE_MAX_TABLE_INDEX, 18276 0x0000 + UNICODE_MAX_TABLE_INDEX, 18277 0x0000 + UNICODE_MAX_TABLE_INDEX, 18278 0x0000 + UNICODE_MAX_TABLE_INDEX, 18279 0x0000 + UNICODE_MAX_TABLE_INDEX, 18280 0x0000 + UNICODE_MAX_TABLE_INDEX, 18281 0x0000 + UNICODE_MAX_TABLE_INDEX, 18282 0x0000 + UNICODE_MAX_TABLE_INDEX, 18283 0x0000 + UNICODE_MAX_TABLE_INDEX, 18284 0x0000 + UNICODE_MAX_TABLE_INDEX, 18285 0x0000 + UNICODE_MAX_TABLE_INDEX, 18286 0x0000 + UNICODE_MAX_TABLE_INDEX, 18287 35 /* page 251 */, 18288 0x0000 + UNICODE_MAX_TABLE_INDEX, 18289 0x0000 + UNICODE_MAX_TABLE_INDEX, 18290 0x0000 + UNICODE_MAX_TABLE_INDEX, 18291 36 /* page 255 */, 18292 0x0000 + UNICODE_MAX_TABLE_INDEX, 18293 0x0000 + UNICODE_MAX_TABLE_INDEX, 18294 0x0000 + UNICODE_MAX_TABLE_INDEX, 18295 0x0000 + UNICODE_MAX_TABLE_INDEX, 18296 37 /* page 260 */, 18297 0x0000 + UNICODE_MAX_TABLE_INDEX, 18298 0x0000 + UNICODE_MAX_TABLE_INDEX, 18299 0x0000 + UNICODE_MAX_TABLE_INDEX, 18300 0x0000 + UNICODE_MAX_TABLE_INDEX, 18301 0x0000 + UNICODE_MAX_TABLE_INDEX, 18302 0x0000 + UNICODE_MAX_TABLE_INDEX, 18303 0x0000 + UNICODE_MAX_TABLE_INDEX, 18304 38 /* page 268 */, 18305 0x0000 + UNICODE_MAX_TABLE_INDEX, 18306 0x0000 + UNICODE_MAX_TABLE_INDEX, 18307 0x0000 + UNICODE_MAX_TABLE_INDEX, 18308 39 /* page 272 */, 18309 40 /* page 273 */, 18310 41 /* page 274 */, 18311 0x0000 + UNICODE_MAX_TABLE_INDEX, 18312 42 /* page 276 */, 18313 0x0000 + UNICODE_MAX_TABLE_INDEX, 18314 43 /* page 278 */, 18315 44 /* page 279 */, 18316 45 /* page 280 */, 18317 0x0000 + UNICODE_MAX_TABLE_INDEX, 18318 0x0000 + UNICODE_MAX_TABLE_INDEX, 18319 0x0000 + UNICODE_MAX_TABLE_INDEX, 18320 46 /* page 284 */, 18321 47 /* page 285 */, 18322 0x0000 + UNICODE_MAX_TABLE_INDEX, 18323 0x0000 + UNICODE_MAX_TABLE_INDEX, 18324 0x0000 + UNICODE_MAX_TABLE_INDEX, 18325 0x0000 + UNICODE_MAX_TABLE_INDEX, 18326 0x0000 + UNICODE_MAX_TABLE_INDEX, 18327 0x0000 + UNICODE_MAX_TABLE_INDEX, 18328 0x0000 + UNICODE_MAX_TABLE_INDEX, 18329 0x0000 + UNICODE_MAX_TABLE_INDEX, 18330 0x0000 + UNICODE_MAX_TABLE_INDEX, 18331 0x0000 + UNICODE_MAX_TABLE_INDEX, 18332 0x0000 + UNICODE_MAX_TABLE_INDEX, 18333 0x0000 + UNICODE_MAX_TABLE_INDEX, 18334 0x0000 + UNICODE_MAX_TABLE_INDEX, 18335 0x0000 + UNICODE_MAX_TABLE_INDEX, 18336 0x0000 + UNICODE_MAX_TABLE_INDEX, 18337 0x0000 + UNICODE_MAX_TABLE_INDEX, 18338 0x0000 + UNICODE_MAX_TABLE_INDEX, 18339 0x0000 + UNICODE_MAX_TABLE_INDEX, 18340 0x0000 + UNICODE_MAX_TABLE_INDEX, 18341 0x0000 + UNICODE_MAX_TABLE_INDEX, 18342 0x0000 + UNICODE_MAX_TABLE_INDEX, 18343 0x0000 + UNICODE_MAX_TABLE_INDEX, 18344 0x0000 + UNICODE_MAX_TABLE_INDEX, 18345 0x0000 + UNICODE_MAX_TABLE_INDEX, 18346 0x0000 + UNICODE_MAX_TABLE_INDEX, 18347 0x0000 + UNICODE_MAX_TABLE_INDEX, 18348 0x0000 + UNICODE_MAX_TABLE_INDEX, 18349 0x0000 + UNICODE_MAX_TABLE_INDEX, 18350 0x0000 + UNICODE_MAX_TABLE_INDEX, 18351 0x0000 + UNICODE_MAX_TABLE_INDEX, 18352 0x0000 + UNICODE_MAX_TABLE_INDEX, 18353 0x0000 + UNICODE_MAX_TABLE_INDEX, 18354 0x0000 + UNICODE_MAX_TABLE_INDEX, 18355 0x0000 + UNICODE_MAX_TABLE_INDEX, 18356 0x0000 + UNICODE_MAX_TABLE_INDEX, 18357 0x0000 + UNICODE_MAX_TABLE_INDEX, 18358 0x0000 + UNICODE_MAX_TABLE_INDEX, 18359 0x0000 + UNICODE_MAX_TABLE_INDEX, 18360 0x0000 + UNICODE_MAX_TABLE_INDEX, 18361 0x0000 + UNICODE_MAX_TABLE_INDEX, 18362 0x0000 + UNICODE_MAX_TABLE_INDEX, 18363 0x0000 + UNICODE_MAX_TABLE_INDEX, 18364 0x0000 + UNICODE_MAX_TABLE_INDEX, 18365 0x0000 + UNICODE_MAX_TABLE_INDEX, 18366 0x0000 + UNICODE_MAX_TABLE_INDEX, 18367 0x0000 + UNICODE_MAX_TABLE_INDEX, 18368 0x0000 + UNICODE_MAX_TABLE_INDEX, 18369 0x0000 + UNICODE_MAX_TABLE_INDEX, 18370 0x0000 + UNICODE_MAX_TABLE_INDEX, 18371 0x0000 + UNICODE_MAX_TABLE_INDEX, 18372 0x0000 + UNICODE_MAX_TABLE_INDEX, 18373 0x0000 + UNICODE_MAX_TABLE_INDEX, 18374 0x0000 + UNICODE_MAX_TABLE_INDEX, 18375 0x0000 + UNICODE_MAX_TABLE_INDEX, 18376 0x0000 + UNICODE_MAX_TABLE_INDEX, 18377 0x0000 + UNICODE_MAX_TABLE_INDEX, 18378 0x0000 + UNICODE_MAX_TABLE_INDEX, 18379 0x0000 + UNICODE_MAX_TABLE_INDEX, 18380 0x0000 + UNICODE_MAX_TABLE_INDEX, 18381 0x0000 + UNICODE_MAX_TABLE_INDEX, 18382 0x0000 + UNICODE_MAX_TABLE_INDEX, 18383 0x0000 + UNICODE_MAX_TABLE_INDEX, 18384 0x0000 + UNICODE_MAX_TABLE_INDEX, 18385 0x0000 + UNICODE_MAX_TABLE_INDEX, 18386 0x0000 + UNICODE_MAX_TABLE_INDEX, 18387 0x0000 + UNICODE_MAX_TABLE_INDEX, 18388 0x0000 + UNICODE_MAX_TABLE_INDEX, 18389 0x0000 + UNICODE_MAX_TABLE_INDEX, 18390 0x0000 + UNICODE_MAX_TABLE_INDEX, 18391 0x0000 + UNICODE_MAX_TABLE_INDEX, 18392 0x0000 + UNICODE_MAX_TABLE_INDEX, 18393 0x0000 + UNICODE_MAX_TABLE_INDEX, 18394 0x0000 + UNICODE_MAX_TABLE_INDEX, 18395 0x0000 + UNICODE_MAX_TABLE_INDEX, 18396 0x0000 + UNICODE_MAX_TABLE_INDEX, 18397 0x0000 + UNICODE_MAX_TABLE_INDEX, 18398 48 /* page 362 */, 18399 49 /* page 363 */, 18400 0x0000 + UNICODE_MAX_TABLE_INDEX, 18401 0x0000 + UNICODE_MAX_TABLE_INDEX, 18402 0x0000 + UNICODE_MAX_TABLE_INDEX, 18403 0x0000 + UNICODE_MAX_TABLE_INDEX, 18404 0x0000 + UNICODE_MAX_TABLE_INDEX, 18405 0x0000 + UNICODE_MAX_TABLE_INDEX, 18406 0x0000 + UNICODE_MAX_TABLE_INDEX, 18407 0x0000 + UNICODE_MAX_TABLE_INDEX, 18408 0x0000 + UNICODE_MAX_TABLE_INDEX, 18409 0x0000 + UNICODE_MAX_TABLE_INDEX, 18410 0x0000 + UNICODE_MAX_TABLE_INDEX, 18411 0x0000 + UNICODE_MAX_TABLE_INDEX, 18412 0x0000 + UNICODE_MAX_TABLE_INDEX, 18413 0x0000 + UNICODE_MAX_TABLE_INDEX, 18414 0x0000 + UNICODE_MAX_TABLE_INDEX, 18415 0x0000 + UNICODE_MAX_TABLE_INDEX, 18416 0x0000 + UNICODE_MAX_TABLE_INDEX, 18417 0x0000 + UNICODE_MAX_TABLE_INDEX, 18418 0x0000 + UNICODE_MAX_TABLE_INDEX, 18419 0x0000 + UNICODE_MAX_TABLE_INDEX, 18420 0x0000 + UNICODE_MAX_TABLE_INDEX, 18421 0x0000 + UNICODE_MAX_TABLE_INDEX, 18422 0x0000 + UNICODE_MAX_TABLE_INDEX, 18423 0x0000 + UNICODE_MAX_TABLE_INDEX, 18424 0x0000 + UNICODE_MAX_TABLE_INDEX, 18425 0x0000 + UNICODE_MAX_TABLE_INDEX, 18426 0x0000 + UNICODE_MAX_TABLE_INDEX, 18427 0x0000 + UNICODE_MAX_TABLE_INDEX, 18428 0x0000 + UNICODE_MAX_TABLE_INDEX, 18429 0x0000 + UNICODE_MAX_TABLE_INDEX, 18430 0x0000 + UNICODE_MAX_TABLE_INDEX, 18431 0x0000 + UNICODE_MAX_TABLE_INDEX, 18432 0x0000 + UNICODE_MAX_TABLE_INDEX, 18433 0x0000 + UNICODE_MAX_TABLE_INDEX, 18434 0x0000 + UNICODE_MAX_TABLE_INDEX, 18435 0x0000 + UNICODE_MAX_TABLE_INDEX, 18436 0x0000 + UNICODE_MAX_TABLE_INDEX, 18437 0x0000 + UNICODE_MAX_TABLE_INDEX, 18438 0x0000 + UNICODE_MAX_TABLE_INDEX, 18439 0x0000 + UNICODE_MAX_TABLE_INDEX, 18440 0x0000 + UNICODE_MAX_TABLE_INDEX, 18441 0x0000 + UNICODE_MAX_TABLE_INDEX, 18442 0x0000 + UNICODE_MAX_TABLE_INDEX, 18443 0x0000 + UNICODE_MAX_TABLE_INDEX, 18444 0x0000 + UNICODE_MAX_TABLE_INDEX, 18445 0x0000 + UNICODE_MAX_TABLE_INDEX, 18446 0x0000 + UNICODE_MAX_TABLE_INDEX, 18447 0x0000 + UNICODE_MAX_TABLE_INDEX, 18448 0x0000 + UNICODE_MAX_TABLE_INDEX, 18449 0x0000 + UNICODE_MAX_TABLE_INDEX, 18450 0x0000 + UNICODE_MAX_TABLE_INDEX, 18451 0x0000 + UNICODE_MAX_TABLE_INDEX, 18452 0x0000 + UNICODE_MAX_TABLE_INDEX, 18453 0x0000 + UNICODE_MAX_TABLE_INDEX, 18454 0x0000 + UNICODE_MAX_TABLE_INDEX, 18455 0x0000 + UNICODE_MAX_TABLE_INDEX, 18456 0x0000 + UNICODE_MAX_TABLE_INDEX, 18457 0x0000 + UNICODE_MAX_TABLE_INDEX, 18458 0x0000 + UNICODE_MAX_TABLE_INDEX, 18459 0x0000 + UNICODE_MAX_TABLE_INDEX, 18460 0x0000 + UNICODE_MAX_TABLE_INDEX, 18461 0x0000 + UNICODE_MAX_TABLE_INDEX, 18462 0x0000 + UNICODE_MAX_TABLE_INDEX, 18463 0x0000 + UNICODE_MAX_TABLE_INDEX, 18464 0x0000 + UNICODE_MAX_TABLE_INDEX, 18465 0x0000 + UNICODE_MAX_TABLE_INDEX, 18466 0x0000 + UNICODE_MAX_TABLE_INDEX, 18467 0x0000 + UNICODE_MAX_TABLE_INDEX, 18468 0x0000 + UNICODE_MAX_TABLE_INDEX, 18469 0x0000 + UNICODE_MAX_TABLE_INDEX, 18470 0x0000 + UNICODE_MAX_TABLE_INDEX, 18471 0x0000 + UNICODE_MAX_TABLE_INDEX, 18472 0x0000 + UNICODE_MAX_TABLE_INDEX, 18473 0x0000 + UNICODE_MAX_TABLE_INDEX, 18474 0x0000 + UNICODE_MAX_TABLE_INDEX, 18475 0x0000 + UNICODE_MAX_TABLE_INDEX, 18476 0x0000 + UNICODE_MAX_TABLE_INDEX, 18477 0x0000 + UNICODE_MAX_TABLE_INDEX, 18478 0x0000 + UNICODE_MAX_TABLE_INDEX, 18479 0x0000 + UNICODE_MAX_TABLE_INDEX, 18480 0x0000 + UNICODE_MAX_TABLE_INDEX, 18481 0x0000 + UNICODE_MAX_TABLE_INDEX, 18482 0x0000 + UNICODE_MAX_TABLE_INDEX, 18483 0x0000 + UNICODE_MAX_TABLE_INDEX, 18484 0x0000 + UNICODE_MAX_TABLE_INDEX, 18485 0x0000 + UNICODE_MAX_TABLE_INDEX, 18486 0x0000 + UNICODE_MAX_TABLE_INDEX, 18487 0x0000 + UNICODE_MAX_TABLE_INDEX, 18488 0x0000 + UNICODE_MAX_TABLE_INDEX, 18489 0x0000 + UNICODE_MAX_TABLE_INDEX, 18490 0x0000 + UNICODE_MAX_TABLE_INDEX, 18491 0x0000 + UNICODE_MAX_TABLE_INDEX, 18492 0x0000 + UNICODE_MAX_TABLE_INDEX, 18493 0x0000 + UNICODE_MAX_TABLE_INDEX, 18494 0x0000 + UNICODE_MAX_TABLE_INDEX, 18495 0x0000 + UNICODE_MAX_TABLE_INDEX, 18496 0x0000 + UNICODE_MAX_TABLE_INDEX, 18497 0x0000 + UNICODE_MAX_TABLE_INDEX, 18498 0x0000 + UNICODE_MAX_TABLE_INDEX, 18499 0x0000 + UNICODE_MAX_TABLE_INDEX, 18500 0x0000 + UNICODE_MAX_TABLE_INDEX, 18501 0x0000 + UNICODE_MAX_TABLE_INDEX, 18502 0x0000 + UNICODE_MAX_TABLE_INDEX, 18503 0x0000 + UNICODE_MAX_TABLE_INDEX, 18504 0x0000 + UNICODE_MAX_TABLE_INDEX, 18505 0x0000 + UNICODE_MAX_TABLE_INDEX, 18506 0x0000 + UNICODE_MAX_TABLE_INDEX, 18507 50 /* page 471 */, 18508 0x0000 + UNICODE_MAX_TABLE_INDEX, 18509 0x0000 + UNICODE_MAX_TABLE_INDEX, 18510 0x0000 + UNICODE_MAX_TABLE_INDEX, 18511 0x0000 + UNICODE_MAX_TABLE_INDEX, 18512 0x0000 + UNICODE_MAX_TABLE_INDEX, 18513 0x0000 + UNICODE_MAX_TABLE_INDEX, 18514 0x0000 + UNICODE_MAX_TABLE_INDEX, 18515 0x0000 + UNICODE_MAX_TABLE_INDEX, 18516 0x0000 + UNICODE_MAX_TABLE_INDEX, 18517 0x0000 + UNICODE_MAX_TABLE_INDEX, 18518 0x0000 + UNICODE_MAX_TABLE_INDEX, 18519 0x0000 + UNICODE_MAX_TABLE_INDEX, 18520 0x0000 + UNICODE_MAX_TABLE_INDEX, 18521 0x0000 + UNICODE_MAX_TABLE_INDEX, 18522 0x0000 + UNICODE_MAX_TABLE_INDEX, 18523 0x0000 + UNICODE_MAX_TABLE_INDEX, 18524 0x0000 + UNICODE_MAX_TABLE_INDEX, 18525 51 /* page 489 */, 18526 0x0000 + UNICODE_MAX_TABLE_INDEX, 18527 0x0000 + UNICODE_MAX_TABLE_INDEX, 18528 0x0000 + UNICODE_MAX_TABLE_INDEX, 18529 0x0000 + UNICODE_MAX_TABLE_INDEX, 18530 0x0000 + UNICODE_MAX_TABLE_INDEX, 18531 0x0000 + UNICODE_MAX_TABLE_INDEX, 18532 0x0000 + UNICODE_MAX_TABLE_INDEX, 18533 0x0000 + UNICODE_MAX_TABLE_INDEX, 18534 0x0000 + UNICODE_MAX_TABLE_INDEX, 18535 0x0000 + UNICODE_MAX_TABLE_INDEX, 18536 0x0000 + UNICODE_MAX_TABLE_INDEX, 18537 0x0000 + UNICODE_MAX_TABLE_INDEX, 18538 0x0000 + UNICODE_MAX_TABLE_INDEX, 18539 0x0000 + UNICODE_MAX_TABLE_INDEX, 18540 0x0000 + UNICODE_MAX_TABLE_INDEX, 18541 0x0000 + UNICODE_MAX_TABLE_INDEX, 18542 0x0000 + UNICODE_MAX_TABLE_INDEX, 18543 0x0000 + UNICODE_MAX_TABLE_INDEX, 18544 0x0000 + UNICODE_MAX_TABLE_INDEX, 18545 0x0000 + UNICODE_MAX_TABLE_INDEX, 18546 0x0000 + UNICODE_MAX_TABLE_INDEX, 18547 0x0000 + UNICODE_MAX_TABLE_INDEX, 18548 0x0000 + UNICODE_MAX_TABLE_INDEX, 18549 0x0000 + UNICODE_MAX_TABLE_INDEX, 18550 0x0000 + UNICODE_MAX_TABLE_INDEX, 18551 0x0000 + UNICODE_MAX_TABLE_INDEX, 18552 0x0000 + UNICODE_MAX_TABLE_INDEX, 18553 0x0000 + UNICODE_MAX_TABLE_INDEX, 18554 0x0000 + UNICODE_MAX_TABLE_INDEX, 18555 0x0000 + UNICODE_MAX_TABLE_INDEX, 18556 0x0000 + UNICODE_MAX_TABLE_INDEX, 18557 0x0000 + UNICODE_MAX_TABLE_INDEX, 18558 0x0000 + UNICODE_MAX_TABLE_INDEX, 18559 0x0000 + UNICODE_MAX_TABLE_INDEX, 18560 0x0000 + UNICODE_MAX_TABLE_INDEX, 18561 0x0000 + UNICODE_MAX_TABLE_INDEX, 18562 0x0000 + UNICODE_MAX_TABLE_INDEX, 18563 0x0000 + UNICODE_MAX_TABLE_INDEX, 18564 0x0000 + UNICODE_MAX_TABLE_INDEX, 18565 0x0000 + UNICODE_MAX_TABLE_INDEX, 18566 0x0000 + UNICODE_MAX_TABLE_INDEX, 18567 0x0000 + UNICODE_MAX_TABLE_INDEX, 18568 0x0000 + UNICODE_MAX_TABLE_INDEX, 18569 0x0000 + UNICODE_MAX_TABLE_INDEX, 18570 0x0000 + UNICODE_MAX_TABLE_INDEX, 18571 0x0000 + UNICODE_MAX_TABLE_INDEX, 18572 0x0000 + UNICODE_MAX_TABLE_INDEX, 18573 0x0000 + UNICODE_MAX_TABLE_INDEX, 18574 0x0000 + UNICODE_MAX_TABLE_INDEX, 18575 0x0000 + UNICODE_MAX_TABLE_INDEX, 18576 0x0000 + UNICODE_MAX_TABLE_INDEX, 18577 0x0000 + UNICODE_MAX_TABLE_INDEX, 18578 0x0000 + UNICODE_MAX_TABLE_INDEX, 18579 0x0000 + UNICODE_MAX_TABLE_INDEX, 18580 0x0000 + UNICODE_MAX_TABLE_INDEX, 18581 0x0000 + UNICODE_MAX_TABLE_INDEX, 18582 0x0000 + UNICODE_MAX_TABLE_INDEX, 18583 0x0000 + UNICODE_MAX_TABLE_INDEX, 18584 0x0000 + UNICODE_MAX_TABLE_INDEX, 18585 0x0000 + UNICODE_MAX_TABLE_INDEX, 18586 0x0000 + UNICODE_MAX_TABLE_INDEX, 18587 0x0000 + UNICODE_MAX_TABLE_INDEX, 18588 0x0000 + UNICODE_MAX_TABLE_INDEX, 18589 0x0000 + UNICODE_MAX_TABLE_INDEX, 18590 0x0000 + UNICODE_MAX_TABLE_INDEX, 18591 0x0000 + UNICODE_MAX_TABLE_INDEX, 18592 0x0000 + UNICODE_MAX_TABLE_INDEX, 18593 0x0000 + UNICODE_MAX_TABLE_INDEX, 18594 0x0000 + UNICODE_MAX_TABLE_INDEX, 18595 0x0000 + UNICODE_MAX_TABLE_INDEX, 18596 0x0000 + UNICODE_MAX_TABLE_INDEX, 18597 0x0000 + UNICODE_MAX_TABLE_INDEX, 18598 0x0000 + UNICODE_MAX_TABLE_INDEX, 18599 0x0000 + UNICODE_MAX_TABLE_INDEX, 18600 0x0000 + UNICODE_MAX_TABLE_INDEX, 18601 0x0000 + UNICODE_MAX_TABLE_INDEX, 18602 0x0000 + UNICODE_MAX_TABLE_INDEX, 18603 0x0000 + UNICODE_MAX_TABLE_INDEX, 18604 0x0000 + UNICODE_MAX_TABLE_INDEX, 18605 0x0000 + UNICODE_MAX_TABLE_INDEX, 18606 0x0000 + UNICODE_MAX_TABLE_INDEX, 18607 0x0000 + UNICODE_MAX_TABLE_INDEX, 18608 0x0000 + UNICODE_MAX_TABLE_INDEX, 18609 0x0000 + UNICODE_MAX_TABLE_INDEX, 18610 0x0000 + UNICODE_MAX_TABLE_INDEX, 18611 0x0000 + UNICODE_MAX_TABLE_INDEX, 18612 0x0000 + UNICODE_MAX_TABLE_INDEX, 18613 0x0000 + UNICODE_MAX_TABLE_INDEX, 18614 0x0000 + UNICODE_MAX_TABLE_INDEX, 18615 0x0000 + UNICODE_MAX_TABLE_INDEX, 18616 0x0000 + UNICODE_MAX_TABLE_INDEX, 18617 0x0000 + UNICODE_MAX_TABLE_INDEX, 18618 0x0000 + UNICODE_MAX_TABLE_INDEX, 18619 0x0000 + UNICODE_MAX_TABLE_INDEX, 18620 0x0000 + UNICODE_MAX_TABLE_INDEX, 18621 0x0000 + UNICODE_MAX_TABLE_INDEX, 18622 0x0000 + UNICODE_MAX_TABLE_INDEX, 18623 0x0000 + UNICODE_MAX_TABLE_INDEX, 18624 0x0000 + UNICODE_MAX_TABLE_INDEX, 18625 0x0000 + UNICODE_MAX_TABLE_INDEX, 18626 0x0000 + UNICODE_MAX_TABLE_INDEX, 18627 0x0000 + UNICODE_MAX_TABLE_INDEX, 18628 0x0000 + UNICODE_MAX_TABLE_INDEX, 18629 0x0000 + UNICODE_MAX_TABLE_INDEX, 18630 0x0000 + UNICODE_MAX_TABLE_INDEX, 18631 0x0000 + UNICODE_MAX_TABLE_INDEX, 18632 0x0000 + UNICODE_MAX_TABLE_INDEX, 18633 0x0000 + UNICODE_MAX_TABLE_INDEX, 18634 0x0000 + UNICODE_MAX_TABLE_INDEX, 18635 0x0000 + UNICODE_MAX_TABLE_INDEX, 18636 0x0000 + UNICODE_MAX_TABLE_INDEX, 18637 0x0000 + UNICODE_MAX_TABLE_INDEX, 18638 0x0000 + UNICODE_MAX_TABLE_INDEX, 18639 0x0000 + UNICODE_MAX_TABLE_INDEX, 18640 0x0000 + UNICODE_MAX_TABLE_INDEX, 18641 0x0000 + UNICODE_MAX_TABLE_INDEX, 18642 0x0000 + UNICODE_MAX_TABLE_INDEX, 18643 0x0000 + UNICODE_MAX_TABLE_INDEX, 18644 0x0000 + UNICODE_MAX_TABLE_INDEX, 18645 0x0000 + UNICODE_MAX_TABLE_INDEX, 18646 0x0000 + UNICODE_MAX_TABLE_INDEX, 18647 0x0000 + UNICODE_MAX_TABLE_INDEX, 18648 0x0000 + UNICODE_MAX_TABLE_INDEX, 18649 0x0000 + UNICODE_MAX_TABLE_INDEX, 18650 0x0000 + UNICODE_MAX_TABLE_INDEX, 18651 0x0000 + UNICODE_MAX_TABLE_INDEX, 18652 0x0000 + UNICODE_MAX_TABLE_INDEX, 18653 0x0000 + UNICODE_MAX_TABLE_INDEX, 18654 0x0000 + UNICODE_MAX_TABLE_INDEX, 18655 0x0000 + UNICODE_MAX_TABLE_INDEX, 18656 0x0000 + UNICODE_MAX_TABLE_INDEX, 18657 0x0000 + UNICODE_MAX_TABLE_INDEX, 18658 0x0000 + UNICODE_MAX_TABLE_INDEX, 18659 0x0000 + UNICODE_MAX_TABLE_INDEX, 18660 0x0000 + UNICODE_MAX_TABLE_INDEX, 18661 0x0000 + UNICODE_MAX_TABLE_INDEX, 18662 0x0000 + UNICODE_MAX_TABLE_INDEX, 18663 0x0000 + UNICODE_MAX_TABLE_INDEX, 18664 0x0000 + UNICODE_MAX_TABLE_INDEX, 18665 0x0000 + UNICODE_MAX_TABLE_INDEX, 18666 0x0000 + UNICODE_MAX_TABLE_INDEX, 18667 0x0000 + UNICODE_MAX_TABLE_INDEX, 18668 0x0000 + UNICODE_MAX_TABLE_INDEX, 18669 0x0000 + UNICODE_MAX_TABLE_INDEX, 18670 0x0000 + UNICODE_MAX_TABLE_INDEX, 18671 0x0000 + UNICODE_MAX_TABLE_INDEX, 18672 0x0000 + UNICODE_MAX_TABLE_INDEX, 18673 0x0000 + UNICODE_MAX_TABLE_INDEX, 18674 0x0000 + UNICODE_MAX_TABLE_INDEX, 18675 0x0000 + UNICODE_MAX_TABLE_INDEX, 18676 0x0000 + UNICODE_MAX_TABLE_INDEX, 18677 0x0000 + UNICODE_MAX_TABLE_INDEX, 18678 0x0000 + UNICODE_MAX_TABLE_INDEX, 18679 0x0000 + UNICODE_MAX_TABLE_INDEX, 18680 0x0000 + UNICODE_MAX_TABLE_INDEX, 18681 0x0000 + UNICODE_MAX_TABLE_INDEX, 18682 0x0000 + UNICODE_MAX_TABLE_INDEX, 18683 0x0000 + UNICODE_MAX_TABLE_INDEX, 18684 0x0000 + UNICODE_MAX_TABLE_INDEX, 18685 0x0000 + UNICODE_MAX_TABLE_INDEX, 18686 0x0000 + UNICODE_MAX_TABLE_INDEX, 18687 0x0000 + UNICODE_MAX_TABLE_INDEX, 18688 0x0000 + UNICODE_MAX_TABLE_INDEX, 18689 0x0000 + UNICODE_MAX_TABLE_INDEX, 18690 0x0000 + UNICODE_MAX_TABLE_INDEX, 18691 0x0000 + UNICODE_MAX_TABLE_INDEX, 18692 0x0000 + UNICODE_MAX_TABLE_INDEX, 18693 0x0000 + UNICODE_MAX_TABLE_INDEX, 18694 0x0000 + UNICODE_MAX_TABLE_INDEX, 18695 0x0000 + UNICODE_MAX_TABLE_INDEX, 18696 0x0000 + UNICODE_MAX_TABLE_INDEX, 18697 0x0000 + UNICODE_MAX_TABLE_INDEX, 18698 0x0000 + UNICODE_MAX_TABLE_INDEX, 18699 0x0000 + UNICODE_MAX_TABLE_INDEX, 18700 0x0000 + UNICODE_MAX_TABLE_INDEX, 18701 0x0000 + UNICODE_MAX_TABLE_INDEX, 18702 0x0000 + UNICODE_MAX_TABLE_INDEX, 18703 0x0000 + UNICODE_MAX_TABLE_INDEX, 18704 0x0000 + UNICODE_MAX_TABLE_INDEX, 18705 0x0000 + UNICODE_MAX_TABLE_INDEX, 18706 0x0000 + UNICODE_MAX_TABLE_INDEX, 18707 0x0000 + UNICODE_MAX_TABLE_INDEX, 18708 0x0000 + UNICODE_MAX_TABLE_INDEX, 18709 0x0000 + UNICODE_MAX_TABLE_INDEX, 18710 0x0000 + UNICODE_MAX_TABLE_INDEX, 18711 0x0000 + UNICODE_MAX_TABLE_INDEX, 18712 0x0000 + UNICODE_MAX_TABLE_INDEX, 18713 0x0000 + UNICODE_MAX_TABLE_INDEX, 18714 0x0000 + UNICODE_MAX_TABLE_INDEX, 18715 0x0000 + UNICODE_MAX_TABLE_INDEX, 18716 0x0000 + UNICODE_MAX_TABLE_INDEX, 18717 0x0000 + UNICODE_MAX_TABLE_INDEX, 18718 0x0000 + UNICODE_MAX_TABLE_INDEX, 18719 0x0000 + UNICODE_MAX_TABLE_INDEX, 18720 0x0000 + UNICODE_MAX_TABLE_INDEX, 18721 0x0000 + UNICODE_MAX_TABLE_INDEX, 18722 0x0000 + UNICODE_MAX_TABLE_INDEX, 18723 0x0000 + UNICODE_MAX_TABLE_INDEX, 18724 0x0000 + UNICODE_MAX_TABLE_INDEX, 18725 0x0000 + UNICODE_MAX_TABLE_INDEX, 18726 0x0000 + UNICODE_MAX_TABLE_INDEX, 18727 0x0000 + UNICODE_MAX_TABLE_INDEX, 18728 0x0000 + UNICODE_MAX_TABLE_INDEX, 18729 0x0000 + UNICODE_MAX_TABLE_INDEX, 18730 0x0000 + UNICODE_MAX_TABLE_INDEX, 18731 0x0000 + UNICODE_MAX_TABLE_INDEX, 18732 0x0000 + UNICODE_MAX_TABLE_INDEX, 18733 0x0000 + UNICODE_MAX_TABLE_INDEX, 18734 0x0000 + UNICODE_MAX_TABLE_INDEX, 18735 0x0000 + UNICODE_MAX_TABLE_INDEX, 18736 0x0000 + UNICODE_MAX_TABLE_INDEX, 18737 0x0000 + UNICODE_MAX_TABLE_INDEX, 18738 0x0000 + UNICODE_MAX_TABLE_INDEX, 18739 0x0000 + UNICODE_MAX_TABLE_INDEX, 18740 0x0000 + UNICODE_MAX_TABLE_INDEX, 18741 0x0000 + UNICODE_MAX_TABLE_INDEX, 18742 0x0000 + UNICODE_MAX_TABLE_INDEX, 18743 0x0000 + UNICODE_MAX_TABLE_INDEX, 18744 0x0000 + UNICODE_MAX_TABLE_INDEX, 18745 0x0000 + UNICODE_MAX_TABLE_INDEX, 18746 0x0000 + UNICODE_MAX_TABLE_INDEX, 18747 0x0000 + UNICODE_MAX_TABLE_INDEX, 18748 0x0000 + UNICODE_MAX_TABLE_INDEX, 18749 0x0000 + UNICODE_MAX_TABLE_INDEX, 18750 0x0000 + UNICODE_MAX_TABLE_INDEX, 18751 0x0000 + UNICODE_MAX_TABLE_INDEX, 18752 0x0000 + UNICODE_MAX_TABLE_INDEX, 18753 0x0000 + UNICODE_MAX_TABLE_INDEX, 18754 0x0000 + UNICODE_MAX_TABLE_INDEX, 18755 0x0000 + UNICODE_MAX_TABLE_INDEX, 18756 0x0000 + UNICODE_MAX_TABLE_INDEX, 18757 0x0000 + UNICODE_MAX_TABLE_INDEX, 18758 0x0000 + UNICODE_MAX_TABLE_INDEX, 18759 0x0000 + UNICODE_MAX_TABLE_INDEX, 18760 0x0000 + UNICODE_MAX_TABLE_INDEX, 18761 0x0000 + UNICODE_MAX_TABLE_INDEX, 18762 0x0000 + UNICODE_MAX_TABLE_INDEX, 18763 0x0000 + UNICODE_MAX_TABLE_INDEX, 18764 0x0000 + UNICODE_MAX_TABLE_INDEX, 18765 0x0000 + UNICODE_MAX_TABLE_INDEX, 18766 0x0000 + UNICODE_MAX_TABLE_INDEX, 18767 0x0000 + UNICODE_MAX_TABLE_INDEX, 18768 0x0000 + UNICODE_MAX_TABLE_INDEX, 18769 0x0000 + UNICODE_MAX_TABLE_INDEX, 18770 0x0000 + UNICODE_MAX_TABLE_INDEX, 18771 0x0000 + UNICODE_MAX_TABLE_INDEX, 18772 0x0000 + UNICODE_MAX_TABLE_INDEX, 18773 0x0000 + UNICODE_MAX_TABLE_INDEX, 18774 0x0000 + UNICODE_MAX_TABLE_INDEX, 18775 0x0000 + UNICODE_MAX_TABLE_INDEX, 18776 0x0000 + UNICODE_MAX_TABLE_INDEX, 18777 0x0000 + UNICODE_MAX_TABLE_INDEX, 18778 0x0000 + UNICODE_MAX_TABLE_INDEX, 18779 0x0000 + UNICODE_MAX_TABLE_INDEX, 18780 0x0000 + UNICODE_MAX_TABLE_INDEX, 18781 0x0000 + UNICODE_MAX_TABLE_INDEX, 18782 0x0000 + UNICODE_MAX_TABLE_INDEX, 18783 0x0000 + UNICODE_MAX_TABLE_INDEX, 18784 0x0000 + UNICODE_MAX_TABLE_INDEX, 18785 0x0000 + UNICODE_MAX_TABLE_INDEX, 18786 0x0000 + UNICODE_MAX_TABLE_INDEX, 18787 0x0000 + UNICODE_MAX_TABLE_INDEX, 18788 0x0000 + UNICODE_MAX_TABLE_INDEX, 18789 0x0000 + UNICODE_MAX_TABLE_INDEX, 18790 0x0000 + UNICODE_MAX_TABLE_INDEX, 18791 0x0000 + UNICODE_MAX_TABLE_INDEX, 18792 0x0000 + UNICODE_MAX_TABLE_INDEX, 18793 0x0000 + UNICODE_MAX_TABLE_INDEX, 18794 0x0000 + UNICODE_MAX_TABLE_INDEX, 18795 0x0000 + UNICODE_MAX_TABLE_INDEX, 18796 0x0000 + UNICODE_MAX_TABLE_INDEX, 18797 0x0000 + UNICODE_MAX_TABLE_INDEX, 18798 0x0000 + UNICODE_MAX_TABLE_INDEX 18799 }; 18800 18801 /* U+E0000 through U+10FFFF */ 18802 static const int16_t attr_table_part2[768] = { 18803 0x0000 + UNICODE_MAX_TABLE_INDEX, 18804 0x0000 + UNICODE_MAX_TABLE_INDEX, 18805 0x0000 + UNICODE_MAX_TABLE_INDEX, 18806 0x0000 + UNICODE_MAX_TABLE_INDEX, 18807 0x0000 + UNICODE_MAX_TABLE_INDEX, 18808 0x0000 + UNICODE_MAX_TABLE_INDEX, 18809 0x0000 + UNICODE_MAX_TABLE_INDEX, 18810 0x0000 + UNICODE_MAX_TABLE_INDEX, 18811 0x0000 + UNICODE_MAX_TABLE_INDEX, 18812 0x0000 + UNICODE_MAX_TABLE_INDEX, 18813 0x0000 + UNICODE_MAX_TABLE_INDEX, 18814 0x0000 + UNICODE_MAX_TABLE_INDEX, 18815 0x0000 + UNICODE_MAX_TABLE_INDEX, 18816 0x0000 + UNICODE_MAX_TABLE_INDEX, 18817 0x0000 + UNICODE_MAX_TABLE_INDEX, 18818 0x0000 + UNICODE_MAX_TABLE_INDEX, 18819 0x0000 + UNICODE_MAX_TABLE_INDEX, 18820 0x0000 + UNICODE_MAX_TABLE_INDEX, 18821 0x0000 + UNICODE_MAX_TABLE_INDEX, 18822 0x0000 + UNICODE_MAX_TABLE_INDEX, 18823 0x0000 + UNICODE_MAX_TABLE_INDEX, 18824 0x0000 + UNICODE_MAX_TABLE_INDEX, 18825 0x0000 + UNICODE_MAX_TABLE_INDEX, 18826 0x0000 + UNICODE_MAX_TABLE_INDEX, 18827 0x0000 + UNICODE_MAX_TABLE_INDEX, 18828 0x0000 + UNICODE_MAX_TABLE_INDEX, 18829 0x0000 + UNICODE_MAX_TABLE_INDEX, 18830 0x0000 + UNICODE_MAX_TABLE_INDEX, 18831 0x0000 + UNICODE_MAX_TABLE_INDEX, 18832 0x0000 + UNICODE_MAX_TABLE_INDEX, 18833 0x0000 + UNICODE_MAX_TABLE_INDEX, 18834 0x0000 + UNICODE_MAX_TABLE_INDEX, 18835 0x0000 + UNICODE_MAX_TABLE_INDEX, 18836 0x0000 + UNICODE_MAX_TABLE_INDEX, 18837 0x0000 + UNICODE_MAX_TABLE_INDEX, 18838 0x0000 + UNICODE_MAX_TABLE_INDEX, 18839 0x0000 + UNICODE_MAX_TABLE_INDEX, 18840 0x0000 + UNICODE_MAX_TABLE_INDEX, 18841 0x0000 + UNICODE_MAX_TABLE_INDEX, 18842 0x0000 + UNICODE_MAX_TABLE_INDEX, 18843 0x0000 + UNICODE_MAX_TABLE_INDEX, 18844 0x0000 + UNICODE_MAX_TABLE_INDEX, 18845 0x0000 + UNICODE_MAX_TABLE_INDEX, 18846 0x0000 + UNICODE_MAX_TABLE_INDEX, 18847 0x0000 + UNICODE_MAX_TABLE_INDEX, 18848 0x0000 + UNICODE_MAX_TABLE_INDEX, 18849 0x0000 + UNICODE_MAX_TABLE_INDEX, 18850 0x0000 + UNICODE_MAX_TABLE_INDEX, 18851 0x0000 + UNICODE_MAX_TABLE_INDEX, 18852 0x0000 + UNICODE_MAX_TABLE_INDEX, 18853 0x0000 + UNICODE_MAX_TABLE_INDEX, 18854 0x0000 + UNICODE_MAX_TABLE_INDEX, 18855 0x0000 + UNICODE_MAX_TABLE_INDEX, 18856 0x0000 + UNICODE_MAX_TABLE_INDEX, 18857 0x0000 + UNICODE_MAX_TABLE_INDEX, 18858 0x0000 + UNICODE_MAX_TABLE_INDEX, 18859 0x0000 + UNICODE_MAX_TABLE_INDEX, 18860 0x0000 + UNICODE_MAX_TABLE_INDEX, 18861 0x0000 + UNICODE_MAX_TABLE_INDEX, 18862 0x0000 + UNICODE_MAX_TABLE_INDEX, 18863 0x0000 + UNICODE_MAX_TABLE_INDEX, 18864 0x0000 + UNICODE_MAX_TABLE_INDEX, 18865 0x0000 + UNICODE_MAX_TABLE_INDEX, 18866 0x0000 + UNICODE_MAX_TABLE_INDEX, 18867 0x0000 + UNICODE_MAX_TABLE_INDEX, 18868 0x0000 + UNICODE_MAX_TABLE_INDEX, 18869 0x0000 + UNICODE_MAX_TABLE_INDEX, 18870 0x0000 + UNICODE_MAX_TABLE_INDEX, 18871 0x0000 + UNICODE_MAX_TABLE_INDEX, 18872 0x0000 + UNICODE_MAX_TABLE_INDEX, 18873 0x0000 + UNICODE_MAX_TABLE_INDEX, 18874 0x0000 + UNICODE_MAX_TABLE_INDEX, 18875 0x0000 + UNICODE_MAX_TABLE_INDEX, 18876 0x0000 + UNICODE_MAX_TABLE_INDEX, 18877 0x0000 + UNICODE_MAX_TABLE_INDEX, 18878 0x0000 + UNICODE_MAX_TABLE_INDEX, 18879 0x0000 + UNICODE_MAX_TABLE_INDEX, 18880 0x0000 + UNICODE_MAX_TABLE_INDEX, 18881 0x0000 + UNICODE_MAX_TABLE_INDEX, 18882 0x0000 + UNICODE_MAX_TABLE_INDEX, 18883 0x0000 + UNICODE_MAX_TABLE_INDEX, 18884 0x0000 + UNICODE_MAX_TABLE_INDEX, 18885 0x0000 + UNICODE_MAX_TABLE_INDEX, 18886 0x0000 + UNICODE_MAX_TABLE_INDEX, 18887 0x0000 + UNICODE_MAX_TABLE_INDEX, 18888 0x0000 + UNICODE_MAX_TABLE_INDEX, 18889 0x0000 + UNICODE_MAX_TABLE_INDEX, 18890 0x0000 + UNICODE_MAX_TABLE_INDEX, 18891 0x0000 + UNICODE_MAX_TABLE_INDEX, 18892 0x0000 + UNICODE_MAX_TABLE_INDEX, 18893 0x0000 + UNICODE_MAX_TABLE_INDEX, 18894 0x0000 + UNICODE_MAX_TABLE_INDEX, 18895 0x0000 + UNICODE_MAX_TABLE_INDEX, 18896 0x0000 + UNICODE_MAX_TABLE_INDEX, 18897 0x0000 + UNICODE_MAX_TABLE_INDEX, 18898 0x0000 + UNICODE_MAX_TABLE_INDEX, 18899 0x0000 + UNICODE_MAX_TABLE_INDEX, 18900 0x0000 + UNICODE_MAX_TABLE_INDEX, 18901 0x0000 + UNICODE_MAX_TABLE_INDEX, 18902 0x0000 + UNICODE_MAX_TABLE_INDEX, 18903 0x0000 + UNICODE_MAX_TABLE_INDEX, 18904 0x0000 + UNICODE_MAX_TABLE_INDEX, 18905 0x0000 + UNICODE_MAX_TABLE_INDEX, 18906 0x0000 + UNICODE_MAX_TABLE_INDEX, 18907 0x0000 + UNICODE_MAX_TABLE_INDEX, 18908 0x0000 + UNICODE_MAX_TABLE_INDEX, 18909 0x0000 + UNICODE_MAX_TABLE_INDEX, 18910 0x0000 + UNICODE_MAX_TABLE_INDEX, 18911 0x0000 + UNICODE_MAX_TABLE_INDEX, 18912 0x0000 + UNICODE_MAX_TABLE_INDEX, 18913 0x0000 + UNICODE_MAX_TABLE_INDEX, 18914 0x0000 + UNICODE_MAX_TABLE_INDEX, 18915 0x0000 + UNICODE_MAX_TABLE_INDEX, 18916 0x0000 + UNICODE_MAX_TABLE_INDEX, 18917 0x0000 + UNICODE_MAX_TABLE_INDEX, 18918 0x0000 + UNICODE_MAX_TABLE_INDEX, 18919 0x0000 + UNICODE_MAX_TABLE_INDEX, 18920 0x0000 + UNICODE_MAX_TABLE_INDEX, 18921 0x0000 + UNICODE_MAX_TABLE_INDEX, 18922 0x0000 + UNICODE_MAX_TABLE_INDEX, 18923 0x0000 + UNICODE_MAX_TABLE_INDEX, 18924 0x0000 + UNICODE_MAX_TABLE_INDEX, 18925 0x0000 + UNICODE_MAX_TABLE_INDEX, 18926 0x0000 + UNICODE_MAX_TABLE_INDEX, 18927 0x0000 + UNICODE_MAX_TABLE_INDEX, 18928 0x0000 + UNICODE_MAX_TABLE_INDEX, 18929 0x0000 + UNICODE_MAX_TABLE_INDEX, 18930 0x0000 + UNICODE_MAX_TABLE_INDEX, 18931 0x0000 + UNICODE_MAX_TABLE_INDEX, 18932 0x0000 + UNICODE_MAX_TABLE_INDEX, 18933 0x0000 + UNICODE_MAX_TABLE_INDEX, 18934 0x0000 + UNICODE_MAX_TABLE_INDEX, 18935 0x0000 + UNICODE_MAX_TABLE_INDEX, 18936 0x0000 + UNICODE_MAX_TABLE_INDEX, 18937 0x0000 + UNICODE_MAX_TABLE_INDEX, 18938 0x0000 + UNICODE_MAX_TABLE_INDEX, 18939 0x0000 + UNICODE_MAX_TABLE_INDEX, 18940 0x0000 + UNICODE_MAX_TABLE_INDEX, 18941 0x0000 + UNICODE_MAX_TABLE_INDEX, 18942 0x0000 + UNICODE_MAX_TABLE_INDEX, 18943 0x0000 + UNICODE_MAX_TABLE_INDEX, 18944 0x0000 + UNICODE_MAX_TABLE_INDEX, 18945 0x0000 + UNICODE_MAX_TABLE_INDEX, 18946 0x0000 + UNICODE_MAX_TABLE_INDEX, 18947 0x0000 + UNICODE_MAX_TABLE_INDEX, 18948 0x0000 + UNICODE_MAX_TABLE_INDEX, 18949 0x0000 + UNICODE_MAX_TABLE_INDEX, 18950 0x0000 + UNICODE_MAX_TABLE_INDEX, 18951 0x0000 + UNICODE_MAX_TABLE_INDEX, 18952 0x0000 + UNICODE_MAX_TABLE_INDEX, 18953 0x0000 + UNICODE_MAX_TABLE_INDEX, 18954 0x0000 + UNICODE_MAX_TABLE_INDEX, 18955 0x0000 + UNICODE_MAX_TABLE_INDEX, 18956 0x0000 + UNICODE_MAX_TABLE_INDEX, 18957 0x0000 + UNICODE_MAX_TABLE_INDEX, 18958 0x0000 + UNICODE_MAX_TABLE_INDEX, 18959 0x0000 + UNICODE_MAX_TABLE_INDEX, 18960 0x0000 + UNICODE_MAX_TABLE_INDEX, 18961 0x0000 + UNICODE_MAX_TABLE_INDEX, 18962 0x0000 + UNICODE_MAX_TABLE_INDEX, 18963 0x0000 + UNICODE_MAX_TABLE_INDEX, 18964 0x0000 + UNICODE_MAX_TABLE_INDEX, 18965 0x0000 + UNICODE_MAX_TABLE_INDEX, 18966 0x0000 + UNICODE_MAX_TABLE_INDEX, 18967 0x0000 + UNICODE_MAX_TABLE_INDEX, 18968 0x0000 + UNICODE_MAX_TABLE_INDEX, 18969 0x0000 + UNICODE_MAX_TABLE_INDEX, 18970 0x0000 + UNICODE_MAX_TABLE_INDEX, 18971 0x0000 + UNICODE_MAX_TABLE_INDEX, 18972 0x0000 + UNICODE_MAX_TABLE_INDEX, 18973 0x0000 + UNICODE_MAX_TABLE_INDEX, 18974 0x0000 + UNICODE_MAX_TABLE_INDEX, 18975 0x0000 + UNICODE_MAX_TABLE_INDEX, 18976 0x0000 + UNICODE_MAX_TABLE_INDEX, 18977 0x0000 + UNICODE_MAX_TABLE_INDEX, 18978 0x0000 + UNICODE_MAX_TABLE_INDEX, 18979 0x0000 + UNICODE_MAX_TABLE_INDEX, 18980 0x0000 + UNICODE_MAX_TABLE_INDEX, 18981 0x0000 + UNICODE_MAX_TABLE_INDEX, 18982 0x0000 + UNICODE_MAX_TABLE_INDEX, 18983 0x0000 + UNICODE_MAX_TABLE_INDEX, 18984 0x0000 + UNICODE_MAX_TABLE_INDEX, 18985 0x0000 + UNICODE_MAX_TABLE_INDEX, 18986 0x0000 + UNICODE_MAX_TABLE_INDEX, 18987 0x0000 + UNICODE_MAX_TABLE_INDEX, 18988 0x0000 + UNICODE_MAX_TABLE_INDEX, 18989 0x0000 + UNICODE_MAX_TABLE_INDEX, 18990 0x0000 + UNICODE_MAX_TABLE_INDEX, 18991 0x0000 + UNICODE_MAX_TABLE_INDEX, 18992 0x0000 + UNICODE_MAX_TABLE_INDEX, 18993 0x0000 + UNICODE_MAX_TABLE_INDEX, 18994 0x0000 + UNICODE_MAX_TABLE_INDEX, 18995 0x0000 + UNICODE_MAX_TABLE_INDEX, 18996 0x0000 + UNICODE_MAX_TABLE_INDEX, 18997 0x0000 + UNICODE_MAX_TABLE_INDEX, 18998 0x0000 + UNICODE_MAX_TABLE_INDEX, 18999 0x0000 + UNICODE_MAX_TABLE_INDEX, 19000 0x0000 + UNICODE_MAX_TABLE_INDEX, 19001 0x0000 + UNICODE_MAX_TABLE_INDEX, 19002 0x0000 + UNICODE_MAX_TABLE_INDEX, 19003 0x0000 + UNICODE_MAX_TABLE_INDEX, 19004 0x0000 + UNICODE_MAX_TABLE_INDEX, 19005 0x0000 + UNICODE_MAX_TABLE_INDEX, 19006 0x0000 + UNICODE_MAX_TABLE_INDEX, 19007 0x0000 + UNICODE_MAX_TABLE_INDEX, 19008 0x0000 + UNICODE_MAX_TABLE_INDEX, 19009 0x0000 + UNICODE_MAX_TABLE_INDEX, 19010 0x0000 + UNICODE_MAX_TABLE_INDEX, 19011 0x0000 + UNICODE_MAX_TABLE_INDEX, 19012 0x0000 + UNICODE_MAX_TABLE_INDEX, 19013 0x0000 + UNICODE_MAX_TABLE_INDEX, 19014 0x0000 + UNICODE_MAX_TABLE_INDEX, 19015 0x0000 + UNICODE_MAX_TABLE_INDEX, 19016 0x0000 + UNICODE_MAX_TABLE_INDEX, 19017 0x0000 + UNICODE_MAX_TABLE_INDEX, 19018 0x0000 + UNICODE_MAX_TABLE_INDEX, 19019 0x0000 + UNICODE_MAX_TABLE_INDEX, 19020 0x0000 + UNICODE_MAX_TABLE_INDEX, 19021 0x0000 + UNICODE_MAX_TABLE_INDEX, 19022 0x0000 + UNICODE_MAX_TABLE_INDEX, 19023 0x0000 + UNICODE_MAX_TABLE_INDEX, 19024 0x0000 + UNICODE_MAX_TABLE_INDEX, 19025 0x0000 + UNICODE_MAX_TABLE_INDEX, 19026 0x0000 + UNICODE_MAX_TABLE_INDEX, 19027 0x0000 + UNICODE_MAX_TABLE_INDEX, 19028 0x0000 + UNICODE_MAX_TABLE_INDEX, 19029 0x0000 + UNICODE_MAX_TABLE_INDEX, 19030 0x0000 + UNICODE_MAX_TABLE_INDEX, 19031 0x0000 + UNICODE_MAX_TABLE_INDEX, 19032 0x0000 + UNICODE_MAX_TABLE_INDEX, 19033 0x0000 + UNICODE_MAX_TABLE_INDEX, 19034 0x0000 + UNICODE_MAX_TABLE_INDEX, 19035 0x0000 + UNICODE_MAX_TABLE_INDEX, 19036 0x0000 + UNICODE_MAX_TABLE_INDEX, 19037 0x0000 + UNICODE_MAX_TABLE_INDEX, 19038 0x0000 + UNICODE_MAX_TABLE_INDEX, 19039 0x0000 + UNICODE_MAX_TABLE_INDEX, 19040 0x0000 + UNICODE_MAX_TABLE_INDEX, 19041 0x0000 + UNICODE_MAX_TABLE_INDEX, 19042 0x0000 + UNICODE_MAX_TABLE_INDEX, 19043 0x0000 + UNICODE_MAX_TABLE_INDEX, 19044 0x0000 + UNICODE_MAX_TABLE_INDEX, 19045 0x0000 + UNICODE_MAX_TABLE_INDEX, 19046 0x0000 + UNICODE_MAX_TABLE_INDEX, 19047 0x0000 + UNICODE_MAX_TABLE_INDEX, 19048 0x0000 + UNICODE_MAX_TABLE_INDEX, 19049 0x0000 + UNICODE_MAX_TABLE_INDEX, 19050 0x0000 + UNICODE_MAX_TABLE_INDEX, 19051 0x0000 + UNICODE_MAX_TABLE_INDEX, 19052 0x0000 + UNICODE_MAX_TABLE_INDEX, 19053 0x0000 + UNICODE_MAX_TABLE_INDEX, 19054 0x0000 + UNICODE_MAX_TABLE_INDEX, 19055 0x0000 + UNICODE_MAX_TABLE_INDEX, 19056 0x0000 + UNICODE_MAX_TABLE_INDEX, 19057 0x0000 + UNICODE_MAX_TABLE_INDEX, 19058 0x0000 + UNICODE_MAX_TABLE_INDEX, 19059 0x0000 + UNICODE_MAX_TABLE_INDEX, 19060 0x0000 + UNICODE_MAX_TABLE_INDEX, 19061 0x0000 + UNICODE_MAX_TABLE_INDEX, 19062 0x0000 + UNICODE_MAX_TABLE_INDEX, 19063 0x0000 + UNICODE_MAX_TABLE_INDEX, 19064 0x0000 + UNICODE_MAX_TABLE_INDEX, 19065 0x0000 + UNICODE_MAX_TABLE_INDEX, 19066 0x0000 + UNICODE_MAX_TABLE_INDEX, 19067 0x0000 + UNICODE_MAX_TABLE_INDEX, 19068 0x0000 + UNICODE_MAX_TABLE_INDEX, 19069 0x0000 + UNICODE_MAX_TABLE_INDEX, 19070 0x0000 + UNICODE_MAX_TABLE_INDEX, 19071 0x0000 + UNICODE_MAX_TABLE_INDEX, 19072 0x0000 + UNICODE_MAX_TABLE_INDEX, 19073 0x0000 + UNICODE_MAX_TABLE_INDEX, 19074 0x0000 + UNICODE_MAX_TABLE_INDEX, 19075 0x0000 + UNICODE_MAX_TABLE_INDEX, 19076 0x0000 + UNICODE_MAX_TABLE_INDEX, 19077 0x0000 + UNICODE_MAX_TABLE_INDEX, 19078 0x0000 + UNICODE_MAX_TABLE_INDEX, 19079 0x0000 + UNICODE_MAX_TABLE_INDEX, 19080 0x0000 + UNICODE_MAX_TABLE_INDEX, 19081 0x0000 + UNICODE_MAX_TABLE_INDEX, 19082 0x0000 + UNICODE_MAX_TABLE_INDEX, 19083 0x0000 + UNICODE_MAX_TABLE_INDEX, 19084 0x0000 + UNICODE_MAX_TABLE_INDEX, 19085 0x0000 + UNICODE_MAX_TABLE_INDEX, 19086 0x0000 + UNICODE_MAX_TABLE_INDEX, 19087 0x0000 + UNICODE_MAX_TABLE_INDEX, 19088 0x0000 + UNICODE_MAX_TABLE_INDEX, 19089 0x0000 + UNICODE_MAX_TABLE_INDEX, 19090 0x0000 + UNICODE_MAX_TABLE_INDEX, 19091 0x0000 + UNICODE_MAX_TABLE_INDEX, 19092 0x0000 + UNICODE_MAX_TABLE_INDEX, 19093 0x0000 + UNICODE_MAX_TABLE_INDEX, 19094 0x0000 + UNICODE_MAX_TABLE_INDEX, 19095 0x0000 + UNICODE_MAX_TABLE_INDEX, 19096 0x0000 + UNICODE_MAX_TABLE_INDEX, 19097 0x0000 + UNICODE_MAX_TABLE_INDEX, 19098 0x0000 + UNICODE_MAX_TABLE_INDEX, 19099 0x0000 + UNICODE_MAX_TABLE_INDEX, 19100 0x0000 + UNICODE_MAX_TABLE_INDEX, 19101 0x0000 + UNICODE_MAX_TABLE_INDEX, 19102 0x0000 + UNICODE_MAX_TABLE_INDEX, 19103 0x0000 + UNICODE_MAX_TABLE_INDEX, 19104 0x0000 + UNICODE_MAX_TABLE_INDEX, 19105 0x0000 + UNICODE_MAX_TABLE_INDEX, 19106 0x0000 + UNICODE_MAX_TABLE_INDEX, 19107 0x0000 + UNICODE_MAX_TABLE_INDEX, 19108 0x0000 + UNICODE_MAX_TABLE_INDEX, 19109 0x0000 + UNICODE_MAX_TABLE_INDEX, 19110 0x0000 + UNICODE_MAX_TABLE_INDEX, 19111 0x0000 + UNICODE_MAX_TABLE_INDEX, 19112 0x0000 + UNICODE_MAX_TABLE_INDEX, 19113 0x0000 + UNICODE_MAX_TABLE_INDEX, 19114 0x0000 + UNICODE_MAX_TABLE_INDEX, 19115 0x0000 + UNICODE_MAX_TABLE_INDEX, 19116 0x0000 + UNICODE_MAX_TABLE_INDEX, 19117 0x0000 + UNICODE_MAX_TABLE_INDEX, 19118 0x0000 + UNICODE_MAX_TABLE_INDEX, 19119 0x0000 + UNICODE_MAX_TABLE_INDEX, 19120 0x0000 + UNICODE_MAX_TABLE_INDEX, 19121 0x0000 + UNICODE_MAX_TABLE_INDEX, 19122 0x0000 + UNICODE_MAX_TABLE_INDEX, 19123 0x0000 + UNICODE_MAX_TABLE_INDEX, 19124 0x0000 + UNICODE_MAX_TABLE_INDEX, 19125 0x0000 + UNICODE_MAX_TABLE_INDEX, 19126 0x0000 + UNICODE_MAX_TABLE_INDEX, 19127 0x0000 + UNICODE_MAX_TABLE_INDEX, 19128 0x0000 + UNICODE_MAX_TABLE_INDEX, 19129 0x0000 + UNICODE_MAX_TABLE_INDEX, 19130 0x0000 + UNICODE_MAX_TABLE_INDEX, 19131 0x0000 + UNICODE_MAX_TABLE_INDEX, 19132 0x0000 + UNICODE_MAX_TABLE_INDEX, 19133 0x0000 + UNICODE_MAX_TABLE_INDEX, 19134 0x0000 + UNICODE_MAX_TABLE_INDEX, 19135 0x0000 + UNICODE_MAX_TABLE_INDEX, 19136 0x0000 + UNICODE_MAX_TABLE_INDEX, 19137 0x0000 + UNICODE_MAX_TABLE_INDEX, 19138 0x0000 + UNICODE_MAX_TABLE_INDEX, 19139 0x0000 + UNICODE_MAX_TABLE_INDEX, 19140 0x0000 + UNICODE_MAX_TABLE_INDEX, 19141 0x0000 + UNICODE_MAX_TABLE_INDEX, 19142 0x0000 + UNICODE_MAX_TABLE_INDEX, 19143 0x0000 + UNICODE_MAX_TABLE_INDEX, 19144 0x0000 + UNICODE_MAX_TABLE_INDEX, 19145 0x0000 + UNICODE_MAX_TABLE_INDEX, 19146 0x0000 + UNICODE_MAX_TABLE_INDEX, 19147 0x0000 + UNICODE_MAX_TABLE_INDEX, 19148 0x0000 + UNICODE_MAX_TABLE_INDEX, 19149 0x0000 + UNICODE_MAX_TABLE_INDEX, 19150 0x0000 + UNICODE_MAX_TABLE_INDEX, 19151 0x0000 + UNICODE_MAX_TABLE_INDEX, 19152 0x0000 + UNICODE_MAX_TABLE_INDEX, 19153 0x0000 + UNICODE_MAX_TABLE_INDEX, 19154 0x0000 + UNICODE_MAX_TABLE_INDEX, 19155 0x0000 + UNICODE_MAX_TABLE_INDEX, 19156 0x0000 + UNICODE_MAX_TABLE_INDEX, 19157 0x0000 + UNICODE_MAX_TABLE_INDEX, 19158 0x0000 + UNICODE_MAX_TABLE_INDEX, 19159 0x0000 + UNICODE_MAX_TABLE_INDEX, 19160 0x0000 + UNICODE_MAX_TABLE_INDEX, 19161 0x0000 + UNICODE_MAX_TABLE_INDEX, 19162 0x0000 + UNICODE_MAX_TABLE_INDEX, 19163 0x0000 + UNICODE_MAX_TABLE_INDEX, 19164 0x0000 + UNICODE_MAX_TABLE_INDEX, 19165 0x0000 + UNICODE_MAX_TABLE_INDEX, 19166 0x0000 + UNICODE_MAX_TABLE_INDEX, 19167 0x0000 + UNICODE_MAX_TABLE_INDEX, 19168 0x0000 + UNICODE_MAX_TABLE_INDEX, 19169 0x0000 + UNICODE_MAX_TABLE_INDEX, 19170 0x0000 + UNICODE_MAX_TABLE_INDEX, 19171 0x0000 + UNICODE_MAX_TABLE_INDEX, 19172 0x0000 + UNICODE_MAX_TABLE_INDEX, 19173 0x0000 + UNICODE_MAX_TABLE_INDEX, 19174 0x0000 + UNICODE_MAX_TABLE_INDEX, 19175 0x0000 + UNICODE_MAX_TABLE_INDEX, 19176 0x0000 + UNICODE_MAX_TABLE_INDEX, 19177 0x0000 + UNICODE_MAX_TABLE_INDEX, 19178 0x0000 + UNICODE_MAX_TABLE_INDEX, 19179 0x0000 + UNICODE_MAX_TABLE_INDEX, 19180 0x0000 + UNICODE_MAX_TABLE_INDEX, 19181 0x0000 + UNICODE_MAX_TABLE_INDEX, 19182 0x0000 + UNICODE_MAX_TABLE_INDEX, 19183 0x0000 + UNICODE_MAX_TABLE_INDEX, 19184 0x0000 + UNICODE_MAX_TABLE_INDEX, 19185 0x0000 + UNICODE_MAX_TABLE_INDEX, 19186 0x0000 + UNICODE_MAX_TABLE_INDEX, 19187 0x0000 + UNICODE_MAX_TABLE_INDEX, 19188 0x0000 + UNICODE_MAX_TABLE_INDEX, 19189 0x0000 + UNICODE_MAX_TABLE_INDEX, 19190 0x0000 + UNICODE_MAX_TABLE_INDEX, 19191 0x0000 + UNICODE_MAX_TABLE_INDEX, 19192 0x0000 + UNICODE_MAX_TABLE_INDEX, 19193 0x0000 + UNICODE_MAX_TABLE_INDEX, 19194 0x0000 + UNICODE_MAX_TABLE_INDEX, 19195 0x0000 + UNICODE_MAX_TABLE_INDEX, 19196 0x0000 + UNICODE_MAX_TABLE_INDEX, 19197 0x0000 + UNICODE_MAX_TABLE_INDEX, 19198 0x0000 + UNICODE_MAX_TABLE_INDEX, 19199 0x0000 + UNICODE_MAX_TABLE_INDEX, 19200 0x0000 + UNICODE_MAX_TABLE_INDEX, 19201 0x0000 + UNICODE_MAX_TABLE_INDEX, 19202 0x0000 + UNICODE_MAX_TABLE_INDEX, 19203 0x0000 + UNICODE_MAX_TABLE_INDEX, 19204 0x0000 + UNICODE_MAX_TABLE_INDEX, 19205 0x0000 + UNICODE_MAX_TABLE_INDEX, 19206 0x0000 + UNICODE_MAX_TABLE_INDEX, 19207 0x0000 + UNICODE_MAX_TABLE_INDEX, 19208 0x0000 + UNICODE_MAX_TABLE_INDEX, 19209 0x0000 + UNICODE_MAX_TABLE_INDEX, 19210 0x0000 + UNICODE_MAX_TABLE_INDEX, 19211 0x0000 + UNICODE_MAX_TABLE_INDEX, 19212 0x0000 + UNICODE_MAX_TABLE_INDEX, 19213 0x0000 + UNICODE_MAX_TABLE_INDEX, 19214 0x0000 + UNICODE_MAX_TABLE_INDEX, 19215 0x0000 + UNICODE_MAX_TABLE_INDEX, 19216 0x0000 + UNICODE_MAX_TABLE_INDEX, 19217 0x0000 + UNICODE_MAX_TABLE_INDEX, 19218 0x0000 + UNICODE_MAX_TABLE_INDEX, 19219 0x0000 + UNICODE_MAX_TABLE_INDEX, 19220 0x0000 + UNICODE_MAX_TABLE_INDEX, 19221 0x0000 + UNICODE_MAX_TABLE_INDEX, 19222 0x0000 + UNICODE_MAX_TABLE_INDEX, 19223 0x0000 + UNICODE_MAX_TABLE_INDEX, 19224 0x0000 + UNICODE_MAX_TABLE_INDEX, 19225 0x0000 + UNICODE_MAX_TABLE_INDEX, 19226 0x0000 + UNICODE_MAX_TABLE_INDEX, 19227 0x0000 + UNICODE_MAX_TABLE_INDEX, 19228 0x0000 + UNICODE_MAX_TABLE_INDEX, 19229 0x0000 + UNICODE_MAX_TABLE_INDEX, 19230 0x0000 + UNICODE_MAX_TABLE_INDEX, 19231 0x0000 + UNICODE_MAX_TABLE_INDEX, 19232 0x0000 + UNICODE_MAX_TABLE_INDEX, 19233 0x0000 + UNICODE_MAX_TABLE_INDEX, 19234 0x0000 + UNICODE_MAX_TABLE_INDEX, 19235 0x0000 + UNICODE_MAX_TABLE_INDEX, 19236 0x0000 + UNICODE_MAX_TABLE_INDEX, 19237 0x0000 + UNICODE_MAX_TABLE_INDEX, 19238 0x0000 + UNICODE_MAX_TABLE_INDEX, 19239 0x0000 + UNICODE_MAX_TABLE_INDEX, 19240 0x0000 + UNICODE_MAX_TABLE_INDEX, 19241 0x0000 + UNICODE_MAX_TABLE_INDEX, 19242 0x0000 + UNICODE_MAX_TABLE_INDEX, 19243 0x0000 + UNICODE_MAX_TABLE_INDEX, 19244 0x0000 + UNICODE_MAX_TABLE_INDEX, 19245 0x0000 + UNICODE_MAX_TABLE_INDEX, 19246 0x0000 + UNICODE_MAX_TABLE_INDEX, 19247 0x0000 + UNICODE_MAX_TABLE_INDEX, 19248 0x0000 + UNICODE_MAX_TABLE_INDEX, 19249 0x0000 + UNICODE_MAX_TABLE_INDEX, 19250 0x0000 + UNICODE_MAX_TABLE_INDEX, 19251 0x0000 + UNICODE_MAX_TABLE_INDEX, 19252 0x0000 + UNICODE_MAX_TABLE_INDEX, 19253 0x0000 + UNICODE_MAX_TABLE_INDEX, 19254 0x0000 + UNICODE_MAX_TABLE_INDEX, 19255 0x0000 + UNICODE_MAX_TABLE_INDEX, 19256 0x0000 + UNICODE_MAX_TABLE_INDEX, 19257 0x0000 + UNICODE_MAX_TABLE_INDEX, 19258 0x0000 + UNICODE_MAX_TABLE_INDEX, 19259 0x0000 + UNICODE_MAX_TABLE_INDEX, 19260 0x0000 + UNICODE_MAX_TABLE_INDEX, 19261 0x0000 + UNICODE_MAX_TABLE_INDEX, 19262 0x0000 + UNICODE_MAX_TABLE_INDEX, 19263 0x0000 + UNICODE_MAX_TABLE_INDEX, 19264 0x0000 + UNICODE_MAX_TABLE_INDEX, 19265 0x0000 + UNICODE_MAX_TABLE_INDEX, 19266 0x0000 + UNICODE_MAX_TABLE_INDEX, 19267 0x0000 + UNICODE_MAX_TABLE_INDEX, 19268 0x0000 + UNICODE_MAX_TABLE_INDEX, 19269 0x0000 + UNICODE_MAX_TABLE_INDEX, 19270 0x0000 + UNICODE_MAX_TABLE_INDEX, 19271 0x0000 + UNICODE_MAX_TABLE_INDEX, 19272 0x0000 + UNICODE_MAX_TABLE_INDEX, 19273 0x0000 + UNICODE_MAX_TABLE_INDEX, 19274 0x0000 + UNICODE_MAX_TABLE_INDEX, 19275 0x0000 + UNICODE_MAX_TABLE_INDEX, 19276 0x0000 + UNICODE_MAX_TABLE_INDEX, 19277 0x0000 + UNICODE_MAX_TABLE_INDEX, 19278 0x0000 + UNICODE_MAX_TABLE_INDEX, 19279 0x0000 + UNICODE_MAX_TABLE_INDEX, 19280 0x0000 + UNICODE_MAX_TABLE_INDEX, 19281 0x0000 + UNICODE_MAX_TABLE_INDEX, 19282 0x0000 + UNICODE_MAX_TABLE_INDEX, 19283 0x0000 + UNICODE_MAX_TABLE_INDEX, 19284 0x0000 + UNICODE_MAX_TABLE_INDEX, 19285 0x0000 + UNICODE_MAX_TABLE_INDEX, 19286 0x0000 + UNICODE_MAX_TABLE_INDEX, 19287 0x0000 + UNICODE_MAX_TABLE_INDEX, 19288 0x0000 + UNICODE_MAX_TABLE_INDEX, 19289 0x0000 + UNICODE_MAX_TABLE_INDEX, 19290 0x0000 + UNICODE_MAX_TABLE_INDEX, 19291 0x0000 + UNICODE_MAX_TABLE_INDEX, 19292 0x0000 + UNICODE_MAX_TABLE_INDEX, 19293 0x0000 + UNICODE_MAX_TABLE_INDEX, 19294 0x0000 + UNICODE_MAX_TABLE_INDEX, 19295 0x0000 + UNICODE_MAX_TABLE_INDEX, 19296 0x0000 + UNICODE_MAX_TABLE_INDEX, 19297 0x0000 + UNICODE_MAX_TABLE_INDEX, 19298 0x0000 + UNICODE_MAX_TABLE_INDEX, 19299 0x0000 + UNICODE_MAX_TABLE_INDEX, 19300 0x0000 + UNICODE_MAX_TABLE_INDEX, 19301 0x0000 + UNICODE_MAX_TABLE_INDEX, 19302 0x0000 + UNICODE_MAX_TABLE_INDEX, 19303 0x0000 + UNICODE_MAX_TABLE_INDEX, 19304 0x0000 + UNICODE_MAX_TABLE_INDEX, 19305 0x0000 + UNICODE_MAX_TABLE_INDEX, 19306 0x0000 + UNICODE_MAX_TABLE_INDEX, 19307 0x0000 + UNICODE_MAX_TABLE_INDEX, 19308 0x0000 + UNICODE_MAX_TABLE_INDEX, 19309 0x0000 + UNICODE_MAX_TABLE_INDEX, 19310 0x0000 + UNICODE_MAX_TABLE_INDEX, 19311 0x0000 + UNICODE_MAX_TABLE_INDEX, 19312 0x0000 + UNICODE_MAX_TABLE_INDEX, 19313 0x0000 + UNICODE_MAX_TABLE_INDEX, 19314 0x0000 + UNICODE_MAX_TABLE_INDEX, 19315 0x0000 + UNICODE_MAX_TABLE_INDEX, 19316 0x0000 + UNICODE_MAX_TABLE_INDEX, 19317 0x0000 + UNICODE_MAX_TABLE_INDEX, 19318 0x0000 + UNICODE_MAX_TABLE_INDEX, 19319 0x0000 + UNICODE_MAX_TABLE_INDEX, 19320 0x0000 + UNICODE_MAX_TABLE_INDEX, 19321 0x0000 + UNICODE_MAX_TABLE_INDEX, 19322 0x0000 + UNICODE_MAX_TABLE_INDEX, 19323 0x0000 + UNICODE_MAX_TABLE_INDEX, 19324 0x0000 + UNICODE_MAX_TABLE_INDEX, 19325 0x0000 + UNICODE_MAX_TABLE_INDEX, 19326 0x0000 + UNICODE_MAX_TABLE_INDEX, 19327 0x0000 + UNICODE_MAX_TABLE_INDEX, 19328 0x0000 + UNICODE_MAX_TABLE_INDEX, 19329 0x0000 + UNICODE_MAX_TABLE_INDEX, 19330 0x0000 + UNICODE_MAX_TABLE_INDEX, 19331 0x0000 + UNICODE_MAX_TABLE_INDEX, 19332 0x0000 + UNICODE_MAX_TABLE_INDEX, 19333 0x0000 + UNICODE_MAX_TABLE_INDEX, 19334 0x0000 + UNICODE_MAX_TABLE_INDEX, 19335 0x0000 + UNICODE_MAX_TABLE_INDEX, 19336 0x0000 + UNICODE_MAX_TABLE_INDEX, 19337 0x0000 + UNICODE_MAX_TABLE_INDEX, 19338 0x0000 + UNICODE_MAX_TABLE_INDEX, 19339 0x0000 + UNICODE_MAX_TABLE_INDEX, 19340 0x0000 + UNICODE_MAX_TABLE_INDEX, 19341 0x0000 + UNICODE_MAX_TABLE_INDEX, 19342 0x0000 + UNICODE_MAX_TABLE_INDEX, 19343 0x0000 + UNICODE_MAX_TABLE_INDEX, 19344 0x0000 + UNICODE_MAX_TABLE_INDEX, 19345 0x0000 + UNICODE_MAX_TABLE_INDEX, 19346 0x0000 + UNICODE_MAX_TABLE_INDEX, 19347 0x0000 + UNICODE_MAX_TABLE_INDEX, 19348 0x0000 + UNICODE_MAX_TABLE_INDEX, 19349 0x0000 + UNICODE_MAX_TABLE_INDEX, 19350 0x0000 + UNICODE_MAX_TABLE_INDEX, 19351 0x0000 + UNICODE_MAX_TABLE_INDEX, 19352 0x0000 + UNICODE_MAX_TABLE_INDEX, 19353 0x0000 + UNICODE_MAX_TABLE_INDEX, 19354 0x0000 + UNICODE_MAX_TABLE_INDEX, 19355 0x0000 + UNICODE_MAX_TABLE_INDEX, 19356 0x0000 + UNICODE_MAX_TABLE_INDEX, 19357 0x0000 + UNICODE_MAX_TABLE_INDEX, 19358 0x0000 + UNICODE_MAX_TABLE_INDEX, 19359 0x0000 + UNICODE_MAX_TABLE_INDEX, 19360 0x0000 + UNICODE_MAX_TABLE_INDEX, 19361 0x0000 + UNICODE_MAX_TABLE_INDEX, 19362 0x0000 + UNICODE_MAX_TABLE_INDEX, 19363 0x0000 + UNICODE_MAX_TABLE_INDEX, 19364 0x0000 + UNICODE_MAX_TABLE_INDEX, 19365 0x0000 + UNICODE_MAX_TABLE_INDEX, 19366 0x0000 + UNICODE_MAX_TABLE_INDEX, 19367 0x0000 + UNICODE_MAX_TABLE_INDEX, 19368 0x0000 + UNICODE_MAX_TABLE_INDEX, 19369 0x0000 + UNICODE_MAX_TABLE_INDEX, 19370 0x0000 + UNICODE_MAX_TABLE_INDEX, 19371 0x0000 + UNICODE_MAX_TABLE_INDEX, 19372 0x0000 + UNICODE_MAX_TABLE_INDEX, 19373 0x0000 + UNICODE_MAX_TABLE_INDEX, 19374 0x0000 + UNICODE_MAX_TABLE_INDEX, 19375 0x0000 + UNICODE_MAX_TABLE_INDEX, 19376 0x0000 + UNICODE_MAX_TABLE_INDEX, 19377 0x0000 + UNICODE_MAX_TABLE_INDEX, 19378 0x0000 + UNICODE_MAX_TABLE_INDEX, 19379 0x0000 + UNICODE_MAX_TABLE_INDEX, 19380 0x0000 + UNICODE_MAX_TABLE_INDEX, 19381 0x0000 + UNICODE_MAX_TABLE_INDEX, 19382 0x0000 + UNICODE_MAX_TABLE_INDEX, 19383 0x0000 + UNICODE_MAX_TABLE_INDEX, 19384 0x0000 + UNICODE_MAX_TABLE_INDEX, 19385 0x0000 + UNICODE_MAX_TABLE_INDEX, 19386 0x0000 + UNICODE_MAX_TABLE_INDEX, 19387 0x0000 + UNICODE_MAX_TABLE_INDEX, 19388 0x0000 + UNICODE_MAX_TABLE_INDEX, 19389 0x0000 + UNICODE_MAX_TABLE_INDEX, 19390 0x0000 + UNICODE_MAX_TABLE_INDEX, 19391 0x0000 + UNICODE_MAX_TABLE_INDEX, 19392 0x0000 + UNICODE_MAX_TABLE_INDEX, 19393 0x0000 + UNICODE_MAX_TABLE_INDEX, 19394 0x0000 + UNICODE_MAX_TABLE_INDEX, 19395 0x0000 + UNICODE_MAX_TABLE_INDEX, 19396 0x0000 + UNICODE_MAX_TABLE_INDEX, 19397 0x0000 + UNICODE_MAX_TABLE_INDEX, 19398 0x0000 + UNICODE_MAX_TABLE_INDEX, 19399 0x0000 + UNICODE_MAX_TABLE_INDEX, 19400 0x0000 + UNICODE_MAX_TABLE_INDEX, 19401 0x0000 + UNICODE_MAX_TABLE_INDEX, 19402 0x0000 + UNICODE_MAX_TABLE_INDEX, 19403 0x0000 + UNICODE_MAX_TABLE_INDEX, 19404 0x0000 + UNICODE_MAX_TABLE_INDEX, 19405 0x0000 + UNICODE_MAX_TABLE_INDEX, 19406 0x0000 + UNICODE_MAX_TABLE_INDEX, 19407 0x0000 + UNICODE_MAX_TABLE_INDEX, 19408 0x0000 + UNICODE_MAX_TABLE_INDEX, 19409 0x0000 + UNICODE_MAX_TABLE_INDEX, 19410 0x0000 + UNICODE_MAX_TABLE_INDEX, 19411 0x0000 + UNICODE_MAX_TABLE_INDEX, 19412 0x0000 + UNICODE_MAX_TABLE_INDEX, 19413 0x0000 + UNICODE_MAX_TABLE_INDEX, 19414 0x0000 + UNICODE_MAX_TABLE_INDEX, 19415 0x0000 + UNICODE_MAX_TABLE_INDEX, 19416 0x0000 + UNICODE_MAX_TABLE_INDEX, 19417 0x0000 + UNICODE_MAX_TABLE_INDEX, 19418 0x0000 + UNICODE_MAX_TABLE_INDEX, 19419 0x0000 + UNICODE_MAX_TABLE_INDEX, 19420 0x0000 + UNICODE_MAX_TABLE_INDEX, 19421 0x0000 + UNICODE_MAX_TABLE_INDEX, 19422 0x0000 + UNICODE_MAX_TABLE_INDEX, 19423 0x0000 + UNICODE_MAX_TABLE_INDEX, 19424 0x0000 + UNICODE_MAX_TABLE_INDEX, 19425 0x0000 + UNICODE_MAX_TABLE_INDEX, 19426 0x0000 + UNICODE_MAX_TABLE_INDEX, 19427 0x0000 + UNICODE_MAX_TABLE_INDEX, 19428 0x0000 + UNICODE_MAX_TABLE_INDEX, 19429 0x0000 + UNICODE_MAX_TABLE_INDEX, 19430 0x0000 + UNICODE_MAX_TABLE_INDEX, 19431 0x0000 + UNICODE_MAX_TABLE_INDEX, 19432 0x0000 + UNICODE_MAX_TABLE_INDEX, 19433 0x0000 + UNICODE_MAX_TABLE_INDEX, 19434 0x0000 + UNICODE_MAX_TABLE_INDEX, 19435 0x0000 + UNICODE_MAX_TABLE_INDEX, 19436 0x0000 + UNICODE_MAX_TABLE_INDEX, 19437 0x0000 + UNICODE_MAX_TABLE_INDEX, 19438 0x0000 + UNICODE_MAX_TABLE_INDEX, 19439 0x0000 + UNICODE_MAX_TABLE_INDEX, 19440 0x0000 + UNICODE_MAX_TABLE_INDEX, 19441 0x0000 + UNICODE_MAX_TABLE_INDEX, 19442 0x0000 + UNICODE_MAX_TABLE_INDEX, 19443 0x0000 + UNICODE_MAX_TABLE_INDEX, 19444 0x0000 + UNICODE_MAX_TABLE_INDEX, 19445 0x0000 + UNICODE_MAX_TABLE_INDEX, 19446 0x0000 + UNICODE_MAX_TABLE_INDEX, 19447 0x0000 + UNICODE_MAX_TABLE_INDEX, 19448 0x0000 + UNICODE_MAX_TABLE_INDEX, 19449 0x0000 + UNICODE_MAX_TABLE_INDEX, 19450 0x0000 + UNICODE_MAX_TABLE_INDEX, 19451 0x0000 + UNICODE_MAX_TABLE_INDEX, 19452 0x0000 + UNICODE_MAX_TABLE_INDEX, 19453 0x0000 + UNICODE_MAX_TABLE_INDEX, 19454 0x0000 + UNICODE_MAX_TABLE_INDEX, 19455 0x0000 + UNICODE_MAX_TABLE_INDEX, 19456 0x0000 + UNICODE_MAX_TABLE_INDEX, 19457 0x0000 + UNICODE_MAX_TABLE_INDEX, 19458 0x0000 + UNICODE_MAX_TABLE_INDEX, 19459 0x0000 + UNICODE_MAX_TABLE_INDEX, 19460 0x0000 + UNICODE_MAX_TABLE_INDEX, 19461 0x0000 + UNICODE_MAX_TABLE_INDEX, 19462 0x0000 + UNICODE_MAX_TABLE_INDEX, 19463 0x0000 + UNICODE_MAX_TABLE_INDEX, 19464 0x0000 + UNICODE_MAX_TABLE_INDEX, 19465 0x0000 + UNICODE_MAX_TABLE_INDEX, 19466 0x0000 + UNICODE_MAX_TABLE_INDEX, 19467 0x0000 + UNICODE_MAX_TABLE_INDEX, 19468 0x0000 + UNICODE_MAX_TABLE_INDEX, 19469 0x0000 + UNICODE_MAX_TABLE_INDEX, 19470 0x0000 + UNICODE_MAX_TABLE_INDEX, 19471 0x0000 + UNICODE_MAX_TABLE_INDEX, 19472 0x0000 + UNICODE_MAX_TABLE_INDEX, 19473 0x0000 + UNICODE_MAX_TABLE_INDEX, 19474 0x0000 + UNICODE_MAX_TABLE_INDEX, 19475 0x0000 + UNICODE_MAX_TABLE_INDEX, 19476 0x0000 + UNICODE_MAX_TABLE_INDEX, 19477 0x0000 + UNICODE_MAX_TABLE_INDEX, 19478 0x0000 + UNICODE_MAX_TABLE_INDEX, 19479 0x0000 + UNICODE_MAX_TABLE_INDEX, 19480 0x0000 + UNICODE_MAX_TABLE_INDEX, 19481 0x0000 + UNICODE_MAX_TABLE_INDEX, 19482 0x0000 + UNICODE_MAX_TABLE_INDEX, 19483 0x0000 + UNICODE_MAX_TABLE_INDEX, 19484 0x0000 + UNICODE_MAX_TABLE_INDEX, 19485 0x0000 + UNICODE_MAX_TABLE_INDEX, 19486 0x0000 + UNICODE_MAX_TABLE_INDEX, 19487 0x0000 + UNICODE_MAX_TABLE_INDEX, 19488 0x0000 + UNICODE_MAX_TABLE_INDEX, 19489 0x0000 + UNICODE_MAX_TABLE_INDEX, 19490 0x0000 + UNICODE_MAX_TABLE_INDEX, 19491 0x0000 + UNICODE_MAX_TABLE_INDEX, 19492 0x0000 + UNICODE_MAX_TABLE_INDEX, 19493 0x0000 + UNICODE_MAX_TABLE_INDEX, 19494 0x0000 + UNICODE_MAX_TABLE_INDEX, 19495 0x0000 + UNICODE_MAX_TABLE_INDEX, 19496 0x0000 + UNICODE_MAX_TABLE_INDEX, 19497 0x0000 + UNICODE_MAX_TABLE_INDEX, 19498 0x0000 + UNICODE_MAX_TABLE_INDEX, 19499 0x0000 + UNICODE_MAX_TABLE_INDEX, 19500 0x0000 + UNICODE_MAX_TABLE_INDEX, 19501 0x0000 + UNICODE_MAX_TABLE_INDEX, 19502 0x0000 + UNICODE_MAX_TABLE_INDEX, 19503 0x0000 + UNICODE_MAX_TABLE_INDEX, 19504 0x0000 + UNICODE_MAX_TABLE_INDEX, 19505 0x0000 + UNICODE_MAX_TABLE_INDEX, 19506 0x0000 + UNICODE_MAX_TABLE_INDEX, 19507 0x0000 + UNICODE_MAX_TABLE_INDEX, 19508 0x0000 + UNICODE_MAX_TABLE_INDEX, 19509 0x0000 + UNICODE_MAX_TABLE_INDEX, 19510 0x0000 + UNICODE_MAX_TABLE_INDEX, 19511 0x0000 + UNICODE_MAX_TABLE_INDEX, 19512 0x0000 + UNICODE_MAX_TABLE_INDEX, 19513 0x0000 + UNICODE_MAX_TABLE_INDEX, 19514 0x0000 + UNICODE_MAX_TABLE_INDEX, 19515 0x0000 + UNICODE_MAX_TABLE_INDEX, 19516 0x0000 + UNICODE_MAX_TABLE_INDEX, 19517 0x0000 + UNICODE_MAX_TABLE_INDEX, 19518 0x0000 + UNICODE_MAX_TABLE_INDEX, 19519 0x0000 + UNICODE_MAX_TABLE_INDEX, 19520 0x0000 + UNICODE_MAX_TABLE_INDEX, 19521 0x0000 + UNICODE_MAX_TABLE_INDEX, 19522 0x0000 + UNICODE_MAX_TABLE_INDEX, 19523 0x0000 + UNICODE_MAX_TABLE_INDEX, 19524 0x0000 + UNICODE_MAX_TABLE_INDEX, 19525 0x0000 + UNICODE_MAX_TABLE_INDEX, 19526 0x0000 + UNICODE_MAX_TABLE_INDEX, 19527 0x0000 + UNICODE_MAX_TABLE_INDEX, 19528 0x0000 + UNICODE_MAX_TABLE_INDEX, 19529 0x0000 + UNICODE_MAX_TABLE_INDEX, 19530 0x0000 + UNICODE_MAX_TABLE_INDEX, 19531 0x0000 + UNICODE_MAX_TABLE_INDEX, 19532 0x0000 + UNICODE_MAX_TABLE_INDEX, 19533 0x0000 + UNICODE_MAX_TABLE_INDEX, 19534 0x0000 + UNICODE_MAX_TABLE_INDEX, 19535 0x0000 + UNICODE_MAX_TABLE_INDEX, 19536 0x0000 + UNICODE_MAX_TABLE_INDEX, 19537 0x0000 + UNICODE_MAX_TABLE_INDEX, 19538 0x0000 + UNICODE_MAX_TABLE_INDEX, 19539 0x0000 + UNICODE_MAX_TABLE_INDEX, 19540 0x0000 + UNICODE_MAX_TABLE_INDEX, 19541 0x0000 + UNICODE_MAX_TABLE_INDEX, 19542 0x0000 + UNICODE_MAX_TABLE_INDEX, 19543 0x0000 + UNICODE_MAX_TABLE_INDEX, 19544 0x0000 + UNICODE_MAX_TABLE_INDEX, 19545 0x0000 + UNICODE_MAX_TABLE_INDEX, 19546 0x0000 + UNICODE_MAX_TABLE_INDEX, 19547 0x0000 + UNICODE_MAX_TABLE_INDEX, 19548 0x0000 + UNICODE_MAX_TABLE_INDEX, 19549 0x0000 + UNICODE_MAX_TABLE_INDEX, 19550 0x0000 + UNICODE_MAX_TABLE_INDEX, 19551 0x0000 + UNICODE_MAX_TABLE_INDEX, 19552 0x0000 + UNICODE_MAX_TABLE_INDEX, 19553 0x0000 + UNICODE_MAX_TABLE_INDEX, 19554 0x0000 + UNICODE_MAX_TABLE_INDEX, 19555 0x0000 + UNICODE_MAX_TABLE_INDEX, 19556 0x0000 + UNICODE_MAX_TABLE_INDEX, 19557 0x0000 + UNICODE_MAX_TABLE_INDEX, 19558 0x0000 + UNICODE_MAX_TABLE_INDEX, 19559 0x0000 + UNICODE_MAX_TABLE_INDEX, 19560 0x0000 + UNICODE_MAX_TABLE_INDEX, 19561 0x0000 + UNICODE_MAX_TABLE_INDEX, 19562 0x0000 + UNICODE_MAX_TABLE_INDEX, 19563 0x0000 + UNICODE_MAX_TABLE_INDEX, 19564 0x0000 + UNICODE_MAX_TABLE_INDEX, 19565 0x0000 + UNICODE_MAX_TABLE_INDEX, 19566 0x0000 + UNICODE_MAX_TABLE_INDEX, 19567 0x0000 + UNICODE_MAX_TABLE_INDEX, 19568 0x0000 + UNICODE_MAX_TABLE_INDEX, 19569 0x0000 + UNICODE_MAX_TABLE_INDEX, 19570 0x0000 + UNICODE_MAX_TABLE_INDEX 19571 }; 19572 19573 static const rune title_table[][3] = { 19574 { 0x01c5, 0x01c4, 0x01c6 }, 19575 { 0x01c8, 0x01c7, 0x01c9 }, 19576 { 0x01cb, 0x01ca, 0x01cc }, 19577 { 0x01f2, 0x01f1, 0x01f3 }, 19578 { 0x1f88, 0x0000, 0x1f80 }, 19579 { 0x1f89, 0x0000, 0x1f81 }, 19580 { 0x1f8a, 0x0000, 0x1f82 }, 19581 { 0x1f8b, 0x0000, 0x1f83 }, 19582 { 0x1f8c, 0x0000, 0x1f84 }, 19583 { 0x1f8d, 0x0000, 0x1f85 }, 19584 { 0x1f8e, 0x0000, 0x1f86 }, 19585 { 0x1f8f, 0x0000, 0x1f87 }, 19586 { 0x1f98, 0x0000, 0x1f90 }, 19587 { 0x1f99, 0x0000, 0x1f91 }, 19588 { 0x1f9a, 0x0000, 0x1f92 }, 19589 { 0x1f9b, 0x0000, 0x1f93 }, 19590 { 0x1f9c, 0x0000, 0x1f94 }, 19591 { 0x1f9d, 0x0000, 0x1f95 }, 19592 { 0x1f9e, 0x0000, 0x1f96 }, 19593 { 0x1f9f, 0x0000, 0x1f97 }, 19594 { 0x1fa8, 0x0000, 0x1fa0 }, 19595 { 0x1fa9, 0x0000, 0x1fa1 }, 19596 { 0x1faa, 0x0000, 0x1fa2 }, 19597 { 0x1fab, 0x0000, 0x1fa3 }, 19598 { 0x1fac, 0x0000, 0x1fa4 }, 19599 { 0x1fad, 0x0000, 0x1fa5 }, 19600 { 0x1fae, 0x0000, 0x1fa6 }, 19601 { 0x1faf, 0x0000, 0x1fa7 }, 19602 { 0x1fbc, 0x0000, 0x1fb3 }, 19603 { 0x1fcc, 0x0000, 0x1fc3 }, 19604 { 0x1ffc, 0x0000, 0x1ff3 } 19605 }; 19606 19607 /* Table of special cases for case conversion; each record contains 19608 * First, the best single character mapping to lowercase if Lu, 19609 * and to uppercase if Ll, followed by the output mapping for the two cases 19610 * other than the case of the codepoint, in the order [Ll],[Lu],[Lt], 19611 * encoded in UTF-8, separated and terminated by a null character. 19612 */ 19613 static const char special_case_table[] = { 19614 "\x00\x53\x53\x00\x53\x73\0" /* offset 0 */ 19615 "\x69\x69\xcc\x87\x00\xc4\xb0\0" /* offset 7 */ 19616 "\x00\x46\x46\x00\x46\x66\0" /* offset 15 */ 19617 "\x00\x46\x49\x00\x46\x69\0" /* offset 22 */ 19618 "\x00\x46\x4c\x00\x46\x6c\0" /* offset 29 */ 19619 "\x00\x46\x46\x49\x00\x46\x66\x69\0" /* offset 36 */ 19620 "\x00\x46\x46\x4c\x00\x46\x66\x6c\0" /* offset 45 */ 19621 "\x00\x53\x54\x00\x53\x74\0" /* offset 54 */ 19622 "\x00\x53\x54\x00\x53\x74\0" /* offset 61 */ 19623 "\x00\xd4\xb5\xd5\x92\x00\xd4\xb5\xd6\x82\0" /* offset 68 */ 19624 "\x00\xd5\x84\xd5\x86\x00\xd5\x84\xd5\xb6\0" /* offset 79 */ 19625 "\x00\xd5\x84\xd4\xb5\x00\xd5\x84\xd5\xa5\0" /* offset 90 */ 19626 "\x00\xd5\x84\xd4\xbb\x00\xd5\x84\xd5\xab\0" /* offset 101 */ 19627 "\x00\xd5\x8e\xd5\x86\x00\xd5\x8e\xd5\xb6\0" /* offset 112 */ 19628 "\x00\xd5\x84\xd4\xbd\x00\xd5\x84\xd5\xad\0" /* offset 123 */ 19629 "\x00\xca\xbc\x4e\x00\xca\xbc\x4e\0" /* offset 134 */ 19630 "\x00\xce\x99\xcc\x88\xcc\x81\x00\xce\x99\xcc\x88\xcc\x81\0" /* offset 143 */ 19631 "\x00\xce\xa5\xcc\x88\xcc\x81\x00\xce\xa5\xcc\x88\xcc\x81\0" /* offset 158 */ 19632 "\x00\x4a\xcc\x8c\x00\x4a\xcc\x8c\0" /* offset 173 */ 19633 "\x00\x48\xcc\xb1\x00\x48\xcc\xb1\0" /* offset 182 */ 19634 "\x00\x54\xcc\x88\x00\x54\xcc\x88\0" /* offset 191 */ 19635 "\x00\x57\xcc\x8a\x00\x57\xcc\x8a\0" /* offset 200 */ 19636 "\x00\x59\xcc\x8a\x00\x59\xcc\x8a\0" /* offset 209 */ 19637 "\x00\x41\xca\xbe\x00\x41\xca\xbe\0" /* offset 218 */ 19638 "\x00\xce\xa5\xcc\x93\x00\xce\xa5\xcc\x93\0" /* offset 227 */ 19639 "\x00\xce\xa5\xcc\x93\xcc\x80\x00\xce\xa5\xcc\x93\xcc\x80\0" /* offset 238 */ 19640 "\x00\xce\xa5\xcc\x93\xcc\x81\x00\xce\xa5\xcc\x93\xcc\x81\0" /* offset 253 */ 19641 "\x00\xce\xa5\xcc\x93\xcd\x82\x00\xce\xa5\xcc\x93\xcd\x82\0" /* offset 268 */ 19642 "\x00\xce\x91\xcd\x82\x00\xce\x91\xcd\x82\0" /* offset 283 */ 19643 "\x00\xce\x97\xcd\x82\x00\xce\x97\xcd\x82\0" /* offset 294 */ 19644 "\x00\xce\x99\xcc\x88\xcc\x80\x00\xce\x99\xcc\x88\xcc\x80\0" /* offset 305 */ 19645 "\x00\xce\x99\xcc\x88\xcc\x81\x00\xce\x99\xcc\x88\xcc\x81\0" /* offset 320 */ 19646 "\x00\xce\x99\xcd\x82\x00\xce\x99\xcd\x82\0" /* offset 335 */ 19647 "\x00\xce\x99\xcc\x88\xcd\x82\x00\xce\x99\xcc\x88\xcd\x82\0" /* offset 346 */ 19648 "\x00\xce\xa5\xcc\x88\xcc\x80\x00\xce\xa5\xcc\x88\xcc\x80\0" /* offset 361 */ 19649 "\x00\xce\xa5\xcc\x88\xcc\x81\x00\xce\xa5\xcc\x88\xcc\x81\0" /* offset 376 */ 19650 "\x00\xce\xa1\xcc\x93\x00\xce\xa1\xcc\x93\0" /* offset 391 */ 19651 "\x00\xce\xa5\xcd\x82\x00\xce\xa5\xcd\x82\0" /* offset 402 */ 19652 "\x00\xce\xa5\xcc\x88\xcd\x82\x00\xce\xa5\xcc\x88\xcd\x82\0" /* offset 413 */ 19653 "\x00\xce\xa9\xcd\x82\x00\xce\xa9\xcd\x82\0" /* offset 428 */ 19654 "\xe1\xbe\x88\xe1\xbc\x88\xce\x99\x00\xe1\xbe\x88\0" /* offset 439 */ 19655 "\xe1\xbe\x89\xe1\xbc\x89\xce\x99\x00\xe1\xbe\x89\0" /* offset 452 */ 19656 "\xe1\xbe\x8a\xe1\xbc\x8a\xce\x99\x00\xe1\xbe\x8a\0" /* offset 465 */ 19657 "\xe1\xbe\x8b\xe1\xbc\x8b\xce\x99\x00\xe1\xbe\x8b\0" /* offset 478 */ 19658 "\xe1\xbe\x8c\xe1\xbc\x8c\xce\x99\x00\xe1\xbe\x8c\0" /* offset 491 */ 19659 "\xe1\xbe\x8d\xe1\xbc\x8d\xce\x99\x00\xe1\xbe\x8d\0" /* offset 504 */ 19660 "\xe1\xbe\x8e\xe1\xbc\x8e\xce\x99\x00\xe1\xbe\x8e\0" /* offset 517 */ 19661 "\xe1\xbe\x8f\xe1\xbc\x8f\xce\x99\x00\xe1\xbe\x8f\0" /* offset 530 */ 19662 "\xe1\xbe\x80\x00\xe1\xbc\x88\xce\x99\0" /* offset 543 */ 19663 "\xe1\xbe\x81\x00\xe1\xbc\x89\xce\x99\0" /* offset 553 */ 19664 "\xe1\xbe\x82\x00\xe1\xbc\x8a\xce\x99\0" /* offset 563 */ 19665 "\xe1\xbe\x83\x00\xe1\xbc\x8b\xce\x99\0" /* offset 573 */ 19666 "\xe1\xbe\x84\x00\xe1\xbc\x8c\xce\x99\0" /* offset 583 */ 19667 "\xe1\xbe\x85\x00\xe1\xbc\x8d\xce\x99\0" /* offset 593 */ 19668 "\xe1\xbe\x86\x00\xe1\xbc\x8e\xce\x99\0" /* offset 603 */ 19669 "\xe1\xbe\x87\x00\xe1\xbc\x8f\xce\x99\0" /* offset 613 */ 19670 "\xe1\xbe\x98\xe1\xbc\xa8\xce\x99\x00\xe1\xbe\x98\0" /* offset 623 */ 19671 "\xe1\xbe\x99\xe1\xbc\xa9\xce\x99\x00\xe1\xbe\x99\0" /* offset 636 */ 19672 "\xe1\xbe\x9a\xe1\xbc\xaa\xce\x99\x00\xe1\xbe\x9a\0" /* offset 649 */ 19673 "\xe1\xbe\x9b\xe1\xbc\xab\xce\x99\x00\xe1\xbe\x9b\0" /* offset 662 */ 19674 "\xe1\xbe\x9c\xe1\xbc\xac\xce\x99\x00\xe1\xbe\x9c\0" /* offset 675 */ 19675 "\xe1\xbe\x9d\xe1\xbc\xad\xce\x99\x00\xe1\xbe\x9d\0" /* offset 688 */ 19676 "\xe1\xbe\x9e\xe1\xbc\xae\xce\x99\x00\xe1\xbe\x9e\0" /* offset 701 */ 19677 "\xe1\xbe\x9f\xe1\xbc\xaf\xce\x99\x00\xe1\xbe\x9f\0" /* offset 714 */ 19678 "\xe1\xbe\x90\x00\xe1\xbc\xa8\xce\x99\0" /* offset 727 */ 19679 "\xe1\xbe\x91\x00\xe1\xbc\xa9\xce\x99\0" /* offset 737 */ 19680 "\xe1\xbe\x92\x00\xe1\xbc\xaa\xce\x99\0" /* offset 747 */ 19681 "\xe1\xbe\x93\x00\xe1\xbc\xab\xce\x99\0" /* offset 757 */ 19682 "\xe1\xbe\x94\x00\xe1\xbc\xac\xce\x99\0" /* offset 767 */ 19683 "\xe1\xbe\x95\x00\xe1\xbc\xad\xce\x99\0" /* offset 777 */ 19684 "\xe1\xbe\x96\x00\xe1\xbc\xae\xce\x99\0" /* offset 787 */ 19685 "\xe1\xbe\x97\x00\xe1\xbc\xaf\xce\x99\0" /* offset 797 */ 19686 "\xe1\xbe\xa8\xe1\xbd\xa8\xce\x99\x00\xe1\xbe\xa8\0" /* offset 807 */ 19687 "\xe1\xbe\xa9\xe1\xbd\xa9\xce\x99\x00\xe1\xbe\xa9\0" /* offset 820 */ 19688 "\xe1\xbe\xaa\xe1\xbd\xaa\xce\x99\x00\xe1\xbe\xaa\0" /* offset 833 */ 19689 "\xe1\xbe\xab\xe1\xbd\xab\xce\x99\x00\xe1\xbe\xab\0" /* offset 846 */ 19690 "\xe1\xbe\xac\xe1\xbd\xac\xce\x99\x00\xe1\xbe\xac\0" /* offset 859 */ 19691 "\xe1\xbe\xad\xe1\xbd\xad\xce\x99\x00\xe1\xbe\xad\0" /* offset 872 */ 19692 "\xe1\xbe\xae\xe1\xbd\xae\xce\x99\x00\xe1\xbe\xae\0" /* offset 885 */ 19693 "\xe1\xbe\xaf\xe1\xbd\xaf\xce\x99\x00\xe1\xbe\xaf\0" /* offset 898 */ 19694 "\xe1\xbe\xa0\x00\xe1\xbd\xa8\xce\x99\0" /* offset 911 */ 19695 "\xe1\xbe\xa1\x00\xe1\xbd\xa9\xce\x99\0" /* offset 921 */ 19696 "\xe1\xbe\xa2\x00\xe1\xbd\xaa\xce\x99\0" /* offset 931 */ 19697 "\xe1\xbe\xa3\x00\xe1\xbd\xab\xce\x99\0" /* offset 941 */ 19698 "\xe1\xbe\xa4\x00\xe1\xbd\xac\xce\x99\0" /* offset 951 */ 19699 "\xe1\xbe\xa5\x00\xe1\xbd\xad\xce\x99\0" /* offset 961 */ 19700 "\xe1\xbe\xa6\x00\xe1\xbd\xae\xce\x99\0" /* offset 971 */ 19701 "\xe1\xbe\xa7\x00\xe1\xbd\xaf\xce\x99\0" /* offset 981 */ 19702 "\xe1\xbe\xbc\xce\x91\xce\x99\x00\xe1\xbe\xbc\0" /* offset 991 */ 19703 "\xe1\xbe\xb3\x00\xce\x91\xce\x99\0" /* offset 1003 */ 19704 "\xe1\xbf\x8c\xce\x97\xce\x99\x00\xe1\xbf\x8c\0" /* offset 1012 */ 19705 "\xe1\xbf\x83\x00\xce\x97\xce\x99\0" /* offset 1024 */ 19706 "\xe1\xbf\xbc\xce\xa9\xce\x99\x00\xe1\xbf\xbc\0" /* offset 1033 */ 19707 "\xe1\xbf\xb3\x00\xce\xa9\xce\x99\0" /* offset 1045 */ 19708 "\x00\xe1\xbe\xba\xce\x99\x00\xe1\xbe\xba\xcd\x85\0" /* offset 1054 */ 19709 "\x00\xce\x86\xce\x99\x00\xce\x86\xcd\x85\0" /* offset 1067 */ 19710 "\x00\xe1\xbf\x8a\xce\x99\x00\xe1\xbf\x8a\xcd\x85\0" /* offset 1078 */ 19711 "\x00\xce\x89\xce\x99\x00\xce\x89\xcd\x85\0" /* offset 1091 */ 19712 "\x00\xe1\xbf\xba\xce\x99\x00\xe1\xbf\xba\xcd\x85\0" /* offset 1102 */ 19713 "\x00\xce\x8f\xce\x99\x00\xce\x8f\xcd\x85\0" /* offset 1115 */ 19714 "\x00\xce\x91\xcd\x82\xce\x99\x00\xce\x91\xcd\x82\xcd\x85\0" /* offset 1126 */ 19715 "\x00\xce\x97\xcd\x82\xce\x99\x00\xce\x97\xcd\x82\xcd\x85\0" /* offset 1141 */ 19716 "\x00\xce\xa9\xcd\x82\xce\x99\x00\xce\xa9\xcd\x82\xcd\x85\0" /* offset 1156 */ 19717 }; 19718 19719 /* Table of casefolding cases that can't be derived by lowercasing 19720 */ 19721 static const struct { 19722 uint16_t ch; 19723 char data[7]; 19724 } casefold_table[] = { 19725 { 0x00b5, "\xce\xbc" }, 19726 { 0x00df, "\x73\x73" }, 19727 { 0x0130, "\x69\xcc\x87" }, 19728 { 0x0149, "\xca\xbc\x6e" }, 19729 { 0x017f, "\x73" }, 19730 { 0x01f0, "\x6a\xcc\x8c" }, 19731 { 0x0345, "\xce\xb9" }, 19732 { 0x0390, "\xce\xb9\xcc\x88\xcc\x81" }, 19733 { 0x03b0, "\xcf\x85\xcc\x88\xcc\x81" }, 19734 { 0x03c2, "\xcf\x83" }, 19735 { 0x03d0, "\xce\xb2" }, 19736 { 0x03d1, "\xce\xb8" }, 19737 { 0x03d5, "\xcf\x86" }, 19738 { 0x03d6, "\xcf\x80" }, 19739 { 0x03f0, "\xce\xba" }, 19740 { 0x03f1, "\xcf\x81" }, 19741 { 0x03f5, "\xce\xb5" }, 19742 { 0x0587, "\xd5\xa5\xd6\x82" }, 19743 { 0x13f8, "\xe1\x8f\xb0" }, 19744 { 0x13f9, "\xe1\x8f\xb1" }, 19745 { 0x13fa, "\xe1\x8f\xb2" }, 19746 { 0x13fb, "\xe1\x8f\xb3" }, 19747 { 0x13fc, "\xe1\x8f\xb4" }, 19748 { 0x13fd, "\xe1\x8f\xb5" }, 19749 { 0x1c80, "\xd0\xb2" }, 19750 { 0x1c81, "\xd0\xb4" }, 19751 { 0x1c82, "\xd0\xbe" }, 19752 { 0x1c83, "\xd1\x81" }, 19753 { 0x1c84, "\xd1\x82" }, 19754 { 0x1c85, "\xd1\x82" }, 19755 { 0x1c86, "\xd1\x8a" }, 19756 { 0x1c87, "\xd1\xa3" }, 19757 { 0x1c88, "\xea\x99\x8b" }, 19758 { 0x1e96, "\x68\xcc\xb1" }, 19759 { 0x1e97, "\x74\xcc\x88" }, 19760 { 0x1e98, "\x77\xcc\x8a" }, 19761 { 0x1e99, "\x79\xcc\x8a" }, 19762 { 0x1e9a, "\x61\xca\xbe" }, 19763 { 0x1e9b, "\xe1\xb9\xa1" }, 19764 { 0x1e9e, "\x73\x73" }, 19765 { 0x1f50, "\xcf\x85\xcc\x93" }, 19766 { 0x1f52, "\xcf\x85\xcc\x93\xcc\x80" }, 19767 { 0x1f54, "\xcf\x85\xcc\x93\xcc\x81" }, 19768 { 0x1f56, "\xcf\x85\xcc\x93\xcd\x82" }, 19769 { 0x1f80, "\xe1\xbc\x80\xce\xb9" }, 19770 { 0x1f81, "\xe1\xbc\x81\xce\xb9" }, 19771 { 0x1f82, "\xe1\xbc\x82\xce\xb9" }, 19772 { 0x1f83, "\xe1\xbc\x83\xce\xb9" }, 19773 { 0x1f84, "\xe1\xbc\x84\xce\xb9" }, 19774 { 0x1f85, "\xe1\xbc\x85\xce\xb9" }, 19775 { 0x1f86, "\xe1\xbc\x86\xce\xb9" }, 19776 { 0x1f87, "\xe1\xbc\x87\xce\xb9" }, 19777 { 0x1f88, "\xe1\xbc\x80\xce\xb9" }, 19778 { 0x1f89, "\xe1\xbc\x81\xce\xb9" }, 19779 { 0x1f8a, "\xe1\xbc\x82\xce\xb9" }, 19780 { 0x1f8b, "\xe1\xbc\x83\xce\xb9" }, 19781 { 0x1f8c, "\xe1\xbc\x84\xce\xb9" }, 19782 { 0x1f8d, "\xe1\xbc\x85\xce\xb9" }, 19783 { 0x1f8e, "\xe1\xbc\x86\xce\xb9" }, 19784 { 0x1f8f, "\xe1\xbc\x87\xce\xb9" }, 19785 { 0x1f90, "\xe1\xbc\xa0\xce\xb9" }, 19786 { 0x1f91, "\xe1\xbc\xa1\xce\xb9" }, 19787 { 0x1f92, "\xe1\xbc\xa2\xce\xb9" }, 19788 { 0x1f93, "\xe1\xbc\xa3\xce\xb9" }, 19789 { 0x1f94, "\xe1\xbc\xa4\xce\xb9" }, 19790 { 0x1f95, "\xe1\xbc\xa5\xce\xb9" }, 19791 { 0x1f96, "\xe1\xbc\xa6\xce\xb9" }, 19792 { 0x1f97, "\xe1\xbc\xa7\xce\xb9" }, 19793 { 0x1f98, "\xe1\xbc\xa0\xce\xb9" }, 19794 { 0x1f99, "\xe1\xbc\xa1\xce\xb9" }, 19795 { 0x1f9a, "\xe1\xbc\xa2\xce\xb9" }, 19796 { 0x1f9b, "\xe1\xbc\xa3\xce\xb9" }, 19797 { 0x1f9c, "\xe1\xbc\xa4\xce\xb9" }, 19798 { 0x1f9d, "\xe1\xbc\xa5\xce\xb9" }, 19799 { 0x1f9e, "\xe1\xbc\xa6\xce\xb9" }, 19800 { 0x1f9f, "\xe1\xbc\xa7\xce\xb9" }, 19801 { 0x1fa0, "\xe1\xbd\xa0\xce\xb9" }, 19802 { 0x1fa1, "\xe1\xbd\xa1\xce\xb9" }, 19803 { 0x1fa2, "\xe1\xbd\xa2\xce\xb9" }, 19804 { 0x1fa3, "\xe1\xbd\xa3\xce\xb9" }, 19805 { 0x1fa4, "\xe1\xbd\xa4\xce\xb9" }, 19806 { 0x1fa5, "\xe1\xbd\xa5\xce\xb9" }, 19807 { 0x1fa6, "\xe1\xbd\xa6\xce\xb9" }, 19808 { 0x1fa7, "\xe1\xbd\xa7\xce\xb9" }, 19809 { 0x1fa8, "\xe1\xbd\xa0\xce\xb9" }, 19810 { 0x1fa9, "\xe1\xbd\xa1\xce\xb9" }, 19811 { 0x1faa, "\xe1\xbd\xa2\xce\xb9" }, 19812 { 0x1fab, "\xe1\xbd\xa3\xce\xb9" }, 19813 { 0x1fac, "\xe1\xbd\xa4\xce\xb9" }, 19814 { 0x1fad, "\xe1\xbd\xa5\xce\xb9" }, 19815 { 0x1fae, "\xe1\xbd\xa6\xce\xb9" }, 19816 { 0x1faf, "\xe1\xbd\xa7\xce\xb9" }, 19817 { 0x1fb2, "\xe1\xbd\xb0\xce\xb9" }, 19818 { 0x1fb3, "\xce\xb1\xce\xb9" }, 19819 { 0x1fb4, "\xce\xac\xce\xb9" }, 19820 { 0x1fb6, "\xce\xb1\xcd\x82" }, 19821 { 0x1fb7, "\xce\xb1\xcd\x82\xce\xb9" }, 19822 { 0x1fbc, "\xce\xb1\xce\xb9" }, 19823 { 0x1fbe, "\xce\xb9" }, 19824 { 0x1fc2, "\xe1\xbd\xb4\xce\xb9" }, 19825 { 0x1fc3, "\xce\xb7\xce\xb9" }, 19826 { 0x1fc4, "\xce\xae\xce\xb9" }, 19827 { 0x1fc6, "\xce\xb7\xcd\x82" }, 19828 { 0x1fc7, "\xce\xb7\xcd\x82\xce\xb9" }, 19829 { 0x1fcc, "\xce\xb7\xce\xb9" }, 19830 { 0x1fd2, "\xce\xb9\xcc\x88\xcc\x80" }, 19831 { 0x1fd3, "\xce\xb9\xcc\x88\xcc\x81" }, 19832 { 0x1fd6, "\xce\xb9\xcd\x82" }, 19833 { 0x1fd7, "\xce\xb9\xcc\x88\xcd\x82" }, 19834 { 0x1fe2, "\xcf\x85\xcc\x88\xcc\x80" }, 19835 { 0x1fe3, "\xcf\x85\xcc\x88\xcc\x81" }, 19836 { 0x1fe4, "\xcf\x81\xcc\x93" }, 19837 { 0x1fe6, "\xcf\x85\xcd\x82" }, 19838 { 0x1fe7, "\xcf\x85\xcc\x88\xcd\x82" }, 19839 { 0x1ff2, "\xe1\xbd\xbc\xce\xb9" }, 19840 { 0x1ff3, "\xcf\x89\xce\xb9" }, 19841 { 0x1ff4, "\xcf\x8e\xce\xb9" }, 19842 { 0x1ff6, "\xcf\x89\xcd\x82" }, 19843 { 0x1ff7, "\xcf\x89\xcd\x82\xce\xb9" }, 19844 { 0x1ffc, "\xcf\x89\xce\xb9" }, 19845 { 0x2160, "\xe2\x85\xb0" }, 19846 { 0x2161, "\xe2\x85\xb1" }, 19847 { 0x2162, "\xe2\x85\xb2" }, 19848 { 0x2163, "\xe2\x85\xb3" }, 19849 { 0x2164, "\xe2\x85\xb4" }, 19850 { 0x2165, "\xe2\x85\xb5" }, 19851 { 0x2166, "\xe2\x85\xb6" }, 19852 { 0x2167, "\xe2\x85\xb7" }, 19853 { 0x2168, "\xe2\x85\xb8" }, 19854 { 0x2169, "\xe2\x85\xb9" }, 19855 { 0x216a, "\xe2\x85\xba" }, 19856 { 0x216b, "\xe2\x85\xbb" }, 19857 { 0x216c, "\xe2\x85\xbc" }, 19858 { 0x216d, "\xe2\x85\xbd" }, 19859 { 0x216e, "\xe2\x85\xbe" }, 19860 { 0x216f, "\xe2\x85\xbf" }, 19861 { 0x24b6, "\xe2\x93\x90" }, 19862 { 0x24b7, "\xe2\x93\x91" }, 19863 { 0x24b8, "\xe2\x93\x92" }, 19864 { 0x24b9, "\xe2\x93\x93" }, 19865 { 0x24ba, "\xe2\x93\x94" }, 19866 { 0x24bb, "\xe2\x93\x95" }, 19867 { 0x24bc, "\xe2\x93\x96" }, 19868 { 0x24bd, "\xe2\x93\x97" }, 19869 { 0x24be, "\xe2\x93\x98" }, 19870 { 0x24bf, "\xe2\x93\x99" }, 19871 { 0x24c0, "\xe2\x93\x9a" }, 19872 { 0x24c1, "\xe2\x93\x9b" }, 19873 { 0x24c2, "\xe2\x93\x9c" }, 19874 { 0x24c3, "\xe2\x93\x9d" }, 19875 { 0x24c4, "\xe2\x93\x9e" }, 19876 { 0x24c5, "\xe2\x93\x9f" }, 19877 { 0x24c6, "\xe2\x93\xa0" }, 19878 { 0x24c7, "\xe2\x93\xa1" }, 19879 { 0x24c8, "\xe2\x93\xa2" }, 19880 { 0x24c9, "\xe2\x93\xa3" }, 19881 { 0x24ca, "\xe2\x93\xa4" }, 19882 { 0x24cb, "\xe2\x93\xa5" }, 19883 { 0x24cc, "\xe2\x93\xa6" }, 19884 { 0x24cd, "\xe2\x93\xa7" }, 19885 { 0x24ce, "\xe2\x93\xa8" }, 19886 { 0x24cf, "\xe2\x93\xa9" }, 19887 { 0xab70, "\xe1\x8e\xa0" }, 19888 { 0xab71, "\xe1\x8e\xa1" }, 19889 { 0xab72, "\xe1\x8e\xa2" }, 19890 { 0xab73, "\xe1\x8e\xa3" }, 19891 { 0xab74, "\xe1\x8e\xa4" }, 19892 { 0xab75, "\xe1\x8e\xa5" }, 19893 { 0xab76, "\xe1\x8e\xa6" }, 19894 { 0xab77, "\xe1\x8e\xa7" }, 19895 { 0xab78, "\xe1\x8e\xa8" }, 19896 { 0xab79, "\xe1\x8e\xa9" }, 19897 { 0xab7a, "\xe1\x8e\xaa" }, 19898 { 0xab7b, "\xe1\x8e\xab" }, 19899 { 0xab7c, "\xe1\x8e\xac" }, 19900 { 0xab7d, "\xe1\x8e\xad" }, 19901 { 0xab7e, "\xe1\x8e\xae" }, 19902 { 0xab7f, "\xe1\x8e\xaf" }, 19903 { 0xab80, "\xe1\x8e\xb0" }, 19904 { 0xab81, "\xe1\x8e\xb1" }, 19905 { 0xab82, "\xe1\x8e\xb2" }, 19906 { 0xab83, "\xe1\x8e\xb3" }, 19907 { 0xab84, "\xe1\x8e\xb4" }, 19908 { 0xab85, "\xe1\x8e\xb5" }, 19909 { 0xab86, "\xe1\x8e\xb6" }, 19910 { 0xab87, "\xe1\x8e\xb7" }, 19911 { 0xab88, "\xe1\x8e\xb8" }, 19912 { 0xab89, "\xe1\x8e\xb9" }, 19913 { 0xab8a, "\xe1\x8e\xba" }, 19914 { 0xab8b, "\xe1\x8e\xbb" }, 19915 { 0xab8c, "\xe1\x8e\xbc" }, 19916 { 0xab8d, "\xe1\x8e\xbd" }, 19917 { 0xab8e, "\xe1\x8e\xbe" }, 19918 { 0xab8f, "\xe1\x8e\xbf" }, 19919 { 0xab90, "\xe1\x8f\x80" }, 19920 { 0xab91, "\xe1\x8f\x81" }, 19921 { 0xab92, "\xe1\x8f\x82" }, 19922 { 0xab93, "\xe1\x8f\x83" }, 19923 { 0xab94, "\xe1\x8f\x84" }, 19924 { 0xab95, "\xe1\x8f\x85" }, 19925 { 0xab96, "\xe1\x8f\x86" }, 19926 { 0xab97, "\xe1\x8f\x87" }, 19927 { 0xab98, "\xe1\x8f\x88" }, 19928 { 0xab99, "\xe1\x8f\x89" }, 19929 { 0xab9a, "\xe1\x8f\x8a" }, 19930 { 0xab9b, "\xe1\x8f\x8b" }, 19931 { 0xab9c, "\xe1\x8f\x8c" }, 19932 { 0xab9d, "\xe1\x8f\x8d" }, 19933 { 0xab9e, "\xe1\x8f\x8e" }, 19934 { 0xab9f, "\xe1\x8f\x8f" }, 19935 { 0xaba0, "\xe1\x8f\x90" }, 19936 { 0xaba1, "\xe1\x8f\x91" }, 19937 { 0xaba2, "\xe1\x8f\x92" }, 19938 { 0xaba3, "\xe1\x8f\x93" }, 19939 { 0xaba4, "\xe1\x8f\x94" }, 19940 { 0xaba5, "\xe1\x8f\x95" }, 19941 { 0xaba6, "\xe1\x8f\x96" }, 19942 { 0xaba7, "\xe1\x8f\x97" }, 19943 { 0xaba8, "\xe1\x8f\x98" }, 19944 { 0xaba9, "\xe1\x8f\x99" }, 19945 { 0xabaa, "\xe1\x8f\x9a" }, 19946 { 0xabab, "\xe1\x8f\x9b" }, 19947 { 0xabac, "\xe1\x8f\x9c" }, 19948 { 0xabad, "\xe1\x8f\x9d" }, 19949 { 0xabae, "\xe1\x8f\x9e" }, 19950 { 0xabaf, "\xe1\x8f\x9f" }, 19951 { 0xabb0, "\xe1\x8f\xa0" }, 19952 { 0xabb1, "\xe1\x8f\xa1" }, 19953 { 0xabb2, "\xe1\x8f\xa2" }, 19954 { 0xabb3, "\xe1\x8f\xa3" }, 19955 { 0xabb4, "\xe1\x8f\xa4" }, 19956 { 0xabb5, "\xe1\x8f\xa5" }, 19957 { 0xabb6, "\xe1\x8f\xa6" }, 19958 { 0xabb7, "\xe1\x8f\xa7" }, 19959 { 0xabb8, "\xe1\x8f\xa8" }, 19960 { 0xabb9, "\xe1\x8f\xa9" }, 19961 { 0xabba, "\xe1\x8f\xaa" }, 19962 { 0xabbb, "\xe1\x8f\xab" }, 19963 { 0xabbc, "\xe1\x8f\xac" }, 19964 { 0xabbd, "\xe1\x8f\xad" }, 19965 { 0xabbe, "\xe1\x8f\xae" }, 19966 { 0xabbf, "\xe1\x8f\xaf" }, 19967 { 0xfb00, "\x66\x66" }, 19968 { 0xfb01, "\x66\x69" }, 19969 { 0xfb02, "\x66\x6c" }, 19970 { 0xfb03, "\x66\x66\x69" }, 19971 { 0xfb04, "\x66\x66\x6c" }, 19972 { 0xfb05, "\x73\x74" }, 19973 { 0xfb06, "\x73\x74" }, 19974 { 0xfb13, "\xd5\xb4\xd5\xb6" }, 19975 { 0xfb14, "\xd5\xb4\xd5\xa5" }, 19976 { 0xfb15, "\xd5\xb4\xd5\xab" }, 19977 { 0xfb16, "\xd5\xbe\xd5\xb6" }, 19978 { 0xfb17, "\xd5\xb4\xd5\xad" }, 19979 }; 19980 19981 static const uint8_t cclass_data[][256] = { 19982 { /* page 3, index 0 */ 19983 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 19984 230, 230, 230, 230, 230, 230, 230, 232, 220, 220, 220, 220, 232, 216, 19985 220, 220, 220, 220, 220, 202, 202, 220, 220, 220, 220, 202, 202, 220, 19986 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 1, 1, 1, 1, 1, 220, 19987 220, 220, 220, 230, 230, 230, 230, 230, 230, 230, 230, 240, 230, 220, 19988 220, 220, 230, 230, 230, 220, 220, 0, 230, 230, 230, 220, 220, 220, 220, 19989 230, 232, 220, 220, 230, 233, 234, 234, 233, 234, 234, 233, 230, 230, 19990 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 19991 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19992 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19993 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19994 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19995 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19996 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 19997 }, 19998 { /* page 4, index 1 */ 19999 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20000 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20001 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20002 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20003 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20004 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 20005 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20006 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20007 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20008 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20009 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20010 }, 20011 { /* page 5, index 2 */ 20012 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20013 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20014 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20015 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20016 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20017 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20018 0, 220, 230, 230, 230, 230, 220, 230, 230, 230, 222, 220, 230, 230, 230, 20019 230, 230, 230, 220, 220, 220, 220, 220, 220, 230, 230, 220, 230, 230, 20020 222, 228, 230, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 0, 20021 23, 0, 24, 25, 0, 230, 220, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20022 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20023 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20024 }, 20025 { /* page 6, index 3 */ 20026 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 20027 230, 230, 230, 30, 31, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20028 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20029 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, 230, 230, 220, 20030 220, 230, 230, 230, 230, 230, 220, 230, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, 20031 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20032 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20033 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20034 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20035 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 20036 230, 0, 0, 230, 230, 230, 230, 220, 230, 0, 0, 230, 230, 0, 220, 230, 20037 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20038 }, 20039 { /* page 7, index 4 */ 20040 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 20041 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20042 230, 220, 230, 230, 220, 230, 230, 220, 220, 220, 230, 220, 220, 230, 20043 220, 230, 230, 230, 220, 230, 220, 230, 220, 230, 220, 230, 230, 0, 0, 0, 20044 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20045 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20046 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20047 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20048 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20049 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20050 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 20051 220, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20052 }, 20053 { /* page 8, index 5 */ 20054 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 20055 230, 230, 230, 0, 230, 230, 230, 230, 230, 230, 230, 230, 230, 0, 230, 20056 230, 230, 0, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20057 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20058 0, 0, 0, 0, 0, 0, 0, 220, 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20059 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20060 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20061 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20062 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20063 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 20064 230, 230, 230, 230, 230, 230, 230, 0, 220, 230, 230, 220, 230, 230, 220, 20065 230, 230, 230, 220, 220, 220, 27, 28, 29, 230, 230, 230, 220, 230, 230, 20066 220, 220, 230, 230, 230, 230, 230 20067 }, 20068 { /* page 9, index 6 */ 20069 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20070 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20071 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20072 0, 0, 0, 0, 0, 9, 0, 0, 0, 230, 220, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20073 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20074 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20075 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20076 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 20077 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 20078 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20079 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20080 }, 20081 { /* page 10, index 7 */ 20082 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20083 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20084 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20085 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20086 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20087 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20088 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20089 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 20090 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20091 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20092 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20093 }, 20094 { /* page 11, index 8 */ 20095 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20096 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20097 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20098 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20099 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20100 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20101 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20102 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20103 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20104 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20105 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20106 }, 20107 { /* page 12, index 9 */ 20108 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20109 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20110 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20111 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 84, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20112 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20113 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20114 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20115 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 20116 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20117 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20118 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20119 }, 20120 { /* page 13, index 10 */ 20121 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20122 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20123 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20124 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20125 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20127 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20128 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20129 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20130 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20131 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20132 }, 20133 { /* page 14, index 11 */ 20134 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20135 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20136 0, 0, 0, 0, 0, 0, 0, 0, 103, 103, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20137 0, 107, 107, 107, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20138 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20139 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20140 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20141 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 118, 0, 0, 20142 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 122, 122, 122, 0, 0, 0, 0, 0, 0, 20143 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20144 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20145 }, 20146 { /* page 15, index 12 */ 20147 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20148 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20149 0, 0, 0, 0, 0, 0, 220, 0, 220, 0, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20150 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20151 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, 0, 20152 132, 0, 0, 0, 0, 0, 130, 130, 130, 130, 0, 0, 130, 0, 230, 230, 9, 0, 20153 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20154 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20155 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 20156 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20157 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20158 0, 0, 0 20159 }, 20160 { /* page 16, index 13 */ 20161 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20162 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20163 0, 0, 0, 0, 0, 0, 0, 7, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20164 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20165 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20166 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 20167 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20168 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20169 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20170 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20171 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20172 }, 20173 { /* page 19, index 14 */ 20174 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20175 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20176 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20177 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 20178 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20179 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20180 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20181 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20182 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20183 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20184 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20185 }, 20186 { /* page 23, index 15 */ 20187 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 20188 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20189 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20190 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20191 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20192 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20193 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20194 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20195 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 20196 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20197 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20198 }, 20199 { /* page 24, index 16 */ 20200 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20201 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20202 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20203 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20204 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20205 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20206 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20207 0, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20208 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20209 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20210 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20211 }, 20212 { /* page 25, index 17 */ 20213 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20214 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20215 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20216 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20217 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20218 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20219 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20220 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20221 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20222 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20223 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20224 }, 20225 { /* page 26, index 18 */ 20226 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 20227 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20228 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20229 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20230 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 20231 230, 230, 230, 230, 230, 230, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20232 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20233 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 220, 220, 20234 220, 220, 220, 220, 230, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20235 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20236 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20237 0, 0, 0, 0, 0 20238 }, 20239 { /* page 27, index 19 */ 20240 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20241 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20242 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 20243 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20244 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 220, 230, 230, 230, 230, 230, 230, 20245 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20246 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20247 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20248 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20249 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 20250 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20251 }, 20252 { /* page 28, index 20 */ 20253 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20254 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20255 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20256 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20257 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20258 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20259 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20260 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20261 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 0, 1, 220, 20262 220, 220, 220, 220, 230, 230, 220, 220, 220, 220, 230, 0, 1, 1, 1, 1, 1, 20263 1, 1, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 230, 230, 0, 0, 0, 20264 0, 0, 0 20265 }, 20266 { /* page 29, index 21 */ 20267 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20268 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20269 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20270 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20271 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20272 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20273 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20274 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20275 230, 230, 220, 230, 230, 230, 230, 230, 230, 230, 220, 230, 230, 234, 20276 214, 220, 202, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 20277 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 20278 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 232, 228, 20279 228, 220, 0, 230, 233, 220, 230, 220 20280 }, 20281 { /* page 32, index 22 */ 20282 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20283 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20284 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20285 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20286 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20287 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20288 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20289 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20290 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 1, 1, 230, 230, 20291 230, 230, 1, 1, 1, 230, 230, 0, 0, 0, 0, 230, 0, 0, 0, 1, 1, 230, 220, 20292 230, 1, 1, 220, 220, 220, 220, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20293 0, 0, 0 20294 }, 20295 { /* page 44, index 23 */ 20296 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20297 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20298 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20299 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20300 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20301 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20302 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20303 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20304 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20305 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 20306 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20307 }, 20308 { /* page 45, index 24 */ 20309 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20310 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20311 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20312 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20313 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20314 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20315 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20316 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20317 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20318 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 20319 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 20320 230, 230, 230, 230, 230, 230, 230, 230 20321 }, 20322 { /* page 48, index 25 */ 20323 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20324 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218, 228, 232, 222, 20325 224, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20326 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20327 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20328 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20329 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20330 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20331 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20332 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20333 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20334 }, 20335 { /* page 166, index 26 */ 20336 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20337 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20338 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20339 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20340 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 230, 230, 20341 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20342 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 20343 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20344 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20345 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20346 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20347 0 20348 }, 20349 { /* page 168, index 27 */ 20350 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20351 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20352 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20353 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20354 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20355 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20356 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20357 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20358 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20359 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 20360 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20361 0, 0, 0 20362 }, 20363 { /* page 169, index 28 */ 20364 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20365 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 220, 220, 20366 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20367 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20368 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20369 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20370 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20371 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20372 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20373 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20374 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20375 }, 20376 { /* page 170, index 29 */ 20377 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20378 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20379 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20380 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20381 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20382 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20383 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20384 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 230, 230, 220, 0, 0, 230, 230, 0, 0, 0, 20385 0, 0, 230, 230, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20386 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20387 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0 20388 }, 20389 { /* page 171, index 30 */ 20390 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20391 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20392 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20393 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20394 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20395 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20396 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20397 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20398 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20399 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 20400 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20401 }, 20402 { /* page 251, index 31 */ 20403 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20404 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20405 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20406 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20407 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20408 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20409 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20410 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20411 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20412 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20413 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20414 }, 20415 { /* page 254, index 32 */ 20416 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20417 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 220, 220, 220, 20418 220, 220, 220, 220, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20419 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20420 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20421 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20422 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20423 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20424 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20425 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20426 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20427 0, 0 20428 }, 20429 { /* page 257, index 33 */ 20430 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20431 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20432 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20433 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20434 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20435 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20436 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20437 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20438 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20439 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20440 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0 20441 }, 20442 { /* page 258, index 34 */ 20443 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20444 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20445 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20446 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20447 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20448 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20449 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20450 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20451 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20452 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20453 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20454 }, 20455 { /* page 259, index 35 */ 20456 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20457 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20458 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20459 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20460 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 20461 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20462 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20463 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20464 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20465 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20466 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20467 }, 20468 { /* page 266, index 36 */ 20469 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 230, 0, 0, 0, 0, 0, 0, 0, 20470 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20471 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 1, 220, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 20472 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20473 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20474 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20475 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20476 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20477 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20478 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 220, 0, 0, 0, 0, 0, 0, 20479 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20480 }, 20481 { /* page 272, index 37 */ 20482 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20483 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20484 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 20485 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20486 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20487 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20488 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20489 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 7, 0, 0, 0, 0, 0, 20490 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20491 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20492 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20493 }, 20494 { /* page 273, index 38 */ 20495 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20496 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20497 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20498 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20499 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 20500 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20501 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20502 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20503 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20504 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20505 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20506 }, 20507 { /* page 274, index 39 */ 20508 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20509 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20510 0, 0, 0, 0, 0, 9, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20511 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20512 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20513 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20514 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20515 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20516 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20517 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 0, 0, 0, 0, 0, 20518 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20519 }, 20520 { /* page 275, index 40 */ 20521 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20522 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20523 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20524 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20525 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 230, 230, 20526 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20527 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20528 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20529 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20530 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20531 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20532 }, 20533 { /* page 276, index 41 */ 20534 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20535 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20536 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 7, 0, 20537 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20538 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20539 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20540 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20541 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20542 0, 0, 9, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20543 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20544 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20545 }, 20546 { /* page 277, index 42 */ 20547 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20548 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20549 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20550 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20551 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20552 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20553 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20554 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 20555 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20556 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20557 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20558 }, 20559 { /* page 278, index 43 */ 20560 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20561 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20562 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 20563 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20564 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20565 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20566 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20567 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 7, 0, 0, 0, 0, 0, 0, 0, 0, 20568 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20569 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20570 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20571 }, 20572 { /* page 279, index 44 */ 20573 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20574 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 20575 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20576 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20577 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20578 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20579 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20580 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20581 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20582 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20583 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20584 }, 20585 { /* page 282, index 45 */ 20586 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20587 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20588 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 20589 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20590 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20591 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20592 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20593 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20594 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20595 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20596 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20597 }, 20598 { /* page 284, index 46 */ 20599 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20600 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20601 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 20602 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20603 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20604 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20605 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20606 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20607 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20608 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20609 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20610 }, 20611 { /* page 285, index 47 */ 20612 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20613 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20614 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 9, 9, 0, 0, 20615 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20616 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20617 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20618 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20619 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20620 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20621 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20622 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20623 }, 20624 { /* page 362, index 48 */ 20625 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20626 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20627 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20628 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20629 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20630 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20631 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20632 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20633 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20634 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20635 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20636 }, 20637 { /* page 363, index 49 */ 20638 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20639 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20640 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20641 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20642 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20643 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20644 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20645 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20646 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20647 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20648 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20649 }, 20650 { /* page 444, index 50 */ 20651 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20652 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20653 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20654 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20655 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20656 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20657 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20658 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20659 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20660 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20661 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20662 }, 20663 { /* page 465, index 51 */ 20664 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20665 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20666 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20667 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20668 0, 0, 0, 0, 0, 216, 216, 1, 1, 1, 0, 0, 0, 226, 216, 216, 216, 216, 216, 20669 0, 0, 0, 0, 0, 0, 0, 0, 220, 220, 220, 220, 220, 220, 220, 220, 0, 0, 20670 230, 230, 230, 230, 230, 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20671 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 0, 20672 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20673 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20674 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20675 0, 0, 0, 0, 0, 0, 0, 0, 0 20676 }, 20677 { /* page 466, index 52 */ 20678 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20679 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20680 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 0, 20681 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20682 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20683 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20684 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20685 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20686 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20687 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20688 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20689 }, 20690 { /* page 480, index 53 */ 20691 230, 230, 230, 230, 230, 230, 230, 0, 230, 230, 230, 230, 230, 230, 230, 20692 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, 230, 230, 230, 20693 230, 230, 230, 230, 0, 230, 230, 0, 230, 230, 230, 230, 230, 0, 0, 0, 0, 20694 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20695 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20696 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20697 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20698 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20699 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20700 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20701 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20702 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20703 }, 20704 { /* page 488, index 54 */ 20705 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20706 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20707 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20708 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20709 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20710 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20711 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20712 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20713 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 220, 220, 220, 220, 20714 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20715 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20716 }, 20717 { /* page 489, index 55 */ 20718 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20719 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20720 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 20721 230, 230, 230, 230, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20722 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20723 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20724 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20725 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20726 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20727 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20728 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20729 } 20730 }; 20731 20732 static const int16_t combining_class_table_part1[763] = { 20733 0 + UNICODE_MAX_TABLE_INDEX, 20734 0 + UNICODE_MAX_TABLE_INDEX, 20735 0 + UNICODE_MAX_TABLE_INDEX, 20736 0 /* page 3 */, 20737 1 /* page 4 */, 20738 2 /* page 5 */, 20739 3 /* page 6 */, 20740 4 /* page 7 */, 20741 5 /* page 8 */, 20742 6 /* page 9 */, 20743 7 /* page 10 */, 20744 8 /* page 11 */, 20745 9 /* page 12 */, 20746 10 /* page 13 */, 20747 11 /* page 14 */, 20748 12 /* page 15 */, 20749 13 /* page 16 */, 20750 0 + UNICODE_MAX_TABLE_INDEX, 20751 0 + UNICODE_MAX_TABLE_INDEX, 20752 14 /* page 19 */, 20753 0 + UNICODE_MAX_TABLE_INDEX, 20754 0 + UNICODE_MAX_TABLE_INDEX, 20755 0 + UNICODE_MAX_TABLE_INDEX, 20756 15 /* page 23 */, 20757 16 /* page 24 */, 20758 17 /* page 25 */, 20759 18 /* page 26 */, 20760 19 /* page 27 */, 20761 20 /* page 28 */, 20762 21 /* page 29 */, 20763 0 + UNICODE_MAX_TABLE_INDEX, 20764 0 + UNICODE_MAX_TABLE_INDEX, 20765 22 /* page 32 */, 20766 0 + UNICODE_MAX_TABLE_INDEX, 20767 0 + UNICODE_MAX_TABLE_INDEX, 20768 0 + UNICODE_MAX_TABLE_INDEX, 20769 0 + UNICODE_MAX_TABLE_INDEX, 20770 0 + UNICODE_MAX_TABLE_INDEX, 20771 0 + UNICODE_MAX_TABLE_INDEX, 20772 0 + UNICODE_MAX_TABLE_INDEX, 20773 0 + UNICODE_MAX_TABLE_INDEX, 20774 0 + UNICODE_MAX_TABLE_INDEX, 20775 0 + UNICODE_MAX_TABLE_INDEX, 20776 0 + UNICODE_MAX_TABLE_INDEX, 20777 23 /* page 44 */, 20778 24 /* page 45 */, 20779 0 + UNICODE_MAX_TABLE_INDEX, 20780 0 + UNICODE_MAX_TABLE_INDEX, 20781 25 /* page 48 */, 20782 0 + UNICODE_MAX_TABLE_INDEX, 20783 0 + UNICODE_MAX_TABLE_INDEX, 20784 0 + UNICODE_MAX_TABLE_INDEX, 20785 0 + UNICODE_MAX_TABLE_INDEX, 20786 0 + UNICODE_MAX_TABLE_INDEX, 20787 0 + UNICODE_MAX_TABLE_INDEX, 20788 0 + UNICODE_MAX_TABLE_INDEX, 20789 0 + UNICODE_MAX_TABLE_INDEX, 20790 0 + UNICODE_MAX_TABLE_INDEX, 20791 0 + UNICODE_MAX_TABLE_INDEX, 20792 0 + UNICODE_MAX_TABLE_INDEX, 20793 0 + UNICODE_MAX_TABLE_INDEX, 20794 0 + UNICODE_MAX_TABLE_INDEX, 20795 0 + UNICODE_MAX_TABLE_INDEX, 20796 0 + UNICODE_MAX_TABLE_INDEX, 20797 0 + UNICODE_MAX_TABLE_INDEX, 20798 0 + UNICODE_MAX_TABLE_INDEX, 20799 0 + UNICODE_MAX_TABLE_INDEX, 20800 0 + UNICODE_MAX_TABLE_INDEX, 20801 0 + UNICODE_MAX_TABLE_INDEX, 20802 0 + UNICODE_MAX_TABLE_INDEX, 20803 0 + UNICODE_MAX_TABLE_INDEX, 20804 0 + UNICODE_MAX_TABLE_INDEX, 20805 0 + UNICODE_MAX_TABLE_INDEX, 20806 0 + UNICODE_MAX_TABLE_INDEX, 20807 0 + UNICODE_MAX_TABLE_INDEX, 20808 0 + UNICODE_MAX_TABLE_INDEX, 20809 0 + UNICODE_MAX_TABLE_INDEX, 20810 0 + UNICODE_MAX_TABLE_INDEX, 20811 0 + UNICODE_MAX_TABLE_INDEX, 20812 0 + UNICODE_MAX_TABLE_INDEX, 20813 0 + UNICODE_MAX_TABLE_INDEX, 20814 0 + UNICODE_MAX_TABLE_INDEX, 20815 0 + UNICODE_MAX_TABLE_INDEX, 20816 0 + UNICODE_MAX_TABLE_INDEX, 20817 0 + UNICODE_MAX_TABLE_INDEX, 20818 0 + UNICODE_MAX_TABLE_INDEX, 20819 0 + UNICODE_MAX_TABLE_INDEX, 20820 0 + UNICODE_MAX_TABLE_INDEX, 20821 0 + UNICODE_MAX_TABLE_INDEX, 20822 0 + UNICODE_MAX_TABLE_INDEX, 20823 0 + UNICODE_MAX_TABLE_INDEX, 20824 0 + UNICODE_MAX_TABLE_INDEX, 20825 0 + UNICODE_MAX_TABLE_INDEX, 20826 0 + UNICODE_MAX_TABLE_INDEX, 20827 0 + UNICODE_MAX_TABLE_INDEX, 20828 0 + UNICODE_MAX_TABLE_INDEX, 20829 0 + UNICODE_MAX_TABLE_INDEX, 20830 0 + UNICODE_MAX_TABLE_INDEX, 20831 0 + UNICODE_MAX_TABLE_INDEX, 20832 0 + UNICODE_MAX_TABLE_INDEX, 20833 0 + UNICODE_MAX_TABLE_INDEX, 20834 0 + UNICODE_MAX_TABLE_INDEX, 20835 0 + UNICODE_MAX_TABLE_INDEX, 20836 0 + UNICODE_MAX_TABLE_INDEX, 20837 0 + UNICODE_MAX_TABLE_INDEX, 20838 0 + UNICODE_MAX_TABLE_INDEX, 20839 0 + UNICODE_MAX_TABLE_INDEX, 20840 0 + UNICODE_MAX_TABLE_INDEX, 20841 0 + UNICODE_MAX_TABLE_INDEX, 20842 0 + UNICODE_MAX_TABLE_INDEX, 20843 0 + UNICODE_MAX_TABLE_INDEX, 20844 0 + UNICODE_MAX_TABLE_INDEX, 20845 0 + UNICODE_MAX_TABLE_INDEX, 20846 0 + UNICODE_MAX_TABLE_INDEX, 20847 0 + UNICODE_MAX_TABLE_INDEX, 20848 0 + UNICODE_MAX_TABLE_INDEX, 20849 0 + UNICODE_MAX_TABLE_INDEX, 20850 0 + UNICODE_MAX_TABLE_INDEX, 20851 0 + UNICODE_MAX_TABLE_INDEX, 20852 0 + UNICODE_MAX_TABLE_INDEX, 20853 0 + UNICODE_MAX_TABLE_INDEX, 20854 0 + UNICODE_MAX_TABLE_INDEX, 20855 0 + UNICODE_MAX_TABLE_INDEX, 20856 0 + UNICODE_MAX_TABLE_INDEX, 20857 0 + UNICODE_MAX_TABLE_INDEX, 20858 0 + UNICODE_MAX_TABLE_INDEX, 20859 0 + UNICODE_MAX_TABLE_INDEX, 20860 0 + UNICODE_MAX_TABLE_INDEX, 20861 0 + UNICODE_MAX_TABLE_INDEX, 20862 0 + UNICODE_MAX_TABLE_INDEX, 20863 0 + UNICODE_MAX_TABLE_INDEX, 20864 0 + UNICODE_MAX_TABLE_INDEX, 20865 0 + UNICODE_MAX_TABLE_INDEX, 20866 0 + UNICODE_MAX_TABLE_INDEX, 20867 0 + UNICODE_MAX_TABLE_INDEX, 20868 0 + UNICODE_MAX_TABLE_INDEX, 20869 0 + UNICODE_MAX_TABLE_INDEX, 20870 0 + UNICODE_MAX_TABLE_INDEX, 20871 0 + UNICODE_MAX_TABLE_INDEX, 20872 0 + UNICODE_MAX_TABLE_INDEX, 20873 0 + UNICODE_MAX_TABLE_INDEX, 20874 0 + UNICODE_MAX_TABLE_INDEX, 20875 0 + UNICODE_MAX_TABLE_INDEX, 20876 0 + UNICODE_MAX_TABLE_INDEX, 20877 0 + UNICODE_MAX_TABLE_INDEX, 20878 0 + UNICODE_MAX_TABLE_INDEX, 20879 0 + UNICODE_MAX_TABLE_INDEX, 20880 0 + UNICODE_MAX_TABLE_INDEX, 20881 0 + UNICODE_MAX_TABLE_INDEX, 20882 0 + UNICODE_MAX_TABLE_INDEX, 20883 0 + UNICODE_MAX_TABLE_INDEX, 20884 0 + UNICODE_MAX_TABLE_INDEX, 20885 0 + UNICODE_MAX_TABLE_INDEX, 20886 0 + UNICODE_MAX_TABLE_INDEX, 20887 0 + UNICODE_MAX_TABLE_INDEX, 20888 0 + UNICODE_MAX_TABLE_INDEX, 20889 0 + UNICODE_MAX_TABLE_INDEX, 20890 0 + UNICODE_MAX_TABLE_INDEX, 20891 0 + UNICODE_MAX_TABLE_INDEX, 20892 0 + UNICODE_MAX_TABLE_INDEX, 20893 0 + UNICODE_MAX_TABLE_INDEX, 20894 0 + UNICODE_MAX_TABLE_INDEX, 20895 0 + UNICODE_MAX_TABLE_INDEX, 20896 0 + UNICODE_MAX_TABLE_INDEX, 20897 0 + UNICODE_MAX_TABLE_INDEX, 20898 0 + UNICODE_MAX_TABLE_INDEX, 20899 26 /* page 166 */, 20900 0 + UNICODE_MAX_TABLE_INDEX, 20901 27 /* page 168 */, 20902 28 /* page 169 */, 20903 29 /* page 170 */, 20904 30 /* page 171 */, 20905 0 + UNICODE_MAX_TABLE_INDEX, 20906 0 + UNICODE_MAX_TABLE_INDEX, 20907 0 + UNICODE_MAX_TABLE_INDEX, 20908 0 + UNICODE_MAX_TABLE_INDEX, 20909 0 + UNICODE_MAX_TABLE_INDEX, 20910 0 + UNICODE_MAX_TABLE_INDEX, 20911 0 + UNICODE_MAX_TABLE_INDEX, 20912 0 + UNICODE_MAX_TABLE_INDEX, 20913 0 + UNICODE_MAX_TABLE_INDEX, 20914 0 + UNICODE_MAX_TABLE_INDEX, 20915 0 + UNICODE_MAX_TABLE_INDEX, 20916 0 + UNICODE_MAX_TABLE_INDEX, 20917 0 + UNICODE_MAX_TABLE_INDEX, 20918 0 + UNICODE_MAX_TABLE_INDEX, 20919 0 + UNICODE_MAX_TABLE_INDEX, 20920 0 + UNICODE_MAX_TABLE_INDEX, 20921 0 + UNICODE_MAX_TABLE_INDEX, 20922 0 + UNICODE_MAX_TABLE_INDEX, 20923 0 + UNICODE_MAX_TABLE_INDEX, 20924 0 + UNICODE_MAX_TABLE_INDEX, 20925 0 + UNICODE_MAX_TABLE_INDEX, 20926 0 + UNICODE_MAX_TABLE_INDEX, 20927 0 + UNICODE_MAX_TABLE_INDEX, 20928 0 + UNICODE_MAX_TABLE_INDEX, 20929 0 + UNICODE_MAX_TABLE_INDEX, 20930 0 + UNICODE_MAX_TABLE_INDEX, 20931 0 + UNICODE_MAX_TABLE_INDEX, 20932 0 + UNICODE_MAX_TABLE_INDEX, 20933 0 + UNICODE_MAX_TABLE_INDEX, 20934 0 + UNICODE_MAX_TABLE_INDEX, 20935 0 + UNICODE_MAX_TABLE_INDEX, 20936 0 + UNICODE_MAX_TABLE_INDEX, 20937 0 + UNICODE_MAX_TABLE_INDEX, 20938 0 + UNICODE_MAX_TABLE_INDEX, 20939 0 + UNICODE_MAX_TABLE_INDEX, 20940 0 + UNICODE_MAX_TABLE_INDEX, 20941 0 + UNICODE_MAX_TABLE_INDEX, 20942 0 + UNICODE_MAX_TABLE_INDEX, 20943 0 + UNICODE_MAX_TABLE_INDEX, 20944 0 + UNICODE_MAX_TABLE_INDEX, 20945 0 + UNICODE_MAX_TABLE_INDEX, 20946 0 + UNICODE_MAX_TABLE_INDEX, 20947 0 + UNICODE_MAX_TABLE_INDEX, 20948 0 + UNICODE_MAX_TABLE_INDEX, 20949 0 + UNICODE_MAX_TABLE_INDEX, 20950 0 + UNICODE_MAX_TABLE_INDEX, 20951 0 + UNICODE_MAX_TABLE_INDEX, 20952 0 + UNICODE_MAX_TABLE_INDEX, 20953 0 + UNICODE_MAX_TABLE_INDEX, 20954 0 + UNICODE_MAX_TABLE_INDEX, 20955 0 + UNICODE_MAX_TABLE_INDEX, 20956 0 + UNICODE_MAX_TABLE_INDEX, 20957 0 + UNICODE_MAX_TABLE_INDEX, 20958 0 + UNICODE_MAX_TABLE_INDEX, 20959 0 + UNICODE_MAX_TABLE_INDEX, 20960 0 + UNICODE_MAX_TABLE_INDEX, 20961 0 + UNICODE_MAX_TABLE_INDEX, 20962 0 + UNICODE_MAX_TABLE_INDEX, 20963 0 + UNICODE_MAX_TABLE_INDEX, 20964 0 + UNICODE_MAX_TABLE_INDEX, 20965 0 + UNICODE_MAX_TABLE_INDEX, 20966 0 + UNICODE_MAX_TABLE_INDEX, 20967 0 + UNICODE_MAX_TABLE_INDEX, 20968 0 + UNICODE_MAX_TABLE_INDEX, 20969 0 + UNICODE_MAX_TABLE_INDEX, 20970 0 + UNICODE_MAX_TABLE_INDEX, 20971 0 + UNICODE_MAX_TABLE_INDEX, 20972 0 + UNICODE_MAX_TABLE_INDEX, 20973 0 + UNICODE_MAX_TABLE_INDEX, 20974 0 + UNICODE_MAX_TABLE_INDEX, 20975 0 + UNICODE_MAX_TABLE_INDEX, 20976 0 + UNICODE_MAX_TABLE_INDEX, 20977 0 + UNICODE_MAX_TABLE_INDEX, 20978 0 + UNICODE_MAX_TABLE_INDEX, 20979 0 + UNICODE_MAX_TABLE_INDEX, 20980 0 + UNICODE_MAX_TABLE_INDEX, 20981 0 + UNICODE_MAX_TABLE_INDEX, 20982 0 + UNICODE_MAX_TABLE_INDEX, 20983 0 + UNICODE_MAX_TABLE_INDEX, 20984 31 /* page 251 */, 20985 0 + UNICODE_MAX_TABLE_INDEX, 20986 0 + UNICODE_MAX_TABLE_INDEX, 20987 32 /* page 254 */, 20988 0 + UNICODE_MAX_TABLE_INDEX, 20989 0 + UNICODE_MAX_TABLE_INDEX, 20990 33 /* page 257 */, 20991 34 /* page 258 */, 20992 35 /* page 259 */, 20993 0 + UNICODE_MAX_TABLE_INDEX, 20994 0 + UNICODE_MAX_TABLE_INDEX, 20995 0 + UNICODE_MAX_TABLE_INDEX, 20996 0 + UNICODE_MAX_TABLE_INDEX, 20997 0 + UNICODE_MAX_TABLE_INDEX, 20998 0 + UNICODE_MAX_TABLE_INDEX, 20999 36 /* page 266 */, 21000 0 + UNICODE_MAX_TABLE_INDEX, 21001 0 + UNICODE_MAX_TABLE_INDEX, 21002 0 + UNICODE_MAX_TABLE_INDEX, 21003 0 + UNICODE_MAX_TABLE_INDEX, 21004 0 + UNICODE_MAX_TABLE_INDEX, 21005 37 /* page 272 */, 21006 38 /* page 273 */, 21007 39 /* page 274 */, 21008 40 /* page 275 */, 21009 41 /* page 276 */, 21010 42 /* page 277 */, 21011 43 /* page 278 */, 21012 44 /* page 279 */, 21013 0 + UNICODE_MAX_TABLE_INDEX, 21014 0 + UNICODE_MAX_TABLE_INDEX, 21015 45 /* page 282 */, 21016 0 + UNICODE_MAX_TABLE_INDEX, 21017 46 /* page 284 */, 21018 47 /* page 285 */, 21019 0 + UNICODE_MAX_TABLE_INDEX, 21020 0 + UNICODE_MAX_TABLE_INDEX, 21021 0 + UNICODE_MAX_TABLE_INDEX, 21022 0 + UNICODE_MAX_TABLE_INDEX, 21023 0 + UNICODE_MAX_TABLE_INDEX, 21024 0 + UNICODE_MAX_TABLE_INDEX, 21025 0 + UNICODE_MAX_TABLE_INDEX, 21026 0 + UNICODE_MAX_TABLE_INDEX, 21027 0 + UNICODE_MAX_TABLE_INDEX, 21028 0 + UNICODE_MAX_TABLE_INDEX, 21029 0 + UNICODE_MAX_TABLE_INDEX, 21030 0 + UNICODE_MAX_TABLE_INDEX, 21031 0 + UNICODE_MAX_TABLE_INDEX, 21032 0 + UNICODE_MAX_TABLE_INDEX, 21033 0 + UNICODE_MAX_TABLE_INDEX, 21034 0 + UNICODE_MAX_TABLE_INDEX, 21035 0 + UNICODE_MAX_TABLE_INDEX, 21036 0 + UNICODE_MAX_TABLE_INDEX, 21037 0 + UNICODE_MAX_TABLE_INDEX, 21038 0 + UNICODE_MAX_TABLE_INDEX, 21039 0 + UNICODE_MAX_TABLE_INDEX, 21040 0 + UNICODE_MAX_TABLE_INDEX, 21041 0 + UNICODE_MAX_TABLE_INDEX, 21042 0 + UNICODE_MAX_TABLE_INDEX, 21043 0 + UNICODE_MAX_TABLE_INDEX, 21044 0 + UNICODE_MAX_TABLE_INDEX, 21045 0 + UNICODE_MAX_TABLE_INDEX, 21046 0 + UNICODE_MAX_TABLE_INDEX, 21047 0 + UNICODE_MAX_TABLE_INDEX, 21048 0 + UNICODE_MAX_TABLE_INDEX, 21049 0 + UNICODE_MAX_TABLE_INDEX, 21050 0 + UNICODE_MAX_TABLE_INDEX, 21051 0 + UNICODE_MAX_TABLE_INDEX, 21052 0 + UNICODE_MAX_TABLE_INDEX, 21053 0 + UNICODE_MAX_TABLE_INDEX, 21054 0 + UNICODE_MAX_TABLE_INDEX, 21055 0 + UNICODE_MAX_TABLE_INDEX, 21056 0 + UNICODE_MAX_TABLE_INDEX, 21057 0 + UNICODE_MAX_TABLE_INDEX, 21058 0 + UNICODE_MAX_TABLE_INDEX, 21059 0 + UNICODE_MAX_TABLE_INDEX, 21060 0 + UNICODE_MAX_TABLE_INDEX, 21061 0 + UNICODE_MAX_TABLE_INDEX, 21062 0 + UNICODE_MAX_TABLE_INDEX, 21063 0 + UNICODE_MAX_TABLE_INDEX, 21064 0 + UNICODE_MAX_TABLE_INDEX, 21065 0 + UNICODE_MAX_TABLE_INDEX, 21066 0 + UNICODE_MAX_TABLE_INDEX, 21067 0 + UNICODE_MAX_TABLE_INDEX, 21068 0 + UNICODE_MAX_TABLE_INDEX, 21069 0 + UNICODE_MAX_TABLE_INDEX, 21070 0 + UNICODE_MAX_TABLE_INDEX, 21071 0 + UNICODE_MAX_TABLE_INDEX, 21072 0 + UNICODE_MAX_TABLE_INDEX, 21073 0 + UNICODE_MAX_TABLE_INDEX, 21074 0 + UNICODE_MAX_TABLE_INDEX, 21075 0 + UNICODE_MAX_TABLE_INDEX, 21076 0 + UNICODE_MAX_TABLE_INDEX, 21077 0 + UNICODE_MAX_TABLE_INDEX, 21078 0 + UNICODE_MAX_TABLE_INDEX, 21079 0 + UNICODE_MAX_TABLE_INDEX, 21080 0 + UNICODE_MAX_TABLE_INDEX, 21081 0 + UNICODE_MAX_TABLE_INDEX, 21082 0 + UNICODE_MAX_TABLE_INDEX, 21083 0 + UNICODE_MAX_TABLE_INDEX, 21084 0 + UNICODE_MAX_TABLE_INDEX, 21085 0 + UNICODE_MAX_TABLE_INDEX, 21086 0 + UNICODE_MAX_TABLE_INDEX, 21087 0 + UNICODE_MAX_TABLE_INDEX, 21088 0 + UNICODE_MAX_TABLE_INDEX, 21089 0 + UNICODE_MAX_TABLE_INDEX, 21090 0 + UNICODE_MAX_TABLE_INDEX, 21091 0 + UNICODE_MAX_TABLE_INDEX, 21092 0 + UNICODE_MAX_TABLE_INDEX, 21093 0 + UNICODE_MAX_TABLE_INDEX, 21094 0 + UNICODE_MAX_TABLE_INDEX, 21095 48 /* page 362 */, 21096 49 /* page 363 */, 21097 0 + UNICODE_MAX_TABLE_INDEX, 21098 0 + UNICODE_MAX_TABLE_INDEX, 21099 0 + UNICODE_MAX_TABLE_INDEX, 21100 0 + UNICODE_MAX_TABLE_INDEX, 21101 0 + UNICODE_MAX_TABLE_INDEX, 21102 0 + UNICODE_MAX_TABLE_INDEX, 21103 0 + UNICODE_MAX_TABLE_INDEX, 21104 0 + UNICODE_MAX_TABLE_INDEX, 21105 0 + UNICODE_MAX_TABLE_INDEX, 21106 0 + UNICODE_MAX_TABLE_INDEX, 21107 0 + UNICODE_MAX_TABLE_INDEX, 21108 0 + UNICODE_MAX_TABLE_INDEX, 21109 0 + UNICODE_MAX_TABLE_INDEX, 21110 0 + UNICODE_MAX_TABLE_INDEX, 21111 0 + UNICODE_MAX_TABLE_INDEX, 21112 0 + UNICODE_MAX_TABLE_INDEX, 21113 0 + UNICODE_MAX_TABLE_INDEX, 21114 0 + UNICODE_MAX_TABLE_INDEX, 21115 0 + UNICODE_MAX_TABLE_INDEX, 21116 0 + UNICODE_MAX_TABLE_INDEX, 21117 0 + UNICODE_MAX_TABLE_INDEX, 21118 0 + UNICODE_MAX_TABLE_INDEX, 21119 0 + UNICODE_MAX_TABLE_INDEX, 21120 0 + UNICODE_MAX_TABLE_INDEX, 21121 0 + UNICODE_MAX_TABLE_INDEX, 21122 0 + UNICODE_MAX_TABLE_INDEX, 21123 0 + UNICODE_MAX_TABLE_INDEX, 21124 0 + UNICODE_MAX_TABLE_INDEX, 21125 0 + UNICODE_MAX_TABLE_INDEX, 21126 0 + UNICODE_MAX_TABLE_INDEX, 21127 0 + UNICODE_MAX_TABLE_INDEX, 21128 0 + UNICODE_MAX_TABLE_INDEX, 21129 0 + UNICODE_MAX_TABLE_INDEX, 21130 0 + UNICODE_MAX_TABLE_INDEX, 21131 0 + UNICODE_MAX_TABLE_INDEX, 21132 0 + UNICODE_MAX_TABLE_INDEX, 21133 0 + UNICODE_MAX_TABLE_INDEX, 21134 0 + UNICODE_MAX_TABLE_INDEX, 21135 0 + UNICODE_MAX_TABLE_INDEX, 21136 0 + UNICODE_MAX_TABLE_INDEX, 21137 0 + UNICODE_MAX_TABLE_INDEX, 21138 0 + UNICODE_MAX_TABLE_INDEX, 21139 0 + UNICODE_MAX_TABLE_INDEX, 21140 0 + UNICODE_MAX_TABLE_INDEX, 21141 0 + UNICODE_MAX_TABLE_INDEX, 21142 0 + UNICODE_MAX_TABLE_INDEX, 21143 0 + UNICODE_MAX_TABLE_INDEX, 21144 0 + UNICODE_MAX_TABLE_INDEX, 21145 0 + UNICODE_MAX_TABLE_INDEX, 21146 0 + UNICODE_MAX_TABLE_INDEX, 21147 0 + UNICODE_MAX_TABLE_INDEX, 21148 0 + UNICODE_MAX_TABLE_INDEX, 21149 0 + UNICODE_MAX_TABLE_INDEX, 21150 0 + UNICODE_MAX_TABLE_INDEX, 21151 0 + UNICODE_MAX_TABLE_INDEX, 21152 0 + UNICODE_MAX_TABLE_INDEX, 21153 0 + UNICODE_MAX_TABLE_INDEX, 21154 0 + UNICODE_MAX_TABLE_INDEX, 21155 0 + UNICODE_MAX_TABLE_INDEX, 21156 0 + UNICODE_MAX_TABLE_INDEX, 21157 0 + UNICODE_MAX_TABLE_INDEX, 21158 0 + UNICODE_MAX_TABLE_INDEX, 21159 0 + UNICODE_MAX_TABLE_INDEX, 21160 0 + UNICODE_MAX_TABLE_INDEX, 21161 0 + UNICODE_MAX_TABLE_INDEX, 21162 0 + UNICODE_MAX_TABLE_INDEX, 21163 0 + UNICODE_MAX_TABLE_INDEX, 21164 0 + UNICODE_MAX_TABLE_INDEX, 21165 0 + UNICODE_MAX_TABLE_INDEX, 21166 0 + UNICODE_MAX_TABLE_INDEX, 21167 0 + UNICODE_MAX_TABLE_INDEX, 21168 0 + UNICODE_MAX_TABLE_INDEX, 21169 0 + UNICODE_MAX_TABLE_INDEX, 21170 0 + UNICODE_MAX_TABLE_INDEX, 21171 0 + UNICODE_MAX_TABLE_INDEX, 21172 0 + UNICODE_MAX_TABLE_INDEX, 21173 0 + UNICODE_MAX_TABLE_INDEX, 21174 0 + UNICODE_MAX_TABLE_INDEX, 21175 0 + UNICODE_MAX_TABLE_INDEX, 21176 0 + UNICODE_MAX_TABLE_INDEX, 21177 50 /* page 444 */, 21178 0 + UNICODE_MAX_TABLE_INDEX, 21179 0 + UNICODE_MAX_TABLE_INDEX, 21180 0 + UNICODE_MAX_TABLE_INDEX, 21181 0 + UNICODE_MAX_TABLE_INDEX, 21182 0 + UNICODE_MAX_TABLE_INDEX, 21183 0 + UNICODE_MAX_TABLE_INDEX, 21184 0 + UNICODE_MAX_TABLE_INDEX, 21185 0 + UNICODE_MAX_TABLE_INDEX, 21186 0 + UNICODE_MAX_TABLE_INDEX, 21187 0 + UNICODE_MAX_TABLE_INDEX, 21188 0 + UNICODE_MAX_TABLE_INDEX, 21189 0 + UNICODE_MAX_TABLE_INDEX, 21190 0 + UNICODE_MAX_TABLE_INDEX, 21191 0 + UNICODE_MAX_TABLE_INDEX, 21192 0 + UNICODE_MAX_TABLE_INDEX, 21193 0 + UNICODE_MAX_TABLE_INDEX, 21194 0 + UNICODE_MAX_TABLE_INDEX, 21195 0 + UNICODE_MAX_TABLE_INDEX, 21196 0 + UNICODE_MAX_TABLE_INDEX, 21197 0 + UNICODE_MAX_TABLE_INDEX, 21198 51 /* page 465 */, 21199 52 /* page 466 */, 21200 0 + UNICODE_MAX_TABLE_INDEX, 21201 0 + UNICODE_MAX_TABLE_INDEX, 21202 0 + UNICODE_MAX_TABLE_INDEX, 21203 0 + UNICODE_MAX_TABLE_INDEX, 21204 0 + UNICODE_MAX_TABLE_INDEX, 21205 0 + UNICODE_MAX_TABLE_INDEX, 21206 0 + UNICODE_MAX_TABLE_INDEX, 21207 0 + UNICODE_MAX_TABLE_INDEX, 21208 0 + UNICODE_MAX_TABLE_INDEX, 21209 0 + UNICODE_MAX_TABLE_INDEX, 21210 0 + UNICODE_MAX_TABLE_INDEX, 21211 0 + UNICODE_MAX_TABLE_INDEX, 21212 0 + UNICODE_MAX_TABLE_INDEX, 21213 53 /* page 480 */, 21214 0 + UNICODE_MAX_TABLE_INDEX, 21215 0 + UNICODE_MAX_TABLE_INDEX, 21216 0 + UNICODE_MAX_TABLE_INDEX, 21217 0 + UNICODE_MAX_TABLE_INDEX, 21218 0 + UNICODE_MAX_TABLE_INDEX, 21219 0 + UNICODE_MAX_TABLE_INDEX, 21220 0 + UNICODE_MAX_TABLE_INDEX, 21221 54 /* page 488 */, 21222 55 /* page 489 */, 21223 0 + UNICODE_MAX_TABLE_INDEX, 21224 0 + UNICODE_MAX_TABLE_INDEX, 21225 0 + UNICODE_MAX_TABLE_INDEX, 21226 0 + UNICODE_MAX_TABLE_INDEX, 21227 0 + UNICODE_MAX_TABLE_INDEX, 21228 0 + UNICODE_MAX_TABLE_INDEX, 21229 0 + UNICODE_MAX_TABLE_INDEX, 21230 0 + UNICODE_MAX_TABLE_INDEX, 21231 0 + UNICODE_MAX_TABLE_INDEX, 21232 0 + UNICODE_MAX_TABLE_INDEX, 21233 0 + UNICODE_MAX_TABLE_INDEX, 21234 0 + UNICODE_MAX_TABLE_INDEX, 21235 0 + UNICODE_MAX_TABLE_INDEX, 21236 0 + UNICODE_MAX_TABLE_INDEX, 21237 0 + UNICODE_MAX_TABLE_INDEX, 21238 0 + UNICODE_MAX_TABLE_INDEX, 21239 0 + UNICODE_MAX_TABLE_INDEX, 21240 0 + UNICODE_MAX_TABLE_INDEX, 21241 0 + UNICODE_MAX_TABLE_INDEX, 21242 0 + UNICODE_MAX_TABLE_INDEX, 21243 0 + UNICODE_MAX_TABLE_INDEX, 21244 0 + UNICODE_MAX_TABLE_INDEX, 21245 0 + UNICODE_MAX_TABLE_INDEX, 21246 0 + UNICODE_MAX_TABLE_INDEX, 21247 0 + UNICODE_MAX_TABLE_INDEX, 21248 0 + UNICODE_MAX_TABLE_INDEX, 21249 0 + UNICODE_MAX_TABLE_INDEX, 21250 0 + UNICODE_MAX_TABLE_INDEX, 21251 0 + UNICODE_MAX_TABLE_INDEX, 21252 0 + UNICODE_MAX_TABLE_INDEX, 21253 0 + UNICODE_MAX_TABLE_INDEX, 21254 0 + UNICODE_MAX_TABLE_INDEX, 21255 0 + UNICODE_MAX_TABLE_INDEX, 21256 0 + UNICODE_MAX_TABLE_INDEX, 21257 0 + UNICODE_MAX_TABLE_INDEX, 21258 0 + UNICODE_MAX_TABLE_INDEX, 21259 0 + UNICODE_MAX_TABLE_INDEX, 21260 0 + UNICODE_MAX_TABLE_INDEX, 21261 0 + UNICODE_MAX_TABLE_INDEX, 21262 0 + UNICODE_MAX_TABLE_INDEX, 21263 0 + UNICODE_MAX_TABLE_INDEX, 21264 0 + UNICODE_MAX_TABLE_INDEX, 21265 0 + UNICODE_MAX_TABLE_INDEX, 21266 0 + UNICODE_MAX_TABLE_INDEX, 21267 0 + UNICODE_MAX_TABLE_INDEX, 21268 0 + UNICODE_MAX_TABLE_INDEX, 21269 0 + UNICODE_MAX_TABLE_INDEX, 21270 0 + UNICODE_MAX_TABLE_INDEX, 21271 0 + UNICODE_MAX_TABLE_INDEX, 21272 0 + UNICODE_MAX_TABLE_INDEX, 21273 0 + UNICODE_MAX_TABLE_INDEX, 21274 0 + UNICODE_MAX_TABLE_INDEX, 21275 0 + UNICODE_MAX_TABLE_INDEX, 21276 0 + UNICODE_MAX_TABLE_INDEX, 21277 0 + UNICODE_MAX_TABLE_INDEX, 21278 0 + UNICODE_MAX_TABLE_INDEX, 21279 0 + UNICODE_MAX_TABLE_INDEX, 21280 0 + UNICODE_MAX_TABLE_INDEX, 21281 0 + UNICODE_MAX_TABLE_INDEX, 21282 0 + UNICODE_MAX_TABLE_INDEX, 21283 0 + UNICODE_MAX_TABLE_INDEX, 21284 0 + UNICODE_MAX_TABLE_INDEX, 21285 0 + UNICODE_MAX_TABLE_INDEX, 21286 0 + UNICODE_MAX_TABLE_INDEX, 21287 0 + UNICODE_MAX_TABLE_INDEX, 21288 0 + UNICODE_MAX_TABLE_INDEX, 21289 0 + UNICODE_MAX_TABLE_INDEX, 21290 0 + UNICODE_MAX_TABLE_INDEX, 21291 0 + UNICODE_MAX_TABLE_INDEX, 21292 0 + UNICODE_MAX_TABLE_INDEX, 21293 0 + UNICODE_MAX_TABLE_INDEX, 21294 0 + UNICODE_MAX_TABLE_INDEX, 21295 0 + UNICODE_MAX_TABLE_INDEX, 21296 0 + UNICODE_MAX_TABLE_INDEX, 21297 0 + UNICODE_MAX_TABLE_INDEX, 21298 0 + UNICODE_MAX_TABLE_INDEX, 21299 0 + UNICODE_MAX_TABLE_INDEX, 21300 0 + UNICODE_MAX_TABLE_INDEX, 21301 0 + UNICODE_MAX_TABLE_INDEX, 21302 0 + UNICODE_MAX_TABLE_INDEX, 21303 0 + UNICODE_MAX_TABLE_INDEX, 21304 0 + UNICODE_MAX_TABLE_INDEX, 21305 0 + UNICODE_MAX_TABLE_INDEX, 21306 0 + UNICODE_MAX_TABLE_INDEX, 21307 0 + UNICODE_MAX_TABLE_INDEX, 21308 0 + UNICODE_MAX_TABLE_INDEX, 21309 0 + UNICODE_MAX_TABLE_INDEX, 21310 0 + UNICODE_MAX_TABLE_INDEX, 21311 0 + UNICODE_MAX_TABLE_INDEX, 21312 0 + UNICODE_MAX_TABLE_INDEX, 21313 0 + UNICODE_MAX_TABLE_INDEX, 21314 0 + UNICODE_MAX_TABLE_INDEX, 21315 0 + UNICODE_MAX_TABLE_INDEX, 21316 0 + UNICODE_MAX_TABLE_INDEX, 21317 0 + UNICODE_MAX_TABLE_INDEX, 21318 0 + UNICODE_MAX_TABLE_INDEX, 21319 0 + UNICODE_MAX_TABLE_INDEX, 21320 0 + UNICODE_MAX_TABLE_INDEX, 21321 0 + UNICODE_MAX_TABLE_INDEX, 21322 0 + UNICODE_MAX_TABLE_INDEX, 21323 0 + UNICODE_MAX_TABLE_INDEX, 21324 0 + UNICODE_MAX_TABLE_INDEX, 21325 0 + UNICODE_MAX_TABLE_INDEX, 21326 0 + UNICODE_MAX_TABLE_INDEX, 21327 0 + UNICODE_MAX_TABLE_INDEX, 21328 0 + UNICODE_MAX_TABLE_INDEX, 21329 0 + UNICODE_MAX_TABLE_INDEX, 21330 0 + UNICODE_MAX_TABLE_INDEX, 21331 0 + UNICODE_MAX_TABLE_INDEX, 21332 0 + UNICODE_MAX_TABLE_INDEX, 21333 0 + UNICODE_MAX_TABLE_INDEX, 21334 0 + UNICODE_MAX_TABLE_INDEX, 21335 0 + UNICODE_MAX_TABLE_INDEX, 21336 0 + UNICODE_MAX_TABLE_INDEX, 21337 0 + UNICODE_MAX_TABLE_INDEX, 21338 0 + UNICODE_MAX_TABLE_INDEX, 21339 0 + UNICODE_MAX_TABLE_INDEX, 21340 0 + UNICODE_MAX_TABLE_INDEX, 21341 0 + UNICODE_MAX_TABLE_INDEX, 21342 0 + UNICODE_MAX_TABLE_INDEX, 21343 0 + UNICODE_MAX_TABLE_INDEX, 21344 0 + UNICODE_MAX_TABLE_INDEX, 21345 0 + UNICODE_MAX_TABLE_INDEX, 21346 0 + UNICODE_MAX_TABLE_INDEX, 21347 0 + UNICODE_MAX_TABLE_INDEX, 21348 0 + UNICODE_MAX_TABLE_INDEX, 21349 0 + UNICODE_MAX_TABLE_INDEX, 21350 0 + UNICODE_MAX_TABLE_INDEX, 21351 0 + UNICODE_MAX_TABLE_INDEX, 21352 0 + UNICODE_MAX_TABLE_INDEX, 21353 0 + UNICODE_MAX_TABLE_INDEX, 21354 0 + UNICODE_MAX_TABLE_INDEX, 21355 0 + UNICODE_MAX_TABLE_INDEX, 21356 0 + UNICODE_MAX_TABLE_INDEX, 21357 0 + UNICODE_MAX_TABLE_INDEX, 21358 0 + UNICODE_MAX_TABLE_INDEX, 21359 0 + UNICODE_MAX_TABLE_INDEX, 21360 0 + UNICODE_MAX_TABLE_INDEX, 21361 0 + UNICODE_MAX_TABLE_INDEX, 21362 0 + UNICODE_MAX_TABLE_INDEX, 21363 0 + UNICODE_MAX_TABLE_INDEX, 21364 0 + UNICODE_MAX_TABLE_INDEX, 21365 0 + UNICODE_MAX_TABLE_INDEX, 21366 0 + UNICODE_MAX_TABLE_INDEX, 21367 0 + UNICODE_MAX_TABLE_INDEX, 21368 0 + UNICODE_MAX_TABLE_INDEX, 21369 0 + UNICODE_MAX_TABLE_INDEX, 21370 0 + UNICODE_MAX_TABLE_INDEX, 21371 0 + UNICODE_MAX_TABLE_INDEX, 21372 0 + UNICODE_MAX_TABLE_INDEX, 21373 0 + UNICODE_MAX_TABLE_INDEX, 21374 0 + UNICODE_MAX_TABLE_INDEX, 21375 0 + UNICODE_MAX_TABLE_INDEX, 21376 0 + UNICODE_MAX_TABLE_INDEX, 21377 0 + UNICODE_MAX_TABLE_INDEX, 21378 0 + UNICODE_MAX_TABLE_INDEX, 21379 0 + UNICODE_MAX_TABLE_INDEX, 21380 0 + UNICODE_MAX_TABLE_INDEX, 21381 0 + UNICODE_MAX_TABLE_INDEX, 21382 0 + UNICODE_MAX_TABLE_INDEX, 21383 0 + UNICODE_MAX_TABLE_INDEX, 21384 0 + UNICODE_MAX_TABLE_INDEX, 21385 0 + UNICODE_MAX_TABLE_INDEX, 21386 0 + UNICODE_MAX_TABLE_INDEX, 21387 0 + UNICODE_MAX_TABLE_INDEX, 21388 0 + UNICODE_MAX_TABLE_INDEX, 21389 0 + UNICODE_MAX_TABLE_INDEX, 21390 0 + UNICODE_MAX_TABLE_INDEX, 21391 0 + UNICODE_MAX_TABLE_INDEX, 21392 0 + UNICODE_MAX_TABLE_INDEX, 21393 0 + UNICODE_MAX_TABLE_INDEX, 21394 0 + UNICODE_MAX_TABLE_INDEX, 21395 0 + UNICODE_MAX_TABLE_INDEX, 21396 0 + UNICODE_MAX_TABLE_INDEX, 21397 0 + UNICODE_MAX_TABLE_INDEX, 21398 0 + UNICODE_MAX_TABLE_INDEX, 21399 0 + UNICODE_MAX_TABLE_INDEX, 21400 0 + UNICODE_MAX_TABLE_INDEX, 21401 0 + UNICODE_MAX_TABLE_INDEX, 21402 0 + UNICODE_MAX_TABLE_INDEX, 21403 0 + UNICODE_MAX_TABLE_INDEX, 21404 0 + UNICODE_MAX_TABLE_INDEX, 21405 0 + UNICODE_MAX_TABLE_INDEX, 21406 0 + UNICODE_MAX_TABLE_INDEX, 21407 0 + UNICODE_MAX_TABLE_INDEX, 21408 0 + UNICODE_MAX_TABLE_INDEX, 21409 0 + UNICODE_MAX_TABLE_INDEX, 21410 0 + UNICODE_MAX_TABLE_INDEX, 21411 0 + UNICODE_MAX_TABLE_INDEX, 21412 0 + UNICODE_MAX_TABLE_INDEX, 21413 0 + UNICODE_MAX_TABLE_INDEX, 21414 0 + UNICODE_MAX_TABLE_INDEX, 21415 0 + UNICODE_MAX_TABLE_INDEX, 21416 0 + UNICODE_MAX_TABLE_INDEX, 21417 0 + UNICODE_MAX_TABLE_INDEX, 21418 0 + UNICODE_MAX_TABLE_INDEX, 21419 0 + UNICODE_MAX_TABLE_INDEX, 21420 0 + UNICODE_MAX_TABLE_INDEX, 21421 0 + UNICODE_MAX_TABLE_INDEX, 21422 0 + UNICODE_MAX_TABLE_INDEX, 21423 0 + UNICODE_MAX_TABLE_INDEX, 21424 0 + UNICODE_MAX_TABLE_INDEX, 21425 0 + UNICODE_MAX_TABLE_INDEX, 21426 0 + UNICODE_MAX_TABLE_INDEX, 21427 0 + UNICODE_MAX_TABLE_INDEX, 21428 0 + UNICODE_MAX_TABLE_INDEX, 21429 0 + UNICODE_MAX_TABLE_INDEX, 21430 0 + UNICODE_MAX_TABLE_INDEX, 21431 0 + UNICODE_MAX_TABLE_INDEX, 21432 0 + UNICODE_MAX_TABLE_INDEX, 21433 0 + UNICODE_MAX_TABLE_INDEX, 21434 0 + UNICODE_MAX_TABLE_INDEX, 21435 0 + UNICODE_MAX_TABLE_INDEX, 21436 0 + UNICODE_MAX_TABLE_INDEX, 21437 0 + UNICODE_MAX_TABLE_INDEX, 21438 0 + UNICODE_MAX_TABLE_INDEX, 21439 0 + UNICODE_MAX_TABLE_INDEX, 21440 0 + UNICODE_MAX_TABLE_INDEX, 21441 0 + UNICODE_MAX_TABLE_INDEX, 21442 0 + UNICODE_MAX_TABLE_INDEX, 21443 0 + UNICODE_MAX_TABLE_INDEX, 21444 0 + UNICODE_MAX_TABLE_INDEX, 21445 0 + UNICODE_MAX_TABLE_INDEX, 21446 0 + UNICODE_MAX_TABLE_INDEX, 21447 0 + UNICODE_MAX_TABLE_INDEX, 21448 0 + UNICODE_MAX_TABLE_INDEX, 21449 0 + UNICODE_MAX_TABLE_INDEX, 21450 0 + UNICODE_MAX_TABLE_INDEX, 21451 0 + UNICODE_MAX_TABLE_INDEX, 21452 0 + UNICODE_MAX_TABLE_INDEX, 21453 0 + UNICODE_MAX_TABLE_INDEX, 21454 0 + UNICODE_MAX_TABLE_INDEX, 21455 0 + UNICODE_MAX_TABLE_INDEX, 21456 0 + UNICODE_MAX_TABLE_INDEX, 21457 0 + UNICODE_MAX_TABLE_INDEX, 21458 0 + UNICODE_MAX_TABLE_INDEX, 21459 0 + UNICODE_MAX_TABLE_INDEX, 21460 0 + UNICODE_MAX_TABLE_INDEX, 21461 0 + UNICODE_MAX_TABLE_INDEX, 21462 0 + UNICODE_MAX_TABLE_INDEX, 21463 0 + UNICODE_MAX_TABLE_INDEX, 21464 0 + UNICODE_MAX_TABLE_INDEX, 21465 0 + UNICODE_MAX_TABLE_INDEX, 21466 0 + UNICODE_MAX_TABLE_INDEX, 21467 0 + UNICODE_MAX_TABLE_INDEX, 21468 0 + UNICODE_MAX_TABLE_INDEX, 21469 0 + UNICODE_MAX_TABLE_INDEX, 21470 0 + UNICODE_MAX_TABLE_INDEX, 21471 0 + UNICODE_MAX_TABLE_INDEX, 21472 0 + UNICODE_MAX_TABLE_INDEX, 21473 0 + UNICODE_MAX_TABLE_INDEX, 21474 0 + UNICODE_MAX_TABLE_INDEX, 21475 0 + UNICODE_MAX_TABLE_INDEX, 21476 0 + UNICODE_MAX_TABLE_INDEX, 21477 0 + UNICODE_MAX_TABLE_INDEX, 21478 0 + UNICODE_MAX_TABLE_INDEX, 21479 0 + UNICODE_MAX_TABLE_INDEX, 21480 0 + UNICODE_MAX_TABLE_INDEX, 21481 0 + UNICODE_MAX_TABLE_INDEX, 21482 0 + UNICODE_MAX_TABLE_INDEX, 21483 0 + UNICODE_MAX_TABLE_INDEX, 21484 0 + UNICODE_MAX_TABLE_INDEX, 21485 0 + UNICODE_MAX_TABLE_INDEX, 21486 0 + UNICODE_MAX_TABLE_INDEX, 21487 0 + UNICODE_MAX_TABLE_INDEX, 21488 0 + UNICODE_MAX_TABLE_INDEX, 21489 0 + UNICODE_MAX_TABLE_INDEX, 21490 0 + UNICODE_MAX_TABLE_INDEX, 21491 0 + UNICODE_MAX_TABLE_INDEX, 21492 0 + UNICODE_MAX_TABLE_INDEX, 21493 0 + UNICODE_MAX_TABLE_INDEX, 21494 0 + UNICODE_MAX_TABLE_INDEX, 21495 0 + UNICODE_MAX_TABLE_INDEX 21496 }; 21497 21498 static const int16_t combining_class_table_part2[768] = { 21499 0 + UNICODE_MAX_TABLE_INDEX, 21500 0 + UNICODE_MAX_TABLE_INDEX, 21501 0 + UNICODE_MAX_TABLE_INDEX, 21502 0 + UNICODE_MAX_TABLE_INDEX, 21503 0 + UNICODE_MAX_TABLE_INDEX, 21504 0 + UNICODE_MAX_TABLE_INDEX, 21505 0 + UNICODE_MAX_TABLE_INDEX, 21506 0 + UNICODE_MAX_TABLE_INDEX, 21507 0 + UNICODE_MAX_TABLE_INDEX, 21508 0 + UNICODE_MAX_TABLE_INDEX, 21509 0 + UNICODE_MAX_TABLE_INDEX, 21510 0 + UNICODE_MAX_TABLE_INDEX, 21511 0 + UNICODE_MAX_TABLE_INDEX, 21512 0 + UNICODE_MAX_TABLE_INDEX, 21513 0 + UNICODE_MAX_TABLE_INDEX, 21514 0 + UNICODE_MAX_TABLE_INDEX, 21515 0 + UNICODE_MAX_TABLE_INDEX, 21516 0 + UNICODE_MAX_TABLE_INDEX, 21517 0 + UNICODE_MAX_TABLE_INDEX, 21518 0 + UNICODE_MAX_TABLE_INDEX, 21519 0 + UNICODE_MAX_TABLE_INDEX, 21520 0 + UNICODE_MAX_TABLE_INDEX, 21521 0 + UNICODE_MAX_TABLE_INDEX, 21522 0 + UNICODE_MAX_TABLE_INDEX, 21523 0 + UNICODE_MAX_TABLE_INDEX, 21524 0 + UNICODE_MAX_TABLE_INDEX, 21525 0 + UNICODE_MAX_TABLE_INDEX, 21526 0 + UNICODE_MAX_TABLE_INDEX, 21527 0 + UNICODE_MAX_TABLE_INDEX, 21528 0 + UNICODE_MAX_TABLE_INDEX, 21529 0 + UNICODE_MAX_TABLE_INDEX, 21530 0 + UNICODE_MAX_TABLE_INDEX, 21531 0 + UNICODE_MAX_TABLE_INDEX, 21532 0 + UNICODE_MAX_TABLE_INDEX, 21533 0 + UNICODE_MAX_TABLE_INDEX, 21534 0 + UNICODE_MAX_TABLE_INDEX, 21535 0 + UNICODE_MAX_TABLE_INDEX, 21536 0 + UNICODE_MAX_TABLE_INDEX, 21537 0 + UNICODE_MAX_TABLE_INDEX, 21538 0 + UNICODE_MAX_TABLE_INDEX, 21539 0 + UNICODE_MAX_TABLE_INDEX, 21540 0 + UNICODE_MAX_TABLE_INDEX, 21541 0 + UNICODE_MAX_TABLE_INDEX, 21542 0 + UNICODE_MAX_TABLE_INDEX, 21543 0 + UNICODE_MAX_TABLE_INDEX, 21544 0 + UNICODE_MAX_TABLE_INDEX, 21545 0 + UNICODE_MAX_TABLE_INDEX, 21546 0 + UNICODE_MAX_TABLE_INDEX, 21547 0 + UNICODE_MAX_TABLE_INDEX, 21548 0 + UNICODE_MAX_TABLE_INDEX, 21549 0 + UNICODE_MAX_TABLE_INDEX, 21550 0 + UNICODE_MAX_TABLE_INDEX, 21551 0 + UNICODE_MAX_TABLE_INDEX, 21552 0 + UNICODE_MAX_TABLE_INDEX, 21553 0 + UNICODE_MAX_TABLE_INDEX, 21554 0 + UNICODE_MAX_TABLE_INDEX, 21555 0 + UNICODE_MAX_TABLE_INDEX, 21556 0 + UNICODE_MAX_TABLE_INDEX, 21557 0 + UNICODE_MAX_TABLE_INDEX, 21558 0 + UNICODE_MAX_TABLE_INDEX, 21559 0 + UNICODE_MAX_TABLE_INDEX, 21560 0 + UNICODE_MAX_TABLE_INDEX, 21561 0 + UNICODE_MAX_TABLE_INDEX, 21562 0 + UNICODE_MAX_TABLE_INDEX, 21563 0 + UNICODE_MAX_TABLE_INDEX, 21564 0 + UNICODE_MAX_TABLE_INDEX, 21565 0 + UNICODE_MAX_TABLE_INDEX, 21566 0 + UNICODE_MAX_TABLE_INDEX, 21567 0 + UNICODE_MAX_TABLE_INDEX, 21568 0 + UNICODE_MAX_TABLE_INDEX, 21569 0 + UNICODE_MAX_TABLE_INDEX, 21570 0 + UNICODE_MAX_TABLE_INDEX, 21571 0 + UNICODE_MAX_TABLE_INDEX, 21572 0 + UNICODE_MAX_TABLE_INDEX, 21573 0 + UNICODE_MAX_TABLE_INDEX, 21574 0 + UNICODE_MAX_TABLE_INDEX, 21575 0 + UNICODE_MAX_TABLE_INDEX, 21576 0 + UNICODE_MAX_TABLE_INDEX, 21577 0 + UNICODE_MAX_TABLE_INDEX, 21578 0 + UNICODE_MAX_TABLE_INDEX, 21579 0 + UNICODE_MAX_TABLE_INDEX, 21580 0 + UNICODE_MAX_TABLE_INDEX, 21581 0 + UNICODE_MAX_TABLE_INDEX, 21582 0 + UNICODE_MAX_TABLE_INDEX, 21583 0 + UNICODE_MAX_TABLE_INDEX, 21584 0 + UNICODE_MAX_TABLE_INDEX, 21585 0 + UNICODE_MAX_TABLE_INDEX, 21586 0 + UNICODE_MAX_TABLE_INDEX, 21587 0 + UNICODE_MAX_TABLE_INDEX, 21588 0 + UNICODE_MAX_TABLE_INDEX, 21589 0 + UNICODE_MAX_TABLE_INDEX, 21590 0 + UNICODE_MAX_TABLE_INDEX, 21591 0 + UNICODE_MAX_TABLE_INDEX, 21592 0 + UNICODE_MAX_TABLE_INDEX, 21593 0 + UNICODE_MAX_TABLE_INDEX, 21594 0 + UNICODE_MAX_TABLE_INDEX, 21595 0 + UNICODE_MAX_TABLE_INDEX, 21596 0 + UNICODE_MAX_TABLE_INDEX, 21597 0 + UNICODE_MAX_TABLE_INDEX, 21598 0 + UNICODE_MAX_TABLE_INDEX, 21599 0 + UNICODE_MAX_TABLE_INDEX, 21600 0 + UNICODE_MAX_TABLE_INDEX, 21601 0 + UNICODE_MAX_TABLE_INDEX, 21602 0 + UNICODE_MAX_TABLE_INDEX, 21603 0 + UNICODE_MAX_TABLE_INDEX, 21604 0 + UNICODE_MAX_TABLE_INDEX, 21605 0 + UNICODE_MAX_TABLE_INDEX, 21606 0 + UNICODE_MAX_TABLE_INDEX, 21607 0 + UNICODE_MAX_TABLE_INDEX, 21608 0 + UNICODE_MAX_TABLE_INDEX, 21609 0 + UNICODE_MAX_TABLE_INDEX, 21610 0 + UNICODE_MAX_TABLE_INDEX, 21611 0 + UNICODE_MAX_TABLE_INDEX, 21612 0 + UNICODE_MAX_TABLE_INDEX, 21613 0 + UNICODE_MAX_TABLE_INDEX, 21614 0 + UNICODE_MAX_TABLE_INDEX, 21615 0 + UNICODE_MAX_TABLE_INDEX, 21616 0 + UNICODE_MAX_TABLE_INDEX, 21617 0 + UNICODE_MAX_TABLE_INDEX, 21618 0 + UNICODE_MAX_TABLE_INDEX, 21619 0 + UNICODE_MAX_TABLE_INDEX, 21620 0 + UNICODE_MAX_TABLE_INDEX, 21621 0 + UNICODE_MAX_TABLE_INDEX, 21622 0 + UNICODE_MAX_TABLE_INDEX, 21623 0 + UNICODE_MAX_TABLE_INDEX, 21624 0 + UNICODE_MAX_TABLE_INDEX, 21625 0 + UNICODE_MAX_TABLE_INDEX, 21626 0 + UNICODE_MAX_TABLE_INDEX, 21627 0 + UNICODE_MAX_TABLE_INDEX, 21628 0 + UNICODE_MAX_TABLE_INDEX, 21629 0 + UNICODE_MAX_TABLE_INDEX, 21630 0 + UNICODE_MAX_TABLE_INDEX, 21631 0 + UNICODE_MAX_TABLE_INDEX, 21632 0 + UNICODE_MAX_TABLE_INDEX, 21633 0 + UNICODE_MAX_TABLE_INDEX, 21634 0 + UNICODE_MAX_TABLE_INDEX, 21635 0 + UNICODE_MAX_TABLE_INDEX, 21636 0 + UNICODE_MAX_TABLE_INDEX, 21637 0 + UNICODE_MAX_TABLE_INDEX, 21638 0 + UNICODE_MAX_TABLE_INDEX, 21639 0 + UNICODE_MAX_TABLE_INDEX, 21640 0 + UNICODE_MAX_TABLE_INDEX, 21641 0 + UNICODE_MAX_TABLE_INDEX, 21642 0 + UNICODE_MAX_TABLE_INDEX, 21643 0 + UNICODE_MAX_TABLE_INDEX, 21644 0 + UNICODE_MAX_TABLE_INDEX, 21645 0 + UNICODE_MAX_TABLE_INDEX, 21646 0 + UNICODE_MAX_TABLE_INDEX, 21647 0 + UNICODE_MAX_TABLE_INDEX, 21648 0 + UNICODE_MAX_TABLE_INDEX, 21649 0 + UNICODE_MAX_TABLE_INDEX, 21650 0 + UNICODE_MAX_TABLE_INDEX, 21651 0 + UNICODE_MAX_TABLE_INDEX, 21652 0 + UNICODE_MAX_TABLE_INDEX, 21653 0 + UNICODE_MAX_TABLE_INDEX, 21654 0 + UNICODE_MAX_TABLE_INDEX, 21655 0 + UNICODE_MAX_TABLE_INDEX, 21656 0 + UNICODE_MAX_TABLE_INDEX, 21657 0 + UNICODE_MAX_TABLE_INDEX, 21658 0 + UNICODE_MAX_TABLE_INDEX, 21659 0 + UNICODE_MAX_TABLE_INDEX, 21660 0 + UNICODE_MAX_TABLE_INDEX, 21661 0 + UNICODE_MAX_TABLE_INDEX, 21662 0 + UNICODE_MAX_TABLE_INDEX, 21663 0 + UNICODE_MAX_TABLE_INDEX, 21664 0 + UNICODE_MAX_TABLE_INDEX, 21665 0 + UNICODE_MAX_TABLE_INDEX, 21666 0 + UNICODE_MAX_TABLE_INDEX, 21667 0 + UNICODE_MAX_TABLE_INDEX, 21668 0 + UNICODE_MAX_TABLE_INDEX, 21669 0 + UNICODE_MAX_TABLE_INDEX, 21670 0 + UNICODE_MAX_TABLE_INDEX, 21671 0 + UNICODE_MAX_TABLE_INDEX, 21672 0 + UNICODE_MAX_TABLE_INDEX, 21673 0 + UNICODE_MAX_TABLE_INDEX, 21674 0 + UNICODE_MAX_TABLE_INDEX, 21675 0 + UNICODE_MAX_TABLE_INDEX, 21676 0 + UNICODE_MAX_TABLE_INDEX, 21677 0 + UNICODE_MAX_TABLE_INDEX, 21678 0 + UNICODE_MAX_TABLE_INDEX, 21679 0 + UNICODE_MAX_TABLE_INDEX, 21680 0 + UNICODE_MAX_TABLE_INDEX, 21681 0 + UNICODE_MAX_TABLE_INDEX, 21682 0 + UNICODE_MAX_TABLE_INDEX, 21683 0 + UNICODE_MAX_TABLE_INDEX, 21684 0 + UNICODE_MAX_TABLE_INDEX, 21685 0 + UNICODE_MAX_TABLE_INDEX, 21686 0 + UNICODE_MAX_TABLE_INDEX, 21687 0 + UNICODE_MAX_TABLE_INDEX, 21688 0 + UNICODE_MAX_TABLE_INDEX, 21689 0 + UNICODE_MAX_TABLE_INDEX, 21690 0 + UNICODE_MAX_TABLE_INDEX, 21691 0 + UNICODE_MAX_TABLE_INDEX, 21692 0 + UNICODE_MAX_TABLE_INDEX, 21693 0 + UNICODE_MAX_TABLE_INDEX, 21694 0 + UNICODE_MAX_TABLE_INDEX, 21695 0 + UNICODE_MAX_TABLE_INDEX, 21696 0 + UNICODE_MAX_TABLE_INDEX, 21697 0 + UNICODE_MAX_TABLE_INDEX, 21698 0 + UNICODE_MAX_TABLE_INDEX, 21699 0 + UNICODE_MAX_TABLE_INDEX, 21700 0 + UNICODE_MAX_TABLE_INDEX, 21701 0 + UNICODE_MAX_TABLE_INDEX, 21702 0 + UNICODE_MAX_TABLE_INDEX, 21703 0 + UNICODE_MAX_TABLE_INDEX, 21704 0 + UNICODE_MAX_TABLE_INDEX, 21705 0 + UNICODE_MAX_TABLE_INDEX, 21706 0 + UNICODE_MAX_TABLE_INDEX, 21707 0 + UNICODE_MAX_TABLE_INDEX, 21708 0 + UNICODE_MAX_TABLE_INDEX, 21709 0 + UNICODE_MAX_TABLE_INDEX, 21710 0 + UNICODE_MAX_TABLE_INDEX, 21711 0 + UNICODE_MAX_TABLE_INDEX, 21712 0 + UNICODE_MAX_TABLE_INDEX, 21713 0 + UNICODE_MAX_TABLE_INDEX, 21714 0 + UNICODE_MAX_TABLE_INDEX, 21715 0 + UNICODE_MAX_TABLE_INDEX, 21716 0 + UNICODE_MAX_TABLE_INDEX, 21717 0 + UNICODE_MAX_TABLE_INDEX, 21718 0 + UNICODE_MAX_TABLE_INDEX, 21719 0 + UNICODE_MAX_TABLE_INDEX, 21720 0 + UNICODE_MAX_TABLE_INDEX, 21721 0 + UNICODE_MAX_TABLE_INDEX, 21722 0 + UNICODE_MAX_TABLE_INDEX, 21723 0 + UNICODE_MAX_TABLE_INDEX, 21724 0 + UNICODE_MAX_TABLE_INDEX, 21725 0 + UNICODE_MAX_TABLE_INDEX, 21726 0 + UNICODE_MAX_TABLE_INDEX, 21727 0 + UNICODE_MAX_TABLE_INDEX, 21728 0 + UNICODE_MAX_TABLE_INDEX, 21729 0 + UNICODE_MAX_TABLE_INDEX, 21730 0 + UNICODE_MAX_TABLE_INDEX, 21731 0 + UNICODE_MAX_TABLE_INDEX, 21732 0 + UNICODE_MAX_TABLE_INDEX, 21733 0 + UNICODE_MAX_TABLE_INDEX, 21734 0 + UNICODE_MAX_TABLE_INDEX, 21735 0 + UNICODE_MAX_TABLE_INDEX, 21736 0 + UNICODE_MAX_TABLE_INDEX, 21737 0 + UNICODE_MAX_TABLE_INDEX, 21738 0 + UNICODE_MAX_TABLE_INDEX, 21739 0 + UNICODE_MAX_TABLE_INDEX, 21740 0 + UNICODE_MAX_TABLE_INDEX, 21741 0 + UNICODE_MAX_TABLE_INDEX, 21742 0 + UNICODE_MAX_TABLE_INDEX, 21743 0 + UNICODE_MAX_TABLE_INDEX, 21744 0 + UNICODE_MAX_TABLE_INDEX, 21745 0 + UNICODE_MAX_TABLE_INDEX, 21746 0 + UNICODE_MAX_TABLE_INDEX, 21747 0 + UNICODE_MAX_TABLE_INDEX, 21748 0 + UNICODE_MAX_TABLE_INDEX, 21749 0 + UNICODE_MAX_TABLE_INDEX, 21750 0 + UNICODE_MAX_TABLE_INDEX, 21751 0 + UNICODE_MAX_TABLE_INDEX, 21752 0 + UNICODE_MAX_TABLE_INDEX, 21753 0 + UNICODE_MAX_TABLE_INDEX, 21754 0 + UNICODE_MAX_TABLE_INDEX, 21755 0 + UNICODE_MAX_TABLE_INDEX, 21756 0 + UNICODE_MAX_TABLE_INDEX, 21757 0 + UNICODE_MAX_TABLE_INDEX, 21758 0 + UNICODE_MAX_TABLE_INDEX, 21759 0 + UNICODE_MAX_TABLE_INDEX, 21760 0 + UNICODE_MAX_TABLE_INDEX, 21761 0 + UNICODE_MAX_TABLE_INDEX, 21762 0 + UNICODE_MAX_TABLE_INDEX, 21763 0 + UNICODE_MAX_TABLE_INDEX, 21764 0 + UNICODE_MAX_TABLE_INDEX, 21765 0 + UNICODE_MAX_TABLE_INDEX, 21766 0 + UNICODE_MAX_TABLE_INDEX, 21767 0 + UNICODE_MAX_TABLE_INDEX, 21768 0 + UNICODE_MAX_TABLE_INDEX, 21769 0 + UNICODE_MAX_TABLE_INDEX, 21770 0 + UNICODE_MAX_TABLE_INDEX, 21771 0 + UNICODE_MAX_TABLE_INDEX, 21772 0 + UNICODE_MAX_TABLE_INDEX, 21773 0 + UNICODE_MAX_TABLE_INDEX, 21774 0 + UNICODE_MAX_TABLE_INDEX, 21775 0 + UNICODE_MAX_TABLE_INDEX, 21776 0 + UNICODE_MAX_TABLE_INDEX, 21777 0 + UNICODE_MAX_TABLE_INDEX, 21778 0 + UNICODE_MAX_TABLE_INDEX, 21779 0 + UNICODE_MAX_TABLE_INDEX, 21780 0 + UNICODE_MAX_TABLE_INDEX, 21781 0 + UNICODE_MAX_TABLE_INDEX, 21782 0 + UNICODE_MAX_TABLE_INDEX, 21783 0 + UNICODE_MAX_TABLE_INDEX, 21784 0 + UNICODE_MAX_TABLE_INDEX, 21785 0 + UNICODE_MAX_TABLE_INDEX, 21786 0 + UNICODE_MAX_TABLE_INDEX, 21787 0 + UNICODE_MAX_TABLE_INDEX, 21788 0 + UNICODE_MAX_TABLE_INDEX, 21789 0 + UNICODE_MAX_TABLE_INDEX, 21790 0 + UNICODE_MAX_TABLE_INDEX, 21791 0 + UNICODE_MAX_TABLE_INDEX, 21792 0 + UNICODE_MAX_TABLE_INDEX, 21793 0 + UNICODE_MAX_TABLE_INDEX, 21794 0 + UNICODE_MAX_TABLE_INDEX, 21795 0 + UNICODE_MAX_TABLE_INDEX, 21796 0 + UNICODE_MAX_TABLE_INDEX, 21797 0 + UNICODE_MAX_TABLE_INDEX, 21798 0 + UNICODE_MAX_TABLE_INDEX, 21799 0 + UNICODE_MAX_TABLE_INDEX, 21800 0 + UNICODE_MAX_TABLE_INDEX, 21801 0 + UNICODE_MAX_TABLE_INDEX, 21802 0 + UNICODE_MAX_TABLE_INDEX, 21803 0 + UNICODE_MAX_TABLE_INDEX, 21804 0 + UNICODE_MAX_TABLE_INDEX, 21805 0 + UNICODE_MAX_TABLE_INDEX, 21806 0 + UNICODE_MAX_TABLE_INDEX, 21807 0 + UNICODE_MAX_TABLE_INDEX, 21808 0 + UNICODE_MAX_TABLE_INDEX, 21809 0 + UNICODE_MAX_TABLE_INDEX, 21810 0 + UNICODE_MAX_TABLE_INDEX, 21811 0 + UNICODE_MAX_TABLE_INDEX, 21812 0 + UNICODE_MAX_TABLE_INDEX, 21813 0 + UNICODE_MAX_TABLE_INDEX, 21814 0 + UNICODE_MAX_TABLE_INDEX, 21815 0 + UNICODE_MAX_TABLE_INDEX, 21816 0 + UNICODE_MAX_TABLE_INDEX, 21817 0 + UNICODE_MAX_TABLE_INDEX, 21818 0 + UNICODE_MAX_TABLE_INDEX, 21819 0 + UNICODE_MAX_TABLE_INDEX, 21820 0 + UNICODE_MAX_TABLE_INDEX, 21821 0 + UNICODE_MAX_TABLE_INDEX, 21822 0 + UNICODE_MAX_TABLE_INDEX, 21823 0 + UNICODE_MAX_TABLE_INDEX, 21824 0 + UNICODE_MAX_TABLE_INDEX, 21825 0 + UNICODE_MAX_TABLE_INDEX, 21826 0 + UNICODE_MAX_TABLE_INDEX, 21827 0 + UNICODE_MAX_TABLE_INDEX, 21828 0 + UNICODE_MAX_TABLE_INDEX, 21829 0 + UNICODE_MAX_TABLE_INDEX, 21830 0 + UNICODE_MAX_TABLE_INDEX, 21831 0 + UNICODE_MAX_TABLE_INDEX, 21832 0 + UNICODE_MAX_TABLE_INDEX, 21833 0 + UNICODE_MAX_TABLE_INDEX, 21834 0 + UNICODE_MAX_TABLE_INDEX, 21835 0 + UNICODE_MAX_TABLE_INDEX, 21836 0 + UNICODE_MAX_TABLE_INDEX, 21837 0 + UNICODE_MAX_TABLE_INDEX, 21838 0 + UNICODE_MAX_TABLE_INDEX, 21839 0 + UNICODE_MAX_TABLE_INDEX, 21840 0 + UNICODE_MAX_TABLE_INDEX, 21841 0 + UNICODE_MAX_TABLE_INDEX, 21842 0 + UNICODE_MAX_TABLE_INDEX, 21843 0 + UNICODE_MAX_TABLE_INDEX, 21844 0 + UNICODE_MAX_TABLE_INDEX, 21845 0 + UNICODE_MAX_TABLE_INDEX, 21846 0 + UNICODE_MAX_TABLE_INDEX, 21847 0 + UNICODE_MAX_TABLE_INDEX, 21848 0 + UNICODE_MAX_TABLE_INDEX, 21849 0 + UNICODE_MAX_TABLE_INDEX, 21850 0 + UNICODE_MAX_TABLE_INDEX, 21851 0 + UNICODE_MAX_TABLE_INDEX, 21852 0 + UNICODE_MAX_TABLE_INDEX, 21853 0 + UNICODE_MAX_TABLE_INDEX, 21854 0 + UNICODE_MAX_TABLE_INDEX, 21855 0 + UNICODE_MAX_TABLE_INDEX, 21856 0 + UNICODE_MAX_TABLE_INDEX, 21857 0 + UNICODE_MAX_TABLE_INDEX, 21858 0 + UNICODE_MAX_TABLE_INDEX, 21859 0 + UNICODE_MAX_TABLE_INDEX, 21860 0 + UNICODE_MAX_TABLE_INDEX, 21861 0 + UNICODE_MAX_TABLE_INDEX, 21862 0 + UNICODE_MAX_TABLE_INDEX, 21863 0 + UNICODE_MAX_TABLE_INDEX, 21864 0 + UNICODE_MAX_TABLE_INDEX, 21865 0 + UNICODE_MAX_TABLE_INDEX, 21866 0 + UNICODE_MAX_TABLE_INDEX, 21867 0 + UNICODE_MAX_TABLE_INDEX, 21868 0 + UNICODE_MAX_TABLE_INDEX, 21869 0 + UNICODE_MAX_TABLE_INDEX, 21870 0 + UNICODE_MAX_TABLE_INDEX, 21871 0 + UNICODE_MAX_TABLE_INDEX, 21872 0 + UNICODE_MAX_TABLE_INDEX, 21873 0 + UNICODE_MAX_TABLE_INDEX, 21874 0 + UNICODE_MAX_TABLE_INDEX, 21875 0 + UNICODE_MAX_TABLE_INDEX, 21876 0 + UNICODE_MAX_TABLE_INDEX, 21877 0 + UNICODE_MAX_TABLE_INDEX, 21878 0 + UNICODE_MAX_TABLE_INDEX, 21879 0 + UNICODE_MAX_TABLE_INDEX, 21880 0 + UNICODE_MAX_TABLE_INDEX, 21881 0 + UNICODE_MAX_TABLE_INDEX, 21882 0 + UNICODE_MAX_TABLE_INDEX, 21883 0 + UNICODE_MAX_TABLE_INDEX, 21884 0 + UNICODE_MAX_TABLE_INDEX, 21885 0 + UNICODE_MAX_TABLE_INDEX, 21886 0 + UNICODE_MAX_TABLE_INDEX, 21887 0 + UNICODE_MAX_TABLE_INDEX, 21888 0 + UNICODE_MAX_TABLE_INDEX, 21889 0 + UNICODE_MAX_TABLE_INDEX, 21890 0 + UNICODE_MAX_TABLE_INDEX, 21891 0 + UNICODE_MAX_TABLE_INDEX, 21892 0 + UNICODE_MAX_TABLE_INDEX, 21893 0 + UNICODE_MAX_TABLE_INDEX, 21894 0 + UNICODE_MAX_TABLE_INDEX, 21895 0 + UNICODE_MAX_TABLE_INDEX, 21896 0 + UNICODE_MAX_TABLE_INDEX, 21897 0 + UNICODE_MAX_TABLE_INDEX, 21898 0 + UNICODE_MAX_TABLE_INDEX, 21899 0 + UNICODE_MAX_TABLE_INDEX, 21900 0 + UNICODE_MAX_TABLE_INDEX, 21901 0 + UNICODE_MAX_TABLE_INDEX, 21902 0 + UNICODE_MAX_TABLE_INDEX, 21903 0 + UNICODE_MAX_TABLE_INDEX, 21904 0 + UNICODE_MAX_TABLE_INDEX, 21905 0 + UNICODE_MAX_TABLE_INDEX, 21906 0 + UNICODE_MAX_TABLE_INDEX, 21907 0 + UNICODE_MAX_TABLE_INDEX, 21908 0 + UNICODE_MAX_TABLE_INDEX, 21909 0 + UNICODE_MAX_TABLE_INDEX, 21910 0 + UNICODE_MAX_TABLE_INDEX, 21911 0 + UNICODE_MAX_TABLE_INDEX, 21912 0 + UNICODE_MAX_TABLE_INDEX, 21913 0 + UNICODE_MAX_TABLE_INDEX, 21914 0 + UNICODE_MAX_TABLE_INDEX, 21915 0 + UNICODE_MAX_TABLE_INDEX, 21916 0 + UNICODE_MAX_TABLE_INDEX, 21917 0 + UNICODE_MAX_TABLE_INDEX, 21918 0 + UNICODE_MAX_TABLE_INDEX, 21919 0 + UNICODE_MAX_TABLE_INDEX, 21920 0 + UNICODE_MAX_TABLE_INDEX, 21921 0 + UNICODE_MAX_TABLE_INDEX, 21922 0 + UNICODE_MAX_TABLE_INDEX, 21923 0 + UNICODE_MAX_TABLE_INDEX, 21924 0 + UNICODE_MAX_TABLE_INDEX, 21925 0 + UNICODE_MAX_TABLE_INDEX, 21926 0 + UNICODE_MAX_TABLE_INDEX, 21927 0 + UNICODE_MAX_TABLE_INDEX, 21928 0 + UNICODE_MAX_TABLE_INDEX, 21929 0 + UNICODE_MAX_TABLE_INDEX, 21930 0 + UNICODE_MAX_TABLE_INDEX, 21931 0 + UNICODE_MAX_TABLE_INDEX, 21932 0 + UNICODE_MAX_TABLE_INDEX, 21933 0 + UNICODE_MAX_TABLE_INDEX, 21934 0 + UNICODE_MAX_TABLE_INDEX, 21935 0 + UNICODE_MAX_TABLE_INDEX, 21936 0 + UNICODE_MAX_TABLE_INDEX, 21937 0 + UNICODE_MAX_TABLE_INDEX, 21938 0 + UNICODE_MAX_TABLE_INDEX, 21939 0 + UNICODE_MAX_TABLE_INDEX, 21940 0 + UNICODE_MAX_TABLE_INDEX, 21941 0 + UNICODE_MAX_TABLE_INDEX, 21942 0 + UNICODE_MAX_TABLE_INDEX, 21943 0 + UNICODE_MAX_TABLE_INDEX, 21944 0 + UNICODE_MAX_TABLE_INDEX, 21945 0 + UNICODE_MAX_TABLE_INDEX, 21946 0 + UNICODE_MAX_TABLE_INDEX, 21947 0 + UNICODE_MAX_TABLE_INDEX, 21948 0 + UNICODE_MAX_TABLE_INDEX, 21949 0 + UNICODE_MAX_TABLE_INDEX, 21950 0 + UNICODE_MAX_TABLE_INDEX, 21951 0 + UNICODE_MAX_TABLE_INDEX, 21952 0 + UNICODE_MAX_TABLE_INDEX, 21953 0 + UNICODE_MAX_TABLE_INDEX, 21954 0 + UNICODE_MAX_TABLE_INDEX, 21955 0 + UNICODE_MAX_TABLE_INDEX, 21956 0 + UNICODE_MAX_TABLE_INDEX, 21957 0 + UNICODE_MAX_TABLE_INDEX, 21958 0 + UNICODE_MAX_TABLE_INDEX, 21959 0 + UNICODE_MAX_TABLE_INDEX, 21960 0 + UNICODE_MAX_TABLE_INDEX, 21961 0 + UNICODE_MAX_TABLE_INDEX, 21962 0 + UNICODE_MAX_TABLE_INDEX, 21963 0 + UNICODE_MAX_TABLE_INDEX, 21964 0 + UNICODE_MAX_TABLE_INDEX, 21965 0 + UNICODE_MAX_TABLE_INDEX, 21966 0 + UNICODE_MAX_TABLE_INDEX, 21967 0 + UNICODE_MAX_TABLE_INDEX, 21968 0 + UNICODE_MAX_TABLE_INDEX, 21969 0 + UNICODE_MAX_TABLE_INDEX, 21970 0 + UNICODE_MAX_TABLE_INDEX, 21971 0 + UNICODE_MAX_TABLE_INDEX, 21972 0 + UNICODE_MAX_TABLE_INDEX, 21973 0 + UNICODE_MAX_TABLE_INDEX, 21974 0 + UNICODE_MAX_TABLE_INDEX, 21975 0 + UNICODE_MAX_TABLE_INDEX, 21976 0 + UNICODE_MAX_TABLE_INDEX, 21977 0 + UNICODE_MAX_TABLE_INDEX, 21978 0 + UNICODE_MAX_TABLE_INDEX, 21979 0 + UNICODE_MAX_TABLE_INDEX, 21980 0 + UNICODE_MAX_TABLE_INDEX, 21981 0 + UNICODE_MAX_TABLE_INDEX, 21982 0 + UNICODE_MAX_TABLE_INDEX, 21983 0 + UNICODE_MAX_TABLE_INDEX, 21984 0 + UNICODE_MAX_TABLE_INDEX, 21985 0 + UNICODE_MAX_TABLE_INDEX, 21986 0 + UNICODE_MAX_TABLE_INDEX, 21987 0 + UNICODE_MAX_TABLE_INDEX, 21988 0 + UNICODE_MAX_TABLE_INDEX, 21989 0 + UNICODE_MAX_TABLE_INDEX, 21990 0 + UNICODE_MAX_TABLE_INDEX, 21991 0 + UNICODE_MAX_TABLE_INDEX, 21992 0 + UNICODE_MAX_TABLE_INDEX, 21993 0 + UNICODE_MAX_TABLE_INDEX, 21994 0 + UNICODE_MAX_TABLE_INDEX, 21995 0 + UNICODE_MAX_TABLE_INDEX, 21996 0 + UNICODE_MAX_TABLE_INDEX, 21997 0 + UNICODE_MAX_TABLE_INDEX, 21998 0 + UNICODE_MAX_TABLE_INDEX, 21999 0 + UNICODE_MAX_TABLE_INDEX, 22000 0 + UNICODE_MAX_TABLE_INDEX, 22001 0 + UNICODE_MAX_TABLE_INDEX, 22002 0 + UNICODE_MAX_TABLE_INDEX, 22003 0 + UNICODE_MAX_TABLE_INDEX, 22004 0 + UNICODE_MAX_TABLE_INDEX, 22005 0 + UNICODE_MAX_TABLE_INDEX, 22006 0 + UNICODE_MAX_TABLE_INDEX, 22007 0 + UNICODE_MAX_TABLE_INDEX, 22008 0 + UNICODE_MAX_TABLE_INDEX, 22009 0 + UNICODE_MAX_TABLE_INDEX, 22010 0 + UNICODE_MAX_TABLE_INDEX, 22011 0 + UNICODE_MAX_TABLE_INDEX, 22012 0 + UNICODE_MAX_TABLE_INDEX, 22013 0 + UNICODE_MAX_TABLE_INDEX, 22014 0 + UNICODE_MAX_TABLE_INDEX, 22015 0 + UNICODE_MAX_TABLE_INDEX, 22016 0 + UNICODE_MAX_TABLE_INDEX, 22017 0 + UNICODE_MAX_TABLE_INDEX, 22018 0 + UNICODE_MAX_TABLE_INDEX, 22019 0 + UNICODE_MAX_TABLE_INDEX, 22020 0 + UNICODE_MAX_TABLE_INDEX, 22021 0 + UNICODE_MAX_TABLE_INDEX, 22022 0 + UNICODE_MAX_TABLE_INDEX, 22023 0 + UNICODE_MAX_TABLE_INDEX, 22024 0 + UNICODE_MAX_TABLE_INDEX, 22025 0 + UNICODE_MAX_TABLE_INDEX, 22026 0 + UNICODE_MAX_TABLE_INDEX, 22027 0 + UNICODE_MAX_TABLE_INDEX, 22028 0 + UNICODE_MAX_TABLE_INDEX, 22029 0 + UNICODE_MAX_TABLE_INDEX, 22030 0 + UNICODE_MAX_TABLE_INDEX, 22031 0 + UNICODE_MAX_TABLE_INDEX, 22032 0 + UNICODE_MAX_TABLE_INDEX, 22033 0 + UNICODE_MAX_TABLE_INDEX, 22034 0 + UNICODE_MAX_TABLE_INDEX, 22035 0 + UNICODE_MAX_TABLE_INDEX, 22036 0 + UNICODE_MAX_TABLE_INDEX, 22037 0 + UNICODE_MAX_TABLE_INDEX, 22038 0 + UNICODE_MAX_TABLE_INDEX, 22039 0 + UNICODE_MAX_TABLE_INDEX, 22040 0 + UNICODE_MAX_TABLE_INDEX, 22041 0 + UNICODE_MAX_TABLE_INDEX, 22042 0 + UNICODE_MAX_TABLE_INDEX, 22043 0 + UNICODE_MAX_TABLE_INDEX, 22044 0 + UNICODE_MAX_TABLE_INDEX, 22045 0 + UNICODE_MAX_TABLE_INDEX, 22046 0 + UNICODE_MAX_TABLE_INDEX, 22047 0 + UNICODE_MAX_TABLE_INDEX, 22048 0 + UNICODE_MAX_TABLE_INDEX, 22049 0 + UNICODE_MAX_TABLE_INDEX, 22050 0 + UNICODE_MAX_TABLE_INDEX, 22051 0 + UNICODE_MAX_TABLE_INDEX, 22052 0 + UNICODE_MAX_TABLE_INDEX, 22053 0 + UNICODE_MAX_TABLE_INDEX, 22054 0 + UNICODE_MAX_TABLE_INDEX, 22055 0 + UNICODE_MAX_TABLE_INDEX, 22056 0 + UNICODE_MAX_TABLE_INDEX, 22057 0 + UNICODE_MAX_TABLE_INDEX, 22058 0 + UNICODE_MAX_TABLE_INDEX, 22059 0 + UNICODE_MAX_TABLE_INDEX, 22060 0 + UNICODE_MAX_TABLE_INDEX, 22061 0 + UNICODE_MAX_TABLE_INDEX, 22062 0 + UNICODE_MAX_TABLE_INDEX, 22063 0 + UNICODE_MAX_TABLE_INDEX, 22064 0 + UNICODE_MAX_TABLE_INDEX, 22065 0 + UNICODE_MAX_TABLE_INDEX, 22066 0 + UNICODE_MAX_TABLE_INDEX, 22067 0 + UNICODE_MAX_TABLE_INDEX, 22068 0 + UNICODE_MAX_TABLE_INDEX, 22069 0 + UNICODE_MAX_TABLE_INDEX, 22070 0 + UNICODE_MAX_TABLE_INDEX, 22071 0 + UNICODE_MAX_TABLE_INDEX, 22072 0 + UNICODE_MAX_TABLE_INDEX, 22073 0 + UNICODE_MAX_TABLE_INDEX, 22074 0 + UNICODE_MAX_TABLE_INDEX, 22075 0 + UNICODE_MAX_TABLE_INDEX, 22076 0 + UNICODE_MAX_TABLE_INDEX, 22077 0 + UNICODE_MAX_TABLE_INDEX, 22078 0 + UNICODE_MAX_TABLE_INDEX, 22079 0 + UNICODE_MAX_TABLE_INDEX, 22080 0 + UNICODE_MAX_TABLE_INDEX, 22081 0 + UNICODE_MAX_TABLE_INDEX, 22082 0 + UNICODE_MAX_TABLE_INDEX, 22083 0 + UNICODE_MAX_TABLE_INDEX, 22084 0 + UNICODE_MAX_TABLE_INDEX, 22085 0 + UNICODE_MAX_TABLE_INDEX, 22086 0 + UNICODE_MAX_TABLE_INDEX, 22087 0 + UNICODE_MAX_TABLE_INDEX, 22088 0 + UNICODE_MAX_TABLE_INDEX, 22089 0 + UNICODE_MAX_TABLE_INDEX, 22090 0 + UNICODE_MAX_TABLE_INDEX, 22091 0 + UNICODE_MAX_TABLE_INDEX, 22092 0 + UNICODE_MAX_TABLE_INDEX, 22093 0 + UNICODE_MAX_TABLE_INDEX, 22094 0 + UNICODE_MAX_TABLE_INDEX, 22095 0 + UNICODE_MAX_TABLE_INDEX, 22096 0 + UNICODE_MAX_TABLE_INDEX, 22097 0 + UNICODE_MAX_TABLE_INDEX, 22098 0 + UNICODE_MAX_TABLE_INDEX, 22099 0 + UNICODE_MAX_TABLE_INDEX, 22100 0 + UNICODE_MAX_TABLE_INDEX, 22101 0 + UNICODE_MAX_TABLE_INDEX, 22102 0 + UNICODE_MAX_TABLE_INDEX, 22103 0 + UNICODE_MAX_TABLE_INDEX, 22104 0 + UNICODE_MAX_TABLE_INDEX, 22105 0 + UNICODE_MAX_TABLE_INDEX, 22106 0 + UNICODE_MAX_TABLE_INDEX, 22107 0 + UNICODE_MAX_TABLE_INDEX, 22108 0 + UNICODE_MAX_TABLE_INDEX, 22109 0 + UNICODE_MAX_TABLE_INDEX, 22110 0 + UNICODE_MAX_TABLE_INDEX, 22111 0 + UNICODE_MAX_TABLE_INDEX, 22112 0 + UNICODE_MAX_TABLE_INDEX, 22113 0 + UNICODE_MAX_TABLE_INDEX, 22114 0 + UNICODE_MAX_TABLE_INDEX, 22115 0 + UNICODE_MAX_TABLE_INDEX, 22116 0 + UNICODE_MAX_TABLE_INDEX, 22117 0 + UNICODE_MAX_TABLE_INDEX, 22118 0 + UNICODE_MAX_TABLE_INDEX, 22119 0 + UNICODE_MAX_TABLE_INDEX, 22120 0 + UNICODE_MAX_TABLE_INDEX, 22121 0 + UNICODE_MAX_TABLE_INDEX, 22122 0 + UNICODE_MAX_TABLE_INDEX, 22123 0 + UNICODE_MAX_TABLE_INDEX, 22124 0 + UNICODE_MAX_TABLE_INDEX, 22125 0 + UNICODE_MAX_TABLE_INDEX, 22126 0 + UNICODE_MAX_TABLE_INDEX, 22127 0 + UNICODE_MAX_TABLE_INDEX, 22128 0 + UNICODE_MAX_TABLE_INDEX, 22129 0 + UNICODE_MAX_TABLE_INDEX, 22130 0 + UNICODE_MAX_TABLE_INDEX, 22131 0 + UNICODE_MAX_TABLE_INDEX, 22132 0 + UNICODE_MAX_TABLE_INDEX, 22133 0 + UNICODE_MAX_TABLE_INDEX, 22134 0 + UNICODE_MAX_TABLE_INDEX, 22135 0 + UNICODE_MAX_TABLE_INDEX, 22136 0 + UNICODE_MAX_TABLE_INDEX, 22137 0 + UNICODE_MAX_TABLE_INDEX, 22138 0 + UNICODE_MAX_TABLE_INDEX, 22139 0 + UNICODE_MAX_TABLE_INDEX, 22140 0 + UNICODE_MAX_TABLE_INDEX, 22141 0 + UNICODE_MAX_TABLE_INDEX, 22142 0 + UNICODE_MAX_TABLE_INDEX, 22143 0 + UNICODE_MAX_TABLE_INDEX, 22144 0 + UNICODE_MAX_TABLE_INDEX, 22145 0 + UNICODE_MAX_TABLE_INDEX, 22146 0 + UNICODE_MAX_TABLE_INDEX, 22147 0 + UNICODE_MAX_TABLE_INDEX, 22148 0 + UNICODE_MAX_TABLE_INDEX, 22149 0 + UNICODE_MAX_TABLE_INDEX, 22150 0 + UNICODE_MAX_TABLE_INDEX, 22151 0 + UNICODE_MAX_TABLE_INDEX, 22152 0 + UNICODE_MAX_TABLE_INDEX, 22153 0 + UNICODE_MAX_TABLE_INDEX, 22154 0 + UNICODE_MAX_TABLE_INDEX, 22155 0 + UNICODE_MAX_TABLE_INDEX, 22156 0 + UNICODE_MAX_TABLE_INDEX, 22157 0 + UNICODE_MAX_TABLE_INDEX, 22158 0 + UNICODE_MAX_TABLE_INDEX, 22159 0 + UNICODE_MAX_TABLE_INDEX, 22160 0 + UNICODE_MAX_TABLE_INDEX, 22161 0 + UNICODE_MAX_TABLE_INDEX, 22162 0 + UNICODE_MAX_TABLE_INDEX, 22163 0 + UNICODE_MAX_TABLE_INDEX, 22164 0 + UNICODE_MAX_TABLE_INDEX, 22165 0 + UNICODE_MAX_TABLE_INDEX, 22166 0 + UNICODE_MAX_TABLE_INDEX, 22167 0 + UNICODE_MAX_TABLE_INDEX, 22168 0 + UNICODE_MAX_TABLE_INDEX, 22169 0 + UNICODE_MAX_TABLE_INDEX, 22170 0 + UNICODE_MAX_TABLE_INDEX, 22171 0 + UNICODE_MAX_TABLE_INDEX, 22172 0 + UNICODE_MAX_TABLE_INDEX, 22173 0 + UNICODE_MAX_TABLE_INDEX, 22174 0 + UNICODE_MAX_TABLE_INDEX, 22175 0 + UNICODE_MAX_TABLE_INDEX, 22176 0 + UNICODE_MAX_TABLE_INDEX, 22177 0 + UNICODE_MAX_TABLE_INDEX, 22178 0 + UNICODE_MAX_TABLE_INDEX, 22179 0 + UNICODE_MAX_TABLE_INDEX, 22180 0 + UNICODE_MAX_TABLE_INDEX, 22181 0 + UNICODE_MAX_TABLE_INDEX, 22182 0 + UNICODE_MAX_TABLE_INDEX, 22183 0 + UNICODE_MAX_TABLE_INDEX, 22184 0 + UNICODE_MAX_TABLE_INDEX, 22185 0 + UNICODE_MAX_TABLE_INDEX, 22186 0 + UNICODE_MAX_TABLE_INDEX, 22187 0 + UNICODE_MAX_TABLE_INDEX, 22188 0 + UNICODE_MAX_TABLE_INDEX, 22189 0 + UNICODE_MAX_TABLE_INDEX, 22190 0 + UNICODE_MAX_TABLE_INDEX, 22191 0 + UNICODE_MAX_TABLE_INDEX, 22192 0 + UNICODE_MAX_TABLE_INDEX, 22193 0 + UNICODE_MAX_TABLE_INDEX, 22194 0 + UNICODE_MAX_TABLE_INDEX, 22195 0 + UNICODE_MAX_TABLE_INDEX, 22196 0 + UNICODE_MAX_TABLE_INDEX, 22197 0 + UNICODE_MAX_TABLE_INDEX, 22198 0 + UNICODE_MAX_TABLE_INDEX, 22199 0 + UNICODE_MAX_TABLE_INDEX, 22200 0 + UNICODE_MAX_TABLE_INDEX, 22201 0 + UNICODE_MAX_TABLE_INDEX, 22202 0 + UNICODE_MAX_TABLE_INDEX, 22203 0 + UNICODE_MAX_TABLE_INDEX, 22204 0 + UNICODE_MAX_TABLE_INDEX, 22205 0 + UNICODE_MAX_TABLE_INDEX, 22206 0 + UNICODE_MAX_TABLE_INDEX, 22207 0 + UNICODE_MAX_TABLE_INDEX, 22208 0 + UNICODE_MAX_TABLE_INDEX, 22209 0 + UNICODE_MAX_TABLE_INDEX, 22210 0 + UNICODE_MAX_TABLE_INDEX, 22211 0 + UNICODE_MAX_TABLE_INDEX, 22212 0 + UNICODE_MAX_TABLE_INDEX, 22213 0 + UNICODE_MAX_TABLE_INDEX, 22214 0 + UNICODE_MAX_TABLE_INDEX, 22215 0 + UNICODE_MAX_TABLE_INDEX, 22216 0 + UNICODE_MAX_TABLE_INDEX, 22217 0 + UNICODE_MAX_TABLE_INDEX, 22218 0 + UNICODE_MAX_TABLE_INDEX, 22219 0 + UNICODE_MAX_TABLE_INDEX, 22220 0 + UNICODE_MAX_TABLE_INDEX, 22221 0 + UNICODE_MAX_TABLE_INDEX, 22222 0 + UNICODE_MAX_TABLE_INDEX, 22223 0 + UNICODE_MAX_TABLE_INDEX, 22224 0 + UNICODE_MAX_TABLE_INDEX, 22225 0 + UNICODE_MAX_TABLE_INDEX, 22226 0 + UNICODE_MAX_TABLE_INDEX, 22227 0 + UNICODE_MAX_TABLE_INDEX, 22228 0 + UNICODE_MAX_TABLE_INDEX, 22229 0 + UNICODE_MAX_TABLE_INDEX, 22230 0 + UNICODE_MAX_TABLE_INDEX, 22231 0 + UNICODE_MAX_TABLE_INDEX, 22232 0 + UNICODE_MAX_TABLE_INDEX, 22233 0 + UNICODE_MAX_TABLE_INDEX, 22234 0 + UNICODE_MAX_TABLE_INDEX, 22235 0 + UNICODE_MAX_TABLE_INDEX, 22236 0 + UNICODE_MAX_TABLE_INDEX, 22237 0 + UNICODE_MAX_TABLE_INDEX, 22238 0 + UNICODE_MAX_TABLE_INDEX, 22239 0 + UNICODE_MAX_TABLE_INDEX, 22240 0 + UNICODE_MAX_TABLE_INDEX, 22241 0 + UNICODE_MAX_TABLE_INDEX, 22242 0 + UNICODE_MAX_TABLE_INDEX, 22243 0 + UNICODE_MAX_TABLE_INDEX, 22244 0 + UNICODE_MAX_TABLE_INDEX, 22245 0 + UNICODE_MAX_TABLE_INDEX, 22246 0 + UNICODE_MAX_TABLE_INDEX, 22247 0 + UNICODE_MAX_TABLE_INDEX, 22248 0 + UNICODE_MAX_TABLE_INDEX, 22249 0 + UNICODE_MAX_TABLE_INDEX, 22250 0 + UNICODE_MAX_TABLE_INDEX, 22251 0 + UNICODE_MAX_TABLE_INDEX, 22252 0 + UNICODE_MAX_TABLE_INDEX, 22253 0 + UNICODE_MAX_TABLE_INDEX, 22254 0 + UNICODE_MAX_TABLE_INDEX, 22255 0 + UNICODE_MAX_TABLE_INDEX, 22256 0 + UNICODE_MAX_TABLE_INDEX, 22257 0 + UNICODE_MAX_TABLE_INDEX, 22258 0 + UNICODE_MAX_TABLE_INDEX, 22259 0 + UNICODE_MAX_TABLE_INDEX, 22260 0 + UNICODE_MAX_TABLE_INDEX, 22261 0 + UNICODE_MAX_TABLE_INDEX, 22262 0 + UNICODE_MAX_TABLE_INDEX, 22263 0 + UNICODE_MAX_TABLE_INDEX, 22264 0 + UNICODE_MAX_TABLE_INDEX, 22265 0 + UNICODE_MAX_TABLE_INDEX, 22266 0 + UNICODE_MAX_TABLE_INDEX 22267 }; 22268 22269 #define ATTR_TABLE(Page) (((Page) <= UNICODE_LAST_PAGE_PART1) \ 22270 ? attr_table_part1[Page] \ 22271 : attr_table_part2[(Page) - 0xe00]) 22272 22273 #define ATTTABLE(Page, Char) \ 22274 ((ATTR_TABLE(Page) == UNICODE_MAX_TABLE_INDEX) ? 0 : (attr_data[ATTR_TABLE(Page)][Char])) 22275 22276 #define TTYPE_PART1(Page, Char) \ 22277 ((type_table_part1[Page] >= UNICODE_MAX_TABLE_INDEX) \ 22278 ? (type_table_part1[Page] - UNICODE_MAX_TABLE_INDEX) \ 22279 : (type_data[type_table_part1[Page]][Char])) 22280 22281 #define TTYPE_PART2(Page, Char) \ 22282 ((type_table_part2[Page] >= UNICODE_MAX_TABLE_INDEX) \ 22283 ? (type_table_part2[Page] - UNICODE_MAX_TABLE_INDEX) \ 22284 : (type_data[type_table_part2[Page]][Char])) 22285 22286 #define RUNETYPE(rn) \ 22287 (((rn) <= UNICODE_LAST_CHAR_PART1) \ 22288 ? TTYPE_PART1 ((rn) >> 8, (rn) & 0xff) \ 22289 : (((rn) >= 0xe0000 && (rn) <= runeMax) \ 22290 ? TTYPE_PART2 (((rn) - 0xe0000) >> 8, (rn) & 0xff) \ 22291 : UNICODE_UNASSIGNED)) 22292 22293 #define IS(Type, Class) (((uint32_t)1 << (Type)) & (Class)) 22294 #define OR(Type, Rest) (((uint32_t)1 << (Type)) | (Rest)) 22295 22296 #define ISMARK(Type) IS((Type),\ 22297 OR(UNICODE_NON_SPACING_MARK,\ 22298 OR(UNICODE_SPACING_MARK,\ 22299 OR(UNICODE_ENCLOSING_MARK, 0)))) 22300 22301 #define ISALPHA(Type) IS((Type),\ 22302 OR(UNICODE_LOWERCASE_LETTER,\ 22303 OR(UNICODE_UPPERCASE_LETTER,\ 22304 OR(UNICODE_TITLECASE_LETTER,\ 22305 OR(UNICODE_MODIFIER_LETTER,\ 22306 OR(UNICODE_OTHER_LETTER, 0)))))) 22307 22308 #define RUNE_MAX_DECOMPOSITION_LENGTH 18 /* codepoints */ 22309 22310 #define CC_PART1(Page, Char) \ 22311 ((combining_class_table_part1[Page] >= UNICODE_MAX_TABLE_INDEX) \ 22312 ? (combining_class_table_part1[Page] - UNICODE_MAX_TABLE_INDEX) \ 22313 : (cclass_data[combining_class_table_part1[Page]][Char])) 22314 22315 #define CC_PART2(Page, Char) \ 22316 ((combining_class_table_part2[Page] >= UNICODE_MAX_TABLE_INDEX) \ 22317 ? (combining_class_table_part2[Page] - UNICODE_MAX_TABLE_INDEX) \ 22318 : (cclass_data[combining_class_table_part2[Page]][Char])) 22319 22320 #define COMBINING_CLASS(Char) \ 22321 (((Char) <= UNICODE_LAST_CHAR_PART1) \ 22322 ? CC_PART1 ((Char) >> 8, (Char) & 0xff) \ 22323 : (((Char) >= 0xe0000 && (Char) <= runeMax) \ 22324 ? CC_PART2 (((Char) - 0xe0000) >> 8, (Char) & 0xff) \ 22325 : 0)) 22326 22327 typedef struct { rune ch; uint16_t canon_offset; uint16_t compat_offset;} decomposition; 22328 22329 static const decomposition decomp_table[] = 22330 { 22331 { 0x00a0, UNICODE_NOT_PRESENT_OFFSET, 0 }, 22332 { 0x00a8, UNICODE_NOT_PRESENT_OFFSET, 2 }, 22333 { 0x00aa, UNICODE_NOT_PRESENT_OFFSET, 6 }, 22334 { 0x00af, UNICODE_NOT_PRESENT_OFFSET, 8 }, 22335 { 0x00b2, UNICODE_NOT_PRESENT_OFFSET, 12 }, 22336 { 0x00b3, UNICODE_NOT_PRESENT_OFFSET, 14 }, 22337 { 0x00b4, UNICODE_NOT_PRESENT_OFFSET, 16 }, 22338 { 0x00b5, UNICODE_NOT_PRESENT_OFFSET, 20 }, 22339 { 0x00b8, UNICODE_NOT_PRESENT_OFFSET, 23 }, 22340 { 0x00b9, UNICODE_NOT_PRESENT_OFFSET, 27 }, 22341 { 0x00ba, UNICODE_NOT_PRESENT_OFFSET, 29 }, 22342 { 0x00bc, UNICODE_NOT_PRESENT_OFFSET, 31 }, 22343 { 0x00bd, UNICODE_NOT_PRESENT_OFFSET, 37 }, 22344 { 0x00be, UNICODE_NOT_PRESENT_OFFSET, 43 }, 22345 { 0x00c0, 49, UNICODE_NOT_PRESENT_OFFSET }, 22346 { 0x00c1, 53, UNICODE_NOT_PRESENT_OFFSET }, 22347 { 0x00c2, 57, UNICODE_NOT_PRESENT_OFFSET }, 22348 { 0x00c3, 61, UNICODE_NOT_PRESENT_OFFSET }, 22349 { 0x00c4, 65, UNICODE_NOT_PRESENT_OFFSET }, 22350 { 0x00c5, 69, UNICODE_NOT_PRESENT_OFFSET }, 22351 { 0x00c7, 73, UNICODE_NOT_PRESENT_OFFSET }, 22352 { 0x00c8, 77, UNICODE_NOT_PRESENT_OFFSET }, 22353 { 0x00c9, 81, UNICODE_NOT_PRESENT_OFFSET }, 22354 { 0x00ca, 85, UNICODE_NOT_PRESENT_OFFSET }, 22355 { 0x00cb, 89, UNICODE_NOT_PRESENT_OFFSET }, 22356 { 0x00cc, 93, UNICODE_NOT_PRESENT_OFFSET }, 22357 { 0x00cd, 97, UNICODE_NOT_PRESENT_OFFSET }, 22358 { 0x00ce, 101, UNICODE_NOT_PRESENT_OFFSET }, 22359 { 0x00cf, 105, UNICODE_NOT_PRESENT_OFFSET }, 22360 { 0x00d1, 109, UNICODE_NOT_PRESENT_OFFSET }, 22361 { 0x00d2, 113, UNICODE_NOT_PRESENT_OFFSET }, 22362 { 0x00d3, 117, UNICODE_NOT_PRESENT_OFFSET }, 22363 { 0x00d4, 121, UNICODE_NOT_PRESENT_OFFSET }, 22364 { 0x00d5, 125, UNICODE_NOT_PRESENT_OFFSET }, 22365 { 0x00d6, 129, UNICODE_NOT_PRESENT_OFFSET }, 22366 { 0x00d9, 133, UNICODE_NOT_PRESENT_OFFSET }, 22367 { 0x00da, 137, UNICODE_NOT_PRESENT_OFFSET }, 22368 { 0x00db, 141, UNICODE_NOT_PRESENT_OFFSET }, 22369 { 0x00dc, 145, UNICODE_NOT_PRESENT_OFFSET }, 22370 { 0x00dd, 149, UNICODE_NOT_PRESENT_OFFSET }, 22371 { 0x00e0, 153, UNICODE_NOT_PRESENT_OFFSET }, 22372 { 0x00e1, 157, UNICODE_NOT_PRESENT_OFFSET }, 22373 { 0x00e2, 161, UNICODE_NOT_PRESENT_OFFSET }, 22374 { 0x00e3, 165, UNICODE_NOT_PRESENT_OFFSET }, 22375 { 0x00e4, 169, UNICODE_NOT_PRESENT_OFFSET }, 22376 { 0x00e5, 173, UNICODE_NOT_PRESENT_OFFSET }, 22377 { 0x00e7, 177, UNICODE_NOT_PRESENT_OFFSET }, 22378 { 0x00e8, 181, UNICODE_NOT_PRESENT_OFFSET }, 22379 { 0x00e9, 185, UNICODE_NOT_PRESENT_OFFSET }, 22380 { 0x00ea, 189, UNICODE_NOT_PRESENT_OFFSET }, 22381 { 0x00eb, 193, UNICODE_NOT_PRESENT_OFFSET }, 22382 { 0x00ec, 197, UNICODE_NOT_PRESENT_OFFSET }, 22383 { 0x00ed, 201, UNICODE_NOT_PRESENT_OFFSET }, 22384 { 0x00ee, 205, UNICODE_NOT_PRESENT_OFFSET }, 22385 { 0x00ef, 209, UNICODE_NOT_PRESENT_OFFSET }, 22386 { 0x00f1, 213, UNICODE_NOT_PRESENT_OFFSET }, 22387 { 0x00f2, 217, UNICODE_NOT_PRESENT_OFFSET }, 22388 { 0x00f3, 221, UNICODE_NOT_PRESENT_OFFSET }, 22389 { 0x00f4, 225, UNICODE_NOT_PRESENT_OFFSET }, 22390 { 0x00f5, 229, UNICODE_NOT_PRESENT_OFFSET }, 22391 { 0x00f6, 233, UNICODE_NOT_PRESENT_OFFSET }, 22392 { 0x00f9, 237, UNICODE_NOT_PRESENT_OFFSET }, 22393 { 0x00fa, 241, UNICODE_NOT_PRESENT_OFFSET }, 22394 { 0x00fb, 245, UNICODE_NOT_PRESENT_OFFSET }, 22395 { 0x00fc, 249, UNICODE_NOT_PRESENT_OFFSET }, 22396 { 0x00fd, 253, UNICODE_NOT_PRESENT_OFFSET }, 22397 { 0x00ff, 257, UNICODE_NOT_PRESENT_OFFSET }, 22398 { 0x0100, 261, UNICODE_NOT_PRESENT_OFFSET }, 22399 { 0x0101, 265, UNICODE_NOT_PRESENT_OFFSET }, 22400 { 0x0102, 269, UNICODE_NOT_PRESENT_OFFSET }, 22401 { 0x0103, 273, UNICODE_NOT_PRESENT_OFFSET }, 22402 { 0x0104, 277, UNICODE_NOT_PRESENT_OFFSET }, 22403 { 0x0105, 281, UNICODE_NOT_PRESENT_OFFSET }, 22404 { 0x0106, 285, UNICODE_NOT_PRESENT_OFFSET }, 22405 { 0x0107, 289, UNICODE_NOT_PRESENT_OFFSET }, 22406 { 0x0108, 293, UNICODE_NOT_PRESENT_OFFSET }, 22407 { 0x0109, 297, UNICODE_NOT_PRESENT_OFFSET }, 22408 { 0x010a, 301, UNICODE_NOT_PRESENT_OFFSET }, 22409 { 0x010b, 305, UNICODE_NOT_PRESENT_OFFSET }, 22410 { 0x010c, 309, UNICODE_NOT_PRESENT_OFFSET }, 22411 { 0x010d, 313, UNICODE_NOT_PRESENT_OFFSET }, 22412 { 0x010e, 317, UNICODE_NOT_PRESENT_OFFSET }, 22413 { 0x010f, 321, UNICODE_NOT_PRESENT_OFFSET }, 22414 { 0x0112, 325, UNICODE_NOT_PRESENT_OFFSET }, 22415 { 0x0113, 329, UNICODE_NOT_PRESENT_OFFSET }, 22416 { 0x0114, 333, UNICODE_NOT_PRESENT_OFFSET }, 22417 { 0x0115, 337, UNICODE_NOT_PRESENT_OFFSET }, 22418 { 0x0116, 341, UNICODE_NOT_PRESENT_OFFSET }, 22419 { 0x0117, 345, UNICODE_NOT_PRESENT_OFFSET }, 22420 { 0x0118, 349, UNICODE_NOT_PRESENT_OFFSET }, 22421 { 0x0119, 353, UNICODE_NOT_PRESENT_OFFSET }, 22422 { 0x011a, 357, UNICODE_NOT_PRESENT_OFFSET }, 22423 { 0x011b, 361, UNICODE_NOT_PRESENT_OFFSET }, 22424 { 0x011c, 365, UNICODE_NOT_PRESENT_OFFSET }, 22425 { 0x011d, 369, UNICODE_NOT_PRESENT_OFFSET }, 22426 { 0x011e, 373, UNICODE_NOT_PRESENT_OFFSET }, 22427 { 0x011f, 377, UNICODE_NOT_PRESENT_OFFSET }, 22428 { 0x0120, 381, UNICODE_NOT_PRESENT_OFFSET }, 22429 { 0x0121, 385, UNICODE_NOT_PRESENT_OFFSET }, 22430 { 0x0122, 389, UNICODE_NOT_PRESENT_OFFSET }, 22431 { 0x0123, 393, UNICODE_NOT_PRESENT_OFFSET }, 22432 { 0x0124, 397, UNICODE_NOT_PRESENT_OFFSET }, 22433 { 0x0125, 401, UNICODE_NOT_PRESENT_OFFSET }, 22434 { 0x0128, 405, UNICODE_NOT_PRESENT_OFFSET }, 22435 { 0x0129, 409, UNICODE_NOT_PRESENT_OFFSET }, 22436 { 0x012a, 413, UNICODE_NOT_PRESENT_OFFSET }, 22437 { 0x012b, 417, UNICODE_NOT_PRESENT_OFFSET }, 22438 { 0x012c, 421, UNICODE_NOT_PRESENT_OFFSET }, 22439 { 0x012d, 425, UNICODE_NOT_PRESENT_OFFSET }, 22440 { 0x012e, 429, UNICODE_NOT_PRESENT_OFFSET }, 22441 { 0x012f, 433, UNICODE_NOT_PRESENT_OFFSET }, 22442 { 0x0130, 437, UNICODE_NOT_PRESENT_OFFSET }, 22443 { 0x0132, UNICODE_NOT_PRESENT_OFFSET, 441 }, 22444 { 0x0133, UNICODE_NOT_PRESENT_OFFSET, 444 }, 22445 { 0x0134, 447, UNICODE_NOT_PRESENT_OFFSET }, 22446 { 0x0135, 451, UNICODE_NOT_PRESENT_OFFSET }, 22447 { 0x0136, 455, UNICODE_NOT_PRESENT_OFFSET }, 22448 { 0x0137, 459, UNICODE_NOT_PRESENT_OFFSET }, 22449 { 0x0139, 463, UNICODE_NOT_PRESENT_OFFSET }, 22450 { 0x013a, 467, UNICODE_NOT_PRESENT_OFFSET }, 22451 { 0x013b, 471, UNICODE_NOT_PRESENT_OFFSET }, 22452 { 0x013c, 475, UNICODE_NOT_PRESENT_OFFSET }, 22453 { 0x013d, 479, UNICODE_NOT_PRESENT_OFFSET }, 22454 { 0x013e, 483, UNICODE_NOT_PRESENT_OFFSET }, 22455 { 0x013f, UNICODE_NOT_PRESENT_OFFSET, 487 }, 22456 { 0x0140, UNICODE_NOT_PRESENT_OFFSET, 491 }, 22457 { 0x0143, 495, UNICODE_NOT_PRESENT_OFFSET }, 22458 { 0x0144, 499, UNICODE_NOT_PRESENT_OFFSET }, 22459 { 0x0145, 503, UNICODE_NOT_PRESENT_OFFSET }, 22460 { 0x0146, 507, UNICODE_NOT_PRESENT_OFFSET }, 22461 { 0x0147, 511, UNICODE_NOT_PRESENT_OFFSET }, 22462 { 0x0148, 515, UNICODE_NOT_PRESENT_OFFSET }, 22463 { 0x0149, UNICODE_NOT_PRESENT_OFFSET, 519 }, 22464 { 0x014c, 523, UNICODE_NOT_PRESENT_OFFSET }, 22465 { 0x014d, 527, UNICODE_NOT_PRESENT_OFFSET }, 22466 { 0x014e, 531, UNICODE_NOT_PRESENT_OFFSET }, 22467 { 0x014f, 535, UNICODE_NOT_PRESENT_OFFSET }, 22468 { 0x0150, 539, UNICODE_NOT_PRESENT_OFFSET }, 22469 { 0x0151, 543, UNICODE_NOT_PRESENT_OFFSET }, 22470 { 0x0154, 547, UNICODE_NOT_PRESENT_OFFSET }, 22471 { 0x0155, 551, UNICODE_NOT_PRESENT_OFFSET }, 22472 { 0x0156, 555, UNICODE_NOT_PRESENT_OFFSET }, 22473 { 0x0157, 559, UNICODE_NOT_PRESENT_OFFSET }, 22474 { 0x0158, 563, UNICODE_NOT_PRESENT_OFFSET }, 22475 { 0x0159, 567, UNICODE_NOT_PRESENT_OFFSET }, 22476 { 0x015a, 571, UNICODE_NOT_PRESENT_OFFSET }, 22477 { 0x015b, 575, UNICODE_NOT_PRESENT_OFFSET }, 22478 { 0x015c, 579, UNICODE_NOT_PRESENT_OFFSET }, 22479 { 0x015d, 583, UNICODE_NOT_PRESENT_OFFSET }, 22480 { 0x015e, 587, UNICODE_NOT_PRESENT_OFFSET }, 22481 { 0x015f, 591, UNICODE_NOT_PRESENT_OFFSET }, 22482 { 0x0160, 595, UNICODE_NOT_PRESENT_OFFSET }, 22483 { 0x0161, 599, UNICODE_NOT_PRESENT_OFFSET }, 22484 { 0x0162, 603, UNICODE_NOT_PRESENT_OFFSET }, 22485 { 0x0163, 607, UNICODE_NOT_PRESENT_OFFSET }, 22486 { 0x0164, 611, UNICODE_NOT_PRESENT_OFFSET }, 22487 { 0x0165, 615, UNICODE_NOT_PRESENT_OFFSET }, 22488 { 0x0168, 619, UNICODE_NOT_PRESENT_OFFSET }, 22489 { 0x0169, 623, UNICODE_NOT_PRESENT_OFFSET }, 22490 { 0x016a, 627, UNICODE_NOT_PRESENT_OFFSET }, 22491 { 0x016b, 631, UNICODE_NOT_PRESENT_OFFSET }, 22492 { 0x016c, 635, UNICODE_NOT_PRESENT_OFFSET }, 22493 { 0x016d, 639, UNICODE_NOT_PRESENT_OFFSET }, 22494 { 0x016e, 643, UNICODE_NOT_PRESENT_OFFSET }, 22495 { 0x016f, 647, UNICODE_NOT_PRESENT_OFFSET }, 22496 { 0x0170, 651, UNICODE_NOT_PRESENT_OFFSET }, 22497 { 0x0171, 655, UNICODE_NOT_PRESENT_OFFSET }, 22498 { 0x0172, 659, UNICODE_NOT_PRESENT_OFFSET }, 22499 { 0x0173, 663, UNICODE_NOT_PRESENT_OFFSET }, 22500 { 0x0174, 667, UNICODE_NOT_PRESENT_OFFSET }, 22501 { 0x0175, 671, UNICODE_NOT_PRESENT_OFFSET }, 22502 { 0x0176, 675, UNICODE_NOT_PRESENT_OFFSET }, 22503 { 0x0177, 679, UNICODE_NOT_PRESENT_OFFSET }, 22504 { 0x0178, 683, UNICODE_NOT_PRESENT_OFFSET }, 22505 { 0x0179, 687, UNICODE_NOT_PRESENT_OFFSET }, 22506 { 0x017a, 691, UNICODE_NOT_PRESENT_OFFSET }, 22507 { 0x017b, 695, UNICODE_NOT_PRESENT_OFFSET }, 22508 { 0x017c, 699, UNICODE_NOT_PRESENT_OFFSET }, 22509 { 0x017d, 703, UNICODE_NOT_PRESENT_OFFSET }, 22510 { 0x017e, 707, UNICODE_NOT_PRESENT_OFFSET }, 22511 { 0x017f, UNICODE_NOT_PRESENT_OFFSET, 711 }, 22512 { 0x01a0, 713, UNICODE_NOT_PRESENT_OFFSET }, 22513 { 0x01a1, 717, UNICODE_NOT_PRESENT_OFFSET }, 22514 { 0x01af, 721, UNICODE_NOT_PRESENT_OFFSET }, 22515 { 0x01b0, 725, UNICODE_NOT_PRESENT_OFFSET }, 22516 { 0x01c4, UNICODE_NOT_PRESENT_OFFSET, 729 }, 22517 { 0x01c5, UNICODE_NOT_PRESENT_OFFSET, 734 }, 22518 { 0x01c6, UNICODE_NOT_PRESENT_OFFSET, 739 }, 22519 { 0x01c7, UNICODE_NOT_PRESENT_OFFSET, 744 }, 22520 { 0x01c8, UNICODE_NOT_PRESENT_OFFSET, 747 }, 22521 { 0x01c9, UNICODE_NOT_PRESENT_OFFSET, 750 }, 22522 { 0x01ca, UNICODE_NOT_PRESENT_OFFSET, 753 }, 22523 { 0x01cb, UNICODE_NOT_PRESENT_OFFSET, 756 }, 22524 { 0x01cc, UNICODE_NOT_PRESENT_OFFSET, 759 }, 22525 { 0x01cd, 762, UNICODE_NOT_PRESENT_OFFSET }, 22526 { 0x01ce, 766, UNICODE_NOT_PRESENT_OFFSET }, 22527 { 0x01cf, 770, UNICODE_NOT_PRESENT_OFFSET }, 22528 { 0x01d0, 774, UNICODE_NOT_PRESENT_OFFSET }, 22529 { 0x01d1, 778, UNICODE_NOT_PRESENT_OFFSET }, 22530 { 0x01d2, 782, UNICODE_NOT_PRESENT_OFFSET }, 22531 { 0x01d3, 786, UNICODE_NOT_PRESENT_OFFSET }, 22532 { 0x01d4, 790, UNICODE_NOT_PRESENT_OFFSET }, 22533 { 0x01d5, 794, UNICODE_NOT_PRESENT_OFFSET }, 22534 { 0x01d6, 800, UNICODE_NOT_PRESENT_OFFSET }, 22535 { 0x01d7, 806, UNICODE_NOT_PRESENT_OFFSET }, 22536 { 0x01d8, 812, UNICODE_NOT_PRESENT_OFFSET }, 22537 { 0x01d9, 818, UNICODE_NOT_PRESENT_OFFSET }, 22538 { 0x01da, 824, UNICODE_NOT_PRESENT_OFFSET }, 22539 { 0x01db, 830, UNICODE_NOT_PRESENT_OFFSET }, 22540 { 0x01dc, 836, UNICODE_NOT_PRESENT_OFFSET }, 22541 { 0x01de, 842, UNICODE_NOT_PRESENT_OFFSET }, 22542 { 0x01df, 848, UNICODE_NOT_PRESENT_OFFSET }, 22543 { 0x01e0, 854, UNICODE_NOT_PRESENT_OFFSET }, 22544 { 0x01e1, 860, UNICODE_NOT_PRESENT_OFFSET }, 22545 { 0x01e2, 866, UNICODE_NOT_PRESENT_OFFSET }, 22546 { 0x01e3, 871, UNICODE_NOT_PRESENT_OFFSET }, 22547 { 0x01e6, 876, UNICODE_NOT_PRESENT_OFFSET }, 22548 { 0x01e7, 880, UNICODE_NOT_PRESENT_OFFSET }, 22549 { 0x01e8, 884, UNICODE_NOT_PRESENT_OFFSET }, 22550 { 0x01e9, 888, UNICODE_NOT_PRESENT_OFFSET }, 22551 { 0x01ea, 892, UNICODE_NOT_PRESENT_OFFSET }, 22552 { 0x01eb, 896, UNICODE_NOT_PRESENT_OFFSET }, 22553 { 0x01ec, 900, UNICODE_NOT_PRESENT_OFFSET }, 22554 { 0x01ed, 906, UNICODE_NOT_PRESENT_OFFSET }, 22555 { 0x01ee, 912, UNICODE_NOT_PRESENT_OFFSET }, 22556 { 0x01ef, 917, UNICODE_NOT_PRESENT_OFFSET }, 22557 { 0x01f0, 922, UNICODE_NOT_PRESENT_OFFSET }, 22558 { 0x01f1, UNICODE_NOT_PRESENT_OFFSET, 926 }, 22559 { 0x01f2, UNICODE_NOT_PRESENT_OFFSET, 929 }, 22560 { 0x01f3, UNICODE_NOT_PRESENT_OFFSET, 932 }, 22561 { 0x01f4, 935, UNICODE_NOT_PRESENT_OFFSET }, 22562 { 0x01f5, 939, UNICODE_NOT_PRESENT_OFFSET }, 22563 { 0x01f8, 943, UNICODE_NOT_PRESENT_OFFSET }, 22564 { 0x01f9, 947, UNICODE_NOT_PRESENT_OFFSET }, 22565 { 0x01fa, 951, UNICODE_NOT_PRESENT_OFFSET }, 22566 { 0x01fb, 957, UNICODE_NOT_PRESENT_OFFSET }, 22567 { 0x01fc, 963, UNICODE_NOT_PRESENT_OFFSET }, 22568 { 0x01fd, 968, UNICODE_NOT_PRESENT_OFFSET }, 22569 { 0x01fe, 973, UNICODE_NOT_PRESENT_OFFSET }, 22570 { 0x01ff, 978, UNICODE_NOT_PRESENT_OFFSET }, 22571 { 0x0200, 983, UNICODE_NOT_PRESENT_OFFSET }, 22572 { 0x0201, 987, UNICODE_NOT_PRESENT_OFFSET }, 22573 { 0x0202, 991, UNICODE_NOT_PRESENT_OFFSET }, 22574 { 0x0203, 995, UNICODE_NOT_PRESENT_OFFSET }, 22575 { 0x0204, 999, UNICODE_NOT_PRESENT_OFFSET }, 22576 { 0x0205, 1003, UNICODE_NOT_PRESENT_OFFSET }, 22577 { 0x0206, 1007, UNICODE_NOT_PRESENT_OFFSET }, 22578 { 0x0207, 1011, UNICODE_NOT_PRESENT_OFFSET }, 22579 { 0x0208, 1015, UNICODE_NOT_PRESENT_OFFSET }, 22580 { 0x0209, 1019, UNICODE_NOT_PRESENT_OFFSET }, 22581 { 0x020a, 1023, UNICODE_NOT_PRESENT_OFFSET }, 22582 { 0x020b, 1027, UNICODE_NOT_PRESENT_OFFSET }, 22583 { 0x020c, 1031, UNICODE_NOT_PRESENT_OFFSET }, 22584 { 0x020d, 1035, UNICODE_NOT_PRESENT_OFFSET }, 22585 { 0x020e, 1039, UNICODE_NOT_PRESENT_OFFSET }, 22586 { 0x020f, 1043, UNICODE_NOT_PRESENT_OFFSET }, 22587 { 0x0210, 1047, UNICODE_NOT_PRESENT_OFFSET }, 22588 { 0x0211, 1051, UNICODE_NOT_PRESENT_OFFSET }, 22589 { 0x0212, 1055, UNICODE_NOT_PRESENT_OFFSET }, 22590 { 0x0213, 1059, UNICODE_NOT_PRESENT_OFFSET }, 22591 { 0x0214, 1063, UNICODE_NOT_PRESENT_OFFSET }, 22592 { 0x0215, 1067, UNICODE_NOT_PRESENT_OFFSET }, 22593 { 0x0216, 1071, UNICODE_NOT_PRESENT_OFFSET }, 22594 { 0x0217, 1075, UNICODE_NOT_PRESENT_OFFSET }, 22595 { 0x0218, 1079, UNICODE_NOT_PRESENT_OFFSET }, 22596 { 0x0219, 1083, UNICODE_NOT_PRESENT_OFFSET }, 22597 { 0x021a, 1087, UNICODE_NOT_PRESENT_OFFSET }, 22598 { 0x021b, 1091, UNICODE_NOT_PRESENT_OFFSET }, 22599 { 0x021e, 1095, UNICODE_NOT_PRESENT_OFFSET }, 22600 { 0x021f, 1099, UNICODE_NOT_PRESENT_OFFSET }, 22601 { 0x0226, 1103, UNICODE_NOT_PRESENT_OFFSET }, 22602 { 0x0227, 1107, UNICODE_NOT_PRESENT_OFFSET }, 22603 { 0x0228, 1111, UNICODE_NOT_PRESENT_OFFSET }, 22604 { 0x0229, 1115, UNICODE_NOT_PRESENT_OFFSET }, 22605 { 0x022a, 1119, UNICODE_NOT_PRESENT_OFFSET }, 22606 { 0x022b, 1125, UNICODE_NOT_PRESENT_OFFSET }, 22607 { 0x022c, 1131, UNICODE_NOT_PRESENT_OFFSET }, 22608 { 0x022d, 1137, UNICODE_NOT_PRESENT_OFFSET }, 22609 { 0x022e, 1143, UNICODE_NOT_PRESENT_OFFSET }, 22610 { 0x022f, 1147, UNICODE_NOT_PRESENT_OFFSET }, 22611 { 0x0230, 1151, UNICODE_NOT_PRESENT_OFFSET }, 22612 { 0x0231, 1157, UNICODE_NOT_PRESENT_OFFSET }, 22613 { 0x0232, 1163, UNICODE_NOT_PRESENT_OFFSET }, 22614 { 0x0233, 1167, UNICODE_NOT_PRESENT_OFFSET }, 22615 { 0x02b0, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 22616 { 0x02b1, UNICODE_NOT_PRESENT_OFFSET, 1173 }, 22617 { 0x02b2, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 22618 { 0x02b3, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 22619 { 0x02b4, UNICODE_NOT_PRESENT_OFFSET, 1180 }, 22620 { 0x02b5, UNICODE_NOT_PRESENT_OFFSET, 1183 }, 22621 { 0x02b6, UNICODE_NOT_PRESENT_OFFSET, 1186 }, 22622 { 0x02b7, UNICODE_NOT_PRESENT_OFFSET, 1189 }, 22623 { 0x02b8, UNICODE_NOT_PRESENT_OFFSET, 1191 }, 22624 { 0x02d8, UNICODE_NOT_PRESENT_OFFSET, 1193 }, 22625 { 0x02d9, UNICODE_NOT_PRESENT_OFFSET, 1197 }, 22626 { 0x02da, UNICODE_NOT_PRESENT_OFFSET, 1201 }, 22627 { 0x02db, UNICODE_NOT_PRESENT_OFFSET, 1205 }, 22628 { 0x02dc, UNICODE_NOT_PRESENT_OFFSET, 1209 }, 22629 { 0x02dd, UNICODE_NOT_PRESENT_OFFSET, 1213 }, 22630 { 0x02e0, UNICODE_NOT_PRESENT_OFFSET, 1217 }, 22631 { 0x02e1, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 22632 { 0x02e2, UNICODE_NOT_PRESENT_OFFSET, 711 }, 22633 { 0x02e3, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 22634 { 0x02e4, UNICODE_NOT_PRESENT_OFFSET, 1224 }, 22635 { 0x0340, 1227, UNICODE_NOT_PRESENT_OFFSET }, 22636 { 0x0341, 1230, UNICODE_NOT_PRESENT_OFFSET }, 22637 { 0x0343, 1233, UNICODE_NOT_PRESENT_OFFSET }, 22638 { 0x0344, 1236, UNICODE_NOT_PRESENT_OFFSET }, 22639 { 0x0374, 1241, UNICODE_NOT_PRESENT_OFFSET }, 22640 { 0x037a, UNICODE_NOT_PRESENT_OFFSET, 1244 }, 22641 { 0x037e, 1248, UNICODE_NOT_PRESENT_OFFSET }, 22642 { 0x0384, UNICODE_NOT_PRESENT_OFFSET, 16 }, 22643 { 0x0385, 1250, 1255 }, 22644 { 0x0386, 1261, UNICODE_NOT_PRESENT_OFFSET }, 22645 { 0x0387, 1266, UNICODE_NOT_PRESENT_OFFSET }, 22646 { 0x0388, 1269, UNICODE_NOT_PRESENT_OFFSET }, 22647 { 0x0389, 1274, UNICODE_NOT_PRESENT_OFFSET }, 22648 { 0x038a, 1279, UNICODE_NOT_PRESENT_OFFSET }, 22649 { 0x038c, 1284, UNICODE_NOT_PRESENT_OFFSET }, 22650 { 0x038e, 1289, UNICODE_NOT_PRESENT_OFFSET }, 22651 { 0x038f, 1294, UNICODE_NOT_PRESENT_OFFSET }, 22652 { 0x0390, 1299, UNICODE_NOT_PRESENT_OFFSET }, 22653 { 0x03aa, 1306, UNICODE_NOT_PRESENT_OFFSET }, 22654 { 0x03ab, 1311, UNICODE_NOT_PRESENT_OFFSET }, 22655 { 0x03ac, 1316, UNICODE_NOT_PRESENT_OFFSET }, 22656 { 0x03ad, 1321, UNICODE_NOT_PRESENT_OFFSET }, 22657 { 0x03ae, 1326, UNICODE_NOT_PRESENT_OFFSET }, 22658 { 0x03af, 1331, UNICODE_NOT_PRESENT_OFFSET }, 22659 { 0x03b0, 1336, UNICODE_NOT_PRESENT_OFFSET }, 22660 { 0x03ca, 1343, UNICODE_NOT_PRESENT_OFFSET }, 22661 { 0x03cb, 1348, UNICODE_NOT_PRESENT_OFFSET }, 22662 { 0x03cc, 1353, UNICODE_NOT_PRESENT_OFFSET }, 22663 { 0x03cd, 1358, UNICODE_NOT_PRESENT_OFFSET }, 22664 { 0x03ce, 1363, UNICODE_NOT_PRESENT_OFFSET }, 22665 { 0x03d0, UNICODE_NOT_PRESENT_OFFSET, 1368 }, 22666 { 0x03d1, UNICODE_NOT_PRESENT_OFFSET, 1371 }, 22667 { 0x03d2, UNICODE_NOT_PRESENT_OFFSET, 1374 }, 22668 { 0x03d3, 1377, 1289 }, 22669 { 0x03d4, 1382, 1311 }, 22670 { 0x03d5, UNICODE_NOT_PRESENT_OFFSET, 1387 }, 22671 { 0x03d6, UNICODE_NOT_PRESENT_OFFSET, 1390 }, 22672 { 0x03f0, UNICODE_NOT_PRESENT_OFFSET, 1393 }, 22673 { 0x03f1, UNICODE_NOT_PRESENT_OFFSET, 1396 }, 22674 { 0x03f2, UNICODE_NOT_PRESENT_OFFSET, 1399 }, 22675 { 0x03f4, UNICODE_NOT_PRESENT_OFFSET, 1402 }, 22676 { 0x03f5, UNICODE_NOT_PRESENT_OFFSET, 1405 }, 22677 { 0x03f9, UNICODE_NOT_PRESENT_OFFSET, 1408 }, 22678 { 0x0400, 1411, UNICODE_NOT_PRESENT_OFFSET }, 22679 { 0x0401, 1416, UNICODE_NOT_PRESENT_OFFSET }, 22680 { 0x0403, 1421, UNICODE_NOT_PRESENT_OFFSET }, 22681 { 0x0407, 1426, UNICODE_NOT_PRESENT_OFFSET }, 22682 { 0x040c, 1431, UNICODE_NOT_PRESENT_OFFSET }, 22683 { 0x040d, 1436, UNICODE_NOT_PRESENT_OFFSET }, 22684 { 0x040e, 1441, UNICODE_NOT_PRESENT_OFFSET }, 22685 { 0x0419, 1446, UNICODE_NOT_PRESENT_OFFSET }, 22686 { 0x0439, 1451, UNICODE_NOT_PRESENT_OFFSET }, 22687 { 0x0450, 1456, UNICODE_NOT_PRESENT_OFFSET }, 22688 { 0x0451, 1461, UNICODE_NOT_PRESENT_OFFSET }, 22689 { 0x0453, 1466, UNICODE_NOT_PRESENT_OFFSET }, 22690 { 0x0457, 1471, UNICODE_NOT_PRESENT_OFFSET }, 22691 { 0x045c, 1476, UNICODE_NOT_PRESENT_OFFSET }, 22692 { 0x045d, 1481, UNICODE_NOT_PRESENT_OFFSET }, 22693 { 0x045e, 1486, UNICODE_NOT_PRESENT_OFFSET }, 22694 { 0x0476, 1491, UNICODE_NOT_PRESENT_OFFSET }, 22695 { 0x0477, 1496, UNICODE_NOT_PRESENT_OFFSET }, 22696 { 0x04c1, 1501, UNICODE_NOT_PRESENT_OFFSET }, 22697 { 0x04c2, 1506, UNICODE_NOT_PRESENT_OFFSET }, 22698 { 0x04d0, 1511, UNICODE_NOT_PRESENT_OFFSET }, 22699 { 0x04d1, 1516, UNICODE_NOT_PRESENT_OFFSET }, 22700 { 0x04d2, 1521, UNICODE_NOT_PRESENT_OFFSET }, 22701 { 0x04d3, 1526, UNICODE_NOT_PRESENT_OFFSET }, 22702 { 0x04d6, 1531, UNICODE_NOT_PRESENT_OFFSET }, 22703 { 0x04d7, 1536, UNICODE_NOT_PRESENT_OFFSET }, 22704 { 0x04da, 1541, UNICODE_NOT_PRESENT_OFFSET }, 22705 { 0x04db, 1546, UNICODE_NOT_PRESENT_OFFSET }, 22706 { 0x04dc, 1551, UNICODE_NOT_PRESENT_OFFSET }, 22707 { 0x04dd, 1556, UNICODE_NOT_PRESENT_OFFSET }, 22708 { 0x04de, 1561, UNICODE_NOT_PRESENT_OFFSET }, 22709 { 0x04df, 1566, UNICODE_NOT_PRESENT_OFFSET }, 22710 { 0x04e2, 1571, UNICODE_NOT_PRESENT_OFFSET }, 22711 { 0x04e3, 1576, UNICODE_NOT_PRESENT_OFFSET }, 22712 { 0x04e4, 1581, UNICODE_NOT_PRESENT_OFFSET }, 22713 { 0x04e5, 1586, UNICODE_NOT_PRESENT_OFFSET }, 22714 { 0x04e6, 1591, UNICODE_NOT_PRESENT_OFFSET }, 22715 { 0x04e7, 1596, UNICODE_NOT_PRESENT_OFFSET }, 22716 { 0x04ea, 1601, UNICODE_NOT_PRESENT_OFFSET }, 22717 { 0x04eb, 1606, UNICODE_NOT_PRESENT_OFFSET }, 22718 { 0x04ec, 1611, UNICODE_NOT_PRESENT_OFFSET }, 22719 { 0x04ed, 1616, UNICODE_NOT_PRESENT_OFFSET }, 22720 { 0x04ee, 1621, UNICODE_NOT_PRESENT_OFFSET }, 22721 { 0x04ef, 1626, UNICODE_NOT_PRESENT_OFFSET }, 22722 { 0x04f0, 1631, UNICODE_NOT_PRESENT_OFFSET }, 22723 { 0x04f1, 1636, UNICODE_NOT_PRESENT_OFFSET }, 22724 { 0x04f2, 1641, UNICODE_NOT_PRESENT_OFFSET }, 22725 { 0x04f3, 1646, UNICODE_NOT_PRESENT_OFFSET }, 22726 { 0x04f4, 1651, UNICODE_NOT_PRESENT_OFFSET }, 22727 { 0x04f5, 1656, UNICODE_NOT_PRESENT_OFFSET }, 22728 { 0x04f8, 1661, UNICODE_NOT_PRESENT_OFFSET }, 22729 { 0x04f9, 1666, UNICODE_NOT_PRESENT_OFFSET }, 22730 { 0x0587, UNICODE_NOT_PRESENT_OFFSET, 1671 }, 22731 { 0x0622, 1676, UNICODE_NOT_PRESENT_OFFSET }, 22732 { 0x0623, 1681, UNICODE_NOT_PRESENT_OFFSET }, 22733 { 0x0624, 1686, UNICODE_NOT_PRESENT_OFFSET }, 22734 { 0x0625, 1691, UNICODE_NOT_PRESENT_OFFSET }, 22735 { 0x0626, 1696, UNICODE_NOT_PRESENT_OFFSET }, 22736 { 0x0675, UNICODE_NOT_PRESENT_OFFSET, 1701 }, 22737 { 0x0676, UNICODE_NOT_PRESENT_OFFSET, 1706 }, 22738 { 0x0677, UNICODE_NOT_PRESENT_OFFSET, 1711 }, 22739 { 0x0678, UNICODE_NOT_PRESENT_OFFSET, 1716 }, 22740 { 0x06c0, 1721, UNICODE_NOT_PRESENT_OFFSET }, 22741 { 0x06c2, 1726, UNICODE_NOT_PRESENT_OFFSET }, 22742 { 0x06d3, 1731, UNICODE_NOT_PRESENT_OFFSET }, 22743 { 0x0929, 1736, UNICODE_NOT_PRESENT_OFFSET }, 22744 { 0x0931, 1743, UNICODE_NOT_PRESENT_OFFSET }, 22745 { 0x0934, 1750, UNICODE_NOT_PRESENT_OFFSET }, 22746 { 0x0958, 1757, UNICODE_NOT_PRESENT_OFFSET }, 22747 { 0x0959, 1764, UNICODE_NOT_PRESENT_OFFSET }, 22748 { 0x095a, 1771, UNICODE_NOT_PRESENT_OFFSET }, 22749 { 0x095b, 1778, UNICODE_NOT_PRESENT_OFFSET }, 22750 { 0x095c, 1785, UNICODE_NOT_PRESENT_OFFSET }, 22751 { 0x095d, 1792, UNICODE_NOT_PRESENT_OFFSET }, 22752 { 0x095e, 1799, UNICODE_NOT_PRESENT_OFFSET }, 22753 { 0x095f, 1806, UNICODE_NOT_PRESENT_OFFSET }, 22754 { 0x09cb, 1813, UNICODE_NOT_PRESENT_OFFSET }, 22755 { 0x09cc, 1820, UNICODE_NOT_PRESENT_OFFSET }, 22756 { 0x09dc, 1827, UNICODE_NOT_PRESENT_OFFSET }, 22757 { 0x09dd, 1834, UNICODE_NOT_PRESENT_OFFSET }, 22758 { 0x09df, 1841, UNICODE_NOT_PRESENT_OFFSET }, 22759 { 0x0a33, 1848, UNICODE_NOT_PRESENT_OFFSET }, 22760 { 0x0a36, 1855, UNICODE_NOT_PRESENT_OFFSET }, 22761 { 0x0a59, 1862, UNICODE_NOT_PRESENT_OFFSET }, 22762 { 0x0a5a, 1869, UNICODE_NOT_PRESENT_OFFSET }, 22763 { 0x0a5b, 1876, UNICODE_NOT_PRESENT_OFFSET }, 22764 { 0x0a5e, 1883, UNICODE_NOT_PRESENT_OFFSET }, 22765 { 0x0b48, 1890, UNICODE_NOT_PRESENT_OFFSET }, 22766 { 0x0b4b, 1897, UNICODE_NOT_PRESENT_OFFSET }, 22767 { 0x0b4c, 1904, UNICODE_NOT_PRESENT_OFFSET }, 22768 { 0x0b5c, 1911, UNICODE_NOT_PRESENT_OFFSET }, 22769 { 0x0b5d, 1918, UNICODE_NOT_PRESENT_OFFSET }, 22770 { 0x0b94, 1925, UNICODE_NOT_PRESENT_OFFSET }, 22771 { 0x0bca, 1932, UNICODE_NOT_PRESENT_OFFSET }, 22772 { 0x0bcb, 1939, UNICODE_NOT_PRESENT_OFFSET }, 22773 { 0x0bcc, 1946, UNICODE_NOT_PRESENT_OFFSET }, 22774 { 0x0c48, 1953, UNICODE_NOT_PRESENT_OFFSET }, 22775 { 0x0cc0, 1960, UNICODE_NOT_PRESENT_OFFSET }, 22776 { 0x0cc7, 1967, UNICODE_NOT_PRESENT_OFFSET }, 22777 { 0x0cc8, 1974, UNICODE_NOT_PRESENT_OFFSET }, 22778 { 0x0cca, 1981, UNICODE_NOT_PRESENT_OFFSET }, 22779 { 0x0ccb, 1988, UNICODE_NOT_PRESENT_OFFSET }, 22780 { 0x0d4a, 1998, UNICODE_NOT_PRESENT_OFFSET }, 22781 { 0x0d4b, 2005, UNICODE_NOT_PRESENT_OFFSET }, 22782 { 0x0d4c, 2012, UNICODE_NOT_PRESENT_OFFSET }, 22783 { 0x0dda, 2019, UNICODE_NOT_PRESENT_OFFSET }, 22784 { 0x0ddc, 2026, UNICODE_NOT_PRESENT_OFFSET }, 22785 { 0x0ddd, 2033, UNICODE_NOT_PRESENT_OFFSET }, 22786 { 0x0dde, 2043, UNICODE_NOT_PRESENT_OFFSET }, 22787 { 0x0e33, UNICODE_NOT_PRESENT_OFFSET, 2050 }, 22788 { 0x0eb3, UNICODE_NOT_PRESENT_OFFSET, 2057 }, 22789 { 0x0edc, UNICODE_NOT_PRESENT_OFFSET, 2064 }, 22790 { 0x0edd, UNICODE_NOT_PRESENT_OFFSET, 2071 }, 22791 { 0x0f0c, UNICODE_NOT_PRESENT_OFFSET, 2078 }, 22792 { 0x0f43, 2082, UNICODE_NOT_PRESENT_OFFSET }, 22793 { 0x0f4d, 2089, UNICODE_NOT_PRESENT_OFFSET }, 22794 { 0x0f52, 2096, UNICODE_NOT_PRESENT_OFFSET }, 22795 { 0x0f57, 2103, UNICODE_NOT_PRESENT_OFFSET }, 22796 { 0x0f5c, 2110, UNICODE_NOT_PRESENT_OFFSET }, 22797 { 0x0f69, 2117, UNICODE_NOT_PRESENT_OFFSET }, 22798 { 0x0f73, 2124, UNICODE_NOT_PRESENT_OFFSET }, 22799 { 0x0f75, 2131, UNICODE_NOT_PRESENT_OFFSET }, 22800 { 0x0f76, 2138, UNICODE_NOT_PRESENT_OFFSET }, 22801 { 0x0f77, UNICODE_NOT_PRESENT_OFFSET, 2145 }, 22802 { 0x0f78, 2155, UNICODE_NOT_PRESENT_OFFSET }, 22803 { 0x0f79, UNICODE_NOT_PRESENT_OFFSET, 2162 }, 22804 { 0x0f81, 2172, UNICODE_NOT_PRESENT_OFFSET }, 22805 { 0x0f93, 2179, UNICODE_NOT_PRESENT_OFFSET }, 22806 { 0x0f9d, 2186, UNICODE_NOT_PRESENT_OFFSET }, 22807 { 0x0fa2, 2193, UNICODE_NOT_PRESENT_OFFSET }, 22808 { 0x0fa7, 2200, UNICODE_NOT_PRESENT_OFFSET }, 22809 { 0x0fac, 2207, UNICODE_NOT_PRESENT_OFFSET }, 22810 { 0x0fb9, 2214, UNICODE_NOT_PRESENT_OFFSET }, 22811 { 0x1026, 2221, UNICODE_NOT_PRESENT_OFFSET }, 22812 { 0x10fc, UNICODE_NOT_PRESENT_OFFSET, 2228 }, 22813 { 0x1b06, 2232, UNICODE_NOT_PRESENT_OFFSET }, 22814 { 0x1b08, 2239, UNICODE_NOT_PRESENT_OFFSET }, 22815 { 0x1b0a, 2246, UNICODE_NOT_PRESENT_OFFSET }, 22816 { 0x1b0c, 2253, UNICODE_NOT_PRESENT_OFFSET }, 22817 { 0x1b0e, 2260, UNICODE_NOT_PRESENT_OFFSET }, 22818 { 0x1b12, 2267, UNICODE_NOT_PRESENT_OFFSET }, 22819 { 0x1b3b, 2274, UNICODE_NOT_PRESENT_OFFSET }, 22820 { 0x1b3d, 2281, UNICODE_NOT_PRESENT_OFFSET }, 22821 { 0x1b40, 2288, UNICODE_NOT_PRESENT_OFFSET }, 22822 { 0x1b41, 2295, UNICODE_NOT_PRESENT_OFFSET }, 22823 { 0x1b43, 2302, UNICODE_NOT_PRESENT_OFFSET }, 22824 { 0x1d2c, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 22825 { 0x1d2d, UNICODE_NOT_PRESENT_OFFSET, 2311 }, 22826 { 0x1d2e, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 22827 { 0x1d30, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 22828 { 0x1d31, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 22829 { 0x1d32, UNICODE_NOT_PRESENT_OFFSET, 2320 }, 22830 { 0x1d33, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 22831 { 0x1d34, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 22832 { 0x1d35, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 22833 { 0x1d36, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 22834 { 0x1d37, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 22835 { 0x1d38, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 22836 { 0x1d39, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 22837 { 0x1d3a, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 22838 { 0x1d3c, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 22839 { 0x1d3d, UNICODE_NOT_PRESENT_OFFSET, 2341 }, 22840 { 0x1d3e, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 22841 { 0x1d3f, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 22842 { 0x1d40, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 22843 { 0x1d41, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 22844 { 0x1d42, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 22845 { 0x1d43, UNICODE_NOT_PRESENT_OFFSET, 6 }, 22846 { 0x1d44, UNICODE_NOT_PRESENT_OFFSET, 2354 }, 22847 { 0x1d45, UNICODE_NOT_PRESENT_OFFSET, 2357 }, 22848 { 0x1d46, UNICODE_NOT_PRESENT_OFFSET, 2360 }, 22849 { 0x1d47, UNICODE_NOT_PRESENT_OFFSET, 2364 }, 22850 { 0x1d48, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 22851 { 0x1d49, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 22852 { 0x1d4a, UNICODE_NOT_PRESENT_OFFSET, 2370 }, 22853 { 0x1d4b, UNICODE_NOT_PRESENT_OFFSET, 2373 }, 22854 { 0x1d4c, UNICODE_NOT_PRESENT_OFFSET, 2376 }, 22855 { 0x1d4d, UNICODE_NOT_PRESENT_OFFSET, 2379 }, 22856 { 0x1d4f, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 22857 { 0x1d50, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 22858 { 0x1d51, UNICODE_NOT_PRESENT_OFFSET, 2385 }, 22859 { 0x1d52, UNICODE_NOT_PRESENT_OFFSET, 29 }, 22860 { 0x1d53, UNICODE_NOT_PRESENT_OFFSET, 2388 }, 22861 { 0x1d54, UNICODE_NOT_PRESENT_OFFSET, 2391 }, 22862 { 0x1d55, UNICODE_NOT_PRESENT_OFFSET, 2395 }, 22863 { 0x1d56, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 22864 { 0x1d57, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 22865 { 0x1d58, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 22866 { 0x1d59, UNICODE_NOT_PRESENT_OFFSET, 2405 }, 22867 { 0x1d5a, UNICODE_NOT_PRESENT_OFFSET, 2409 }, 22868 { 0x1d5b, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 22869 { 0x1d5c, UNICODE_NOT_PRESENT_OFFSET, 2414 }, 22870 { 0x1d5d, UNICODE_NOT_PRESENT_OFFSET, 1368 }, 22871 { 0x1d5e, UNICODE_NOT_PRESENT_OFFSET, 2418 }, 22872 { 0x1d5f, UNICODE_NOT_PRESENT_OFFSET, 2421 }, 22873 { 0x1d60, UNICODE_NOT_PRESENT_OFFSET, 1387 }, 22874 { 0x1d61, UNICODE_NOT_PRESENT_OFFSET, 2424 }, 22875 { 0x1d62, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 22876 { 0x1d63, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 22877 { 0x1d64, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 22878 { 0x1d65, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 22879 { 0x1d66, UNICODE_NOT_PRESENT_OFFSET, 1368 }, 22880 { 0x1d67, UNICODE_NOT_PRESENT_OFFSET, 2418 }, 22881 { 0x1d68, UNICODE_NOT_PRESENT_OFFSET, 1396 }, 22882 { 0x1d69, UNICODE_NOT_PRESENT_OFFSET, 1387 }, 22883 { 0x1d6a, UNICODE_NOT_PRESENT_OFFSET, 2424 }, 22884 { 0x1d78, UNICODE_NOT_PRESENT_OFFSET, 2429 }, 22885 { 0x1d9b, UNICODE_NOT_PRESENT_OFFSET, 2432 }, 22886 { 0x1d9c, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 22887 { 0x1d9d, UNICODE_NOT_PRESENT_OFFSET, 2437 }, 22888 { 0x1d9e, UNICODE_NOT_PRESENT_OFFSET, 2440 }, 22889 { 0x1d9f, UNICODE_NOT_PRESENT_OFFSET, 2376 }, 22890 { 0x1da0, UNICODE_NOT_PRESENT_OFFSET, 2443 }, 22891 { 0x1da1, UNICODE_NOT_PRESENT_OFFSET, 2445 }, 22892 { 0x1da2, UNICODE_NOT_PRESENT_OFFSET, 2448 }, 22893 { 0x1da3, UNICODE_NOT_PRESENT_OFFSET, 2451 }, 22894 { 0x1da4, UNICODE_NOT_PRESENT_OFFSET, 2454 }, 22895 { 0x1da5, UNICODE_NOT_PRESENT_OFFSET, 2457 }, 22896 { 0x1da6, UNICODE_NOT_PRESENT_OFFSET, 2460 }, 22897 { 0x1da7, UNICODE_NOT_PRESENT_OFFSET, 2463 }, 22898 { 0x1da8, UNICODE_NOT_PRESENT_OFFSET, 2467 }, 22899 { 0x1da9, UNICODE_NOT_PRESENT_OFFSET, 2470 }, 22900 { 0x1daa, UNICODE_NOT_PRESENT_OFFSET, 2473 }, 22901 { 0x1dab, UNICODE_NOT_PRESENT_OFFSET, 2477 }, 22902 { 0x1dac, UNICODE_NOT_PRESENT_OFFSET, 2480 }, 22903 { 0x1dad, UNICODE_NOT_PRESENT_OFFSET, 2483 }, 22904 { 0x1dae, UNICODE_NOT_PRESENT_OFFSET, 2486 }, 22905 { 0x1daf, UNICODE_NOT_PRESENT_OFFSET, 2489 }, 22906 { 0x1db0, UNICODE_NOT_PRESENT_OFFSET, 2492 }, 22907 { 0x1db1, UNICODE_NOT_PRESENT_OFFSET, 2495 }, 22908 { 0x1db2, UNICODE_NOT_PRESENT_OFFSET, 2498 }, 22909 { 0x1db3, UNICODE_NOT_PRESENT_OFFSET, 2501 }, 22910 { 0x1db4, UNICODE_NOT_PRESENT_OFFSET, 2504 }, 22911 { 0x1db5, UNICODE_NOT_PRESENT_OFFSET, 2507 }, 22912 { 0x1db6, UNICODE_NOT_PRESENT_OFFSET, 2510 }, 22913 { 0x1db7, UNICODE_NOT_PRESENT_OFFSET, 2513 }, 22914 { 0x1db8, UNICODE_NOT_PRESENT_OFFSET, 2516 }, 22915 { 0x1db9, UNICODE_NOT_PRESENT_OFFSET, 2520 }, 22916 { 0x1dba, UNICODE_NOT_PRESENT_OFFSET, 2523 }, 22917 { 0x1dbb, UNICODE_NOT_PRESENT_OFFSET, 2526 }, 22918 { 0x1dbc, UNICODE_NOT_PRESENT_OFFSET, 2528 }, 22919 { 0x1dbd, UNICODE_NOT_PRESENT_OFFSET, 2531 }, 22920 { 0x1dbe, UNICODE_NOT_PRESENT_OFFSET, 2534 }, 22921 { 0x1dbf, UNICODE_NOT_PRESENT_OFFSET, 1371 }, 22922 { 0x1e00, 2537, UNICODE_NOT_PRESENT_OFFSET }, 22923 { 0x1e01, 2541, UNICODE_NOT_PRESENT_OFFSET }, 22924 { 0x1e02, 2545, UNICODE_NOT_PRESENT_OFFSET }, 22925 { 0x1e03, 2549, UNICODE_NOT_PRESENT_OFFSET }, 22926 { 0x1e04, 2553, UNICODE_NOT_PRESENT_OFFSET }, 22927 { 0x1e05, 2557, UNICODE_NOT_PRESENT_OFFSET }, 22928 { 0x1e06, 2561, UNICODE_NOT_PRESENT_OFFSET }, 22929 { 0x1e07, 2565, UNICODE_NOT_PRESENT_OFFSET }, 22930 { 0x1e08, 2569, UNICODE_NOT_PRESENT_OFFSET }, 22931 { 0x1e09, 2575, UNICODE_NOT_PRESENT_OFFSET }, 22932 { 0x1e0a, 2581, UNICODE_NOT_PRESENT_OFFSET }, 22933 { 0x1e0b, 2585, UNICODE_NOT_PRESENT_OFFSET }, 22934 { 0x1e0c, 2589, UNICODE_NOT_PRESENT_OFFSET }, 22935 { 0x1e0d, 2593, UNICODE_NOT_PRESENT_OFFSET }, 22936 { 0x1e0e, 2597, UNICODE_NOT_PRESENT_OFFSET }, 22937 { 0x1e0f, 2601, UNICODE_NOT_PRESENT_OFFSET }, 22938 { 0x1e10, 2605, UNICODE_NOT_PRESENT_OFFSET }, 22939 { 0x1e11, 2609, UNICODE_NOT_PRESENT_OFFSET }, 22940 { 0x1e12, 2613, UNICODE_NOT_PRESENT_OFFSET }, 22941 { 0x1e13, 2617, UNICODE_NOT_PRESENT_OFFSET }, 22942 { 0x1e14, 2621, UNICODE_NOT_PRESENT_OFFSET }, 22943 { 0x1e15, 2627, UNICODE_NOT_PRESENT_OFFSET }, 22944 { 0x1e16, 2633, UNICODE_NOT_PRESENT_OFFSET }, 22945 { 0x1e17, 2639, UNICODE_NOT_PRESENT_OFFSET }, 22946 { 0x1e18, 2645, UNICODE_NOT_PRESENT_OFFSET }, 22947 { 0x1e19, 2649, UNICODE_NOT_PRESENT_OFFSET }, 22948 { 0x1e1a, 2653, UNICODE_NOT_PRESENT_OFFSET }, 22949 { 0x1e1b, 2657, UNICODE_NOT_PRESENT_OFFSET }, 22950 { 0x1e1c, 2661, UNICODE_NOT_PRESENT_OFFSET }, 22951 { 0x1e1d, 2667, UNICODE_NOT_PRESENT_OFFSET }, 22952 { 0x1e1e, 2673, UNICODE_NOT_PRESENT_OFFSET }, 22953 { 0x1e1f, 2677, UNICODE_NOT_PRESENT_OFFSET }, 22954 { 0x1e20, 2681, UNICODE_NOT_PRESENT_OFFSET }, 22955 { 0x1e21, 2685, UNICODE_NOT_PRESENT_OFFSET }, 22956 { 0x1e22, 2689, UNICODE_NOT_PRESENT_OFFSET }, 22957 { 0x1e23, 2693, UNICODE_NOT_PRESENT_OFFSET }, 22958 { 0x1e24, 2697, UNICODE_NOT_PRESENT_OFFSET }, 22959 { 0x1e25, 2701, UNICODE_NOT_PRESENT_OFFSET }, 22960 { 0x1e26, 2705, UNICODE_NOT_PRESENT_OFFSET }, 22961 { 0x1e27, 2709, UNICODE_NOT_PRESENT_OFFSET }, 22962 { 0x1e28, 2713, UNICODE_NOT_PRESENT_OFFSET }, 22963 { 0x1e29, 2717, UNICODE_NOT_PRESENT_OFFSET }, 22964 { 0x1e2a, 2721, UNICODE_NOT_PRESENT_OFFSET }, 22965 { 0x1e2b, 2725, UNICODE_NOT_PRESENT_OFFSET }, 22966 { 0x1e2c, 2729, UNICODE_NOT_PRESENT_OFFSET }, 22967 { 0x1e2d, 2733, UNICODE_NOT_PRESENT_OFFSET }, 22968 { 0x1e2e, 2737, UNICODE_NOT_PRESENT_OFFSET }, 22969 { 0x1e2f, 2743, UNICODE_NOT_PRESENT_OFFSET }, 22970 { 0x1e30, 2749, UNICODE_NOT_PRESENT_OFFSET }, 22971 { 0x1e31, 2753, UNICODE_NOT_PRESENT_OFFSET }, 22972 { 0x1e32, 2757, UNICODE_NOT_PRESENT_OFFSET }, 22973 { 0x1e33, 2761, UNICODE_NOT_PRESENT_OFFSET }, 22974 { 0x1e34, 2765, UNICODE_NOT_PRESENT_OFFSET }, 22975 { 0x1e35, 2769, UNICODE_NOT_PRESENT_OFFSET }, 22976 { 0x1e36, 2773, UNICODE_NOT_PRESENT_OFFSET }, 22977 { 0x1e37, 2777, UNICODE_NOT_PRESENT_OFFSET }, 22978 { 0x1e38, 2781, UNICODE_NOT_PRESENT_OFFSET }, 22979 { 0x1e39, 2787, UNICODE_NOT_PRESENT_OFFSET }, 22980 { 0x1e3a, 2793, UNICODE_NOT_PRESENT_OFFSET }, 22981 { 0x1e3b, 2797, UNICODE_NOT_PRESENT_OFFSET }, 22982 { 0x1e3c, 2801, UNICODE_NOT_PRESENT_OFFSET }, 22983 { 0x1e3d, 2805, UNICODE_NOT_PRESENT_OFFSET }, 22984 { 0x1e3e, 2809, UNICODE_NOT_PRESENT_OFFSET }, 22985 { 0x1e3f, 2813, UNICODE_NOT_PRESENT_OFFSET }, 22986 { 0x1e40, 2817, UNICODE_NOT_PRESENT_OFFSET }, 22987 { 0x1e41, 2821, UNICODE_NOT_PRESENT_OFFSET }, 22988 { 0x1e42, 2825, UNICODE_NOT_PRESENT_OFFSET }, 22989 { 0x1e43, 2829, UNICODE_NOT_PRESENT_OFFSET }, 22990 { 0x1e44, 2833, UNICODE_NOT_PRESENT_OFFSET }, 22991 { 0x1e45, 2837, UNICODE_NOT_PRESENT_OFFSET }, 22992 { 0x1e46, 2841, UNICODE_NOT_PRESENT_OFFSET }, 22993 { 0x1e47, 2845, UNICODE_NOT_PRESENT_OFFSET }, 22994 { 0x1e48, 2849, UNICODE_NOT_PRESENT_OFFSET }, 22995 { 0x1e49, 2853, UNICODE_NOT_PRESENT_OFFSET }, 22996 { 0x1e4a, 2857, UNICODE_NOT_PRESENT_OFFSET }, 22997 { 0x1e4b, 2861, UNICODE_NOT_PRESENT_OFFSET }, 22998 { 0x1e4c, 2865, UNICODE_NOT_PRESENT_OFFSET }, 22999 { 0x1e4d, 2871, UNICODE_NOT_PRESENT_OFFSET }, 23000 { 0x1e4e, 2877, UNICODE_NOT_PRESENT_OFFSET }, 23001 { 0x1e4f, 2883, UNICODE_NOT_PRESENT_OFFSET }, 23002 { 0x1e50, 2889, UNICODE_NOT_PRESENT_OFFSET }, 23003 { 0x1e51, 2895, UNICODE_NOT_PRESENT_OFFSET }, 23004 { 0x1e52, 2901, UNICODE_NOT_PRESENT_OFFSET }, 23005 { 0x1e53, 2907, UNICODE_NOT_PRESENT_OFFSET }, 23006 { 0x1e54, 2913, UNICODE_NOT_PRESENT_OFFSET }, 23007 { 0x1e55, 2917, UNICODE_NOT_PRESENT_OFFSET }, 23008 { 0x1e56, 2921, UNICODE_NOT_PRESENT_OFFSET }, 23009 { 0x1e57, 2925, UNICODE_NOT_PRESENT_OFFSET }, 23010 { 0x1e58, 2929, UNICODE_NOT_PRESENT_OFFSET }, 23011 { 0x1e59, 2933, UNICODE_NOT_PRESENT_OFFSET }, 23012 { 0x1e5a, 2937, UNICODE_NOT_PRESENT_OFFSET }, 23013 { 0x1e5b, 2941, UNICODE_NOT_PRESENT_OFFSET }, 23014 { 0x1e5c, 2945, UNICODE_NOT_PRESENT_OFFSET }, 23015 { 0x1e5d, 2951, UNICODE_NOT_PRESENT_OFFSET }, 23016 { 0x1e5e, 2957, UNICODE_NOT_PRESENT_OFFSET }, 23017 { 0x1e5f, 2961, UNICODE_NOT_PRESENT_OFFSET }, 23018 { 0x1e60, 2965, UNICODE_NOT_PRESENT_OFFSET }, 23019 { 0x1e61, 2969, UNICODE_NOT_PRESENT_OFFSET }, 23020 { 0x1e62, 2973, UNICODE_NOT_PRESENT_OFFSET }, 23021 { 0x1e63, 2977, UNICODE_NOT_PRESENT_OFFSET }, 23022 { 0x1e64, 2981, UNICODE_NOT_PRESENT_OFFSET }, 23023 { 0x1e65, 2987, UNICODE_NOT_PRESENT_OFFSET }, 23024 { 0x1e66, 2993, UNICODE_NOT_PRESENT_OFFSET }, 23025 { 0x1e67, 2999, UNICODE_NOT_PRESENT_OFFSET }, 23026 { 0x1e68, 3005, UNICODE_NOT_PRESENT_OFFSET }, 23027 { 0x1e69, 3011, UNICODE_NOT_PRESENT_OFFSET }, 23028 { 0x1e6a, 3017, UNICODE_NOT_PRESENT_OFFSET }, 23029 { 0x1e6b, 3021, UNICODE_NOT_PRESENT_OFFSET }, 23030 { 0x1e6c, 3025, UNICODE_NOT_PRESENT_OFFSET }, 23031 { 0x1e6d, 3029, UNICODE_NOT_PRESENT_OFFSET }, 23032 { 0x1e6e, 3033, UNICODE_NOT_PRESENT_OFFSET }, 23033 { 0x1e6f, 3037, UNICODE_NOT_PRESENT_OFFSET }, 23034 { 0x1e70, 3041, UNICODE_NOT_PRESENT_OFFSET }, 23035 { 0x1e71, 3045, UNICODE_NOT_PRESENT_OFFSET }, 23036 { 0x1e72, 3049, UNICODE_NOT_PRESENT_OFFSET }, 23037 { 0x1e73, 3053, UNICODE_NOT_PRESENT_OFFSET }, 23038 { 0x1e74, 3057, UNICODE_NOT_PRESENT_OFFSET }, 23039 { 0x1e75, 3061, UNICODE_NOT_PRESENT_OFFSET }, 23040 { 0x1e76, 3065, UNICODE_NOT_PRESENT_OFFSET }, 23041 { 0x1e77, 3069, UNICODE_NOT_PRESENT_OFFSET }, 23042 { 0x1e78, 3073, UNICODE_NOT_PRESENT_OFFSET }, 23043 { 0x1e79, 3079, UNICODE_NOT_PRESENT_OFFSET }, 23044 { 0x1e7a, 3085, UNICODE_NOT_PRESENT_OFFSET }, 23045 { 0x1e7b, 3091, UNICODE_NOT_PRESENT_OFFSET }, 23046 { 0x1e7c, 3097, UNICODE_NOT_PRESENT_OFFSET }, 23047 { 0x1e7d, 3101, UNICODE_NOT_PRESENT_OFFSET }, 23048 { 0x1e7e, 3105, UNICODE_NOT_PRESENT_OFFSET }, 23049 { 0x1e7f, 3109, UNICODE_NOT_PRESENT_OFFSET }, 23050 { 0x1e80, 3113, UNICODE_NOT_PRESENT_OFFSET }, 23051 { 0x1e81, 3117, UNICODE_NOT_PRESENT_OFFSET }, 23052 { 0x1e82, 3121, UNICODE_NOT_PRESENT_OFFSET }, 23053 { 0x1e83, 3125, UNICODE_NOT_PRESENT_OFFSET }, 23054 { 0x1e84, 3129, UNICODE_NOT_PRESENT_OFFSET }, 23055 { 0x1e85, 3133, UNICODE_NOT_PRESENT_OFFSET }, 23056 { 0x1e86, 3137, UNICODE_NOT_PRESENT_OFFSET }, 23057 { 0x1e87, 3141, UNICODE_NOT_PRESENT_OFFSET }, 23058 { 0x1e88, 3145, UNICODE_NOT_PRESENT_OFFSET }, 23059 { 0x1e89, 3149, UNICODE_NOT_PRESENT_OFFSET }, 23060 { 0x1e8a, 3153, UNICODE_NOT_PRESENT_OFFSET }, 23061 { 0x1e8b, 3157, UNICODE_NOT_PRESENT_OFFSET }, 23062 { 0x1e8c, 3161, UNICODE_NOT_PRESENT_OFFSET }, 23063 { 0x1e8d, 3165, UNICODE_NOT_PRESENT_OFFSET }, 23064 { 0x1e8e, 3169, UNICODE_NOT_PRESENT_OFFSET }, 23065 { 0x1e8f, 3173, UNICODE_NOT_PRESENT_OFFSET }, 23066 { 0x1e90, 3177, UNICODE_NOT_PRESENT_OFFSET }, 23067 { 0x1e91, 3181, UNICODE_NOT_PRESENT_OFFSET }, 23068 { 0x1e92, 3185, UNICODE_NOT_PRESENT_OFFSET }, 23069 { 0x1e93, 3189, UNICODE_NOT_PRESENT_OFFSET }, 23070 { 0x1e94, 3193, UNICODE_NOT_PRESENT_OFFSET }, 23071 { 0x1e95, 3197, UNICODE_NOT_PRESENT_OFFSET }, 23072 { 0x1e96, 3201, UNICODE_NOT_PRESENT_OFFSET }, 23073 { 0x1e97, 3205, UNICODE_NOT_PRESENT_OFFSET }, 23074 { 0x1e98, 3209, UNICODE_NOT_PRESENT_OFFSET }, 23075 { 0x1e99, 3213, UNICODE_NOT_PRESENT_OFFSET }, 23076 { 0x1e9a, UNICODE_NOT_PRESENT_OFFSET, 3217 }, 23077 { 0x1e9b, 3221, 2969 }, 23078 { 0x1ea0, 3226, UNICODE_NOT_PRESENT_OFFSET }, 23079 { 0x1ea1, 3230, UNICODE_NOT_PRESENT_OFFSET }, 23080 { 0x1ea2, 3234, UNICODE_NOT_PRESENT_OFFSET }, 23081 { 0x1ea3, 3238, UNICODE_NOT_PRESENT_OFFSET }, 23082 { 0x1ea4, 3242, UNICODE_NOT_PRESENT_OFFSET }, 23083 { 0x1ea5, 3248, UNICODE_NOT_PRESENT_OFFSET }, 23084 { 0x1ea6, 3254, UNICODE_NOT_PRESENT_OFFSET }, 23085 { 0x1ea7, 3260, UNICODE_NOT_PRESENT_OFFSET }, 23086 { 0x1ea8, 3266, UNICODE_NOT_PRESENT_OFFSET }, 23087 { 0x1ea9, 3272, UNICODE_NOT_PRESENT_OFFSET }, 23088 { 0x1eaa, 3278, UNICODE_NOT_PRESENT_OFFSET }, 23089 { 0x1eab, 3284, UNICODE_NOT_PRESENT_OFFSET }, 23090 { 0x1eac, 3290, UNICODE_NOT_PRESENT_OFFSET }, 23091 { 0x1ead, 3296, UNICODE_NOT_PRESENT_OFFSET }, 23092 { 0x1eae, 3302, UNICODE_NOT_PRESENT_OFFSET }, 23093 { 0x1eaf, 3308, UNICODE_NOT_PRESENT_OFFSET }, 23094 { 0x1eb0, 3314, UNICODE_NOT_PRESENT_OFFSET }, 23095 { 0x1eb1, 3320, UNICODE_NOT_PRESENT_OFFSET }, 23096 { 0x1eb2, 3326, UNICODE_NOT_PRESENT_OFFSET }, 23097 { 0x1eb3, 3332, UNICODE_NOT_PRESENT_OFFSET }, 23098 { 0x1eb4, 3338, UNICODE_NOT_PRESENT_OFFSET }, 23099 { 0x1eb5, 3344, UNICODE_NOT_PRESENT_OFFSET }, 23100 { 0x1eb6, 3350, UNICODE_NOT_PRESENT_OFFSET }, 23101 { 0x1eb7, 3356, UNICODE_NOT_PRESENT_OFFSET }, 23102 { 0x1eb8, 3362, UNICODE_NOT_PRESENT_OFFSET }, 23103 { 0x1eb9, 3366, UNICODE_NOT_PRESENT_OFFSET }, 23104 { 0x1eba, 3370, UNICODE_NOT_PRESENT_OFFSET }, 23105 { 0x1ebb, 3374, UNICODE_NOT_PRESENT_OFFSET }, 23106 { 0x1ebc, 3378, UNICODE_NOT_PRESENT_OFFSET }, 23107 { 0x1ebd, 3382, UNICODE_NOT_PRESENT_OFFSET }, 23108 { 0x1ebe, 3386, UNICODE_NOT_PRESENT_OFFSET }, 23109 { 0x1ebf, 3392, UNICODE_NOT_PRESENT_OFFSET }, 23110 { 0x1ec0, 3398, UNICODE_NOT_PRESENT_OFFSET }, 23111 { 0x1ec1, 3404, UNICODE_NOT_PRESENT_OFFSET }, 23112 { 0x1ec2, 3410, UNICODE_NOT_PRESENT_OFFSET }, 23113 { 0x1ec3, 3416, UNICODE_NOT_PRESENT_OFFSET }, 23114 { 0x1ec4, 3422, UNICODE_NOT_PRESENT_OFFSET }, 23115 { 0x1ec5, 3428, UNICODE_NOT_PRESENT_OFFSET }, 23116 { 0x1ec6, 3434, UNICODE_NOT_PRESENT_OFFSET }, 23117 { 0x1ec7, 3440, UNICODE_NOT_PRESENT_OFFSET }, 23118 { 0x1ec8, 3446, UNICODE_NOT_PRESENT_OFFSET }, 23119 { 0x1ec9, 3450, UNICODE_NOT_PRESENT_OFFSET }, 23120 { 0x1eca, 3454, UNICODE_NOT_PRESENT_OFFSET }, 23121 { 0x1ecb, 3458, UNICODE_NOT_PRESENT_OFFSET }, 23122 { 0x1ecc, 3462, UNICODE_NOT_PRESENT_OFFSET }, 23123 { 0x1ecd, 3466, UNICODE_NOT_PRESENT_OFFSET }, 23124 { 0x1ece, 3470, UNICODE_NOT_PRESENT_OFFSET }, 23125 { 0x1ecf, 3474, UNICODE_NOT_PRESENT_OFFSET }, 23126 { 0x1ed0, 3478, UNICODE_NOT_PRESENT_OFFSET }, 23127 { 0x1ed1, 3484, UNICODE_NOT_PRESENT_OFFSET }, 23128 { 0x1ed2, 3490, UNICODE_NOT_PRESENT_OFFSET }, 23129 { 0x1ed3, 3496, UNICODE_NOT_PRESENT_OFFSET }, 23130 { 0x1ed4, 3502, UNICODE_NOT_PRESENT_OFFSET }, 23131 { 0x1ed5, 3508, UNICODE_NOT_PRESENT_OFFSET }, 23132 { 0x1ed6, 3514, UNICODE_NOT_PRESENT_OFFSET }, 23133 { 0x1ed7, 3520, UNICODE_NOT_PRESENT_OFFSET }, 23134 { 0x1ed8, 3526, UNICODE_NOT_PRESENT_OFFSET }, 23135 { 0x1ed9, 3532, UNICODE_NOT_PRESENT_OFFSET }, 23136 { 0x1eda, 3538, UNICODE_NOT_PRESENT_OFFSET }, 23137 { 0x1edb, 3544, UNICODE_NOT_PRESENT_OFFSET }, 23138 { 0x1edc, 3550, UNICODE_NOT_PRESENT_OFFSET }, 23139 { 0x1edd, 3556, UNICODE_NOT_PRESENT_OFFSET }, 23140 { 0x1ede, 3562, UNICODE_NOT_PRESENT_OFFSET }, 23141 { 0x1edf, 3568, UNICODE_NOT_PRESENT_OFFSET }, 23142 { 0x1ee0, 3574, UNICODE_NOT_PRESENT_OFFSET }, 23143 { 0x1ee1, 3580, UNICODE_NOT_PRESENT_OFFSET }, 23144 { 0x1ee2, 3586, UNICODE_NOT_PRESENT_OFFSET }, 23145 { 0x1ee3, 3592, UNICODE_NOT_PRESENT_OFFSET }, 23146 { 0x1ee4, 3598, UNICODE_NOT_PRESENT_OFFSET }, 23147 { 0x1ee5, 3602, UNICODE_NOT_PRESENT_OFFSET }, 23148 { 0x1ee6, 3606, UNICODE_NOT_PRESENT_OFFSET }, 23149 { 0x1ee7, 3610, UNICODE_NOT_PRESENT_OFFSET }, 23150 { 0x1ee8, 3614, UNICODE_NOT_PRESENT_OFFSET }, 23151 { 0x1ee9, 3620, UNICODE_NOT_PRESENT_OFFSET }, 23152 { 0x1eea, 3626, UNICODE_NOT_PRESENT_OFFSET }, 23153 { 0x1eeb, 3632, UNICODE_NOT_PRESENT_OFFSET }, 23154 { 0x1eec, 3638, UNICODE_NOT_PRESENT_OFFSET }, 23155 { 0x1eed, 3644, UNICODE_NOT_PRESENT_OFFSET }, 23156 { 0x1eee, 3650, UNICODE_NOT_PRESENT_OFFSET }, 23157 { 0x1eef, 3656, UNICODE_NOT_PRESENT_OFFSET }, 23158 { 0x1ef0, 3662, UNICODE_NOT_PRESENT_OFFSET }, 23159 { 0x1ef1, 3668, UNICODE_NOT_PRESENT_OFFSET }, 23160 { 0x1ef2, 3674, UNICODE_NOT_PRESENT_OFFSET }, 23161 { 0x1ef3, 3678, UNICODE_NOT_PRESENT_OFFSET }, 23162 { 0x1ef4, 3682, UNICODE_NOT_PRESENT_OFFSET }, 23163 { 0x1ef5, 3686, UNICODE_NOT_PRESENT_OFFSET }, 23164 { 0x1ef6, 3690, UNICODE_NOT_PRESENT_OFFSET }, 23165 { 0x1ef7, 3694, UNICODE_NOT_PRESENT_OFFSET }, 23166 { 0x1ef8, 3698, UNICODE_NOT_PRESENT_OFFSET }, 23167 { 0x1ef9, 3702, UNICODE_NOT_PRESENT_OFFSET }, 23168 { 0x1f00, 3706, UNICODE_NOT_PRESENT_OFFSET }, 23169 { 0x1f01, 3711, UNICODE_NOT_PRESENT_OFFSET }, 23170 { 0x1f02, 3716, UNICODE_NOT_PRESENT_OFFSET }, 23171 { 0x1f03, 3723, UNICODE_NOT_PRESENT_OFFSET }, 23172 { 0x1f04, 3730, UNICODE_NOT_PRESENT_OFFSET }, 23173 { 0x1f05, 3737, UNICODE_NOT_PRESENT_OFFSET }, 23174 { 0x1f06, 3744, UNICODE_NOT_PRESENT_OFFSET }, 23175 { 0x1f07, 3751, UNICODE_NOT_PRESENT_OFFSET }, 23176 { 0x1f08, 3758, UNICODE_NOT_PRESENT_OFFSET }, 23177 { 0x1f09, 3763, UNICODE_NOT_PRESENT_OFFSET }, 23178 { 0x1f0a, 3768, UNICODE_NOT_PRESENT_OFFSET }, 23179 { 0x1f0b, 3775, UNICODE_NOT_PRESENT_OFFSET }, 23180 { 0x1f0c, 3782, UNICODE_NOT_PRESENT_OFFSET }, 23181 { 0x1f0d, 3789, UNICODE_NOT_PRESENT_OFFSET }, 23182 { 0x1f0e, 3796, UNICODE_NOT_PRESENT_OFFSET }, 23183 { 0x1f0f, 3803, UNICODE_NOT_PRESENT_OFFSET }, 23184 { 0x1f10, 3810, UNICODE_NOT_PRESENT_OFFSET }, 23185 { 0x1f11, 3815, UNICODE_NOT_PRESENT_OFFSET }, 23186 { 0x1f12, 3820, UNICODE_NOT_PRESENT_OFFSET }, 23187 { 0x1f13, 3827, UNICODE_NOT_PRESENT_OFFSET }, 23188 { 0x1f14, 3834, UNICODE_NOT_PRESENT_OFFSET }, 23189 { 0x1f15, 3841, UNICODE_NOT_PRESENT_OFFSET }, 23190 { 0x1f18, 3848, UNICODE_NOT_PRESENT_OFFSET }, 23191 { 0x1f19, 3853, UNICODE_NOT_PRESENT_OFFSET }, 23192 { 0x1f1a, 3858, UNICODE_NOT_PRESENT_OFFSET }, 23193 { 0x1f1b, 3865, UNICODE_NOT_PRESENT_OFFSET }, 23194 { 0x1f1c, 3872, UNICODE_NOT_PRESENT_OFFSET }, 23195 { 0x1f1d, 3879, UNICODE_NOT_PRESENT_OFFSET }, 23196 { 0x1f20, 3886, UNICODE_NOT_PRESENT_OFFSET }, 23197 { 0x1f21, 3891, UNICODE_NOT_PRESENT_OFFSET }, 23198 { 0x1f22, 3896, UNICODE_NOT_PRESENT_OFFSET }, 23199 { 0x1f23, 3903, UNICODE_NOT_PRESENT_OFFSET }, 23200 { 0x1f24, 3910, UNICODE_NOT_PRESENT_OFFSET }, 23201 { 0x1f25, 3917, UNICODE_NOT_PRESENT_OFFSET }, 23202 { 0x1f26, 3924, UNICODE_NOT_PRESENT_OFFSET }, 23203 { 0x1f27, 3931, UNICODE_NOT_PRESENT_OFFSET }, 23204 { 0x1f28, 3938, UNICODE_NOT_PRESENT_OFFSET }, 23205 { 0x1f29, 3943, UNICODE_NOT_PRESENT_OFFSET }, 23206 { 0x1f2a, 3948, UNICODE_NOT_PRESENT_OFFSET }, 23207 { 0x1f2b, 3955, UNICODE_NOT_PRESENT_OFFSET }, 23208 { 0x1f2c, 3962, UNICODE_NOT_PRESENT_OFFSET }, 23209 { 0x1f2d, 3969, UNICODE_NOT_PRESENT_OFFSET }, 23210 { 0x1f2e, 3976, UNICODE_NOT_PRESENT_OFFSET }, 23211 { 0x1f2f, 3983, UNICODE_NOT_PRESENT_OFFSET }, 23212 { 0x1f30, 3990, UNICODE_NOT_PRESENT_OFFSET }, 23213 { 0x1f31, 3995, UNICODE_NOT_PRESENT_OFFSET }, 23214 { 0x1f32, 4000, UNICODE_NOT_PRESENT_OFFSET }, 23215 { 0x1f33, 4007, UNICODE_NOT_PRESENT_OFFSET }, 23216 { 0x1f34, 4014, UNICODE_NOT_PRESENT_OFFSET }, 23217 { 0x1f35, 4021, UNICODE_NOT_PRESENT_OFFSET }, 23218 { 0x1f36, 4028, UNICODE_NOT_PRESENT_OFFSET }, 23219 { 0x1f37, 4035, UNICODE_NOT_PRESENT_OFFSET }, 23220 { 0x1f38, 4042, UNICODE_NOT_PRESENT_OFFSET }, 23221 { 0x1f39, 4047, UNICODE_NOT_PRESENT_OFFSET }, 23222 { 0x1f3a, 4052, UNICODE_NOT_PRESENT_OFFSET }, 23223 { 0x1f3b, 4059, UNICODE_NOT_PRESENT_OFFSET }, 23224 { 0x1f3c, 4066, UNICODE_NOT_PRESENT_OFFSET }, 23225 { 0x1f3d, 4073, UNICODE_NOT_PRESENT_OFFSET }, 23226 { 0x1f3e, 4080, UNICODE_NOT_PRESENT_OFFSET }, 23227 { 0x1f3f, 4087, UNICODE_NOT_PRESENT_OFFSET }, 23228 { 0x1f40, 4094, UNICODE_NOT_PRESENT_OFFSET }, 23229 { 0x1f41, 4099, UNICODE_NOT_PRESENT_OFFSET }, 23230 { 0x1f42, 4104, UNICODE_NOT_PRESENT_OFFSET }, 23231 { 0x1f43, 4111, UNICODE_NOT_PRESENT_OFFSET }, 23232 { 0x1f44, 4118, UNICODE_NOT_PRESENT_OFFSET }, 23233 { 0x1f45, 4125, UNICODE_NOT_PRESENT_OFFSET }, 23234 { 0x1f48, 4132, UNICODE_NOT_PRESENT_OFFSET }, 23235 { 0x1f49, 4137, UNICODE_NOT_PRESENT_OFFSET }, 23236 { 0x1f4a, 4142, UNICODE_NOT_PRESENT_OFFSET }, 23237 { 0x1f4b, 4149, UNICODE_NOT_PRESENT_OFFSET }, 23238 { 0x1f4c, 4156, UNICODE_NOT_PRESENT_OFFSET }, 23239 { 0x1f4d, 4163, UNICODE_NOT_PRESENT_OFFSET }, 23240 { 0x1f50, 4170, UNICODE_NOT_PRESENT_OFFSET }, 23241 { 0x1f51, 4175, UNICODE_NOT_PRESENT_OFFSET }, 23242 { 0x1f52, 4180, UNICODE_NOT_PRESENT_OFFSET }, 23243 { 0x1f53, 4187, UNICODE_NOT_PRESENT_OFFSET }, 23244 { 0x1f54, 4194, UNICODE_NOT_PRESENT_OFFSET }, 23245 { 0x1f55, 4201, UNICODE_NOT_PRESENT_OFFSET }, 23246 { 0x1f56, 4208, UNICODE_NOT_PRESENT_OFFSET }, 23247 { 0x1f57, 4215, UNICODE_NOT_PRESENT_OFFSET }, 23248 { 0x1f59, 4222, UNICODE_NOT_PRESENT_OFFSET }, 23249 { 0x1f5b, 4227, UNICODE_NOT_PRESENT_OFFSET }, 23250 { 0x1f5d, 4234, UNICODE_NOT_PRESENT_OFFSET }, 23251 { 0x1f5f, 4241, UNICODE_NOT_PRESENT_OFFSET }, 23252 { 0x1f60, 4248, UNICODE_NOT_PRESENT_OFFSET }, 23253 { 0x1f61, 4253, UNICODE_NOT_PRESENT_OFFSET }, 23254 { 0x1f62, 4258, UNICODE_NOT_PRESENT_OFFSET }, 23255 { 0x1f63, 4265, UNICODE_NOT_PRESENT_OFFSET }, 23256 { 0x1f64, 4272, UNICODE_NOT_PRESENT_OFFSET }, 23257 { 0x1f65, 4279, UNICODE_NOT_PRESENT_OFFSET }, 23258 { 0x1f66, 4286, UNICODE_NOT_PRESENT_OFFSET }, 23259 { 0x1f67, 4293, UNICODE_NOT_PRESENT_OFFSET }, 23260 { 0x1f68, 4300, UNICODE_NOT_PRESENT_OFFSET }, 23261 { 0x1f69, 4305, UNICODE_NOT_PRESENT_OFFSET }, 23262 { 0x1f6a, 4310, UNICODE_NOT_PRESENT_OFFSET }, 23263 { 0x1f6b, 4317, UNICODE_NOT_PRESENT_OFFSET }, 23264 { 0x1f6c, 4324, UNICODE_NOT_PRESENT_OFFSET }, 23265 { 0x1f6d, 4331, UNICODE_NOT_PRESENT_OFFSET }, 23266 { 0x1f6e, 4338, UNICODE_NOT_PRESENT_OFFSET }, 23267 { 0x1f6f, 4345, UNICODE_NOT_PRESENT_OFFSET }, 23268 { 0x1f70, 4352, UNICODE_NOT_PRESENT_OFFSET }, 23269 { 0x1f71, 1316, UNICODE_NOT_PRESENT_OFFSET }, 23270 { 0x1f72, 4357, UNICODE_NOT_PRESENT_OFFSET }, 23271 { 0x1f73, 1321, UNICODE_NOT_PRESENT_OFFSET }, 23272 { 0x1f74, 4362, UNICODE_NOT_PRESENT_OFFSET }, 23273 { 0x1f75, 1326, UNICODE_NOT_PRESENT_OFFSET }, 23274 { 0x1f76, 4367, UNICODE_NOT_PRESENT_OFFSET }, 23275 { 0x1f77, 1331, UNICODE_NOT_PRESENT_OFFSET }, 23276 { 0x1f78, 4372, UNICODE_NOT_PRESENT_OFFSET }, 23277 { 0x1f79, 1353, UNICODE_NOT_PRESENT_OFFSET }, 23278 { 0x1f7a, 4377, UNICODE_NOT_PRESENT_OFFSET }, 23279 { 0x1f7b, 1358, UNICODE_NOT_PRESENT_OFFSET }, 23280 { 0x1f7c, 4382, UNICODE_NOT_PRESENT_OFFSET }, 23281 { 0x1f7d, 1363, UNICODE_NOT_PRESENT_OFFSET }, 23282 { 0x1f80, 4387, UNICODE_NOT_PRESENT_OFFSET }, 23283 { 0x1f81, 4394, UNICODE_NOT_PRESENT_OFFSET }, 23284 { 0x1f82, 4401, UNICODE_NOT_PRESENT_OFFSET }, 23285 { 0x1f83, 4410, UNICODE_NOT_PRESENT_OFFSET }, 23286 { 0x1f84, 4419, UNICODE_NOT_PRESENT_OFFSET }, 23287 { 0x1f85, 4428, UNICODE_NOT_PRESENT_OFFSET }, 23288 { 0x1f86, 4437, UNICODE_NOT_PRESENT_OFFSET }, 23289 { 0x1f87, 4446, UNICODE_NOT_PRESENT_OFFSET }, 23290 { 0x1f88, 4455, UNICODE_NOT_PRESENT_OFFSET }, 23291 { 0x1f89, 4462, UNICODE_NOT_PRESENT_OFFSET }, 23292 { 0x1f8a, 4469, UNICODE_NOT_PRESENT_OFFSET }, 23293 { 0x1f8b, 4478, UNICODE_NOT_PRESENT_OFFSET }, 23294 { 0x1f8c, 4487, UNICODE_NOT_PRESENT_OFFSET }, 23295 { 0x1f8d, 4496, UNICODE_NOT_PRESENT_OFFSET }, 23296 { 0x1f8e, 4505, UNICODE_NOT_PRESENT_OFFSET }, 23297 { 0x1f8f, 4514, UNICODE_NOT_PRESENT_OFFSET }, 23298 { 0x1f90, 4523, UNICODE_NOT_PRESENT_OFFSET }, 23299 { 0x1f91, 4530, UNICODE_NOT_PRESENT_OFFSET }, 23300 { 0x1f92, 4537, UNICODE_NOT_PRESENT_OFFSET }, 23301 { 0x1f93, 4546, UNICODE_NOT_PRESENT_OFFSET }, 23302 { 0x1f94, 4555, UNICODE_NOT_PRESENT_OFFSET }, 23303 { 0x1f95, 4564, UNICODE_NOT_PRESENT_OFFSET }, 23304 { 0x1f96, 4573, UNICODE_NOT_PRESENT_OFFSET }, 23305 { 0x1f97, 4582, UNICODE_NOT_PRESENT_OFFSET }, 23306 { 0x1f98, 4591, UNICODE_NOT_PRESENT_OFFSET }, 23307 { 0x1f99, 4598, UNICODE_NOT_PRESENT_OFFSET }, 23308 { 0x1f9a, 4605, UNICODE_NOT_PRESENT_OFFSET }, 23309 { 0x1f9b, 4614, UNICODE_NOT_PRESENT_OFFSET }, 23310 { 0x1f9c, 4623, UNICODE_NOT_PRESENT_OFFSET }, 23311 { 0x1f9d, 4632, UNICODE_NOT_PRESENT_OFFSET }, 23312 { 0x1f9e, 4641, UNICODE_NOT_PRESENT_OFFSET }, 23313 { 0x1f9f, 4650, UNICODE_NOT_PRESENT_OFFSET }, 23314 { 0x1fa0, 4659, UNICODE_NOT_PRESENT_OFFSET }, 23315 { 0x1fa1, 4666, UNICODE_NOT_PRESENT_OFFSET }, 23316 { 0x1fa2, 4673, UNICODE_NOT_PRESENT_OFFSET }, 23317 { 0x1fa3, 4682, UNICODE_NOT_PRESENT_OFFSET }, 23318 { 0x1fa4, 4691, UNICODE_NOT_PRESENT_OFFSET }, 23319 { 0x1fa5, 4700, UNICODE_NOT_PRESENT_OFFSET }, 23320 { 0x1fa6, 4709, UNICODE_NOT_PRESENT_OFFSET }, 23321 { 0x1fa7, 4718, UNICODE_NOT_PRESENT_OFFSET }, 23322 { 0x1fa8, 4727, UNICODE_NOT_PRESENT_OFFSET }, 23323 { 0x1fa9, 4734, UNICODE_NOT_PRESENT_OFFSET }, 23324 { 0x1faa, 4741, UNICODE_NOT_PRESENT_OFFSET }, 23325 { 0x1fab, 4750, UNICODE_NOT_PRESENT_OFFSET }, 23326 { 0x1fac, 4759, UNICODE_NOT_PRESENT_OFFSET }, 23327 { 0x1fad, 4768, UNICODE_NOT_PRESENT_OFFSET }, 23328 { 0x1fae, 4777, UNICODE_NOT_PRESENT_OFFSET }, 23329 { 0x1faf, 4786, UNICODE_NOT_PRESENT_OFFSET }, 23330 { 0x1fb0, 4795, UNICODE_NOT_PRESENT_OFFSET }, 23331 { 0x1fb1, 4800, UNICODE_NOT_PRESENT_OFFSET }, 23332 { 0x1fb2, 4805, UNICODE_NOT_PRESENT_OFFSET }, 23333 { 0x1fb3, 4812, UNICODE_NOT_PRESENT_OFFSET }, 23334 { 0x1fb4, 4817, UNICODE_NOT_PRESENT_OFFSET }, 23335 { 0x1fb6, 4824, UNICODE_NOT_PRESENT_OFFSET }, 23336 { 0x1fb7, 4829, UNICODE_NOT_PRESENT_OFFSET }, 23337 { 0x1fb8, 4836, UNICODE_NOT_PRESENT_OFFSET }, 23338 { 0x1fb9, 4841, UNICODE_NOT_PRESENT_OFFSET }, 23339 { 0x1fba, 4846, UNICODE_NOT_PRESENT_OFFSET }, 23340 { 0x1fbb, 1261, UNICODE_NOT_PRESENT_OFFSET }, 23341 { 0x1fbc, 4851, UNICODE_NOT_PRESENT_OFFSET }, 23342 { 0x1fbd, UNICODE_NOT_PRESENT_OFFSET, 4856 }, 23343 { 0x1fbe, 4860, UNICODE_NOT_PRESENT_OFFSET }, 23344 { 0x1fbf, UNICODE_NOT_PRESENT_OFFSET, 4856 }, 23345 { 0x1fc0, UNICODE_NOT_PRESENT_OFFSET, 4863 }, 23346 { 0x1fc1, 4867, 4872 }, 23347 { 0x1fc2, 4878, UNICODE_NOT_PRESENT_OFFSET }, 23348 { 0x1fc3, 4885, UNICODE_NOT_PRESENT_OFFSET }, 23349 { 0x1fc4, 4890, UNICODE_NOT_PRESENT_OFFSET }, 23350 { 0x1fc6, 4897, UNICODE_NOT_PRESENT_OFFSET }, 23351 { 0x1fc7, 4902, UNICODE_NOT_PRESENT_OFFSET }, 23352 { 0x1fc8, 4909, UNICODE_NOT_PRESENT_OFFSET }, 23353 { 0x1fc9, 1269, UNICODE_NOT_PRESENT_OFFSET }, 23354 { 0x1fca, 4914, UNICODE_NOT_PRESENT_OFFSET }, 23355 { 0x1fcb, 1274, UNICODE_NOT_PRESENT_OFFSET }, 23356 { 0x1fcc, 4919, UNICODE_NOT_PRESENT_OFFSET }, 23357 { 0x1fcd, 4924, 4930 }, 23358 { 0x1fce, 4936, 4942 }, 23359 { 0x1fcf, 4948, 4954 }, 23360 { 0x1fd0, 4960, UNICODE_NOT_PRESENT_OFFSET }, 23361 { 0x1fd1, 4965, UNICODE_NOT_PRESENT_OFFSET }, 23362 { 0x1fd2, 4970, UNICODE_NOT_PRESENT_OFFSET }, 23363 { 0x1fd3, 1299, UNICODE_NOT_PRESENT_OFFSET }, 23364 { 0x1fd6, 4977, UNICODE_NOT_PRESENT_OFFSET }, 23365 { 0x1fd7, 4982, UNICODE_NOT_PRESENT_OFFSET }, 23366 { 0x1fd8, 4989, UNICODE_NOT_PRESENT_OFFSET }, 23367 { 0x1fd9, 4994, UNICODE_NOT_PRESENT_OFFSET }, 23368 { 0x1fda, 4999, UNICODE_NOT_PRESENT_OFFSET }, 23369 { 0x1fdb, 1279, UNICODE_NOT_PRESENT_OFFSET }, 23370 { 0x1fdd, 5004, 5010 }, 23371 { 0x1fde, 5016, 5022 }, 23372 { 0x1fdf, 5028, 5034 }, 23373 { 0x1fe0, 5040, UNICODE_NOT_PRESENT_OFFSET }, 23374 { 0x1fe1, 5045, UNICODE_NOT_PRESENT_OFFSET }, 23375 { 0x1fe2, 5050, UNICODE_NOT_PRESENT_OFFSET }, 23376 { 0x1fe3, 1336, UNICODE_NOT_PRESENT_OFFSET }, 23377 { 0x1fe4, 5057, UNICODE_NOT_PRESENT_OFFSET }, 23378 { 0x1fe5, 5062, UNICODE_NOT_PRESENT_OFFSET }, 23379 { 0x1fe6, 5067, UNICODE_NOT_PRESENT_OFFSET }, 23380 { 0x1fe7, 5072, UNICODE_NOT_PRESENT_OFFSET }, 23381 { 0x1fe8, 5079, UNICODE_NOT_PRESENT_OFFSET }, 23382 { 0x1fe9, 5084, UNICODE_NOT_PRESENT_OFFSET }, 23383 { 0x1fea, 5089, UNICODE_NOT_PRESENT_OFFSET }, 23384 { 0x1feb, 1289, UNICODE_NOT_PRESENT_OFFSET }, 23385 { 0x1fec, 5094, UNICODE_NOT_PRESENT_OFFSET }, 23386 { 0x1fed, 5099, 5104 }, 23387 { 0x1fee, 1250, 1255 }, 23388 { 0x1fef, 5110, UNICODE_NOT_PRESENT_OFFSET }, 23389 { 0x1ff2, 5112, UNICODE_NOT_PRESENT_OFFSET }, 23390 { 0x1ff3, 5119, UNICODE_NOT_PRESENT_OFFSET }, 23391 { 0x1ff4, 5124, UNICODE_NOT_PRESENT_OFFSET }, 23392 { 0x1ff6, 5131, UNICODE_NOT_PRESENT_OFFSET }, 23393 { 0x1ff7, 5136, UNICODE_NOT_PRESENT_OFFSET }, 23394 { 0x1ff8, 5143, UNICODE_NOT_PRESENT_OFFSET }, 23395 { 0x1ff9, 1284, UNICODE_NOT_PRESENT_OFFSET }, 23396 { 0x1ffa, 5148, UNICODE_NOT_PRESENT_OFFSET }, 23397 { 0x1ffb, 1294, UNICODE_NOT_PRESENT_OFFSET }, 23398 { 0x1ffc, 5153, UNICODE_NOT_PRESENT_OFFSET }, 23399 { 0x1ffd, 5158, 16 }, 23400 { 0x1ffe, UNICODE_NOT_PRESENT_OFFSET, 5161 }, 23401 { 0x2000, 5165, 0 }, 23402 { 0x2001, 5169, 0 }, 23403 { 0x2002, UNICODE_NOT_PRESENT_OFFSET, 0 }, 23404 { 0x2003, UNICODE_NOT_PRESENT_OFFSET, 0 }, 23405 { 0x2004, UNICODE_NOT_PRESENT_OFFSET, 0 }, 23406 { 0x2005, UNICODE_NOT_PRESENT_OFFSET, 0 }, 23407 { 0x2006, UNICODE_NOT_PRESENT_OFFSET, 0 }, 23408 { 0x2007, UNICODE_NOT_PRESENT_OFFSET, 0 }, 23409 { 0x2008, UNICODE_NOT_PRESENT_OFFSET, 0 }, 23410 { 0x2009, UNICODE_NOT_PRESENT_OFFSET, 0 }, 23411 { 0x200a, UNICODE_NOT_PRESENT_OFFSET, 0 }, 23412 { 0x2011, UNICODE_NOT_PRESENT_OFFSET, 5173 }, 23413 { 0x2017, UNICODE_NOT_PRESENT_OFFSET, 5177 }, 23414 { 0x2024, UNICODE_NOT_PRESENT_OFFSET, 5181 }, 23415 { 0x2025, UNICODE_NOT_PRESENT_OFFSET, 5183 }, 23416 { 0x2026, UNICODE_NOT_PRESENT_OFFSET, 5186 }, 23417 { 0x202f, UNICODE_NOT_PRESENT_OFFSET, 0 }, 23418 { 0x2033, UNICODE_NOT_PRESENT_OFFSET, 5190 }, 23419 { 0x2034, UNICODE_NOT_PRESENT_OFFSET, 5197 }, 23420 { 0x2036, UNICODE_NOT_PRESENT_OFFSET, 5207 }, 23421 { 0x2037, UNICODE_NOT_PRESENT_OFFSET, 5214 }, 23422 { 0x203c, UNICODE_NOT_PRESENT_OFFSET, 5224 }, 23423 { 0x203e, UNICODE_NOT_PRESENT_OFFSET, 5227 }, 23424 { 0x2047, UNICODE_NOT_PRESENT_OFFSET, 5231 }, 23425 { 0x2048, UNICODE_NOT_PRESENT_OFFSET, 5234 }, 23426 { 0x2049, UNICODE_NOT_PRESENT_OFFSET, 5237 }, 23427 { 0x2057, UNICODE_NOT_PRESENT_OFFSET, 5240 }, 23428 { 0x205f, UNICODE_NOT_PRESENT_OFFSET, 0 }, 23429 { 0x2070, UNICODE_NOT_PRESENT_OFFSET, 5253 }, 23430 { 0x2071, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 23431 { 0x2074, UNICODE_NOT_PRESENT_OFFSET, 5255 }, 23432 { 0x2075, UNICODE_NOT_PRESENT_OFFSET, 5257 }, 23433 { 0x2076, UNICODE_NOT_PRESENT_OFFSET, 5259 }, 23434 { 0x2077, UNICODE_NOT_PRESENT_OFFSET, 5261 }, 23435 { 0x2078, UNICODE_NOT_PRESENT_OFFSET, 5263 }, 23436 { 0x2079, UNICODE_NOT_PRESENT_OFFSET, 5265 }, 23437 { 0x207a, UNICODE_NOT_PRESENT_OFFSET, 5267 }, 23438 { 0x207b, UNICODE_NOT_PRESENT_OFFSET, 5269 }, 23439 { 0x207c, UNICODE_NOT_PRESENT_OFFSET, 5273 }, 23440 { 0x207d, UNICODE_NOT_PRESENT_OFFSET, 5275 }, 23441 { 0x207e, UNICODE_NOT_PRESENT_OFFSET, 5277 }, 23442 { 0x207f, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 23443 { 0x2080, UNICODE_NOT_PRESENT_OFFSET, 5253 }, 23444 { 0x2081, UNICODE_NOT_PRESENT_OFFSET, 27 }, 23445 { 0x2082, UNICODE_NOT_PRESENT_OFFSET, 12 }, 23446 { 0x2083, UNICODE_NOT_PRESENT_OFFSET, 14 }, 23447 { 0x2084, UNICODE_NOT_PRESENT_OFFSET, 5255 }, 23448 { 0x2085, UNICODE_NOT_PRESENT_OFFSET, 5257 }, 23449 { 0x2086, UNICODE_NOT_PRESENT_OFFSET, 5259 }, 23450 { 0x2087, UNICODE_NOT_PRESENT_OFFSET, 5261 }, 23451 { 0x2088, UNICODE_NOT_PRESENT_OFFSET, 5263 }, 23452 { 0x2089, UNICODE_NOT_PRESENT_OFFSET, 5265 }, 23453 { 0x208a, UNICODE_NOT_PRESENT_OFFSET, 5267 }, 23454 { 0x208b, UNICODE_NOT_PRESENT_OFFSET, 5269 }, 23455 { 0x208c, UNICODE_NOT_PRESENT_OFFSET, 5273 }, 23456 { 0x208d, UNICODE_NOT_PRESENT_OFFSET, 5275 }, 23457 { 0x208e, UNICODE_NOT_PRESENT_OFFSET, 5277 }, 23458 { 0x2090, UNICODE_NOT_PRESENT_OFFSET, 6 }, 23459 { 0x2091, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 23460 { 0x2092, UNICODE_NOT_PRESENT_OFFSET, 29 }, 23461 { 0x2093, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 23462 { 0x2094, UNICODE_NOT_PRESENT_OFFSET, 2370 }, 23463 { 0x2095, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 23464 { 0x2096, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 23465 { 0x2097, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 23466 { 0x2098, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 23467 { 0x2099, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 23468 { 0x209a, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 23469 { 0x209b, UNICODE_NOT_PRESENT_OFFSET, 711 }, 23470 { 0x209c, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 23471 { 0x20a8, UNICODE_NOT_PRESENT_OFFSET, 5281 }, 23472 { 0x2100, UNICODE_NOT_PRESENT_OFFSET, 5284 }, 23473 { 0x2101, UNICODE_NOT_PRESENT_OFFSET, 5288 }, 23474 { 0x2102, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 23475 { 0x2103, UNICODE_NOT_PRESENT_OFFSET, 5294 }, 23476 { 0x2105, UNICODE_NOT_PRESENT_OFFSET, 5298 }, 23477 { 0x2106, UNICODE_NOT_PRESENT_OFFSET, 5302 }, 23478 { 0x2107, UNICODE_NOT_PRESENT_OFFSET, 5306 }, 23479 { 0x2109, UNICODE_NOT_PRESENT_OFFSET, 5309 }, 23480 { 0x210a, UNICODE_NOT_PRESENT_OFFSET, 2379 }, 23481 { 0x210b, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 23482 { 0x210c, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 23483 { 0x210d, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 23484 { 0x210e, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 23485 { 0x210f, UNICODE_NOT_PRESENT_OFFSET, 5313 }, 23486 { 0x2110, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 23487 { 0x2111, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 23488 { 0x2112, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 23489 { 0x2113, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 23490 { 0x2115, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 23491 { 0x2116, UNICODE_NOT_PRESENT_OFFSET, 5316 }, 23492 { 0x2119, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 23493 { 0x211a, UNICODE_NOT_PRESENT_OFFSET, 5319 }, 23494 { 0x211b, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 23495 { 0x211c, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 23496 { 0x211d, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 23497 { 0x2120, UNICODE_NOT_PRESENT_OFFSET, 5321 }, 23498 { 0x2121, UNICODE_NOT_PRESENT_OFFSET, 5324 }, 23499 { 0x2122, UNICODE_NOT_PRESENT_OFFSET, 5328 }, 23500 { 0x2124, UNICODE_NOT_PRESENT_OFFSET, 5331 }, 23501 { 0x2126, 5333, UNICODE_NOT_PRESENT_OFFSET }, 23502 { 0x2128, UNICODE_NOT_PRESENT_OFFSET, 5331 }, 23503 { 0x212a, 2331, UNICODE_NOT_PRESENT_OFFSET }, 23504 { 0x212b, 69, UNICODE_NOT_PRESENT_OFFSET }, 23505 { 0x212c, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 23506 { 0x212d, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 23507 { 0x212f, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 23508 { 0x2130, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 23509 { 0x2131, UNICODE_NOT_PRESENT_OFFSET, 5336 }, 23510 { 0x2133, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 23511 { 0x2134, UNICODE_NOT_PRESENT_OFFSET, 29 }, 23512 { 0x2135, UNICODE_NOT_PRESENT_OFFSET, 5338 }, 23513 { 0x2136, UNICODE_NOT_PRESENT_OFFSET, 5341 }, 23514 { 0x2137, UNICODE_NOT_PRESENT_OFFSET, 5344 }, 23515 { 0x2138, UNICODE_NOT_PRESENT_OFFSET, 5347 }, 23516 { 0x2139, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 23517 { 0x213b, UNICODE_NOT_PRESENT_OFFSET, 5350 }, 23518 { 0x213c, UNICODE_NOT_PRESENT_OFFSET, 1390 }, 23519 { 0x213d, UNICODE_NOT_PRESENT_OFFSET, 2418 }, 23520 { 0x213e, UNICODE_NOT_PRESENT_OFFSET, 5354 }, 23521 { 0x213f, UNICODE_NOT_PRESENT_OFFSET, 5357 }, 23522 { 0x2140, UNICODE_NOT_PRESENT_OFFSET, 5360 }, 23523 { 0x2145, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 23524 { 0x2146, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 23525 { 0x2147, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 23526 { 0x2148, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 23527 { 0x2149, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 23528 { 0x2150, UNICODE_NOT_PRESENT_OFFSET, 5364 }, 23529 { 0x2151, UNICODE_NOT_PRESENT_OFFSET, 5370 }, 23530 { 0x2152, UNICODE_NOT_PRESENT_OFFSET, 5376 }, 23531 { 0x2153, UNICODE_NOT_PRESENT_OFFSET, 5383 }, 23532 { 0x2154, UNICODE_NOT_PRESENT_OFFSET, 5389 }, 23533 { 0x2155, UNICODE_NOT_PRESENT_OFFSET, 5395 }, 23534 { 0x2156, UNICODE_NOT_PRESENT_OFFSET, 5401 }, 23535 { 0x2157, UNICODE_NOT_PRESENT_OFFSET, 5407 }, 23536 { 0x2158, UNICODE_NOT_PRESENT_OFFSET, 5413 }, 23537 { 0x2159, UNICODE_NOT_PRESENT_OFFSET, 5419 }, 23538 { 0x215a, UNICODE_NOT_PRESENT_OFFSET, 5425 }, 23539 { 0x215b, UNICODE_NOT_PRESENT_OFFSET, 5431 }, 23540 { 0x215c, UNICODE_NOT_PRESENT_OFFSET, 5437 }, 23541 { 0x215d, UNICODE_NOT_PRESENT_OFFSET, 5443 }, 23542 { 0x215e, UNICODE_NOT_PRESENT_OFFSET, 5449 }, 23543 { 0x215f, UNICODE_NOT_PRESENT_OFFSET, 5455 }, 23544 { 0x2160, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 23545 { 0x2161, UNICODE_NOT_PRESENT_OFFSET, 5460 }, 23546 { 0x2162, UNICODE_NOT_PRESENT_OFFSET, 5463 }, 23547 { 0x2163, UNICODE_NOT_PRESENT_OFFSET, 5467 }, 23548 { 0x2164, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 23549 { 0x2165, UNICODE_NOT_PRESENT_OFFSET, 5472 }, 23550 { 0x2166, UNICODE_NOT_PRESENT_OFFSET, 5475 }, 23551 { 0x2167, UNICODE_NOT_PRESENT_OFFSET, 5479 }, 23552 { 0x2168, UNICODE_NOT_PRESENT_OFFSET, 5484 }, 23553 { 0x2169, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 23554 { 0x216a, UNICODE_NOT_PRESENT_OFFSET, 5489 }, 23555 { 0x216b, UNICODE_NOT_PRESENT_OFFSET, 5492 }, 23556 { 0x216c, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 23557 { 0x216d, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 23558 { 0x216e, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 23559 { 0x216f, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 23560 { 0x2170, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 23561 { 0x2171, UNICODE_NOT_PRESENT_OFFSET, 5496 }, 23562 { 0x2172, UNICODE_NOT_PRESENT_OFFSET, 5499 }, 23563 { 0x2173, UNICODE_NOT_PRESENT_OFFSET, 5503 }, 23564 { 0x2174, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 23565 { 0x2175, UNICODE_NOT_PRESENT_OFFSET, 5506 }, 23566 { 0x2176, UNICODE_NOT_PRESENT_OFFSET, 5509 }, 23567 { 0x2177, UNICODE_NOT_PRESENT_OFFSET, 5513 }, 23568 { 0x2178, UNICODE_NOT_PRESENT_OFFSET, 5518 }, 23569 { 0x2179, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 23570 { 0x217a, UNICODE_NOT_PRESENT_OFFSET, 5521 }, 23571 { 0x217b, UNICODE_NOT_PRESENT_OFFSET, 5524 }, 23572 { 0x217c, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 23573 { 0x217d, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 23574 { 0x217e, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 23575 { 0x217f, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 23576 { 0x2189, UNICODE_NOT_PRESENT_OFFSET, 5528 }, 23577 { 0x219a, 5534, UNICODE_NOT_PRESENT_OFFSET }, 23578 { 0x219b, 5540, UNICODE_NOT_PRESENT_OFFSET }, 23579 { 0x21ae, 5546, UNICODE_NOT_PRESENT_OFFSET }, 23580 { 0x21cd, 5552, UNICODE_NOT_PRESENT_OFFSET }, 23581 { 0x21ce, 5558, UNICODE_NOT_PRESENT_OFFSET }, 23582 { 0x21cf, 5564, UNICODE_NOT_PRESENT_OFFSET }, 23583 { 0x2204, 5570, UNICODE_NOT_PRESENT_OFFSET }, 23584 { 0x2209, 5576, UNICODE_NOT_PRESENT_OFFSET }, 23585 { 0x220c, 5582, UNICODE_NOT_PRESENT_OFFSET }, 23586 { 0x2224, 5588, UNICODE_NOT_PRESENT_OFFSET }, 23587 { 0x2226, 5594, UNICODE_NOT_PRESENT_OFFSET }, 23588 { 0x222c, UNICODE_NOT_PRESENT_OFFSET, 5600 }, 23589 { 0x222d, UNICODE_NOT_PRESENT_OFFSET, 5607 }, 23590 { 0x222f, UNICODE_NOT_PRESENT_OFFSET, 5617 }, 23591 { 0x2230, UNICODE_NOT_PRESENT_OFFSET, 5624 }, 23592 { 0x2241, 5634, UNICODE_NOT_PRESENT_OFFSET }, 23593 { 0x2244, 5640, UNICODE_NOT_PRESENT_OFFSET }, 23594 { 0x2247, 5646, UNICODE_NOT_PRESENT_OFFSET }, 23595 { 0x2249, 5652, UNICODE_NOT_PRESENT_OFFSET }, 23596 { 0x2260, 5658, UNICODE_NOT_PRESENT_OFFSET }, 23597 { 0x2262, 5662, UNICODE_NOT_PRESENT_OFFSET }, 23598 { 0x226d, 5668, UNICODE_NOT_PRESENT_OFFSET }, 23599 { 0x226e, 5674, UNICODE_NOT_PRESENT_OFFSET }, 23600 { 0x226f, 5678, UNICODE_NOT_PRESENT_OFFSET }, 23601 { 0x2270, 5682, UNICODE_NOT_PRESENT_OFFSET }, 23602 { 0x2271, 5688, UNICODE_NOT_PRESENT_OFFSET }, 23603 { 0x2274, 5694, UNICODE_NOT_PRESENT_OFFSET }, 23604 { 0x2275, 5700, UNICODE_NOT_PRESENT_OFFSET }, 23605 { 0x2278, 5706, UNICODE_NOT_PRESENT_OFFSET }, 23606 { 0x2279, 5712, UNICODE_NOT_PRESENT_OFFSET }, 23607 { 0x2280, 5718, UNICODE_NOT_PRESENT_OFFSET }, 23608 { 0x2281, 5724, UNICODE_NOT_PRESENT_OFFSET }, 23609 { 0x2284, 5730, UNICODE_NOT_PRESENT_OFFSET }, 23610 { 0x2285, 5736, UNICODE_NOT_PRESENT_OFFSET }, 23611 { 0x2288, 5742, UNICODE_NOT_PRESENT_OFFSET }, 23612 { 0x2289, 5748, UNICODE_NOT_PRESENT_OFFSET }, 23613 { 0x22ac, 5754, UNICODE_NOT_PRESENT_OFFSET }, 23614 { 0x22ad, 5760, UNICODE_NOT_PRESENT_OFFSET }, 23615 { 0x22ae, 5766, UNICODE_NOT_PRESENT_OFFSET }, 23616 { 0x22af, 5772, UNICODE_NOT_PRESENT_OFFSET }, 23617 { 0x22e0, 5778, UNICODE_NOT_PRESENT_OFFSET }, 23618 { 0x22e1, 5784, UNICODE_NOT_PRESENT_OFFSET }, 23619 { 0x22e2, 5790, UNICODE_NOT_PRESENT_OFFSET }, 23620 { 0x22e3, 5796, UNICODE_NOT_PRESENT_OFFSET }, 23621 { 0x22ea, 5802, UNICODE_NOT_PRESENT_OFFSET }, 23622 { 0x22eb, 5808, UNICODE_NOT_PRESENT_OFFSET }, 23623 { 0x22ec, 5814, UNICODE_NOT_PRESENT_OFFSET }, 23624 { 0x22ed, 5820, UNICODE_NOT_PRESENT_OFFSET }, 23625 { 0x2329, 5826, UNICODE_NOT_PRESENT_OFFSET }, 23626 { 0x232a, 5830, UNICODE_NOT_PRESENT_OFFSET }, 23627 { 0x2460, UNICODE_NOT_PRESENT_OFFSET, 27 }, 23628 { 0x2461, UNICODE_NOT_PRESENT_OFFSET, 12 }, 23629 { 0x2462, UNICODE_NOT_PRESENT_OFFSET, 14 }, 23630 { 0x2463, UNICODE_NOT_PRESENT_OFFSET, 5255 }, 23631 { 0x2464, UNICODE_NOT_PRESENT_OFFSET, 5257 }, 23632 { 0x2465, UNICODE_NOT_PRESENT_OFFSET, 5259 }, 23633 { 0x2466, UNICODE_NOT_PRESENT_OFFSET, 5261 }, 23634 { 0x2467, UNICODE_NOT_PRESENT_OFFSET, 5263 }, 23635 { 0x2468, UNICODE_NOT_PRESENT_OFFSET, 5265 }, 23636 { 0x2469, UNICODE_NOT_PRESENT_OFFSET, 5834 }, 23637 { 0x246a, UNICODE_NOT_PRESENT_OFFSET, 5837 }, 23638 { 0x246b, UNICODE_NOT_PRESENT_OFFSET, 5840 }, 23639 { 0x246c, UNICODE_NOT_PRESENT_OFFSET, 5843 }, 23640 { 0x246d, UNICODE_NOT_PRESENT_OFFSET, 5846 }, 23641 { 0x246e, UNICODE_NOT_PRESENT_OFFSET, 5849 }, 23642 { 0x246f, UNICODE_NOT_PRESENT_OFFSET, 5852 }, 23643 { 0x2470, UNICODE_NOT_PRESENT_OFFSET, 5855 }, 23644 { 0x2471, UNICODE_NOT_PRESENT_OFFSET, 5858 }, 23645 { 0x2472, UNICODE_NOT_PRESENT_OFFSET, 5861 }, 23646 { 0x2473, UNICODE_NOT_PRESENT_OFFSET, 5864 }, 23647 { 0x2474, UNICODE_NOT_PRESENT_OFFSET, 5867 }, 23648 { 0x2475, UNICODE_NOT_PRESENT_OFFSET, 5871 }, 23649 { 0x2476, UNICODE_NOT_PRESENT_OFFSET, 5875 }, 23650 { 0x2477, UNICODE_NOT_PRESENT_OFFSET, 5879 }, 23651 { 0x2478, UNICODE_NOT_PRESENT_OFFSET, 5883 }, 23652 { 0x2479, UNICODE_NOT_PRESENT_OFFSET, 5887 }, 23653 { 0x247a, UNICODE_NOT_PRESENT_OFFSET, 5891 }, 23654 { 0x247b, UNICODE_NOT_PRESENT_OFFSET, 5895 }, 23655 { 0x247c, UNICODE_NOT_PRESENT_OFFSET, 5899 }, 23656 { 0x247d, UNICODE_NOT_PRESENT_OFFSET, 5903 }, 23657 { 0x247e, UNICODE_NOT_PRESENT_OFFSET, 5908 }, 23658 { 0x247f, UNICODE_NOT_PRESENT_OFFSET, 5913 }, 23659 { 0x2480, UNICODE_NOT_PRESENT_OFFSET, 5918 }, 23660 { 0x2481, UNICODE_NOT_PRESENT_OFFSET, 5923 }, 23661 { 0x2482, UNICODE_NOT_PRESENT_OFFSET, 5928 }, 23662 { 0x2483, UNICODE_NOT_PRESENT_OFFSET, 5933 }, 23663 { 0x2484, UNICODE_NOT_PRESENT_OFFSET, 5938 }, 23664 { 0x2485, UNICODE_NOT_PRESENT_OFFSET, 5943 }, 23665 { 0x2486, UNICODE_NOT_PRESENT_OFFSET, 5948 }, 23666 { 0x2487, UNICODE_NOT_PRESENT_OFFSET, 5953 }, 23667 { 0x2488, UNICODE_NOT_PRESENT_OFFSET, 5958 }, 23668 { 0x2489, UNICODE_NOT_PRESENT_OFFSET, 5961 }, 23669 { 0x248a, UNICODE_NOT_PRESENT_OFFSET, 5964 }, 23670 { 0x248b, UNICODE_NOT_PRESENT_OFFSET, 5967 }, 23671 { 0x248c, UNICODE_NOT_PRESENT_OFFSET, 5970 }, 23672 { 0x248d, UNICODE_NOT_PRESENT_OFFSET, 5973 }, 23673 { 0x248e, UNICODE_NOT_PRESENT_OFFSET, 5976 }, 23674 { 0x248f, UNICODE_NOT_PRESENT_OFFSET, 5979 }, 23675 { 0x2490, UNICODE_NOT_PRESENT_OFFSET, 5982 }, 23676 { 0x2491, UNICODE_NOT_PRESENT_OFFSET, 5985 }, 23677 { 0x2492, UNICODE_NOT_PRESENT_OFFSET, 5989 }, 23678 { 0x2493, UNICODE_NOT_PRESENT_OFFSET, 5993 }, 23679 { 0x2494, UNICODE_NOT_PRESENT_OFFSET, 5997 }, 23680 { 0x2495, UNICODE_NOT_PRESENT_OFFSET, 6001 }, 23681 { 0x2496, UNICODE_NOT_PRESENT_OFFSET, 6005 }, 23682 { 0x2497, UNICODE_NOT_PRESENT_OFFSET, 6009 }, 23683 { 0x2498, UNICODE_NOT_PRESENT_OFFSET, 6013 }, 23684 { 0x2499, UNICODE_NOT_PRESENT_OFFSET, 6017 }, 23685 { 0x249a, UNICODE_NOT_PRESENT_OFFSET, 6021 }, 23686 { 0x249b, UNICODE_NOT_PRESENT_OFFSET, 6025 }, 23687 { 0x249c, UNICODE_NOT_PRESENT_OFFSET, 6029 }, 23688 { 0x249d, UNICODE_NOT_PRESENT_OFFSET, 6033 }, 23689 { 0x249e, UNICODE_NOT_PRESENT_OFFSET, 6037 }, 23690 { 0x249f, UNICODE_NOT_PRESENT_OFFSET, 6041 }, 23691 { 0x24a0, UNICODE_NOT_PRESENT_OFFSET, 6045 }, 23692 { 0x24a1, UNICODE_NOT_PRESENT_OFFSET, 6049 }, 23693 { 0x24a2, UNICODE_NOT_PRESENT_OFFSET, 6053 }, 23694 { 0x24a3, UNICODE_NOT_PRESENT_OFFSET, 6057 }, 23695 { 0x24a4, UNICODE_NOT_PRESENT_OFFSET, 6061 }, 23696 { 0x24a5, UNICODE_NOT_PRESENT_OFFSET, 6065 }, 23697 { 0x24a6, UNICODE_NOT_PRESENT_OFFSET, 6069 }, 23698 { 0x24a7, UNICODE_NOT_PRESENT_OFFSET, 6073 }, 23699 { 0x24a8, UNICODE_NOT_PRESENT_OFFSET, 6077 }, 23700 { 0x24a9, UNICODE_NOT_PRESENT_OFFSET, 6081 }, 23701 { 0x24aa, UNICODE_NOT_PRESENT_OFFSET, 6085 }, 23702 { 0x24ab, UNICODE_NOT_PRESENT_OFFSET, 6089 }, 23703 { 0x24ac, UNICODE_NOT_PRESENT_OFFSET, 6093 }, 23704 { 0x24ad, UNICODE_NOT_PRESENT_OFFSET, 6097 }, 23705 { 0x24ae, UNICODE_NOT_PRESENT_OFFSET, 6101 }, 23706 { 0x24af, UNICODE_NOT_PRESENT_OFFSET, 6105 }, 23707 { 0x24b0, UNICODE_NOT_PRESENT_OFFSET, 6109 }, 23708 { 0x24b1, UNICODE_NOT_PRESENT_OFFSET, 6113 }, 23709 { 0x24b2, UNICODE_NOT_PRESENT_OFFSET, 6117 }, 23710 { 0x24b3, UNICODE_NOT_PRESENT_OFFSET, 6121 }, 23711 { 0x24b4, UNICODE_NOT_PRESENT_OFFSET, 6125 }, 23712 { 0x24b5, UNICODE_NOT_PRESENT_OFFSET, 6129 }, 23713 { 0x24b6, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 23714 { 0x24b7, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 23715 { 0x24b8, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 23716 { 0x24b9, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 23717 { 0x24ba, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 23718 { 0x24bb, UNICODE_NOT_PRESENT_OFFSET, 5336 }, 23719 { 0x24bc, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 23720 { 0x24bd, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 23721 { 0x24be, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 23722 { 0x24bf, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 23723 { 0x24c0, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 23724 { 0x24c1, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 23725 { 0x24c2, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 23726 { 0x24c3, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 23727 { 0x24c4, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 23728 { 0x24c5, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 23729 { 0x24c6, UNICODE_NOT_PRESENT_OFFSET, 5319 }, 23730 { 0x24c7, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 23731 { 0x24c8, UNICODE_NOT_PRESENT_OFFSET, 6133 }, 23732 { 0x24c9, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 23733 { 0x24ca, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 23734 { 0x24cb, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 23735 { 0x24cc, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 23736 { 0x24cd, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 23737 { 0x24ce, UNICODE_NOT_PRESENT_OFFSET, 6135 }, 23738 { 0x24cf, UNICODE_NOT_PRESENT_OFFSET, 5331 }, 23739 { 0x24d0, UNICODE_NOT_PRESENT_OFFSET, 6 }, 23740 { 0x24d1, UNICODE_NOT_PRESENT_OFFSET, 2364 }, 23741 { 0x24d2, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 23742 { 0x24d3, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 23743 { 0x24d4, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 23744 { 0x24d5, UNICODE_NOT_PRESENT_OFFSET, 2443 }, 23745 { 0x24d6, UNICODE_NOT_PRESENT_OFFSET, 2379 }, 23746 { 0x24d7, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 23747 { 0x24d8, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 23748 { 0x24d9, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 23749 { 0x24da, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 23750 { 0x24db, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 23751 { 0x24dc, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 23752 { 0x24dd, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 23753 { 0x24de, UNICODE_NOT_PRESENT_OFFSET, 29 }, 23754 { 0x24df, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 23755 { 0x24e0, UNICODE_NOT_PRESENT_OFFSET, 6137 }, 23756 { 0x24e1, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 23757 { 0x24e2, UNICODE_NOT_PRESENT_OFFSET, 711 }, 23758 { 0x24e3, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 23759 { 0x24e4, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 23760 { 0x24e5, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 23761 { 0x24e6, UNICODE_NOT_PRESENT_OFFSET, 1189 }, 23762 { 0x24e7, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 23763 { 0x24e8, UNICODE_NOT_PRESENT_OFFSET, 1191 }, 23764 { 0x24e9, UNICODE_NOT_PRESENT_OFFSET, 2526 }, 23765 { 0x24ea, UNICODE_NOT_PRESENT_OFFSET, 5253 }, 23766 { 0x2a0c, UNICODE_NOT_PRESENT_OFFSET, 6139 }, 23767 { 0x2a74, UNICODE_NOT_PRESENT_OFFSET, 6152 }, 23768 { 0x2a75, UNICODE_NOT_PRESENT_OFFSET, 6156 }, 23769 { 0x2a76, UNICODE_NOT_PRESENT_OFFSET, 6159 }, 23770 { 0x2adc, 6163, UNICODE_NOT_PRESENT_OFFSET }, 23771 { 0x2c7c, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 23772 { 0x2c7d, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 23773 { 0x2d6f, UNICODE_NOT_PRESENT_OFFSET, 6169 }, 23774 { 0x2e9f, UNICODE_NOT_PRESENT_OFFSET, 6173 }, 23775 { 0x2ef3, UNICODE_NOT_PRESENT_OFFSET, 6177 }, 23776 { 0x2f00, UNICODE_NOT_PRESENT_OFFSET, 6181 }, 23777 { 0x2f01, UNICODE_NOT_PRESENT_OFFSET, 6185 }, 23778 { 0x2f02, UNICODE_NOT_PRESENT_OFFSET, 6189 }, 23779 { 0x2f03, UNICODE_NOT_PRESENT_OFFSET, 6193 }, 23780 { 0x2f04, UNICODE_NOT_PRESENT_OFFSET, 6197 }, 23781 { 0x2f05, UNICODE_NOT_PRESENT_OFFSET, 6201 }, 23782 { 0x2f06, UNICODE_NOT_PRESENT_OFFSET, 6205 }, 23783 { 0x2f07, UNICODE_NOT_PRESENT_OFFSET, 6209 }, 23784 { 0x2f08, UNICODE_NOT_PRESENT_OFFSET, 6213 }, 23785 { 0x2f09, UNICODE_NOT_PRESENT_OFFSET, 6217 }, 23786 { 0x2f0a, UNICODE_NOT_PRESENT_OFFSET, 6221 }, 23787 { 0x2f0b, UNICODE_NOT_PRESENT_OFFSET, 6225 }, 23788 { 0x2f0c, UNICODE_NOT_PRESENT_OFFSET, 6229 }, 23789 { 0x2f0d, UNICODE_NOT_PRESENT_OFFSET, 6233 }, 23790 { 0x2f0e, UNICODE_NOT_PRESENT_OFFSET, 6237 }, 23791 { 0x2f0f, UNICODE_NOT_PRESENT_OFFSET, 6241 }, 23792 { 0x2f10, UNICODE_NOT_PRESENT_OFFSET, 6245 }, 23793 { 0x2f11, UNICODE_NOT_PRESENT_OFFSET, 6249 }, 23794 { 0x2f12, UNICODE_NOT_PRESENT_OFFSET, 6253 }, 23795 { 0x2f13, UNICODE_NOT_PRESENT_OFFSET, 6257 }, 23796 { 0x2f14, UNICODE_NOT_PRESENT_OFFSET, 6261 }, 23797 { 0x2f15, UNICODE_NOT_PRESENT_OFFSET, 6265 }, 23798 { 0x2f16, UNICODE_NOT_PRESENT_OFFSET, 6269 }, 23799 { 0x2f17, UNICODE_NOT_PRESENT_OFFSET, 6273 }, 23800 { 0x2f18, UNICODE_NOT_PRESENT_OFFSET, 6277 }, 23801 { 0x2f19, UNICODE_NOT_PRESENT_OFFSET, 6281 }, 23802 { 0x2f1a, UNICODE_NOT_PRESENT_OFFSET, 6285 }, 23803 { 0x2f1b, UNICODE_NOT_PRESENT_OFFSET, 6289 }, 23804 { 0x2f1c, UNICODE_NOT_PRESENT_OFFSET, 6293 }, 23805 { 0x2f1d, UNICODE_NOT_PRESENT_OFFSET, 6297 }, 23806 { 0x2f1e, UNICODE_NOT_PRESENT_OFFSET, 6301 }, 23807 { 0x2f1f, UNICODE_NOT_PRESENT_OFFSET, 6305 }, 23808 { 0x2f20, UNICODE_NOT_PRESENT_OFFSET, 6309 }, 23809 { 0x2f21, UNICODE_NOT_PRESENT_OFFSET, 6313 }, 23810 { 0x2f22, UNICODE_NOT_PRESENT_OFFSET, 6317 }, 23811 { 0x2f23, UNICODE_NOT_PRESENT_OFFSET, 6321 }, 23812 { 0x2f24, UNICODE_NOT_PRESENT_OFFSET, 6325 }, 23813 { 0x2f25, UNICODE_NOT_PRESENT_OFFSET, 6329 }, 23814 { 0x2f26, UNICODE_NOT_PRESENT_OFFSET, 6333 }, 23815 { 0x2f27, UNICODE_NOT_PRESENT_OFFSET, 6337 }, 23816 { 0x2f28, UNICODE_NOT_PRESENT_OFFSET, 6341 }, 23817 { 0x2f29, UNICODE_NOT_PRESENT_OFFSET, 6345 }, 23818 { 0x2f2a, UNICODE_NOT_PRESENT_OFFSET, 6349 }, 23819 { 0x2f2b, UNICODE_NOT_PRESENT_OFFSET, 6353 }, 23820 { 0x2f2c, UNICODE_NOT_PRESENT_OFFSET, 6357 }, 23821 { 0x2f2d, UNICODE_NOT_PRESENT_OFFSET, 6361 }, 23822 { 0x2f2e, UNICODE_NOT_PRESENT_OFFSET, 6365 }, 23823 { 0x2f2f, UNICODE_NOT_PRESENT_OFFSET, 6369 }, 23824 { 0x2f30, UNICODE_NOT_PRESENT_OFFSET, 6373 }, 23825 { 0x2f31, UNICODE_NOT_PRESENT_OFFSET, 6377 }, 23826 { 0x2f32, UNICODE_NOT_PRESENT_OFFSET, 6381 }, 23827 { 0x2f33, UNICODE_NOT_PRESENT_OFFSET, 6385 }, 23828 { 0x2f34, UNICODE_NOT_PRESENT_OFFSET, 6389 }, 23829 { 0x2f35, UNICODE_NOT_PRESENT_OFFSET, 6393 }, 23830 { 0x2f36, UNICODE_NOT_PRESENT_OFFSET, 6397 }, 23831 { 0x2f37, UNICODE_NOT_PRESENT_OFFSET, 6401 }, 23832 { 0x2f38, UNICODE_NOT_PRESENT_OFFSET, 6405 }, 23833 { 0x2f39, UNICODE_NOT_PRESENT_OFFSET, 6409 }, 23834 { 0x2f3a, UNICODE_NOT_PRESENT_OFFSET, 6413 }, 23835 { 0x2f3b, UNICODE_NOT_PRESENT_OFFSET, 6417 }, 23836 { 0x2f3c, UNICODE_NOT_PRESENT_OFFSET, 6421 }, 23837 { 0x2f3d, UNICODE_NOT_PRESENT_OFFSET, 6425 }, 23838 { 0x2f3e, UNICODE_NOT_PRESENT_OFFSET, 6429 }, 23839 { 0x2f3f, UNICODE_NOT_PRESENT_OFFSET, 6433 }, 23840 { 0x2f40, UNICODE_NOT_PRESENT_OFFSET, 6437 }, 23841 { 0x2f41, UNICODE_NOT_PRESENT_OFFSET, 6441 }, 23842 { 0x2f42, UNICODE_NOT_PRESENT_OFFSET, 6445 }, 23843 { 0x2f43, UNICODE_NOT_PRESENT_OFFSET, 6449 }, 23844 { 0x2f44, UNICODE_NOT_PRESENT_OFFSET, 6453 }, 23845 { 0x2f45, UNICODE_NOT_PRESENT_OFFSET, 6457 }, 23846 { 0x2f46, UNICODE_NOT_PRESENT_OFFSET, 6461 }, 23847 { 0x2f47, UNICODE_NOT_PRESENT_OFFSET, 6465 }, 23848 { 0x2f48, UNICODE_NOT_PRESENT_OFFSET, 6469 }, 23849 { 0x2f49, UNICODE_NOT_PRESENT_OFFSET, 6473 }, 23850 { 0x2f4a, UNICODE_NOT_PRESENT_OFFSET, 6477 }, 23851 { 0x2f4b, UNICODE_NOT_PRESENT_OFFSET, 6481 }, 23852 { 0x2f4c, UNICODE_NOT_PRESENT_OFFSET, 6485 }, 23853 { 0x2f4d, UNICODE_NOT_PRESENT_OFFSET, 6489 }, 23854 { 0x2f4e, UNICODE_NOT_PRESENT_OFFSET, 6493 }, 23855 { 0x2f4f, UNICODE_NOT_PRESENT_OFFSET, 6497 }, 23856 { 0x2f50, UNICODE_NOT_PRESENT_OFFSET, 6501 }, 23857 { 0x2f51, UNICODE_NOT_PRESENT_OFFSET, 6505 }, 23858 { 0x2f52, UNICODE_NOT_PRESENT_OFFSET, 6509 }, 23859 { 0x2f53, UNICODE_NOT_PRESENT_OFFSET, 6513 }, 23860 { 0x2f54, UNICODE_NOT_PRESENT_OFFSET, 6517 }, 23861 { 0x2f55, UNICODE_NOT_PRESENT_OFFSET, 6521 }, 23862 { 0x2f56, UNICODE_NOT_PRESENT_OFFSET, 6525 }, 23863 { 0x2f57, UNICODE_NOT_PRESENT_OFFSET, 6529 }, 23864 { 0x2f58, UNICODE_NOT_PRESENT_OFFSET, 6533 }, 23865 { 0x2f59, UNICODE_NOT_PRESENT_OFFSET, 6537 }, 23866 { 0x2f5a, UNICODE_NOT_PRESENT_OFFSET, 6541 }, 23867 { 0x2f5b, UNICODE_NOT_PRESENT_OFFSET, 6545 }, 23868 { 0x2f5c, UNICODE_NOT_PRESENT_OFFSET, 6549 }, 23869 { 0x2f5d, UNICODE_NOT_PRESENT_OFFSET, 6553 }, 23870 { 0x2f5e, UNICODE_NOT_PRESENT_OFFSET, 6557 }, 23871 { 0x2f5f, UNICODE_NOT_PRESENT_OFFSET, 6561 }, 23872 { 0x2f60, UNICODE_NOT_PRESENT_OFFSET, 6565 }, 23873 { 0x2f61, UNICODE_NOT_PRESENT_OFFSET, 6569 }, 23874 { 0x2f62, UNICODE_NOT_PRESENT_OFFSET, 6573 }, 23875 { 0x2f63, UNICODE_NOT_PRESENT_OFFSET, 6577 }, 23876 { 0x2f64, UNICODE_NOT_PRESENT_OFFSET, 6581 }, 23877 { 0x2f65, UNICODE_NOT_PRESENT_OFFSET, 6585 }, 23878 { 0x2f66, UNICODE_NOT_PRESENT_OFFSET, 6589 }, 23879 { 0x2f67, UNICODE_NOT_PRESENT_OFFSET, 6593 }, 23880 { 0x2f68, UNICODE_NOT_PRESENT_OFFSET, 6597 }, 23881 { 0x2f69, UNICODE_NOT_PRESENT_OFFSET, 6601 }, 23882 { 0x2f6a, UNICODE_NOT_PRESENT_OFFSET, 6605 }, 23883 { 0x2f6b, UNICODE_NOT_PRESENT_OFFSET, 6609 }, 23884 { 0x2f6c, UNICODE_NOT_PRESENT_OFFSET, 6613 }, 23885 { 0x2f6d, UNICODE_NOT_PRESENT_OFFSET, 6617 }, 23886 { 0x2f6e, UNICODE_NOT_PRESENT_OFFSET, 6621 }, 23887 { 0x2f6f, UNICODE_NOT_PRESENT_OFFSET, 6625 }, 23888 { 0x2f70, UNICODE_NOT_PRESENT_OFFSET, 6629 }, 23889 { 0x2f71, UNICODE_NOT_PRESENT_OFFSET, 6633 }, 23890 { 0x2f72, UNICODE_NOT_PRESENT_OFFSET, 6637 }, 23891 { 0x2f73, UNICODE_NOT_PRESENT_OFFSET, 6641 }, 23892 { 0x2f74, UNICODE_NOT_PRESENT_OFFSET, 6645 }, 23893 { 0x2f75, UNICODE_NOT_PRESENT_OFFSET, 6649 }, 23894 { 0x2f76, UNICODE_NOT_PRESENT_OFFSET, 6653 }, 23895 { 0x2f77, UNICODE_NOT_PRESENT_OFFSET, 6657 }, 23896 { 0x2f78, UNICODE_NOT_PRESENT_OFFSET, 6661 }, 23897 { 0x2f79, UNICODE_NOT_PRESENT_OFFSET, 6665 }, 23898 { 0x2f7a, UNICODE_NOT_PRESENT_OFFSET, 6669 }, 23899 { 0x2f7b, UNICODE_NOT_PRESENT_OFFSET, 6673 }, 23900 { 0x2f7c, UNICODE_NOT_PRESENT_OFFSET, 6677 }, 23901 { 0x2f7d, UNICODE_NOT_PRESENT_OFFSET, 6681 }, 23902 { 0x2f7e, UNICODE_NOT_PRESENT_OFFSET, 6685 }, 23903 { 0x2f7f, UNICODE_NOT_PRESENT_OFFSET, 6689 }, 23904 { 0x2f80, UNICODE_NOT_PRESENT_OFFSET, 6693 }, 23905 { 0x2f81, UNICODE_NOT_PRESENT_OFFSET, 6697 }, 23906 { 0x2f82, UNICODE_NOT_PRESENT_OFFSET, 6701 }, 23907 { 0x2f83, UNICODE_NOT_PRESENT_OFFSET, 6705 }, 23908 { 0x2f84, UNICODE_NOT_PRESENT_OFFSET, 6709 }, 23909 { 0x2f85, UNICODE_NOT_PRESENT_OFFSET, 6713 }, 23910 { 0x2f86, UNICODE_NOT_PRESENT_OFFSET, 6717 }, 23911 { 0x2f87, UNICODE_NOT_PRESENT_OFFSET, 6721 }, 23912 { 0x2f88, UNICODE_NOT_PRESENT_OFFSET, 6725 }, 23913 { 0x2f89, UNICODE_NOT_PRESENT_OFFSET, 6729 }, 23914 { 0x2f8a, UNICODE_NOT_PRESENT_OFFSET, 6733 }, 23915 { 0x2f8b, UNICODE_NOT_PRESENT_OFFSET, 6737 }, 23916 { 0x2f8c, UNICODE_NOT_PRESENT_OFFSET, 6741 }, 23917 { 0x2f8d, UNICODE_NOT_PRESENT_OFFSET, 6745 }, 23918 { 0x2f8e, UNICODE_NOT_PRESENT_OFFSET, 6749 }, 23919 { 0x2f8f, UNICODE_NOT_PRESENT_OFFSET, 6753 }, 23920 { 0x2f90, UNICODE_NOT_PRESENT_OFFSET, 6757 }, 23921 { 0x2f91, UNICODE_NOT_PRESENT_OFFSET, 6761 }, 23922 { 0x2f92, UNICODE_NOT_PRESENT_OFFSET, 6765 }, 23923 { 0x2f93, UNICODE_NOT_PRESENT_OFFSET, 6769 }, 23924 { 0x2f94, UNICODE_NOT_PRESENT_OFFSET, 6773 }, 23925 { 0x2f95, UNICODE_NOT_PRESENT_OFFSET, 6777 }, 23926 { 0x2f96, UNICODE_NOT_PRESENT_OFFSET, 6781 }, 23927 { 0x2f97, UNICODE_NOT_PRESENT_OFFSET, 6785 }, 23928 { 0x2f98, UNICODE_NOT_PRESENT_OFFSET, 6789 }, 23929 { 0x2f99, UNICODE_NOT_PRESENT_OFFSET, 6793 }, 23930 { 0x2f9a, UNICODE_NOT_PRESENT_OFFSET, 6797 }, 23931 { 0x2f9b, UNICODE_NOT_PRESENT_OFFSET, 6801 }, 23932 { 0x2f9c, UNICODE_NOT_PRESENT_OFFSET, 6805 }, 23933 { 0x2f9d, UNICODE_NOT_PRESENT_OFFSET, 6809 }, 23934 { 0x2f9e, UNICODE_NOT_PRESENT_OFFSET, 6813 }, 23935 { 0x2f9f, UNICODE_NOT_PRESENT_OFFSET, 6817 }, 23936 { 0x2fa0, UNICODE_NOT_PRESENT_OFFSET, 6821 }, 23937 { 0x2fa1, UNICODE_NOT_PRESENT_OFFSET, 6825 }, 23938 { 0x2fa2, UNICODE_NOT_PRESENT_OFFSET, 6829 }, 23939 { 0x2fa3, UNICODE_NOT_PRESENT_OFFSET, 6833 }, 23940 { 0x2fa4, UNICODE_NOT_PRESENT_OFFSET, 6837 }, 23941 { 0x2fa5, UNICODE_NOT_PRESENT_OFFSET, 6841 }, 23942 { 0x2fa6, UNICODE_NOT_PRESENT_OFFSET, 6845 }, 23943 { 0x2fa7, UNICODE_NOT_PRESENT_OFFSET, 6849 }, 23944 { 0x2fa8, UNICODE_NOT_PRESENT_OFFSET, 6853 }, 23945 { 0x2fa9, UNICODE_NOT_PRESENT_OFFSET, 6857 }, 23946 { 0x2faa, UNICODE_NOT_PRESENT_OFFSET, 6861 }, 23947 { 0x2fab, UNICODE_NOT_PRESENT_OFFSET, 6865 }, 23948 { 0x2fac, UNICODE_NOT_PRESENT_OFFSET, 6869 }, 23949 { 0x2fad, UNICODE_NOT_PRESENT_OFFSET, 6873 }, 23950 { 0x2fae, UNICODE_NOT_PRESENT_OFFSET, 6877 }, 23951 { 0x2faf, UNICODE_NOT_PRESENT_OFFSET, 6881 }, 23952 { 0x2fb0, UNICODE_NOT_PRESENT_OFFSET, 6885 }, 23953 { 0x2fb1, UNICODE_NOT_PRESENT_OFFSET, 6889 }, 23954 { 0x2fb2, UNICODE_NOT_PRESENT_OFFSET, 6893 }, 23955 { 0x2fb3, UNICODE_NOT_PRESENT_OFFSET, 6897 }, 23956 { 0x2fb4, UNICODE_NOT_PRESENT_OFFSET, 6901 }, 23957 { 0x2fb5, UNICODE_NOT_PRESENT_OFFSET, 6905 }, 23958 { 0x2fb6, UNICODE_NOT_PRESENT_OFFSET, 6909 }, 23959 { 0x2fb7, UNICODE_NOT_PRESENT_OFFSET, 6913 }, 23960 { 0x2fb8, UNICODE_NOT_PRESENT_OFFSET, 6917 }, 23961 { 0x2fb9, UNICODE_NOT_PRESENT_OFFSET, 6921 }, 23962 { 0x2fba, UNICODE_NOT_PRESENT_OFFSET, 6925 }, 23963 { 0x2fbb, UNICODE_NOT_PRESENT_OFFSET, 6929 }, 23964 { 0x2fbc, UNICODE_NOT_PRESENT_OFFSET, 6933 }, 23965 { 0x2fbd, UNICODE_NOT_PRESENT_OFFSET, 6937 }, 23966 { 0x2fbe, UNICODE_NOT_PRESENT_OFFSET, 6941 }, 23967 { 0x2fbf, UNICODE_NOT_PRESENT_OFFSET, 6945 }, 23968 { 0x2fc0, UNICODE_NOT_PRESENT_OFFSET, 6949 }, 23969 { 0x2fc1, UNICODE_NOT_PRESENT_OFFSET, 6953 }, 23970 { 0x2fc2, UNICODE_NOT_PRESENT_OFFSET, 6957 }, 23971 { 0x2fc3, UNICODE_NOT_PRESENT_OFFSET, 6961 }, 23972 { 0x2fc4, UNICODE_NOT_PRESENT_OFFSET, 6965 }, 23973 { 0x2fc5, UNICODE_NOT_PRESENT_OFFSET, 6969 }, 23974 { 0x2fc6, UNICODE_NOT_PRESENT_OFFSET, 6973 }, 23975 { 0x2fc7, UNICODE_NOT_PRESENT_OFFSET, 6977 }, 23976 { 0x2fc8, UNICODE_NOT_PRESENT_OFFSET, 6981 }, 23977 { 0x2fc9, UNICODE_NOT_PRESENT_OFFSET, 6985 }, 23978 { 0x2fca, UNICODE_NOT_PRESENT_OFFSET, 6989 }, 23979 { 0x2fcb, UNICODE_NOT_PRESENT_OFFSET, 6993 }, 23980 { 0x2fcc, UNICODE_NOT_PRESENT_OFFSET, 6997 }, 23981 { 0x2fcd, UNICODE_NOT_PRESENT_OFFSET, 7001 }, 23982 { 0x2fce, UNICODE_NOT_PRESENT_OFFSET, 7005 }, 23983 { 0x2fcf, UNICODE_NOT_PRESENT_OFFSET, 7009 }, 23984 { 0x2fd0, UNICODE_NOT_PRESENT_OFFSET, 7013 }, 23985 { 0x2fd1, UNICODE_NOT_PRESENT_OFFSET, 7017 }, 23986 { 0x2fd2, UNICODE_NOT_PRESENT_OFFSET, 7021 }, 23987 { 0x2fd3, UNICODE_NOT_PRESENT_OFFSET, 7025 }, 23988 { 0x2fd4, UNICODE_NOT_PRESENT_OFFSET, 7029 }, 23989 { 0x2fd5, UNICODE_NOT_PRESENT_OFFSET, 7033 }, 23990 { 0x3000, UNICODE_NOT_PRESENT_OFFSET, 0 }, 23991 { 0x3036, UNICODE_NOT_PRESENT_OFFSET, 7037 }, 23992 { 0x3038, UNICODE_NOT_PRESENT_OFFSET, 6273 }, 23993 { 0x3039, UNICODE_NOT_PRESENT_OFFSET, 7041 }, 23994 { 0x303a, UNICODE_NOT_PRESENT_OFFSET, 7045 }, 23995 { 0x304c, 7049, UNICODE_NOT_PRESENT_OFFSET }, 23996 { 0x304e, 7056, UNICODE_NOT_PRESENT_OFFSET }, 23997 { 0x3050, 7063, UNICODE_NOT_PRESENT_OFFSET }, 23998 { 0x3052, 7070, UNICODE_NOT_PRESENT_OFFSET }, 23999 { 0x3054, 7077, UNICODE_NOT_PRESENT_OFFSET }, 24000 { 0x3056, 7084, UNICODE_NOT_PRESENT_OFFSET }, 24001 { 0x3058, 7091, UNICODE_NOT_PRESENT_OFFSET }, 24002 { 0x305a, 7098, UNICODE_NOT_PRESENT_OFFSET }, 24003 { 0x305c, 7105, UNICODE_NOT_PRESENT_OFFSET }, 24004 { 0x305e, 7112, UNICODE_NOT_PRESENT_OFFSET }, 24005 { 0x3060, 7119, UNICODE_NOT_PRESENT_OFFSET }, 24006 { 0x3062, 7126, UNICODE_NOT_PRESENT_OFFSET }, 24007 { 0x3065, 7133, UNICODE_NOT_PRESENT_OFFSET }, 24008 { 0x3067, 7140, UNICODE_NOT_PRESENT_OFFSET }, 24009 { 0x3069, 7147, UNICODE_NOT_PRESENT_OFFSET }, 24010 { 0x3070, 7154, UNICODE_NOT_PRESENT_OFFSET }, 24011 { 0x3071, 7161, UNICODE_NOT_PRESENT_OFFSET }, 24012 { 0x3073, 7168, UNICODE_NOT_PRESENT_OFFSET }, 24013 { 0x3074, 7175, UNICODE_NOT_PRESENT_OFFSET }, 24014 { 0x3076, 7182, UNICODE_NOT_PRESENT_OFFSET }, 24015 { 0x3077, 7189, UNICODE_NOT_PRESENT_OFFSET }, 24016 { 0x3079, 7196, UNICODE_NOT_PRESENT_OFFSET }, 24017 { 0x307a, 7203, UNICODE_NOT_PRESENT_OFFSET }, 24018 { 0x307c, 7210, UNICODE_NOT_PRESENT_OFFSET }, 24019 { 0x307d, 7217, UNICODE_NOT_PRESENT_OFFSET }, 24020 { 0x3094, 7224, UNICODE_NOT_PRESENT_OFFSET }, 24021 { 0x309b, UNICODE_NOT_PRESENT_OFFSET, 7231 }, 24022 { 0x309c, UNICODE_NOT_PRESENT_OFFSET, 7236 }, 24023 { 0x309e, 7241, UNICODE_NOT_PRESENT_OFFSET }, 24024 { 0x309f, UNICODE_NOT_PRESENT_OFFSET, 7248 }, 24025 { 0x30ac, 7255, UNICODE_NOT_PRESENT_OFFSET }, 24026 { 0x30ae, 7262, UNICODE_NOT_PRESENT_OFFSET }, 24027 { 0x30b0, 7269, UNICODE_NOT_PRESENT_OFFSET }, 24028 { 0x30b2, 7276, UNICODE_NOT_PRESENT_OFFSET }, 24029 { 0x30b4, 7283, UNICODE_NOT_PRESENT_OFFSET }, 24030 { 0x30b6, 7290, UNICODE_NOT_PRESENT_OFFSET }, 24031 { 0x30b8, 7297, UNICODE_NOT_PRESENT_OFFSET }, 24032 { 0x30ba, 7304, UNICODE_NOT_PRESENT_OFFSET }, 24033 { 0x30bc, 7311, UNICODE_NOT_PRESENT_OFFSET }, 24034 { 0x30be, 7318, UNICODE_NOT_PRESENT_OFFSET }, 24035 { 0x30c0, 7325, UNICODE_NOT_PRESENT_OFFSET }, 24036 { 0x30c2, 7332, UNICODE_NOT_PRESENT_OFFSET }, 24037 { 0x30c5, 7339, UNICODE_NOT_PRESENT_OFFSET }, 24038 { 0x30c7, 7346, UNICODE_NOT_PRESENT_OFFSET }, 24039 { 0x30c9, 7353, UNICODE_NOT_PRESENT_OFFSET }, 24040 { 0x30d0, 7360, UNICODE_NOT_PRESENT_OFFSET }, 24041 { 0x30d1, 7367, UNICODE_NOT_PRESENT_OFFSET }, 24042 { 0x30d3, 7374, UNICODE_NOT_PRESENT_OFFSET }, 24043 { 0x30d4, 7381, UNICODE_NOT_PRESENT_OFFSET }, 24044 { 0x30d6, 7388, UNICODE_NOT_PRESENT_OFFSET }, 24045 { 0x30d7, 7395, UNICODE_NOT_PRESENT_OFFSET }, 24046 { 0x30d9, 7402, UNICODE_NOT_PRESENT_OFFSET }, 24047 { 0x30da, 7409, UNICODE_NOT_PRESENT_OFFSET }, 24048 { 0x30dc, 7416, UNICODE_NOT_PRESENT_OFFSET }, 24049 { 0x30dd, 7423, UNICODE_NOT_PRESENT_OFFSET }, 24050 { 0x30f4, 7430, UNICODE_NOT_PRESENT_OFFSET }, 24051 { 0x30f7, 7437, UNICODE_NOT_PRESENT_OFFSET }, 24052 { 0x30f8, 7444, UNICODE_NOT_PRESENT_OFFSET }, 24053 { 0x30f9, 7451, UNICODE_NOT_PRESENT_OFFSET }, 24054 { 0x30fa, 7458, UNICODE_NOT_PRESENT_OFFSET }, 24055 { 0x30fe, 7465, UNICODE_NOT_PRESENT_OFFSET }, 24056 { 0x30ff, UNICODE_NOT_PRESENT_OFFSET, 7472 }, 24057 { 0x3131, UNICODE_NOT_PRESENT_OFFSET, 7479 }, 24058 { 0x3132, UNICODE_NOT_PRESENT_OFFSET, 7483 }, 24059 { 0x3133, UNICODE_NOT_PRESENT_OFFSET, 7487 }, 24060 { 0x3134, UNICODE_NOT_PRESENT_OFFSET, 7491 }, 24061 { 0x3135, UNICODE_NOT_PRESENT_OFFSET, 7495 }, 24062 { 0x3136, UNICODE_NOT_PRESENT_OFFSET, 7499 }, 24063 { 0x3137, UNICODE_NOT_PRESENT_OFFSET, 7503 }, 24064 { 0x3138, UNICODE_NOT_PRESENT_OFFSET, 7507 }, 24065 { 0x3139, UNICODE_NOT_PRESENT_OFFSET, 7511 }, 24066 { 0x313a, UNICODE_NOT_PRESENT_OFFSET, 7515 }, 24067 { 0x313b, UNICODE_NOT_PRESENT_OFFSET, 7519 }, 24068 { 0x313c, UNICODE_NOT_PRESENT_OFFSET, 7523 }, 24069 { 0x313d, UNICODE_NOT_PRESENT_OFFSET, 7527 }, 24070 { 0x313e, UNICODE_NOT_PRESENT_OFFSET, 7531 }, 24071 { 0x313f, UNICODE_NOT_PRESENT_OFFSET, 7535 }, 24072 { 0x3140, UNICODE_NOT_PRESENT_OFFSET, 7539 }, 24073 { 0x3141, UNICODE_NOT_PRESENT_OFFSET, 7543 }, 24074 { 0x3142, UNICODE_NOT_PRESENT_OFFSET, 7547 }, 24075 { 0x3143, UNICODE_NOT_PRESENT_OFFSET, 7551 }, 24076 { 0x3144, UNICODE_NOT_PRESENT_OFFSET, 7555 }, 24077 { 0x3145, UNICODE_NOT_PRESENT_OFFSET, 7559 }, 24078 { 0x3146, UNICODE_NOT_PRESENT_OFFSET, 7563 }, 24079 { 0x3147, UNICODE_NOT_PRESENT_OFFSET, 7567 }, 24080 { 0x3148, UNICODE_NOT_PRESENT_OFFSET, 7571 }, 24081 { 0x3149, UNICODE_NOT_PRESENT_OFFSET, 7575 }, 24082 { 0x314a, UNICODE_NOT_PRESENT_OFFSET, 7579 }, 24083 { 0x314b, UNICODE_NOT_PRESENT_OFFSET, 7583 }, 24084 { 0x314c, UNICODE_NOT_PRESENT_OFFSET, 7587 }, 24085 { 0x314d, UNICODE_NOT_PRESENT_OFFSET, 7591 }, 24086 { 0x314e, UNICODE_NOT_PRESENT_OFFSET, 7595 }, 24087 { 0x314f, UNICODE_NOT_PRESENT_OFFSET, 7599 }, 24088 { 0x3150, UNICODE_NOT_PRESENT_OFFSET, 7603 }, 24089 { 0x3151, UNICODE_NOT_PRESENT_OFFSET, 7607 }, 24090 { 0x3152, UNICODE_NOT_PRESENT_OFFSET, 7611 }, 24091 { 0x3153, UNICODE_NOT_PRESENT_OFFSET, 7615 }, 24092 { 0x3154, UNICODE_NOT_PRESENT_OFFSET, 7619 }, 24093 { 0x3155, UNICODE_NOT_PRESENT_OFFSET, 7623 }, 24094 { 0x3156, UNICODE_NOT_PRESENT_OFFSET, 7627 }, 24095 { 0x3157, UNICODE_NOT_PRESENT_OFFSET, 7631 }, 24096 { 0x3158, UNICODE_NOT_PRESENT_OFFSET, 7635 }, 24097 { 0x3159, UNICODE_NOT_PRESENT_OFFSET, 7639 }, 24098 { 0x315a, UNICODE_NOT_PRESENT_OFFSET, 7643 }, 24099 { 0x315b, UNICODE_NOT_PRESENT_OFFSET, 7647 }, 24100 { 0x315c, UNICODE_NOT_PRESENT_OFFSET, 7651 }, 24101 { 0x315d, UNICODE_NOT_PRESENT_OFFSET, 7655 }, 24102 { 0x315e, UNICODE_NOT_PRESENT_OFFSET, 7659 }, 24103 { 0x315f, UNICODE_NOT_PRESENT_OFFSET, 7663 }, 24104 { 0x3160, UNICODE_NOT_PRESENT_OFFSET, 7667 }, 24105 { 0x3161, UNICODE_NOT_PRESENT_OFFSET, 7671 }, 24106 { 0x3162, UNICODE_NOT_PRESENT_OFFSET, 7675 }, 24107 { 0x3163, UNICODE_NOT_PRESENT_OFFSET, 7679 }, 24108 { 0x3164, UNICODE_NOT_PRESENT_OFFSET, 7683 }, 24109 { 0x3165, UNICODE_NOT_PRESENT_OFFSET, 7687 }, 24110 { 0x3166, UNICODE_NOT_PRESENT_OFFSET, 7691 }, 24111 { 0x3167, UNICODE_NOT_PRESENT_OFFSET, 7695 }, 24112 { 0x3168, UNICODE_NOT_PRESENT_OFFSET, 7699 }, 24113 { 0x3169, UNICODE_NOT_PRESENT_OFFSET, 7703 }, 24114 { 0x316a, UNICODE_NOT_PRESENT_OFFSET, 7707 }, 24115 { 0x316b, UNICODE_NOT_PRESENT_OFFSET, 7711 }, 24116 { 0x316c, UNICODE_NOT_PRESENT_OFFSET, 7715 }, 24117 { 0x316d, UNICODE_NOT_PRESENT_OFFSET, 7719 }, 24118 { 0x316e, UNICODE_NOT_PRESENT_OFFSET, 7723 }, 24119 { 0x316f, UNICODE_NOT_PRESENT_OFFSET, 7727 }, 24120 { 0x3170, UNICODE_NOT_PRESENT_OFFSET, 7731 }, 24121 { 0x3171, UNICODE_NOT_PRESENT_OFFSET, 7735 }, 24122 { 0x3172, UNICODE_NOT_PRESENT_OFFSET, 7739 }, 24123 { 0x3173, UNICODE_NOT_PRESENT_OFFSET, 7743 }, 24124 { 0x3174, UNICODE_NOT_PRESENT_OFFSET, 7747 }, 24125 { 0x3175, UNICODE_NOT_PRESENT_OFFSET, 7751 }, 24126 { 0x3176, UNICODE_NOT_PRESENT_OFFSET, 7755 }, 24127 { 0x3177, UNICODE_NOT_PRESENT_OFFSET, 7759 }, 24128 { 0x3178, UNICODE_NOT_PRESENT_OFFSET, 7763 }, 24129 { 0x3179, UNICODE_NOT_PRESENT_OFFSET, 7767 }, 24130 { 0x317a, UNICODE_NOT_PRESENT_OFFSET, 7771 }, 24131 { 0x317b, UNICODE_NOT_PRESENT_OFFSET, 7775 }, 24132 { 0x317c, UNICODE_NOT_PRESENT_OFFSET, 7779 }, 24133 { 0x317d, UNICODE_NOT_PRESENT_OFFSET, 7783 }, 24134 { 0x317e, UNICODE_NOT_PRESENT_OFFSET, 7787 }, 24135 { 0x317f, UNICODE_NOT_PRESENT_OFFSET, 7791 }, 24136 { 0x3180, UNICODE_NOT_PRESENT_OFFSET, 7795 }, 24137 { 0x3181, UNICODE_NOT_PRESENT_OFFSET, 7799 }, 24138 { 0x3182, UNICODE_NOT_PRESENT_OFFSET, 7803 }, 24139 { 0x3183, UNICODE_NOT_PRESENT_OFFSET, 7807 }, 24140 { 0x3184, UNICODE_NOT_PRESENT_OFFSET, 7811 }, 24141 { 0x3185, UNICODE_NOT_PRESENT_OFFSET, 7815 }, 24142 { 0x3186, UNICODE_NOT_PRESENT_OFFSET, 7819 }, 24143 { 0x3187, UNICODE_NOT_PRESENT_OFFSET, 7823 }, 24144 { 0x3188, UNICODE_NOT_PRESENT_OFFSET, 7827 }, 24145 { 0x3189, UNICODE_NOT_PRESENT_OFFSET, 7831 }, 24146 { 0x318a, UNICODE_NOT_PRESENT_OFFSET, 7835 }, 24147 { 0x318b, UNICODE_NOT_PRESENT_OFFSET, 7839 }, 24148 { 0x318c, UNICODE_NOT_PRESENT_OFFSET, 7843 }, 24149 { 0x318d, UNICODE_NOT_PRESENT_OFFSET, 7847 }, 24150 { 0x318e, UNICODE_NOT_PRESENT_OFFSET, 7851 }, 24151 { 0x3192, UNICODE_NOT_PRESENT_OFFSET, 6181 }, 24152 { 0x3193, UNICODE_NOT_PRESENT_OFFSET, 6205 }, 24153 { 0x3194, UNICODE_NOT_PRESENT_OFFSET, 7855 }, 24154 { 0x3195, UNICODE_NOT_PRESENT_OFFSET, 7859 }, 24155 { 0x3196, UNICODE_NOT_PRESENT_OFFSET, 7863 }, 24156 { 0x3197, UNICODE_NOT_PRESENT_OFFSET, 7867 }, 24157 { 0x3198, UNICODE_NOT_PRESENT_OFFSET, 7871 }, 24158 { 0x3199, UNICODE_NOT_PRESENT_OFFSET, 7875 }, 24159 { 0x319a, UNICODE_NOT_PRESENT_OFFSET, 6197 }, 24160 { 0x319b, UNICODE_NOT_PRESENT_OFFSET, 7879 }, 24161 { 0x319c, UNICODE_NOT_PRESENT_OFFSET, 7883 }, 24162 { 0x319d, UNICODE_NOT_PRESENT_OFFSET, 7887 }, 24163 { 0x319e, UNICODE_NOT_PRESENT_OFFSET, 7891 }, 24164 { 0x319f, UNICODE_NOT_PRESENT_OFFSET, 6213 }, 24165 { 0x3200, UNICODE_NOT_PRESENT_OFFSET, 7895 }, 24166 { 0x3201, UNICODE_NOT_PRESENT_OFFSET, 7901 }, 24167 { 0x3202, UNICODE_NOT_PRESENT_OFFSET, 7907 }, 24168 { 0x3203, UNICODE_NOT_PRESENT_OFFSET, 7913 }, 24169 { 0x3204, UNICODE_NOT_PRESENT_OFFSET, 7919 }, 24170 { 0x3205, UNICODE_NOT_PRESENT_OFFSET, 7925 }, 24171 { 0x3206, UNICODE_NOT_PRESENT_OFFSET, 7931 }, 24172 { 0x3207, UNICODE_NOT_PRESENT_OFFSET, 7937 }, 24173 { 0x3208, UNICODE_NOT_PRESENT_OFFSET, 7943 }, 24174 { 0x3209, UNICODE_NOT_PRESENT_OFFSET, 7949 }, 24175 { 0x320a, UNICODE_NOT_PRESENT_OFFSET, 7955 }, 24176 { 0x320b, UNICODE_NOT_PRESENT_OFFSET, 7961 }, 24177 { 0x320c, UNICODE_NOT_PRESENT_OFFSET, 7967 }, 24178 { 0x320d, UNICODE_NOT_PRESENT_OFFSET, 7973 }, 24179 { 0x320e, UNICODE_NOT_PRESENT_OFFSET, 7979 }, 24180 { 0x320f, UNICODE_NOT_PRESENT_OFFSET, 7988 }, 24181 { 0x3210, UNICODE_NOT_PRESENT_OFFSET, 7997 }, 24182 { 0x3211, UNICODE_NOT_PRESENT_OFFSET, 8006 }, 24183 { 0x3212, UNICODE_NOT_PRESENT_OFFSET, 8015 }, 24184 { 0x3213, UNICODE_NOT_PRESENT_OFFSET, 8024 }, 24185 { 0x3214, UNICODE_NOT_PRESENT_OFFSET, 8033 }, 24186 { 0x3215, UNICODE_NOT_PRESENT_OFFSET, 8042 }, 24187 { 0x3216, UNICODE_NOT_PRESENT_OFFSET, 8051 }, 24188 { 0x3217, UNICODE_NOT_PRESENT_OFFSET, 8060 }, 24189 { 0x3218, UNICODE_NOT_PRESENT_OFFSET, 8069 }, 24190 { 0x3219, UNICODE_NOT_PRESENT_OFFSET, 8078 }, 24191 { 0x321a, UNICODE_NOT_PRESENT_OFFSET, 8087 }, 24192 { 0x321b, UNICODE_NOT_PRESENT_OFFSET, 8096 }, 24193 { 0x321c, UNICODE_NOT_PRESENT_OFFSET, 8105 }, 24194 { 0x321d, UNICODE_NOT_PRESENT_OFFSET, 8114 }, 24195 { 0x321e, UNICODE_NOT_PRESENT_OFFSET, 8132 }, 24196 { 0x3220, UNICODE_NOT_PRESENT_OFFSET, 8147 }, 24197 { 0x3221, UNICODE_NOT_PRESENT_OFFSET, 8153 }, 24198 { 0x3222, UNICODE_NOT_PRESENT_OFFSET, 8159 }, 24199 { 0x3223, UNICODE_NOT_PRESENT_OFFSET, 8165 }, 24200 { 0x3224, UNICODE_NOT_PRESENT_OFFSET, 8171 }, 24201 { 0x3225, UNICODE_NOT_PRESENT_OFFSET, 8177 }, 24202 { 0x3226, UNICODE_NOT_PRESENT_OFFSET, 8183 }, 24203 { 0x3227, UNICODE_NOT_PRESENT_OFFSET, 8189 }, 24204 { 0x3228, UNICODE_NOT_PRESENT_OFFSET, 8195 }, 24205 { 0x3229, UNICODE_NOT_PRESENT_OFFSET, 8201 }, 24206 { 0x322a, UNICODE_NOT_PRESENT_OFFSET, 8207 }, 24207 { 0x322b, UNICODE_NOT_PRESENT_OFFSET, 8213 }, 24208 { 0x322c, UNICODE_NOT_PRESENT_OFFSET, 8219 }, 24209 { 0x322d, UNICODE_NOT_PRESENT_OFFSET, 8225 }, 24210 { 0x322e, UNICODE_NOT_PRESENT_OFFSET, 8231 }, 24211 { 0x322f, UNICODE_NOT_PRESENT_OFFSET, 8237 }, 24212 { 0x3230, UNICODE_NOT_PRESENT_OFFSET, 8243 }, 24213 { 0x3231, UNICODE_NOT_PRESENT_OFFSET, 8249 }, 24214 { 0x3232, UNICODE_NOT_PRESENT_OFFSET, 8255 }, 24215 { 0x3233, UNICODE_NOT_PRESENT_OFFSET, 8261 }, 24216 { 0x3234, UNICODE_NOT_PRESENT_OFFSET, 8267 }, 24217 { 0x3235, UNICODE_NOT_PRESENT_OFFSET, 8273 }, 24218 { 0x3236, UNICODE_NOT_PRESENT_OFFSET, 8279 }, 24219 { 0x3237, UNICODE_NOT_PRESENT_OFFSET, 8285 }, 24220 { 0x3238, UNICODE_NOT_PRESENT_OFFSET, 8291 }, 24221 { 0x3239, UNICODE_NOT_PRESENT_OFFSET, 8297 }, 24222 { 0x323a, UNICODE_NOT_PRESENT_OFFSET, 8303 }, 24223 { 0x323b, UNICODE_NOT_PRESENT_OFFSET, 8309 }, 24224 { 0x323c, UNICODE_NOT_PRESENT_OFFSET, 8315 }, 24225 { 0x323d, UNICODE_NOT_PRESENT_OFFSET, 8321 }, 24226 { 0x323e, UNICODE_NOT_PRESENT_OFFSET, 8327 }, 24227 { 0x323f, UNICODE_NOT_PRESENT_OFFSET, 8333 }, 24228 { 0x3240, UNICODE_NOT_PRESENT_OFFSET, 8339 }, 24229 { 0x3241, UNICODE_NOT_PRESENT_OFFSET, 8345 }, 24230 { 0x3242, UNICODE_NOT_PRESENT_OFFSET, 8351 }, 24231 { 0x3243, UNICODE_NOT_PRESENT_OFFSET, 8357 }, 24232 { 0x3244, UNICODE_NOT_PRESENT_OFFSET, 8363 }, 24233 { 0x3245, UNICODE_NOT_PRESENT_OFFSET, 8367 }, 24234 { 0x3246, UNICODE_NOT_PRESENT_OFFSET, 6445 }, 24235 { 0x3247, UNICODE_NOT_PRESENT_OFFSET, 8371 }, 24236 { 0x3250, UNICODE_NOT_PRESENT_OFFSET, 8375 }, 24237 { 0x3251, UNICODE_NOT_PRESENT_OFFSET, 8379 }, 24238 { 0x3252, UNICODE_NOT_PRESENT_OFFSET, 8382 }, 24239 { 0x3253, UNICODE_NOT_PRESENT_OFFSET, 8385 }, 24240 { 0x3254, UNICODE_NOT_PRESENT_OFFSET, 8388 }, 24241 { 0x3255, UNICODE_NOT_PRESENT_OFFSET, 8391 }, 24242 { 0x3256, UNICODE_NOT_PRESENT_OFFSET, 8394 }, 24243 { 0x3257, UNICODE_NOT_PRESENT_OFFSET, 8397 }, 24244 { 0x3258, UNICODE_NOT_PRESENT_OFFSET, 8400 }, 24245 { 0x3259, UNICODE_NOT_PRESENT_OFFSET, 8403 }, 24246 { 0x325a, UNICODE_NOT_PRESENT_OFFSET, 8406 }, 24247 { 0x325b, UNICODE_NOT_PRESENT_OFFSET, 8409 }, 24248 { 0x325c, UNICODE_NOT_PRESENT_OFFSET, 8412 }, 24249 { 0x325d, UNICODE_NOT_PRESENT_OFFSET, 8415 }, 24250 { 0x325e, UNICODE_NOT_PRESENT_OFFSET, 8418 }, 24251 { 0x325f, UNICODE_NOT_PRESENT_OFFSET, 8421 }, 24252 { 0x3260, UNICODE_NOT_PRESENT_OFFSET, 7479 }, 24253 { 0x3261, UNICODE_NOT_PRESENT_OFFSET, 7491 }, 24254 { 0x3262, UNICODE_NOT_PRESENT_OFFSET, 7503 }, 24255 { 0x3263, UNICODE_NOT_PRESENT_OFFSET, 7511 }, 24256 { 0x3264, UNICODE_NOT_PRESENT_OFFSET, 7543 }, 24257 { 0x3265, UNICODE_NOT_PRESENT_OFFSET, 7547 }, 24258 { 0x3266, UNICODE_NOT_PRESENT_OFFSET, 7559 }, 24259 { 0x3267, UNICODE_NOT_PRESENT_OFFSET, 7567 }, 24260 { 0x3268, UNICODE_NOT_PRESENT_OFFSET, 7571 }, 24261 { 0x3269, UNICODE_NOT_PRESENT_OFFSET, 7579 }, 24262 { 0x326a, UNICODE_NOT_PRESENT_OFFSET, 7583 }, 24263 { 0x326b, UNICODE_NOT_PRESENT_OFFSET, 7587 }, 24264 { 0x326c, UNICODE_NOT_PRESENT_OFFSET, 7591 }, 24265 { 0x326d, UNICODE_NOT_PRESENT_OFFSET, 7595 }, 24266 { 0x326e, UNICODE_NOT_PRESENT_OFFSET, 8424 }, 24267 { 0x326f, UNICODE_NOT_PRESENT_OFFSET, 8431 }, 24268 { 0x3270, UNICODE_NOT_PRESENT_OFFSET, 8438 }, 24269 { 0x3271, UNICODE_NOT_PRESENT_OFFSET, 8445 }, 24270 { 0x3272, UNICODE_NOT_PRESENT_OFFSET, 8452 }, 24271 { 0x3273, UNICODE_NOT_PRESENT_OFFSET, 8459 }, 24272 { 0x3274, UNICODE_NOT_PRESENT_OFFSET, 8466 }, 24273 { 0x3275, UNICODE_NOT_PRESENT_OFFSET, 8473 }, 24274 { 0x3276, UNICODE_NOT_PRESENT_OFFSET, 8480 }, 24275 { 0x3277, UNICODE_NOT_PRESENT_OFFSET, 8487 }, 24276 { 0x3278, UNICODE_NOT_PRESENT_OFFSET, 8494 }, 24277 { 0x3279, UNICODE_NOT_PRESENT_OFFSET, 8501 }, 24278 { 0x327a, UNICODE_NOT_PRESENT_OFFSET, 8508 }, 24279 { 0x327b, UNICODE_NOT_PRESENT_OFFSET, 8515 }, 24280 { 0x327c, UNICODE_NOT_PRESENT_OFFSET, 8522 }, 24281 { 0x327d, UNICODE_NOT_PRESENT_OFFSET, 8538 }, 24282 { 0x327e, UNICODE_NOT_PRESENT_OFFSET, 8551 }, 24283 { 0x3280, UNICODE_NOT_PRESENT_OFFSET, 6181 }, 24284 { 0x3281, UNICODE_NOT_PRESENT_OFFSET, 6205 }, 24285 { 0x3282, UNICODE_NOT_PRESENT_OFFSET, 7855 }, 24286 { 0x3283, UNICODE_NOT_PRESENT_OFFSET, 7859 }, 24287 { 0x3284, UNICODE_NOT_PRESENT_OFFSET, 8558 }, 24288 { 0x3285, UNICODE_NOT_PRESENT_OFFSET, 8562 }, 24289 { 0x3286, UNICODE_NOT_PRESENT_OFFSET, 8566 }, 24290 { 0x3287, UNICODE_NOT_PRESENT_OFFSET, 6225 }, 24291 { 0x3288, UNICODE_NOT_PRESENT_OFFSET, 8570 }, 24292 { 0x3289, UNICODE_NOT_PRESENT_OFFSET, 6273 }, 24293 { 0x328a, UNICODE_NOT_PRESENT_OFFSET, 6473 }, 24294 { 0x328b, UNICODE_NOT_PRESENT_OFFSET, 6521 }, 24295 { 0x328c, UNICODE_NOT_PRESENT_OFFSET, 6517 }, 24296 { 0x328d, UNICODE_NOT_PRESENT_OFFSET, 6477 }, 24297 { 0x328e, UNICODE_NOT_PRESENT_OFFSET, 6845 }, 24298 { 0x328f, UNICODE_NOT_PRESENT_OFFSET, 6305 }, 24299 { 0x3290, UNICODE_NOT_PRESENT_OFFSET, 6465 }, 24300 { 0x3291, UNICODE_NOT_PRESENT_OFFSET, 8574 }, 24301 { 0x3292, UNICODE_NOT_PRESENT_OFFSET, 8578 }, 24302 { 0x3293, UNICODE_NOT_PRESENT_OFFSET, 8582 }, 24303 { 0x3294, UNICODE_NOT_PRESENT_OFFSET, 8586 }, 24304 { 0x3295, UNICODE_NOT_PRESENT_OFFSET, 8590 }, 24305 { 0x3296, UNICODE_NOT_PRESENT_OFFSET, 8594 }, 24306 { 0x3297, UNICODE_NOT_PRESENT_OFFSET, 8598 }, 24307 { 0x3298, UNICODE_NOT_PRESENT_OFFSET, 8602 }, 24308 { 0x3299, UNICODE_NOT_PRESENT_OFFSET, 8606 }, 24309 { 0x329a, UNICODE_NOT_PRESENT_OFFSET, 8610 }, 24310 { 0x329b, UNICODE_NOT_PRESENT_OFFSET, 6329 }, 24311 { 0x329c, UNICODE_NOT_PRESENT_OFFSET, 8614 }, 24312 { 0x329d, UNICODE_NOT_PRESENT_OFFSET, 8618 }, 24313 { 0x329e, UNICODE_NOT_PRESENT_OFFSET, 8622 }, 24314 { 0x329f, UNICODE_NOT_PRESENT_OFFSET, 8626 }, 24315 { 0x32a0, UNICODE_NOT_PRESENT_OFFSET, 8630 }, 24316 { 0x32a1, UNICODE_NOT_PRESENT_OFFSET, 8634 }, 24317 { 0x32a2, UNICODE_NOT_PRESENT_OFFSET, 8638 }, 24318 { 0x32a3, UNICODE_NOT_PRESENT_OFFSET, 8642 }, 24319 { 0x32a4, UNICODE_NOT_PRESENT_OFFSET, 7863 }, 24320 { 0x32a5, UNICODE_NOT_PRESENT_OFFSET, 7867 }, 24321 { 0x32a6, UNICODE_NOT_PRESENT_OFFSET, 7871 }, 24322 { 0x32a7, UNICODE_NOT_PRESENT_OFFSET, 8646 }, 24323 { 0x32a8, UNICODE_NOT_PRESENT_OFFSET, 8650 }, 24324 { 0x32a9, UNICODE_NOT_PRESENT_OFFSET, 8654 }, 24325 { 0x32aa, UNICODE_NOT_PRESENT_OFFSET, 8658 }, 24326 { 0x32ab, UNICODE_NOT_PRESENT_OFFSET, 8662 }, 24327 { 0x32ac, UNICODE_NOT_PRESENT_OFFSET, 8666 }, 24328 { 0x32ad, UNICODE_NOT_PRESENT_OFFSET, 8670 }, 24329 { 0x32ae, UNICODE_NOT_PRESENT_OFFSET, 8674 }, 24330 { 0x32af, UNICODE_NOT_PRESENT_OFFSET, 8678 }, 24331 { 0x32b0, UNICODE_NOT_PRESENT_OFFSET, 8682 }, 24332 { 0x32b1, UNICODE_NOT_PRESENT_OFFSET, 8686 }, 24333 { 0x32b2, UNICODE_NOT_PRESENT_OFFSET, 8689 }, 24334 { 0x32b3, UNICODE_NOT_PRESENT_OFFSET, 8692 }, 24335 { 0x32b4, UNICODE_NOT_PRESENT_OFFSET, 8695 }, 24336 { 0x32b5, UNICODE_NOT_PRESENT_OFFSET, 8698 }, 24337 { 0x32b6, UNICODE_NOT_PRESENT_OFFSET, 8701 }, 24338 { 0x32b7, UNICODE_NOT_PRESENT_OFFSET, 8704 }, 24339 { 0x32b8, UNICODE_NOT_PRESENT_OFFSET, 8707 }, 24340 { 0x32b9, UNICODE_NOT_PRESENT_OFFSET, 8710 }, 24341 { 0x32ba, UNICODE_NOT_PRESENT_OFFSET, 8713 }, 24342 { 0x32bb, UNICODE_NOT_PRESENT_OFFSET, 8716 }, 24343 { 0x32bc, UNICODE_NOT_PRESENT_OFFSET, 8719 }, 24344 { 0x32bd, UNICODE_NOT_PRESENT_OFFSET, 8722 }, 24345 { 0x32be, UNICODE_NOT_PRESENT_OFFSET, 8725 }, 24346 { 0x32bf, UNICODE_NOT_PRESENT_OFFSET, 8728 }, 24347 { 0x32c0, UNICODE_NOT_PRESENT_OFFSET, 8731 }, 24348 { 0x32c1, UNICODE_NOT_PRESENT_OFFSET, 8736 }, 24349 { 0x32c2, UNICODE_NOT_PRESENT_OFFSET, 8741 }, 24350 { 0x32c3, UNICODE_NOT_PRESENT_OFFSET, 8746 }, 24351 { 0x32c4, UNICODE_NOT_PRESENT_OFFSET, 8751 }, 24352 { 0x32c5, UNICODE_NOT_PRESENT_OFFSET, 8756 }, 24353 { 0x32c6, UNICODE_NOT_PRESENT_OFFSET, 8761 }, 24354 { 0x32c7, UNICODE_NOT_PRESENT_OFFSET, 8766 }, 24355 { 0x32c8, UNICODE_NOT_PRESENT_OFFSET, 8771 }, 24356 { 0x32c9, UNICODE_NOT_PRESENT_OFFSET, 8776 }, 24357 { 0x32ca, UNICODE_NOT_PRESENT_OFFSET, 8782 }, 24358 { 0x32cb, UNICODE_NOT_PRESENT_OFFSET, 8788 }, 24359 { 0x32cc, UNICODE_NOT_PRESENT_OFFSET, 8794 }, 24360 { 0x32cd, UNICODE_NOT_PRESENT_OFFSET, 8797 }, 24361 { 0x32ce, UNICODE_NOT_PRESENT_OFFSET, 8801 }, 24362 { 0x32cf, UNICODE_NOT_PRESENT_OFFSET, 8804 }, 24363 { 0x32d0, UNICODE_NOT_PRESENT_OFFSET, 8808 }, 24364 { 0x32d1, UNICODE_NOT_PRESENT_OFFSET, 8812 }, 24365 { 0x32d2, UNICODE_NOT_PRESENT_OFFSET, 8816 }, 24366 { 0x32d3, UNICODE_NOT_PRESENT_OFFSET, 8820 }, 24367 { 0x32d4, UNICODE_NOT_PRESENT_OFFSET, 8824 }, 24368 { 0x32d5, UNICODE_NOT_PRESENT_OFFSET, 8828 }, 24369 { 0x32d6, UNICODE_NOT_PRESENT_OFFSET, 8832 }, 24370 { 0x32d7, UNICODE_NOT_PRESENT_OFFSET, 8836 }, 24371 { 0x32d8, UNICODE_NOT_PRESENT_OFFSET, 8840 }, 24372 { 0x32d9, UNICODE_NOT_PRESENT_OFFSET, 8844 }, 24373 { 0x32da, UNICODE_NOT_PRESENT_OFFSET, 8848 }, 24374 { 0x32db, UNICODE_NOT_PRESENT_OFFSET, 8852 }, 24375 { 0x32dc, UNICODE_NOT_PRESENT_OFFSET, 8856 }, 24376 { 0x32dd, UNICODE_NOT_PRESENT_OFFSET, 8860 }, 24377 { 0x32de, UNICODE_NOT_PRESENT_OFFSET, 8864 }, 24378 { 0x32df, UNICODE_NOT_PRESENT_OFFSET, 8868 }, 24379 { 0x32e0, UNICODE_NOT_PRESENT_OFFSET, 8872 }, 24380 { 0x32e1, UNICODE_NOT_PRESENT_OFFSET, 8876 }, 24381 { 0x32e2, UNICODE_NOT_PRESENT_OFFSET, 8880 }, 24382 { 0x32e3, UNICODE_NOT_PRESENT_OFFSET, 8884 }, 24383 { 0x32e4, UNICODE_NOT_PRESENT_OFFSET, 8888 }, 24384 { 0x32e5, UNICODE_NOT_PRESENT_OFFSET, 8892 }, 24385 { 0x32e6, UNICODE_NOT_PRESENT_OFFSET, 8896 }, 24386 { 0x32e7, UNICODE_NOT_PRESENT_OFFSET, 8900 }, 24387 { 0x32e8, UNICODE_NOT_PRESENT_OFFSET, 8904 }, 24388 { 0x32e9, UNICODE_NOT_PRESENT_OFFSET, 8908 }, 24389 { 0x32ea, UNICODE_NOT_PRESENT_OFFSET, 8912 }, 24390 { 0x32eb, UNICODE_NOT_PRESENT_OFFSET, 8916 }, 24391 { 0x32ec, UNICODE_NOT_PRESENT_OFFSET, 8920 }, 24392 { 0x32ed, UNICODE_NOT_PRESENT_OFFSET, 8924 }, 24393 { 0x32ee, UNICODE_NOT_PRESENT_OFFSET, 8928 }, 24394 { 0x32ef, UNICODE_NOT_PRESENT_OFFSET, 8932 }, 24395 { 0x32f0, UNICODE_NOT_PRESENT_OFFSET, 8936 }, 24396 { 0x32f1, UNICODE_NOT_PRESENT_OFFSET, 8940 }, 24397 { 0x32f2, UNICODE_NOT_PRESENT_OFFSET, 8944 }, 24398 { 0x32f3, UNICODE_NOT_PRESENT_OFFSET, 8948 }, 24399 { 0x32f4, UNICODE_NOT_PRESENT_OFFSET, 8952 }, 24400 { 0x32f5, UNICODE_NOT_PRESENT_OFFSET, 8956 }, 24401 { 0x32f6, UNICODE_NOT_PRESENT_OFFSET, 8960 }, 24402 { 0x32f7, UNICODE_NOT_PRESENT_OFFSET, 8964 }, 24403 { 0x32f8, UNICODE_NOT_PRESENT_OFFSET, 8968 }, 24404 { 0x32f9, UNICODE_NOT_PRESENT_OFFSET, 8972 }, 24405 { 0x32fa, UNICODE_NOT_PRESENT_OFFSET, 8976 }, 24406 { 0x32fb, UNICODE_NOT_PRESENT_OFFSET, 8980 }, 24407 { 0x32fc, UNICODE_NOT_PRESENT_OFFSET, 8984 }, 24408 { 0x32fd, UNICODE_NOT_PRESENT_OFFSET, 8988 }, 24409 { 0x32fe, UNICODE_NOT_PRESENT_OFFSET, 8992 }, 24410 { 0x3300, UNICODE_NOT_PRESENT_OFFSET, 8996 }, 24411 { 0x3301, UNICODE_NOT_PRESENT_OFFSET, 9012 }, 24412 { 0x3302, UNICODE_NOT_PRESENT_OFFSET, 9025 }, 24413 { 0x3303, UNICODE_NOT_PRESENT_OFFSET, 9041 }, 24414 { 0x3304, UNICODE_NOT_PRESENT_OFFSET, 9051 }, 24415 { 0x3305, UNICODE_NOT_PRESENT_OFFSET, 9067 }, 24416 { 0x3306, UNICODE_NOT_PRESENT_OFFSET, 9077 }, 24417 { 0x3307, UNICODE_NOT_PRESENT_OFFSET, 9087 }, 24418 { 0x3308, UNICODE_NOT_PRESENT_OFFSET, 9106 }, 24419 { 0x3309, UNICODE_NOT_PRESENT_OFFSET, 9119 }, 24420 { 0x330a, UNICODE_NOT_PRESENT_OFFSET, 9129 }, 24421 { 0x330b, UNICODE_NOT_PRESENT_OFFSET, 9139 }, 24422 { 0x330c, UNICODE_NOT_PRESENT_OFFSET, 9149 }, 24423 { 0x330d, UNICODE_NOT_PRESENT_OFFSET, 9162 }, 24424 { 0x330e, UNICODE_NOT_PRESENT_OFFSET, 9175 }, 24425 { 0x330f, UNICODE_NOT_PRESENT_OFFSET, 9188 }, 24426 { 0x3310, UNICODE_NOT_PRESENT_OFFSET, 9201 }, 24427 { 0x3311, UNICODE_NOT_PRESENT_OFFSET, 9214 }, 24428 { 0x3312, UNICODE_NOT_PRESENT_OFFSET, 9227 }, 24429 { 0x3313, UNICODE_NOT_PRESENT_OFFSET, 9240 }, 24430 { 0x3314, UNICODE_NOT_PRESENT_OFFSET, 9259 }, 24431 { 0x3315, UNICODE_NOT_PRESENT_OFFSET, 9266 }, 24432 { 0x3316, UNICODE_NOT_PRESENT_OFFSET, 9285 }, 24433 { 0x3317, UNICODE_NOT_PRESENT_OFFSET, 9304 }, 24434 { 0x3318, UNICODE_NOT_PRESENT_OFFSET, 9320 }, 24435 { 0x3319, UNICODE_NOT_PRESENT_OFFSET, 9333 }, 24436 { 0x331a, UNICODE_NOT_PRESENT_OFFSET, 9352 }, 24437 { 0x331b, UNICODE_NOT_PRESENT_OFFSET, 9371 }, 24438 { 0x331c, UNICODE_NOT_PRESENT_OFFSET, 9384 }, 24439 { 0x331d, UNICODE_NOT_PRESENT_OFFSET, 9394 }, 24440 { 0x331e, UNICODE_NOT_PRESENT_OFFSET, 9404 }, 24441 { 0x331f, UNICODE_NOT_PRESENT_OFFSET, 9417 }, 24442 { 0x3320, UNICODE_NOT_PRESENT_OFFSET, 9430 }, 24443 { 0x3321, UNICODE_NOT_PRESENT_OFFSET, 9446 }, 24444 { 0x3322, UNICODE_NOT_PRESENT_OFFSET, 9462 }, 24445 { 0x3323, UNICODE_NOT_PRESENT_OFFSET, 9472 }, 24446 { 0x3324, UNICODE_NOT_PRESENT_OFFSET, 9482 }, 24447 { 0x3325, UNICODE_NOT_PRESENT_OFFSET, 9495 }, 24448 { 0x3326, UNICODE_NOT_PRESENT_OFFSET, 9505 }, 24449 { 0x3327, UNICODE_NOT_PRESENT_OFFSET, 9515 }, 24450 { 0x3328, UNICODE_NOT_PRESENT_OFFSET, 9522 }, 24451 { 0x3329, UNICODE_NOT_PRESENT_OFFSET, 9529 }, 24452 { 0x332a, UNICODE_NOT_PRESENT_OFFSET, 9539 }, 24453 { 0x332b, UNICODE_NOT_PRESENT_OFFSET, 9549 }, 24454 { 0x332c, UNICODE_NOT_PRESENT_OFFSET, 9568 }, 24455 { 0x332d, UNICODE_NOT_PRESENT_OFFSET, 9581 }, 24456 { 0x332e, UNICODE_NOT_PRESENT_OFFSET, 9597 }, 24457 { 0x332f, UNICODE_NOT_PRESENT_OFFSET, 9616 }, 24458 { 0x3330, UNICODE_NOT_PRESENT_OFFSET, 9629 }, 24459 { 0x3331, UNICODE_NOT_PRESENT_OFFSET, 9639 }, 24460 { 0x3332, UNICODE_NOT_PRESENT_OFFSET, 9649 }, 24461 { 0x3333, UNICODE_NOT_PRESENT_OFFSET, 9668 }, 24462 { 0x3334, UNICODE_NOT_PRESENT_OFFSET, 9681 }, 24463 { 0x3335, UNICODE_NOT_PRESENT_OFFSET, 9700 }, 24464 { 0x3336, UNICODE_NOT_PRESENT_OFFSET, 9710 }, 24465 { 0x3337, UNICODE_NOT_PRESENT_OFFSET, 9726 }, 24466 { 0x3338, UNICODE_NOT_PRESENT_OFFSET, 9736 }, 24467 { 0x3339, UNICODE_NOT_PRESENT_OFFSET, 9749 }, 24468 { 0x333a, UNICODE_NOT_PRESENT_OFFSET, 9759 }, 24469 { 0x333b, UNICODE_NOT_PRESENT_OFFSET, 9772 }, 24470 { 0x333c, UNICODE_NOT_PRESENT_OFFSET, 9788 }, 24471 { 0x333d, UNICODE_NOT_PRESENT_OFFSET, 9801 }, 24472 { 0x333e, UNICODE_NOT_PRESENT_OFFSET, 9817 }, 24473 { 0x333f, UNICODE_NOT_PRESENT_OFFSET, 9830 }, 24474 { 0x3340, UNICODE_NOT_PRESENT_OFFSET, 9837 }, 24475 { 0x3341, UNICODE_NOT_PRESENT_OFFSET, 9853 }, 24476 { 0x3342, UNICODE_NOT_PRESENT_OFFSET, 9863 }, 24477 { 0x3343, UNICODE_NOT_PRESENT_OFFSET, 9873 }, 24478 { 0x3344, UNICODE_NOT_PRESENT_OFFSET, 9886 }, 24479 { 0x3345, UNICODE_NOT_PRESENT_OFFSET, 9896 }, 24480 { 0x3346, UNICODE_NOT_PRESENT_OFFSET, 9906 }, 24481 { 0x3347, UNICODE_NOT_PRESENT_OFFSET, 9916 }, 24482 { 0x3348, UNICODE_NOT_PRESENT_OFFSET, 9932 }, 24483 { 0x3349, UNICODE_NOT_PRESENT_OFFSET, 9945 }, 24484 { 0x334a, UNICODE_NOT_PRESENT_OFFSET, 9952 }, 24485 { 0x334b, UNICODE_NOT_PRESENT_OFFSET, 9971 }, 24486 { 0x334c, UNICODE_NOT_PRESENT_OFFSET, 9981 }, 24487 { 0x334d, UNICODE_NOT_PRESENT_OFFSET, 9997 }, 24488 { 0x334e, UNICODE_NOT_PRESENT_OFFSET, 10010 }, 24489 { 0x334f, UNICODE_NOT_PRESENT_OFFSET, 10023 }, 24490 { 0x3350, UNICODE_NOT_PRESENT_OFFSET, 10033 }, 24491 { 0x3351, UNICODE_NOT_PRESENT_OFFSET, 10043 }, 24492 { 0x3352, UNICODE_NOT_PRESENT_OFFSET, 10056 }, 24493 { 0x3353, UNICODE_NOT_PRESENT_OFFSET, 10063 }, 24494 { 0x3354, UNICODE_NOT_PRESENT_OFFSET, 10076 }, 24495 { 0x3355, UNICODE_NOT_PRESENT_OFFSET, 10092 }, 24496 { 0x3356, UNICODE_NOT_PRESENT_OFFSET, 10099 }, 24497 { 0x3357, UNICODE_NOT_PRESENT_OFFSET, 10118 }, 24498 { 0x3358, UNICODE_NOT_PRESENT_OFFSET, 10128 }, 24499 { 0x3359, UNICODE_NOT_PRESENT_OFFSET, 10133 }, 24500 { 0x335a, UNICODE_NOT_PRESENT_OFFSET, 10138 }, 24501 { 0x335b, UNICODE_NOT_PRESENT_OFFSET, 10143 }, 24502 { 0x335c, UNICODE_NOT_PRESENT_OFFSET, 10148 }, 24503 { 0x335d, UNICODE_NOT_PRESENT_OFFSET, 10153 }, 24504 { 0x335e, UNICODE_NOT_PRESENT_OFFSET, 10158 }, 24505 { 0x335f, UNICODE_NOT_PRESENT_OFFSET, 10163 }, 24506 { 0x3360, UNICODE_NOT_PRESENT_OFFSET, 10168 }, 24507 { 0x3361, UNICODE_NOT_PRESENT_OFFSET, 10173 }, 24508 { 0x3362, UNICODE_NOT_PRESENT_OFFSET, 10178 }, 24509 { 0x3363, UNICODE_NOT_PRESENT_OFFSET, 10184 }, 24510 { 0x3364, UNICODE_NOT_PRESENT_OFFSET, 10190 }, 24511 { 0x3365, UNICODE_NOT_PRESENT_OFFSET, 10196 }, 24512 { 0x3366, UNICODE_NOT_PRESENT_OFFSET, 10202 }, 24513 { 0x3367, UNICODE_NOT_PRESENT_OFFSET, 10208 }, 24514 { 0x3368, UNICODE_NOT_PRESENT_OFFSET, 10214 }, 24515 { 0x3369, UNICODE_NOT_PRESENT_OFFSET, 10220 }, 24516 { 0x336a, UNICODE_NOT_PRESENT_OFFSET, 10226 }, 24517 { 0x336b, UNICODE_NOT_PRESENT_OFFSET, 10232 }, 24518 { 0x336c, UNICODE_NOT_PRESENT_OFFSET, 10238 }, 24519 { 0x336d, UNICODE_NOT_PRESENT_OFFSET, 10244 }, 24520 { 0x336e, UNICODE_NOT_PRESENT_OFFSET, 10250 }, 24521 { 0x336f, UNICODE_NOT_PRESENT_OFFSET, 10256 }, 24522 { 0x3370, UNICODE_NOT_PRESENT_OFFSET, 10262 }, 24523 { 0x3371, UNICODE_NOT_PRESENT_OFFSET, 10268 }, 24524 { 0x3372, UNICODE_NOT_PRESENT_OFFSET, 10272 }, 24525 { 0x3373, UNICODE_NOT_PRESENT_OFFSET, 10275 }, 24526 { 0x3374, UNICODE_NOT_PRESENT_OFFSET, 10278 }, 24527 { 0x3375, UNICODE_NOT_PRESENT_OFFSET, 10282 }, 24528 { 0x3376, UNICODE_NOT_PRESENT_OFFSET, 10285 }, 24529 { 0x3377, UNICODE_NOT_PRESENT_OFFSET, 10288 }, 24530 { 0x3378, UNICODE_NOT_PRESENT_OFFSET, 10291 }, 24531 { 0x3379, UNICODE_NOT_PRESENT_OFFSET, 10295 }, 24532 { 0x337a, UNICODE_NOT_PRESENT_OFFSET, 10299 }, 24533 { 0x337b, UNICODE_NOT_PRESENT_OFFSET, 10302 }, 24534 { 0x337c, UNICODE_NOT_PRESENT_OFFSET, 10309 }, 24535 { 0x337d, UNICODE_NOT_PRESENT_OFFSET, 10316 }, 24536 { 0x337e, UNICODE_NOT_PRESENT_OFFSET, 10323 }, 24537 { 0x337f, UNICODE_NOT_PRESENT_OFFSET, 10330 }, 24538 { 0x3380, UNICODE_NOT_PRESENT_OFFSET, 10343 }, 24539 { 0x3381, UNICODE_NOT_PRESENT_OFFSET, 10346 }, 24540 { 0x3382, UNICODE_NOT_PRESENT_OFFSET, 10349 }, 24541 { 0x3383, UNICODE_NOT_PRESENT_OFFSET, 10353 }, 24542 { 0x3384, UNICODE_NOT_PRESENT_OFFSET, 10356 }, 24543 { 0x3385, UNICODE_NOT_PRESENT_OFFSET, 10359 }, 24544 { 0x3386, UNICODE_NOT_PRESENT_OFFSET, 10362 }, 24545 { 0x3387, UNICODE_NOT_PRESENT_OFFSET, 10365 }, 24546 { 0x3388, UNICODE_NOT_PRESENT_OFFSET, 10368 }, 24547 { 0x3389, UNICODE_NOT_PRESENT_OFFSET, 10372 }, 24548 { 0x338a, UNICODE_NOT_PRESENT_OFFSET, 10377 }, 24549 { 0x338b, UNICODE_NOT_PRESENT_OFFSET, 10380 }, 24550 { 0x338c, UNICODE_NOT_PRESENT_OFFSET, 10383 }, 24551 { 0x338d, UNICODE_NOT_PRESENT_OFFSET, 10387 }, 24552 { 0x338e, UNICODE_NOT_PRESENT_OFFSET, 10391 }, 24553 { 0x338f, UNICODE_NOT_PRESENT_OFFSET, 10394 }, 24554 { 0x3390, UNICODE_NOT_PRESENT_OFFSET, 10397 }, 24555 { 0x3391, UNICODE_NOT_PRESENT_OFFSET, 10400 }, 24556 { 0x3392, UNICODE_NOT_PRESENT_OFFSET, 10404 }, 24557 { 0x3393, UNICODE_NOT_PRESENT_OFFSET, 10408 }, 24558 { 0x3394, UNICODE_NOT_PRESENT_OFFSET, 10412 }, 24559 { 0x3395, UNICODE_NOT_PRESENT_OFFSET, 10416 }, 24560 { 0x3396, UNICODE_NOT_PRESENT_OFFSET, 10420 }, 24561 { 0x3397, UNICODE_NOT_PRESENT_OFFSET, 10423 }, 24562 { 0x3398, UNICODE_NOT_PRESENT_OFFSET, 10426 }, 24563 { 0x3399, UNICODE_NOT_PRESENT_OFFSET, 10429 }, 24564 { 0x339a, UNICODE_NOT_PRESENT_OFFSET, 10432 }, 24565 { 0x339b, UNICODE_NOT_PRESENT_OFFSET, 10435 }, 24566 { 0x339c, UNICODE_NOT_PRESENT_OFFSET, 10439 }, 24567 { 0x339d, UNICODE_NOT_PRESENT_OFFSET, 10442 }, 24568 { 0x339e, UNICODE_NOT_PRESENT_OFFSET, 10445 }, 24569 { 0x339f, UNICODE_NOT_PRESENT_OFFSET, 10448 }, 24570 { 0x33a0, UNICODE_NOT_PRESENT_OFFSET, 10452 }, 24571 { 0x33a1, UNICODE_NOT_PRESENT_OFFSET, 10456 }, 24572 { 0x33a2, UNICODE_NOT_PRESENT_OFFSET, 10459 }, 24573 { 0x33a3, UNICODE_NOT_PRESENT_OFFSET, 10463 }, 24574 { 0x33a4, UNICODE_NOT_PRESENT_OFFSET, 10467 }, 24575 { 0x33a5, UNICODE_NOT_PRESENT_OFFSET, 10471 }, 24576 { 0x33a6, UNICODE_NOT_PRESENT_OFFSET, 10474 }, 24577 { 0x33a7, UNICODE_NOT_PRESENT_OFFSET, 10478 }, 24578 { 0x33a8, UNICODE_NOT_PRESENT_OFFSET, 10484 }, 24579 { 0x33a9, UNICODE_NOT_PRESENT_OFFSET, 10491 }, 24580 { 0x33aa, UNICODE_NOT_PRESENT_OFFSET, 10494 }, 24581 { 0x33ab, UNICODE_NOT_PRESENT_OFFSET, 10498 }, 24582 { 0x33ac, UNICODE_NOT_PRESENT_OFFSET, 10502 }, 24583 { 0x33ad, UNICODE_NOT_PRESENT_OFFSET, 10506 }, 24584 { 0x33ae, UNICODE_NOT_PRESENT_OFFSET, 10510 }, 24585 { 0x33af, UNICODE_NOT_PRESENT_OFFSET, 10518 }, 24586 { 0x33b0, UNICODE_NOT_PRESENT_OFFSET, 10527 }, 24587 { 0x33b1, UNICODE_NOT_PRESENT_OFFSET, 10530 }, 24588 { 0x33b2, UNICODE_NOT_PRESENT_OFFSET, 10533 }, 24589 { 0x33b3, UNICODE_NOT_PRESENT_OFFSET, 10537 }, 24590 { 0x33b4, UNICODE_NOT_PRESENT_OFFSET, 10540 }, 24591 { 0x33b5, UNICODE_NOT_PRESENT_OFFSET, 10543 }, 24592 { 0x33b6, UNICODE_NOT_PRESENT_OFFSET, 10546 }, 24593 { 0x33b7, UNICODE_NOT_PRESENT_OFFSET, 10550 }, 24594 { 0x33b8, UNICODE_NOT_PRESENT_OFFSET, 10553 }, 24595 { 0x33b9, UNICODE_NOT_PRESENT_OFFSET, 10556 }, 24596 { 0x33ba, UNICODE_NOT_PRESENT_OFFSET, 10559 }, 24597 { 0x33bb, UNICODE_NOT_PRESENT_OFFSET, 10562 }, 24598 { 0x33bc, UNICODE_NOT_PRESENT_OFFSET, 10565 }, 24599 { 0x33bd, UNICODE_NOT_PRESENT_OFFSET, 10569 }, 24600 { 0x33be, UNICODE_NOT_PRESENT_OFFSET, 10572 }, 24601 { 0x33bf, UNICODE_NOT_PRESENT_OFFSET, 10575 }, 24602 { 0x33c0, UNICODE_NOT_PRESENT_OFFSET, 10578 }, 24603 { 0x33c1, UNICODE_NOT_PRESENT_OFFSET, 10582 }, 24604 { 0x33c2, UNICODE_NOT_PRESENT_OFFSET, 10586 }, 24605 { 0x33c3, UNICODE_NOT_PRESENT_OFFSET, 10591 }, 24606 { 0x33c4, UNICODE_NOT_PRESENT_OFFSET, 10594 }, 24607 { 0x33c5, UNICODE_NOT_PRESENT_OFFSET, 10597 }, 24608 { 0x33c6, UNICODE_NOT_PRESENT_OFFSET, 10600 }, 24609 { 0x33c7, UNICODE_NOT_PRESENT_OFFSET, 10607 }, 24610 { 0x33c8, UNICODE_NOT_PRESENT_OFFSET, 10611 }, 24611 { 0x33c9, UNICODE_NOT_PRESENT_OFFSET, 10614 }, 24612 { 0x33ca, UNICODE_NOT_PRESENT_OFFSET, 10617 }, 24613 { 0x33cb, UNICODE_NOT_PRESENT_OFFSET, 10620 }, 24614 { 0x33cc, UNICODE_NOT_PRESENT_OFFSET, 10623 }, 24615 { 0x33cd, UNICODE_NOT_PRESENT_OFFSET, 10626 }, 24616 { 0x33ce, UNICODE_NOT_PRESENT_OFFSET, 10629 }, 24617 { 0x33cf, UNICODE_NOT_PRESENT_OFFSET, 10632 }, 24618 { 0x33d0, UNICODE_NOT_PRESENT_OFFSET, 10635 }, 24619 { 0x33d1, UNICODE_NOT_PRESENT_OFFSET, 10638 }, 24620 { 0x33d2, UNICODE_NOT_PRESENT_OFFSET, 10641 }, 24621 { 0x33d3, UNICODE_NOT_PRESENT_OFFSET, 10645 }, 24622 { 0x33d4, UNICODE_NOT_PRESENT_OFFSET, 10648 }, 24623 { 0x33d5, UNICODE_NOT_PRESENT_OFFSET, 10651 }, 24624 { 0x33d6, UNICODE_NOT_PRESENT_OFFSET, 10655 }, 24625 { 0x33d7, UNICODE_NOT_PRESENT_OFFSET, 10659 }, 24626 { 0x33d8, UNICODE_NOT_PRESENT_OFFSET, 10662 }, 24627 { 0x33d9, UNICODE_NOT_PRESENT_OFFSET, 10667 }, 24628 { 0x33da, UNICODE_NOT_PRESENT_OFFSET, 10671 }, 24629 { 0x33db, UNICODE_NOT_PRESENT_OFFSET, 10674 }, 24630 { 0x33dc, UNICODE_NOT_PRESENT_OFFSET, 10677 }, 24631 { 0x33dd, UNICODE_NOT_PRESENT_OFFSET, 10680 }, 24632 { 0x33de, UNICODE_NOT_PRESENT_OFFSET, 10683 }, 24633 { 0x33df, UNICODE_NOT_PRESENT_OFFSET, 10689 }, 24634 { 0x33e0, UNICODE_NOT_PRESENT_OFFSET, 10695 }, 24635 { 0x33e1, UNICODE_NOT_PRESENT_OFFSET, 10700 }, 24636 { 0x33e2, UNICODE_NOT_PRESENT_OFFSET, 10705 }, 24637 { 0x33e3, UNICODE_NOT_PRESENT_OFFSET, 10710 }, 24638 { 0x33e4, UNICODE_NOT_PRESENT_OFFSET, 10715 }, 24639 { 0x33e5, UNICODE_NOT_PRESENT_OFFSET, 10720 }, 24640 { 0x33e6, UNICODE_NOT_PRESENT_OFFSET, 10725 }, 24641 { 0x33e7, UNICODE_NOT_PRESENT_OFFSET, 10730 }, 24642 { 0x33e8, UNICODE_NOT_PRESENT_OFFSET, 10735 }, 24643 { 0x33e9, UNICODE_NOT_PRESENT_OFFSET, 10740 }, 24644 { 0x33ea, UNICODE_NOT_PRESENT_OFFSET, 10746 }, 24645 { 0x33eb, UNICODE_NOT_PRESENT_OFFSET, 10752 }, 24646 { 0x33ec, UNICODE_NOT_PRESENT_OFFSET, 10758 }, 24647 { 0x33ed, UNICODE_NOT_PRESENT_OFFSET, 10764 }, 24648 { 0x33ee, UNICODE_NOT_PRESENT_OFFSET, 10770 }, 24649 { 0x33ef, UNICODE_NOT_PRESENT_OFFSET, 10776 }, 24650 { 0x33f0, UNICODE_NOT_PRESENT_OFFSET, 10782 }, 24651 { 0x33f1, UNICODE_NOT_PRESENT_OFFSET, 10788 }, 24652 { 0x33f2, UNICODE_NOT_PRESENT_OFFSET, 10794 }, 24653 { 0x33f3, UNICODE_NOT_PRESENT_OFFSET, 10800 }, 24654 { 0x33f4, UNICODE_NOT_PRESENT_OFFSET, 10806 }, 24655 { 0x33f5, UNICODE_NOT_PRESENT_OFFSET, 10812 }, 24656 { 0x33f6, UNICODE_NOT_PRESENT_OFFSET, 10818 }, 24657 { 0x33f7, UNICODE_NOT_PRESENT_OFFSET, 10824 }, 24658 { 0x33f8, UNICODE_NOT_PRESENT_OFFSET, 10830 }, 24659 { 0x33f9, UNICODE_NOT_PRESENT_OFFSET, 10836 }, 24660 { 0x33fa, UNICODE_NOT_PRESENT_OFFSET, 10842 }, 24661 { 0x33fb, UNICODE_NOT_PRESENT_OFFSET, 10848 }, 24662 { 0x33fc, UNICODE_NOT_PRESENT_OFFSET, 10854 }, 24663 { 0x33fd, UNICODE_NOT_PRESENT_OFFSET, 10860 }, 24664 { 0x33fe, UNICODE_NOT_PRESENT_OFFSET, 10866 }, 24665 { 0x33ff, UNICODE_NOT_PRESENT_OFFSET, 10872 }, 24666 { 0xa69c, UNICODE_NOT_PRESENT_OFFSET, 10876 }, 24667 { 0xa69d, UNICODE_NOT_PRESENT_OFFSET, 10879 }, 24668 { 0xa770, UNICODE_NOT_PRESENT_OFFSET, 10882 }, 24669 { 0xa7f8, UNICODE_NOT_PRESENT_OFFSET, 10886 }, 24670 { 0xa7f9, UNICODE_NOT_PRESENT_OFFSET, 10889 }, 24671 { 0xab5c, UNICODE_NOT_PRESENT_OFFSET, 10892 }, 24672 { 0xab5d, UNICODE_NOT_PRESENT_OFFSET, 10896 }, 24673 { 0xab5e, UNICODE_NOT_PRESENT_OFFSET, 10900 }, 24674 { 0xab5f, UNICODE_NOT_PRESENT_OFFSET, 10903 }, 24675 { 0xf900, 10907, UNICODE_NOT_PRESENT_OFFSET }, 24676 { 0xf901, 10911, UNICODE_NOT_PRESENT_OFFSET }, 24677 { 0xf902, 6813, UNICODE_NOT_PRESENT_OFFSET }, 24678 { 0xf903, 10915, UNICODE_NOT_PRESENT_OFFSET }, 24679 { 0xf904, 10919, UNICODE_NOT_PRESENT_OFFSET }, 24680 { 0xf905, 10923, UNICODE_NOT_PRESENT_OFFSET }, 24681 { 0xf906, 10927, UNICODE_NOT_PRESENT_OFFSET }, 24682 { 0xf907, 7029, UNICODE_NOT_PRESENT_OFFSET }, 24683 { 0xf908, 7029, UNICODE_NOT_PRESENT_OFFSET }, 24684 { 0xf909, 10931, UNICODE_NOT_PRESENT_OFFSET }, 24685 { 0xf90a, 6845, UNICODE_NOT_PRESENT_OFFSET }, 24686 { 0xf90b, 10935, UNICODE_NOT_PRESENT_OFFSET }, 24687 { 0xf90c, 10939, UNICODE_NOT_PRESENT_OFFSET }, 24688 { 0xf90d, 10943, UNICODE_NOT_PRESENT_OFFSET }, 24689 { 0xf90e, 10947, UNICODE_NOT_PRESENT_OFFSET }, 24690 { 0xf90f, 10951, UNICODE_NOT_PRESENT_OFFSET }, 24691 { 0xf910, 10955, UNICODE_NOT_PRESENT_OFFSET }, 24692 { 0xf911, 10959, UNICODE_NOT_PRESENT_OFFSET }, 24693 { 0xf912, 10963, UNICODE_NOT_PRESENT_OFFSET }, 24694 { 0xf913, 10967, UNICODE_NOT_PRESENT_OFFSET }, 24695 { 0xf914, 10971, UNICODE_NOT_PRESENT_OFFSET }, 24696 { 0xf915, 10975, UNICODE_NOT_PRESENT_OFFSET }, 24697 { 0xf916, 10979, UNICODE_NOT_PRESENT_OFFSET }, 24698 { 0xf917, 10983, UNICODE_NOT_PRESENT_OFFSET }, 24699 { 0xf918, 10987, UNICODE_NOT_PRESENT_OFFSET }, 24700 { 0xf919, 10991, UNICODE_NOT_PRESENT_OFFSET }, 24701 { 0xf91a, 10995, UNICODE_NOT_PRESENT_OFFSET }, 24702 { 0xf91b, 10999, UNICODE_NOT_PRESENT_OFFSET }, 24703 { 0xf91c, 11003, UNICODE_NOT_PRESENT_OFFSET }, 24704 { 0xf91d, 11007, UNICODE_NOT_PRESENT_OFFSET }, 24705 { 0xf91e, 11011, UNICODE_NOT_PRESENT_OFFSET }, 24706 { 0xf91f, 11015, UNICODE_NOT_PRESENT_OFFSET }, 24707 { 0xf920, 11019, UNICODE_NOT_PRESENT_OFFSET }, 24708 { 0xf921, 11023, UNICODE_NOT_PRESENT_OFFSET }, 24709 { 0xf922, 11027, UNICODE_NOT_PRESENT_OFFSET }, 24710 { 0xf923, 11031, UNICODE_NOT_PRESENT_OFFSET }, 24711 { 0xf924, 11035, UNICODE_NOT_PRESENT_OFFSET }, 24712 { 0xf925, 11039, UNICODE_NOT_PRESENT_OFFSET }, 24713 { 0xf926, 11043, UNICODE_NOT_PRESENT_OFFSET }, 24714 { 0xf927, 11047, UNICODE_NOT_PRESENT_OFFSET }, 24715 { 0xf928, 11051, UNICODE_NOT_PRESENT_OFFSET }, 24716 { 0xf929, 11055, UNICODE_NOT_PRESENT_OFFSET }, 24717 { 0xf92a, 11059, UNICODE_NOT_PRESENT_OFFSET }, 24718 { 0xf92b, 11063, UNICODE_NOT_PRESENT_OFFSET }, 24719 { 0xf92c, 11067, UNICODE_NOT_PRESENT_OFFSET }, 24720 { 0xf92d, 11071, UNICODE_NOT_PRESENT_OFFSET }, 24721 { 0xf92e, 11075, UNICODE_NOT_PRESENT_OFFSET }, 24722 { 0xf92f, 11079, UNICODE_NOT_PRESENT_OFFSET }, 24723 { 0xf930, 11083, UNICODE_NOT_PRESENT_OFFSET }, 24724 { 0xf931, 11087, UNICODE_NOT_PRESENT_OFFSET }, 24725 { 0xf932, 11091, UNICODE_NOT_PRESENT_OFFSET }, 24726 { 0xf933, 11095, UNICODE_NOT_PRESENT_OFFSET }, 24727 { 0xf934, 6677, UNICODE_NOT_PRESENT_OFFSET }, 24728 { 0xf935, 11099, UNICODE_NOT_PRESENT_OFFSET }, 24729 { 0xf936, 11103, UNICODE_NOT_PRESENT_OFFSET }, 24730 { 0xf937, 11107, UNICODE_NOT_PRESENT_OFFSET }, 24731 { 0xf938, 11111, UNICODE_NOT_PRESENT_OFFSET }, 24732 { 0xf939, 11115, UNICODE_NOT_PRESENT_OFFSET }, 24733 { 0xf93a, 11119, UNICODE_NOT_PRESENT_OFFSET }, 24734 { 0xf93b, 11123, UNICODE_NOT_PRESENT_OFFSET }, 24735 { 0xf93c, 11127, UNICODE_NOT_PRESENT_OFFSET }, 24736 { 0xf93d, 11131, UNICODE_NOT_PRESENT_OFFSET }, 24737 { 0xf93e, 11135, UNICODE_NOT_PRESENT_OFFSET }, 24738 { 0xf93f, 11139, UNICODE_NOT_PRESENT_OFFSET }, 24739 { 0xf940, 6969, UNICODE_NOT_PRESENT_OFFSET }, 24740 { 0xf941, 11143, UNICODE_NOT_PRESENT_OFFSET }, 24741 { 0xf942, 11147, UNICODE_NOT_PRESENT_OFFSET }, 24742 { 0xf943, 11151, UNICODE_NOT_PRESENT_OFFSET }, 24743 { 0xf944, 11155, UNICODE_NOT_PRESENT_OFFSET }, 24744 { 0xf945, 11159, UNICODE_NOT_PRESENT_OFFSET }, 24745 { 0xf946, 11163, UNICODE_NOT_PRESENT_OFFSET }, 24746 { 0xf947, 11167, UNICODE_NOT_PRESENT_OFFSET }, 24747 { 0xf948, 11171, UNICODE_NOT_PRESENT_OFFSET }, 24748 { 0xf949, 11175, UNICODE_NOT_PRESENT_OFFSET }, 24749 { 0xf94a, 11179, UNICODE_NOT_PRESENT_OFFSET }, 24750 { 0xf94b, 11183, UNICODE_NOT_PRESENT_OFFSET }, 24751 { 0xf94c, 11187, UNICODE_NOT_PRESENT_OFFSET }, 24752 { 0xf94d, 11191, UNICODE_NOT_PRESENT_OFFSET }, 24753 { 0xf94e, 11195, UNICODE_NOT_PRESENT_OFFSET }, 24754 { 0xf94f, 11199, UNICODE_NOT_PRESENT_OFFSET }, 24755 { 0xf950, 11203, UNICODE_NOT_PRESENT_OFFSET }, 24756 { 0xf951, 11207, UNICODE_NOT_PRESENT_OFFSET }, 24757 { 0xf952, 11211, UNICODE_NOT_PRESENT_OFFSET }, 24758 { 0xf953, 11215, UNICODE_NOT_PRESENT_OFFSET }, 24759 { 0xf954, 11219, UNICODE_NOT_PRESENT_OFFSET }, 24760 { 0xf955, 11223, UNICODE_NOT_PRESENT_OFFSET }, 24761 { 0xf956, 11227, UNICODE_NOT_PRESENT_OFFSET }, 24762 { 0xf957, 11231, UNICODE_NOT_PRESENT_OFFSET }, 24763 { 0xf958, 11235, UNICODE_NOT_PRESENT_OFFSET }, 24764 { 0xf959, 11239, UNICODE_NOT_PRESENT_OFFSET }, 24765 { 0xf95a, 11243, UNICODE_NOT_PRESENT_OFFSET }, 24766 { 0xf95b, 11247, UNICODE_NOT_PRESENT_OFFSET }, 24767 { 0xf95c, 10971, UNICODE_NOT_PRESENT_OFFSET }, 24768 { 0xf95d, 11251, UNICODE_NOT_PRESENT_OFFSET }, 24769 { 0xf95e, 11255, UNICODE_NOT_PRESENT_OFFSET }, 24770 { 0xf95f, 11259, UNICODE_NOT_PRESENT_OFFSET }, 24771 { 0xf960, 11263, UNICODE_NOT_PRESENT_OFFSET }, 24772 { 0xf961, 11267, UNICODE_NOT_PRESENT_OFFSET }, 24773 { 0xf962, 11271, UNICODE_NOT_PRESENT_OFFSET }, 24774 { 0xf963, 11275, UNICODE_NOT_PRESENT_OFFSET }, 24775 { 0xf964, 11279, UNICODE_NOT_PRESENT_OFFSET }, 24776 { 0xf965, 11283, UNICODE_NOT_PRESENT_OFFSET }, 24777 { 0xf966, 11287, UNICODE_NOT_PRESENT_OFFSET }, 24778 { 0xf967, 11291, UNICODE_NOT_PRESENT_OFFSET }, 24779 { 0xf968, 11295, UNICODE_NOT_PRESENT_OFFSET }, 24780 { 0xf969, 11299, UNICODE_NOT_PRESENT_OFFSET }, 24781 { 0xf96a, 11303, UNICODE_NOT_PRESENT_OFFSET }, 24782 { 0xf96b, 11307, UNICODE_NOT_PRESENT_OFFSET }, 24783 { 0xf96c, 11311, UNICODE_NOT_PRESENT_OFFSET }, 24784 { 0xf96d, 11315, UNICODE_NOT_PRESENT_OFFSET }, 24785 { 0xf96e, 11319, UNICODE_NOT_PRESENT_OFFSET }, 24786 { 0xf96f, 11323, UNICODE_NOT_PRESENT_OFFSET }, 24787 { 0xf970, 11327, UNICODE_NOT_PRESENT_OFFSET }, 24788 { 0xf971, 6821, UNICODE_NOT_PRESENT_OFFSET }, 24789 { 0xf972, 11331, UNICODE_NOT_PRESENT_OFFSET }, 24790 { 0xf973, 11335, UNICODE_NOT_PRESENT_OFFSET }, 24791 { 0xf974, 11339, UNICODE_NOT_PRESENT_OFFSET }, 24792 { 0xf975, 11343, UNICODE_NOT_PRESENT_OFFSET }, 24793 { 0xf976, 11347, UNICODE_NOT_PRESENT_OFFSET }, 24794 { 0xf977, 11351, UNICODE_NOT_PRESENT_OFFSET }, 24795 { 0xf978, 11355, UNICODE_NOT_PRESENT_OFFSET }, 24796 { 0xf979, 11359, UNICODE_NOT_PRESENT_OFFSET }, 24797 { 0xf97a, 11363, UNICODE_NOT_PRESENT_OFFSET }, 24798 { 0xf97b, 11367, UNICODE_NOT_PRESENT_OFFSET }, 24799 { 0xf97c, 11371, UNICODE_NOT_PRESENT_OFFSET }, 24800 { 0xf97d, 11375, UNICODE_NOT_PRESENT_OFFSET }, 24801 { 0xf97e, 11379, UNICODE_NOT_PRESENT_OFFSET }, 24802 { 0xf97f, 11383, UNICODE_NOT_PRESENT_OFFSET }, 24803 { 0xf980, 11387, UNICODE_NOT_PRESENT_OFFSET }, 24804 { 0xf981, 6329, UNICODE_NOT_PRESENT_OFFSET }, 24805 { 0xf982, 11391, UNICODE_NOT_PRESENT_OFFSET }, 24806 { 0xf983, 11395, UNICODE_NOT_PRESENT_OFFSET }, 24807 { 0xf984, 11399, UNICODE_NOT_PRESENT_OFFSET }, 24808 { 0xf985, 11403, UNICODE_NOT_PRESENT_OFFSET }, 24809 { 0xf986, 11407, UNICODE_NOT_PRESENT_OFFSET }, 24810 { 0xf987, 11411, UNICODE_NOT_PRESENT_OFFSET }, 24811 { 0xf988, 11415, UNICODE_NOT_PRESENT_OFFSET }, 24812 { 0xf989, 11419, UNICODE_NOT_PRESENT_OFFSET }, 24813 { 0xf98a, 6253, UNICODE_NOT_PRESENT_OFFSET }, 24814 { 0xf98b, 11423, UNICODE_NOT_PRESENT_OFFSET }, 24815 { 0xf98c, 11427, UNICODE_NOT_PRESENT_OFFSET }, 24816 { 0xf98d, 11431, UNICODE_NOT_PRESENT_OFFSET }, 24817 { 0xf98e, 11435, UNICODE_NOT_PRESENT_OFFSET }, 24818 { 0xf98f, 11439, UNICODE_NOT_PRESENT_OFFSET }, 24819 { 0xf990, 11443, UNICODE_NOT_PRESENT_OFFSET }, 24820 { 0xf991, 11447, UNICODE_NOT_PRESENT_OFFSET }, 24821 { 0xf992, 11451, UNICODE_NOT_PRESENT_OFFSET }, 24822 { 0xf993, 11455, UNICODE_NOT_PRESENT_OFFSET }, 24823 { 0xf994, 11459, UNICODE_NOT_PRESENT_OFFSET }, 24824 { 0xf995, 11463, UNICODE_NOT_PRESENT_OFFSET }, 24825 { 0xf996, 11467, UNICODE_NOT_PRESENT_OFFSET }, 24826 { 0xf997, 11471, UNICODE_NOT_PRESENT_OFFSET }, 24827 { 0xf998, 11475, UNICODE_NOT_PRESENT_OFFSET }, 24828 { 0xf999, 11479, UNICODE_NOT_PRESENT_OFFSET }, 24829 { 0xf99a, 11483, UNICODE_NOT_PRESENT_OFFSET }, 24830 { 0xf99b, 11487, UNICODE_NOT_PRESENT_OFFSET }, 24831 { 0xf99c, 11491, UNICODE_NOT_PRESENT_OFFSET }, 24832 { 0xf99d, 11495, UNICODE_NOT_PRESENT_OFFSET }, 24833 { 0xf99e, 11499, UNICODE_NOT_PRESENT_OFFSET }, 24834 { 0xf99f, 11503, UNICODE_NOT_PRESENT_OFFSET }, 24835 { 0xf9a0, 11507, UNICODE_NOT_PRESENT_OFFSET }, 24836 { 0xf9a1, 11323, UNICODE_NOT_PRESENT_OFFSET }, 24837 { 0xf9a2, 11511, UNICODE_NOT_PRESENT_OFFSET }, 24838 { 0xf9a3, 11515, UNICODE_NOT_PRESENT_OFFSET }, 24839 { 0xf9a4, 11519, UNICODE_NOT_PRESENT_OFFSET }, 24840 { 0xf9a5, 11523, UNICODE_NOT_PRESENT_OFFSET }, 24841 { 0xf9a6, 11527, UNICODE_NOT_PRESENT_OFFSET }, 24842 { 0xf9a7, 11531, UNICODE_NOT_PRESENT_OFFSET }, 24843 { 0xf9a8, 11535, UNICODE_NOT_PRESENT_OFFSET }, 24844 { 0xf9a9, 11539, UNICODE_NOT_PRESENT_OFFSET }, 24845 { 0xf9aa, 11259, UNICODE_NOT_PRESENT_OFFSET }, 24846 { 0xf9ab, 11543, UNICODE_NOT_PRESENT_OFFSET }, 24847 { 0xf9ac, 11547, UNICODE_NOT_PRESENT_OFFSET }, 24848 { 0xf9ad, 11551, UNICODE_NOT_PRESENT_OFFSET }, 24849 { 0xf9ae, 11555, UNICODE_NOT_PRESENT_OFFSET }, 24850 { 0xf9af, 11559, UNICODE_NOT_PRESENT_OFFSET }, 24851 { 0xf9b0, 11563, UNICODE_NOT_PRESENT_OFFSET }, 24852 { 0xf9b1, 11567, UNICODE_NOT_PRESENT_OFFSET }, 24853 { 0xf9b2, 11571, UNICODE_NOT_PRESENT_OFFSET }, 24854 { 0xf9b3, 11575, UNICODE_NOT_PRESENT_OFFSET }, 24855 { 0xf9b4, 11579, UNICODE_NOT_PRESENT_OFFSET }, 24856 { 0xf9b5, 11583, UNICODE_NOT_PRESENT_OFFSET }, 24857 { 0xf9b6, 11587, UNICODE_NOT_PRESENT_OFFSET }, 24858 { 0xf9b7, 11591, UNICODE_NOT_PRESENT_OFFSET }, 24859 { 0xf9b8, 11595, UNICODE_NOT_PRESENT_OFFSET }, 24860 { 0xf9b9, 11599, UNICODE_NOT_PRESENT_OFFSET }, 24861 { 0xf9ba, 11603, UNICODE_NOT_PRESENT_OFFSET }, 24862 { 0xf9bb, 11607, UNICODE_NOT_PRESENT_OFFSET }, 24863 { 0xf9bc, 11611, UNICODE_NOT_PRESENT_OFFSET }, 24864 { 0xf9bd, 11615, UNICODE_NOT_PRESENT_OFFSET }, 24865 { 0xf9be, 11619, UNICODE_NOT_PRESENT_OFFSET }, 24866 { 0xf9bf, 10971, UNICODE_NOT_PRESENT_OFFSET }, 24867 { 0xf9c0, 11623, UNICODE_NOT_PRESENT_OFFSET }, 24868 { 0xf9c1, 11627, UNICODE_NOT_PRESENT_OFFSET }, 24869 { 0xf9c2, 11631, UNICODE_NOT_PRESENT_OFFSET }, 24870 { 0xf9c3, 11635, UNICODE_NOT_PRESENT_OFFSET }, 24871 { 0xf9c4, 7025, UNICODE_NOT_PRESENT_OFFSET }, 24872 { 0xf9c5, 11639, UNICODE_NOT_PRESENT_OFFSET }, 24873 { 0xf9c6, 11643, UNICODE_NOT_PRESENT_OFFSET }, 24874 { 0xf9c7, 11647, UNICODE_NOT_PRESENT_OFFSET }, 24875 { 0xf9c8, 11651, UNICODE_NOT_PRESENT_OFFSET }, 24876 { 0xf9c9, 11655, UNICODE_NOT_PRESENT_OFFSET }, 24877 { 0xf9ca, 11659, UNICODE_NOT_PRESENT_OFFSET }, 24878 { 0xf9cb, 11663, UNICODE_NOT_PRESENT_OFFSET }, 24879 { 0xf9cc, 11667, UNICODE_NOT_PRESENT_OFFSET }, 24880 { 0xf9cd, 11671, UNICODE_NOT_PRESENT_OFFSET }, 24881 { 0xf9ce, 11675, UNICODE_NOT_PRESENT_OFFSET }, 24882 { 0xf9cf, 11679, UNICODE_NOT_PRESENT_OFFSET }, 24883 { 0xf9d0, 11683, UNICODE_NOT_PRESENT_OFFSET }, 24884 { 0xf9d1, 8562, UNICODE_NOT_PRESENT_OFFSET }, 24885 { 0xf9d2, 11687, UNICODE_NOT_PRESENT_OFFSET }, 24886 { 0xf9d3, 11691, UNICODE_NOT_PRESENT_OFFSET }, 24887 { 0xf9d4, 11695, UNICODE_NOT_PRESENT_OFFSET }, 24888 { 0xf9d5, 11699, UNICODE_NOT_PRESENT_OFFSET }, 24889 { 0xf9d6, 11703, UNICODE_NOT_PRESENT_OFFSET }, 24890 { 0xf9d7, 11707, UNICODE_NOT_PRESENT_OFFSET }, 24891 { 0xf9d8, 11711, UNICODE_NOT_PRESENT_OFFSET }, 24892 { 0xf9d9, 11715, UNICODE_NOT_PRESENT_OFFSET }, 24893 { 0xf9da, 11719, UNICODE_NOT_PRESENT_OFFSET }, 24894 { 0xf9db, 11267, UNICODE_NOT_PRESENT_OFFSET }, 24895 { 0xf9dc, 11723, UNICODE_NOT_PRESENT_OFFSET }, 24896 { 0xf9dd, 11727, UNICODE_NOT_PRESENT_OFFSET }, 24897 { 0xf9de, 11731, UNICODE_NOT_PRESENT_OFFSET }, 24898 { 0xf9df, 11735, UNICODE_NOT_PRESENT_OFFSET }, 24899 { 0xf9e0, 11739, UNICODE_NOT_PRESENT_OFFSET }, 24900 { 0xf9e1, 11743, UNICODE_NOT_PRESENT_OFFSET }, 24901 { 0xf9e2, 11747, UNICODE_NOT_PRESENT_OFFSET }, 24902 { 0xf9e3, 11751, UNICODE_NOT_PRESENT_OFFSET }, 24903 { 0xf9e4, 11755, UNICODE_NOT_PRESENT_OFFSET }, 24904 { 0xf9e5, 11759, UNICODE_NOT_PRESENT_OFFSET }, 24905 { 0xf9e6, 11763, UNICODE_NOT_PRESENT_OFFSET }, 24906 { 0xf9e7, 11767, UNICODE_NOT_PRESENT_OFFSET }, 24907 { 0xf9e8, 11771, UNICODE_NOT_PRESENT_OFFSET }, 24908 { 0xf9e9, 6841, UNICODE_NOT_PRESENT_OFFSET }, 24909 { 0xf9ea, 11775, UNICODE_NOT_PRESENT_OFFSET }, 24910 { 0xf9eb, 11779, UNICODE_NOT_PRESENT_OFFSET }, 24911 { 0xf9ec, 11783, UNICODE_NOT_PRESENT_OFFSET }, 24912 { 0xf9ed, 11787, UNICODE_NOT_PRESENT_OFFSET }, 24913 { 0xf9ee, 11791, UNICODE_NOT_PRESENT_OFFSET }, 24914 { 0xf9ef, 11795, UNICODE_NOT_PRESENT_OFFSET }, 24915 { 0xf9f0, 11799, UNICODE_NOT_PRESENT_OFFSET }, 24916 { 0xf9f1, 11803, UNICODE_NOT_PRESENT_OFFSET }, 24917 { 0xf9f2, 11807, UNICODE_NOT_PRESENT_OFFSET }, 24918 { 0xf9f3, 11811, UNICODE_NOT_PRESENT_OFFSET }, 24919 { 0xf9f4, 11815, UNICODE_NOT_PRESENT_OFFSET }, 24920 { 0xf9f5, 11819, UNICODE_NOT_PRESENT_OFFSET }, 24921 { 0xf9f6, 11823, UNICODE_NOT_PRESENT_OFFSET }, 24922 { 0xf9f7, 6645, UNICODE_NOT_PRESENT_OFFSET }, 24923 { 0xf9f8, 11827, UNICODE_NOT_PRESENT_OFFSET }, 24924 { 0xf9f9, 11831, UNICODE_NOT_PRESENT_OFFSET }, 24925 { 0xf9fa, 11835, UNICODE_NOT_PRESENT_OFFSET }, 24926 { 0xf9fb, 11839, UNICODE_NOT_PRESENT_OFFSET }, 24927 { 0xf9fc, 11843, UNICODE_NOT_PRESENT_OFFSET }, 24928 { 0xf9fd, 11847, UNICODE_NOT_PRESENT_OFFSET }, 24929 { 0xf9fe, 11851, UNICODE_NOT_PRESENT_OFFSET }, 24930 { 0xf9ff, 11855, UNICODE_NOT_PRESENT_OFFSET }, 24931 { 0xfa00, 11859, UNICODE_NOT_PRESENT_OFFSET }, 24932 { 0xfa01, 11863, UNICODE_NOT_PRESENT_OFFSET }, 24933 { 0xfa02, 11867, UNICODE_NOT_PRESENT_OFFSET }, 24934 { 0xfa03, 11871, UNICODE_NOT_PRESENT_OFFSET }, 24935 { 0xfa04, 11875, UNICODE_NOT_PRESENT_OFFSET }, 24936 { 0xfa05, 11879, UNICODE_NOT_PRESENT_OFFSET }, 24937 { 0xfa06, 11883, UNICODE_NOT_PRESENT_OFFSET }, 24938 { 0xfa07, 11887, UNICODE_NOT_PRESENT_OFFSET }, 24939 { 0xfa08, 6753, UNICODE_NOT_PRESENT_OFFSET }, 24940 { 0xfa09, 11891, UNICODE_NOT_PRESENT_OFFSET }, 24941 { 0xfa0a, 6765, UNICODE_NOT_PRESENT_OFFSET }, 24942 { 0xfa0b, 11895, UNICODE_NOT_PRESENT_OFFSET }, 24943 { 0xfa0c, 11899, UNICODE_NOT_PRESENT_OFFSET }, 24944 { 0xfa0d, 11903, UNICODE_NOT_PRESENT_OFFSET }, 24945 { 0xfa10, 11907, UNICODE_NOT_PRESENT_OFFSET }, 24946 { 0xfa12, 11911, UNICODE_NOT_PRESENT_OFFSET }, 24947 { 0xfa15, 11915, UNICODE_NOT_PRESENT_OFFSET }, 24948 { 0xfa16, 11919, UNICODE_NOT_PRESENT_OFFSET }, 24949 { 0xfa17, 11923, UNICODE_NOT_PRESENT_OFFSET }, 24950 { 0xfa18, 11927, UNICODE_NOT_PRESENT_OFFSET }, 24951 { 0xfa19, 11931, UNICODE_NOT_PRESENT_OFFSET }, 24952 { 0xfa1a, 11935, UNICODE_NOT_PRESENT_OFFSET }, 24953 { 0xfa1b, 11939, UNICODE_NOT_PRESENT_OFFSET }, 24954 { 0xfa1c, 11943, UNICODE_NOT_PRESENT_OFFSET }, 24955 { 0xfa1d, 11947, UNICODE_NOT_PRESENT_OFFSET }, 24956 { 0xfa1e, 6673, UNICODE_NOT_PRESENT_OFFSET }, 24957 { 0xfa20, 11951, UNICODE_NOT_PRESENT_OFFSET }, 24958 { 0xfa22, 11955, UNICODE_NOT_PRESENT_OFFSET }, 24959 { 0xfa25, 11959, UNICODE_NOT_PRESENT_OFFSET }, 24960 { 0xfa26, 11963, UNICODE_NOT_PRESENT_OFFSET }, 24961 { 0xfa2a, 11967, UNICODE_NOT_PRESENT_OFFSET }, 24962 { 0xfa2b, 11971, UNICODE_NOT_PRESENT_OFFSET }, 24963 { 0xfa2c, 11975, UNICODE_NOT_PRESENT_OFFSET }, 24964 { 0xfa2d, 11979, UNICODE_NOT_PRESENT_OFFSET }, 24965 { 0xfa2e, 11983, UNICODE_NOT_PRESENT_OFFSET }, 24966 { 0xfa2f, 11987, UNICODE_NOT_PRESENT_OFFSET }, 24967 { 0xfa30, 11991, UNICODE_NOT_PRESENT_OFFSET }, 24968 { 0xfa31, 11995, UNICODE_NOT_PRESENT_OFFSET }, 24969 { 0xfa32, 11999, UNICODE_NOT_PRESENT_OFFSET }, 24970 { 0xfa33, 12003, UNICODE_NOT_PRESENT_OFFSET }, 24971 { 0xfa34, 12007, UNICODE_NOT_PRESENT_OFFSET }, 24972 { 0xfa35, 12011, UNICODE_NOT_PRESENT_OFFSET }, 24973 { 0xfa36, 12015, UNICODE_NOT_PRESENT_OFFSET }, 24974 { 0xfa37, 12019, UNICODE_NOT_PRESENT_OFFSET }, 24975 { 0xfa38, 12023, UNICODE_NOT_PRESENT_OFFSET }, 24976 { 0xfa39, 12027, UNICODE_NOT_PRESENT_OFFSET }, 24977 { 0xfa3a, 12031, UNICODE_NOT_PRESENT_OFFSET }, 24978 { 0xfa3b, 12035, UNICODE_NOT_PRESENT_OFFSET }, 24979 { 0xfa3c, 6357, UNICODE_NOT_PRESENT_OFFSET }, 24980 { 0xfa3d, 12039, UNICODE_NOT_PRESENT_OFFSET }, 24981 { 0xfa3e, 12043, UNICODE_NOT_PRESENT_OFFSET }, 24982 { 0xfa3f, 12047, UNICODE_NOT_PRESENT_OFFSET }, 24983 { 0xfa40, 12051, UNICODE_NOT_PRESENT_OFFSET }, 24984 { 0xfa41, 12055, UNICODE_NOT_PRESENT_OFFSET }, 24985 { 0xfa42, 12059, UNICODE_NOT_PRESENT_OFFSET }, 24986 { 0xfa43, 12063, UNICODE_NOT_PRESENT_OFFSET }, 24987 { 0xfa44, 12067, UNICODE_NOT_PRESENT_OFFSET }, 24988 { 0xfa45, 12071, UNICODE_NOT_PRESENT_OFFSET }, 24989 { 0xfa46, 12075, UNICODE_NOT_PRESENT_OFFSET }, 24990 { 0xfa47, 12079, UNICODE_NOT_PRESENT_OFFSET }, 24991 { 0xfa48, 12083, UNICODE_NOT_PRESENT_OFFSET }, 24992 { 0xfa49, 12087, UNICODE_NOT_PRESENT_OFFSET }, 24993 { 0xfa4a, 12091, UNICODE_NOT_PRESENT_OFFSET }, 24994 { 0xfa4b, 12095, UNICODE_NOT_PRESENT_OFFSET }, 24995 { 0xfa4c, 8582, UNICODE_NOT_PRESENT_OFFSET }, 24996 { 0xfa4d, 12099, UNICODE_NOT_PRESENT_OFFSET }, 24997 { 0xfa4e, 12103, UNICODE_NOT_PRESENT_OFFSET }, 24998 { 0xfa4f, 12107, UNICODE_NOT_PRESENT_OFFSET }, 24999 { 0xfa50, 12111, UNICODE_NOT_PRESENT_OFFSET }, 25000 { 0xfa51, 8598, UNICODE_NOT_PRESENT_OFFSET }, 25001 { 0xfa52, 12115, UNICODE_NOT_PRESENT_OFFSET }, 25002 { 0xfa53, 12119, UNICODE_NOT_PRESENT_OFFSET }, 25003 { 0xfa54, 12123, UNICODE_NOT_PRESENT_OFFSET }, 25004 { 0xfa55, 12127, UNICODE_NOT_PRESENT_OFFSET }, 25005 { 0xfa56, 12131, UNICODE_NOT_PRESENT_OFFSET }, 25006 { 0xfa57, 11467, UNICODE_NOT_PRESENT_OFFSET }, 25007 { 0xfa58, 12135, UNICODE_NOT_PRESENT_OFFSET }, 25008 { 0xfa59, 12139, UNICODE_NOT_PRESENT_OFFSET }, 25009 { 0xfa5a, 12143, UNICODE_NOT_PRESENT_OFFSET }, 25010 { 0xfa5b, 12147, UNICODE_NOT_PRESENT_OFFSET }, 25011 { 0xfa5c, 12151, UNICODE_NOT_PRESENT_OFFSET }, 25012 { 0xfa5d, 12155, UNICODE_NOT_PRESENT_OFFSET }, 25013 { 0xfa5e, 12155, UNICODE_NOT_PRESENT_OFFSET }, 25014 { 0xfa5f, 12159, UNICODE_NOT_PRESENT_OFFSET }, 25015 { 0xfa60, 12163, UNICODE_NOT_PRESENT_OFFSET }, 25016 { 0xfa61, 12167, UNICODE_NOT_PRESENT_OFFSET }, 25017 { 0xfa62, 12171, UNICODE_NOT_PRESENT_OFFSET }, 25018 { 0xfa63, 12175, UNICODE_NOT_PRESENT_OFFSET }, 25019 { 0xfa64, 12179, UNICODE_NOT_PRESENT_OFFSET }, 25020 { 0xfa65, 12183, UNICODE_NOT_PRESENT_OFFSET }, 25021 { 0xfa66, 12187, UNICODE_NOT_PRESENT_OFFSET }, 25022 { 0xfa67, 11959, UNICODE_NOT_PRESENT_OFFSET }, 25023 { 0xfa68, 12191, UNICODE_NOT_PRESENT_OFFSET }, 25024 { 0xfa69, 12195, UNICODE_NOT_PRESENT_OFFSET }, 25025 { 0xfa6a, 12199, UNICODE_NOT_PRESENT_OFFSET }, 25026 { 0xfa6b, 12203, UNICODE_NOT_PRESENT_OFFSET }, 25027 { 0xfa6c, 12207, UNICODE_NOT_PRESENT_OFFSET }, 25028 { 0xfa6d, 12212, UNICODE_NOT_PRESENT_OFFSET }, 25029 { 0xfa70, 12216, UNICODE_NOT_PRESENT_OFFSET }, 25030 { 0xfa71, 12220, UNICODE_NOT_PRESENT_OFFSET }, 25031 { 0xfa72, 12224, UNICODE_NOT_PRESENT_OFFSET }, 25032 { 0xfa73, 12228, UNICODE_NOT_PRESENT_OFFSET }, 25033 { 0xfa74, 12232, UNICODE_NOT_PRESENT_OFFSET }, 25034 { 0xfa75, 12236, UNICODE_NOT_PRESENT_OFFSET }, 25035 { 0xfa76, 12240, UNICODE_NOT_PRESENT_OFFSET }, 25036 { 0xfa77, 12244, UNICODE_NOT_PRESENT_OFFSET }, 25037 { 0xfa78, 12015, UNICODE_NOT_PRESENT_OFFSET }, 25038 { 0xfa79, 12248, UNICODE_NOT_PRESENT_OFFSET }, 25039 { 0xfa7a, 12252, UNICODE_NOT_PRESENT_OFFSET }, 25040 { 0xfa7b, 12256, UNICODE_NOT_PRESENT_OFFSET }, 25041 { 0xfa7c, 11907, UNICODE_NOT_PRESENT_OFFSET }, 25042 { 0xfa7d, 12260, UNICODE_NOT_PRESENT_OFFSET }, 25043 { 0xfa7e, 12264, UNICODE_NOT_PRESENT_OFFSET }, 25044 { 0xfa7f, 12268, UNICODE_NOT_PRESENT_OFFSET }, 25045 { 0xfa80, 12272, UNICODE_NOT_PRESENT_OFFSET }, 25046 { 0xfa81, 12276, UNICODE_NOT_PRESENT_OFFSET }, 25047 { 0xfa82, 12280, UNICODE_NOT_PRESENT_OFFSET }, 25048 { 0xfa83, 12284, UNICODE_NOT_PRESENT_OFFSET }, 25049 { 0xfa84, 12288, UNICODE_NOT_PRESENT_OFFSET }, 25050 { 0xfa85, 12292, UNICODE_NOT_PRESENT_OFFSET }, 25051 { 0xfa86, 12296, UNICODE_NOT_PRESENT_OFFSET }, 25052 { 0xfa87, 12300, UNICODE_NOT_PRESENT_OFFSET }, 25053 { 0xfa88, 12304, UNICODE_NOT_PRESENT_OFFSET }, 25054 { 0xfa89, 12047, UNICODE_NOT_PRESENT_OFFSET }, 25055 { 0xfa8a, 12308, UNICODE_NOT_PRESENT_OFFSET }, 25056 { 0xfa8b, 12051, UNICODE_NOT_PRESENT_OFFSET }, 25057 { 0xfa8c, 12312, UNICODE_NOT_PRESENT_OFFSET }, 25058 { 0xfa8d, 12316, UNICODE_NOT_PRESENT_OFFSET }, 25059 { 0xfa8e, 12320, UNICODE_NOT_PRESENT_OFFSET }, 25060 { 0xfa8f, 12324, UNICODE_NOT_PRESENT_OFFSET }, 25061 { 0xfa90, 12328, UNICODE_NOT_PRESENT_OFFSET }, 25062 { 0xfa91, 11911, UNICODE_NOT_PRESENT_OFFSET }, 25063 { 0xfa92, 11055, UNICODE_NOT_PRESENT_OFFSET }, 25064 { 0xfa93, 12332, UNICODE_NOT_PRESENT_OFFSET }, 25065 { 0xfa94, 12336, UNICODE_NOT_PRESENT_OFFSET }, 25066 { 0xfa95, 6489, UNICODE_NOT_PRESENT_OFFSET }, 25067 { 0xfa96, 11327, UNICODE_NOT_PRESENT_OFFSET }, 25068 { 0xfa97, 11659, UNICODE_NOT_PRESENT_OFFSET }, 25069 { 0xfa98, 12340, UNICODE_NOT_PRESENT_OFFSET }, 25070 { 0xfa99, 12344, UNICODE_NOT_PRESENT_OFFSET }, 25071 { 0xfa9a, 12079, UNICODE_NOT_PRESENT_OFFSET }, 25072 { 0xfa9b, 12348, UNICODE_NOT_PRESENT_OFFSET }, 25073 { 0xfa9c, 12083, UNICODE_NOT_PRESENT_OFFSET }, 25074 { 0xfa9d, 12352, UNICODE_NOT_PRESENT_OFFSET }, 25075 { 0xfa9e, 12356, UNICODE_NOT_PRESENT_OFFSET }, 25076 { 0xfa9f, 12360, UNICODE_NOT_PRESENT_OFFSET }, 25077 { 0xfaa0, 11919, UNICODE_NOT_PRESENT_OFFSET }, 25078 { 0xfaa1, 12364, UNICODE_NOT_PRESENT_OFFSET }, 25079 { 0xfaa2, 12368, UNICODE_NOT_PRESENT_OFFSET }, 25080 { 0xfaa3, 12372, UNICODE_NOT_PRESENT_OFFSET }, 25081 { 0xfaa4, 12376, UNICODE_NOT_PRESENT_OFFSET }, 25082 { 0xfaa5, 12380, UNICODE_NOT_PRESENT_OFFSET }, 25083 { 0xfaa6, 11923, UNICODE_NOT_PRESENT_OFFSET }, 25084 { 0xfaa7, 12384, UNICODE_NOT_PRESENT_OFFSET }, 25085 { 0xfaa8, 12388, UNICODE_NOT_PRESENT_OFFSET }, 25086 { 0xfaa9, 12392, UNICODE_NOT_PRESENT_OFFSET }, 25087 { 0xfaaa, 12396, UNICODE_NOT_PRESENT_OFFSET }, 25088 { 0xfaab, 12400, UNICODE_NOT_PRESENT_OFFSET }, 25089 { 0xfaac, 12404, UNICODE_NOT_PRESENT_OFFSET }, 25090 { 0xfaad, 12131, UNICODE_NOT_PRESENT_OFFSET }, 25091 { 0xfaae, 12408, UNICODE_NOT_PRESENT_OFFSET }, 25092 { 0xfaaf, 12412, UNICODE_NOT_PRESENT_OFFSET }, 25093 { 0xfab0, 11467, UNICODE_NOT_PRESENT_OFFSET }, 25094 { 0xfab1, 12416, UNICODE_NOT_PRESENT_OFFSET }, 25095 { 0xfab2, 12147, UNICODE_NOT_PRESENT_OFFSET }, 25096 { 0xfab3, 12420, UNICODE_NOT_PRESENT_OFFSET }, 25097 { 0xfab4, 12424, UNICODE_NOT_PRESENT_OFFSET }, 25098 { 0xfab5, 12428, UNICODE_NOT_PRESENT_OFFSET }, 25099 { 0xfab6, 12432, UNICODE_NOT_PRESENT_OFFSET }, 25100 { 0xfab7, 12436, UNICODE_NOT_PRESENT_OFFSET }, 25101 { 0xfab8, 12167, UNICODE_NOT_PRESENT_OFFSET }, 25102 { 0xfab9, 12440, UNICODE_NOT_PRESENT_OFFSET }, 25103 { 0xfaba, 11955, UNICODE_NOT_PRESENT_OFFSET }, 25104 { 0xfabb, 12444, UNICODE_NOT_PRESENT_OFFSET }, 25105 { 0xfabc, 12171, UNICODE_NOT_PRESENT_OFFSET }, 25106 { 0xfabd, 11251, UNICODE_NOT_PRESENT_OFFSET }, 25107 { 0xfabe, 12448, UNICODE_NOT_PRESENT_OFFSET }, 25108 { 0xfabf, 12175, UNICODE_NOT_PRESENT_OFFSET }, 25109 { 0xfac0, 12452, UNICODE_NOT_PRESENT_OFFSET }, 25110 { 0xfac1, 12183, UNICODE_NOT_PRESENT_OFFSET }, 25111 { 0xfac2, 12456, UNICODE_NOT_PRESENT_OFFSET }, 25112 { 0xfac3, 12460, UNICODE_NOT_PRESENT_OFFSET }, 25113 { 0xfac4, 12464, UNICODE_NOT_PRESENT_OFFSET }, 25114 { 0xfac5, 12468, UNICODE_NOT_PRESENT_OFFSET }, 25115 { 0xfac6, 12472, UNICODE_NOT_PRESENT_OFFSET }, 25116 { 0xfac7, 12191, UNICODE_NOT_PRESENT_OFFSET }, 25117 { 0xfac8, 11943, UNICODE_NOT_PRESENT_OFFSET }, 25118 { 0xfac9, 12476, UNICODE_NOT_PRESENT_OFFSET }, 25119 { 0xfaca, 12195, UNICODE_NOT_PRESENT_OFFSET }, 25120 { 0xfacb, 12480, UNICODE_NOT_PRESENT_OFFSET }, 25121 { 0xfacc, 12199, UNICODE_NOT_PRESENT_OFFSET }, 25122 { 0xfacd, 12484, UNICODE_NOT_PRESENT_OFFSET }, 25123 { 0xface, 7029, UNICODE_NOT_PRESENT_OFFSET }, 25124 { 0xfacf, 12488, UNICODE_NOT_PRESENT_OFFSET }, 25125 { 0xfad0, 12493, UNICODE_NOT_PRESENT_OFFSET }, 25126 { 0xfad1, 12498, UNICODE_NOT_PRESENT_OFFSET }, 25127 { 0xfad2, 12503, UNICODE_NOT_PRESENT_OFFSET }, 25128 { 0xfad3, 12507, UNICODE_NOT_PRESENT_OFFSET }, 25129 { 0xfad4, 12511, UNICODE_NOT_PRESENT_OFFSET }, 25130 { 0xfad5, 12515, UNICODE_NOT_PRESENT_OFFSET }, 25131 { 0xfad6, 12520, UNICODE_NOT_PRESENT_OFFSET }, 25132 { 0xfad7, 12525, UNICODE_NOT_PRESENT_OFFSET }, 25133 { 0xfad8, 12530, UNICODE_NOT_PRESENT_OFFSET }, 25134 { 0xfad9, 12534, UNICODE_NOT_PRESENT_OFFSET }, 25135 { 0xfb00, UNICODE_NOT_PRESENT_OFFSET, 12538 }, 25136 { 0xfb01, UNICODE_NOT_PRESENT_OFFSET, 12541 }, 25137 { 0xfb02, UNICODE_NOT_PRESENT_OFFSET, 12544 }, 25138 { 0xfb03, UNICODE_NOT_PRESENT_OFFSET, 12547 }, 25139 { 0xfb04, UNICODE_NOT_PRESENT_OFFSET, 12551 }, 25140 { 0xfb05, UNICODE_NOT_PRESENT_OFFSET, 12555 }, 25141 { 0xfb06, UNICODE_NOT_PRESENT_OFFSET, 12555 }, 25142 { 0xfb13, UNICODE_NOT_PRESENT_OFFSET, 12558 }, 25143 { 0xfb14, UNICODE_NOT_PRESENT_OFFSET, 12563 }, 25144 { 0xfb15, UNICODE_NOT_PRESENT_OFFSET, 12568 }, 25145 { 0xfb16, UNICODE_NOT_PRESENT_OFFSET, 12573 }, 25146 { 0xfb17, UNICODE_NOT_PRESENT_OFFSET, 12578 }, 25147 { 0xfb1d, 12583, UNICODE_NOT_PRESENT_OFFSET }, 25148 { 0xfb1f, 12588, UNICODE_NOT_PRESENT_OFFSET }, 25149 { 0xfb20, UNICODE_NOT_PRESENT_OFFSET, 12593 }, 25150 { 0xfb21, UNICODE_NOT_PRESENT_OFFSET, 5338 }, 25151 { 0xfb22, UNICODE_NOT_PRESENT_OFFSET, 5347 }, 25152 { 0xfb23, UNICODE_NOT_PRESENT_OFFSET, 12596 }, 25153 { 0xfb24, UNICODE_NOT_PRESENT_OFFSET, 12599 }, 25154 { 0xfb25, UNICODE_NOT_PRESENT_OFFSET, 12602 }, 25155 { 0xfb26, UNICODE_NOT_PRESENT_OFFSET, 12605 }, 25156 { 0xfb27, UNICODE_NOT_PRESENT_OFFSET, 12608 }, 25157 { 0xfb28, UNICODE_NOT_PRESENT_OFFSET, 12611 }, 25158 { 0xfb29, UNICODE_NOT_PRESENT_OFFSET, 5267 }, 25159 { 0xfb2a, 12614, UNICODE_NOT_PRESENT_OFFSET }, 25160 { 0xfb2b, 12619, UNICODE_NOT_PRESENT_OFFSET }, 25161 { 0xfb2c, 12624, UNICODE_NOT_PRESENT_OFFSET }, 25162 { 0xfb2d, 12631, UNICODE_NOT_PRESENT_OFFSET }, 25163 { 0xfb2e, 12638, UNICODE_NOT_PRESENT_OFFSET }, 25164 { 0xfb2f, 12643, UNICODE_NOT_PRESENT_OFFSET }, 25165 { 0xfb30, 12648, UNICODE_NOT_PRESENT_OFFSET }, 25166 { 0xfb31, 12653, UNICODE_NOT_PRESENT_OFFSET }, 25167 { 0xfb32, 12658, UNICODE_NOT_PRESENT_OFFSET }, 25168 { 0xfb33, 12663, UNICODE_NOT_PRESENT_OFFSET }, 25169 { 0xfb34, 12668, UNICODE_NOT_PRESENT_OFFSET }, 25170 { 0xfb35, 12673, UNICODE_NOT_PRESENT_OFFSET }, 25171 { 0xfb36, 12678, UNICODE_NOT_PRESENT_OFFSET }, 25172 { 0xfb38, 12683, UNICODE_NOT_PRESENT_OFFSET }, 25173 { 0xfb39, 12688, UNICODE_NOT_PRESENT_OFFSET }, 25174 { 0xfb3a, 12693, UNICODE_NOT_PRESENT_OFFSET }, 25175 { 0xfb3b, 12698, UNICODE_NOT_PRESENT_OFFSET }, 25176 { 0xfb3c, 12703, UNICODE_NOT_PRESENT_OFFSET }, 25177 { 0xfb3e, 12708, UNICODE_NOT_PRESENT_OFFSET }, 25178 { 0xfb40, 12713, UNICODE_NOT_PRESENT_OFFSET }, 25179 { 0xfb41, 12718, UNICODE_NOT_PRESENT_OFFSET }, 25180 { 0xfb43, 12723, UNICODE_NOT_PRESENT_OFFSET }, 25181 { 0xfb44, 12728, UNICODE_NOT_PRESENT_OFFSET }, 25182 { 0xfb46, 12733, UNICODE_NOT_PRESENT_OFFSET }, 25183 { 0xfb47, 12738, UNICODE_NOT_PRESENT_OFFSET }, 25184 { 0xfb48, 12743, UNICODE_NOT_PRESENT_OFFSET }, 25185 { 0xfb49, 12748, UNICODE_NOT_PRESENT_OFFSET }, 25186 { 0xfb4a, 12753, UNICODE_NOT_PRESENT_OFFSET }, 25187 { 0xfb4b, 12758, UNICODE_NOT_PRESENT_OFFSET }, 25188 { 0xfb4c, 12763, UNICODE_NOT_PRESENT_OFFSET }, 25189 { 0xfb4d, 12768, UNICODE_NOT_PRESENT_OFFSET }, 25190 { 0xfb4e, 12773, UNICODE_NOT_PRESENT_OFFSET }, 25191 { 0xfb4f, UNICODE_NOT_PRESENT_OFFSET, 12778 }, 25192 { 0xfb50, UNICODE_NOT_PRESENT_OFFSET, 12783 }, 25193 { 0xfb51, UNICODE_NOT_PRESENT_OFFSET, 12783 }, 25194 { 0xfb52, UNICODE_NOT_PRESENT_OFFSET, 12786 }, 25195 { 0xfb53, UNICODE_NOT_PRESENT_OFFSET, 12786 }, 25196 { 0xfb54, UNICODE_NOT_PRESENT_OFFSET, 12786 }, 25197 { 0xfb55, UNICODE_NOT_PRESENT_OFFSET, 12786 }, 25198 { 0xfb56, UNICODE_NOT_PRESENT_OFFSET, 12789 }, 25199 { 0xfb57, UNICODE_NOT_PRESENT_OFFSET, 12789 }, 25200 { 0xfb58, UNICODE_NOT_PRESENT_OFFSET, 12789 }, 25201 { 0xfb59, UNICODE_NOT_PRESENT_OFFSET, 12789 }, 25202 { 0xfb5a, UNICODE_NOT_PRESENT_OFFSET, 12792 }, 25203 { 0xfb5b, UNICODE_NOT_PRESENT_OFFSET, 12792 }, 25204 { 0xfb5c, UNICODE_NOT_PRESENT_OFFSET, 12792 }, 25205 { 0xfb5d, UNICODE_NOT_PRESENT_OFFSET, 12792 }, 25206 { 0xfb5e, UNICODE_NOT_PRESENT_OFFSET, 12795 }, 25207 { 0xfb5f, UNICODE_NOT_PRESENT_OFFSET, 12795 }, 25208 { 0xfb60, UNICODE_NOT_PRESENT_OFFSET, 12795 }, 25209 { 0xfb61, UNICODE_NOT_PRESENT_OFFSET, 12795 }, 25210 { 0xfb62, UNICODE_NOT_PRESENT_OFFSET, 12798 }, 25211 { 0xfb63, UNICODE_NOT_PRESENT_OFFSET, 12798 }, 25212 { 0xfb64, UNICODE_NOT_PRESENT_OFFSET, 12798 }, 25213 { 0xfb65, UNICODE_NOT_PRESENT_OFFSET, 12798 }, 25214 { 0xfb66, UNICODE_NOT_PRESENT_OFFSET, 12801 }, 25215 { 0xfb67, UNICODE_NOT_PRESENT_OFFSET, 12801 }, 25216 { 0xfb68, UNICODE_NOT_PRESENT_OFFSET, 12801 }, 25217 { 0xfb69, UNICODE_NOT_PRESENT_OFFSET, 12801 }, 25218 { 0xfb6a, UNICODE_NOT_PRESENT_OFFSET, 12804 }, 25219 { 0xfb6b, UNICODE_NOT_PRESENT_OFFSET, 12804 }, 25220 { 0xfb6c, UNICODE_NOT_PRESENT_OFFSET, 12804 }, 25221 { 0xfb6d, UNICODE_NOT_PRESENT_OFFSET, 12804 }, 25222 { 0xfb6e, UNICODE_NOT_PRESENT_OFFSET, 12807 }, 25223 { 0xfb6f, UNICODE_NOT_PRESENT_OFFSET, 12807 }, 25224 { 0xfb70, UNICODE_NOT_PRESENT_OFFSET, 12807 }, 25225 { 0xfb71, UNICODE_NOT_PRESENT_OFFSET, 12807 }, 25226 { 0xfb72, UNICODE_NOT_PRESENT_OFFSET, 12810 }, 25227 { 0xfb73, UNICODE_NOT_PRESENT_OFFSET, 12810 }, 25228 { 0xfb74, UNICODE_NOT_PRESENT_OFFSET, 12810 }, 25229 { 0xfb75, UNICODE_NOT_PRESENT_OFFSET, 12810 }, 25230 { 0xfb76, UNICODE_NOT_PRESENT_OFFSET, 12813 }, 25231 { 0xfb77, UNICODE_NOT_PRESENT_OFFSET, 12813 }, 25232 { 0xfb78, UNICODE_NOT_PRESENT_OFFSET, 12813 }, 25233 { 0xfb79, UNICODE_NOT_PRESENT_OFFSET, 12813 }, 25234 { 0xfb7a, UNICODE_NOT_PRESENT_OFFSET, 12816 }, 25235 { 0xfb7b, UNICODE_NOT_PRESENT_OFFSET, 12816 }, 25236 { 0xfb7c, UNICODE_NOT_PRESENT_OFFSET, 12816 }, 25237 { 0xfb7d, UNICODE_NOT_PRESENT_OFFSET, 12816 }, 25238 { 0xfb7e, UNICODE_NOT_PRESENT_OFFSET, 12819 }, 25239 { 0xfb7f, UNICODE_NOT_PRESENT_OFFSET, 12819 }, 25240 { 0xfb80, UNICODE_NOT_PRESENT_OFFSET, 12819 }, 25241 { 0xfb81, UNICODE_NOT_PRESENT_OFFSET, 12819 }, 25242 { 0xfb82, UNICODE_NOT_PRESENT_OFFSET, 12822 }, 25243 { 0xfb83, UNICODE_NOT_PRESENT_OFFSET, 12822 }, 25244 { 0xfb84, UNICODE_NOT_PRESENT_OFFSET, 12825 }, 25245 { 0xfb85, UNICODE_NOT_PRESENT_OFFSET, 12825 }, 25246 { 0xfb86, UNICODE_NOT_PRESENT_OFFSET, 12828 }, 25247 { 0xfb87, UNICODE_NOT_PRESENT_OFFSET, 12828 }, 25248 { 0xfb88, UNICODE_NOT_PRESENT_OFFSET, 12831 }, 25249 { 0xfb89, UNICODE_NOT_PRESENT_OFFSET, 12831 }, 25250 { 0xfb8a, UNICODE_NOT_PRESENT_OFFSET, 12834 }, 25251 { 0xfb8b, UNICODE_NOT_PRESENT_OFFSET, 12834 }, 25252 { 0xfb8c, UNICODE_NOT_PRESENT_OFFSET, 12837 }, 25253 { 0xfb8d, UNICODE_NOT_PRESENT_OFFSET, 12837 }, 25254 { 0xfb8e, UNICODE_NOT_PRESENT_OFFSET, 12840 }, 25255 { 0xfb8f, UNICODE_NOT_PRESENT_OFFSET, 12840 }, 25256 { 0xfb90, UNICODE_NOT_PRESENT_OFFSET, 12840 }, 25257 { 0xfb91, UNICODE_NOT_PRESENT_OFFSET, 12840 }, 25258 { 0xfb92, UNICODE_NOT_PRESENT_OFFSET, 12843 }, 25259 { 0xfb93, UNICODE_NOT_PRESENT_OFFSET, 12843 }, 25260 { 0xfb94, UNICODE_NOT_PRESENT_OFFSET, 12843 }, 25261 { 0xfb95, UNICODE_NOT_PRESENT_OFFSET, 12843 }, 25262 { 0xfb96, UNICODE_NOT_PRESENT_OFFSET, 12846 }, 25263 { 0xfb97, UNICODE_NOT_PRESENT_OFFSET, 12846 }, 25264 { 0xfb98, UNICODE_NOT_PRESENT_OFFSET, 12846 }, 25265 { 0xfb99, UNICODE_NOT_PRESENT_OFFSET, 12846 }, 25266 { 0xfb9a, UNICODE_NOT_PRESENT_OFFSET, 12849 }, 25267 { 0xfb9b, UNICODE_NOT_PRESENT_OFFSET, 12849 }, 25268 { 0xfb9c, UNICODE_NOT_PRESENT_OFFSET, 12849 }, 25269 { 0xfb9d, UNICODE_NOT_PRESENT_OFFSET, 12849 }, 25270 { 0xfb9e, UNICODE_NOT_PRESENT_OFFSET, 12852 }, 25271 { 0xfb9f, UNICODE_NOT_PRESENT_OFFSET, 12852 }, 25272 { 0xfba0, UNICODE_NOT_PRESENT_OFFSET, 12855 }, 25273 { 0xfba1, UNICODE_NOT_PRESENT_OFFSET, 12855 }, 25274 { 0xfba2, UNICODE_NOT_PRESENT_OFFSET, 12855 }, 25275 { 0xfba3, UNICODE_NOT_PRESENT_OFFSET, 12855 }, 25276 { 0xfba4, UNICODE_NOT_PRESENT_OFFSET, 1721 }, 25277 { 0xfba5, UNICODE_NOT_PRESENT_OFFSET, 1721 }, 25278 { 0xfba6, UNICODE_NOT_PRESENT_OFFSET, 12858 }, 25279 { 0xfba7, UNICODE_NOT_PRESENT_OFFSET, 12858 }, 25280 { 0xfba8, UNICODE_NOT_PRESENT_OFFSET, 12858 }, 25281 { 0xfba9, UNICODE_NOT_PRESENT_OFFSET, 12858 }, 25282 { 0xfbaa, UNICODE_NOT_PRESENT_OFFSET, 12861 }, 25283 { 0xfbab, UNICODE_NOT_PRESENT_OFFSET, 12861 }, 25284 { 0xfbac, UNICODE_NOT_PRESENT_OFFSET, 12861 }, 25285 { 0xfbad, UNICODE_NOT_PRESENT_OFFSET, 12861 }, 25286 { 0xfbae, UNICODE_NOT_PRESENT_OFFSET, 12864 }, 25287 { 0xfbaf, UNICODE_NOT_PRESENT_OFFSET, 12864 }, 25288 { 0xfbb0, UNICODE_NOT_PRESENT_OFFSET, 1731 }, 25289 { 0xfbb1, UNICODE_NOT_PRESENT_OFFSET, 1731 }, 25290 { 0xfbd3, UNICODE_NOT_PRESENT_OFFSET, 12867 }, 25291 { 0xfbd4, UNICODE_NOT_PRESENT_OFFSET, 12867 }, 25292 { 0xfbd5, UNICODE_NOT_PRESENT_OFFSET, 12867 }, 25293 { 0xfbd6, UNICODE_NOT_PRESENT_OFFSET, 12867 }, 25294 { 0xfbd7, UNICODE_NOT_PRESENT_OFFSET, 12870 }, 25295 { 0xfbd8, UNICODE_NOT_PRESENT_OFFSET, 12870 }, 25296 { 0xfbd9, UNICODE_NOT_PRESENT_OFFSET, 12873 }, 25297 { 0xfbda, UNICODE_NOT_PRESENT_OFFSET, 12873 }, 25298 { 0xfbdb, UNICODE_NOT_PRESENT_OFFSET, 12876 }, 25299 { 0xfbdc, UNICODE_NOT_PRESENT_OFFSET, 12876 }, 25300 { 0xfbdd, UNICODE_NOT_PRESENT_OFFSET, 1711 }, 25301 { 0xfbde, UNICODE_NOT_PRESENT_OFFSET, 12879 }, 25302 { 0xfbdf, UNICODE_NOT_PRESENT_OFFSET, 12879 }, 25303 { 0xfbe0, UNICODE_NOT_PRESENT_OFFSET, 12882 }, 25304 { 0xfbe1, UNICODE_NOT_PRESENT_OFFSET, 12882 }, 25305 { 0xfbe2, UNICODE_NOT_PRESENT_OFFSET, 12885 }, 25306 { 0xfbe3, UNICODE_NOT_PRESENT_OFFSET, 12885 }, 25307 { 0xfbe4, UNICODE_NOT_PRESENT_OFFSET, 12888 }, 25308 { 0xfbe5, UNICODE_NOT_PRESENT_OFFSET, 12888 }, 25309 { 0xfbe6, UNICODE_NOT_PRESENT_OFFSET, 12888 }, 25310 { 0xfbe7, UNICODE_NOT_PRESENT_OFFSET, 12888 }, 25311 { 0xfbe8, UNICODE_NOT_PRESENT_OFFSET, 12891 }, 25312 { 0xfbe9, UNICODE_NOT_PRESENT_OFFSET, 12891 }, 25313 { 0xfbea, UNICODE_NOT_PRESENT_OFFSET, 12894 }, 25314 { 0xfbeb, UNICODE_NOT_PRESENT_OFFSET, 12894 }, 25315 { 0xfbec, UNICODE_NOT_PRESENT_OFFSET, 12901 }, 25316 { 0xfbed, UNICODE_NOT_PRESENT_OFFSET, 12901 }, 25317 { 0xfbee, UNICODE_NOT_PRESENT_OFFSET, 12908 }, 25318 { 0xfbef, UNICODE_NOT_PRESENT_OFFSET, 12908 }, 25319 { 0xfbf0, UNICODE_NOT_PRESENT_OFFSET, 12915 }, 25320 { 0xfbf1, UNICODE_NOT_PRESENT_OFFSET, 12915 }, 25321 { 0xfbf2, UNICODE_NOT_PRESENT_OFFSET, 12922 }, 25322 { 0xfbf3, UNICODE_NOT_PRESENT_OFFSET, 12922 }, 25323 { 0xfbf4, UNICODE_NOT_PRESENT_OFFSET, 12929 }, 25324 { 0xfbf5, UNICODE_NOT_PRESENT_OFFSET, 12929 }, 25325 { 0xfbf6, UNICODE_NOT_PRESENT_OFFSET, 12936 }, 25326 { 0xfbf7, UNICODE_NOT_PRESENT_OFFSET, 12936 }, 25327 { 0xfbf8, UNICODE_NOT_PRESENT_OFFSET, 12936 }, 25328 { 0xfbf9, UNICODE_NOT_PRESENT_OFFSET, 12943 }, 25329 { 0xfbfa, UNICODE_NOT_PRESENT_OFFSET, 12943 }, 25330 { 0xfbfb, UNICODE_NOT_PRESENT_OFFSET, 12943 }, 25331 { 0xfbfc, UNICODE_NOT_PRESENT_OFFSET, 12950 }, 25332 { 0xfbfd, UNICODE_NOT_PRESENT_OFFSET, 12950 }, 25333 { 0xfbfe, UNICODE_NOT_PRESENT_OFFSET, 12950 }, 25334 { 0xfbff, UNICODE_NOT_PRESENT_OFFSET, 12950 }, 25335 { 0xfc00, UNICODE_NOT_PRESENT_OFFSET, 12953 }, 25336 { 0xfc01, UNICODE_NOT_PRESENT_OFFSET, 12960 }, 25337 { 0xfc02, UNICODE_NOT_PRESENT_OFFSET, 12967 }, 25338 { 0xfc03, UNICODE_NOT_PRESENT_OFFSET, 12943 }, 25339 { 0xfc04, UNICODE_NOT_PRESENT_OFFSET, 12974 }, 25340 { 0xfc05, UNICODE_NOT_PRESENT_OFFSET, 12981 }, 25341 { 0xfc06, UNICODE_NOT_PRESENT_OFFSET, 12986 }, 25342 { 0xfc07, UNICODE_NOT_PRESENT_OFFSET, 12991 }, 25343 { 0xfc08, UNICODE_NOT_PRESENT_OFFSET, 12996 }, 25344 { 0xfc09, UNICODE_NOT_PRESENT_OFFSET, 13001 }, 25345 { 0xfc0a, UNICODE_NOT_PRESENT_OFFSET, 13006 }, 25346 { 0xfc0b, UNICODE_NOT_PRESENT_OFFSET, 13011 }, 25347 { 0xfc0c, UNICODE_NOT_PRESENT_OFFSET, 13016 }, 25348 { 0xfc0d, UNICODE_NOT_PRESENT_OFFSET, 13021 }, 25349 { 0xfc0e, UNICODE_NOT_PRESENT_OFFSET, 13026 }, 25350 { 0xfc0f, UNICODE_NOT_PRESENT_OFFSET, 13031 }, 25351 { 0xfc10, UNICODE_NOT_PRESENT_OFFSET, 13036 }, 25352 { 0xfc11, UNICODE_NOT_PRESENT_OFFSET, 13041 }, 25353 { 0xfc12, UNICODE_NOT_PRESENT_OFFSET, 13046 }, 25354 { 0xfc13, UNICODE_NOT_PRESENT_OFFSET, 13051 }, 25355 { 0xfc14, UNICODE_NOT_PRESENT_OFFSET, 13056 }, 25356 { 0xfc15, UNICODE_NOT_PRESENT_OFFSET, 13061 }, 25357 { 0xfc16, UNICODE_NOT_PRESENT_OFFSET, 13066 }, 25358 { 0xfc17, UNICODE_NOT_PRESENT_OFFSET, 13071 }, 25359 { 0xfc18, UNICODE_NOT_PRESENT_OFFSET, 13076 }, 25360 { 0xfc19, UNICODE_NOT_PRESENT_OFFSET, 13081 }, 25361 { 0xfc1a, UNICODE_NOT_PRESENT_OFFSET, 13086 }, 25362 { 0xfc1b, UNICODE_NOT_PRESENT_OFFSET, 13091 }, 25363 { 0xfc1c, UNICODE_NOT_PRESENT_OFFSET, 13096 }, 25364 { 0xfc1d, UNICODE_NOT_PRESENT_OFFSET, 13101 }, 25365 { 0xfc1e, UNICODE_NOT_PRESENT_OFFSET, 13106 }, 25366 { 0xfc1f, UNICODE_NOT_PRESENT_OFFSET, 13111 }, 25367 { 0xfc20, UNICODE_NOT_PRESENT_OFFSET, 13116 }, 25368 { 0xfc21, UNICODE_NOT_PRESENT_OFFSET, 13121 }, 25369 { 0xfc22, UNICODE_NOT_PRESENT_OFFSET, 13126 }, 25370 { 0xfc23, UNICODE_NOT_PRESENT_OFFSET, 13131 }, 25371 { 0xfc24, UNICODE_NOT_PRESENT_OFFSET, 13136 }, 25372 { 0xfc25, UNICODE_NOT_PRESENT_OFFSET, 13141 }, 25373 { 0xfc26, UNICODE_NOT_PRESENT_OFFSET, 13146 }, 25374 { 0xfc27, UNICODE_NOT_PRESENT_OFFSET, 13151 }, 25375 { 0xfc28, UNICODE_NOT_PRESENT_OFFSET, 13156 }, 25376 { 0xfc29, UNICODE_NOT_PRESENT_OFFSET, 13161 }, 25377 { 0xfc2a, UNICODE_NOT_PRESENT_OFFSET, 13166 }, 25378 { 0xfc2b, UNICODE_NOT_PRESENT_OFFSET, 13171 }, 25379 { 0xfc2c, UNICODE_NOT_PRESENT_OFFSET, 13176 }, 25380 { 0xfc2d, UNICODE_NOT_PRESENT_OFFSET, 13181 }, 25381 { 0xfc2e, UNICODE_NOT_PRESENT_OFFSET, 13186 }, 25382 { 0xfc2f, UNICODE_NOT_PRESENT_OFFSET, 13191 }, 25383 { 0xfc30, UNICODE_NOT_PRESENT_OFFSET, 13196 }, 25384 { 0xfc31, UNICODE_NOT_PRESENT_OFFSET, 13201 }, 25385 { 0xfc32, UNICODE_NOT_PRESENT_OFFSET, 13206 }, 25386 { 0xfc33, UNICODE_NOT_PRESENT_OFFSET, 13211 }, 25387 { 0xfc34, UNICODE_NOT_PRESENT_OFFSET, 13216 }, 25388 { 0xfc35, UNICODE_NOT_PRESENT_OFFSET, 13221 }, 25389 { 0xfc36, UNICODE_NOT_PRESENT_OFFSET, 13226 }, 25390 { 0xfc37, UNICODE_NOT_PRESENT_OFFSET, 13231 }, 25391 { 0xfc38, UNICODE_NOT_PRESENT_OFFSET, 13236 }, 25392 { 0xfc39, UNICODE_NOT_PRESENT_OFFSET, 13241 }, 25393 { 0xfc3a, UNICODE_NOT_PRESENT_OFFSET, 13246 }, 25394 { 0xfc3b, UNICODE_NOT_PRESENT_OFFSET, 13251 }, 25395 { 0xfc3c, UNICODE_NOT_PRESENT_OFFSET, 13256 }, 25396 { 0xfc3d, UNICODE_NOT_PRESENT_OFFSET, 13261 }, 25397 { 0xfc3e, UNICODE_NOT_PRESENT_OFFSET, 13266 }, 25398 { 0xfc3f, UNICODE_NOT_PRESENT_OFFSET, 13271 }, 25399 { 0xfc40, UNICODE_NOT_PRESENT_OFFSET, 13276 }, 25400 { 0xfc41, UNICODE_NOT_PRESENT_OFFSET, 13281 }, 25401 { 0xfc42, UNICODE_NOT_PRESENT_OFFSET, 13286 }, 25402 { 0xfc43, UNICODE_NOT_PRESENT_OFFSET, 13291 }, 25403 { 0xfc44, UNICODE_NOT_PRESENT_OFFSET, 13296 }, 25404 { 0xfc45, UNICODE_NOT_PRESENT_OFFSET, 13301 }, 25405 { 0xfc46, UNICODE_NOT_PRESENT_OFFSET, 13306 }, 25406 { 0xfc47, UNICODE_NOT_PRESENT_OFFSET, 13311 }, 25407 { 0xfc48, UNICODE_NOT_PRESENT_OFFSET, 13316 }, 25408 { 0xfc49, UNICODE_NOT_PRESENT_OFFSET, 13321 }, 25409 { 0xfc4a, UNICODE_NOT_PRESENT_OFFSET, 13326 }, 25410 { 0xfc4b, UNICODE_NOT_PRESENT_OFFSET, 13331 }, 25411 { 0xfc4c, UNICODE_NOT_PRESENT_OFFSET, 13336 }, 25412 { 0xfc4d, UNICODE_NOT_PRESENT_OFFSET, 13341 }, 25413 { 0xfc4e, UNICODE_NOT_PRESENT_OFFSET, 13346 }, 25414 { 0xfc4f, UNICODE_NOT_PRESENT_OFFSET, 13351 }, 25415 { 0xfc50, UNICODE_NOT_PRESENT_OFFSET, 13356 }, 25416 { 0xfc51, UNICODE_NOT_PRESENT_OFFSET, 13361 }, 25417 { 0xfc52, UNICODE_NOT_PRESENT_OFFSET, 13366 }, 25418 { 0xfc53, UNICODE_NOT_PRESENT_OFFSET, 13371 }, 25419 { 0xfc54, UNICODE_NOT_PRESENT_OFFSET, 13376 }, 25420 { 0xfc55, UNICODE_NOT_PRESENT_OFFSET, 13381 }, 25421 { 0xfc56, UNICODE_NOT_PRESENT_OFFSET, 13386 }, 25422 { 0xfc57, UNICODE_NOT_PRESENT_OFFSET, 13391 }, 25423 { 0xfc58, UNICODE_NOT_PRESENT_OFFSET, 13396 }, 25424 { 0xfc59, UNICODE_NOT_PRESENT_OFFSET, 13401 }, 25425 { 0xfc5a, UNICODE_NOT_PRESENT_OFFSET, 13406 }, 25426 { 0xfc5b, UNICODE_NOT_PRESENT_OFFSET, 13411 }, 25427 { 0xfc5c, UNICODE_NOT_PRESENT_OFFSET, 13416 }, 25428 { 0xfc5d, UNICODE_NOT_PRESENT_OFFSET, 13421 }, 25429 { 0xfc5e, UNICODE_NOT_PRESENT_OFFSET, 13426 }, 25430 { 0xfc5f, UNICODE_NOT_PRESENT_OFFSET, 13432 }, 25431 { 0xfc60, UNICODE_NOT_PRESENT_OFFSET, 13438 }, 25432 { 0xfc61, UNICODE_NOT_PRESENT_OFFSET, 13444 }, 25433 { 0xfc62, UNICODE_NOT_PRESENT_OFFSET, 13450 }, 25434 { 0xfc63, UNICODE_NOT_PRESENT_OFFSET, 13456 }, 25435 { 0xfc64, UNICODE_NOT_PRESENT_OFFSET, 13462 }, 25436 { 0xfc65, UNICODE_NOT_PRESENT_OFFSET, 13469 }, 25437 { 0xfc66, UNICODE_NOT_PRESENT_OFFSET, 12967 }, 25438 { 0xfc67, UNICODE_NOT_PRESENT_OFFSET, 13476 }, 25439 { 0xfc68, UNICODE_NOT_PRESENT_OFFSET, 12943 }, 25440 { 0xfc69, UNICODE_NOT_PRESENT_OFFSET, 12974 }, 25441 { 0xfc6a, UNICODE_NOT_PRESENT_OFFSET, 13483 }, 25442 { 0xfc6b, UNICODE_NOT_PRESENT_OFFSET, 13488 }, 25443 { 0xfc6c, UNICODE_NOT_PRESENT_OFFSET, 12996 }, 25444 { 0xfc6d, UNICODE_NOT_PRESENT_OFFSET, 13493 }, 25445 { 0xfc6e, UNICODE_NOT_PRESENT_OFFSET, 13001 }, 25446 { 0xfc6f, UNICODE_NOT_PRESENT_OFFSET, 13006 }, 25447 { 0xfc70, UNICODE_NOT_PRESENT_OFFSET, 13498 }, 25448 { 0xfc71, UNICODE_NOT_PRESENT_OFFSET, 13503 }, 25449 { 0xfc72, UNICODE_NOT_PRESENT_OFFSET, 13026 }, 25450 { 0xfc73, UNICODE_NOT_PRESENT_OFFSET, 13508 }, 25451 { 0xfc74, UNICODE_NOT_PRESENT_OFFSET, 13031 }, 25452 { 0xfc75, UNICODE_NOT_PRESENT_OFFSET, 13036 }, 25453 { 0xfc76, UNICODE_NOT_PRESENT_OFFSET, 13513 }, 25454 { 0xfc77, UNICODE_NOT_PRESENT_OFFSET, 13518 }, 25455 { 0xfc78, UNICODE_NOT_PRESENT_OFFSET, 13046 }, 25456 { 0xfc79, UNICODE_NOT_PRESENT_OFFSET, 13523 }, 25457 { 0xfc7a, UNICODE_NOT_PRESENT_OFFSET, 13051 }, 25458 { 0xfc7b, UNICODE_NOT_PRESENT_OFFSET, 13056 }, 25459 { 0xfc7c, UNICODE_NOT_PRESENT_OFFSET, 13201 }, 25460 { 0xfc7d, UNICODE_NOT_PRESENT_OFFSET, 13206 }, 25461 { 0xfc7e, UNICODE_NOT_PRESENT_OFFSET, 13221 }, 25462 { 0xfc7f, UNICODE_NOT_PRESENT_OFFSET, 13226 }, 25463 { 0xfc80, UNICODE_NOT_PRESENT_OFFSET, 13231 }, 25464 { 0xfc81, UNICODE_NOT_PRESENT_OFFSET, 13251 }, 25465 { 0xfc82, UNICODE_NOT_PRESENT_OFFSET, 13256 }, 25466 { 0xfc83, UNICODE_NOT_PRESENT_OFFSET, 13261 }, 25467 { 0xfc84, UNICODE_NOT_PRESENT_OFFSET, 13266 }, 25468 { 0xfc85, UNICODE_NOT_PRESENT_OFFSET, 13286 }, 25469 { 0xfc86, UNICODE_NOT_PRESENT_OFFSET, 13291 }, 25470 { 0xfc87, UNICODE_NOT_PRESENT_OFFSET, 13296 }, 25471 { 0xfc88, UNICODE_NOT_PRESENT_OFFSET, 13528 }, 25472 { 0xfc89, UNICODE_NOT_PRESENT_OFFSET, 13316 }, 25473 { 0xfc8a, UNICODE_NOT_PRESENT_OFFSET, 13533 }, 25474 { 0xfc8b, UNICODE_NOT_PRESENT_OFFSET, 13538 }, 25475 { 0xfc8c, UNICODE_NOT_PRESENT_OFFSET, 13346 }, 25476 { 0xfc8d, UNICODE_NOT_PRESENT_OFFSET, 13543 }, 25477 { 0xfc8e, UNICODE_NOT_PRESENT_OFFSET, 13351 }, 25478 { 0xfc8f, UNICODE_NOT_PRESENT_OFFSET, 13356 }, 25479 { 0xfc90, UNICODE_NOT_PRESENT_OFFSET, 13421 }, 25480 { 0xfc91, UNICODE_NOT_PRESENT_OFFSET, 13548 }, 25481 { 0xfc92, UNICODE_NOT_PRESENT_OFFSET, 13553 }, 25482 { 0xfc93, UNICODE_NOT_PRESENT_OFFSET, 13396 }, 25483 { 0xfc94, UNICODE_NOT_PRESENT_OFFSET, 13558 }, 25484 { 0xfc95, UNICODE_NOT_PRESENT_OFFSET, 13401 }, 25485 { 0xfc96, UNICODE_NOT_PRESENT_OFFSET, 13406 }, 25486 { 0xfc97, UNICODE_NOT_PRESENT_OFFSET, 12953 }, 25487 { 0xfc98, UNICODE_NOT_PRESENT_OFFSET, 12960 }, 25488 { 0xfc99, UNICODE_NOT_PRESENT_OFFSET, 13563 }, 25489 { 0xfc9a, UNICODE_NOT_PRESENT_OFFSET, 12967 }, 25490 { 0xfc9b, UNICODE_NOT_PRESENT_OFFSET, 13570 }, 25491 { 0xfc9c, UNICODE_NOT_PRESENT_OFFSET, 12981 }, 25492 { 0xfc9d, UNICODE_NOT_PRESENT_OFFSET, 12986 }, 25493 { 0xfc9e, UNICODE_NOT_PRESENT_OFFSET, 12991 }, 25494 { 0xfc9f, UNICODE_NOT_PRESENT_OFFSET, 12996 }, 25495 { 0xfca0, UNICODE_NOT_PRESENT_OFFSET, 13577 }, 25496 { 0xfca1, UNICODE_NOT_PRESENT_OFFSET, 13011 }, 25497 { 0xfca2, UNICODE_NOT_PRESENT_OFFSET, 13016 }, 25498 { 0xfca3, UNICODE_NOT_PRESENT_OFFSET, 13021 }, 25499 { 0xfca4, UNICODE_NOT_PRESENT_OFFSET, 13026 }, 25500 { 0xfca5, UNICODE_NOT_PRESENT_OFFSET, 13582 }, 25501 { 0xfca6, UNICODE_NOT_PRESENT_OFFSET, 13046 }, 25502 { 0xfca7, UNICODE_NOT_PRESENT_OFFSET, 13061 }, 25503 { 0xfca8, UNICODE_NOT_PRESENT_OFFSET, 13066 }, 25504 { 0xfca9, UNICODE_NOT_PRESENT_OFFSET, 13071 }, 25505 { 0xfcaa, UNICODE_NOT_PRESENT_OFFSET, 13076 }, 25506 { 0xfcab, UNICODE_NOT_PRESENT_OFFSET, 13081 }, 25507 { 0xfcac, UNICODE_NOT_PRESENT_OFFSET, 13091 }, 25508 { 0xfcad, UNICODE_NOT_PRESENT_OFFSET, 13096 }, 25509 { 0xfcae, UNICODE_NOT_PRESENT_OFFSET, 13101 }, 25510 { 0xfcaf, UNICODE_NOT_PRESENT_OFFSET, 13106 }, 25511 { 0xfcb0, UNICODE_NOT_PRESENT_OFFSET, 13111 }, 25512 { 0xfcb1, UNICODE_NOT_PRESENT_OFFSET, 13116 }, 25513 { 0xfcb2, UNICODE_NOT_PRESENT_OFFSET, 13587 }, 25514 { 0xfcb3, UNICODE_NOT_PRESENT_OFFSET, 13121 }, 25515 { 0xfcb4, UNICODE_NOT_PRESENT_OFFSET, 13126 }, 25516 { 0xfcb5, UNICODE_NOT_PRESENT_OFFSET, 13131 }, 25517 { 0xfcb6, UNICODE_NOT_PRESENT_OFFSET, 13136 }, 25518 { 0xfcb7, UNICODE_NOT_PRESENT_OFFSET, 13141 }, 25519 { 0xfcb8, UNICODE_NOT_PRESENT_OFFSET, 13146 }, 25520 { 0xfcb9, UNICODE_NOT_PRESENT_OFFSET, 13156 }, 25521 { 0xfcba, UNICODE_NOT_PRESENT_OFFSET, 13161 }, 25522 { 0xfcbb, UNICODE_NOT_PRESENT_OFFSET, 13166 }, 25523 { 0xfcbc, UNICODE_NOT_PRESENT_OFFSET, 13171 }, 25524 { 0xfcbd, UNICODE_NOT_PRESENT_OFFSET, 13176 }, 25525 { 0xfcbe, UNICODE_NOT_PRESENT_OFFSET, 13181 }, 25526 { 0xfcbf, UNICODE_NOT_PRESENT_OFFSET, 13186 }, 25527 { 0xfcc0, UNICODE_NOT_PRESENT_OFFSET, 13191 }, 25528 { 0xfcc1, UNICODE_NOT_PRESENT_OFFSET, 13196 }, 25529 { 0xfcc2, UNICODE_NOT_PRESENT_OFFSET, 13211 }, 25530 { 0xfcc3, UNICODE_NOT_PRESENT_OFFSET, 13216 }, 25531 { 0xfcc4, UNICODE_NOT_PRESENT_OFFSET, 13236 }, 25532 { 0xfcc5, UNICODE_NOT_PRESENT_OFFSET, 13241 }, 25533 { 0xfcc6, UNICODE_NOT_PRESENT_OFFSET, 13246 }, 25534 { 0xfcc7, UNICODE_NOT_PRESENT_OFFSET, 13251 }, 25535 { 0xfcc8, UNICODE_NOT_PRESENT_OFFSET, 13256 }, 25536 { 0xfcc9, UNICODE_NOT_PRESENT_OFFSET, 13271 }, 25537 { 0xfcca, UNICODE_NOT_PRESENT_OFFSET, 13276 }, 25538 { 0xfccb, UNICODE_NOT_PRESENT_OFFSET, 13281 }, 25539 { 0xfccc, UNICODE_NOT_PRESENT_OFFSET, 13286 }, 25540 { 0xfccd, UNICODE_NOT_PRESENT_OFFSET, 13592 }, 25541 { 0xfcce, UNICODE_NOT_PRESENT_OFFSET, 13301 }, 25542 { 0xfccf, UNICODE_NOT_PRESENT_OFFSET, 13306 }, 25543 { 0xfcd0, UNICODE_NOT_PRESENT_OFFSET, 13311 }, 25544 { 0xfcd1, UNICODE_NOT_PRESENT_OFFSET, 13316 }, 25545 { 0xfcd2, UNICODE_NOT_PRESENT_OFFSET, 13331 }, 25546 { 0xfcd3, UNICODE_NOT_PRESENT_OFFSET, 13336 }, 25547 { 0xfcd4, UNICODE_NOT_PRESENT_OFFSET, 13341 }, 25548 { 0xfcd5, UNICODE_NOT_PRESENT_OFFSET, 13346 }, 25549 { 0xfcd6, UNICODE_NOT_PRESENT_OFFSET, 13597 }, 25550 { 0xfcd7, UNICODE_NOT_PRESENT_OFFSET, 13361 }, 25551 { 0xfcd8, UNICODE_NOT_PRESENT_OFFSET, 13366 }, 25552 { 0xfcd9, UNICODE_NOT_PRESENT_OFFSET, 13602 }, 25553 { 0xfcda, UNICODE_NOT_PRESENT_OFFSET, 13381 }, 25554 { 0xfcdb, UNICODE_NOT_PRESENT_OFFSET, 13386 }, 25555 { 0xfcdc, UNICODE_NOT_PRESENT_OFFSET, 13391 }, 25556 { 0xfcdd, UNICODE_NOT_PRESENT_OFFSET, 13396 }, 25557 { 0xfcde, UNICODE_NOT_PRESENT_OFFSET, 13607 }, 25558 { 0xfcdf, UNICODE_NOT_PRESENT_OFFSET, 12967 }, 25559 { 0xfce0, UNICODE_NOT_PRESENT_OFFSET, 13570 }, 25560 { 0xfce1, UNICODE_NOT_PRESENT_OFFSET, 12996 }, 25561 { 0xfce2, UNICODE_NOT_PRESENT_OFFSET, 13577 }, 25562 { 0xfce3, UNICODE_NOT_PRESENT_OFFSET, 13026 }, 25563 { 0xfce4, UNICODE_NOT_PRESENT_OFFSET, 13582 }, 25564 { 0xfce5, UNICODE_NOT_PRESENT_OFFSET, 13046 }, 25565 { 0xfce6, UNICODE_NOT_PRESENT_OFFSET, 13612 }, 25566 { 0xfce7, UNICODE_NOT_PRESENT_OFFSET, 13111 }, 25567 { 0xfce8, UNICODE_NOT_PRESENT_OFFSET, 13617 }, 25568 { 0xfce9, UNICODE_NOT_PRESENT_OFFSET, 13622 }, 25569 { 0xfcea, UNICODE_NOT_PRESENT_OFFSET, 13627 }, 25570 { 0xfceb, UNICODE_NOT_PRESENT_OFFSET, 13251 }, 25571 { 0xfcec, UNICODE_NOT_PRESENT_OFFSET, 13256 }, 25572 { 0xfced, UNICODE_NOT_PRESENT_OFFSET, 13286 }, 25573 { 0xfcee, UNICODE_NOT_PRESENT_OFFSET, 13346 }, 25574 { 0xfcef, UNICODE_NOT_PRESENT_OFFSET, 13597 }, 25575 { 0xfcf0, UNICODE_NOT_PRESENT_OFFSET, 13396 }, 25576 { 0xfcf1, UNICODE_NOT_PRESENT_OFFSET, 13607 }, 25577 { 0xfcf2, UNICODE_NOT_PRESENT_OFFSET, 13632 }, 25578 { 0xfcf3, UNICODE_NOT_PRESENT_OFFSET, 13639 }, 25579 { 0xfcf4, UNICODE_NOT_PRESENT_OFFSET, 13646 }, 25580 { 0xfcf5, UNICODE_NOT_PRESENT_OFFSET, 13653 }, 25581 { 0xfcf6, UNICODE_NOT_PRESENT_OFFSET, 13658 }, 25582 { 0xfcf7, UNICODE_NOT_PRESENT_OFFSET, 13663 }, 25583 { 0xfcf8, UNICODE_NOT_PRESENT_OFFSET, 13668 }, 25584 { 0xfcf9, UNICODE_NOT_PRESENT_OFFSET, 13673 }, 25585 { 0xfcfa, UNICODE_NOT_PRESENT_OFFSET, 13678 }, 25586 { 0xfcfb, UNICODE_NOT_PRESENT_OFFSET, 13683 }, 25587 { 0xfcfc, UNICODE_NOT_PRESENT_OFFSET, 13688 }, 25588 { 0xfcfd, UNICODE_NOT_PRESENT_OFFSET, 13693 }, 25589 { 0xfcfe, UNICODE_NOT_PRESENT_OFFSET, 13698 }, 25590 { 0xfcff, UNICODE_NOT_PRESENT_OFFSET, 13703 }, 25591 { 0xfd00, UNICODE_NOT_PRESENT_OFFSET, 13708 }, 25592 { 0xfd01, UNICODE_NOT_PRESENT_OFFSET, 13713 }, 25593 { 0xfd02, UNICODE_NOT_PRESENT_OFFSET, 13718 }, 25594 { 0xfd03, UNICODE_NOT_PRESENT_OFFSET, 13723 }, 25595 { 0xfd04, UNICODE_NOT_PRESENT_OFFSET, 13728 }, 25596 { 0xfd05, UNICODE_NOT_PRESENT_OFFSET, 13733 }, 25597 { 0xfd06, UNICODE_NOT_PRESENT_OFFSET, 13738 }, 25598 { 0xfd07, UNICODE_NOT_PRESENT_OFFSET, 13743 }, 25599 { 0xfd08, UNICODE_NOT_PRESENT_OFFSET, 13748 }, 25600 { 0xfd09, UNICODE_NOT_PRESENT_OFFSET, 13753 }, 25601 { 0xfd0a, UNICODE_NOT_PRESENT_OFFSET, 13758 }, 25602 { 0xfd0b, UNICODE_NOT_PRESENT_OFFSET, 13763 }, 25603 { 0xfd0c, UNICODE_NOT_PRESENT_OFFSET, 13622 }, 25604 { 0xfd0d, UNICODE_NOT_PRESENT_OFFSET, 13768 }, 25605 { 0xfd0e, UNICODE_NOT_PRESENT_OFFSET, 13773 }, 25606 { 0xfd0f, UNICODE_NOT_PRESENT_OFFSET, 13778 }, 25607 { 0xfd10, UNICODE_NOT_PRESENT_OFFSET, 13783 }, 25608 { 0xfd11, UNICODE_NOT_PRESENT_OFFSET, 13653 }, 25609 { 0xfd12, UNICODE_NOT_PRESENT_OFFSET, 13658 }, 25610 { 0xfd13, UNICODE_NOT_PRESENT_OFFSET, 13663 }, 25611 { 0xfd14, UNICODE_NOT_PRESENT_OFFSET, 13668 }, 25612 { 0xfd15, UNICODE_NOT_PRESENT_OFFSET, 13673 }, 25613 { 0xfd16, UNICODE_NOT_PRESENT_OFFSET, 13678 }, 25614 { 0xfd17, UNICODE_NOT_PRESENT_OFFSET, 13683 }, 25615 { 0xfd18, UNICODE_NOT_PRESENT_OFFSET, 13688 }, 25616 { 0xfd19, UNICODE_NOT_PRESENT_OFFSET, 13693 }, 25617 { 0xfd1a, UNICODE_NOT_PRESENT_OFFSET, 13698 }, 25618 { 0xfd1b, UNICODE_NOT_PRESENT_OFFSET, 13703 }, 25619 { 0xfd1c, UNICODE_NOT_PRESENT_OFFSET, 13708 }, 25620 { 0xfd1d, UNICODE_NOT_PRESENT_OFFSET, 13713 }, 25621 { 0xfd1e, UNICODE_NOT_PRESENT_OFFSET, 13718 }, 25622 { 0xfd1f, UNICODE_NOT_PRESENT_OFFSET, 13723 }, 25623 { 0xfd20, UNICODE_NOT_PRESENT_OFFSET, 13728 }, 25624 { 0xfd21, UNICODE_NOT_PRESENT_OFFSET, 13733 }, 25625 { 0xfd22, UNICODE_NOT_PRESENT_OFFSET, 13738 }, 25626 { 0xfd23, UNICODE_NOT_PRESENT_OFFSET, 13743 }, 25627 { 0xfd24, UNICODE_NOT_PRESENT_OFFSET, 13748 }, 25628 { 0xfd25, UNICODE_NOT_PRESENT_OFFSET, 13753 }, 25629 { 0xfd26, UNICODE_NOT_PRESENT_OFFSET, 13758 }, 25630 { 0xfd27, UNICODE_NOT_PRESENT_OFFSET, 13763 }, 25631 { 0xfd28, UNICODE_NOT_PRESENT_OFFSET, 13622 }, 25632 { 0xfd29, UNICODE_NOT_PRESENT_OFFSET, 13768 }, 25633 { 0xfd2a, UNICODE_NOT_PRESENT_OFFSET, 13773 }, 25634 { 0xfd2b, UNICODE_NOT_PRESENT_OFFSET, 13778 }, 25635 { 0xfd2c, UNICODE_NOT_PRESENT_OFFSET, 13783 }, 25636 { 0xfd2d, UNICODE_NOT_PRESENT_OFFSET, 13753 }, 25637 { 0xfd2e, UNICODE_NOT_PRESENT_OFFSET, 13758 }, 25638 { 0xfd2f, UNICODE_NOT_PRESENT_OFFSET, 13763 }, 25639 { 0xfd30, UNICODE_NOT_PRESENT_OFFSET, 13622 }, 25640 { 0xfd31, UNICODE_NOT_PRESENT_OFFSET, 13617 }, 25641 { 0xfd32, UNICODE_NOT_PRESENT_OFFSET, 13627 }, 25642 { 0xfd33, UNICODE_NOT_PRESENT_OFFSET, 13151 }, 25643 { 0xfd34, UNICODE_NOT_PRESENT_OFFSET, 13096 }, 25644 { 0xfd35, UNICODE_NOT_PRESENT_OFFSET, 13101 }, 25645 { 0xfd36, UNICODE_NOT_PRESENT_OFFSET, 13106 }, 25646 { 0xfd37, UNICODE_NOT_PRESENT_OFFSET, 13753 }, 25647 { 0xfd38, UNICODE_NOT_PRESENT_OFFSET, 13758 }, 25648 { 0xfd39, UNICODE_NOT_PRESENT_OFFSET, 13763 }, 25649 { 0xfd3a, UNICODE_NOT_PRESENT_OFFSET, 13151 }, 25650 { 0xfd3b, UNICODE_NOT_PRESENT_OFFSET, 13156 }, 25651 { 0xfd3c, UNICODE_NOT_PRESENT_OFFSET, 13788 }, 25652 { 0xfd3d, UNICODE_NOT_PRESENT_OFFSET, 13788 }, 25653 { 0xfd50, UNICODE_NOT_PRESENT_OFFSET, 13793 }, 25654 { 0xfd51, UNICODE_NOT_PRESENT_OFFSET, 13800 }, 25655 { 0xfd52, UNICODE_NOT_PRESENT_OFFSET, 13800 }, 25656 { 0xfd53, UNICODE_NOT_PRESENT_OFFSET, 13807 }, 25657 { 0xfd54, UNICODE_NOT_PRESENT_OFFSET, 13814 }, 25658 { 0xfd55, UNICODE_NOT_PRESENT_OFFSET, 13821 }, 25659 { 0xfd56, UNICODE_NOT_PRESENT_OFFSET, 13828 }, 25660 { 0xfd57, UNICODE_NOT_PRESENT_OFFSET, 13835 }, 25661 { 0xfd58, UNICODE_NOT_PRESENT_OFFSET, 13842 }, 25662 { 0xfd59, UNICODE_NOT_PRESENT_OFFSET, 13842 }, 25663 { 0xfd5a, UNICODE_NOT_PRESENT_OFFSET, 13849 }, 25664 { 0xfd5b, UNICODE_NOT_PRESENT_OFFSET, 13856 }, 25665 { 0xfd5c, UNICODE_NOT_PRESENT_OFFSET, 13863 }, 25666 { 0xfd5d, UNICODE_NOT_PRESENT_OFFSET, 13870 }, 25667 { 0xfd5e, UNICODE_NOT_PRESENT_OFFSET, 13877 }, 25668 { 0xfd5f, UNICODE_NOT_PRESENT_OFFSET, 13884 }, 25669 { 0xfd60, UNICODE_NOT_PRESENT_OFFSET, 13884 }, 25670 { 0xfd61, UNICODE_NOT_PRESENT_OFFSET, 13891 }, 25671 { 0xfd62, UNICODE_NOT_PRESENT_OFFSET, 13898 }, 25672 { 0xfd63, UNICODE_NOT_PRESENT_OFFSET, 13898 }, 25673 { 0xfd64, UNICODE_NOT_PRESENT_OFFSET, 13905 }, 25674 { 0xfd65, UNICODE_NOT_PRESENT_OFFSET, 13905 }, 25675 { 0xfd66, UNICODE_NOT_PRESENT_OFFSET, 13912 }, 25676 { 0xfd67, UNICODE_NOT_PRESENT_OFFSET, 13919 }, 25677 { 0xfd68, UNICODE_NOT_PRESENT_OFFSET, 13919 }, 25678 { 0xfd69, UNICODE_NOT_PRESENT_OFFSET, 13926 }, 25679 { 0xfd6a, UNICODE_NOT_PRESENT_OFFSET, 13933 }, 25680 { 0xfd6b, UNICODE_NOT_PRESENT_OFFSET, 13933 }, 25681 { 0xfd6c, UNICODE_NOT_PRESENT_OFFSET, 13940 }, 25682 { 0xfd6d, UNICODE_NOT_PRESENT_OFFSET, 13940 }, 25683 { 0xfd6e, UNICODE_NOT_PRESENT_OFFSET, 13947 }, 25684 { 0xfd6f, UNICODE_NOT_PRESENT_OFFSET, 13954 }, 25685 { 0xfd70, UNICODE_NOT_PRESENT_OFFSET, 13954 }, 25686 { 0xfd71, UNICODE_NOT_PRESENT_OFFSET, 13961 }, 25687 { 0xfd72, UNICODE_NOT_PRESENT_OFFSET, 13961 }, 25688 { 0xfd73, UNICODE_NOT_PRESENT_OFFSET, 13968 }, 25689 { 0xfd74, UNICODE_NOT_PRESENT_OFFSET, 13975 }, 25690 { 0xfd75, UNICODE_NOT_PRESENT_OFFSET, 13982 }, 25691 { 0xfd76, UNICODE_NOT_PRESENT_OFFSET, 13989 }, 25692 { 0xfd77, UNICODE_NOT_PRESENT_OFFSET, 13989 }, 25693 { 0xfd78, UNICODE_NOT_PRESENT_OFFSET, 13996 }, 25694 { 0xfd79, UNICODE_NOT_PRESENT_OFFSET, 14003 }, 25695 { 0xfd7a, UNICODE_NOT_PRESENT_OFFSET, 14010 }, 25696 { 0xfd7b, UNICODE_NOT_PRESENT_OFFSET, 14017 }, 25697 { 0xfd7c, UNICODE_NOT_PRESENT_OFFSET, 14024 }, 25698 { 0xfd7d, UNICODE_NOT_PRESENT_OFFSET, 14024 }, 25699 { 0xfd7e, UNICODE_NOT_PRESENT_OFFSET, 14031 }, 25700 { 0xfd7f, UNICODE_NOT_PRESENT_OFFSET, 14038 }, 25701 { 0xfd80, UNICODE_NOT_PRESENT_OFFSET, 14045 }, 25702 { 0xfd81, UNICODE_NOT_PRESENT_OFFSET, 14052 }, 25703 { 0xfd82, UNICODE_NOT_PRESENT_OFFSET, 14059 }, 25704 { 0xfd83, UNICODE_NOT_PRESENT_OFFSET, 14066 }, 25705 { 0xfd84, UNICODE_NOT_PRESENT_OFFSET, 14066 }, 25706 { 0xfd85, UNICODE_NOT_PRESENT_OFFSET, 14073 }, 25707 { 0xfd86, UNICODE_NOT_PRESENT_OFFSET, 14073 }, 25708 { 0xfd87, UNICODE_NOT_PRESENT_OFFSET, 14080 }, 25709 { 0xfd88, UNICODE_NOT_PRESENT_OFFSET, 14080 }, 25710 { 0xfd89, UNICODE_NOT_PRESENT_OFFSET, 14087 }, 25711 { 0xfd8a, UNICODE_NOT_PRESENT_OFFSET, 14094 }, 25712 { 0xfd8b, UNICODE_NOT_PRESENT_OFFSET, 14101 }, 25713 { 0xfd8c, UNICODE_NOT_PRESENT_OFFSET, 14108 }, 25714 { 0xfd8d, UNICODE_NOT_PRESENT_OFFSET, 14115 }, 25715 { 0xfd8e, UNICODE_NOT_PRESENT_OFFSET, 14122 }, 25716 { 0xfd8f, UNICODE_NOT_PRESENT_OFFSET, 14129 }, 25717 { 0xfd92, UNICODE_NOT_PRESENT_OFFSET, 14136 }, 25718 { 0xfd93, UNICODE_NOT_PRESENT_OFFSET, 14143 }, 25719 { 0xfd94, UNICODE_NOT_PRESENT_OFFSET, 14150 }, 25720 { 0xfd95, UNICODE_NOT_PRESENT_OFFSET, 14157 }, 25721 { 0xfd96, UNICODE_NOT_PRESENT_OFFSET, 14164 }, 25722 { 0xfd97, UNICODE_NOT_PRESENT_OFFSET, 14171 }, 25723 { 0xfd98, UNICODE_NOT_PRESENT_OFFSET, 14171 }, 25724 { 0xfd99, UNICODE_NOT_PRESENT_OFFSET, 14178 }, 25725 { 0xfd9a, UNICODE_NOT_PRESENT_OFFSET, 14185 }, 25726 { 0xfd9b, UNICODE_NOT_PRESENT_OFFSET, 14192 }, 25727 { 0xfd9c, UNICODE_NOT_PRESENT_OFFSET, 14199 }, 25728 { 0xfd9d, UNICODE_NOT_PRESENT_OFFSET, 14199 }, 25729 { 0xfd9e, UNICODE_NOT_PRESENT_OFFSET, 14206 }, 25730 { 0xfd9f, UNICODE_NOT_PRESENT_OFFSET, 14213 }, 25731 { 0xfda0, UNICODE_NOT_PRESENT_OFFSET, 14220 }, 25732 { 0xfda1, UNICODE_NOT_PRESENT_OFFSET, 14227 }, 25733 { 0xfda2, UNICODE_NOT_PRESENT_OFFSET, 14234 }, 25734 { 0xfda3, UNICODE_NOT_PRESENT_OFFSET, 14241 }, 25735 { 0xfda4, UNICODE_NOT_PRESENT_OFFSET, 14248 }, 25736 { 0xfda5, UNICODE_NOT_PRESENT_OFFSET, 14255 }, 25737 { 0xfda6, UNICODE_NOT_PRESENT_OFFSET, 14262 }, 25738 { 0xfda7, UNICODE_NOT_PRESENT_OFFSET, 14269 }, 25739 { 0xfda8, UNICODE_NOT_PRESENT_OFFSET, 14276 }, 25740 { 0xfda9, UNICODE_NOT_PRESENT_OFFSET, 14283 }, 25741 { 0xfdaa, UNICODE_NOT_PRESENT_OFFSET, 14290 }, 25742 { 0xfdab, UNICODE_NOT_PRESENT_OFFSET, 14297 }, 25743 { 0xfdac, UNICODE_NOT_PRESENT_OFFSET, 14304 }, 25744 { 0xfdad, UNICODE_NOT_PRESENT_OFFSET, 14311 }, 25745 { 0xfdae, UNICODE_NOT_PRESENT_OFFSET, 14318 }, 25746 { 0xfdaf, UNICODE_NOT_PRESENT_OFFSET, 14325 }, 25747 { 0xfdb0, UNICODE_NOT_PRESENT_OFFSET, 14332 }, 25748 { 0xfdb1, UNICODE_NOT_PRESENT_OFFSET, 14339 }, 25749 { 0xfdb2, UNICODE_NOT_PRESENT_OFFSET, 14346 }, 25750 { 0xfdb3, UNICODE_NOT_PRESENT_OFFSET, 14353 }, 25751 { 0xfdb4, UNICODE_NOT_PRESENT_OFFSET, 14031 }, 25752 { 0xfdb5, UNICODE_NOT_PRESENT_OFFSET, 14045 }, 25753 { 0xfdb6, UNICODE_NOT_PRESENT_OFFSET, 14360 }, 25754 { 0xfdb7, UNICODE_NOT_PRESENT_OFFSET, 14367 }, 25755 { 0xfdb8, UNICODE_NOT_PRESENT_OFFSET, 14374 }, 25756 { 0xfdb9, UNICODE_NOT_PRESENT_OFFSET, 14381 }, 25757 { 0xfdba, UNICODE_NOT_PRESENT_OFFSET, 14388 }, 25758 { 0xfdbb, UNICODE_NOT_PRESENT_OFFSET, 14395 }, 25759 { 0xfdbc, UNICODE_NOT_PRESENT_OFFSET, 14388 }, 25760 { 0xfdbd, UNICODE_NOT_PRESENT_OFFSET, 14374 }, 25761 { 0xfdbe, UNICODE_NOT_PRESENT_OFFSET, 14402 }, 25762 { 0xfdbf, UNICODE_NOT_PRESENT_OFFSET, 14409 }, 25763 { 0xfdc0, UNICODE_NOT_PRESENT_OFFSET, 14416 }, 25764 { 0xfdc1, UNICODE_NOT_PRESENT_OFFSET, 14423 }, 25765 { 0xfdc2, UNICODE_NOT_PRESENT_OFFSET, 14430 }, 25766 { 0xfdc3, UNICODE_NOT_PRESENT_OFFSET, 14395 }, 25767 { 0xfdc4, UNICODE_NOT_PRESENT_OFFSET, 13982 }, 25768 { 0xfdc5, UNICODE_NOT_PRESENT_OFFSET, 13912 }, 25769 { 0xfdc6, UNICODE_NOT_PRESENT_OFFSET, 14437 }, 25770 { 0xfdc7, UNICODE_NOT_PRESENT_OFFSET, 14444 }, 25771 { 0xfdf0, UNICODE_NOT_PRESENT_OFFSET, 14451 }, 25772 { 0xfdf1, UNICODE_NOT_PRESENT_OFFSET, 14458 }, 25773 { 0xfdf2, UNICODE_NOT_PRESENT_OFFSET, 14465 }, 25774 { 0xfdf3, UNICODE_NOT_PRESENT_OFFSET, 14474 }, 25775 { 0xfdf4, UNICODE_NOT_PRESENT_OFFSET, 14483 }, 25776 { 0xfdf5, UNICODE_NOT_PRESENT_OFFSET, 14492 }, 25777 { 0xfdf6, UNICODE_NOT_PRESENT_OFFSET, 14501 }, 25778 { 0xfdf7, UNICODE_NOT_PRESENT_OFFSET, 14510 }, 25779 { 0xfdf8, UNICODE_NOT_PRESENT_OFFSET, 14519 }, 25780 { 0xfdf9, UNICODE_NOT_PRESENT_OFFSET, 14528 }, 25781 { 0xfdfa, UNICODE_NOT_PRESENT_OFFSET, 14535 }, 25782 { 0xfdfb, UNICODE_NOT_PRESENT_OFFSET, 14569 }, 25783 { 0xfdfc, UNICODE_NOT_PRESENT_OFFSET, 14585 }, 25784 { 0xfe10, UNICODE_NOT_PRESENT_OFFSET, 14594 }, 25785 { 0xfe11, UNICODE_NOT_PRESENT_OFFSET, 14596 }, 25786 { 0xfe12, UNICODE_NOT_PRESENT_OFFSET, 14600 }, 25787 { 0xfe13, UNICODE_NOT_PRESENT_OFFSET, 14604 }, 25788 { 0xfe14, UNICODE_NOT_PRESENT_OFFSET, 1248 }, 25789 { 0xfe15, UNICODE_NOT_PRESENT_OFFSET, 14606 }, 25790 { 0xfe16, UNICODE_NOT_PRESENT_OFFSET, 14608 }, 25791 { 0xfe17, UNICODE_NOT_PRESENT_OFFSET, 14610 }, 25792 { 0xfe18, UNICODE_NOT_PRESENT_OFFSET, 14614 }, 25793 { 0xfe19, UNICODE_NOT_PRESENT_OFFSET, 5186 }, 25794 { 0xfe30, UNICODE_NOT_PRESENT_OFFSET, 5183 }, 25795 { 0xfe31, UNICODE_NOT_PRESENT_OFFSET, 14618 }, 25796 { 0xfe32, UNICODE_NOT_PRESENT_OFFSET, 14622 }, 25797 { 0xfe33, UNICODE_NOT_PRESENT_OFFSET, 14626 }, 25798 { 0xfe34, UNICODE_NOT_PRESENT_OFFSET, 14626 }, 25799 { 0xfe35, UNICODE_NOT_PRESENT_OFFSET, 5275 }, 25800 { 0xfe36, UNICODE_NOT_PRESENT_OFFSET, 5277 }, 25801 { 0xfe37, UNICODE_NOT_PRESENT_OFFSET, 14628 }, 25802 { 0xfe38, UNICODE_NOT_PRESENT_OFFSET, 14630 }, 25803 { 0xfe39, UNICODE_NOT_PRESENT_OFFSET, 14632 }, 25804 { 0xfe3a, UNICODE_NOT_PRESENT_OFFSET, 14636 }, 25805 { 0xfe3b, UNICODE_NOT_PRESENT_OFFSET, 14640 }, 25806 { 0xfe3c, UNICODE_NOT_PRESENT_OFFSET, 14644 }, 25807 { 0xfe3d, UNICODE_NOT_PRESENT_OFFSET, 14648 }, 25808 { 0xfe3e, UNICODE_NOT_PRESENT_OFFSET, 14652 }, 25809 { 0xfe3f, UNICODE_NOT_PRESENT_OFFSET, 5826 }, 25810 { 0xfe40, UNICODE_NOT_PRESENT_OFFSET, 5830 }, 25811 { 0xfe41, UNICODE_NOT_PRESENT_OFFSET, 14656 }, 25812 { 0xfe42, UNICODE_NOT_PRESENT_OFFSET, 14660 }, 25813 { 0xfe43, UNICODE_NOT_PRESENT_OFFSET, 14664 }, 25814 { 0xfe44, UNICODE_NOT_PRESENT_OFFSET, 14668 }, 25815 { 0xfe47, UNICODE_NOT_PRESENT_OFFSET, 14672 }, 25816 { 0xfe48, UNICODE_NOT_PRESENT_OFFSET, 14674 }, 25817 { 0xfe49, UNICODE_NOT_PRESENT_OFFSET, 5227 }, 25818 { 0xfe4a, UNICODE_NOT_PRESENT_OFFSET, 5227 }, 25819 { 0xfe4b, UNICODE_NOT_PRESENT_OFFSET, 5227 }, 25820 { 0xfe4c, UNICODE_NOT_PRESENT_OFFSET, 5227 }, 25821 { 0xfe4d, UNICODE_NOT_PRESENT_OFFSET, 14626 }, 25822 { 0xfe4e, UNICODE_NOT_PRESENT_OFFSET, 14626 }, 25823 { 0xfe4f, UNICODE_NOT_PRESENT_OFFSET, 14626 }, 25824 { 0xfe50, UNICODE_NOT_PRESENT_OFFSET, 14594 }, 25825 { 0xfe51, UNICODE_NOT_PRESENT_OFFSET, 14596 }, 25826 { 0xfe52, UNICODE_NOT_PRESENT_OFFSET, 5181 }, 25827 { 0xfe54, UNICODE_NOT_PRESENT_OFFSET, 1248 }, 25828 { 0xfe55, UNICODE_NOT_PRESENT_OFFSET, 14604 }, 25829 { 0xfe56, UNICODE_NOT_PRESENT_OFFSET, 14608 }, 25830 { 0xfe57, UNICODE_NOT_PRESENT_OFFSET, 14606 }, 25831 { 0xfe58, UNICODE_NOT_PRESENT_OFFSET, 14618 }, 25832 { 0xfe59, UNICODE_NOT_PRESENT_OFFSET, 5275 }, 25833 { 0xfe5a, UNICODE_NOT_PRESENT_OFFSET, 5277 }, 25834 { 0xfe5b, UNICODE_NOT_PRESENT_OFFSET, 14628 }, 25835 { 0xfe5c, UNICODE_NOT_PRESENT_OFFSET, 14630 }, 25836 { 0xfe5d, UNICODE_NOT_PRESENT_OFFSET, 14632 }, 25837 { 0xfe5e, UNICODE_NOT_PRESENT_OFFSET, 14636 }, 25838 { 0xfe5f, UNICODE_NOT_PRESENT_OFFSET, 14676 }, 25839 { 0xfe60, UNICODE_NOT_PRESENT_OFFSET, 14678 }, 25840 { 0xfe61, UNICODE_NOT_PRESENT_OFFSET, 14680 }, 25841 { 0xfe62, UNICODE_NOT_PRESENT_OFFSET, 5267 }, 25842 { 0xfe63, UNICODE_NOT_PRESENT_OFFSET, 14682 }, 25843 { 0xfe64, UNICODE_NOT_PRESENT_OFFSET, 14684 }, 25844 { 0xfe65, UNICODE_NOT_PRESENT_OFFSET, 14686 }, 25845 { 0xfe66, UNICODE_NOT_PRESENT_OFFSET, 5273 }, 25846 { 0xfe68, UNICODE_NOT_PRESENT_OFFSET, 14688 }, 25847 { 0xfe69, UNICODE_NOT_PRESENT_OFFSET, 14690 }, 25848 { 0xfe6a, UNICODE_NOT_PRESENT_OFFSET, 14692 }, 25849 { 0xfe6b, UNICODE_NOT_PRESENT_OFFSET, 14694 }, 25850 { 0xfe70, UNICODE_NOT_PRESENT_OFFSET, 14696 }, 25851 { 0xfe71, UNICODE_NOT_PRESENT_OFFSET, 14700 }, 25852 { 0xfe72, UNICODE_NOT_PRESENT_OFFSET, 14705 }, 25853 { 0xfe74, UNICODE_NOT_PRESENT_OFFSET, 14709 }, 25854 { 0xfe76, UNICODE_NOT_PRESENT_OFFSET, 14713 }, 25855 { 0xfe77, UNICODE_NOT_PRESENT_OFFSET, 14717 }, 25856 { 0xfe78, UNICODE_NOT_PRESENT_OFFSET, 14722 }, 25857 { 0xfe79, UNICODE_NOT_PRESENT_OFFSET, 14726 }, 25858 { 0xfe7a, UNICODE_NOT_PRESENT_OFFSET, 14731 }, 25859 { 0xfe7b, UNICODE_NOT_PRESENT_OFFSET, 14735 }, 25860 { 0xfe7c, UNICODE_NOT_PRESENT_OFFSET, 14740 }, 25861 { 0xfe7d, UNICODE_NOT_PRESENT_OFFSET, 14744 }, 25862 { 0xfe7e, UNICODE_NOT_PRESENT_OFFSET, 14749 }, 25863 { 0xfe7f, UNICODE_NOT_PRESENT_OFFSET, 14753 }, 25864 { 0xfe80, UNICODE_NOT_PRESENT_OFFSET, 14758 }, 25865 { 0xfe81, UNICODE_NOT_PRESENT_OFFSET, 1676 }, 25866 { 0xfe82, UNICODE_NOT_PRESENT_OFFSET, 1676 }, 25867 { 0xfe83, UNICODE_NOT_PRESENT_OFFSET, 1681 }, 25868 { 0xfe84, UNICODE_NOT_PRESENT_OFFSET, 1681 }, 25869 { 0xfe85, UNICODE_NOT_PRESENT_OFFSET, 1686 }, 25870 { 0xfe86, UNICODE_NOT_PRESENT_OFFSET, 1686 }, 25871 { 0xfe87, UNICODE_NOT_PRESENT_OFFSET, 1691 }, 25872 { 0xfe88, UNICODE_NOT_PRESENT_OFFSET, 1691 }, 25873 { 0xfe89, UNICODE_NOT_PRESENT_OFFSET, 1696 }, 25874 { 0xfe8a, UNICODE_NOT_PRESENT_OFFSET, 1696 }, 25875 { 0xfe8b, UNICODE_NOT_PRESENT_OFFSET, 1696 }, 25876 { 0xfe8c, UNICODE_NOT_PRESENT_OFFSET, 1696 }, 25877 { 0xfe8d, UNICODE_NOT_PRESENT_OFFSET, 14761 }, 25878 { 0xfe8e, UNICODE_NOT_PRESENT_OFFSET, 14761 }, 25879 { 0xfe8f, UNICODE_NOT_PRESENT_OFFSET, 14764 }, 25880 { 0xfe90, UNICODE_NOT_PRESENT_OFFSET, 14764 }, 25881 { 0xfe91, UNICODE_NOT_PRESENT_OFFSET, 14764 }, 25882 { 0xfe92, UNICODE_NOT_PRESENT_OFFSET, 14764 }, 25883 { 0xfe93, UNICODE_NOT_PRESENT_OFFSET, 14767 }, 25884 { 0xfe94, UNICODE_NOT_PRESENT_OFFSET, 14767 }, 25885 { 0xfe95, UNICODE_NOT_PRESENT_OFFSET, 14770 }, 25886 { 0xfe96, UNICODE_NOT_PRESENT_OFFSET, 14770 }, 25887 { 0xfe97, UNICODE_NOT_PRESENT_OFFSET, 14770 }, 25888 { 0xfe98, UNICODE_NOT_PRESENT_OFFSET, 14770 }, 25889 { 0xfe99, UNICODE_NOT_PRESENT_OFFSET, 14773 }, 25890 { 0xfe9a, UNICODE_NOT_PRESENT_OFFSET, 14773 }, 25891 { 0xfe9b, UNICODE_NOT_PRESENT_OFFSET, 14773 }, 25892 { 0xfe9c, UNICODE_NOT_PRESENT_OFFSET, 14773 }, 25893 { 0xfe9d, UNICODE_NOT_PRESENT_OFFSET, 14776 }, 25894 { 0xfe9e, UNICODE_NOT_PRESENT_OFFSET, 14776 }, 25895 { 0xfe9f, UNICODE_NOT_PRESENT_OFFSET, 14776 }, 25896 { 0xfea0, UNICODE_NOT_PRESENT_OFFSET, 14776 }, 25897 { 0xfea1, UNICODE_NOT_PRESENT_OFFSET, 14779 }, 25898 { 0xfea2, UNICODE_NOT_PRESENT_OFFSET, 14779 }, 25899 { 0xfea3, UNICODE_NOT_PRESENT_OFFSET, 14779 }, 25900 { 0xfea4, UNICODE_NOT_PRESENT_OFFSET, 14779 }, 25901 { 0xfea5, UNICODE_NOT_PRESENT_OFFSET, 14782 }, 25902 { 0xfea6, UNICODE_NOT_PRESENT_OFFSET, 14782 }, 25903 { 0xfea7, UNICODE_NOT_PRESENT_OFFSET, 14782 }, 25904 { 0xfea8, UNICODE_NOT_PRESENT_OFFSET, 14782 }, 25905 { 0xfea9, UNICODE_NOT_PRESENT_OFFSET, 14785 }, 25906 { 0xfeaa, UNICODE_NOT_PRESENT_OFFSET, 14785 }, 25907 { 0xfeab, UNICODE_NOT_PRESENT_OFFSET, 14788 }, 25908 { 0xfeac, UNICODE_NOT_PRESENT_OFFSET, 14788 }, 25909 { 0xfead, UNICODE_NOT_PRESENT_OFFSET, 14791 }, 25910 { 0xfeae, UNICODE_NOT_PRESENT_OFFSET, 14791 }, 25911 { 0xfeaf, UNICODE_NOT_PRESENT_OFFSET, 14794 }, 25912 { 0xfeb0, UNICODE_NOT_PRESENT_OFFSET, 14794 }, 25913 { 0xfeb1, UNICODE_NOT_PRESENT_OFFSET, 14797 }, 25914 { 0xfeb2, UNICODE_NOT_PRESENT_OFFSET, 14797 }, 25915 { 0xfeb3, UNICODE_NOT_PRESENT_OFFSET, 14797 }, 25916 { 0xfeb4, UNICODE_NOT_PRESENT_OFFSET, 14797 }, 25917 { 0xfeb5, UNICODE_NOT_PRESENT_OFFSET, 14800 }, 25918 { 0xfeb6, UNICODE_NOT_PRESENT_OFFSET, 14800 }, 25919 { 0xfeb7, UNICODE_NOT_PRESENT_OFFSET, 14800 }, 25920 { 0xfeb8, UNICODE_NOT_PRESENT_OFFSET, 14800 }, 25921 { 0xfeb9, UNICODE_NOT_PRESENT_OFFSET, 14803 }, 25922 { 0xfeba, UNICODE_NOT_PRESENT_OFFSET, 14803 }, 25923 { 0xfebb, UNICODE_NOT_PRESENT_OFFSET, 14803 }, 25924 { 0xfebc, UNICODE_NOT_PRESENT_OFFSET, 14803 }, 25925 { 0xfebd, UNICODE_NOT_PRESENT_OFFSET, 14806 }, 25926 { 0xfebe, UNICODE_NOT_PRESENT_OFFSET, 14806 }, 25927 { 0xfebf, UNICODE_NOT_PRESENT_OFFSET, 14806 }, 25928 { 0xfec0, UNICODE_NOT_PRESENT_OFFSET, 14806 }, 25929 { 0xfec1, UNICODE_NOT_PRESENT_OFFSET, 14809 }, 25930 { 0xfec2, UNICODE_NOT_PRESENT_OFFSET, 14809 }, 25931 { 0xfec3, UNICODE_NOT_PRESENT_OFFSET, 14809 }, 25932 { 0xfec4, UNICODE_NOT_PRESENT_OFFSET, 14809 }, 25933 { 0xfec5, UNICODE_NOT_PRESENT_OFFSET, 14812 }, 25934 { 0xfec6, UNICODE_NOT_PRESENT_OFFSET, 14812 }, 25935 { 0xfec7, UNICODE_NOT_PRESENT_OFFSET, 14812 }, 25936 { 0xfec8, UNICODE_NOT_PRESENT_OFFSET, 14812 }, 25937 { 0xfec9, UNICODE_NOT_PRESENT_OFFSET, 14815 }, 25938 { 0xfeca, UNICODE_NOT_PRESENT_OFFSET, 14815 }, 25939 { 0xfecb, UNICODE_NOT_PRESENT_OFFSET, 14815 }, 25940 { 0xfecc, UNICODE_NOT_PRESENT_OFFSET, 14815 }, 25941 { 0xfecd, UNICODE_NOT_PRESENT_OFFSET, 14818 }, 25942 { 0xfece, UNICODE_NOT_PRESENT_OFFSET, 14818 }, 25943 { 0xfecf, UNICODE_NOT_PRESENT_OFFSET, 14818 }, 25944 { 0xfed0, UNICODE_NOT_PRESENT_OFFSET, 14818 }, 25945 { 0xfed1, UNICODE_NOT_PRESENT_OFFSET, 14821 }, 25946 { 0xfed2, UNICODE_NOT_PRESENT_OFFSET, 14821 }, 25947 { 0xfed3, UNICODE_NOT_PRESENT_OFFSET, 14821 }, 25948 { 0xfed4, UNICODE_NOT_PRESENT_OFFSET, 14821 }, 25949 { 0xfed5, UNICODE_NOT_PRESENT_OFFSET, 14824 }, 25950 { 0xfed6, UNICODE_NOT_PRESENT_OFFSET, 14824 }, 25951 { 0xfed7, UNICODE_NOT_PRESENT_OFFSET, 14824 }, 25952 { 0xfed8, UNICODE_NOT_PRESENT_OFFSET, 14824 }, 25953 { 0xfed9, UNICODE_NOT_PRESENT_OFFSET, 14827 }, 25954 { 0xfeda, UNICODE_NOT_PRESENT_OFFSET, 14827 }, 25955 { 0xfedb, UNICODE_NOT_PRESENT_OFFSET, 14827 }, 25956 { 0xfedc, UNICODE_NOT_PRESENT_OFFSET, 14827 }, 25957 { 0xfedd, UNICODE_NOT_PRESENT_OFFSET, 14830 }, 25958 { 0xfede, UNICODE_NOT_PRESENT_OFFSET, 14830 }, 25959 { 0xfedf, UNICODE_NOT_PRESENT_OFFSET, 14830 }, 25960 { 0xfee0, UNICODE_NOT_PRESENT_OFFSET, 14830 }, 25961 { 0xfee1, UNICODE_NOT_PRESENT_OFFSET, 14833 }, 25962 { 0xfee2, UNICODE_NOT_PRESENT_OFFSET, 14833 }, 25963 { 0xfee3, UNICODE_NOT_PRESENT_OFFSET, 14833 }, 25964 { 0xfee4, UNICODE_NOT_PRESENT_OFFSET, 14833 }, 25965 { 0xfee5, UNICODE_NOT_PRESENT_OFFSET, 14836 }, 25966 { 0xfee6, UNICODE_NOT_PRESENT_OFFSET, 14836 }, 25967 { 0xfee7, UNICODE_NOT_PRESENT_OFFSET, 14836 }, 25968 { 0xfee8, UNICODE_NOT_PRESENT_OFFSET, 14836 }, 25969 { 0xfee9, UNICODE_NOT_PRESENT_OFFSET, 14839 }, 25970 { 0xfeea, UNICODE_NOT_PRESENT_OFFSET, 14839 }, 25971 { 0xfeeb, UNICODE_NOT_PRESENT_OFFSET, 14839 }, 25972 { 0xfeec, UNICODE_NOT_PRESENT_OFFSET, 14839 }, 25973 { 0xfeed, UNICODE_NOT_PRESENT_OFFSET, 14842 }, 25974 { 0xfeee, UNICODE_NOT_PRESENT_OFFSET, 14842 }, 25975 { 0xfeef, UNICODE_NOT_PRESENT_OFFSET, 12891 }, 25976 { 0xfef0, UNICODE_NOT_PRESENT_OFFSET, 12891 }, 25977 { 0xfef1, UNICODE_NOT_PRESENT_OFFSET, 14845 }, 25978 { 0xfef2, UNICODE_NOT_PRESENT_OFFSET, 14845 }, 25979 { 0xfef3, UNICODE_NOT_PRESENT_OFFSET, 14845 }, 25980 { 0xfef4, UNICODE_NOT_PRESENT_OFFSET, 14845 }, 25981 { 0xfef5, UNICODE_NOT_PRESENT_OFFSET, 14848 }, 25982 { 0xfef6, UNICODE_NOT_PRESENT_OFFSET, 14848 }, 25983 { 0xfef7, UNICODE_NOT_PRESENT_OFFSET, 14855 }, 25984 { 0xfef8, UNICODE_NOT_PRESENT_OFFSET, 14855 }, 25985 { 0xfef9, UNICODE_NOT_PRESENT_OFFSET, 14862 }, 25986 { 0xfefa, UNICODE_NOT_PRESENT_OFFSET, 14862 }, 25987 { 0xfefb, UNICODE_NOT_PRESENT_OFFSET, 14869 }, 25988 { 0xfefc, UNICODE_NOT_PRESENT_OFFSET, 14869 }, 25989 { 0xff01, UNICODE_NOT_PRESENT_OFFSET, 14606 }, 25990 { 0xff02, UNICODE_NOT_PRESENT_OFFSET, 14874 }, 25991 { 0xff03, UNICODE_NOT_PRESENT_OFFSET, 14676 }, 25992 { 0xff04, UNICODE_NOT_PRESENT_OFFSET, 14690 }, 25993 { 0xff05, UNICODE_NOT_PRESENT_OFFSET, 14692 }, 25994 { 0xff06, UNICODE_NOT_PRESENT_OFFSET, 14678 }, 25995 { 0xff07, UNICODE_NOT_PRESENT_OFFSET, 14876 }, 25996 { 0xff08, UNICODE_NOT_PRESENT_OFFSET, 5275 }, 25997 { 0xff09, UNICODE_NOT_PRESENT_OFFSET, 5277 }, 25998 { 0xff0a, UNICODE_NOT_PRESENT_OFFSET, 14680 }, 25999 { 0xff0b, UNICODE_NOT_PRESENT_OFFSET, 5267 }, 26000 { 0xff0c, UNICODE_NOT_PRESENT_OFFSET, 14594 }, 26001 { 0xff0d, UNICODE_NOT_PRESENT_OFFSET, 14682 }, 26002 { 0xff0e, UNICODE_NOT_PRESENT_OFFSET, 5181 }, 26003 { 0xff0f, UNICODE_NOT_PRESENT_OFFSET, 14878 }, 26004 { 0xff10, UNICODE_NOT_PRESENT_OFFSET, 5253 }, 26005 { 0xff11, UNICODE_NOT_PRESENT_OFFSET, 27 }, 26006 { 0xff12, UNICODE_NOT_PRESENT_OFFSET, 12 }, 26007 { 0xff13, UNICODE_NOT_PRESENT_OFFSET, 14 }, 26008 { 0xff14, UNICODE_NOT_PRESENT_OFFSET, 5255 }, 26009 { 0xff15, UNICODE_NOT_PRESENT_OFFSET, 5257 }, 26010 { 0xff16, UNICODE_NOT_PRESENT_OFFSET, 5259 }, 26011 { 0xff17, UNICODE_NOT_PRESENT_OFFSET, 5261 }, 26012 { 0xff18, UNICODE_NOT_PRESENT_OFFSET, 5263 }, 26013 { 0xff19, UNICODE_NOT_PRESENT_OFFSET, 5265 }, 26014 { 0xff1a, UNICODE_NOT_PRESENT_OFFSET, 14604 }, 26015 { 0xff1b, UNICODE_NOT_PRESENT_OFFSET, 1248 }, 26016 { 0xff1c, UNICODE_NOT_PRESENT_OFFSET, 14684 }, 26017 { 0xff1d, UNICODE_NOT_PRESENT_OFFSET, 5273 }, 26018 { 0xff1e, UNICODE_NOT_PRESENT_OFFSET, 14686 }, 26019 { 0xff1f, UNICODE_NOT_PRESENT_OFFSET, 14608 }, 26020 { 0xff20, UNICODE_NOT_PRESENT_OFFSET, 14694 }, 26021 { 0xff21, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 26022 { 0xff22, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 26023 { 0xff23, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 26024 { 0xff24, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 26025 { 0xff25, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 26026 { 0xff26, UNICODE_NOT_PRESENT_OFFSET, 5336 }, 26027 { 0xff27, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 26028 { 0xff28, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 26029 { 0xff29, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 26030 { 0xff2a, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 26031 { 0xff2b, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 26032 { 0xff2c, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 26033 { 0xff2d, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 26034 { 0xff2e, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 26035 { 0xff2f, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 26036 { 0xff30, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 26037 { 0xff31, UNICODE_NOT_PRESENT_OFFSET, 5319 }, 26038 { 0xff32, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 26039 { 0xff33, UNICODE_NOT_PRESENT_OFFSET, 6133 }, 26040 { 0xff34, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 26041 { 0xff35, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 26042 { 0xff36, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 26043 { 0xff37, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 26044 { 0xff38, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 26045 { 0xff39, UNICODE_NOT_PRESENT_OFFSET, 6135 }, 26046 { 0xff3a, UNICODE_NOT_PRESENT_OFFSET, 5331 }, 26047 { 0xff3b, UNICODE_NOT_PRESENT_OFFSET, 14672 }, 26048 { 0xff3c, UNICODE_NOT_PRESENT_OFFSET, 14688 }, 26049 { 0xff3d, UNICODE_NOT_PRESENT_OFFSET, 14674 }, 26050 { 0xff3e, UNICODE_NOT_PRESENT_OFFSET, 14880 }, 26051 { 0xff3f, UNICODE_NOT_PRESENT_OFFSET, 14626 }, 26052 { 0xff40, UNICODE_NOT_PRESENT_OFFSET, 5110 }, 26053 { 0xff41, UNICODE_NOT_PRESENT_OFFSET, 6 }, 26054 { 0xff42, UNICODE_NOT_PRESENT_OFFSET, 2364 }, 26055 { 0xff43, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 26056 { 0xff44, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 26057 { 0xff45, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 26058 { 0xff46, UNICODE_NOT_PRESENT_OFFSET, 2443 }, 26059 { 0xff47, UNICODE_NOT_PRESENT_OFFSET, 2379 }, 26060 { 0xff48, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 26061 { 0xff49, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 26062 { 0xff4a, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 26063 { 0xff4b, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 26064 { 0xff4c, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 26065 { 0xff4d, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 26066 { 0xff4e, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 26067 { 0xff4f, UNICODE_NOT_PRESENT_OFFSET, 29 }, 26068 { 0xff50, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 26069 { 0xff51, UNICODE_NOT_PRESENT_OFFSET, 6137 }, 26070 { 0xff52, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 26071 { 0xff53, UNICODE_NOT_PRESENT_OFFSET, 711 }, 26072 { 0xff54, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 26073 { 0xff55, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 26074 { 0xff56, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 26075 { 0xff57, UNICODE_NOT_PRESENT_OFFSET, 1189 }, 26076 { 0xff58, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 26077 { 0xff59, UNICODE_NOT_PRESENT_OFFSET, 1191 }, 26078 { 0xff5a, UNICODE_NOT_PRESENT_OFFSET, 2526 }, 26079 { 0xff5b, UNICODE_NOT_PRESENT_OFFSET, 14628 }, 26080 { 0xff5c, UNICODE_NOT_PRESENT_OFFSET, 14882 }, 26081 { 0xff5d, UNICODE_NOT_PRESENT_OFFSET, 14630 }, 26082 { 0xff5e, UNICODE_NOT_PRESENT_OFFSET, 14884 }, 26083 { 0xff5f, UNICODE_NOT_PRESENT_OFFSET, 14886 }, 26084 { 0xff60, UNICODE_NOT_PRESENT_OFFSET, 14890 }, 26085 { 0xff61, UNICODE_NOT_PRESENT_OFFSET, 14600 }, 26086 { 0xff62, UNICODE_NOT_PRESENT_OFFSET, 14656 }, 26087 { 0xff63, UNICODE_NOT_PRESENT_OFFSET, 14660 }, 26088 { 0xff64, UNICODE_NOT_PRESENT_OFFSET, 14596 }, 26089 { 0xff65, UNICODE_NOT_PRESENT_OFFSET, 14894 }, 26090 { 0xff66, UNICODE_NOT_PRESENT_OFFSET, 8992 }, 26091 { 0xff67, UNICODE_NOT_PRESENT_OFFSET, 14898 }, 26092 { 0xff68, UNICODE_NOT_PRESENT_OFFSET, 14902 }, 26093 { 0xff69, UNICODE_NOT_PRESENT_OFFSET, 14906 }, 26094 { 0xff6a, UNICODE_NOT_PRESENT_OFFSET, 14910 }, 26095 { 0xff6b, UNICODE_NOT_PRESENT_OFFSET, 14914 }, 26096 { 0xff6c, UNICODE_NOT_PRESENT_OFFSET, 14918 }, 26097 { 0xff6d, UNICODE_NOT_PRESENT_OFFSET, 14922 }, 26098 { 0xff6e, UNICODE_NOT_PRESENT_OFFSET, 14926 }, 26099 { 0xff6f, UNICODE_NOT_PRESENT_OFFSET, 14930 }, 26100 { 0xff70, UNICODE_NOT_PRESENT_OFFSET, 14934 }, 26101 { 0xff71, UNICODE_NOT_PRESENT_OFFSET, 8808 }, 26102 { 0xff72, UNICODE_NOT_PRESENT_OFFSET, 8812 }, 26103 { 0xff73, UNICODE_NOT_PRESENT_OFFSET, 8816 }, 26104 { 0xff74, UNICODE_NOT_PRESENT_OFFSET, 8820 }, 26105 { 0xff75, UNICODE_NOT_PRESENT_OFFSET, 8824 }, 26106 { 0xff76, UNICODE_NOT_PRESENT_OFFSET, 8828 }, 26107 { 0xff77, UNICODE_NOT_PRESENT_OFFSET, 8832 }, 26108 { 0xff78, UNICODE_NOT_PRESENT_OFFSET, 8836 }, 26109 { 0xff79, UNICODE_NOT_PRESENT_OFFSET, 8840 }, 26110 { 0xff7a, UNICODE_NOT_PRESENT_OFFSET, 8844 }, 26111 { 0xff7b, UNICODE_NOT_PRESENT_OFFSET, 8848 }, 26112 { 0xff7c, UNICODE_NOT_PRESENT_OFFSET, 8852 }, 26113 { 0xff7d, UNICODE_NOT_PRESENT_OFFSET, 8856 }, 26114 { 0xff7e, UNICODE_NOT_PRESENT_OFFSET, 8860 }, 26115 { 0xff7f, UNICODE_NOT_PRESENT_OFFSET, 8864 }, 26116 { 0xff80, UNICODE_NOT_PRESENT_OFFSET, 8868 }, 26117 { 0xff81, UNICODE_NOT_PRESENT_OFFSET, 8872 }, 26118 { 0xff82, UNICODE_NOT_PRESENT_OFFSET, 8876 }, 26119 { 0xff83, UNICODE_NOT_PRESENT_OFFSET, 8880 }, 26120 { 0xff84, UNICODE_NOT_PRESENT_OFFSET, 8884 }, 26121 { 0xff85, UNICODE_NOT_PRESENT_OFFSET, 8888 }, 26122 { 0xff86, UNICODE_NOT_PRESENT_OFFSET, 8892 }, 26123 { 0xff87, UNICODE_NOT_PRESENT_OFFSET, 8896 }, 26124 { 0xff88, UNICODE_NOT_PRESENT_OFFSET, 8900 }, 26125 { 0xff89, UNICODE_NOT_PRESENT_OFFSET, 8904 }, 26126 { 0xff8a, UNICODE_NOT_PRESENT_OFFSET, 8908 }, 26127 { 0xff8b, UNICODE_NOT_PRESENT_OFFSET, 8912 }, 26128 { 0xff8c, UNICODE_NOT_PRESENT_OFFSET, 8916 }, 26129 { 0xff8d, UNICODE_NOT_PRESENT_OFFSET, 8920 }, 26130 { 0xff8e, UNICODE_NOT_PRESENT_OFFSET, 8924 }, 26131 { 0xff8f, UNICODE_NOT_PRESENT_OFFSET, 8928 }, 26132 { 0xff90, UNICODE_NOT_PRESENT_OFFSET, 8932 }, 26133 { 0xff91, UNICODE_NOT_PRESENT_OFFSET, 8936 }, 26134 { 0xff92, UNICODE_NOT_PRESENT_OFFSET, 8940 }, 26135 { 0xff93, UNICODE_NOT_PRESENT_OFFSET, 8944 }, 26136 { 0xff94, UNICODE_NOT_PRESENT_OFFSET, 8948 }, 26137 { 0xff95, UNICODE_NOT_PRESENT_OFFSET, 8952 }, 26138 { 0xff96, UNICODE_NOT_PRESENT_OFFSET, 8956 }, 26139 { 0xff97, UNICODE_NOT_PRESENT_OFFSET, 8960 }, 26140 { 0xff98, UNICODE_NOT_PRESENT_OFFSET, 8964 }, 26141 { 0xff99, UNICODE_NOT_PRESENT_OFFSET, 8968 }, 26142 { 0xff9a, UNICODE_NOT_PRESENT_OFFSET, 8972 }, 26143 { 0xff9b, UNICODE_NOT_PRESENT_OFFSET, 8976 }, 26144 { 0xff9c, UNICODE_NOT_PRESENT_OFFSET, 8980 }, 26145 { 0xff9d, UNICODE_NOT_PRESENT_OFFSET, 14938 }, 26146 { 0xff9e, UNICODE_NOT_PRESENT_OFFSET, 14942 }, 26147 { 0xff9f, UNICODE_NOT_PRESENT_OFFSET, 14946 }, 26148 { 0xffa0, UNICODE_NOT_PRESENT_OFFSET, 7683 }, 26149 { 0xffa1, UNICODE_NOT_PRESENT_OFFSET, 7479 }, 26150 { 0xffa2, UNICODE_NOT_PRESENT_OFFSET, 7483 }, 26151 { 0xffa3, UNICODE_NOT_PRESENT_OFFSET, 7487 }, 26152 { 0xffa4, UNICODE_NOT_PRESENT_OFFSET, 7491 }, 26153 { 0xffa5, UNICODE_NOT_PRESENT_OFFSET, 7495 }, 26154 { 0xffa6, UNICODE_NOT_PRESENT_OFFSET, 7499 }, 26155 { 0xffa7, UNICODE_NOT_PRESENT_OFFSET, 7503 }, 26156 { 0xffa8, UNICODE_NOT_PRESENT_OFFSET, 7507 }, 26157 { 0xffa9, UNICODE_NOT_PRESENT_OFFSET, 7511 }, 26158 { 0xffaa, UNICODE_NOT_PRESENT_OFFSET, 7515 }, 26159 { 0xffab, UNICODE_NOT_PRESENT_OFFSET, 7519 }, 26160 { 0xffac, UNICODE_NOT_PRESENT_OFFSET, 7523 }, 26161 { 0xffad, UNICODE_NOT_PRESENT_OFFSET, 7527 }, 26162 { 0xffae, UNICODE_NOT_PRESENT_OFFSET, 7531 }, 26163 { 0xffaf, UNICODE_NOT_PRESENT_OFFSET, 7535 }, 26164 { 0xffb0, UNICODE_NOT_PRESENT_OFFSET, 7539 }, 26165 { 0xffb1, UNICODE_NOT_PRESENT_OFFSET, 7543 }, 26166 { 0xffb2, UNICODE_NOT_PRESENT_OFFSET, 7547 }, 26167 { 0xffb3, UNICODE_NOT_PRESENT_OFFSET, 7551 }, 26168 { 0xffb4, UNICODE_NOT_PRESENT_OFFSET, 7555 }, 26169 { 0xffb5, UNICODE_NOT_PRESENT_OFFSET, 7559 }, 26170 { 0xffb6, UNICODE_NOT_PRESENT_OFFSET, 7563 }, 26171 { 0xffb7, UNICODE_NOT_PRESENT_OFFSET, 7567 }, 26172 { 0xffb8, UNICODE_NOT_PRESENT_OFFSET, 7571 }, 26173 { 0xffb9, UNICODE_NOT_PRESENT_OFFSET, 7575 }, 26174 { 0xffba, UNICODE_NOT_PRESENT_OFFSET, 7579 }, 26175 { 0xffbb, UNICODE_NOT_PRESENT_OFFSET, 7583 }, 26176 { 0xffbc, UNICODE_NOT_PRESENT_OFFSET, 7587 }, 26177 { 0xffbd, UNICODE_NOT_PRESENT_OFFSET, 7591 }, 26178 { 0xffbe, UNICODE_NOT_PRESENT_OFFSET, 7595 }, 26179 { 0xffc2, UNICODE_NOT_PRESENT_OFFSET, 7599 }, 26180 { 0xffc3, UNICODE_NOT_PRESENT_OFFSET, 7603 }, 26181 { 0xffc4, UNICODE_NOT_PRESENT_OFFSET, 7607 }, 26182 { 0xffc5, UNICODE_NOT_PRESENT_OFFSET, 7611 }, 26183 { 0xffc6, UNICODE_NOT_PRESENT_OFFSET, 7615 }, 26184 { 0xffc7, UNICODE_NOT_PRESENT_OFFSET, 7619 }, 26185 { 0xffca, UNICODE_NOT_PRESENT_OFFSET, 7623 }, 26186 { 0xffcb, UNICODE_NOT_PRESENT_OFFSET, 7627 }, 26187 { 0xffcc, UNICODE_NOT_PRESENT_OFFSET, 7631 }, 26188 { 0xffcd, UNICODE_NOT_PRESENT_OFFSET, 7635 }, 26189 { 0xffce, UNICODE_NOT_PRESENT_OFFSET, 7639 }, 26190 { 0xffcf, UNICODE_NOT_PRESENT_OFFSET, 7643 }, 26191 { 0xffd2, UNICODE_NOT_PRESENT_OFFSET, 7647 }, 26192 { 0xffd3, UNICODE_NOT_PRESENT_OFFSET, 7651 }, 26193 { 0xffd4, UNICODE_NOT_PRESENT_OFFSET, 7655 }, 26194 { 0xffd5, UNICODE_NOT_PRESENT_OFFSET, 7659 }, 26195 { 0xffd6, UNICODE_NOT_PRESENT_OFFSET, 7663 }, 26196 { 0xffd7, UNICODE_NOT_PRESENT_OFFSET, 7667 }, 26197 { 0xffda, UNICODE_NOT_PRESENT_OFFSET, 7671 }, 26198 { 0xffdb, UNICODE_NOT_PRESENT_OFFSET, 7675 }, 26199 { 0xffdc, UNICODE_NOT_PRESENT_OFFSET, 7679 }, 26200 { 0xffe0, UNICODE_NOT_PRESENT_OFFSET, 14950 }, 26201 { 0xffe1, UNICODE_NOT_PRESENT_OFFSET, 14953 }, 26202 { 0xffe2, UNICODE_NOT_PRESENT_OFFSET, 14956 }, 26203 { 0xffe3, UNICODE_NOT_PRESENT_OFFSET, 8 }, 26204 { 0xffe4, UNICODE_NOT_PRESENT_OFFSET, 14959 }, 26205 { 0xffe5, UNICODE_NOT_PRESENT_OFFSET, 14962 }, 26206 { 0xffe6, UNICODE_NOT_PRESENT_OFFSET, 14965 }, 26207 { 0xffe8, UNICODE_NOT_PRESENT_OFFSET, 14969 }, 26208 { 0xffe9, UNICODE_NOT_PRESENT_OFFSET, 14973 }, 26209 { 0xffea, UNICODE_NOT_PRESENT_OFFSET, 14977 }, 26210 { 0xffeb, UNICODE_NOT_PRESENT_OFFSET, 14981 }, 26211 { 0xffec, UNICODE_NOT_PRESENT_OFFSET, 14985 }, 26212 { 0xffed, UNICODE_NOT_PRESENT_OFFSET, 14989 }, 26213 { 0xffee, UNICODE_NOT_PRESENT_OFFSET, 14993 }, 26214 { 0x1109a, 14997, UNICODE_NOT_PRESENT_OFFSET }, 26215 { 0x1109c, 15006, UNICODE_NOT_PRESENT_OFFSET }, 26216 { 0x110ab, 15015, UNICODE_NOT_PRESENT_OFFSET }, 26217 { 0x1112e, 15024, UNICODE_NOT_PRESENT_OFFSET }, 26218 { 0x1112f, 15033, UNICODE_NOT_PRESENT_OFFSET }, 26219 { 0x1134b, 15042, UNICODE_NOT_PRESENT_OFFSET }, 26220 { 0x1134c, 15051, UNICODE_NOT_PRESENT_OFFSET }, 26221 { 0x114bb, 15060, UNICODE_NOT_PRESENT_OFFSET }, 26222 { 0x114bc, 15069, UNICODE_NOT_PRESENT_OFFSET }, 26223 { 0x114be, 15078, UNICODE_NOT_PRESENT_OFFSET }, 26224 { 0x115ba, 15087, UNICODE_NOT_PRESENT_OFFSET }, 26225 { 0x115bb, 15096, UNICODE_NOT_PRESENT_OFFSET }, 26226 { 0x1d15e, 15105, UNICODE_NOT_PRESENT_OFFSET }, 26227 { 0x1d15f, 15114, UNICODE_NOT_PRESENT_OFFSET }, 26228 { 0x1d160, 15123, UNICODE_NOT_PRESENT_OFFSET }, 26229 { 0x1d161, 15136, UNICODE_NOT_PRESENT_OFFSET }, 26230 { 0x1d162, 15149, UNICODE_NOT_PRESENT_OFFSET }, 26231 { 0x1d163, 15162, UNICODE_NOT_PRESENT_OFFSET }, 26232 { 0x1d164, 15175, UNICODE_NOT_PRESENT_OFFSET }, 26233 { 0x1d1bb, 15188, UNICODE_NOT_PRESENT_OFFSET }, 26234 { 0x1d1bc, 15197, UNICODE_NOT_PRESENT_OFFSET }, 26235 { 0x1d1bd, 15206, UNICODE_NOT_PRESENT_OFFSET }, 26236 { 0x1d1be, 15219, UNICODE_NOT_PRESENT_OFFSET }, 26237 { 0x1d1bf, 15232, UNICODE_NOT_PRESENT_OFFSET }, 26238 { 0x1d1c0, 15245, UNICODE_NOT_PRESENT_OFFSET }, 26239 { 0x1d400, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 26240 { 0x1d401, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 26241 { 0x1d402, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 26242 { 0x1d403, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 26243 { 0x1d404, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 26244 { 0x1d405, UNICODE_NOT_PRESENT_OFFSET, 5336 }, 26245 { 0x1d406, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 26246 { 0x1d407, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 26247 { 0x1d408, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 26248 { 0x1d409, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 26249 { 0x1d40a, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 26250 { 0x1d40b, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 26251 { 0x1d40c, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 26252 { 0x1d40d, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 26253 { 0x1d40e, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 26254 { 0x1d40f, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 26255 { 0x1d410, UNICODE_NOT_PRESENT_OFFSET, 5319 }, 26256 { 0x1d411, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 26257 { 0x1d412, UNICODE_NOT_PRESENT_OFFSET, 6133 }, 26258 { 0x1d413, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 26259 { 0x1d414, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 26260 { 0x1d415, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 26261 { 0x1d416, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 26262 { 0x1d417, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 26263 { 0x1d418, UNICODE_NOT_PRESENT_OFFSET, 6135 }, 26264 { 0x1d419, UNICODE_NOT_PRESENT_OFFSET, 5331 }, 26265 { 0x1d41a, UNICODE_NOT_PRESENT_OFFSET, 6 }, 26266 { 0x1d41b, UNICODE_NOT_PRESENT_OFFSET, 2364 }, 26267 { 0x1d41c, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 26268 { 0x1d41d, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 26269 { 0x1d41e, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 26270 { 0x1d41f, UNICODE_NOT_PRESENT_OFFSET, 2443 }, 26271 { 0x1d420, UNICODE_NOT_PRESENT_OFFSET, 2379 }, 26272 { 0x1d421, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 26273 { 0x1d422, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 26274 { 0x1d423, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 26275 { 0x1d424, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 26276 { 0x1d425, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 26277 { 0x1d426, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 26278 { 0x1d427, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 26279 { 0x1d428, UNICODE_NOT_PRESENT_OFFSET, 29 }, 26280 { 0x1d429, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 26281 { 0x1d42a, UNICODE_NOT_PRESENT_OFFSET, 6137 }, 26282 { 0x1d42b, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 26283 { 0x1d42c, UNICODE_NOT_PRESENT_OFFSET, 711 }, 26284 { 0x1d42d, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 26285 { 0x1d42e, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 26286 { 0x1d42f, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 26287 { 0x1d430, UNICODE_NOT_PRESENT_OFFSET, 1189 }, 26288 { 0x1d431, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 26289 { 0x1d432, UNICODE_NOT_PRESENT_OFFSET, 1191 }, 26290 { 0x1d433, UNICODE_NOT_PRESENT_OFFSET, 2526 }, 26291 { 0x1d434, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 26292 { 0x1d435, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 26293 { 0x1d436, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 26294 { 0x1d437, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 26295 { 0x1d438, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 26296 { 0x1d439, UNICODE_NOT_PRESENT_OFFSET, 5336 }, 26297 { 0x1d43a, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 26298 { 0x1d43b, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 26299 { 0x1d43c, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 26300 { 0x1d43d, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 26301 { 0x1d43e, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 26302 { 0x1d43f, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 26303 { 0x1d440, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 26304 { 0x1d441, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 26305 { 0x1d442, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 26306 { 0x1d443, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 26307 { 0x1d444, UNICODE_NOT_PRESENT_OFFSET, 5319 }, 26308 { 0x1d445, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 26309 { 0x1d446, UNICODE_NOT_PRESENT_OFFSET, 6133 }, 26310 { 0x1d447, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 26311 { 0x1d448, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 26312 { 0x1d449, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 26313 { 0x1d44a, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 26314 { 0x1d44b, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 26315 { 0x1d44c, UNICODE_NOT_PRESENT_OFFSET, 6135 }, 26316 { 0x1d44d, UNICODE_NOT_PRESENT_OFFSET, 5331 }, 26317 { 0x1d44e, UNICODE_NOT_PRESENT_OFFSET, 6 }, 26318 { 0x1d44f, UNICODE_NOT_PRESENT_OFFSET, 2364 }, 26319 { 0x1d450, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 26320 { 0x1d451, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 26321 { 0x1d452, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 26322 { 0x1d453, UNICODE_NOT_PRESENT_OFFSET, 2443 }, 26323 { 0x1d454, UNICODE_NOT_PRESENT_OFFSET, 2379 }, 26324 { 0x1d456, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 26325 { 0x1d457, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 26326 { 0x1d458, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 26327 { 0x1d459, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 26328 { 0x1d45a, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 26329 { 0x1d45b, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 26330 { 0x1d45c, UNICODE_NOT_PRESENT_OFFSET, 29 }, 26331 { 0x1d45d, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 26332 { 0x1d45e, UNICODE_NOT_PRESENT_OFFSET, 6137 }, 26333 { 0x1d45f, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 26334 { 0x1d460, UNICODE_NOT_PRESENT_OFFSET, 711 }, 26335 { 0x1d461, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 26336 { 0x1d462, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 26337 { 0x1d463, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 26338 { 0x1d464, UNICODE_NOT_PRESENT_OFFSET, 1189 }, 26339 { 0x1d465, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 26340 { 0x1d466, UNICODE_NOT_PRESENT_OFFSET, 1191 }, 26341 { 0x1d467, UNICODE_NOT_PRESENT_OFFSET, 2526 }, 26342 { 0x1d468, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 26343 { 0x1d469, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 26344 { 0x1d46a, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 26345 { 0x1d46b, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 26346 { 0x1d46c, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 26347 { 0x1d46d, UNICODE_NOT_PRESENT_OFFSET, 5336 }, 26348 { 0x1d46e, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 26349 { 0x1d46f, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 26350 { 0x1d470, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 26351 { 0x1d471, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 26352 { 0x1d472, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 26353 { 0x1d473, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 26354 { 0x1d474, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 26355 { 0x1d475, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 26356 { 0x1d476, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 26357 { 0x1d477, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 26358 { 0x1d478, UNICODE_NOT_PRESENT_OFFSET, 5319 }, 26359 { 0x1d479, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 26360 { 0x1d47a, UNICODE_NOT_PRESENT_OFFSET, 6133 }, 26361 { 0x1d47b, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 26362 { 0x1d47c, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 26363 { 0x1d47d, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 26364 { 0x1d47e, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 26365 { 0x1d47f, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 26366 { 0x1d480, UNICODE_NOT_PRESENT_OFFSET, 6135 }, 26367 { 0x1d481, UNICODE_NOT_PRESENT_OFFSET, 5331 }, 26368 { 0x1d482, UNICODE_NOT_PRESENT_OFFSET, 6 }, 26369 { 0x1d483, UNICODE_NOT_PRESENT_OFFSET, 2364 }, 26370 { 0x1d484, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 26371 { 0x1d485, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 26372 { 0x1d486, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 26373 { 0x1d487, UNICODE_NOT_PRESENT_OFFSET, 2443 }, 26374 { 0x1d488, UNICODE_NOT_PRESENT_OFFSET, 2379 }, 26375 { 0x1d489, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 26376 { 0x1d48a, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 26377 { 0x1d48b, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 26378 { 0x1d48c, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 26379 { 0x1d48d, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 26380 { 0x1d48e, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 26381 { 0x1d48f, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 26382 { 0x1d490, UNICODE_NOT_PRESENT_OFFSET, 29 }, 26383 { 0x1d491, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 26384 { 0x1d492, UNICODE_NOT_PRESENT_OFFSET, 6137 }, 26385 { 0x1d493, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 26386 { 0x1d494, UNICODE_NOT_PRESENT_OFFSET, 711 }, 26387 { 0x1d495, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 26388 { 0x1d496, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 26389 { 0x1d497, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 26390 { 0x1d498, UNICODE_NOT_PRESENT_OFFSET, 1189 }, 26391 { 0x1d499, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 26392 { 0x1d49a, UNICODE_NOT_PRESENT_OFFSET, 1191 }, 26393 { 0x1d49b, UNICODE_NOT_PRESENT_OFFSET, 2526 }, 26394 { 0x1d49c, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 26395 { 0x1d49e, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 26396 { 0x1d49f, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 26397 { 0x1d4a2, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 26398 { 0x1d4a5, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 26399 { 0x1d4a6, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 26400 { 0x1d4a9, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 26401 { 0x1d4aa, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 26402 { 0x1d4ab, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 26403 { 0x1d4ac, UNICODE_NOT_PRESENT_OFFSET, 5319 }, 26404 { 0x1d4ae, UNICODE_NOT_PRESENT_OFFSET, 6133 }, 26405 { 0x1d4af, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 26406 { 0x1d4b0, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 26407 { 0x1d4b1, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 26408 { 0x1d4b2, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 26409 { 0x1d4b3, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 26410 { 0x1d4b4, UNICODE_NOT_PRESENT_OFFSET, 6135 }, 26411 { 0x1d4b5, UNICODE_NOT_PRESENT_OFFSET, 5331 }, 26412 { 0x1d4b6, UNICODE_NOT_PRESENT_OFFSET, 6 }, 26413 { 0x1d4b7, UNICODE_NOT_PRESENT_OFFSET, 2364 }, 26414 { 0x1d4b8, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 26415 { 0x1d4b9, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 26416 { 0x1d4bb, UNICODE_NOT_PRESENT_OFFSET, 2443 }, 26417 { 0x1d4bd, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 26418 { 0x1d4be, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 26419 { 0x1d4bf, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 26420 { 0x1d4c0, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 26421 { 0x1d4c1, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 26422 { 0x1d4c2, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 26423 { 0x1d4c3, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 26424 { 0x1d4c5, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 26425 { 0x1d4c6, UNICODE_NOT_PRESENT_OFFSET, 6137 }, 26426 { 0x1d4c7, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 26427 { 0x1d4c8, UNICODE_NOT_PRESENT_OFFSET, 711 }, 26428 { 0x1d4c9, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 26429 { 0x1d4ca, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 26430 { 0x1d4cb, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 26431 { 0x1d4cc, UNICODE_NOT_PRESENT_OFFSET, 1189 }, 26432 { 0x1d4cd, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 26433 { 0x1d4ce, UNICODE_NOT_PRESENT_OFFSET, 1191 }, 26434 { 0x1d4cf, UNICODE_NOT_PRESENT_OFFSET, 2526 }, 26435 { 0x1d4d0, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 26436 { 0x1d4d1, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 26437 { 0x1d4d2, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 26438 { 0x1d4d3, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 26439 { 0x1d4d4, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 26440 { 0x1d4d5, UNICODE_NOT_PRESENT_OFFSET, 5336 }, 26441 { 0x1d4d6, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 26442 { 0x1d4d7, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 26443 { 0x1d4d8, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 26444 { 0x1d4d9, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 26445 { 0x1d4da, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 26446 { 0x1d4db, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 26447 { 0x1d4dc, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 26448 { 0x1d4dd, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 26449 { 0x1d4de, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 26450 { 0x1d4df, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 26451 { 0x1d4e0, UNICODE_NOT_PRESENT_OFFSET, 5319 }, 26452 { 0x1d4e1, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 26453 { 0x1d4e2, UNICODE_NOT_PRESENT_OFFSET, 6133 }, 26454 { 0x1d4e3, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 26455 { 0x1d4e4, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 26456 { 0x1d4e5, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 26457 { 0x1d4e6, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 26458 { 0x1d4e7, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 26459 { 0x1d4e8, UNICODE_NOT_PRESENT_OFFSET, 6135 }, 26460 { 0x1d4e9, UNICODE_NOT_PRESENT_OFFSET, 5331 }, 26461 { 0x1d4ea, UNICODE_NOT_PRESENT_OFFSET, 6 }, 26462 { 0x1d4eb, UNICODE_NOT_PRESENT_OFFSET, 2364 }, 26463 { 0x1d4ec, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 26464 { 0x1d4ed, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 26465 { 0x1d4ee, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 26466 { 0x1d4ef, UNICODE_NOT_PRESENT_OFFSET, 2443 }, 26467 { 0x1d4f0, UNICODE_NOT_PRESENT_OFFSET, 2379 }, 26468 { 0x1d4f1, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 26469 { 0x1d4f2, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 26470 { 0x1d4f3, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 26471 { 0x1d4f4, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 26472 { 0x1d4f5, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 26473 { 0x1d4f6, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 26474 { 0x1d4f7, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 26475 { 0x1d4f8, UNICODE_NOT_PRESENT_OFFSET, 29 }, 26476 { 0x1d4f9, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 26477 { 0x1d4fa, UNICODE_NOT_PRESENT_OFFSET, 6137 }, 26478 { 0x1d4fb, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 26479 { 0x1d4fc, UNICODE_NOT_PRESENT_OFFSET, 711 }, 26480 { 0x1d4fd, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 26481 { 0x1d4fe, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 26482 { 0x1d4ff, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 26483 { 0x1d500, UNICODE_NOT_PRESENT_OFFSET, 1189 }, 26484 { 0x1d501, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 26485 { 0x1d502, UNICODE_NOT_PRESENT_OFFSET, 1191 }, 26486 { 0x1d503, UNICODE_NOT_PRESENT_OFFSET, 2526 }, 26487 { 0x1d504, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 26488 { 0x1d505, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 26489 { 0x1d507, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 26490 { 0x1d508, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 26491 { 0x1d509, UNICODE_NOT_PRESENT_OFFSET, 5336 }, 26492 { 0x1d50a, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 26493 { 0x1d50d, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 26494 { 0x1d50e, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 26495 { 0x1d50f, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 26496 { 0x1d510, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 26497 { 0x1d511, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 26498 { 0x1d512, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 26499 { 0x1d513, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 26500 { 0x1d514, UNICODE_NOT_PRESENT_OFFSET, 5319 }, 26501 { 0x1d516, UNICODE_NOT_PRESENT_OFFSET, 6133 }, 26502 { 0x1d517, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 26503 { 0x1d518, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 26504 { 0x1d519, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 26505 { 0x1d51a, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 26506 { 0x1d51b, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 26507 { 0x1d51c, UNICODE_NOT_PRESENT_OFFSET, 6135 }, 26508 { 0x1d51e, UNICODE_NOT_PRESENT_OFFSET, 6 }, 26509 { 0x1d51f, UNICODE_NOT_PRESENT_OFFSET, 2364 }, 26510 { 0x1d520, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 26511 { 0x1d521, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 26512 { 0x1d522, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 26513 { 0x1d523, UNICODE_NOT_PRESENT_OFFSET, 2443 }, 26514 { 0x1d524, UNICODE_NOT_PRESENT_OFFSET, 2379 }, 26515 { 0x1d525, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 26516 { 0x1d526, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 26517 { 0x1d527, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 26518 { 0x1d528, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 26519 { 0x1d529, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 26520 { 0x1d52a, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 26521 { 0x1d52b, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 26522 { 0x1d52c, UNICODE_NOT_PRESENT_OFFSET, 29 }, 26523 { 0x1d52d, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 26524 { 0x1d52e, UNICODE_NOT_PRESENT_OFFSET, 6137 }, 26525 { 0x1d52f, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 26526 { 0x1d530, UNICODE_NOT_PRESENT_OFFSET, 711 }, 26527 { 0x1d531, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 26528 { 0x1d532, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 26529 { 0x1d533, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 26530 { 0x1d534, UNICODE_NOT_PRESENT_OFFSET, 1189 }, 26531 { 0x1d535, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 26532 { 0x1d536, UNICODE_NOT_PRESENT_OFFSET, 1191 }, 26533 { 0x1d537, UNICODE_NOT_PRESENT_OFFSET, 2526 }, 26534 { 0x1d538, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 26535 { 0x1d539, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 26536 { 0x1d53b, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 26537 { 0x1d53c, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 26538 { 0x1d53d, UNICODE_NOT_PRESENT_OFFSET, 5336 }, 26539 { 0x1d53e, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 26540 { 0x1d540, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 26541 { 0x1d541, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 26542 { 0x1d542, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 26543 { 0x1d543, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 26544 { 0x1d544, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 26545 { 0x1d546, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 26546 { 0x1d54a, UNICODE_NOT_PRESENT_OFFSET, 6133 }, 26547 { 0x1d54b, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 26548 { 0x1d54c, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 26549 { 0x1d54d, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 26550 { 0x1d54e, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 26551 { 0x1d54f, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 26552 { 0x1d550, UNICODE_NOT_PRESENT_OFFSET, 6135 }, 26553 { 0x1d552, UNICODE_NOT_PRESENT_OFFSET, 6 }, 26554 { 0x1d553, UNICODE_NOT_PRESENT_OFFSET, 2364 }, 26555 { 0x1d554, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 26556 { 0x1d555, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 26557 { 0x1d556, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 26558 { 0x1d557, UNICODE_NOT_PRESENT_OFFSET, 2443 }, 26559 { 0x1d558, UNICODE_NOT_PRESENT_OFFSET, 2379 }, 26560 { 0x1d559, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 26561 { 0x1d55a, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 26562 { 0x1d55b, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 26563 { 0x1d55c, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 26564 { 0x1d55d, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 26565 { 0x1d55e, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 26566 { 0x1d55f, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 26567 { 0x1d560, UNICODE_NOT_PRESENT_OFFSET, 29 }, 26568 { 0x1d561, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 26569 { 0x1d562, UNICODE_NOT_PRESENT_OFFSET, 6137 }, 26570 { 0x1d563, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 26571 { 0x1d564, UNICODE_NOT_PRESENT_OFFSET, 711 }, 26572 { 0x1d565, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 26573 { 0x1d566, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 26574 { 0x1d567, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 26575 { 0x1d568, UNICODE_NOT_PRESENT_OFFSET, 1189 }, 26576 { 0x1d569, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 26577 { 0x1d56a, UNICODE_NOT_PRESENT_OFFSET, 1191 }, 26578 { 0x1d56b, UNICODE_NOT_PRESENT_OFFSET, 2526 }, 26579 { 0x1d56c, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 26580 { 0x1d56d, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 26581 { 0x1d56e, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 26582 { 0x1d56f, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 26583 { 0x1d570, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 26584 { 0x1d571, UNICODE_NOT_PRESENT_OFFSET, 5336 }, 26585 { 0x1d572, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 26586 { 0x1d573, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 26587 { 0x1d574, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 26588 { 0x1d575, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 26589 { 0x1d576, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 26590 { 0x1d577, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 26591 { 0x1d578, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 26592 { 0x1d579, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 26593 { 0x1d57a, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 26594 { 0x1d57b, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 26595 { 0x1d57c, UNICODE_NOT_PRESENT_OFFSET, 5319 }, 26596 { 0x1d57d, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 26597 { 0x1d57e, UNICODE_NOT_PRESENT_OFFSET, 6133 }, 26598 { 0x1d57f, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 26599 { 0x1d580, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 26600 { 0x1d581, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 26601 { 0x1d582, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 26602 { 0x1d583, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 26603 { 0x1d584, UNICODE_NOT_PRESENT_OFFSET, 6135 }, 26604 { 0x1d585, UNICODE_NOT_PRESENT_OFFSET, 5331 }, 26605 { 0x1d586, UNICODE_NOT_PRESENT_OFFSET, 6 }, 26606 { 0x1d587, UNICODE_NOT_PRESENT_OFFSET, 2364 }, 26607 { 0x1d588, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 26608 { 0x1d589, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 26609 { 0x1d58a, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 26610 { 0x1d58b, UNICODE_NOT_PRESENT_OFFSET, 2443 }, 26611 { 0x1d58c, UNICODE_NOT_PRESENT_OFFSET, 2379 }, 26612 { 0x1d58d, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 26613 { 0x1d58e, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 26614 { 0x1d58f, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 26615 { 0x1d590, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 26616 { 0x1d591, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 26617 { 0x1d592, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 26618 { 0x1d593, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 26619 { 0x1d594, UNICODE_NOT_PRESENT_OFFSET, 29 }, 26620 { 0x1d595, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 26621 { 0x1d596, UNICODE_NOT_PRESENT_OFFSET, 6137 }, 26622 { 0x1d597, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 26623 { 0x1d598, UNICODE_NOT_PRESENT_OFFSET, 711 }, 26624 { 0x1d599, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 26625 { 0x1d59a, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 26626 { 0x1d59b, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 26627 { 0x1d59c, UNICODE_NOT_PRESENT_OFFSET, 1189 }, 26628 { 0x1d59d, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 26629 { 0x1d59e, UNICODE_NOT_PRESENT_OFFSET, 1191 }, 26630 { 0x1d59f, UNICODE_NOT_PRESENT_OFFSET, 2526 }, 26631 { 0x1d5a0, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 26632 { 0x1d5a1, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 26633 { 0x1d5a2, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 26634 { 0x1d5a3, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 26635 { 0x1d5a4, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 26636 { 0x1d5a5, UNICODE_NOT_PRESENT_OFFSET, 5336 }, 26637 { 0x1d5a6, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 26638 { 0x1d5a7, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 26639 { 0x1d5a8, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 26640 { 0x1d5a9, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 26641 { 0x1d5aa, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 26642 { 0x1d5ab, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 26643 { 0x1d5ac, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 26644 { 0x1d5ad, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 26645 { 0x1d5ae, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 26646 { 0x1d5af, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 26647 { 0x1d5b0, UNICODE_NOT_PRESENT_OFFSET, 5319 }, 26648 { 0x1d5b1, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 26649 { 0x1d5b2, UNICODE_NOT_PRESENT_OFFSET, 6133 }, 26650 { 0x1d5b3, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 26651 { 0x1d5b4, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 26652 { 0x1d5b5, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 26653 { 0x1d5b6, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 26654 { 0x1d5b7, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 26655 { 0x1d5b8, UNICODE_NOT_PRESENT_OFFSET, 6135 }, 26656 { 0x1d5b9, UNICODE_NOT_PRESENT_OFFSET, 5331 }, 26657 { 0x1d5ba, UNICODE_NOT_PRESENT_OFFSET, 6 }, 26658 { 0x1d5bb, UNICODE_NOT_PRESENT_OFFSET, 2364 }, 26659 { 0x1d5bc, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 26660 { 0x1d5bd, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 26661 { 0x1d5be, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 26662 { 0x1d5bf, UNICODE_NOT_PRESENT_OFFSET, 2443 }, 26663 { 0x1d5c0, UNICODE_NOT_PRESENT_OFFSET, 2379 }, 26664 { 0x1d5c1, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 26665 { 0x1d5c2, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 26666 { 0x1d5c3, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 26667 { 0x1d5c4, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 26668 { 0x1d5c5, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 26669 { 0x1d5c6, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 26670 { 0x1d5c7, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 26671 { 0x1d5c8, UNICODE_NOT_PRESENT_OFFSET, 29 }, 26672 { 0x1d5c9, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 26673 { 0x1d5ca, UNICODE_NOT_PRESENT_OFFSET, 6137 }, 26674 { 0x1d5cb, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 26675 { 0x1d5cc, UNICODE_NOT_PRESENT_OFFSET, 711 }, 26676 { 0x1d5cd, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 26677 { 0x1d5ce, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 26678 { 0x1d5cf, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 26679 { 0x1d5d0, UNICODE_NOT_PRESENT_OFFSET, 1189 }, 26680 { 0x1d5d1, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 26681 { 0x1d5d2, UNICODE_NOT_PRESENT_OFFSET, 1191 }, 26682 { 0x1d5d3, UNICODE_NOT_PRESENT_OFFSET, 2526 }, 26683 { 0x1d5d4, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 26684 { 0x1d5d5, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 26685 { 0x1d5d6, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 26686 { 0x1d5d7, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 26687 { 0x1d5d8, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 26688 { 0x1d5d9, UNICODE_NOT_PRESENT_OFFSET, 5336 }, 26689 { 0x1d5da, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 26690 { 0x1d5db, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 26691 { 0x1d5dc, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 26692 { 0x1d5dd, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 26693 { 0x1d5de, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 26694 { 0x1d5df, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 26695 { 0x1d5e0, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 26696 { 0x1d5e1, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 26697 { 0x1d5e2, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 26698 { 0x1d5e3, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 26699 { 0x1d5e4, UNICODE_NOT_PRESENT_OFFSET, 5319 }, 26700 { 0x1d5e5, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 26701 { 0x1d5e6, UNICODE_NOT_PRESENT_OFFSET, 6133 }, 26702 { 0x1d5e7, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 26703 { 0x1d5e8, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 26704 { 0x1d5e9, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 26705 { 0x1d5ea, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 26706 { 0x1d5eb, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 26707 { 0x1d5ec, UNICODE_NOT_PRESENT_OFFSET, 6135 }, 26708 { 0x1d5ed, UNICODE_NOT_PRESENT_OFFSET, 5331 }, 26709 { 0x1d5ee, UNICODE_NOT_PRESENT_OFFSET, 6 }, 26710 { 0x1d5ef, UNICODE_NOT_PRESENT_OFFSET, 2364 }, 26711 { 0x1d5f0, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 26712 { 0x1d5f1, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 26713 { 0x1d5f2, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 26714 { 0x1d5f3, UNICODE_NOT_PRESENT_OFFSET, 2443 }, 26715 { 0x1d5f4, UNICODE_NOT_PRESENT_OFFSET, 2379 }, 26716 { 0x1d5f5, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 26717 { 0x1d5f6, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 26718 { 0x1d5f7, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 26719 { 0x1d5f8, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 26720 { 0x1d5f9, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 26721 { 0x1d5fa, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 26722 { 0x1d5fb, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 26723 { 0x1d5fc, UNICODE_NOT_PRESENT_OFFSET, 29 }, 26724 { 0x1d5fd, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 26725 { 0x1d5fe, UNICODE_NOT_PRESENT_OFFSET, 6137 }, 26726 { 0x1d5ff, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 26727 { 0x1d600, UNICODE_NOT_PRESENT_OFFSET, 711 }, 26728 { 0x1d601, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 26729 { 0x1d602, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 26730 { 0x1d603, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 26731 { 0x1d604, UNICODE_NOT_PRESENT_OFFSET, 1189 }, 26732 { 0x1d605, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 26733 { 0x1d606, UNICODE_NOT_PRESENT_OFFSET, 1191 }, 26734 { 0x1d607, UNICODE_NOT_PRESENT_OFFSET, 2526 }, 26735 { 0x1d608, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 26736 { 0x1d609, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 26737 { 0x1d60a, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 26738 { 0x1d60b, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 26739 { 0x1d60c, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 26740 { 0x1d60d, UNICODE_NOT_PRESENT_OFFSET, 5336 }, 26741 { 0x1d60e, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 26742 { 0x1d60f, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 26743 { 0x1d610, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 26744 { 0x1d611, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 26745 { 0x1d612, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 26746 { 0x1d613, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 26747 { 0x1d614, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 26748 { 0x1d615, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 26749 { 0x1d616, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 26750 { 0x1d617, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 26751 { 0x1d618, UNICODE_NOT_PRESENT_OFFSET, 5319 }, 26752 { 0x1d619, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 26753 { 0x1d61a, UNICODE_NOT_PRESENT_OFFSET, 6133 }, 26754 { 0x1d61b, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 26755 { 0x1d61c, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 26756 { 0x1d61d, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 26757 { 0x1d61e, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 26758 { 0x1d61f, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 26759 { 0x1d620, UNICODE_NOT_PRESENT_OFFSET, 6135 }, 26760 { 0x1d621, UNICODE_NOT_PRESENT_OFFSET, 5331 }, 26761 { 0x1d622, UNICODE_NOT_PRESENT_OFFSET, 6 }, 26762 { 0x1d623, UNICODE_NOT_PRESENT_OFFSET, 2364 }, 26763 { 0x1d624, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 26764 { 0x1d625, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 26765 { 0x1d626, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 26766 { 0x1d627, UNICODE_NOT_PRESENT_OFFSET, 2443 }, 26767 { 0x1d628, UNICODE_NOT_PRESENT_OFFSET, 2379 }, 26768 { 0x1d629, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 26769 { 0x1d62a, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 26770 { 0x1d62b, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 26771 { 0x1d62c, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 26772 { 0x1d62d, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 26773 { 0x1d62e, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 26774 { 0x1d62f, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 26775 { 0x1d630, UNICODE_NOT_PRESENT_OFFSET, 29 }, 26776 { 0x1d631, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 26777 { 0x1d632, UNICODE_NOT_PRESENT_OFFSET, 6137 }, 26778 { 0x1d633, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 26779 { 0x1d634, UNICODE_NOT_PRESENT_OFFSET, 711 }, 26780 { 0x1d635, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 26781 { 0x1d636, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 26782 { 0x1d637, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 26783 { 0x1d638, UNICODE_NOT_PRESENT_OFFSET, 1189 }, 26784 { 0x1d639, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 26785 { 0x1d63a, UNICODE_NOT_PRESENT_OFFSET, 1191 }, 26786 { 0x1d63b, UNICODE_NOT_PRESENT_OFFSET, 2526 }, 26787 { 0x1d63c, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 26788 { 0x1d63d, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 26789 { 0x1d63e, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 26790 { 0x1d63f, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 26791 { 0x1d640, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 26792 { 0x1d641, UNICODE_NOT_PRESENT_OFFSET, 5336 }, 26793 { 0x1d642, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 26794 { 0x1d643, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 26795 { 0x1d644, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 26796 { 0x1d645, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 26797 { 0x1d646, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 26798 { 0x1d647, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 26799 { 0x1d648, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 26800 { 0x1d649, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 26801 { 0x1d64a, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 26802 { 0x1d64b, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 26803 { 0x1d64c, UNICODE_NOT_PRESENT_OFFSET, 5319 }, 26804 { 0x1d64d, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 26805 { 0x1d64e, UNICODE_NOT_PRESENT_OFFSET, 6133 }, 26806 { 0x1d64f, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 26807 { 0x1d650, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 26808 { 0x1d651, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 26809 { 0x1d652, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 26810 { 0x1d653, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 26811 { 0x1d654, UNICODE_NOT_PRESENT_OFFSET, 6135 }, 26812 { 0x1d655, UNICODE_NOT_PRESENT_OFFSET, 5331 }, 26813 { 0x1d656, UNICODE_NOT_PRESENT_OFFSET, 6 }, 26814 { 0x1d657, UNICODE_NOT_PRESENT_OFFSET, 2364 }, 26815 { 0x1d658, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 26816 { 0x1d659, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 26817 { 0x1d65a, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 26818 { 0x1d65b, UNICODE_NOT_PRESENT_OFFSET, 2443 }, 26819 { 0x1d65c, UNICODE_NOT_PRESENT_OFFSET, 2379 }, 26820 { 0x1d65d, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 26821 { 0x1d65e, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 26822 { 0x1d65f, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 26823 { 0x1d660, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 26824 { 0x1d661, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 26825 { 0x1d662, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 26826 { 0x1d663, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 26827 { 0x1d664, UNICODE_NOT_PRESENT_OFFSET, 29 }, 26828 { 0x1d665, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 26829 { 0x1d666, UNICODE_NOT_PRESENT_OFFSET, 6137 }, 26830 { 0x1d667, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 26831 { 0x1d668, UNICODE_NOT_PRESENT_OFFSET, 711 }, 26832 { 0x1d669, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 26833 { 0x1d66a, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 26834 { 0x1d66b, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 26835 { 0x1d66c, UNICODE_NOT_PRESENT_OFFSET, 1189 }, 26836 { 0x1d66d, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 26837 { 0x1d66e, UNICODE_NOT_PRESENT_OFFSET, 1191 }, 26838 { 0x1d66f, UNICODE_NOT_PRESENT_OFFSET, 2526 }, 26839 { 0x1d670, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 26840 { 0x1d671, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 26841 { 0x1d672, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 26842 { 0x1d673, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 26843 { 0x1d674, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 26844 { 0x1d675, UNICODE_NOT_PRESENT_OFFSET, 5336 }, 26845 { 0x1d676, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 26846 { 0x1d677, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 26847 { 0x1d678, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 26848 { 0x1d679, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 26849 { 0x1d67a, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 26850 { 0x1d67b, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 26851 { 0x1d67c, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 26852 { 0x1d67d, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 26853 { 0x1d67e, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 26854 { 0x1d67f, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 26855 { 0x1d680, UNICODE_NOT_PRESENT_OFFSET, 5319 }, 26856 { 0x1d681, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 26857 { 0x1d682, UNICODE_NOT_PRESENT_OFFSET, 6133 }, 26858 { 0x1d683, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 26859 { 0x1d684, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 26860 { 0x1d685, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 26861 { 0x1d686, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 26862 { 0x1d687, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 26863 { 0x1d688, UNICODE_NOT_PRESENT_OFFSET, 6135 }, 26864 { 0x1d689, UNICODE_NOT_PRESENT_OFFSET, 5331 }, 26865 { 0x1d68a, UNICODE_NOT_PRESENT_OFFSET, 6 }, 26866 { 0x1d68b, UNICODE_NOT_PRESENT_OFFSET, 2364 }, 26867 { 0x1d68c, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 26868 { 0x1d68d, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 26869 { 0x1d68e, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 26870 { 0x1d68f, UNICODE_NOT_PRESENT_OFFSET, 2443 }, 26871 { 0x1d690, UNICODE_NOT_PRESENT_OFFSET, 2379 }, 26872 { 0x1d691, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 26873 { 0x1d692, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 26874 { 0x1d693, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 26875 { 0x1d694, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 26876 { 0x1d695, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 26877 { 0x1d696, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 26878 { 0x1d697, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 26879 { 0x1d698, UNICODE_NOT_PRESENT_OFFSET, 29 }, 26880 { 0x1d699, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 26881 { 0x1d69a, UNICODE_NOT_PRESENT_OFFSET, 6137 }, 26882 { 0x1d69b, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 26883 { 0x1d69c, UNICODE_NOT_PRESENT_OFFSET, 711 }, 26884 { 0x1d69d, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 26885 { 0x1d69e, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 26886 { 0x1d69f, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 26887 { 0x1d6a0, UNICODE_NOT_PRESENT_OFFSET, 1189 }, 26888 { 0x1d6a1, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 26889 { 0x1d6a2, UNICODE_NOT_PRESENT_OFFSET, 1191 }, 26890 { 0x1d6a3, UNICODE_NOT_PRESENT_OFFSET, 2526 }, 26891 { 0x1d6a4, UNICODE_NOT_PRESENT_OFFSET, 15258 }, 26892 { 0x1d6a5, UNICODE_NOT_PRESENT_OFFSET, 15261 }, 26893 { 0x1d6a8, UNICODE_NOT_PRESENT_OFFSET, 15264 }, 26894 { 0x1d6a9, UNICODE_NOT_PRESENT_OFFSET, 15267 }, 26895 { 0x1d6aa, UNICODE_NOT_PRESENT_OFFSET, 5354 }, 26896 { 0x1d6ab, UNICODE_NOT_PRESENT_OFFSET, 15270 }, 26897 { 0x1d6ac, UNICODE_NOT_PRESENT_OFFSET, 15273 }, 26898 { 0x1d6ad, UNICODE_NOT_PRESENT_OFFSET, 15276 }, 26899 { 0x1d6ae, UNICODE_NOT_PRESENT_OFFSET, 15279 }, 26900 { 0x1d6af, UNICODE_NOT_PRESENT_OFFSET, 1402 }, 26901 { 0x1d6b0, UNICODE_NOT_PRESENT_OFFSET, 15282 }, 26902 { 0x1d6b1, UNICODE_NOT_PRESENT_OFFSET, 15285 }, 26903 { 0x1d6b2, UNICODE_NOT_PRESENT_OFFSET, 15288 }, 26904 { 0x1d6b3, UNICODE_NOT_PRESENT_OFFSET, 15291 }, 26905 { 0x1d6b4, UNICODE_NOT_PRESENT_OFFSET, 15294 }, 26906 { 0x1d6b5, UNICODE_NOT_PRESENT_OFFSET, 15297 }, 26907 { 0x1d6b6, UNICODE_NOT_PRESENT_OFFSET, 15300 }, 26908 { 0x1d6b7, UNICODE_NOT_PRESENT_OFFSET, 5357 }, 26909 { 0x1d6b8, UNICODE_NOT_PRESENT_OFFSET, 15303 }, 26910 { 0x1d6b9, UNICODE_NOT_PRESENT_OFFSET, 1402 }, 26911 { 0x1d6ba, UNICODE_NOT_PRESENT_OFFSET, 1408 }, 26912 { 0x1d6bb, UNICODE_NOT_PRESENT_OFFSET, 15306 }, 26913 { 0x1d6bc, UNICODE_NOT_PRESENT_OFFSET, 1374 }, 26914 { 0x1d6bd, UNICODE_NOT_PRESENT_OFFSET, 15309 }, 26915 { 0x1d6be, UNICODE_NOT_PRESENT_OFFSET, 15312 }, 26916 { 0x1d6bf, UNICODE_NOT_PRESENT_OFFSET, 15315 }, 26917 { 0x1d6c0, UNICODE_NOT_PRESENT_OFFSET, 5333 }, 26918 { 0x1d6c1, UNICODE_NOT_PRESENT_OFFSET, 15318 }, 26919 { 0x1d6c2, UNICODE_NOT_PRESENT_OFFSET, 15322 }, 26920 { 0x1d6c3, UNICODE_NOT_PRESENT_OFFSET, 1368 }, 26921 { 0x1d6c4, UNICODE_NOT_PRESENT_OFFSET, 2418 }, 26922 { 0x1d6c5, UNICODE_NOT_PRESENT_OFFSET, 2421 }, 26923 { 0x1d6c6, UNICODE_NOT_PRESENT_OFFSET, 1405 }, 26924 { 0x1d6c7, UNICODE_NOT_PRESENT_OFFSET, 15325 }, 26925 { 0x1d6c8, UNICODE_NOT_PRESENT_OFFSET, 15328 }, 26926 { 0x1d6c9, UNICODE_NOT_PRESENT_OFFSET, 1371 }, 26927 { 0x1d6ca, UNICODE_NOT_PRESENT_OFFSET, 4860 }, 26928 { 0x1d6cb, UNICODE_NOT_PRESENT_OFFSET, 1393 }, 26929 { 0x1d6cc, UNICODE_NOT_PRESENT_OFFSET, 15331 }, 26930 { 0x1d6cd, UNICODE_NOT_PRESENT_OFFSET, 20 }, 26931 { 0x1d6ce, UNICODE_NOT_PRESENT_OFFSET, 15334 }, 26932 { 0x1d6cf, UNICODE_NOT_PRESENT_OFFSET, 15337 }, 26933 { 0x1d6d0, UNICODE_NOT_PRESENT_OFFSET, 15340 }, 26934 { 0x1d6d1, UNICODE_NOT_PRESENT_OFFSET, 1390 }, 26935 { 0x1d6d2, UNICODE_NOT_PRESENT_OFFSET, 1396 }, 26936 { 0x1d6d3, UNICODE_NOT_PRESENT_OFFSET, 1399 }, 26937 { 0x1d6d4, UNICODE_NOT_PRESENT_OFFSET, 15343 }, 26938 { 0x1d6d5, UNICODE_NOT_PRESENT_OFFSET, 15346 }, 26939 { 0x1d6d6, UNICODE_NOT_PRESENT_OFFSET, 15349 }, 26940 { 0x1d6d7, UNICODE_NOT_PRESENT_OFFSET, 1387 }, 26941 { 0x1d6d8, UNICODE_NOT_PRESENT_OFFSET, 2424 }, 26942 { 0x1d6d9, UNICODE_NOT_PRESENT_OFFSET, 15352 }, 26943 { 0x1d6da, UNICODE_NOT_PRESENT_OFFSET, 15355 }, 26944 { 0x1d6db, UNICODE_NOT_PRESENT_OFFSET, 15358 }, 26945 { 0x1d6dc, UNICODE_NOT_PRESENT_OFFSET, 1405 }, 26946 { 0x1d6dd, UNICODE_NOT_PRESENT_OFFSET, 1371 }, 26947 { 0x1d6de, UNICODE_NOT_PRESENT_OFFSET, 1393 }, 26948 { 0x1d6df, UNICODE_NOT_PRESENT_OFFSET, 1387 }, 26949 { 0x1d6e0, UNICODE_NOT_PRESENT_OFFSET, 1396 }, 26950 { 0x1d6e1, UNICODE_NOT_PRESENT_OFFSET, 1390 }, 26951 { 0x1d6e2, UNICODE_NOT_PRESENT_OFFSET, 15264 }, 26952 { 0x1d6e3, UNICODE_NOT_PRESENT_OFFSET, 15267 }, 26953 { 0x1d6e4, UNICODE_NOT_PRESENT_OFFSET, 5354 }, 26954 { 0x1d6e5, UNICODE_NOT_PRESENT_OFFSET, 15270 }, 26955 { 0x1d6e6, UNICODE_NOT_PRESENT_OFFSET, 15273 }, 26956 { 0x1d6e7, UNICODE_NOT_PRESENT_OFFSET, 15276 }, 26957 { 0x1d6e8, UNICODE_NOT_PRESENT_OFFSET, 15279 }, 26958 { 0x1d6e9, UNICODE_NOT_PRESENT_OFFSET, 1402 }, 26959 { 0x1d6ea, UNICODE_NOT_PRESENT_OFFSET, 15282 }, 26960 { 0x1d6eb, UNICODE_NOT_PRESENT_OFFSET, 15285 }, 26961 { 0x1d6ec, UNICODE_NOT_PRESENT_OFFSET, 15288 }, 26962 { 0x1d6ed, UNICODE_NOT_PRESENT_OFFSET, 15291 }, 26963 { 0x1d6ee, UNICODE_NOT_PRESENT_OFFSET, 15294 }, 26964 { 0x1d6ef, UNICODE_NOT_PRESENT_OFFSET, 15297 }, 26965 { 0x1d6f0, UNICODE_NOT_PRESENT_OFFSET, 15300 }, 26966 { 0x1d6f1, UNICODE_NOT_PRESENT_OFFSET, 5357 }, 26967 { 0x1d6f2, UNICODE_NOT_PRESENT_OFFSET, 15303 }, 26968 { 0x1d6f3, UNICODE_NOT_PRESENT_OFFSET, 1402 }, 26969 { 0x1d6f4, UNICODE_NOT_PRESENT_OFFSET, 1408 }, 26970 { 0x1d6f5, UNICODE_NOT_PRESENT_OFFSET, 15306 }, 26971 { 0x1d6f6, UNICODE_NOT_PRESENT_OFFSET, 1374 }, 26972 { 0x1d6f7, UNICODE_NOT_PRESENT_OFFSET, 15309 }, 26973 { 0x1d6f8, UNICODE_NOT_PRESENT_OFFSET, 15312 }, 26974 { 0x1d6f9, UNICODE_NOT_PRESENT_OFFSET, 15315 }, 26975 { 0x1d6fa, UNICODE_NOT_PRESENT_OFFSET, 5333 }, 26976 { 0x1d6fb, UNICODE_NOT_PRESENT_OFFSET, 15318 }, 26977 { 0x1d6fc, UNICODE_NOT_PRESENT_OFFSET, 15322 }, 26978 { 0x1d6fd, UNICODE_NOT_PRESENT_OFFSET, 1368 }, 26979 { 0x1d6fe, UNICODE_NOT_PRESENT_OFFSET, 2418 }, 26980 { 0x1d6ff, UNICODE_NOT_PRESENT_OFFSET, 2421 }, 26981 { 0x1d700, UNICODE_NOT_PRESENT_OFFSET, 1405 }, 26982 { 0x1d701, UNICODE_NOT_PRESENT_OFFSET, 15325 }, 26983 { 0x1d702, UNICODE_NOT_PRESENT_OFFSET, 15328 }, 26984 { 0x1d703, UNICODE_NOT_PRESENT_OFFSET, 1371 }, 26985 { 0x1d704, UNICODE_NOT_PRESENT_OFFSET, 4860 }, 26986 { 0x1d705, UNICODE_NOT_PRESENT_OFFSET, 1393 }, 26987 { 0x1d706, UNICODE_NOT_PRESENT_OFFSET, 15331 }, 26988 { 0x1d707, UNICODE_NOT_PRESENT_OFFSET, 20 }, 26989 { 0x1d708, UNICODE_NOT_PRESENT_OFFSET, 15334 }, 26990 { 0x1d709, UNICODE_NOT_PRESENT_OFFSET, 15337 }, 26991 { 0x1d70a, UNICODE_NOT_PRESENT_OFFSET, 15340 }, 26992 { 0x1d70b, UNICODE_NOT_PRESENT_OFFSET, 1390 }, 26993 { 0x1d70c, UNICODE_NOT_PRESENT_OFFSET, 1396 }, 26994 { 0x1d70d, UNICODE_NOT_PRESENT_OFFSET, 1399 }, 26995 { 0x1d70e, UNICODE_NOT_PRESENT_OFFSET, 15343 }, 26996 { 0x1d70f, UNICODE_NOT_PRESENT_OFFSET, 15346 }, 26997 { 0x1d710, UNICODE_NOT_PRESENT_OFFSET, 15349 }, 26998 { 0x1d711, UNICODE_NOT_PRESENT_OFFSET, 1387 }, 26999 { 0x1d712, UNICODE_NOT_PRESENT_OFFSET, 2424 }, 27000 { 0x1d713, UNICODE_NOT_PRESENT_OFFSET, 15352 }, 27001 { 0x1d714, UNICODE_NOT_PRESENT_OFFSET, 15355 }, 27002 { 0x1d715, UNICODE_NOT_PRESENT_OFFSET, 15358 }, 27003 { 0x1d716, UNICODE_NOT_PRESENT_OFFSET, 1405 }, 27004 { 0x1d717, UNICODE_NOT_PRESENT_OFFSET, 1371 }, 27005 { 0x1d718, UNICODE_NOT_PRESENT_OFFSET, 1393 }, 27006 { 0x1d719, UNICODE_NOT_PRESENT_OFFSET, 1387 }, 27007 { 0x1d71a, UNICODE_NOT_PRESENT_OFFSET, 1396 }, 27008 { 0x1d71b, UNICODE_NOT_PRESENT_OFFSET, 1390 }, 27009 { 0x1d71c, UNICODE_NOT_PRESENT_OFFSET, 15264 }, 27010 { 0x1d71d, UNICODE_NOT_PRESENT_OFFSET, 15267 }, 27011 { 0x1d71e, UNICODE_NOT_PRESENT_OFFSET, 5354 }, 27012 { 0x1d71f, UNICODE_NOT_PRESENT_OFFSET, 15270 }, 27013 { 0x1d720, UNICODE_NOT_PRESENT_OFFSET, 15273 }, 27014 { 0x1d721, UNICODE_NOT_PRESENT_OFFSET, 15276 }, 27015 { 0x1d722, UNICODE_NOT_PRESENT_OFFSET, 15279 }, 27016 { 0x1d723, UNICODE_NOT_PRESENT_OFFSET, 1402 }, 27017 { 0x1d724, UNICODE_NOT_PRESENT_OFFSET, 15282 }, 27018 { 0x1d725, UNICODE_NOT_PRESENT_OFFSET, 15285 }, 27019 { 0x1d726, UNICODE_NOT_PRESENT_OFFSET, 15288 }, 27020 { 0x1d727, UNICODE_NOT_PRESENT_OFFSET, 15291 }, 27021 { 0x1d728, UNICODE_NOT_PRESENT_OFFSET, 15294 }, 27022 { 0x1d729, UNICODE_NOT_PRESENT_OFFSET, 15297 }, 27023 { 0x1d72a, UNICODE_NOT_PRESENT_OFFSET, 15300 }, 27024 { 0x1d72b, UNICODE_NOT_PRESENT_OFFSET, 5357 }, 27025 { 0x1d72c, UNICODE_NOT_PRESENT_OFFSET, 15303 }, 27026 { 0x1d72d, UNICODE_NOT_PRESENT_OFFSET, 1402 }, 27027 { 0x1d72e, UNICODE_NOT_PRESENT_OFFSET, 1408 }, 27028 { 0x1d72f, UNICODE_NOT_PRESENT_OFFSET, 15306 }, 27029 { 0x1d730, UNICODE_NOT_PRESENT_OFFSET, 1374 }, 27030 { 0x1d731, UNICODE_NOT_PRESENT_OFFSET, 15309 }, 27031 { 0x1d732, UNICODE_NOT_PRESENT_OFFSET, 15312 }, 27032 { 0x1d733, UNICODE_NOT_PRESENT_OFFSET, 15315 }, 27033 { 0x1d734, UNICODE_NOT_PRESENT_OFFSET, 5333 }, 27034 { 0x1d735, UNICODE_NOT_PRESENT_OFFSET, 15318 }, 27035 { 0x1d736, UNICODE_NOT_PRESENT_OFFSET, 15322 }, 27036 { 0x1d737, UNICODE_NOT_PRESENT_OFFSET, 1368 }, 27037 { 0x1d738, UNICODE_NOT_PRESENT_OFFSET, 2418 }, 27038 { 0x1d739, UNICODE_NOT_PRESENT_OFFSET, 2421 }, 27039 { 0x1d73a, UNICODE_NOT_PRESENT_OFFSET, 1405 }, 27040 { 0x1d73b, UNICODE_NOT_PRESENT_OFFSET, 15325 }, 27041 { 0x1d73c, UNICODE_NOT_PRESENT_OFFSET, 15328 }, 27042 { 0x1d73d, UNICODE_NOT_PRESENT_OFFSET, 1371 }, 27043 { 0x1d73e, UNICODE_NOT_PRESENT_OFFSET, 4860 }, 27044 { 0x1d73f, UNICODE_NOT_PRESENT_OFFSET, 1393 }, 27045 { 0x1d740, UNICODE_NOT_PRESENT_OFFSET, 15331 }, 27046 { 0x1d741, UNICODE_NOT_PRESENT_OFFSET, 20 }, 27047 { 0x1d742, UNICODE_NOT_PRESENT_OFFSET, 15334 }, 27048 { 0x1d743, UNICODE_NOT_PRESENT_OFFSET, 15337 }, 27049 { 0x1d744, UNICODE_NOT_PRESENT_OFFSET, 15340 }, 27050 { 0x1d745, UNICODE_NOT_PRESENT_OFFSET, 1390 }, 27051 { 0x1d746, UNICODE_NOT_PRESENT_OFFSET, 1396 }, 27052 { 0x1d747, UNICODE_NOT_PRESENT_OFFSET, 1399 }, 27053 { 0x1d748, UNICODE_NOT_PRESENT_OFFSET, 15343 }, 27054 { 0x1d749, UNICODE_NOT_PRESENT_OFFSET, 15346 }, 27055 { 0x1d74a, UNICODE_NOT_PRESENT_OFFSET, 15349 }, 27056 { 0x1d74b, UNICODE_NOT_PRESENT_OFFSET, 1387 }, 27057 { 0x1d74c, UNICODE_NOT_PRESENT_OFFSET, 2424 }, 27058 { 0x1d74d, UNICODE_NOT_PRESENT_OFFSET, 15352 }, 27059 { 0x1d74e, UNICODE_NOT_PRESENT_OFFSET, 15355 }, 27060 { 0x1d74f, UNICODE_NOT_PRESENT_OFFSET, 15358 }, 27061 { 0x1d750, UNICODE_NOT_PRESENT_OFFSET, 1405 }, 27062 { 0x1d751, UNICODE_NOT_PRESENT_OFFSET, 1371 }, 27063 { 0x1d752, UNICODE_NOT_PRESENT_OFFSET, 1393 }, 27064 { 0x1d753, UNICODE_NOT_PRESENT_OFFSET, 1387 }, 27065 { 0x1d754, UNICODE_NOT_PRESENT_OFFSET, 1396 }, 27066 { 0x1d755, UNICODE_NOT_PRESENT_OFFSET, 1390 }, 27067 { 0x1d756, UNICODE_NOT_PRESENT_OFFSET, 15264 }, 27068 { 0x1d757, UNICODE_NOT_PRESENT_OFFSET, 15267 }, 27069 { 0x1d758, UNICODE_NOT_PRESENT_OFFSET, 5354 }, 27070 { 0x1d759, UNICODE_NOT_PRESENT_OFFSET, 15270 }, 27071 { 0x1d75a, UNICODE_NOT_PRESENT_OFFSET, 15273 }, 27072 { 0x1d75b, UNICODE_NOT_PRESENT_OFFSET, 15276 }, 27073 { 0x1d75c, UNICODE_NOT_PRESENT_OFFSET, 15279 }, 27074 { 0x1d75d, UNICODE_NOT_PRESENT_OFFSET, 1402 }, 27075 { 0x1d75e, UNICODE_NOT_PRESENT_OFFSET, 15282 }, 27076 { 0x1d75f, UNICODE_NOT_PRESENT_OFFSET, 15285 }, 27077 { 0x1d760, UNICODE_NOT_PRESENT_OFFSET, 15288 }, 27078 { 0x1d761, UNICODE_NOT_PRESENT_OFFSET, 15291 }, 27079 { 0x1d762, UNICODE_NOT_PRESENT_OFFSET, 15294 }, 27080 { 0x1d763, UNICODE_NOT_PRESENT_OFFSET, 15297 }, 27081 { 0x1d764, UNICODE_NOT_PRESENT_OFFSET, 15300 }, 27082 { 0x1d765, UNICODE_NOT_PRESENT_OFFSET, 5357 }, 27083 { 0x1d766, UNICODE_NOT_PRESENT_OFFSET, 15303 }, 27084 { 0x1d767, UNICODE_NOT_PRESENT_OFFSET, 1402 }, 27085 { 0x1d768, UNICODE_NOT_PRESENT_OFFSET, 1408 }, 27086 { 0x1d769, UNICODE_NOT_PRESENT_OFFSET, 15306 }, 27087 { 0x1d76a, UNICODE_NOT_PRESENT_OFFSET, 1374 }, 27088 { 0x1d76b, UNICODE_NOT_PRESENT_OFFSET, 15309 }, 27089 { 0x1d76c, UNICODE_NOT_PRESENT_OFFSET, 15312 }, 27090 { 0x1d76d, UNICODE_NOT_PRESENT_OFFSET, 15315 }, 27091 { 0x1d76e, UNICODE_NOT_PRESENT_OFFSET, 5333 }, 27092 { 0x1d76f, UNICODE_NOT_PRESENT_OFFSET, 15318 }, 27093 { 0x1d770, UNICODE_NOT_PRESENT_OFFSET, 15322 }, 27094 { 0x1d771, UNICODE_NOT_PRESENT_OFFSET, 1368 }, 27095 { 0x1d772, UNICODE_NOT_PRESENT_OFFSET, 2418 }, 27096 { 0x1d773, UNICODE_NOT_PRESENT_OFFSET, 2421 }, 27097 { 0x1d774, UNICODE_NOT_PRESENT_OFFSET, 1405 }, 27098 { 0x1d775, UNICODE_NOT_PRESENT_OFFSET, 15325 }, 27099 { 0x1d776, UNICODE_NOT_PRESENT_OFFSET, 15328 }, 27100 { 0x1d777, UNICODE_NOT_PRESENT_OFFSET, 1371 }, 27101 { 0x1d778, UNICODE_NOT_PRESENT_OFFSET, 4860 }, 27102 { 0x1d779, UNICODE_NOT_PRESENT_OFFSET, 1393 }, 27103 { 0x1d77a, UNICODE_NOT_PRESENT_OFFSET, 15331 }, 27104 { 0x1d77b, UNICODE_NOT_PRESENT_OFFSET, 20 }, 27105 { 0x1d77c, UNICODE_NOT_PRESENT_OFFSET, 15334 }, 27106 { 0x1d77d, UNICODE_NOT_PRESENT_OFFSET, 15337 }, 27107 { 0x1d77e, UNICODE_NOT_PRESENT_OFFSET, 15340 }, 27108 { 0x1d77f, UNICODE_NOT_PRESENT_OFFSET, 1390 }, 27109 { 0x1d780, UNICODE_NOT_PRESENT_OFFSET, 1396 }, 27110 { 0x1d781, UNICODE_NOT_PRESENT_OFFSET, 1399 }, 27111 { 0x1d782, UNICODE_NOT_PRESENT_OFFSET, 15343 }, 27112 { 0x1d783, UNICODE_NOT_PRESENT_OFFSET, 15346 }, 27113 { 0x1d784, UNICODE_NOT_PRESENT_OFFSET, 15349 }, 27114 { 0x1d785, UNICODE_NOT_PRESENT_OFFSET, 1387 }, 27115 { 0x1d786, UNICODE_NOT_PRESENT_OFFSET, 2424 }, 27116 { 0x1d787, UNICODE_NOT_PRESENT_OFFSET, 15352 }, 27117 { 0x1d788, UNICODE_NOT_PRESENT_OFFSET, 15355 }, 27118 { 0x1d789, UNICODE_NOT_PRESENT_OFFSET, 15358 }, 27119 { 0x1d78a, UNICODE_NOT_PRESENT_OFFSET, 1405 }, 27120 { 0x1d78b, UNICODE_NOT_PRESENT_OFFSET, 1371 }, 27121 { 0x1d78c, UNICODE_NOT_PRESENT_OFFSET, 1393 }, 27122 { 0x1d78d, UNICODE_NOT_PRESENT_OFFSET, 1387 }, 27123 { 0x1d78e, UNICODE_NOT_PRESENT_OFFSET, 1396 }, 27124 { 0x1d78f, UNICODE_NOT_PRESENT_OFFSET, 1390 }, 27125 { 0x1d790, UNICODE_NOT_PRESENT_OFFSET, 15264 }, 27126 { 0x1d791, UNICODE_NOT_PRESENT_OFFSET, 15267 }, 27127 { 0x1d792, UNICODE_NOT_PRESENT_OFFSET, 5354 }, 27128 { 0x1d793, UNICODE_NOT_PRESENT_OFFSET, 15270 }, 27129 { 0x1d794, UNICODE_NOT_PRESENT_OFFSET, 15273 }, 27130 { 0x1d795, UNICODE_NOT_PRESENT_OFFSET, 15276 }, 27131 { 0x1d796, UNICODE_NOT_PRESENT_OFFSET, 15279 }, 27132 { 0x1d797, UNICODE_NOT_PRESENT_OFFSET, 1402 }, 27133 { 0x1d798, UNICODE_NOT_PRESENT_OFFSET, 15282 }, 27134 { 0x1d799, UNICODE_NOT_PRESENT_OFFSET, 15285 }, 27135 { 0x1d79a, UNICODE_NOT_PRESENT_OFFSET, 15288 }, 27136 { 0x1d79b, UNICODE_NOT_PRESENT_OFFSET, 15291 }, 27137 { 0x1d79c, UNICODE_NOT_PRESENT_OFFSET, 15294 }, 27138 { 0x1d79d, UNICODE_NOT_PRESENT_OFFSET, 15297 }, 27139 { 0x1d79e, UNICODE_NOT_PRESENT_OFFSET, 15300 }, 27140 { 0x1d79f, UNICODE_NOT_PRESENT_OFFSET, 5357 }, 27141 { 0x1d7a0, UNICODE_NOT_PRESENT_OFFSET, 15303 }, 27142 { 0x1d7a1, UNICODE_NOT_PRESENT_OFFSET, 1402 }, 27143 { 0x1d7a2, UNICODE_NOT_PRESENT_OFFSET, 1408 }, 27144 { 0x1d7a3, UNICODE_NOT_PRESENT_OFFSET, 15306 }, 27145 { 0x1d7a4, UNICODE_NOT_PRESENT_OFFSET, 1374 }, 27146 { 0x1d7a5, UNICODE_NOT_PRESENT_OFFSET, 15309 }, 27147 { 0x1d7a6, UNICODE_NOT_PRESENT_OFFSET, 15312 }, 27148 { 0x1d7a7, UNICODE_NOT_PRESENT_OFFSET, 15315 }, 27149 { 0x1d7a8, UNICODE_NOT_PRESENT_OFFSET, 5333 }, 27150 { 0x1d7a9, UNICODE_NOT_PRESENT_OFFSET, 15318 }, 27151 { 0x1d7aa, UNICODE_NOT_PRESENT_OFFSET, 15322 }, 27152 { 0x1d7ab, UNICODE_NOT_PRESENT_OFFSET, 1368 }, 27153 { 0x1d7ac, UNICODE_NOT_PRESENT_OFFSET, 2418 }, 27154 { 0x1d7ad, UNICODE_NOT_PRESENT_OFFSET, 2421 }, 27155 { 0x1d7ae, UNICODE_NOT_PRESENT_OFFSET, 1405 }, 27156 { 0x1d7af, UNICODE_NOT_PRESENT_OFFSET, 15325 }, 27157 { 0x1d7b0, UNICODE_NOT_PRESENT_OFFSET, 15328 }, 27158 { 0x1d7b1, UNICODE_NOT_PRESENT_OFFSET, 1371 }, 27159 { 0x1d7b2, UNICODE_NOT_PRESENT_OFFSET, 4860 }, 27160 { 0x1d7b3, UNICODE_NOT_PRESENT_OFFSET, 1393 }, 27161 { 0x1d7b4, UNICODE_NOT_PRESENT_OFFSET, 15331 }, 27162 { 0x1d7b5, UNICODE_NOT_PRESENT_OFFSET, 20 }, 27163 { 0x1d7b6, UNICODE_NOT_PRESENT_OFFSET, 15334 }, 27164 { 0x1d7b7, UNICODE_NOT_PRESENT_OFFSET, 15337 }, 27165 { 0x1d7b8, UNICODE_NOT_PRESENT_OFFSET, 15340 }, 27166 { 0x1d7b9, UNICODE_NOT_PRESENT_OFFSET, 1390 }, 27167 { 0x1d7ba, UNICODE_NOT_PRESENT_OFFSET, 1396 }, 27168 { 0x1d7bb, UNICODE_NOT_PRESENT_OFFSET, 1399 }, 27169 { 0x1d7bc, UNICODE_NOT_PRESENT_OFFSET, 15343 }, 27170 { 0x1d7bd, UNICODE_NOT_PRESENT_OFFSET, 15346 }, 27171 { 0x1d7be, UNICODE_NOT_PRESENT_OFFSET, 15349 }, 27172 { 0x1d7bf, UNICODE_NOT_PRESENT_OFFSET, 1387 }, 27173 { 0x1d7c0, UNICODE_NOT_PRESENT_OFFSET, 2424 }, 27174 { 0x1d7c1, UNICODE_NOT_PRESENT_OFFSET, 15352 }, 27175 { 0x1d7c2, UNICODE_NOT_PRESENT_OFFSET, 15355 }, 27176 { 0x1d7c3, UNICODE_NOT_PRESENT_OFFSET, 15358 }, 27177 { 0x1d7c4, UNICODE_NOT_PRESENT_OFFSET, 1405 }, 27178 { 0x1d7c5, UNICODE_NOT_PRESENT_OFFSET, 1371 }, 27179 { 0x1d7c6, UNICODE_NOT_PRESENT_OFFSET, 1393 }, 27180 { 0x1d7c7, UNICODE_NOT_PRESENT_OFFSET, 1387 }, 27181 { 0x1d7c8, UNICODE_NOT_PRESENT_OFFSET, 1396 }, 27182 { 0x1d7c9, UNICODE_NOT_PRESENT_OFFSET, 1390 }, 27183 { 0x1d7ca, UNICODE_NOT_PRESENT_OFFSET, 15362 }, 27184 { 0x1d7cb, UNICODE_NOT_PRESENT_OFFSET, 15365 }, 27185 { 0x1d7ce, UNICODE_NOT_PRESENT_OFFSET, 5253 }, 27186 { 0x1d7cf, UNICODE_NOT_PRESENT_OFFSET, 27 }, 27187 { 0x1d7d0, UNICODE_NOT_PRESENT_OFFSET, 12 }, 27188 { 0x1d7d1, UNICODE_NOT_PRESENT_OFFSET, 14 }, 27189 { 0x1d7d2, UNICODE_NOT_PRESENT_OFFSET, 5255 }, 27190 { 0x1d7d3, UNICODE_NOT_PRESENT_OFFSET, 5257 }, 27191 { 0x1d7d4, UNICODE_NOT_PRESENT_OFFSET, 5259 }, 27192 { 0x1d7d5, UNICODE_NOT_PRESENT_OFFSET, 5261 }, 27193 { 0x1d7d6, UNICODE_NOT_PRESENT_OFFSET, 5263 }, 27194 { 0x1d7d7, UNICODE_NOT_PRESENT_OFFSET, 5265 }, 27195 { 0x1d7d8, UNICODE_NOT_PRESENT_OFFSET, 5253 }, 27196 { 0x1d7d9, UNICODE_NOT_PRESENT_OFFSET, 27 }, 27197 { 0x1d7da, UNICODE_NOT_PRESENT_OFFSET, 12 }, 27198 { 0x1d7db, UNICODE_NOT_PRESENT_OFFSET, 14 }, 27199 { 0x1d7dc, UNICODE_NOT_PRESENT_OFFSET, 5255 }, 27200 { 0x1d7dd, UNICODE_NOT_PRESENT_OFFSET, 5257 }, 27201 { 0x1d7de, UNICODE_NOT_PRESENT_OFFSET, 5259 }, 27202 { 0x1d7df, UNICODE_NOT_PRESENT_OFFSET, 5261 }, 27203 { 0x1d7e0, UNICODE_NOT_PRESENT_OFFSET, 5263 }, 27204 { 0x1d7e1, UNICODE_NOT_PRESENT_OFFSET, 5265 }, 27205 { 0x1d7e2, UNICODE_NOT_PRESENT_OFFSET, 5253 }, 27206 { 0x1d7e3, UNICODE_NOT_PRESENT_OFFSET, 27 }, 27207 { 0x1d7e4, UNICODE_NOT_PRESENT_OFFSET, 12 }, 27208 { 0x1d7e5, UNICODE_NOT_PRESENT_OFFSET, 14 }, 27209 { 0x1d7e6, UNICODE_NOT_PRESENT_OFFSET, 5255 }, 27210 { 0x1d7e7, UNICODE_NOT_PRESENT_OFFSET, 5257 }, 27211 { 0x1d7e8, UNICODE_NOT_PRESENT_OFFSET, 5259 }, 27212 { 0x1d7e9, UNICODE_NOT_PRESENT_OFFSET, 5261 }, 27213 { 0x1d7ea, UNICODE_NOT_PRESENT_OFFSET, 5263 }, 27214 { 0x1d7eb, UNICODE_NOT_PRESENT_OFFSET, 5265 }, 27215 { 0x1d7ec, UNICODE_NOT_PRESENT_OFFSET, 5253 }, 27216 { 0x1d7ed, UNICODE_NOT_PRESENT_OFFSET, 27 }, 27217 { 0x1d7ee, UNICODE_NOT_PRESENT_OFFSET, 12 }, 27218 { 0x1d7ef, UNICODE_NOT_PRESENT_OFFSET, 14 }, 27219 { 0x1d7f0, UNICODE_NOT_PRESENT_OFFSET, 5255 }, 27220 { 0x1d7f1, UNICODE_NOT_PRESENT_OFFSET, 5257 }, 27221 { 0x1d7f2, UNICODE_NOT_PRESENT_OFFSET, 5259 }, 27222 { 0x1d7f3, UNICODE_NOT_PRESENT_OFFSET, 5261 }, 27223 { 0x1d7f4, UNICODE_NOT_PRESENT_OFFSET, 5263 }, 27224 { 0x1d7f5, UNICODE_NOT_PRESENT_OFFSET, 5265 }, 27225 { 0x1d7f6, UNICODE_NOT_PRESENT_OFFSET, 5253 }, 27226 { 0x1d7f7, UNICODE_NOT_PRESENT_OFFSET, 27 }, 27227 { 0x1d7f8, UNICODE_NOT_PRESENT_OFFSET, 12 }, 27228 { 0x1d7f9, UNICODE_NOT_PRESENT_OFFSET, 14 }, 27229 { 0x1d7fa, UNICODE_NOT_PRESENT_OFFSET, 5255 }, 27230 { 0x1d7fb, UNICODE_NOT_PRESENT_OFFSET, 5257 }, 27231 { 0x1d7fc, UNICODE_NOT_PRESENT_OFFSET, 5259 }, 27232 { 0x1d7fd, UNICODE_NOT_PRESENT_OFFSET, 5261 }, 27233 { 0x1d7fe, UNICODE_NOT_PRESENT_OFFSET, 5263 }, 27234 { 0x1d7ff, UNICODE_NOT_PRESENT_OFFSET, 5265 }, 27235 { 0x1ee00, UNICODE_NOT_PRESENT_OFFSET, 14761 }, 27236 { 0x1ee01, UNICODE_NOT_PRESENT_OFFSET, 14764 }, 27237 { 0x1ee02, UNICODE_NOT_PRESENT_OFFSET, 14776 }, 27238 { 0x1ee03, UNICODE_NOT_PRESENT_OFFSET, 14785 }, 27239 { 0x1ee05, UNICODE_NOT_PRESENT_OFFSET, 14842 }, 27240 { 0x1ee06, UNICODE_NOT_PRESENT_OFFSET, 14794 }, 27241 { 0x1ee07, UNICODE_NOT_PRESENT_OFFSET, 14779 }, 27242 { 0x1ee08, UNICODE_NOT_PRESENT_OFFSET, 14809 }, 27243 { 0x1ee09, UNICODE_NOT_PRESENT_OFFSET, 14845 }, 27244 { 0x1ee0a, UNICODE_NOT_PRESENT_OFFSET, 14827 }, 27245 { 0x1ee0b, UNICODE_NOT_PRESENT_OFFSET, 14830 }, 27246 { 0x1ee0c, UNICODE_NOT_PRESENT_OFFSET, 14833 }, 27247 { 0x1ee0d, UNICODE_NOT_PRESENT_OFFSET, 14836 }, 27248 { 0x1ee0e, UNICODE_NOT_PRESENT_OFFSET, 14797 }, 27249 { 0x1ee0f, UNICODE_NOT_PRESENT_OFFSET, 14815 }, 27250 { 0x1ee10, UNICODE_NOT_PRESENT_OFFSET, 14821 }, 27251 { 0x1ee11, UNICODE_NOT_PRESENT_OFFSET, 14803 }, 27252 { 0x1ee12, UNICODE_NOT_PRESENT_OFFSET, 14824 }, 27253 { 0x1ee13, UNICODE_NOT_PRESENT_OFFSET, 14791 }, 27254 { 0x1ee14, UNICODE_NOT_PRESENT_OFFSET, 14800 }, 27255 { 0x1ee15, UNICODE_NOT_PRESENT_OFFSET, 14770 }, 27256 { 0x1ee16, UNICODE_NOT_PRESENT_OFFSET, 14773 }, 27257 { 0x1ee17, UNICODE_NOT_PRESENT_OFFSET, 14782 }, 27258 { 0x1ee18, UNICODE_NOT_PRESENT_OFFSET, 14788 }, 27259 { 0x1ee19, UNICODE_NOT_PRESENT_OFFSET, 14806 }, 27260 { 0x1ee1a, UNICODE_NOT_PRESENT_OFFSET, 14812 }, 27261 { 0x1ee1b, UNICODE_NOT_PRESENT_OFFSET, 14818 }, 27262 { 0x1ee1c, UNICODE_NOT_PRESENT_OFFSET, 15368 }, 27263 { 0x1ee1d, UNICODE_NOT_PRESENT_OFFSET, 12852 }, 27264 { 0x1ee1e, UNICODE_NOT_PRESENT_OFFSET, 15371 }, 27265 { 0x1ee1f, UNICODE_NOT_PRESENT_OFFSET, 15374 }, 27266 { 0x1ee21, UNICODE_NOT_PRESENT_OFFSET, 14764 }, 27267 { 0x1ee22, UNICODE_NOT_PRESENT_OFFSET, 14776 }, 27268 { 0x1ee24, UNICODE_NOT_PRESENT_OFFSET, 14839 }, 27269 { 0x1ee27, UNICODE_NOT_PRESENT_OFFSET, 14779 }, 27270 { 0x1ee29, UNICODE_NOT_PRESENT_OFFSET, 14845 }, 27271 { 0x1ee2a, UNICODE_NOT_PRESENT_OFFSET, 14827 }, 27272 { 0x1ee2b, UNICODE_NOT_PRESENT_OFFSET, 14830 }, 27273 { 0x1ee2c, UNICODE_NOT_PRESENT_OFFSET, 14833 }, 27274 { 0x1ee2d, UNICODE_NOT_PRESENT_OFFSET, 14836 }, 27275 { 0x1ee2e, UNICODE_NOT_PRESENT_OFFSET, 14797 }, 27276 { 0x1ee2f, UNICODE_NOT_PRESENT_OFFSET, 14815 }, 27277 { 0x1ee30, UNICODE_NOT_PRESENT_OFFSET, 14821 }, 27278 { 0x1ee31, UNICODE_NOT_PRESENT_OFFSET, 14803 }, 27279 { 0x1ee32, UNICODE_NOT_PRESENT_OFFSET, 14824 }, 27280 { 0x1ee34, UNICODE_NOT_PRESENT_OFFSET, 14800 }, 27281 { 0x1ee35, UNICODE_NOT_PRESENT_OFFSET, 14770 }, 27282 { 0x1ee36, UNICODE_NOT_PRESENT_OFFSET, 14773 }, 27283 { 0x1ee37, UNICODE_NOT_PRESENT_OFFSET, 14782 }, 27284 { 0x1ee39, UNICODE_NOT_PRESENT_OFFSET, 14806 }, 27285 { 0x1ee3b, UNICODE_NOT_PRESENT_OFFSET, 14818 }, 27286 { 0x1ee42, UNICODE_NOT_PRESENT_OFFSET, 14776 }, 27287 { 0x1ee47, UNICODE_NOT_PRESENT_OFFSET, 14779 }, 27288 { 0x1ee49, UNICODE_NOT_PRESENT_OFFSET, 14845 }, 27289 { 0x1ee4b, UNICODE_NOT_PRESENT_OFFSET, 14830 }, 27290 { 0x1ee4d, UNICODE_NOT_PRESENT_OFFSET, 14836 }, 27291 { 0x1ee4e, UNICODE_NOT_PRESENT_OFFSET, 14797 }, 27292 { 0x1ee4f, UNICODE_NOT_PRESENT_OFFSET, 14815 }, 27293 { 0x1ee51, UNICODE_NOT_PRESENT_OFFSET, 14803 }, 27294 { 0x1ee52, UNICODE_NOT_PRESENT_OFFSET, 14824 }, 27295 { 0x1ee54, UNICODE_NOT_PRESENT_OFFSET, 14800 }, 27296 { 0x1ee57, UNICODE_NOT_PRESENT_OFFSET, 14782 }, 27297 { 0x1ee59, UNICODE_NOT_PRESENT_OFFSET, 14806 }, 27298 { 0x1ee5b, UNICODE_NOT_PRESENT_OFFSET, 14818 }, 27299 { 0x1ee5d, UNICODE_NOT_PRESENT_OFFSET, 12852 }, 27300 { 0x1ee5f, UNICODE_NOT_PRESENT_OFFSET, 15374 }, 27301 { 0x1ee61, UNICODE_NOT_PRESENT_OFFSET, 14764 }, 27302 { 0x1ee62, UNICODE_NOT_PRESENT_OFFSET, 14776 }, 27303 { 0x1ee64, UNICODE_NOT_PRESENT_OFFSET, 14839 }, 27304 { 0x1ee67, UNICODE_NOT_PRESENT_OFFSET, 14779 }, 27305 { 0x1ee68, UNICODE_NOT_PRESENT_OFFSET, 14809 }, 27306 { 0x1ee69, UNICODE_NOT_PRESENT_OFFSET, 14845 }, 27307 { 0x1ee6a, UNICODE_NOT_PRESENT_OFFSET, 14827 }, 27308 { 0x1ee6c, UNICODE_NOT_PRESENT_OFFSET, 14833 }, 27309 { 0x1ee6d, UNICODE_NOT_PRESENT_OFFSET, 14836 }, 27310 { 0x1ee6e, UNICODE_NOT_PRESENT_OFFSET, 14797 }, 27311 { 0x1ee6f, UNICODE_NOT_PRESENT_OFFSET, 14815 }, 27312 { 0x1ee70, UNICODE_NOT_PRESENT_OFFSET, 14821 }, 27313 { 0x1ee71, UNICODE_NOT_PRESENT_OFFSET, 14803 }, 27314 { 0x1ee72, UNICODE_NOT_PRESENT_OFFSET, 14824 }, 27315 { 0x1ee74, UNICODE_NOT_PRESENT_OFFSET, 14800 }, 27316 { 0x1ee75, UNICODE_NOT_PRESENT_OFFSET, 14770 }, 27317 { 0x1ee76, UNICODE_NOT_PRESENT_OFFSET, 14773 }, 27318 { 0x1ee77, UNICODE_NOT_PRESENT_OFFSET, 14782 }, 27319 { 0x1ee79, UNICODE_NOT_PRESENT_OFFSET, 14806 }, 27320 { 0x1ee7a, UNICODE_NOT_PRESENT_OFFSET, 14812 }, 27321 { 0x1ee7b, UNICODE_NOT_PRESENT_OFFSET, 14818 }, 27322 { 0x1ee7c, UNICODE_NOT_PRESENT_OFFSET, 15368 }, 27323 { 0x1ee7e, UNICODE_NOT_PRESENT_OFFSET, 15371 }, 27324 { 0x1ee80, UNICODE_NOT_PRESENT_OFFSET, 14761 }, 27325 { 0x1ee81, UNICODE_NOT_PRESENT_OFFSET, 14764 }, 27326 { 0x1ee82, UNICODE_NOT_PRESENT_OFFSET, 14776 }, 27327 { 0x1ee83, UNICODE_NOT_PRESENT_OFFSET, 14785 }, 27328 { 0x1ee84, UNICODE_NOT_PRESENT_OFFSET, 14839 }, 27329 { 0x1ee85, UNICODE_NOT_PRESENT_OFFSET, 14842 }, 27330 { 0x1ee86, UNICODE_NOT_PRESENT_OFFSET, 14794 }, 27331 { 0x1ee87, UNICODE_NOT_PRESENT_OFFSET, 14779 }, 27332 { 0x1ee88, UNICODE_NOT_PRESENT_OFFSET, 14809 }, 27333 { 0x1ee89, UNICODE_NOT_PRESENT_OFFSET, 14845 }, 27334 { 0x1ee8b, UNICODE_NOT_PRESENT_OFFSET, 14830 }, 27335 { 0x1ee8c, UNICODE_NOT_PRESENT_OFFSET, 14833 }, 27336 { 0x1ee8d, UNICODE_NOT_PRESENT_OFFSET, 14836 }, 27337 { 0x1ee8e, UNICODE_NOT_PRESENT_OFFSET, 14797 }, 27338 { 0x1ee8f, UNICODE_NOT_PRESENT_OFFSET, 14815 }, 27339 { 0x1ee90, UNICODE_NOT_PRESENT_OFFSET, 14821 }, 27340 { 0x1ee91, UNICODE_NOT_PRESENT_OFFSET, 14803 }, 27341 { 0x1ee92, UNICODE_NOT_PRESENT_OFFSET, 14824 }, 27342 { 0x1ee93, UNICODE_NOT_PRESENT_OFFSET, 14791 }, 27343 { 0x1ee94, UNICODE_NOT_PRESENT_OFFSET, 14800 }, 27344 { 0x1ee95, UNICODE_NOT_PRESENT_OFFSET, 14770 }, 27345 { 0x1ee96, UNICODE_NOT_PRESENT_OFFSET, 14773 }, 27346 { 0x1ee97, UNICODE_NOT_PRESENT_OFFSET, 14782 }, 27347 { 0x1ee98, UNICODE_NOT_PRESENT_OFFSET, 14788 }, 27348 { 0x1ee99, UNICODE_NOT_PRESENT_OFFSET, 14806 }, 27349 { 0x1ee9a, UNICODE_NOT_PRESENT_OFFSET, 14812 }, 27350 { 0x1ee9b, UNICODE_NOT_PRESENT_OFFSET, 14818 }, 27351 { 0x1eea1, UNICODE_NOT_PRESENT_OFFSET, 14764 }, 27352 { 0x1eea2, UNICODE_NOT_PRESENT_OFFSET, 14776 }, 27353 { 0x1eea3, UNICODE_NOT_PRESENT_OFFSET, 14785 }, 27354 { 0x1eea5, UNICODE_NOT_PRESENT_OFFSET, 14842 }, 27355 { 0x1eea6, UNICODE_NOT_PRESENT_OFFSET, 14794 }, 27356 { 0x1eea7, UNICODE_NOT_PRESENT_OFFSET, 14779 }, 27357 { 0x1eea8, UNICODE_NOT_PRESENT_OFFSET, 14809 }, 27358 { 0x1eea9, UNICODE_NOT_PRESENT_OFFSET, 14845 }, 27359 { 0x1eeab, UNICODE_NOT_PRESENT_OFFSET, 14830 }, 27360 { 0x1eeac, UNICODE_NOT_PRESENT_OFFSET, 14833 }, 27361 { 0x1eead, UNICODE_NOT_PRESENT_OFFSET, 14836 }, 27362 { 0x1eeae, UNICODE_NOT_PRESENT_OFFSET, 14797 }, 27363 { 0x1eeaf, UNICODE_NOT_PRESENT_OFFSET, 14815 }, 27364 { 0x1eeb0, UNICODE_NOT_PRESENT_OFFSET, 14821 }, 27365 { 0x1eeb1, UNICODE_NOT_PRESENT_OFFSET, 14803 }, 27366 { 0x1eeb2, UNICODE_NOT_PRESENT_OFFSET, 14824 }, 27367 { 0x1eeb3, UNICODE_NOT_PRESENT_OFFSET, 14791 }, 27368 { 0x1eeb4, UNICODE_NOT_PRESENT_OFFSET, 14800 }, 27369 { 0x1eeb5, UNICODE_NOT_PRESENT_OFFSET, 14770 }, 27370 { 0x1eeb6, UNICODE_NOT_PRESENT_OFFSET, 14773 }, 27371 { 0x1eeb7, UNICODE_NOT_PRESENT_OFFSET, 14782 }, 27372 { 0x1eeb8, UNICODE_NOT_PRESENT_OFFSET, 14788 }, 27373 { 0x1eeb9, UNICODE_NOT_PRESENT_OFFSET, 14806 }, 27374 { 0x1eeba, UNICODE_NOT_PRESENT_OFFSET, 14812 }, 27375 { 0x1eebb, UNICODE_NOT_PRESENT_OFFSET, 14818 }, 27376 { 0x1f100, UNICODE_NOT_PRESENT_OFFSET, 15377 }, 27377 { 0x1f101, UNICODE_NOT_PRESENT_OFFSET, 15380 }, 27378 { 0x1f102, UNICODE_NOT_PRESENT_OFFSET, 15383 }, 27379 { 0x1f103, UNICODE_NOT_PRESENT_OFFSET, 15386 }, 27380 { 0x1f104, UNICODE_NOT_PRESENT_OFFSET, 15389 }, 27381 { 0x1f105, UNICODE_NOT_PRESENT_OFFSET, 15392 }, 27382 { 0x1f106, UNICODE_NOT_PRESENT_OFFSET, 15395 }, 27383 { 0x1f107, UNICODE_NOT_PRESENT_OFFSET, 15398 }, 27384 { 0x1f108, UNICODE_NOT_PRESENT_OFFSET, 15401 }, 27385 { 0x1f109, UNICODE_NOT_PRESENT_OFFSET, 15404 }, 27386 { 0x1f10a, UNICODE_NOT_PRESENT_OFFSET, 15407 }, 27387 { 0x1f110, UNICODE_NOT_PRESENT_OFFSET, 15410 }, 27388 { 0x1f111, UNICODE_NOT_PRESENT_OFFSET, 15414 }, 27389 { 0x1f112, UNICODE_NOT_PRESENT_OFFSET, 15418 }, 27390 { 0x1f113, UNICODE_NOT_PRESENT_OFFSET, 15422 }, 27391 { 0x1f114, UNICODE_NOT_PRESENT_OFFSET, 15426 }, 27392 { 0x1f115, UNICODE_NOT_PRESENT_OFFSET, 15430 }, 27393 { 0x1f116, UNICODE_NOT_PRESENT_OFFSET, 15434 }, 27394 { 0x1f117, UNICODE_NOT_PRESENT_OFFSET, 15438 }, 27395 { 0x1f118, UNICODE_NOT_PRESENT_OFFSET, 15442 }, 27396 { 0x1f119, UNICODE_NOT_PRESENT_OFFSET, 15446 }, 27397 { 0x1f11a, UNICODE_NOT_PRESENT_OFFSET, 15450 }, 27398 { 0x1f11b, UNICODE_NOT_PRESENT_OFFSET, 15454 }, 27399 { 0x1f11c, UNICODE_NOT_PRESENT_OFFSET, 15458 }, 27400 { 0x1f11d, UNICODE_NOT_PRESENT_OFFSET, 15462 }, 27401 { 0x1f11e, UNICODE_NOT_PRESENT_OFFSET, 15466 }, 27402 { 0x1f11f, UNICODE_NOT_PRESENT_OFFSET, 15470 }, 27403 { 0x1f120, UNICODE_NOT_PRESENT_OFFSET, 15474 }, 27404 { 0x1f121, UNICODE_NOT_PRESENT_OFFSET, 15478 }, 27405 { 0x1f122, UNICODE_NOT_PRESENT_OFFSET, 15482 }, 27406 { 0x1f123, UNICODE_NOT_PRESENT_OFFSET, 15486 }, 27407 { 0x1f124, UNICODE_NOT_PRESENT_OFFSET, 15490 }, 27408 { 0x1f125, UNICODE_NOT_PRESENT_OFFSET, 15494 }, 27409 { 0x1f126, UNICODE_NOT_PRESENT_OFFSET, 15498 }, 27410 { 0x1f127, UNICODE_NOT_PRESENT_OFFSET, 15502 }, 27411 { 0x1f128, UNICODE_NOT_PRESENT_OFFSET, 15506 }, 27412 { 0x1f129, UNICODE_NOT_PRESENT_OFFSET, 15510 }, 27413 { 0x1f12a, UNICODE_NOT_PRESENT_OFFSET, 15514 }, 27414 { 0x1f12b, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 27415 { 0x1f12c, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 27416 { 0x1f12d, UNICODE_NOT_PRESENT_OFFSET, 15522 }, 27417 { 0x1f12e, UNICODE_NOT_PRESENT_OFFSET, 15525 }, 27418 { 0x1f130, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 27419 { 0x1f131, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 27420 { 0x1f132, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 27421 { 0x1f133, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 27422 { 0x1f134, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 27423 { 0x1f135, UNICODE_NOT_PRESENT_OFFSET, 5336 }, 27424 { 0x1f136, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 27425 { 0x1f137, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 27426 { 0x1f138, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 27427 { 0x1f139, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 27428 { 0x1f13a, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 27429 { 0x1f13b, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 27430 { 0x1f13c, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 27431 { 0x1f13d, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 27432 { 0x1f13e, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 27433 { 0x1f13f, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 27434 { 0x1f140, UNICODE_NOT_PRESENT_OFFSET, 5319 }, 27435 { 0x1f141, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 27436 { 0x1f142, UNICODE_NOT_PRESENT_OFFSET, 6133 }, 27437 { 0x1f143, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 27438 { 0x1f144, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 27439 { 0x1f145, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 27440 { 0x1f146, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 27441 { 0x1f147, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 27442 { 0x1f148, UNICODE_NOT_PRESENT_OFFSET, 6135 }, 27443 { 0x1f149, UNICODE_NOT_PRESENT_OFFSET, 5331 }, 27444 { 0x1f14a, UNICODE_NOT_PRESENT_OFFSET, 15528 }, 27445 { 0x1f14b, UNICODE_NOT_PRESENT_OFFSET, 10556 }, 27446 { 0x1f14c, UNICODE_NOT_PRESENT_OFFSET, 15531 }, 27447 { 0x1f14d, UNICODE_NOT_PRESENT_OFFSET, 15534 }, 27448 { 0x1f14e, UNICODE_NOT_PRESENT_OFFSET, 15537 }, 27449 { 0x1f14f, UNICODE_NOT_PRESENT_OFFSET, 15541 }, 27450 { 0x1f16a, UNICODE_NOT_PRESENT_OFFSET, 15544 }, 27451 { 0x1f16b, UNICODE_NOT_PRESENT_OFFSET, 15547 }, 27452 { 0x1f190, UNICODE_NOT_PRESENT_OFFSET, 15550 }, 27453 { 0x1f200, UNICODE_NOT_PRESENT_OFFSET, 15553 }, 27454 { 0x1f201, UNICODE_NOT_PRESENT_OFFSET, 15560 }, 27455 { 0x1f202, UNICODE_NOT_PRESENT_OFFSET, 8848 }, 27456 { 0x1f210, UNICODE_NOT_PRESENT_OFFSET, 6433 }, 27457 { 0x1f211, UNICODE_NOT_PRESENT_OFFSET, 15567 }, 27458 { 0x1f212, UNICODE_NOT_PRESENT_OFFSET, 15571 }, 27459 { 0x1f213, UNICODE_NOT_PRESENT_OFFSET, 7346 }, 27460 { 0x1f214, UNICODE_NOT_PRESENT_OFFSET, 6205 }, 27461 { 0x1f215, UNICODE_NOT_PRESENT_OFFSET, 15575 }, 27462 { 0x1f216, UNICODE_NOT_PRESENT_OFFSET, 15579 }, 27463 { 0x1f217, UNICODE_NOT_PRESENT_OFFSET, 7887 }, 27464 { 0x1f218, UNICODE_NOT_PRESENT_OFFSET, 15583 }, 27465 { 0x1f219, UNICODE_NOT_PRESENT_OFFSET, 15587 }, 27466 { 0x1f21a, UNICODE_NOT_PRESENT_OFFSET, 15591 }, 27467 { 0x1f21b, UNICODE_NOT_PRESENT_OFFSET, 11619 }, 27468 { 0x1f21c, UNICODE_NOT_PRESENT_OFFSET, 15595 }, 27469 { 0x1f21d, UNICODE_NOT_PRESENT_OFFSET, 15599 }, 27470 { 0x1f21e, UNICODE_NOT_PRESENT_OFFSET, 15603 }, 27471 { 0x1f21f, UNICODE_NOT_PRESENT_OFFSET, 15607 }, 27472 { 0x1f220, UNICODE_NOT_PRESENT_OFFSET, 15611 }, 27473 { 0x1f221, UNICODE_NOT_PRESENT_OFFSET, 15615 }, 27474 { 0x1f222, UNICODE_NOT_PRESENT_OFFSET, 6577 }, 27475 { 0x1f223, UNICODE_NOT_PRESENT_OFFSET, 15619 }, 27476 { 0x1f224, UNICODE_NOT_PRESENT_OFFSET, 15623 }, 27477 { 0x1f225, UNICODE_NOT_PRESENT_OFFSET, 15627 }, 27478 { 0x1f226, UNICODE_NOT_PRESENT_OFFSET, 15631 }, 27479 { 0x1f227, UNICODE_NOT_PRESENT_OFFSET, 15635 }, 27480 { 0x1f228, UNICODE_NOT_PRESENT_OFFSET, 15639 }, 27481 { 0x1f229, UNICODE_NOT_PRESENT_OFFSET, 6181 }, 27482 { 0x1f22a, UNICODE_NOT_PRESENT_OFFSET, 7855 }, 27483 { 0x1f22b, UNICODE_NOT_PRESENT_OFFSET, 15643 }, 27484 { 0x1f22c, UNICODE_NOT_PRESENT_OFFSET, 8646 }, 27485 { 0x1f22d, UNICODE_NOT_PRESENT_OFFSET, 7867 }, 27486 { 0x1f22e, UNICODE_NOT_PRESENT_OFFSET, 8650 }, 27487 { 0x1f22f, UNICODE_NOT_PRESENT_OFFSET, 15647 }, 27488 { 0x1f230, UNICODE_NOT_PRESENT_OFFSET, 6801 }, 27489 { 0x1f231, UNICODE_NOT_PRESENT_OFFSET, 15651 }, 27490 { 0x1f232, UNICODE_NOT_PRESENT_OFFSET, 15655 }, 27491 { 0x1f233, UNICODE_NOT_PRESENT_OFFSET, 15659 }, 27492 { 0x1f234, UNICODE_NOT_PRESENT_OFFSET, 15663 }, 27493 { 0x1f235, UNICODE_NOT_PRESENT_OFFSET, 15667 }, 27494 { 0x1f236, UNICODE_NOT_PRESENT_OFFSET, 8578 }, 27495 { 0x1f237, UNICODE_NOT_PRESENT_OFFSET, 6473 }, 27496 { 0x1f238, UNICODE_NOT_PRESENT_OFFSET, 15671 }, 27497 { 0x1f239, UNICODE_NOT_PRESENT_OFFSET, 15675 }, 27498 { 0x1f23a, UNICODE_NOT_PRESENT_OFFSET, 15679 }, 27499 { 0x1f23b, UNICODE_NOT_PRESENT_OFFSET, 15683 }, 27500 { 0x1f240, UNICODE_NOT_PRESENT_OFFSET, 15687 }, 27501 { 0x1f241, UNICODE_NOT_PRESENT_OFFSET, 15697 }, 27502 { 0x1f242, UNICODE_NOT_PRESENT_OFFSET, 15707 }, 27503 { 0x1f243, UNICODE_NOT_PRESENT_OFFSET, 15717 }, 27504 { 0x1f244, UNICODE_NOT_PRESENT_OFFSET, 15727 }, 27505 { 0x1f245, UNICODE_NOT_PRESENT_OFFSET, 15737 }, 27506 { 0x1f246, UNICODE_NOT_PRESENT_OFFSET, 15747 }, 27507 { 0x1f247, UNICODE_NOT_PRESENT_OFFSET, 15757 }, 27508 { 0x1f248, UNICODE_NOT_PRESENT_OFFSET, 15767 }, 27509 { 0x1f250, UNICODE_NOT_PRESENT_OFFSET, 15777 }, 27510 { 0x1f251, UNICODE_NOT_PRESENT_OFFSET, 15781 }, 27511 { 0x2f800, 15785, UNICODE_NOT_PRESENT_OFFSET }, 27512 { 0x2f801, 15789, UNICODE_NOT_PRESENT_OFFSET }, 27513 { 0x2f802, 15793, UNICODE_NOT_PRESENT_OFFSET }, 27514 { 0x2f803, 15797, UNICODE_NOT_PRESENT_OFFSET }, 27515 { 0x2f804, 15802, UNICODE_NOT_PRESENT_OFFSET }, 27516 { 0x2f805, 11991, UNICODE_NOT_PRESENT_OFFSET }, 27517 { 0x2f806, 15806, UNICODE_NOT_PRESENT_OFFSET }, 27518 { 0x2f807, 15810, UNICODE_NOT_PRESENT_OFFSET }, 27519 { 0x2f808, 15814, UNICODE_NOT_PRESENT_OFFSET }, 27520 { 0x2f809, 15818, UNICODE_NOT_PRESENT_OFFSET }, 27521 { 0x2f80a, 11995, UNICODE_NOT_PRESENT_OFFSET }, 27522 { 0x2f80b, 15822, UNICODE_NOT_PRESENT_OFFSET }, 27523 { 0x2f80c, 15826, UNICODE_NOT_PRESENT_OFFSET }, 27524 { 0x2f80d, 15830, UNICODE_NOT_PRESENT_OFFSET }, 27525 { 0x2f80e, 11999, UNICODE_NOT_PRESENT_OFFSET }, 27526 { 0x2f80f, 15835, UNICODE_NOT_PRESENT_OFFSET }, 27527 { 0x2f810, 15839, UNICODE_NOT_PRESENT_OFFSET }, 27528 { 0x2f811, 15843, UNICODE_NOT_PRESENT_OFFSET }, 27529 { 0x2f812, 15847, UNICODE_NOT_PRESENT_OFFSET }, 27530 { 0x2f813, 15852, UNICODE_NOT_PRESENT_OFFSET }, 27531 { 0x2f814, 15856, UNICODE_NOT_PRESENT_OFFSET }, 27532 { 0x2f815, 15603, UNICODE_NOT_PRESENT_OFFSET }, 27533 { 0x2f816, 15860, UNICODE_NOT_PRESENT_OFFSET }, 27534 { 0x2f817, 15865, UNICODE_NOT_PRESENT_OFFSET }, 27535 { 0x2f818, 15869, UNICODE_NOT_PRESENT_OFFSET }, 27536 { 0x2f819, 15873, UNICODE_NOT_PRESENT_OFFSET }, 27537 { 0x2f81a, 15877, UNICODE_NOT_PRESENT_OFFSET }, 27538 { 0x2f81b, 12220, UNICODE_NOT_PRESENT_OFFSET }, 27539 { 0x2f81c, 15881, UNICODE_NOT_PRESENT_OFFSET }, 27540 { 0x2f81d, 6245, UNICODE_NOT_PRESENT_OFFSET }, 27541 { 0x2f81e, 15886, UNICODE_NOT_PRESENT_OFFSET }, 27542 { 0x2f81f, 15890, UNICODE_NOT_PRESENT_OFFSET }, 27543 { 0x2f820, 15894, UNICODE_NOT_PRESENT_OFFSET }, 27544 { 0x2f821, 15898, UNICODE_NOT_PRESENT_OFFSET }, 27545 { 0x2f822, 15675, UNICODE_NOT_PRESENT_OFFSET }, 27546 { 0x2f823, 15902, UNICODE_NOT_PRESENT_OFFSET }, 27547 { 0x2f824, 15906, UNICODE_NOT_PRESENT_OFFSET }, 27548 { 0x2f825, 12240, UNICODE_NOT_PRESENT_OFFSET }, 27549 { 0x2f826, 12003, UNICODE_NOT_PRESENT_OFFSET }, 27550 { 0x2f827, 12007, UNICODE_NOT_PRESENT_OFFSET }, 27551 { 0x2f828, 12244, UNICODE_NOT_PRESENT_OFFSET }, 27552 { 0x2f829, 15910, UNICODE_NOT_PRESENT_OFFSET }, 27553 { 0x2f82a, 15914, UNICODE_NOT_PRESENT_OFFSET }, 27554 { 0x2f82b, 11275, UNICODE_NOT_PRESENT_OFFSET }, 27555 { 0x2f82c, 15918, UNICODE_NOT_PRESENT_OFFSET }, 27556 { 0x2f82d, 12011, UNICODE_NOT_PRESENT_OFFSET }, 27557 { 0x2f82e, 15922, UNICODE_NOT_PRESENT_OFFSET }, 27558 { 0x2f82f, 15926, UNICODE_NOT_PRESENT_OFFSET }, 27559 { 0x2f830, 15930, UNICODE_NOT_PRESENT_OFFSET }, 27560 { 0x2f831, 15934, UNICODE_NOT_PRESENT_OFFSET }, 27561 { 0x2f832, 15934, UNICODE_NOT_PRESENT_OFFSET }, 27562 { 0x2f833, 15934, UNICODE_NOT_PRESENT_OFFSET }, 27563 { 0x2f834, 15938, UNICODE_NOT_PRESENT_OFFSET }, 27564 { 0x2f835, 15943, UNICODE_NOT_PRESENT_OFFSET }, 27565 { 0x2f836, 15947, UNICODE_NOT_PRESENT_OFFSET }, 27566 { 0x2f837, 15951, UNICODE_NOT_PRESENT_OFFSET }, 27567 { 0x2f838, 15955, UNICODE_NOT_PRESENT_OFFSET }, 27568 { 0x2f839, 15960, UNICODE_NOT_PRESENT_OFFSET }, 27569 { 0x2f83a, 15964, UNICODE_NOT_PRESENT_OFFSET }, 27570 { 0x2f83b, 15968, UNICODE_NOT_PRESENT_OFFSET }, 27571 { 0x2f83c, 15972, UNICODE_NOT_PRESENT_OFFSET }, 27572 { 0x2f83d, 15976, UNICODE_NOT_PRESENT_OFFSET }, 27573 { 0x2f83e, 15980, UNICODE_NOT_PRESENT_OFFSET }, 27574 { 0x2f83f, 15984, UNICODE_NOT_PRESENT_OFFSET }, 27575 { 0x2f840, 15988, UNICODE_NOT_PRESENT_OFFSET }, 27576 { 0x2f841, 15992, UNICODE_NOT_PRESENT_OFFSET }, 27577 { 0x2f842, 15996, UNICODE_NOT_PRESENT_OFFSET }, 27578 { 0x2f843, 16000, UNICODE_NOT_PRESENT_OFFSET }, 27579 { 0x2f844, 16004, UNICODE_NOT_PRESENT_OFFSET }, 27580 { 0x2f845, 16008, UNICODE_NOT_PRESENT_OFFSET }, 27581 { 0x2f846, 16008, UNICODE_NOT_PRESENT_OFFSET }, 27582 { 0x2f847, 12252, UNICODE_NOT_PRESENT_OFFSET }, 27583 { 0x2f848, 16012, UNICODE_NOT_PRESENT_OFFSET }, 27584 { 0x2f849, 16016, UNICODE_NOT_PRESENT_OFFSET }, 27585 { 0x2f84a, 16020, UNICODE_NOT_PRESENT_OFFSET }, 27586 { 0x2f84b, 16024, UNICODE_NOT_PRESENT_OFFSET }, 27587 { 0x2f84c, 12019, UNICODE_NOT_PRESENT_OFFSET }, 27588 { 0x2f84d, 16028, UNICODE_NOT_PRESENT_OFFSET }, 27589 { 0x2f84e, 16032, UNICODE_NOT_PRESENT_OFFSET }, 27590 { 0x2f84f, 16036, UNICODE_NOT_PRESENT_OFFSET }, 27591 { 0x2f850, 11859, UNICODE_NOT_PRESENT_OFFSET }, 27592 { 0x2f851, 16040, UNICODE_NOT_PRESENT_OFFSET }, 27593 { 0x2f852, 16044, UNICODE_NOT_PRESENT_OFFSET }, 27594 { 0x2f853, 16048, UNICODE_NOT_PRESENT_OFFSET }, 27595 { 0x2f854, 16052, UNICODE_NOT_PRESENT_OFFSET }, 27596 { 0x2f855, 16056, UNICODE_NOT_PRESENT_OFFSET }, 27597 { 0x2f856, 16060, UNICODE_NOT_PRESENT_OFFSET }, 27598 { 0x2f857, 16064, UNICODE_NOT_PRESENT_OFFSET }, 27599 { 0x2f858, 16068, UNICODE_NOT_PRESENT_OFFSET }, 27600 { 0x2f859, 16072, UNICODE_NOT_PRESENT_OFFSET }, 27601 { 0x2f85a, 16077, UNICODE_NOT_PRESENT_OFFSET }, 27602 { 0x2f85b, 16081, UNICODE_NOT_PRESENT_OFFSET }, 27603 { 0x2f85c, 16085, UNICODE_NOT_PRESENT_OFFSET }, 27604 { 0x2f85d, 15575, UNICODE_NOT_PRESENT_OFFSET }, 27605 { 0x2f85e, 16089, UNICODE_NOT_PRESENT_OFFSET }, 27606 { 0x2f85f, 16093, UNICODE_NOT_PRESENT_OFFSET }, 27607 { 0x2f860, 16097, UNICODE_NOT_PRESENT_OFFSET }, 27608 { 0x2f861, 16102, UNICODE_NOT_PRESENT_OFFSET }, 27609 { 0x2f862, 16107, UNICODE_NOT_PRESENT_OFFSET }, 27610 { 0x2f863, 16111, UNICODE_NOT_PRESENT_OFFSET }, 27611 { 0x2f864, 16115, UNICODE_NOT_PRESENT_OFFSET }, 27612 { 0x2f865, 16119, UNICODE_NOT_PRESENT_OFFSET }, 27613 { 0x2f866, 16123, UNICODE_NOT_PRESENT_OFFSET }, 27614 { 0x2f867, 16127, UNICODE_NOT_PRESENT_OFFSET }, 27615 { 0x2f868, 16131, UNICODE_NOT_PRESENT_OFFSET }, 27616 { 0x2f869, 16135, UNICODE_NOT_PRESENT_OFFSET }, 27617 { 0x2f86a, 16139, UNICODE_NOT_PRESENT_OFFSET }, 27618 { 0x2f86b, 16139, UNICODE_NOT_PRESENT_OFFSET }, 27619 { 0x2f86c, 16143, UNICODE_NOT_PRESENT_OFFSET }, 27620 { 0x2f86d, 16148, UNICODE_NOT_PRESENT_OFFSET }, 27621 { 0x2f86e, 16152, UNICODE_NOT_PRESENT_OFFSET }, 27622 { 0x2f86f, 11259, UNICODE_NOT_PRESENT_OFFSET }, 27623 { 0x2f870, 16156, UNICODE_NOT_PRESENT_OFFSET }, 27624 { 0x2f871, 16160, UNICODE_NOT_PRESENT_OFFSET }, 27625 { 0x2f872, 16165, UNICODE_NOT_PRESENT_OFFSET }, 27626 { 0x2f873, 16169, UNICODE_NOT_PRESENT_OFFSET }, 27627 { 0x2f874, 16173, UNICODE_NOT_PRESENT_OFFSET }, 27628 { 0x2f875, 6349, UNICODE_NOT_PRESENT_OFFSET }, 27629 { 0x2f876, 16177, UNICODE_NOT_PRESENT_OFFSET }, 27630 { 0x2f877, 16181, UNICODE_NOT_PRESENT_OFFSET }, 27631 { 0x2f878, 6357, UNICODE_NOT_PRESENT_OFFSET }, 27632 { 0x2f879, 16185, UNICODE_NOT_PRESENT_OFFSET }, 27633 { 0x2f87a, 16189, UNICODE_NOT_PRESENT_OFFSET }, 27634 { 0x2f87b, 16193, UNICODE_NOT_PRESENT_OFFSET }, 27635 { 0x2f87c, 16198, UNICODE_NOT_PRESENT_OFFSET }, 27636 { 0x2f87d, 16202, UNICODE_NOT_PRESENT_OFFSET }, 27637 { 0x2f87e, 16207, UNICODE_NOT_PRESENT_OFFSET }, 27638 { 0x2f87f, 16211, UNICODE_NOT_PRESENT_OFFSET }, 27639 { 0x2f880, 16215, UNICODE_NOT_PRESENT_OFFSET }, 27640 { 0x2f881, 16219, UNICODE_NOT_PRESENT_OFFSET }, 27641 { 0x2f882, 16223, UNICODE_NOT_PRESENT_OFFSET }, 27642 { 0x2f883, 16227, UNICODE_NOT_PRESENT_OFFSET }, 27643 { 0x2f884, 16231, UNICODE_NOT_PRESENT_OFFSET }, 27644 { 0x2f885, 16235, UNICODE_NOT_PRESENT_OFFSET }, 27645 { 0x2f886, 16239, UNICODE_NOT_PRESENT_OFFSET }, 27646 { 0x2f887, 16243, UNICODE_NOT_PRESENT_OFFSET }, 27647 { 0x2f888, 16247, UNICODE_NOT_PRESENT_OFFSET }, 27648 { 0x2f889, 16251, UNICODE_NOT_PRESENT_OFFSET }, 27649 { 0x2f88a, 16256, UNICODE_NOT_PRESENT_OFFSET }, 27650 { 0x2f88b, 16260, UNICODE_NOT_PRESENT_OFFSET }, 27651 { 0x2f88c, 16264, UNICODE_NOT_PRESENT_OFFSET }, 27652 { 0x2f88d, 16268, UNICODE_NOT_PRESENT_OFFSET }, 27653 { 0x2f88e, 11051, UNICODE_NOT_PRESENT_OFFSET }, 27654 { 0x2f88f, 16272, UNICODE_NOT_PRESENT_OFFSET }, 27655 { 0x2f890, 6397, UNICODE_NOT_PRESENT_OFFSET }, 27656 { 0x2f891, 16277, UNICODE_NOT_PRESENT_OFFSET }, 27657 { 0x2f892, 16277, UNICODE_NOT_PRESENT_OFFSET }, 27658 { 0x2f893, 16282, UNICODE_NOT_PRESENT_OFFSET }, 27659 { 0x2f894, 16286, UNICODE_NOT_PRESENT_OFFSET }, 27660 { 0x2f895, 16286, UNICODE_NOT_PRESENT_OFFSET }, 27661 { 0x2f896, 16290, UNICODE_NOT_PRESENT_OFFSET }, 27662 { 0x2f897, 16294, UNICODE_NOT_PRESENT_OFFSET }, 27663 { 0x2f898, 16299, UNICODE_NOT_PRESENT_OFFSET }, 27664 { 0x2f899, 16304, UNICODE_NOT_PRESENT_OFFSET }, 27665 { 0x2f89a, 16308, UNICODE_NOT_PRESENT_OFFSET }, 27666 { 0x2f89b, 16312, UNICODE_NOT_PRESENT_OFFSET }, 27667 { 0x2f89c, 16316, UNICODE_NOT_PRESENT_OFFSET }, 27668 { 0x2f89d, 16320, UNICODE_NOT_PRESENT_OFFSET }, 27669 { 0x2f89e, 16324, UNICODE_NOT_PRESENT_OFFSET }, 27670 { 0x2f89f, 16328, UNICODE_NOT_PRESENT_OFFSET }, 27671 { 0x2f8a0, 16332, UNICODE_NOT_PRESENT_OFFSET }, 27672 { 0x2f8a1, 16336, UNICODE_NOT_PRESENT_OFFSET }, 27673 { 0x2f8a2, 16340, UNICODE_NOT_PRESENT_OFFSET }, 27674 { 0x2f8a3, 12039, UNICODE_NOT_PRESENT_OFFSET }, 27675 { 0x2f8a4, 16344, UNICODE_NOT_PRESENT_OFFSET }, 27676 { 0x2f8a5, 16349, UNICODE_NOT_PRESENT_OFFSET }, 27677 { 0x2f8a6, 16353, UNICODE_NOT_PRESENT_OFFSET }, 27678 { 0x2f8a7, 16357, UNICODE_NOT_PRESENT_OFFSET }, 27679 { 0x2f8a8, 12300, UNICODE_NOT_PRESENT_OFFSET }, 27680 { 0x2f8a9, 16357, UNICODE_NOT_PRESENT_OFFSET }, 27681 { 0x2f8aa, 16361, UNICODE_NOT_PRESENT_OFFSET }, 27682 { 0x2f8ab, 12047, UNICODE_NOT_PRESENT_OFFSET }, 27683 { 0x2f8ac, 16365, UNICODE_NOT_PRESENT_OFFSET }, 27684 { 0x2f8ad, 16369, UNICODE_NOT_PRESENT_OFFSET }, 27685 { 0x2f8ae, 16373, UNICODE_NOT_PRESENT_OFFSET }, 27686 { 0x2f8af, 16377, UNICODE_NOT_PRESENT_OFFSET }, 27687 { 0x2f8b0, 12051, UNICODE_NOT_PRESENT_OFFSET }, 27688 { 0x2f8b1, 10943, UNICODE_NOT_PRESENT_OFFSET }, 27689 { 0x2f8b2, 16381, UNICODE_NOT_PRESENT_OFFSET }, 27690 { 0x2f8b3, 16385, UNICODE_NOT_PRESENT_OFFSET }, 27691 { 0x2f8b4, 16389, UNICODE_NOT_PRESENT_OFFSET }, 27692 { 0x2f8b5, 16393, UNICODE_NOT_PRESENT_OFFSET }, 27693 { 0x2f8b6, 16397, UNICODE_NOT_PRESENT_OFFSET }, 27694 { 0x2f8b7, 16401, UNICODE_NOT_PRESENT_OFFSET }, 27695 { 0x2f8b8, 16405, UNICODE_NOT_PRESENT_OFFSET }, 27696 { 0x2f8b9, 16410, UNICODE_NOT_PRESENT_OFFSET }, 27697 { 0x2f8ba, 16414, UNICODE_NOT_PRESENT_OFFSET }, 27698 { 0x2f8bb, 16418, UNICODE_NOT_PRESENT_OFFSET }, 27699 { 0x2f8bc, 16422, UNICODE_NOT_PRESENT_OFFSET }, 27700 { 0x2f8bd, 16426, UNICODE_NOT_PRESENT_OFFSET }, 27701 { 0x2f8be, 16430, UNICODE_NOT_PRESENT_OFFSET }, 27702 { 0x2f8bf, 16435, UNICODE_NOT_PRESENT_OFFSET }, 27703 { 0x2f8c0, 16439, UNICODE_NOT_PRESENT_OFFSET }, 27704 { 0x2f8c1, 16443, UNICODE_NOT_PRESENT_OFFSET }, 27705 { 0x2f8c2, 16447, UNICODE_NOT_PRESENT_OFFSET }, 27706 { 0x2f8c3, 16451, UNICODE_NOT_PRESENT_OFFSET }, 27707 { 0x2f8c4, 16455, UNICODE_NOT_PRESENT_OFFSET }, 27708 { 0x2f8c5, 16459, UNICODE_NOT_PRESENT_OFFSET }, 27709 { 0x2f8c6, 16463, UNICODE_NOT_PRESENT_OFFSET }, 27710 { 0x2f8c7, 16467, UNICODE_NOT_PRESENT_OFFSET }, 27711 { 0x2f8c8, 12055, UNICODE_NOT_PRESENT_OFFSET }, 27712 { 0x2f8c9, 16471, UNICODE_NOT_PRESENT_OFFSET }, 27713 { 0x2f8ca, 16475, UNICODE_NOT_PRESENT_OFFSET }, 27714 { 0x2f8cb, 16480, UNICODE_NOT_PRESENT_OFFSET }, 27715 { 0x2f8cc, 16484, UNICODE_NOT_PRESENT_OFFSET }, 27716 { 0x2f8cd, 16488, UNICODE_NOT_PRESENT_OFFSET }, 27717 { 0x2f8ce, 16492, UNICODE_NOT_PRESENT_OFFSET }, 27718 { 0x2f8cf, 12063, UNICODE_NOT_PRESENT_OFFSET }, 27719 { 0x2f8d0, 16496, UNICODE_NOT_PRESENT_OFFSET }, 27720 { 0x2f8d1, 16500, UNICODE_NOT_PRESENT_OFFSET }, 27721 { 0x2f8d2, 16504, UNICODE_NOT_PRESENT_OFFSET }, 27722 { 0x2f8d3, 16508, UNICODE_NOT_PRESENT_OFFSET }, 27723 { 0x2f8d4, 16512, UNICODE_NOT_PRESENT_OFFSET }, 27724 { 0x2f8d5, 16516, UNICODE_NOT_PRESENT_OFFSET }, 27725 { 0x2f8d6, 16520, UNICODE_NOT_PRESENT_OFFSET }, 27726 { 0x2f8d7, 16524, UNICODE_NOT_PRESENT_OFFSET }, 27727 { 0x2f8d8, 11055, UNICODE_NOT_PRESENT_OFFSET }, 27728 { 0x2f8d9, 12332, UNICODE_NOT_PRESENT_OFFSET }, 27729 { 0x2f8da, 16528, UNICODE_NOT_PRESENT_OFFSET }, 27730 { 0x2f8db, 16532, UNICODE_NOT_PRESENT_OFFSET }, 27731 { 0x2f8dc, 16536, UNICODE_NOT_PRESENT_OFFSET }, 27732 { 0x2f8dd, 16540, UNICODE_NOT_PRESENT_OFFSET }, 27733 { 0x2f8de, 16545, UNICODE_NOT_PRESENT_OFFSET }, 27734 { 0x2f8df, 16549, UNICODE_NOT_PRESENT_OFFSET }, 27735 { 0x2f8e0, 16553, UNICODE_NOT_PRESENT_OFFSET }, 27736 { 0x2f8e1, 16557, UNICODE_NOT_PRESENT_OFFSET }, 27737 { 0x2f8e2, 12067, UNICODE_NOT_PRESENT_OFFSET }, 27738 { 0x2f8e3, 16561, UNICODE_NOT_PRESENT_OFFSET }, 27739 { 0x2f8e4, 16566, UNICODE_NOT_PRESENT_OFFSET }, 27740 { 0x2f8e5, 16570, UNICODE_NOT_PRESENT_OFFSET }, 27741 { 0x2f8e6, 16574, UNICODE_NOT_PRESENT_OFFSET }, 27742 { 0x2f8e7, 12503, UNICODE_NOT_PRESENT_OFFSET }, 27743 { 0x2f8e8, 16578, UNICODE_NOT_PRESENT_OFFSET }, 27744 { 0x2f8e9, 16582, UNICODE_NOT_PRESENT_OFFSET }, 27745 { 0x2f8ea, 16586, UNICODE_NOT_PRESENT_OFFSET }, 27746 { 0x2f8eb, 16590, UNICODE_NOT_PRESENT_OFFSET }, 27747 { 0x2f8ec, 16594, UNICODE_NOT_PRESENT_OFFSET }, 27748 { 0x2f8ed, 16599, UNICODE_NOT_PRESENT_OFFSET }, 27749 { 0x2f8ee, 16603, UNICODE_NOT_PRESENT_OFFSET }, 27750 { 0x2f8ef, 16607, UNICODE_NOT_PRESENT_OFFSET }, 27751 { 0x2f8f0, 16611, UNICODE_NOT_PRESENT_OFFSET }, 27752 { 0x2f8f1, 16616, UNICODE_NOT_PRESENT_OFFSET }, 27753 { 0x2f8f2, 16620, UNICODE_NOT_PRESENT_OFFSET }, 27754 { 0x2f8f3, 16624, UNICODE_NOT_PRESENT_OFFSET }, 27755 { 0x2f8f4, 16628, UNICODE_NOT_PRESENT_OFFSET }, 27756 { 0x2f8f5, 11327, UNICODE_NOT_PRESENT_OFFSET }, 27757 { 0x2f8f6, 16632, UNICODE_NOT_PRESENT_OFFSET }, 27758 { 0x2f8f7, 16636, UNICODE_NOT_PRESENT_OFFSET }, 27759 { 0x2f8f8, 16641, UNICODE_NOT_PRESENT_OFFSET }, 27760 { 0x2f8f9, 16646, UNICODE_NOT_PRESENT_OFFSET }, 27761 { 0x2f8fa, 16651, UNICODE_NOT_PRESENT_OFFSET }, 27762 { 0x2f8fb, 16655, UNICODE_NOT_PRESENT_OFFSET }, 27763 { 0x2f8fc, 16660, UNICODE_NOT_PRESENT_OFFSET }, 27764 { 0x2f8fd, 16664, UNICODE_NOT_PRESENT_OFFSET }, 27765 { 0x2f8fe, 16668, UNICODE_NOT_PRESENT_OFFSET }, 27766 { 0x2f8ff, 16672, UNICODE_NOT_PRESENT_OFFSET }, 27767 { 0x2f900, 16676, UNICODE_NOT_PRESENT_OFFSET }, 27768 { 0x2f901, 12071, UNICODE_NOT_PRESENT_OFFSET }, 27769 { 0x2f902, 11659, UNICODE_NOT_PRESENT_OFFSET }, 27770 { 0x2f903, 16680, UNICODE_NOT_PRESENT_OFFSET }, 27771 { 0x2f904, 16684, UNICODE_NOT_PRESENT_OFFSET }, 27772 { 0x2f905, 16688, UNICODE_NOT_PRESENT_OFFSET }, 27773 { 0x2f906, 16692, UNICODE_NOT_PRESENT_OFFSET }, 27774 { 0x2f907, 16697, UNICODE_NOT_PRESENT_OFFSET }, 27775 { 0x2f908, 16701, UNICODE_NOT_PRESENT_OFFSET }, 27776 { 0x2f909, 16705, UNICODE_NOT_PRESENT_OFFSET }, 27777 { 0x2f90a, 16709, UNICODE_NOT_PRESENT_OFFSET }, 27778 { 0x2f90b, 12344, UNICODE_NOT_PRESENT_OFFSET }, 27779 { 0x2f90c, 16713, UNICODE_NOT_PRESENT_OFFSET }, 27780 { 0x2f90d, 16717, UNICODE_NOT_PRESENT_OFFSET }, 27781 { 0x2f90e, 16722, UNICODE_NOT_PRESENT_OFFSET }, 27782 { 0x2f90f, 16726, UNICODE_NOT_PRESENT_OFFSET }, 27783 { 0x2f910, 16730, UNICODE_NOT_PRESENT_OFFSET }, 27784 { 0x2f911, 16735, UNICODE_NOT_PRESENT_OFFSET }, 27785 { 0x2f912, 16740, UNICODE_NOT_PRESENT_OFFSET }, 27786 { 0x2f913, 16744, UNICODE_NOT_PRESENT_OFFSET }, 27787 { 0x2f914, 12348, UNICODE_NOT_PRESENT_OFFSET }, 27788 { 0x2f915, 16748, UNICODE_NOT_PRESENT_OFFSET }, 27789 { 0x2f916, 16752, UNICODE_NOT_PRESENT_OFFSET }, 27790 { 0x2f917, 16756, UNICODE_NOT_PRESENT_OFFSET }, 27791 { 0x2f918, 16760, UNICODE_NOT_PRESENT_OFFSET }, 27792 { 0x2f919, 16764, UNICODE_NOT_PRESENT_OFFSET }, 27793 { 0x2f91a, 16768, UNICODE_NOT_PRESENT_OFFSET }, 27794 { 0x2f91b, 16772, UNICODE_NOT_PRESENT_OFFSET }, 27795 { 0x2f91c, 16777, UNICODE_NOT_PRESENT_OFFSET }, 27796 { 0x2f91d, 16781, UNICODE_NOT_PRESENT_OFFSET }, 27797 { 0x2f91e, 16786, UNICODE_NOT_PRESENT_OFFSET }, 27798 { 0x2f91f, 16790, UNICODE_NOT_PRESENT_OFFSET }, 27799 { 0x2f920, 16795, UNICODE_NOT_PRESENT_OFFSET }, 27800 { 0x2f921, 12356, UNICODE_NOT_PRESENT_OFFSET }, 27801 { 0x2f922, 16799, UNICODE_NOT_PRESENT_OFFSET }, 27802 { 0x2f923, 16803, UNICODE_NOT_PRESENT_OFFSET }, 27803 { 0x2f924, 16808, UNICODE_NOT_PRESENT_OFFSET }, 27804 { 0x2f925, 16812, UNICODE_NOT_PRESENT_OFFSET }, 27805 { 0x2f926, 16816, UNICODE_NOT_PRESENT_OFFSET }, 27806 { 0x2f927, 16821, UNICODE_NOT_PRESENT_OFFSET }, 27807 { 0x2f928, 16826, UNICODE_NOT_PRESENT_OFFSET }, 27808 { 0x2f929, 16830, UNICODE_NOT_PRESENT_OFFSET }, 27809 { 0x2f92a, 16834, UNICODE_NOT_PRESENT_OFFSET }, 27810 { 0x2f92b, 16838, UNICODE_NOT_PRESENT_OFFSET }, 27811 { 0x2f92c, 16842, UNICODE_NOT_PRESENT_OFFSET }, 27812 { 0x2f92d, 16842, UNICODE_NOT_PRESENT_OFFSET }, 27813 { 0x2f92e, 16846, UNICODE_NOT_PRESENT_OFFSET }, 27814 { 0x2f92f, 16850, UNICODE_NOT_PRESENT_OFFSET }, 27815 { 0x2f930, 12364, UNICODE_NOT_PRESENT_OFFSET }, 27816 { 0x2f931, 16854, UNICODE_NOT_PRESENT_OFFSET }, 27817 { 0x2f932, 16858, UNICODE_NOT_PRESENT_OFFSET }, 27818 { 0x2f933, 16862, UNICODE_NOT_PRESENT_OFFSET }, 27819 { 0x2f934, 16866, UNICODE_NOT_PRESENT_OFFSET }, 27820 { 0x2f935, 16870, UNICODE_NOT_PRESENT_OFFSET }, 27821 { 0x2f936, 16875, UNICODE_NOT_PRESENT_OFFSET }, 27822 { 0x2f937, 16879, UNICODE_NOT_PRESENT_OFFSET }, 27823 { 0x2f938, 11271, UNICODE_NOT_PRESENT_OFFSET }, 27824 { 0x2f939, 16884, UNICODE_NOT_PRESENT_OFFSET }, 27825 { 0x2f93a, 16889, UNICODE_NOT_PRESENT_OFFSET }, 27826 { 0x2f93b, 16893, UNICODE_NOT_PRESENT_OFFSET }, 27827 { 0x2f93c, 16898, UNICODE_NOT_PRESENT_OFFSET }, 27828 { 0x2f93d, 16903, UNICODE_NOT_PRESENT_OFFSET }, 27829 { 0x2f93e, 16908, UNICODE_NOT_PRESENT_OFFSET }, 27830 { 0x2f93f, 16912, UNICODE_NOT_PRESENT_OFFSET }, 27831 { 0x2f940, 12388, UNICODE_NOT_PRESENT_OFFSET }, 27832 { 0x2f941, 16916, UNICODE_NOT_PRESENT_OFFSET }, 27833 { 0x2f942, 16921, UNICODE_NOT_PRESENT_OFFSET }, 27834 { 0x2f943, 16926, UNICODE_NOT_PRESENT_OFFSET }, 27835 { 0x2f944, 16931, UNICODE_NOT_PRESENT_OFFSET }, 27836 { 0x2f945, 16936, UNICODE_NOT_PRESENT_OFFSET }, 27837 { 0x2f946, 16940, UNICODE_NOT_PRESENT_OFFSET }, 27838 { 0x2f947, 16940, UNICODE_NOT_PRESENT_OFFSET }, 27839 { 0x2f948, 12392, UNICODE_NOT_PRESENT_OFFSET }, 27840 { 0x2f949, 12511, UNICODE_NOT_PRESENT_OFFSET }, 27841 { 0x2f94a, 16944, UNICODE_NOT_PRESENT_OFFSET }, 27842 { 0x2f94b, 16948, UNICODE_NOT_PRESENT_OFFSET }, 27843 { 0x2f94c, 16952, UNICODE_NOT_PRESENT_OFFSET }, 27844 { 0x2f94d, 16956, UNICODE_NOT_PRESENT_OFFSET }, 27845 { 0x2f94e, 16961, UNICODE_NOT_PRESENT_OFFSET }, 27846 { 0x2f94f, 11123, UNICODE_NOT_PRESENT_OFFSET }, 27847 { 0x2f950, 12400, UNICODE_NOT_PRESENT_OFFSET }, 27848 { 0x2f951, 16965, UNICODE_NOT_PRESENT_OFFSET }, 27849 { 0x2f952, 16969, UNICODE_NOT_PRESENT_OFFSET }, 27850 { 0x2f953, 12111, UNICODE_NOT_PRESENT_OFFSET }, 27851 { 0x2f954, 16974, UNICODE_NOT_PRESENT_OFFSET }, 27852 { 0x2f955, 16979, UNICODE_NOT_PRESENT_OFFSET }, 27853 { 0x2f956, 11939, UNICODE_NOT_PRESENT_OFFSET }, 27854 { 0x2f957, 16984, UNICODE_NOT_PRESENT_OFFSET }, 27855 { 0x2f958, 16988, UNICODE_NOT_PRESENT_OFFSET }, 27856 { 0x2f959, 12123, UNICODE_NOT_PRESENT_OFFSET }, 27857 { 0x2f95a, 16992, UNICODE_NOT_PRESENT_OFFSET }, 27858 { 0x2f95b, 16996, UNICODE_NOT_PRESENT_OFFSET }, 27859 { 0x2f95c, 17000, UNICODE_NOT_PRESENT_OFFSET }, 27860 { 0x2f95d, 17005, UNICODE_NOT_PRESENT_OFFSET }, 27861 { 0x2f95e, 17005, UNICODE_NOT_PRESENT_OFFSET }, 27862 { 0x2f95f, 17010, UNICODE_NOT_PRESENT_OFFSET }, 27863 { 0x2f960, 17014, UNICODE_NOT_PRESENT_OFFSET }, 27864 { 0x2f961, 17018, UNICODE_NOT_PRESENT_OFFSET }, 27865 { 0x2f962, 17023, UNICODE_NOT_PRESENT_OFFSET }, 27866 { 0x2f963, 17027, UNICODE_NOT_PRESENT_OFFSET }, 27867 { 0x2f964, 17031, UNICODE_NOT_PRESENT_OFFSET }, 27868 { 0x2f965, 17035, UNICODE_NOT_PRESENT_OFFSET }, 27869 { 0x2f966, 17040, UNICODE_NOT_PRESENT_OFFSET }, 27870 { 0x2f967, 17044, UNICODE_NOT_PRESENT_OFFSET }, 27871 { 0x2f968, 17048, UNICODE_NOT_PRESENT_OFFSET }, 27872 { 0x2f969, 17052, UNICODE_NOT_PRESENT_OFFSET }, 27873 { 0x2f96a, 17056, UNICODE_NOT_PRESENT_OFFSET }, 27874 { 0x2f96b, 17060, UNICODE_NOT_PRESENT_OFFSET }, 27875 { 0x2f96c, 17065, UNICODE_NOT_PRESENT_OFFSET }, 27876 { 0x2f96d, 17069, UNICODE_NOT_PRESENT_OFFSET }, 27877 { 0x2f96e, 17073, UNICODE_NOT_PRESENT_OFFSET }, 27878 { 0x2f96f, 17077, UNICODE_NOT_PRESENT_OFFSET }, 27879 { 0x2f970, 17081, UNICODE_NOT_PRESENT_OFFSET }, 27880 { 0x2f971, 17085, UNICODE_NOT_PRESENT_OFFSET }, 27881 { 0x2f972, 17089, UNICODE_NOT_PRESENT_OFFSET }, 27882 { 0x2f973, 17094, UNICODE_NOT_PRESENT_OFFSET }, 27883 { 0x2f974, 17099, UNICODE_NOT_PRESENT_OFFSET }, 27884 { 0x2f975, 17103, UNICODE_NOT_PRESENT_OFFSET }, 27885 { 0x2f976, 17108, UNICODE_NOT_PRESENT_OFFSET }, 27886 { 0x2f977, 17112, UNICODE_NOT_PRESENT_OFFSET }, 27887 { 0x2f978, 17117, UNICODE_NOT_PRESENT_OFFSET }, 27888 { 0x2f979, 17121, UNICODE_NOT_PRESENT_OFFSET }, 27889 { 0x2f97a, 12147, UNICODE_NOT_PRESENT_OFFSET }, 27890 { 0x2f97b, 17125, UNICODE_NOT_PRESENT_OFFSET }, 27891 { 0x2f97c, 17130, UNICODE_NOT_PRESENT_OFFSET }, 27892 { 0x2f97d, 17135, UNICODE_NOT_PRESENT_OFFSET }, 27893 { 0x2f97e, 17139, UNICODE_NOT_PRESENT_OFFSET }, 27894 { 0x2f97f, 17144, UNICODE_NOT_PRESENT_OFFSET }, 27895 { 0x2f980, 17148, UNICODE_NOT_PRESENT_OFFSET }, 27896 { 0x2f981, 17153, UNICODE_NOT_PRESENT_OFFSET }, 27897 { 0x2f982, 17157, UNICODE_NOT_PRESENT_OFFSET }, 27898 { 0x2f983, 17161, UNICODE_NOT_PRESENT_OFFSET }, 27899 { 0x2f984, 17165, UNICODE_NOT_PRESENT_OFFSET }, 27900 { 0x2f985, 17169, UNICODE_NOT_PRESENT_OFFSET }, 27901 { 0x2f986, 17173, UNICODE_NOT_PRESENT_OFFSET }, 27902 { 0x2f987, 17177, UNICODE_NOT_PRESENT_OFFSET }, 27903 { 0x2f988, 17182, UNICODE_NOT_PRESENT_OFFSET }, 27904 { 0x2f989, 17187, UNICODE_NOT_PRESENT_OFFSET }, 27905 { 0x2f98a, 17192, UNICODE_NOT_PRESENT_OFFSET }, 27906 { 0x2f98b, 16282, UNICODE_NOT_PRESENT_OFFSET }, 27907 { 0x2f98c, 17197, UNICODE_NOT_PRESENT_OFFSET }, 27908 { 0x2f98d, 17201, UNICODE_NOT_PRESENT_OFFSET }, 27909 { 0x2f98e, 17205, UNICODE_NOT_PRESENT_OFFSET }, 27910 { 0x2f98f, 17209, UNICODE_NOT_PRESENT_OFFSET }, 27911 { 0x2f990, 17213, UNICODE_NOT_PRESENT_OFFSET }, 27912 { 0x2f991, 17217, UNICODE_NOT_PRESENT_OFFSET }, 27913 { 0x2f992, 17221, UNICODE_NOT_PRESENT_OFFSET }, 27914 { 0x2f993, 17225, UNICODE_NOT_PRESENT_OFFSET }, 27915 { 0x2f994, 17229, UNICODE_NOT_PRESENT_OFFSET }, 27916 { 0x2f995, 17233, UNICODE_NOT_PRESENT_OFFSET }, 27917 { 0x2f996, 17237, UNICODE_NOT_PRESENT_OFFSET }, 27918 { 0x2f997, 17241, UNICODE_NOT_PRESENT_OFFSET }, 27919 { 0x2f998, 11339, UNICODE_NOT_PRESENT_OFFSET }, 27920 { 0x2f999, 17246, UNICODE_NOT_PRESENT_OFFSET }, 27921 { 0x2f99a, 17250, UNICODE_NOT_PRESENT_OFFSET }, 27922 { 0x2f99b, 17254, UNICODE_NOT_PRESENT_OFFSET }, 27923 { 0x2f99c, 17258, UNICODE_NOT_PRESENT_OFFSET }, 27924 { 0x2f99d, 17262, UNICODE_NOT_PRESENT_OFFSET }, 27925 { 0x2f99e, 17266, UNICODE_NOT_PRESENT_OFFSET }, 27926 { 0x2f99f, 12159, UNICODE_NOT_PRESENT_OFFSET }, 27927 { 0x2f9a0, 17270, UNICODE_NOT_PRESENT_OFFSET }, 27928 { 0x2f9a1, 17274, UNICODE_NOT_PRESENT_OFFSET }, 27929 { 0x2f9a2, 17278, UNICODE_NOT_PRESENT_OFFSET }, 27930 { 0x2f9a3, 17282, UNICODE_NOT_PRESENT_OFFSET }, 27931 { 0x2f9a4, 17286, UNICODE_NOT_PRESENT_OFFSET }, 27932 { 0x2f9a5, 17291, UNICODE_NOT_PRESENT_OFFSET }, 27933 { 0x2f9a6, 17296, UNICODE_NOT_PRESENT_OFFSET }, 27934 { 0x2f9a7, 17301, UNICODE_NOT_PRESENT_OFFSET }, 27935 { 0x2f9a8, 17305, UNICODE_NOT_PRESENT_OFFSET }, 27936 { 0x2f9a9, 17309, UNICODE_NOT_PRESENT_OFFSET }, 27937 { 0x2f9aa, 17313, UNICODE_NOT_PRESENT_OFFSET }, 27938 { 0x2f9ab, 17317, UNICODE_NOT_PRESENT_OFFSET }, 27939 { 0x2f9ac, 17322, UNICODE_NOT_PRESENT_OFFSET }, 27940 { 0x2f9ad, 17326, UNICODE_NOT_PRESENT_OFFSET }, 27941 { 0x2f9ae, 17331, UNICODE_NOT_PRESENT_OFFSET }, 27942 { 0x2f9af, 17335, UNICODE_NOT_PRESENT_OFFSET }, 27943 { 0x2f9b0, 17339, UNICODE_NOT_PRESENT_OFFSET }, 27944 { 0x2f9b1, 17344, UNICODE_NOT_PRESENT_OFFSET }, 27945 { 0x2f9b2, 17349, UNICODE_NOT_PRESENT_OFFSET }, 27946 { 0x2f9b3, 17353, UNICODE_NOT_PRESENT_OFFSET }, 27947 { 0x2f9b4, 11103, UNICODE_NOT_PRESENT_OFFSET }, 27948 { 0x2f9b5, 17357, UNICODE_NOT_PRESENT_OFFSET }, 27949 { 0x2f9b6, 17361, UNICODE_NOT_PRESENT_OFFSET }, 27950 { 0x2f9b7, 17365, UNICODE_NOT_PRESENT_OFFSET }, 27951 { 0x2f9b8, 17369, UNICODE_NOT_PRESENT_OFFSET }, 27952 { 0x2f9b9, 17373, UNICODE_NOT_PRESENT_OFFSET }, 27953 { 0x2f9ba, 17377, UNICODE_NOT_PRESENT_OFFSET }, 27954 { 0x2f9bb, 12428, UNICODE_NOT_PRESENT_OFFSET }, 27955 { 0x2f9bc, 17381, UNICODE_NOT_PRESENT_OFFSET }, 27956 { 0x2f9bd, 17385, UNICODE_NOT_PRESENT_OFFSET }, 27957 { 0x2f9be, 17389, UNICODE_NOT_PRESENT_OFFSET }, 27958 { 0x2f9bf, 17393, UNICODE_NOT_PRESENT_OFFSET }, 27959 { 0x2f9c0, 17397, UNICODE_NOT_PRESENT_OFFSET }, 27960 { 0x2f9c1, 17401, UNICODE_NOT_PRESENT_OFFSET }, 27961 { 0x2f9c2, 17405, UNICODE_NOT_PRESENT_OFFSET }, 27962 { 0x2f9c3, 17409, UNICODE_NOT_PRESENT_OFFSET }, 27963 { 0x2f9c4, 6757, UNICODE_NOT_PRESENT_OFFSET }, 27964 { 0x2f9c5, 17413, UNICODE_NOT_PRESENT_OFFSET }, 27965 { 0x2f9c6, 17418, UNICODE_NOT_PRESENT_OFFSET }, 27966 { 0x2f9c7, 17422, UNICODE_NOT_PRESENT_OFFSET }, 27967 { 0x2f9c8, 17426, UNICODE_NOT_PRESENT_OFFSET }, 27968 { 0x2f9c9, 17430, UNICODE_NOT_PRESENT_OFFSET }, 27969 { 0x2f9ca, 17434, UNICODE_NOT_PRESENT_OFFSET }, 27970 { 0x2f9cb, 17438, UNICODE_NOT_PRESENT_OFFSET }, 27971 { 0x2f9cc, 17443, UNICODE_NOT_PRESENT_OFFSET }, 27972 { 0x2f9cd, 17448, UNICODE_NOT_PRESENT_OFFSET }, 27973 { 0x2f9ce, 17452, UNICODE_NOT_PRESENT_OFFSET }, 27974 { 0x2f9cf, 17456, UNICODE_NOT_PRESENT_OFFSET }, 27975 { 0x2f9d0, 12448, UNICODE_NOT_PRESENT_OFFSET }, 27976 { 0x2f9d1, 12452, UNICODE_NOT_PRESENT_OFFSET }, 27977 { 0x2f9d2, 6785, UNICODE_NOT_PRESENT_OFFSET }, 27978 { 0x2f9d3, 17460, UNICODE_NOT_PRESENT_OFFSET }, 27979 { 0x2f9d4, 17465, UNICODE_NOT_PRESENT_OFFSET }, 27980 { 0x2f9d5, 17469, UNICODE_NOT_PRESENT_OFFSET }, 27981 { 0x2f9d6, 17473, UNICODE_NOT_PRESENT_OFFSET }, 27982 { 0x2f9d7, 17477, UNICODE_NOT_PRESENT_OFFSET }, 27983 { 0x2f9d8, 17481, UNICODE_NOT_PRESENT_OFFSET }, 27984 { 0x2f9d9, 17486, UNICODE_NOT_PRESENT_OFFSET }, 27985 { 0x2f9da, 17491, UNICODE_NOT_PRESENT_OFFSET }, 27986 { 0x2f9db, 17495, UNICODE_NOT_PRESENT_OFFSET }, 27987 { 0x2f9dc, 17499, UNICODE_NOT_PRESENT_OFFSET }, 27988 { 0x2f9dd, 17503, UNICODE_NOT_PRESENT_OFFSET }, 27989 { 0x2f9de, 17508, UNICODE_NOT_PRESENT_OFFSET }, 27990 { 0x2f9df, 12456, UNICODE_NOT_PRESENT_OFFSET }, 27991 { 0x2f9e0, 17512, UNICODE_NOT_PRESENT_OFFSET }, 27992 { 0x2f9e1, 17517, UNICODE_NOT_PRESENT_OFFSET }, 27993 { 0x2f9e2, 17522, UNICODE_NOT_PRESENT_OFFSET }, 27994 { 0x2f9e3, 17526, UNICODE_NOT_PRESENT_OFFSET }, 27995 { 0x2f9e4, 17530, UNICODE_NOT_PRESENT_OFFSET }, 27996 { 0x2f9e5, 17534, UNICODE_NOT_PRESENT_OFFSET }, 27997 { 0x2f9e6, 17539, UNICODE_NOT_PRESENT_OFFSET }, 27998 { 0x2f9e7, 17543, UNICODE_NOT_PRESENT_OFFSET }, 27999 { 0x2f9e8, 17547, UNICODE_NOT_PRESENT_OFFSET }, 28000 { 0x2f9e9, 17551, UNICODE_NOT_PRESENT_OFFSET }, 28001 { 0x2f9ea, 17555, UNICODE_NOT_PRESENT_OFFSET }, 28002 { 0x2f9eb, 17559, UNICODE_NOT_PRESENT_OFFSET }, 28003 { 0x2f9ec, 17563, UNICODE_NOT_PRESENT_OFFSET }, 28004 { 0x2f9ed, 17567, UNICODE_NOT_PRESENT_OFFSET }, 28005 { 0x2f9ee, 17572, UNICODE_NOT_PRESENT_OFFSET }, 28006 { 0x2f9ef, 17576, UNICODE_NOT_PRESENT_OFFSET }, 28007 { 0x2f9f0, 17580, UNICODE_NOT_PRESENT_OFFSET }, 28008 { 0x2f9f1, 17584, UNICODE_NOT_PRESENT_OFFSET }, 28009 { 0x2f9f2, 17589, UNICODE_NOT_PRESENT_OFFSET }, 28010 { 0x2f9f3, 17593, UNICODE_NOT_PRESENT_OFFSET }, 28011 { 0x2f9f4, 17597, UNICODE_NOT_PRESENT_OFFSET }, 28012 { 0x2f9f5, 17601, UNICODE_NOT_PRESENT_OFFSET }, 28013 { 0x2f9f6, 17605, UNICODE_NOT_PRESENT_OFFSET }, 28014 { 0x2f9f7, 17610, UNICODE_NOT_PRESENT_OFFSET }, 28015 { 0x2f9f8, 17615, UNICODE_NOT_PRESENT_OFFSET }, 28016 { 0x2f9f9, 17619, UNICODE_NOT_PRESENT_OFFSET }, 28017 { 0x2f9fa, 17623, UNICODE_NOT_PRESENT_OFFSET }, 28018 { 0x2f9fb, 17627, UNICODE_NOT_PRESENT_OFFSET }, 28019 { 0x2f9fc, 17632, UNICODE_NOT_PRESENT_OFFSET }, 28020 { 0x2f9fd, 17636, UNICODE_NOT_PRESENT_OFFSET }, 28021 { 0x2f9fe, 12480, UNICODE_NOT_PRESENT_OFFSET }, 28022 { 0x2f9ff, 12480, UNICODE_NOT_PRESENT_OFFSET }, 28023 { 0x2fa00, 17641, UNICODE_NOT_PRESENT_OFFSET }, 28024 { 0x2fa01, 17645, UNICODE_NOT_PRESENT_OFFSET }, 28025 { 0x2fa02, 17650, UNICODE_NOT_PRESENT_OFFSET }, 28026 { 0x2fa03, 17654, UNICODE_NOT_PRESENT_OFFSET }, 28027 { 0x2fa04, 17658, UNICODE_NOT_PRESENT_OFFSET }, 28028 { 0x2fa05, 17662, UNICODE_NOT_PRESENT_OFFSET }, 28029 { 0x2fa06, 17666, UNICODE_NOT_PRESENT_OFFSET }, 28030 { 0x2fa07, 17670, UNICODE_NOT_PRESENT_OFFSET }, 28031 { 0x2fa08, 17674, UNICODE_NOT_PRESENT_OFFSET }, 28032 { 0x2fa09, 17678, UNICODE_NOT_PRESENT_OFFSET }, 28033 { 0x2fa0a, 12484, UNICODE_NOT_PRESENT_OFFSET }, 28034 { 0x2fa0b, 17683, UNICODE_NOT_PRESENT_OFFSET }, 28035 { 0x2fa0c, 17687, UNICODE_NOT_PRESENT_OFFSET }, 28036 { 0x2fa0d, 17691, UNICODE_NOT_PRESENT_OFFSET }, 28037 { 0x2fa0e, 17695, UNICODE_NOT_PRESENT_OFFSET }, 28038 { 0x2fa0f, 17699, UNICODE_NOT_PRESENT_OFFSET }, 28039 { 0x2fa10, 17703, UNICODE_NOT_PRESENT_OFFSET }, 28040 { 0x2fa11, 17708, UNICODE_NOT_PRESENT_OFFSET }, 28041 { 0x2fa12, 17712, UNICODE_NOT_PRESENT_OFFSET }, 28042 { 0x2fa13, 17717, UNICODE_NOT_PRESENT_OFFSET }, 28043 { 0x2fa14, 17722, UNICODE_NOT_PRESENT_OFFSET }, 28044 { 0x2fa15, 6977, UNICODE_NOT_PRESENT_OFFSET }, 28045 { 0x2fa16, 17727, UNICODE_NOT_PRESENT_OFFSET }, 28046 { 0x2fa17, 6993, UNICODE_NOT_PRESENT_OFFSET }, 28047 { 0x2fa18, 17731, UNICODE_NOT_PRESENT_OFFSET }, 28048 { 0x2fa19, 17735, UNICODE_NOT_PRESENT_OFFSET }, 28049 { 0x2fa1a, 17739, UNICODE_NOT_PRESENT_OFFSET }, 28050 { 0x2fa1b, 17743, UNICODE_NOT_PRESENT_OFFSET }, 28051 { 0x2fa1c, 7013, UNICODE_NOT_PRESENT_OFFSET }, 28052 { 0x2fa1d, 17747, UNICODE_NOT_PRESENT_OFFSET } 28053 }; 28054 28055 static const char decomp_expansion_string[] = 28056 "\x20\0" /* offset 0 */ 28057 "\x20\xcc\x88\0" /* offset 2 */ 28058 "\x61\0" /* offset 6 */ 28059 "\x20\xcc\x84\0" /* offset 8 */ 28060 "\x32\0" /* offset 12 */ 28061 "\x33\0" /* offset 14 */ 28062 "\x20\xcc\x81\0" /* offset 16 */ 28063 "\xce\xbc\0" /* offset 20 */ 28064 "\x20\xcc\xa7\0" /* offset 23 */ 28065 "\x31\0" /* offset 27 */ 28066 "\x6f\0" /* offset 29 */ 28067 "\x31\xe2\x81\x84\x34\0" /* offset 31 */ 28068 "\x31\xe2\x81\x84\x32\0" /* offset 37 */ 28069 "\x33\xe2\x81\x84\x34\0" /* offset 43 */ 28070 "\x41\xcc\x80\0" /* offset 49 */ 28071 "\x41\xcc\x81\0" /* offset 53 */ 28072 "\x41\xcc\x82\0" /* offset 57 */ 28073 "\x41\xcc\x83\0" /* offset 61 */ 28074 "\x41\xcc\x88\0" /* offset 65 */ 28075 "\x41\xcc\x8a\0" /* offset 69 */ 28076 "\x43\xcc\xa7\0" /* offset 73 */ 28077 "\x45\xcc\x80\0" /* offset 77 */ 28078 "\x45\xcc\x81\0" /* offset 81 */ 28079 "\x45\xcc\x82\0" /* offset 85 */ 28080 "\x45\xcc\x88\0" /* offset 89 */ 28081 "\x49\xcc\x80\0" /* offset 93 */ 28082 "\x49\xcc\x81\0" /* offset 97 */ 28083 "\x49\xcc\x82\0" /* offset 101 */ 28084 "\x49\xcc\x88\0" /* offset 105 */ 28085 "\x4e\xcc\x83\0" /* offset 109 */ 28086 "\x4f\xcc\x80\0" /* offset 113 */ 28087 "\x4f\xcc\x81\0" /* offset 117 */ 28088 "\x4f\xcc\x82\0" /* offset 121 */ 28089 "\x4f\xcc\x83\0" /* offset 125 */ 28090 "\x4f\xcc\x88\0" /* offset 129 */ 28091 "\x55\xcc\x80\0" /* offset 133 */ 28092 "\x55\xcc\x81\0" /* offset 137 */ 28093 "\x55\xcc\x82\0" /* offset 141 */ 28094 "\x55\xcc\x88\0" /* offset 145 */ 28095 "\x59\xcc\x81\0" /* offset 149 */ 28096 "\x61\xcc\x80\0" /* offset 153 */ 28097 "\x61\xcc\x81\0" /* offset 157 */ 28098 "\x61\xcc\x82\0" /* offset 161 */ 28099 "\x61\xcc\x83\0" /* offset 165 */ 28100 "\x61\xcc\x88\0" /* offset 169 */ 28101 "\x61\xcc\x8a\0" /* offset 173 */ 28102 "\x63\xcc\xa7\0" /* offset 177 */ 28103 "\x65\xcc\x80\0" /* offset 181 */ 28104 "\x65\xcc\x81\0" /* offset 185 */ 28105 "\x65\xcc\x82\0" /* offset 189 */ 28106 "\x65\xcc\x88\0" /* offset 193 */ 28107 "\x69\xcc\x80\0" /* offset 197 */ 28108 "\x69\xcc\x81\0" /* offset 201 */ 28109 "\x69\xcc\x82\0" /* offset 205 */ 28110 "\x69\xcc\x88\0" /* offset 209 */ 28111 "\x6e\xcc\x83\0" /* offset 213 */ 28112 "\x6f\xcc\x80\0" /* offset 217 */ 28113 "\x6f\xcc\x81\0" /* offset 221 */ 28114 "\x6f\xcc\x82\0" /* offset 225 */ 28115 "\x6f\xcc\x83\0" /* offset 229 */ 28116 "\x6f\xcc\x88\0" /* offset 233 */ 28117 "\x75\xcc\x80\0" /* offset 237 */ 28118 "\x75\xcc\x81\0" /* offset 241 */ 28119 "\x75\xcc\x82\0" /* offset 245 */ 28120 "\x75\xcc\x88\0" /* offset 249 */ 28121 "\x79\xcc\x81\0" /* offset 253 */ 28122 "\x79\xcc\x88\0" /* offset 257 */ 28123 "\x41\xcc\x84\0" /* offset 261 */ 28124 "\x61\xcc\x84\0" /* offset 265 */ 28125 "\x41\xcc\x86\0" /* offset 269 */ 28126 "\x61\xcc\x86\0" /* offset 273 */ 28127 "\x41\xcc\xa8\0" /* offset 277 */ 28128 "\x61\xcc\xa8\0" /* offset 281 */ 28129 "\x43\xcc\x81\0" /* offset 285 */ 28130 "\x63\xcc\x81\0" /* offset 289 */ 28131 "\x43\xcc\x82\0" /* offset 293 */ 28132 "\x63\xcc\x82\0" /* offset 297 */ 28133 "\x43\xcc\x87\0" /* offset 301 */ 28134 "\x63\xcc\x87\0" /* offset 305 */ 28135 "\x43\xcc\x8c\0" /* offset 309 */ 28136 "\x63\xcc\x8c\0" /* offset 313 */ 28137 "\x44\xcc\x8c\0" /* offset 317 */ 28138 "\x64\xcc\x8c\0" /* offset 321 */ 28139 "\x45\xcc\x84\0" /* offset 325 */ 28140 "\x65\xcc\x84\0" /* offset 329 */ 28141 "\x45\xcc\x86\0" /* offset 333 */ 28142 "\x65\xcc\x86\0" /* offset 337 */ 28143 "\x45\xcc\x87\0" /* offset 341 */ 28144 "\x65\xcc\x87\0" /* offset 345 */ 28145 "\x45\xcc\xa8\0" /* offset 349 */ 28146 "\x65\xcc\xa8\0" /* offset 353 */ 28147 "\x45\xcc\x8c\0" /* offset 357 */ 28148 "\x65\xcc\x8c\0" /* offset 361 */ 28149 "\x47\xcc\x82\0" /* offset 365 */ 28150 "\x67\xcc\x82\0" /* offset 369 */ 28151 "\x47\xcc\x86\0" /* offset 373 */ 28152 "\x67\xcc\x86\0" /* offset 377 */ 28153 "\x47\xcc\x87\0" /* offset 381 */ 28154 "\x67\xcc\x87\0" /* offset 385 */ 28155 "\x47\xcc\xa7\0" /* offset 389 */ 28156 "\x67\xcc\xa7\0" /* offset 393 */ 28157 "\x48\xcc\x82\0" /* offset 397 */ 28158 "\x68\xcc\x82\0" /* offset 401 */ 28159 "\x49\xcc\x83\0" /* offset 405 */ 28160 "\x69\xcc\x83\0" /* offset 409 */ 28161 "\x49\xcc\x84\0" /* offset 413 */ 28162 "\x69\xcc\x84\0" /* offset 417 */ 28163 "\x49\xcc\x86\0" /* offset 421 */ 28164 "\x69\xcc\x86\0" /* offset 425 */ 28165 "\x49\xcc\xa8\0" /* offset 429 */ 28166 "\x69\xcc\xa8\0" /* offset 433 */ 28167 "\x49\xcc\x87\0" /* offset 437 */ 28168 "\x49\x4a\0" /* offset 441 */ 28169 "\x69\x6a\0" /* offset 444 */ 28170 "\x4a\xcc\x82\0" /* offset 447 */ 28171 "\x6a\xcc\x82\0" /* offset 451 */ 28172 "\x4b\xcc\xa7\0" /* offset 455 */ 28173 "\x6b\xcc\xa7\0" /* offset 459 */ 28174 "\x4c\xcc\x81\0" /* offset 463 */ 28175 "\x6c\xcc\x81\0" /* offset 467 */ 28176 "\x4c\xcc\xa7\0" /* offset 471 */ 28177 "\x6c\xcc\xa7\0" /* offset 475 */ 28178 "\x4c\xcc\x8c\0" /* offset 479 */ 28179 "\x6c\xcc\x8c\0" /* offset 483 */ 28180 "\x4c\xc2\xb7\0" /* offset 487 */ 28181 "\x6c\xc2\xb7\0" /* offset 491 */ 28182 "\x4e\xcc\x81\0" /* offset 495 */ 28183 "\x6e\xcc\x81\0" /* offset 499 */ 28184 "\x4e\xcc\xa7\0" /* offset 503 */ 28185 "\x6e\xcc\xa7\0" /* offset 507 */ 28186 "\x4e\xcc\x8c\0" /* offset 511 */ 28187 "\x6e\xcc\x8c\0" /* offset 515 */ 28188 "\xca\xbc\x6e\0" /* offset 519 */ 28189 "\x4f\xcc\x84\0" /* offset 523 */ 28190 "\x6f\xcc\x84\0" /* offset 527 */ 28191 "\x4f\xcc\x86\0" /* offset 531 */ 28192 "\x6f\xcc\x86\0" /* offset 535 */ 28193 "\x4f\xcc\x8b\0" /* offset 539 */ 28194 "\x6f\xcc\x8b\0" /* offset 543 */ 28195 "\x52\xcc\x81\0" /* offset 547 */ 28196 "\x72\xcc\x81\0" /* offset 551 */ 28197 "\x52\xcc\xa7\0" /* offset 555 */ 28198 "\x72\xcc\xa7\0" /* offset 559 */ 28199 "\x52\xcc\x8c\0" /* offset 563 */ 28200 "\x72\xcc\x8c\0" /* offset 567 */ 28201 "\x53\xcc\x81\0" /* offset 571 */ 28202 "\x73\xcc\x81\0" /* offset 575 */ 28203 "\x53\xcc\x82\0" /* offset 579 */ 28204 "\x73\xcc\x82\0" /* offset 583 */ 28205 "\x53\xcc\xa7\0" /* offset 587 */ 28206 "\x73\xcc\xa7\0" /* offset 591 */ 28207 "\x53\xcc\x8c\0" /* offset 595 */ 28208 "\x73\xcc\x8c\0" /* offset 599 */ 28209 "\x54\xcc\xa7\0" /* offset 603 */ 28210 "\x74\xcc\xa7\0" /* offset 607 */ 28211 "\x54\xcc\x8c\0" /* offset 611 */ 28212 "\x74\xcc\x8c\0" /* offset 615 */ 28213 "\x55\xcc\x83\0" /* offset 619 */ 28214 "\x75\xcc\x83\0" /* offset 623 */ 28215 "\x55\xcc\x84\0" /* offset 627 */ 28216 "\x75\xcc\x84\0" /* offset 631 */ 28217 "\x55\xcc\x86\0" /* offset 635 */ 28218 "\x75\xcc\x86\0" /* offset 639 */ 28219 "\x55\xcc\x8a\0" /* offset 643 */ 28220 "\x75\xcc\x8a\0" /* offset 647 */ 28221 "\x55\xcc\x8b\0" /* offset 651 */ 28222 "\x75\xcc\x8b\0" /* offset 655 */ 28223 "\x55\xcc\xa8\0" /* offset 659 */ 28224 "\x75\xcc\xa8\0" /* offset 663 */ 28225 "\x57\xcc\x82\0" /* offset 667 */ 28226 "\x77\xcc\x82\0" /* offset 671 */ 28227 "\x59\xcc\x82\0" /* offset 675 */ 28228 "\x79\xcc\x82\0" /* offset 679 */ 28229 "\x59\xcc\x88\0" /* offset 683 */ 28230 "\x5a\xcc\x81\0" /* offset 687 */ 28231 "\x7a\xcc\x81\0" /* offset 691 */ 28232 "\x5a\xcc\x87\0" /* offset 695 */ 28233 "\x7a\xcc\x87\0" /* offset 699 */ 28234 "\x5a\xcc\x8c\0" /* offset 703 */ 28235 "\x7a\xcc\x8c\0" /* offset 707 */ 28236 "\x73\0" /* offset 711 */ 28237 "\x4f\xcc\x9b\0" /* offset 713 */ 28238 "\x6f\xcc\x9b\0" /* offset 717 */ 28239 "\x55\xcc\x9b\0" /* offset 721 */ 28240 "\x75\xcc\x9b\0" /* offset 725 */ 28241 "\x44\x5a\xcc\x8c\0" /* offset 729 */ 28242 "\x44\x7a\xcc\x8c\0" /* offset 734 */ 28243 "\x64\x7a\xcc\x8c\0" /* offset 739 */ 28244 "\x4c\x4a\0" /* offset 744 */ 28245 "\x4c\x6a\0" /* offset 747 */ 28246 "\x6c\x6a\0" /* offset 750 */ 28247 "\x4e\x4a\0" /* offset 753 */ 28248 "\x4e\x6a\0" /* offset 756 */ 28249 "\x6e\x6a\0" /* offset 759 */ 28250 "\x41\xcc\x8c\0" /* offset 762 */ 28251 "\x61\xcc\x8c\0" /* offset 766 */ 28252 "\x49\xcc\x8c\0" /* offset 770 */ 28253 "\x69\xcc\x8c\0" /* offset 774 */ 28254 "\x4f\xcc\x8c\0" /* offset 778 */ 28255 "\x6f\xcc\x8c\0" /* offset 782 */ 28256 "\x55\xcc\x8c\0" /* offset 786 */ 28257 "\x75\xcc\x8c\0" /* offset 790 */ 28258 "\x55\xcc\x88\xcc\x84\0" /* offset 794 */ 28259 "\x75\xcc\x88\xcc\x84\0" /* offset 800 */ 28260 "\x55\xcc\x88\xcc\x81\0" /* offset 806 */ 28261 "\x75\xcc\x88\xcc\x81\0" /* offset 812 */ 28262 "\x55\xcc\x88\xcc\x8c\0" /* offset 818 */ 28263 "\x75\xcc\x88\xcc\x8c\0" /* offset 824 */ 28264 "\x55\xcc\x88\xcc\x80\0" /* offset 830 */ 28265 "\x75\xcc\x88\xcc\x80\0" /* offset 836 */ 28266 "\x41\xcc\x88\xcc\x84\0" /* offset 842 */ 28267 "\x61\xcc\x88\xcc\x84\0" /* offset 848 */ 28268 "\x41\xcc\x87\xcc\x84\0" /* offset 854 */ 28269 "\x61\xcc\x87\xcc\x84\0" /* offset 860 */ 28270 "\xc3\x86\xcc\x84\0" /* offset 866 */ 28271 "\xc3\xa6\xcc\x84\0" /* offset 871 */ 28272 "\x47\xcc\x8c\0" /* offset 876 */ 28273 "\x67\xcc\x8c\0" /* offset 880 */ 28274 "\x4b\xcc\x8c\0" /* offset 884 */ 28275 "\x6b\xcc\x8c\0" /* offset 888 */ 28276 "\x4f\xcc\xa8\0" /* offset 892 */ 28277 "\x6f\xcc\xa8\0" /* offset 896 */ 28278 "\x4f\xcc\xa8\xcc\x84\0" /* offset 900 */ 28279 "\x6f\xcc\xa8\xcc\x84\0" /* offset 906 */ 28280 "\xc6\xb7\xcc\x8c\0" /* offset 912 */ 28281 "\xca\x92\xcc\x8c\0" /* offset 917 */ 28282 "\x6a\xcc\x8c\0" /* offset 922 */ 28283 "\x44\x5a\0" /* offset 926 */ 28284 "\x44\x7a\0" /* offset 929 */ 28285 "\x64\x7a\0" /* offset 932 */ 28286 "\x47\xcc\x81\0" /* offset 935 */ 28287 "\x67\xcc\x81\0" /* offset 939 */ 28288 "\x4e\xcc\x80\0" /* offset 943 */ 28289 "\x6e\xcc\x80\0" /* offset 947 */ 28290 "\x41\xcc\x8a\xcc\x81\0" /* offset 951 */ 28291 "\x61\xcc\x8a\xcc\x81\0" /* offset 957 */ 28292 "\xc3\x86\xcc\x81\0" /* offset 963 */ 28293 "\xc3\xa6\xcc\x81\0" /* offset 968 */ 28294 "\xc3\x98\xcc\x81\0" /* offset 973 */ 28295 "\xc3\xb8\xcc\x81\0" /* offset 978 */ 28296 "\x41\xcc\x8f\0" /* offset 983 */ 28297 "\x61\xcc\x8f\0" /* offset 987 */ 28298 "\x41\xcc\x91\0" /* offset 991 */ 28299 "\x61\xcc\x91\0" /* offset 995 */ 28300 "\x45\xcc\x8f\0" /* offset 999 */ 28301 "\x65\xcc\x8f\0" /* offset 1003 */ 28302 "\x45\xcc\x91\0" /* offset 1007 */ 28303 "\x65\xcc\x91\0" /* offset 1011 */ 28304 "\x49\xcc\x8f\0" /* offset 1015 */ 28305 "\x69\xcc\x8f\0" /* offset 1019 */ 28306 "\x49\xcc\x91\0" /* offset 1023 */ 28307 "\x69\xcc\x91\0" /* offset 1027 */ 28308 "\x4f\xcc\x8f\0" /* offset 1031 */ 28309 "\x6f\xcc\x8f\0" /* offset 1035 */ 28310 "\x4f\xcc\x91\0" /* offset 1039 */ 28311 "\x6f\xcc\x91\0" /* offset 1043 */ 28312 "\x52\xcc\x8f\0" /* offset 1047 */ 28313 "\x72\xcc\x8f\0" /* offset 1051 */ 28314 "\x52\xcc\x91\0" /* offset 1055 */ 28315 "\x72\xcc\x91\0" /* offset 1059 */ 28316 "\x55\xcc\x8f\0" /* offset 1063 */ 28317 "\x75\xcc\x8f\0" /* offset 1067 */ 28318 "\x55\xcc\x91\0" /* offset 1071 */ 28319 "\x75\xcc\x91\0" /* offset 1075 */ 28320 "\x53\xcc\xa6\0" /* offset 1079 */ 28321 "\x73\xcc\xa6\0" /* offset 1083 */ 28322 "\x54\xcc\xa6\0" /* offset 1087 */ 28323 "\x74\xcc\xa6\0" /* offset 1091 */ 28324 "\x48\xcc\x8c\0" /* offset 1095 */ 28325 "\x68\xcc\x8c\0" /* offset 1099 */ 28326 "\x41\xcc\x87\0" /* offset 1103 */ 28327 "\x61\xcc\x87\0" /* offset 1107 */ 28328 "\x45\xcc\xa7\0" /* offset 1111 */ 28329 "\x65\xcc\xa7\0" /* offset 1115 */ 28330 "\x4f\xcc\x88\xcc\x84\0" /* offset 1119 */ 28331 "\x6f\xcc\x88\xcc\x84\0" /* offset 1125 */ 28332 "\x4f\xcc\x83\xcc\x84\0" /* offset 1131 */ 28333 "\x6f\xcc\x83\xcc\x84\0" /* offset 1137 */ 28334 "\x4f\xcc\x87\0" /* offset 1143 */ 28335 "\x6f\xcc\x87\0" /* offset 1147 */ 28336 "\x4f\xcc\x87\xcc\x84\0" /* offset 1151 */ 28337 "\x6f\xcc\x87\xcc\x84\0" /* offset 1157 */ 28338 "\x59\xcc\x84\0" /* offset 1163 */ 28339 "\x79\xcc\x84\0" /* offset 1167 */ 28340 "\x68\0" /* offset 1171 */ 28341 "\xc9\xa6\0" /* offset 1173 */ 28342 "\x6a\0" /* offset 1176 */ 28343 "\x72\0" /* offset 1178 */ 28344 "\xc9\xb9\0" /* offset 1180 */ 28345 "\xc9\xbb\0" /* offset 1183 */ 28346 "\xca\x81\0" /* offset 1186 */ 28347 "\x77\0" /* offset 1189 */ 28348 "\x79\0" /* offset 1191 */ 28349 "\x20\xcc\x86\0" /* offset 1193 */ 28350 "\x20\xcc\x87\0" /* offset 1197 */ 28351 "\x20\xcc\x8a\0" /* offset 1201 */ 28352 "\x20\xcc\xa8\0" /* offset 1205 */ 28353 "\x20\xcc\x83\0" /* offset 1209 */ 28354 "\x20\xcc\x8b\0" /* offset 1213 */ 28355 "\xc9\xa3\0" /* offset 1217 */ 28356 "\x6c\0" /* offset 1220 */ 28357 "\x78\0" /* offset 1222 */ 28358 "\xca\x95\0" /* offset 1224 */ 28359 "\xcc\x80\0" /* offset 1227 */ 28360 "\xcc\x81\0" /* offset 1230 */ 28361 "\xcc\x93\0" /* offset 1233 */ 28362 "\xcc\x88\xcc\x81\0" /* offset 1236 */ 28363 "\xca\xb9\0" /* offset 1241 */ 28364 "\x20\xcd\x85\0" /* offset 1244 */ 28365 "\x3b\0" /* offset 1248 */ 28366 "\xc2\xa8\xcc\x81\0" /* offset 1250 */ 28367 "\x20\xcc\x88\xcc\x81\0" /* offset 1255 */ 28368 "\xce\x91\xcc\x81\0" /* offset 1261 */ 28369 "\xc2\xb7\0" /* offset 1266 */ 28370 "\xce\x95\xcc\x81\0" /* offset 1269 */ 28371 "\xce\x97\xcc\x81\0" /* offset 1274 */ 28372 "\xce\x99\xcc\x81\0" /* offset 1279 */ 28373 "\xce\x9f\xcc\x81\0" /* offset 1284 */ 28374 "\xce\xa5\xcc\x81\0" /* offset 1289 */ 28375 "\xce\xa9\xcc\x81\0" /* offset 1294 */ 28376 "\xce\xb9\xcc\x88\xcc\x81\0" /* offset 1299 */ 28377 "\xce\x99\xcc\x88\0" /* offset 1306 */ 28378 "\xce\xa5\xcc\x88\0" /* offset 1311 */ 28379 "\xce\xb1\xcc\x81\0" /* offset 1316 */ 28380 "\xce\xb5\xcc\x81\0" /* offset 1321 */ 28381 "\xce\xb7\xcc\x81\0" /* offset 1326 */ 28382 "\xce\xb9\xcc\x81\0" /* offset 1331 */ 28383 "\xcf\x85\xcc\x88\xcc\x81\0" /* offset 1336 */ 28384 "\xce\xb9\xcc\x88\0" /* offset 1343 */ 28385 "\xcf\x85\xcc\x88\0" /* offset 1348 */ 28386 "\xce\xbf\xcc\x81\0" /* offset 1353 */ 28387 "\xcf\x85\xcc\x81\0" /* offset 1358 */ 28388 "\xcf\x89\xcc\x81\0" /* offset 1363 */ 28389 "\xce\xb2\0" /* offset 1368 */ 28390 "\xce\xb8\0" /* offset 1371 */ 28391 "\xce\xa5\0" /* offset 1374 */ 28392 "\xcf\x92\xcc\x81\0" /* offset 1377 */ 28393 "\xcf\x92\xcc\x88\0" /* offset 1382 */ 28394 "\xcf\x86\0" /* offset 1387 */ 28395 "\xcf\x80\0" /* offset 1390 */ 28396 "\xce\xba\0" /* offset 1393 */ 28397 "\xcf\x81\0" /* offset 1396 */ 28398 "\xcf\x82\0" /* offset 1399 */ 28399 "\xce\x98\0" /* offset 1402 */ 28400 "\xce\xb5\0" /* offset 1405 */ 28401 "\xce\xa3\0" /* offset 1408 */ 28402 "\xd0\x95\xcc\x80\0" /* offset 1411 */ 28403 "\xd0\x95\xcc\x88\0" /* offset 1416 */ 28404 "\xd0\x93\xcc\x81\0" /* offset 1421 */ 28405 "\xd0\x86\xcc\x88\0" /* offset 1426 */ 28406 "\xd0\x9a\xcc\x81\0" /* offset 1431 */ 28407 "\xd0\x98\xcc\x80\0" /* offset 1436 */ 28408 "\xd0\xa3\xcc\x86\0" /* offset 1441 */ 28409 "\xd0\x98\xcc\x86\0" /* offset 1446 */ 28410 "\xd0\xb8\xcc\x86\0" /* offset 1451 */ 28411 "\xd0\xb5\xcc\x80\0" /* offset 1456 */ 28412 "\xd0\xb5\xcc\x88\0" /* offset 1461 */ 28413 "\xd0\xb3\xcc\x81\0" /* offset 1466 */ 28414 "\xd1\x96\xcc\x88\0" /* offset 1471 */ 28415 "\xd0\xba\xcc\x81\0" /* offset 1476 */ 28416 "\xd0\xb8\xcc\x80\0" /* offset 1481 */ 28417 "\xd1\x83\xcc\x86\0" /* offset 1486 */ 28418 "\xd1\xb4\xcc\x8f\0" /* offset 1491 */ 28419 "\xd1\xb5\xcc\x8f\0" /* offset 1496 */ 28420 "\xd0\x96\xcc\x86\0" /* offset 1501 */ 28421 "\xd0\xb6\xcc\x86\0" /* offset 1506 */ 28422 "\xd0\x90\xcc\x86\0" /* offset 1511 */ 28423 "\xd0\xb0\xcc\x86\0" /* offset 1516 */ 28424 "\xd0\x90\xcc\x88\0" /* offset 1521 */ 28425 "\xd0\xb0\xcc\x88\0" /* offset 1526 */ 28426 "\xd0\x95\xcc\x86\0" /* offset 1531 */ 28427 "\xd0\xb5\xcc\x86\0" /* offset 1536 */ 28428 "\xd3\x98\xcc\x88\0" /* offset 1541 */ 28429 "\xd3\x99\xcc\x88\0" /* offset 1546 */ 28430 "\xd0\x96\xcc\x88\0" /* offset 1551 */ 28431 "\xd0\xb6\xcc\x88\0" /* offset 1556 */ 28432 "\xd0\x97\xcc\x88\0" /* offset 1561 */ 28433 "\xd0\xb7\xcc\x88\0" /* offset 1566 */ 28434 "\xd0\x98\xcc\x84\0" /* offset 1571 */ 28435 "\xd0\xb8\xcc\x84\0" /* offset 1576 */ 28436 "\xd0\x98\xcc\x88\0" /* offset 1581 */ 28437 "\xd0\xb8\xcc\x88\0" /* offset 1586 */ 28438 "\xd0\x9e\xcc\x88\0" /* offset 1591 */ 28439 "\xd0\xbe\xcc\x88\0" /* offset 1596 */ 28440 "\xd3\xa8\xcc\x88\0" /* offset 1601 */ 28441 "\xd3\xa9\xcc\x88\0" /* offset 1606 */ 28442 "\xd0\xad\xcc\x88\0" /* offset 1611 */ 28443 "\xd1\x8d\xcc\x88\0" /* offset 1616 */ 28444 "\xd0\xa3\xcc\x84\0" /* offset 1621 */ 28445 "\xd1\x83\xcc\x84\0" /* offset 1626 */ 28446 "\xd0\xa3\xcc\x88\0" /* offset 1631 */ 28447 "\xd1\x83\xcc\x88\0" /* offset 1636 */ 28448 "\xd0\xa3\xcc\x8b\0" /* offset 1641 */ 28449 "\xd1\x83\xcc\x8b\0" /* offset 1646 */ 28450 "\xd0\xa7\xcc\x88\0" /* offset 1651 */ 28451 "\xd1\x87\xcc\x88\0" /* offset 1656 */ 28452 "\xd0\xab\xcc\x88\0" /* offset 1661 */ 28453 "\xd1\x8b\xcc\x88\0" /* offset 1666 */ 28454 "\xd5\xa5\xd6\x82\0" /* offset 1671 */ 28455 "\xd8\xa7\xd9\x93\0" /* offset 1676 */ 28456 "\xd8\xa7\xd9\x94\0" /* offset 1681 */ 28457 "\xd9\x88\xd9\x94\0" /* offset 1686 */ 28458 "\xd8\xa7\xd9\x95\0" /* offset 1691 */ 28459 "\xd9\x8a\xd9\x94\0" /* offset 1696 */ 28460 "\xd8\xa7\xd9\xb4\0" /* offset 1701 */ 28461 "\xd9\x88\xd9\xb4\0" /* offset 1706 */ 28462 "\xdb\x87\xd9\xb4\0" /* offset 1711 */ 28463 "\xd9\x8a\xd9\xb4\0" /* offset 1716 */ 28464 "\xdb\x95\xd9\x94\0" /* offset 1721 */ 28465 "\xdb\x81\xd9\x94\0" /* offset 1726 */ 28466 "\xdb\x92\xd9\x94\0" /* offset 1731 */ 28467 "\xe0\xa4\xa8\xe0\xa4\xbc\0" /* offset 1736 */ 28468 "\xe0\xa4\xb0\xe0\xa4\xbc\0" /* offset 1743 */ 28469 "\xe0\xa4\xb3\xe0\xa4\xbc\0" /* offset 1750 */ 28470 "\xe0\xa4\x95\xe0\xa4\xbc\0" /* offset 1757 */ 28471 "\xe0\xa4\x96\xe0\xa4\xbc\0" /* offset 1764 */ 28472 "\xe0\xa4\x97\xe0\xa4\xbc\0" /* offset 1771 */ 28473 "\xe0\xa4\x9c\xe0\xa4\xbc\0" /* offset 1778 */ 28474 "\xe0\xa4\xa1\xe0\xa4\xbc\0" /* offset 1785 */ 28475 "\xe0\xa4\xa2\xe0\xa4\xbc\0" /* offset 1792 */ 28476 "\xe0\xa4\xab\xe0\xa4\xbc\0" /* offset 1799 */ 28477 "\xe0\xa4\xaf\xe0\xa4\xbc\0" /* offset 1806 */ 28478 "\xe0\xa7\x87\xe0\xa6\xbe\0" /* offset 1813 */ 28479 "\xe0\xa7\x87\xe0\xa7\x97\0" /* offset 1820 */ 28480 "\xe0\xa6\xa1\xe0\xa6\xbc\0" /* offset 1827 */ 28481 "\xe0\xa6\xa2\xe0\xa6\xbc\0" /* offset 1834 */ 28482 "\xe0\xa6\xaf\xe0\xa6\xbc\0" /* offset 1841 */ 28483 "\xe0\xa8\xb2\xe0\xa8\xbc\0" /* offset 1848 */ 28484 "\xe0\xa8\xb8\xe0\xa8\xbc\0" /* offset 1855 */ 28485 "\xe0\xa8\x96\xe0\xa8\xbc\0" /* offset 1862 */ 28486 "\xe0\xa8\x97\xe0\xa8\xbc\0" /* offset 1869 */ 28487 "\xe0\xa8\x9c\xe0\xa8\xbc\0" /* offset 1876 */ 28488 "\xe0\xa8\xab\xe0\xa8\xbc\0" /* offset 1883 */ 28489 "\xe0\xad\x87\xe0\xad\x96\0" /* offset 1890 */ 28490 "\xe0\xad\x87\xe0\xac\xbe\0" /* offset 1897 */ 28491 "\xe0\xad\x87\xe0\xad\x97\0" /* offset 1904 */ 28492 "\xe0\xac\xa1\xe0\xac\xbc\0" /* offset 1911 */ 28493 "\xe0\xac\xa2\xe0\xac\xbc\0" /* offset 1918 */ 28494 "\xe0\xae\x92\xe0\xaf\x97\0" /* offset 1925 */ 28495 "\xe0\xaf\x86\xe0\xae\xbe\0" /* offset 1932 */ 28496 "\xe0\xaf\x87\xe0\xae\xbe\0" /* offset 1939 */ 28497 "\xe0\xaf\x86\xe0\xaf\x97\0" /* offset 1946 */ 28498 "\xe0\xb1\x86\xe0\xb1\x96\0" /* offset 1953 */ 28499 "\xe0\xb2\xbf\xe0\xb3\x95\0" /* offset 1960 */ 28500 "\xe0\xb3\x86\xe0\xb3\x95\0" /* offset 1967 */ 28501 "\xe0\xb3\x86\xe0\xb3\x96\0" /* offset 1974 */ 28502 "\xe0\xb3\x86\xe0\xb3\x82\0" /* offset 1981 */ 28503 "\xe0\xb3\x86\xe0\xb3\x82\xe0\xb3\x95\0" /* offset 1988 */ 28504 "\xe0\xb5\x86\xe0\xb4\xbe\0" /* offset 1998 */ 28505 "\xe0\xb5\x87\xe0\xb4\xbe\0" /* offset 2005 */ 28506 "\xe0\xb5\x86\xe0\xb5\x97\0" /* offset 2012 */ 28507 "\xe0\xb7\x99\xe0\xb7\x8a\0" /* offset 2019 */ 28508 "\xe0\xb7\x99\xe0\xb7\x8f\0" /* offset 2026 */ 28509 "\xe0\xb7\x99\xe0\xb7\x8f\xe0\xb7\x8a\0" /* offset 2033 */ 28510 "\xe0\xb7\x99\xe0\xb7\x9f\0" /* offset 2043 */ 28511 "\xe0\xb9\x8d\xe0\xb8\xb2\0" /* offset 2050 */ 28512 "\xe0\xbb\x8d\xe0\xba\xb2\0" /* offset 2057 */ 28513 "\xe0\xba\xab\xe0\xba\x99\0" /* offset 2064 */ 28514 "\xe0\xba\xab\xe0\xba\xa1\0" /* offset 2071 */ 28515 "\xe0\xbc\x8b\0" /* offset 2078 */ 28516 "\xe0\xbd\x82\xe0\xbe\xb7\0" /* offset 2082 */ 28517 "\xe0\xbd\x8c\xe0\xbe\xb7\0" /* offset 2089 */ 28518 "\xe0\xbd\x91\xe0\xbe\xb7\0" /* offset 2096 */ 28519 "\xe0\xbd\x96\xe0\xbe\xb7\0" /* offset 2103 */ 28520 "\xe0\xbd\x9b\xe0\xbe\xb7\0" /* offset 2110 */ 28521 "\xe0\xbd\x80\xe0\xbe\xb5\0" /* offset 2117 */ 28522 "\xe0\xbd\xb1\xe0\xbd\xb2\0" /* offset 2124 */ 28523 "\xe0\xbd\xb1\xe0\xbd\xb4\0" /* offset 2131 */ 28524 "\xe0\xbe\xb2\xe0\xbe\x80\0" /* offset 2138 */ 28525 "\xe0\xbe\xb2\xe0\xbd\xb1\xe0\xbe\x80\0" /* offset 2145 */ 28526 "\xe0\xbe\xb3\xe0\xbe\x80\0" /* offset 2155 */ 28527 "\xe0\xbe\xb3\xe0\xbd\xb1\xe0\xbe\x80\0" /* offset 2162 */ 28528 "\xe0\xbd\xb1\xe0\xbe\x80\0" /* offset 2172 */ 28529 "\xe0\xbe\x92\xe0\xbe\xb7\0" /* offset 2179 */ 28530 "\xe0\xbe\x9c\xe0\xbe\xb7\0" /* offset 2186 */ 28531 "\xe0\xbe\xa1\xe0\xbe\xb7\0" /* offset 2193 */ 28532 "\xe0\xbe\xa6\xe0\xbe\xb7\0" /* offset 2200 */ 28533 "\xe0\xbe\xab\xe0\xbe\xb7\0" /* offset 2207 */ 28534 "\xe0\xbe\x90\xe0\xbe\xb5\0" /* offset 2214 */ 28535 "\xe1\x80\xa5\xe1\x80\xae\0" /* offset 2221 */ 28536 "\xe1\x83\x9c\0" /* offset 2228 */ 28537 "\xe1\xac\x85\xe1\xac\xb5\0" /* offset 2232 */ 28538 "\xe1\xac\x87\xe1\xac\xb5\0" /* offset 2239 */ 28539 "\xe1\xac\x89\xe1\xac\xb5\0" /* offset 2246 */ 28540 "\xe1\xac\x8b\xe1\xac\xb5\0" /* offset 2253 */ 28541 "\xe1\xac\x8d\xe1\xac\xb5\0" /* offset 2260 */ 28542 "\xe1\xac\x91\xe1\xac\xb5\0" /* offset 2267 */ 28543 "\xe1\xac\xba\xe1\xac\xb5\0" /* offset 2274 */ 28544 "\xe1\xac\xbc\xe1\xac\xb5\0" /* offset 2281 */ 28545 "\xe1\xac\xbe\xe1\xac\xb5\0" /* offset 2288 */ 28546 "\xe1\xac\xbf\xe1\xac\xb5\0" /* offset 2295 */ 28547 "\xe1\xad\x82\xe1\xac\xb5\0" /* offset 2302 */ 28548 "\x41\0" /* offset 2309 */ 28549 "\xc3\x86\0" /* offset 2311 */ 28550 "\x42\0" /* offset 2314 */ 28551 "\x44\0" /* offset 2316 */ 28552 "\x45\0" /* offset 2318 */ 28553 "\xc6\x8e\0" /* offset 2320 */ 28554 "\x47\0" /* offset 2323 */ 28555 "\x48\0" /* offset 2325 */ 28556 "\x49\0" /* offset 2327 */ 28557 "\x4a\0" /* offset 2329 */ 28558 "\x4b\0" /* offset 2331 */ 28559 "\x4c\0" /* offset 2333 */ 28560 "\x4d\0" /* offset 2335 */ 28561 "\x4e\0" /* offset 2337 */ 28562 "\x4f\0" /* offset 2339 */ 28563 "\xc8\xa2\0" /* offset 2341 */ 28564 "\x50\0" /* offset 2344 */ 28565 "\x52\0" /* offset 2346 */ 28566 "\x54\0" /* offset 2348 */ 28567 "\x55\0" /* offset 2350 */ 28568 "\x57\0" /* offset 2352 */ 28569 "\xc9\x90\0" /* offset 2354 */ 28570 "\xc9\x91\0" /* offset 2357 */ 28571 "\xe1\xb4\x82\0" /* offset 2360 */ 28572 "\x62\0" /* offset 2364 */ 28573 "\x64\0" /* offset 2366 */ 28574 "\x65\0" /* offset 2368 */ 28575 "\xc9\x99\0" /* offset 2370 */ 28576 "\xc9\x9b\0" /* offset 2373 */ 28577 "\xc9\x9c\0" /* offset 2376 */ 28578 "\x67\0" /* offset 2379 */ 28579 "\x6b\0" /* offset 2381 */ 28580 "\x6d\0" /* offset 2383 */ 28581 "\xc5\x8b\0" /* offset 2385 */ 28582 "\xc9\x94\0" /* offset 2388 */ 28583 "\xe1\xb4\x96\0" /* offset 2391 */ 28584 "\xe1\xb4\x97\0" /* offset 2395 */ 28585 "\x70\0" /* offset 2399 */ 28586 "\x74\0" /* offset 2401 */ 28587 "\x75\0" /* offset 2403 */ 28588 "\xe1\xb4\x9d\0" /* offset 2405 */ 28589 "\xc9\xaf\0" /* offset 2409 */ 28590 "\x76\0" /* offset 2412 */ 28591 "\xe1\xb4\xa5\0" /* offset 2414 */ 28592 "\xce\xb3\0" /* offset 2418 */ 28593 "\xce\xb4\0" /* offset 2421 */ 28594 "\xcf\x87\0" /* offset 2424 */ 28595 "\x69\0" /* offset 2427 */ 28596 "\xd0\xbd\0" /* offset 2429 */ 28597 "\xc9\x92\0" /* offset 2432 */ 28598 "\x63\0" /* offset 2435 */ 28599 "\xc9\x95\0" /* offset 2437 */ 28600 "\xc3\xb0\0" /* offset 2440 */ 28601 "\x66\0" /* offset 2443 */ 28602 "\xc9\x9f\0" /* offset 2445 */ 28603 "\xc9\xa1\0" /* offset 2448 */ 28604 "\xc9\xa5\0" /* offset 2451 */ 28605 "\xc9\xa8\0" /* offset 2454 */ 28606 "\xc9\xa9\0" /* offset 2457 */ 28607 "\xc9\xaa\0" /* offset 2460 */ 28608 "\xe1\xb5\xbb\0" /* offset 2463 */ 28609 "\xca\x9d\0" /* offset 2467 */ 28610 "\xc9\xad\0" /* offset 2470 */ 28611 "\xe1\xb6\x85\0" /* offset 2473 */ 28612 "\xca\x9f\0" /* offset 2477 */ 28613 "\xc9\xb1\0" /* offset 2480 */ 28614 "\xc9\xb0\0" /* offset 2483 */ 28615 "\xc9\xb2\0" /* offset 2486 */ 28616 "\xc9\xb3\0" /* offset 2489 */ 28617 "\xc9\xb4\0" /* offset 2492 */ 28618 "\xc9\xb5\0" /* offset 2495 */ 28619 "\xc9\xb8\0" /* offset 2498 */ 28620 "\xca\x82\0" /* offset 2501 */ 28621 "\xca\x83\0" /* offset 2504 */ 28622 "\xc6\xab\0" /* offset 2507 */ 28623 "\xca\x89\0" /* offset 2510 */ 28624 "\xca\x8a\0" /* offset 2513 */ 28625 "\xe1\xb4\x9c\0" /* offset 2516 */ 28626 "\xca\x8b\0" /* offset 2520 */ 28627 "\xca\x8c\0" /* offset 2523 */ 28628 "\x7a\0" /* offset 2526 */ 28629 "\xca\x90\0" /* offset 2528 */ 28630 "\xca\x91\0" /* offset 2531 */ 28631 "\xca\x92\0" /* offset 2534 */ 28632 "\x41\xcc\xa5\0" /* offset 2537 */ 28633 "\x61\xcc\xa5\0" /* offset 2541 */ 28634 "\x42\xcc\x87\0" /* offset 2545 */ 28635 "\x62\xcc\x87\0" /* offset 2549 */ 28636 "\x42\xcc\xa3\0" /* offset 2553 */ 28637 "\x62\xcc\xa3\0" /* offset 2557 */ 28638 "\x42\xcc\xb1\0" /* offset 2561 */ 28639 "\x62\xcc\xb1\0" /* offset 2565 */ 28640 "\x43\xcc\xa7\xcc\x81\0" /* offset 2569 */ 28641 "\x63\xcc\xa7\xcc\x81\0" /* offset 2575 */ 28642 "\x44\xcc\x87\0" /* offset 2581 */ 28643 "\x64\xcc\x87\0" /* offset 2585 */ 28644 "\x44\xcc\xa3\0" /* offset 2589 */ 28645 "\x64\xcc\xa3\0" /* offset 2593 */ 28646 "\x44\xcc\xb1\0" /* offset 2597 */ 28647 "\x64\xcc\xb1\0" /* offset 2601 */ 28648 "\x44\xcc\xa7\0" /* offset 2605 */ 28649 "\x64\xcc\xa7\0" /* offset 2609 */ 28650 "\x44\xcc\xad\0" /* offset 2613 */ 28651 "\x64\xcc\xad\0" /* offset 2617 */ 28652 "\x45\xcc\x84\xcc\x80\0" /* offset 2621 */ 28653 "\x65\xcc\x84\xcc\x80\0" /* offset 2627 */ 28654 "\x45\xcc\x84\xcc\x81\0" /* offset 2633 */ 28655 "\x65\xcc\x84\xcc\x81\0" /* offset 2639 */ 28656 "\x45\xcc\xad\0" /* offset 2645 */ 28657 "\x65\xcc\xad\0" /* offset 2649 */ 28658 "\x45\xcc\xb0\0" /* offset 2653 */ 28659 "\x65\xcc\xb0\0" /* offset 2657 */ 28660 "\x45\xcc\xa7\xcc\x86\0" /* offset 2661 */ 28661 "\x65\xcc\xa7\xcc\x86\0" /* offset 2667 */ 28662 "\x46\xcc\x87\0" /* offset 2673 */ 28663 "\x66\xcc\x87\0" /* offset 2677 */ 28664 "\x47\xcc\x84\0" /* offset 2681 */ 28665 "\x67\xcc\x84\0" /* offset 2685 */ 28666 "\x48\xcc\x87\0" /* offset 2689 */ 28667 "\x68\xcc\x87\0" /* offset 2693 */ 28668 "\x48\xcc\xa3\0" /* offset 2697 */ 28669 "\x68\xcc\xa3\0" /* offset 2701 */ 28670 "\x48\xcc\x88\0" /* offset 2705 */ 28671 "\x68\xcc\x88\0" /* offset 2709 */ 28672 "\x48\xcc\xa7\0" /* offset 2713 */ 28673 "\x68\xcc\xa7\0" /* offset 2717 */ 28674 "\x48\xcc\xae\0" /* offset 2721 */ 28675 "\x68\xcc\xae\0" /* offset 2725 */ 28676 "\x49\xcc\xb0\0" /* offset 2729 */ 28677 "\x69\xcc\xb0\0" /* offset 2733 */ 28678 "\x49\xcc\x88\xcc\x81\0" /* offset 2737 */ 28679 "\x69\xcc\x88\xcc\x81\0" /* offset 2743 */ 28680 "\x4b\xcc\x81\0" /* offset 2749 */ 28681 "\x6b\xcc\x81\0" /* offset 2753 */ 28682 "\x4b\xcc\xa3\0" /* offset 2757 */ 28683 "\x6b\xcc\xa3\0" /* offset 2761 */ 28684 "\x4b\xcc\xb1\0" /* offset 2765 */ 28685 "\x6b\xcc\xb1\0" /* offset 2769 */ 28686 "\x4c\xcc\xa3\0" /* offset 2773 */ 28687 "\x6c\xcc\xa3\0" /* offset 2777 */ 28688 "\x4c\xcc\xa3\xcc\x84\0" /* offset 2781 */ 28689 "\x6c\xcc\xa3\xcc\x84\0" /* offset 2787 */ 28690 "\x4c\xcc\xb1\0" /* offset 2793 */ 28691 "\x6c\xcc\xb1\0" /* offset 2797 */ 28692 "\x4c\xcc\xad\0" /* offset 2801 */ 28693 "\x6c\xcc\xad\0" /* offset 2805 */ 28694 "\x4d\xcc\x81\0" /* offset 2809 */ 28695 "\x6d\xcc\x81\0" /* offset 2813 */ 28696 "\x4d\xcc\x87\0" /* offset 2817 */ 28697 "\x6d\xcc\x87\0" /* offset 2821 */ 28698 "\x4d\xcc\xa3\0" /* offset 2825 */ 28699 "\x6d\xcc\xa3\0" /* offset 2829 */ 28700 "\x4e\xcc\x87\0" /* offset 2833 */ 28701 "\x6e\xcc\x87\0" /* offset 2837 */ 28702 "\x4e\xcc\xa3\0" /* offset 2841 */ 28703 "\x6e\xcc\xa3\0" /* offset 2845 */ 28704 "\x4e\xcc\xb1\0" /* offset 2849 */ 28705 "\x6e\xcc\xb1\0" /* offset 2853 */ 28706 "\x4e\xcc\xad\0" /* offset 2857 */ 28707 "\x6e\xcc\xad\0" /* offset 2861 */ 28708 "\x4f\xcc\x83\xcc\x81\0" /* offset 2865 */ 28709 "\x6f\xcc\x83\xcc\x81\0" /* offset 2871 */ 28710 "\x4f\xcc\x83\xcc\x88\0" /* offset 2877 */ 28711 "\x6f\xcc\x83\xcc\x88\0" /* offset 2883 */ 28712 "\x4f\xcc\x84\xcc\x80\0" /* offset 2889 */ 28713 "\x6f\xcc\x84\xcc\x80\0" /* offset 2895 */ 28714 "\x4f\xcc\x84\xcc\x81\0" /* offset 2901 */ 28715 "\x6f\xcc\x84\xcc\x81\0" /* offset 2907 */ 28716 "\x50\xcc\x81\0" /* offset 2913 */ 28717 "\x70\xcc\x81\0" /* offset 2917 */ 28718 "\x50\xcc\x87\0" /* offset 2921 */ 28719 "\x70\xcc\x87\0" /* offset 2925 */ 28720 "\x52\xcc\x87\0" /* offset 2929 */ 28721 "\x72\xcc\x87\0" /* offset 2933 */ 28722 "\x52\xcc\xa3\0" /* offset 2937 */ 28723 "\x72\xcc\xa3\0" /* offset 2941 */ 28724 "\x52\xcc\xa3\xcc\x84\0" /* offset 2945 */ 28725 "\x72\xcc\xa3\xcc\x84\0" /* offset 2951 */ 28726 "\x52\xcc\xb1\0" /* offset 2957 */ 28727 "\x72\xcc\xb1\0" /* offset 2961 */ 28728 "\x53\xcc\x87\0" /* offset 2965 */ 28729 "\x73\xcc\x87\0" /* offset 2969 */ 28730 "\x53\xcc\xa3\0" /* offset 2973 */ 28731 "\x73\xcc\xa3\0" /* offset 2977 */ 28732 "\x53\xcc\x81\xcc\x87\0" /* offset 2981 */ 28733 "\x73\xcc\x81\xcc\x87\0" /* offset 2987 */ 28734 "\x53\xcc\x8c\xcc\x87\0" /* offset 2993 */ 28735 "\x73\xcc\x8c\xcc\x87\0" /* offset 2999 */ 28736 "\x53\xcc\xa3\xcc\x87\0" /* offset 3005 */ 28737 "\x73\xcc\xa3\xcc\x87\0" /* offset 3011 */ 28738 "\x54\xcc\x87\0" /* offset 3017 */ 28739 "\x74\xcc\x87\0" /* offset 3021 */ 28740 "\x54\xcc\xa3\0" /* offset 3025 */ 28741 "\x74\xcc\xa3\0" /* offset 3029 */ 28742 "\x54\xcc\xb1\0" /* offset 3033 */ 28743 "\x74\xcc\xb1\0" /* offset 3037 */ 28744 "\x54\xcc\xad\0" /* offset 3041 */ 28745 "\x74\xcc\xad\0" /* offset 3045 */ 28746 "\x55\xcc\xa4\0" /* offset 3049 */ 28747 "\x75\xcc\xa4\0" /* offset 3053 */ 28748 "\x55\xcc\xb0\0" /* offset 3057 */ 28749 "\x75\xcc\xb0\0" /* offset 3061 */ 28750 "\x55\xcc\xad\0" /* offset 3065 */ 28751 "\x75\xcc\xad\0" /* offset 3069 */ 28752 "\x55\xcc\x83\xcc\x81\0" /* offset 3073 */ 28753 "\x75\xcc\x83\xcc\x81\0" /* offset 3079 */ 28754 "\x55\xcc\x84\xcc\x88\0" /* offset 3085 */ 28755 "\x75\xcc\x84\xcc\x88\0" /* offset 3091 */ 28756 "\x56\xcc\x83\0" /* offset 3097 */ 28757 "\x76\xcc\x83\0" /* offset 3101 */ 28758 "\x56\xcc\xa3\0" /* offset 3105 */ 28759 "\x76\xcc\xa3\0" /* offset 3109 */ 28760 "\x57\xcc\x80\0" /* offset 3113 */ 28761 "\x77\xcc\x80\0" /* offset 3117 */ 28762 "\x57\xcc\x81\0" /* offset 3121 */ 28763 "\x77\xcc\x81\0" /* offset 3125 */ 28764 "\x57\xcc\x88\0" /* offset 3129 */ 28765 "\x77\xcc\x88\0" /* offset 3133 */ 28766 "\x57\xcc\x87\0" /* offset 3137 */ 28767 "\x77\xcc\x87\0" /* offset 3141 */ 28768 "\x57\xcc\xa3\0" /* offset 3145 */ 28769 "\x77\xcc\xa3\0" /* offset 3149 */ 28770 "\x58\xcc\x87\0" /* offset 3153 */ 28771 "\x78\xcc\x87\0" /* offset 3157 */ 28772 "\x58\xcc\x88\0" /* offset 3161 */ 28773 "\x78\xcc\x88\0" /* offset 3165 */ 28774 "\x59\xcc\x87\0" /* offset 3169 */ 28775 "\x79\xcc\x87\0" /* offset 3173 */ 28776 "\x5a\xcc\x82\0" /* offset 3177 */ 28777 "\x7a\xcc\x82\0" /* offset 3181 */ 28778 "\x5a\xcc\xa3\0" /* offset 3185 */ 28779 "\x7a\xcc\xa3\0" /* offset 3189 */ 28780 "\x5a\xcc\xb1\0" /* offset 3193 */ 28781 "\x7a\xcc\xb1\0" /* offset 3197 */ 28782 "\x68\xcc\xb1\0" /* offset 3201 */ 28783 "\x74\xcc\x88\0" /* offset 3205 */ 28784 "\x77\xcc\x8a\0" /* offset 3209 */ 28785 "\x79\xcc\x8a\0" /* offset 3213 */ 28786 "\x61\xca\xbe\0" /* offset 3217 */ 28787 "\xc5\xbf\xcc\x87\0" /* offset 3221 */ 28788 "\x41\xcc\xa3\0" /* offset 3226 */ 28789 "\x61\xcc\xa3\0" /* offset 3230 */ 28790 "\x41\xcc\x89\0" /* offset 3234 */ 28791 "\x61\xcc\x89\0" /* offset 3238 */ 28792 "\x41\xcc\x82\xcc\x81\0" /* offset 3242 */ 28793 "\x61\xcc\x82\xcc\x81\0" /* offset 3248 */ 28794 "\x41\xcc\x82\xcc\x80\0" /* offset 3254 */ 28795 "\x61\xcc\x82\xcc\x80\0" /* offset 3260 */ 28796 "\x41\xcc\x82\xcc\x89\0" /* offset 3266 */ 28797 "\x61\xcc\x82\xcc\x89\0" /* offset 3272 */ 28798 "\x41\xcc\x82\xcc\x83\0" /* offset 3278 */ 28799 "\x61\xcc\x82\xcc\x83\0" /* offset 3284 */ 28800 "\x41\xcc\xa3\xcc\x82\0" /* offset 3290 */ 28801 "\x61\xcc\xa3\xcc\x82\0" /* offset 3296 */ 28802 "\x41\xcc\x86\xcc\x81\0" /* offset 3302 */ 28803 "\x61\xcc\x86\xcc\x81\0" /* offset 3308 */ 28804 "\x41\xcc\x86\xcc\x80\0" /* offset 3314 */ 28805 "\x61\xcc\x86\xcc\x80\0" /* offset 3320 */ 28806 "\x41\xcc\x86\xcc\x89\0" /* offset 3326 */ 28807 "\x61\xcc\x86\xcc\x89\0" /* offset 3332 */ 28808 "\x41\xcc\x86\xcc\x83\0" /* offset 3338 */ 28809 "\x61\xcc\x86\xcc\x83\0" /* offset 3344 */ 28810 "\x41\xcc\xa3\xcc\x86\0" /* offset 3350 */ 28811 "\x61\xcc\xa3\xcc\x86\0" /* offset 3356 */ 28812 "\x45\xcc\xa3\0" /* offset 3362 */ 28813 "\x65\xcc\xa3\0" /* offset 3366 */ 28814 "\x45\xcc\x89\0" /* offset 3370 */ 28815 "\x65\xcc\x89\0" /* offset 3374 */ 28816 "\x45\xcc\x83\0" /* offset 3378 */ 28817 "\x65\xcc\x83\0" /* offset 3382 */ 28818 "\x45\xcc\x82\xcc\x81\0" /* offset 3386 */ 28819 "\x65\xcc\x82\xcc\x81\0" /* offset 3392 */ 28820 "\x45\xcc\x82\xcc\x80\0" /* offset 3398 */ 28821 "\x65\xcc\x82\xcc\x80\0" /* offset 3404 */ 28822 "\x45\xcc\x82\xcc\x89\0" /* offset 3410 */ 28823 "\x65\xcc\x82\xcc\x89\0" /* offset 3416 */ 28824 "\x45\xcc\x82\xcc\x83\0" /* offset 3422 */ 28825 "\x65\xcc\x82\xcc\x83\0" /* offset 3428 */ 28826 "\x45\xcc\xa3\xcc\x82\0" /* offset 3434 */ 28827 "\x65\xcc\xa3\xcc\x82\0" /* offset 3440 */ 28828 "\x49\xcc\x89\0" /* offset 3446 */ 28829 "\x69\xcc\x89\0" /* offset 3450 */ 28830 "\x49\xcc\xa3\0" /* offset 3454 */ 28831 "\x69\xcc\xa3\0" /* offset 3458 */ 28832 "\x4f\xcc\xa3\0" /* offset 3462 */ 28833 "\x6f\xcc\xa3\0" /* offset 3466 */ 28834 "\x4f\xcc\x89\0" /* offset 3470 */ 28835 "\x6f\xcc\x89\0" /* offset 3474 */ 28836 "\x4f\xcc\x82\xcc\x81\0" /* offset 3478 */ 28837 "\x6f\xcc\x82\xcc\x81\0" /* offset 3484 */ 28838 "\x4f\xcc\x82\xcc\x80\0" /* offset 3490 */ 28839 "\x6f\xcc\x82\xcc\x80\0" /* offset 3496 */ 28840 "\x4f\xcc\x82\xcc\x89\0" /* offset 3502 */ 28841 "\x6f\xcc\x82\xcc\x89\0" /* offset 3508 */ 28842 "\x4f\xcc\x82\xcc\x83\0" /* offset 3514 */ 28843 "\x6f\xcc\x82\xcc\x83\0" /* offset 3520 */ 28844 "\x4f\xcc\xa3\xcc\x82\0" /* offset 3526 */ 28845 "\x6f\xcc\xa3\xcc\x82\0" /* offset 3532 */ 28846 "\x4f\xcc\x9b\xcc\x81\0" /* offset 3538 */ 28847 "\x6f\xcc\x9b\xcc\x81\0" /* offset 3544 */ 28848 "\x4f\xcc\x9b\xcc\x80\0" /* offset 3550 */ 28849 "\x6f\xcc\x9b\xcc\x80\0" /* offset 3556 */ 28850 "\x4f\xcc\x9b\xcc\x89\0" /* offset 3562 */ 28851 "\x6f\xcc\x9b\xcc\x89\0" /* offset 3568 */ 28852 "\x4f\xcc\x9b\xcc\x83\0" /* offset 3574 */ 28853 "\x6f\xcc\x9b\xcc\x83\0" /* offset 3580 */ 28854 "\x4f\xcc\x9b\xcc\xa3\0" /* offset 3586 */ 28855 "\x6f\xcc\x9b\xcc\xa3\0" /* offset 3592 */ 28856 "\x55\xcc\xa3\0" /* offset 3598 */ 28857 "\x75\xcc\xa3\0" /* offset 3602 */ 28858 "\x55\xcc\x89\0" /* offset 3606 */ 28859 "\x75\xcc\x89\0" /* offset 3610 */ 28860 "\x55\xcc\x9b\xcc\x81\0" /* offset 3614 */ 28861 "\x75\xcc\x9b\xcc\x81\0" /* offset 3620 */ 28862 "\x55\xcc\x9b\xcc\x80\0" /* offset 3626 */ 28863 "\x75\xcc\x9b\xcc\x80\0" /* offset 3632 */ 28864 "\x55\xcc\x9b\xcc\x89\0" /* offset 3638 */ 28865 "\x75\xcc\x9b\xcc\x89\0" /* offset 3644 */ 28866 "\x55\xcc\x9b\xcc\x83\0" /* offset 3650 */ 28867 "\x75\xcc\x9b\xcc\x83\0" /* offset 3656 */ 28868 "\x55\xcc\x9b\xcc\xa3\0" /* offset 3662 */ 28869 "\x75\xcc\x9b\xcc\xa3\0" /* offset 3668 */ 28870 "\x59\xcc\x80\0" /* offset 3674 */ 28871 "\x79\xcc\x80\0" /* offset 3678 */ 28872 "\x59\xcc\xa3\0" /* offset 3682 */ 28873 "\x79\xcc\xa3\0" /* offset 3686 */ 28874 "\x59\xcc\x89\0" /* offset 3690 */ 28875 "\x79\xcc\x89\0" /* offset 3694 */ 28876 "\x59\xcc\x83\0" /* offset 3698 */ 28877 "\x79\xcc\x83\0" /* offset 3702 */ 28878 "\xce\xb1\xcc\x93\0" /* offset 3706 */ 28879 "\xce\xb1\xcc\x94\0" /* offset 3711 */ 28880 "\xce\xb1\xcc\x93\xcc\x80\0" /* offset 3716 */ 28881 "\xce\xb1\xcc\x94\xcc\x80\0" /* offset 3723 */ 28882 "\xce\xb1\xcc\x93\xcc\x81\0" /* offset 3730 */ 28883 "\xce\xb1\xcc\x94\xcc\x81\0" /* offset 3737 */ 28884 "\xce\xb1\xcc\x93\xcd\x82\0" /* offset 3744 */ 28885 "\xce\xb1\xcc\x94\xcd\x82\0" /* offset 3751 */ 28886 "\xce\x91\xcc\x93\0" /* offset 3758 */ 28887 "\xce\x91\xcc\x94\0" /* offset 3763 */ 28888 "\xce\x91\xcc\x93\xcc\x80\0" /* offset 3768 */ 28889 "\xce\x91\xcc\x94\xcc\x80\0" /* offset 3775 */ 28890 "\xce\x91\xcc\x93\xcc\x81\0" /* offset 3782 */ 28891 "\xce\x91\xcc\x94\xcc\x81\0" /* offset 3789 */ 28892 "\xce\x91\xcc\x93\xcd\x82\0" /* offset 3796 */ 28893 "\xce\x91\xcc\x94\xcd\x82\0" /* offset 3803 */ 28894 "\xce\xb5\xcc\x93\0" /* offset 3810 */ 28895 "\xce\xb5\xcc\x94\0" /* offset 3815 */ 28896 "\xce\xb5\xcc\x93\xcc\x80\0" /* offset 3820 */ 28897 "\xce\xb5\xcc\x94\xcc\x80\0" /* offset 3827 */ 28898 "\xce\xb5\xcc\x93\xcc\x81\0" /* offset 3834 */ 28899 "\xce\xb5\xcc\x94\xcc\x81\0" /* offset 3841 */ 28900 "\xce\x95\xcc\x93\0" /* offset 3848 */ 28901 "\xce\x95\xcc\x94\0" /* offset 3853 */ 28902 "\xce\x95\xcc\x93\xcc\x80\0" /* offset 3858 */ 28903 "\xce\x95\xcc\x94\xcc\x80\0" /* offset 3865 */ 28904 "\xce\x95\xcc\x93\xcc\x81\0" /* offset 3872 */ 28905 "\xce\x95\xcc\x94\xcc\x81\0" /* offset 3879 */ 28906 "\xce\xb7\xcc\x93\0" /* offset 3886 */ 28907 "\xce\xb7\xcc\x94\0" /* offset 3891 */ 28908 "\xce\xb7\xcc\x93\xcc\x80\0" /* offset 3896 */ 28909 "\xce\xb7\xcc\x94\xcc\x80\0" /* offset 3903 */ 28910 "\xce\xb7\xcc\x93\xcc\x81\0" /* offset 3910 */ 28911 "\xce\xb7\xcc\x94\xcc\x81\0" /* offset 3917 */ 28912 "\xce\xb7\xcc\x93\xcd\x82\0" /* offset 3924 */ 28913 "\xce\xb7\xcc\x94\xcd\x82\0" /* offset 3931 */ 28914 "\xce\x97\xcc\x93\0" /* offset 3938 */ 28915 "\xce\x97\xcc\x94\0" /* offset 3943 */ 28916 "\xce\x97\xcc\x93\xcc\x80\0" /* offset 3948 */ 28917 "\xce\x97\xcc\x94\xcc\x80\0" /* offset 3955 */ 28918 "\xce\x97\xcc\x93\xcc\x81\0" /* offset 3962 */ 28919 "\xce\x97\xcc\x94\xcc\x81\0" /* offset 3969 */ 28920 "\xce\x97\xcc\x93\xcd\x82\0" /* offset 3976 */ 28921 "\xce\x97\xcc\x94\xcd\x82\0" /* offset 3983 */ 28922 "\xce\xb9\xcc\x93\0" /* offset 3990 */ 28923 "\xce\xb9\xcc\x94\0" /* offset 3995 */ 28924 "\xce\xb9\xcc\x93\xcc\x80\0" /* offset 4000 */ 28925 "\xce\xb9\xcc\x94\xcc\x80\0" /* offset 4007 */ 28926 "\xce\xb9\xcc\x93\xcc\x81\0" /* offset 4014 */ 28927 "\xce\xb9\xcc\x94\xcc\x81\0" /* offset 4021 */ 28928 "\xce\xb9\xcc\x93\xcd\x82\0" /* offset 4028 */ 28929 "\xce\xb9\xcc\x94\xcd\x82\0" /* offset 4035 */ 28930 "\xce\x99\xcc\x93\0" /* offset 4042 */ 28931 "\xce\x99\xcc\x94\0" /* offset 4047 */ 28932 "\xce\x99\xcc\x93\xcc\x80\0" /* offset 4052 */ 28933 "\xce\x99\xcc\x94\xcc\x80\0" /* offset 4059 */ 28934 "\xce\x99\xcc\x93\xcc\x81\0" /* offset 4066 */ 28935 "\xce\x99\xcc\x94\xcc\x81\0" /* offset 4073 */ 28936 "\xce\x99\xcc\x93\xcd\x82\0" /* offset 4080 */ 28937 "\xce\x99\xcc\x94\xcd\x82\0" /* offset 4087 */ 28938 "\xce\xbf\xcc\x93\0" /* offset 4094 */ 28939 "\xce\xbf\xcc\x94\0" /* offset 4099 */ 28940 "\xce\xbf\xcc\x93\xcc\x80\0" /* offset 4104 */ 28941 "\xce\xbf\xcc\x94\xcc\x80\0" /* offset 4111 */ 28942 "\xce\xbf\xcc\x93\xcc\x81\0" /* offset 4118 */ 28943 "\xce\xbf\xcc\x94\xcc\x81\0" /* offset 4125 */ 28944 "\xce\x9f\xcc\x93\0" /* offset 4132 */ 28945 "\xce\x9f\xcc\x94\0" /* offset 4137 */ 28946 "\xce\x9f\xcc\x93\xcc\x80\0" /* offset 4142 */ 28947 "\xce\x9f\xcc\x94\xcc\x80\0" /* offset 4149 */ 28948 "\xce\x9f\xcc\x93\xcc\x81\0" /* offset 4156 */ 28949 "\xce\x9f\xcc\x94\xcc\x81\0" /* offset 4163 */ 28950 "\xcf\x85\xcc\x93\0" /* offset 4170 */ 28951 "\xcf\x85\xcc\x94\0" /* offset 4175 */ 28952 "\xcf\x85\xcc\x93\xcc\x80\0" /* offset 4180 */ 28953 "\xcf\x85\xcc\x94\xcc\x80\0" /* offset 4187 */ 28954 "\xcf\x85\xcc\x93\xcc\x81\0" /* offset 4194 */ 28955 "\xcf\x85\xcc\x94\xcc\x81\0" /* offset 4201 */ 28956 "\xcf\x85\xcc\x93\xcd\x82\0" /* offset 4208 */ 28957 "\xcf\x85\xcc\x94\xcd\x82\0" /* offset 4215 */ 28958 "\xce\xa5\xcc\x94\0" /* offset 4222 */ 28959 "\xce\xa5\xcc\x94\xcc\x80\0" /* offset 4227 */ 28960 "\xce\xa5\xcc\x94\xcc\x81\0" /* offset 4234 */ 28961 "\xce\xa5\xcc\x94\xcd\x82\0" /* offset 4241 */ 28962 "\xcf\x89\xcc\x93\0" /* offset 4248 */ 28963 "\xcf\x89\xcc\x94\0" /* offset 4253 */ 28964 "\xcf\x89\xcc\x93\xcc\x80\0" /* offset 4258 */ 28965 "\xcf\x89\xcc\x94\xcc\x80\0" /* offset 4265 */ 28966 "\xcf\x89\xcc\x93\xcc\x81\0" /* offset 4272 */ 28967 "\xcf\x89\xcc\x94\xcc\x81\0" /* offset 4279 */ 28968 "\xcf\x89\xcc\x93\xcd\x82\0" /* offset 4286 */ 28969 "\xcf\x89\xcc\x94\xcd\x82\0" /* offset 4293 */ 28970 "\xce\xa9\xcc\x93\0" /* offset 4300 */ 28971 "\xce\xa9\xcc\x94\0" /* offset 4305 */ 28972 "\xce\xa9\xcc\x93\xcc\x80\0" /* offset 4310 */ 28973 "\xce\xa9\xcc\x94\xcc\x80\0" /* offset 4317 */ 28974 "\xce\xa9\xcc\x93\xcc\x81\0" /* offset 4324 */ 28975 "\xce\xa9\xcc\x94\xcc\x81\0" /* offset 4331 */ 28976 "\xce\xa9\xcc\x93\xcd\x82\0" /* offset 4338 */ 28977 "\xce\xa9\xcc\x94\xcd\x82\0" /* offset 4345 */ 28978 "\xce\xb1\xcc\x80\0" /* offset 4352 */ 28979 "\xce\xb5\xcc\x80\0" /* offset 4357 */ 28980 "\xce\xb7\xcc\x80\0" /* offset 4362 */ 28981 "\xce\xb9\xcc\x80\0" /* offset 4367 */ 28982 "\xce\xbf\xcc\x80\0" /* offset 4372 */ 28983 "\xcf\x85\xcc\x80\0" /* offset 4377 */ 28984 "\xcf\x89\xcc\x80\0" /* offset 4382 */ 28985 "\xce\xb1\xcc\x93\xcd\x85\0" /* offset 4387 */ 28986 "\xce\xb1\xcc\x94\xcd\x85\0" /* offset 4394 */ 28987 "\xce\xb1\xcc\x93\xcc\x80\xcd\x85\0" /* offset 4401 */ 28988 "\xce\xb1\xcc\x94\xcc\x80\xcd\x85\0" /* offset 4410 */ 28989 "\xce\xb1\xcc\x93\xcc\x81\xcd\x85\0" /* offset 4419 */ 28990 "\xce\xb1\xcc\x94\xcc\x81\xcd\x85\0" /* offset 4428 */ 28991 "\xce\xb1\xcc\x93\xcd\x82\xcd\x85\0" /* offset 4437 */ 28992 "\xce\xb1\xcc\x94\xcd\x82\xcd\x85\0" /* offset 4446 */ 28993 "\xce\x91\xcc\x93\xcd\x85\0" /* offset 4455 */ 28994 "\xce\x91\xcc\x94\xcd\x85\0" /* offset 4462 */ 28995 "\xce\x91\xcc\x93\xcc\x80\xcd\x85\0" /* offset 4469 */ 28996 "\xce\x91\xcc\x94\xcc\x80\xcd\x85\0" /* offset 4478 */ 28997 "\xce\x91\xcc\x93\xcc\x81\xcd\x85\0" /* offset 4487 */ 28998 "\xce\x91\xcc\x94\xcc\x81\xcd\x85\0" /* offset 4496 */ 28999 "\xce\x91\xcc\x93\xcd\x82\xcd\x85\0" /* offset 4505 */ 29000 "\xce\x91\xcc\x94\xcd\x82\xcd\x85\0" /* offset 4514 */ 29001 "\xce\xb7\xcc\x93\xcd\x85\0" /* offset 4523 */ 29002 "\xce\xb7\xcc\x94\xcd\x85\0" /* offset 4530 */ 29003 "\xce\xb7\xcc\x93\xcc\x80\xcd\x85\0" /* offset 4537 */ 29004 "\xce\xb7\xcc\x94\xcc\x80\xcd\x85\0" /* offset 4546 */ 29005 "\xce\xb7\xcc\x93\xcc\x81\xcd\x85\0" /* offset 4555 */ 29006 "\xce\xb7\xcc\x94\xcc\x81\xcd\x85\0" /* offset 4564 */ 29007 "\xce\xb7\xcc\x93\xcd\x82\xcd\x85\0" /* offset 4573 */ 29008 "\xce\xb7\xcc\x94\xcd\x82\xcd\x85\0" /* offset 4582 */ 29009 "\xce\x97\xcc\x93\xcd\x85\0" /* offset 4591 */ 29010 "\xce\x97\xcc\x94\xcd\x85\0" /* offset 4598 */ 29011 "\xce\x97\xcc\x93\xcc\x80\xcd\x85\0" /* offset 4605 */ 29012 "\xce\x97\xcc\x94\xcc\x80\xcd\x85\0" /* offset 4614 */ 29013 "\xce\x97\xcc\x93\xcc\x81\xcd\x85\0" /* offset 4623 */ 29014 "\xce\x97\xcc\x94\xcc\x81\xcd\x85\0" /* offset 4632 */ 29015 "\xce\x97\xcc\x93\xcd\x82\xcd\x85\0" /* offset 4641 */ 29016 "\xce\x97\xcc\x94\xcd\x82\xcd\x85\0" /* offset 4650 */ 29017 "\xcf\x89\xcc\x93\xcd\x85\0" /* offset 4659 */ 29018 "\xcf\x89\xcc\x94\xcd\x85\0" /* offset 4666 */ 29019 "\xcf\x89\xcc\x93\xcc\x80\xcd\x85\0" /* offset 4673 */ 29020 "\xcf\x89\xcc\x94\xcc\x80\xcd\x85\0" /* offset 4682 */ 29021 "\xcf\x89\xcc\x93\xcc\x81\xcd\x85\0" /* offset 4691 */ 29022 "\xcf\x89\xcc\x94\xcc\x81\xcd\x85\0" /* offset 4700 */ 29023 "\xcf\x89\xcc\x93\xcd\x82\xcd\x85\0" /* offset 4709 */ 29024 "\xcf\x89\xcc\x94\xcd\x82\xcd\x85\0" /* offset 4718 */ 29025 "\xce\xa9\xcc\x93\xcd\x85\0" /* offset 4727 */ 29026 "\xce\xa9\xcc\x94\xcd\x85\0" /* offset 4734 */ 29027 "\xce\xa9\xcc\x93\xcc\x80\xcd\x85\0" /* offset 4741 */ 29028 "\xce\xa9\xcc\x94\xcc\x80\xcd\x85\0" /* offset 4750 */ 29029 "\xce\xa9\xcc\x93\xcc\x81\xcd\x85\0" /* offset 4759 */ 29030 "\xce\xa9\xcc\x94\xcc\x81\xcd\x85\0" /* offset 4768 */ 29031 "\xce\xa9\xcc\x93\xcd\x82\xcd\x85\0" /* offset 4777 */ 29032 "\xce\xa9\xcc\x94\xcd\x82\xcd\x85\0" /* offset 4786 */ 29033 "\xce\xb1\xcc\x86\0" /* offset 4795 */ 29034 "\xce\xb1\xcc\x84\0" /* offset 4800 */ 29035 "\xce\xb1\xcc\x80\xcd\x85\0" /* offset 4805 */ 29036 "\xce\xb1\xcd\x85\0" /* offset 4812 */ 29037 "\xce\xb1\xcc\x81\xcd\x85\0" /* offset 4817 */ 29038 "\xce\xb1\xcd\x82\0" /* offset 4824 */ 29039 "\xce\xb1\xcd\x82\xcd\x85\0" /* offset 4829 */ 29040 "\xce\x91\xcc\x86\0" /* offset 4836 */ 29041 "\xce\x91\xcc\x84\0" /* offset 4841 */ 29042 "\xce\x91\xcc\x80\0" /* offset 4846 */ 29043 "\xce\x91\xcd\x85\0" /* offset 4851 */ 29044 "\x20\xcc\x93\0" /* offset 4856 */ 29045 "\xce\xb9\0" /* offset 4860 */ 29046 "\x20\xcd\x82\0" /* offset 4863 */ 29047 "\xc2\xa8\xcd\x82\0" /* offset 4867 */ 29048 "\x20\xcc\x88\xcd\x82\0" /* offset 4872 */ 29049 "\xce\xb7\xcc\x80\xcd\x85\0" /* offset 4878 */ 29050 "\xce\xb7\xcd\x85\0" /* offset 4885 */ 29051 "\xce\xb7\xcc\x81\xcd\x85\0" /* offset 4890 */ 29052 "\xce\xb7\xcd\x82\0" /* offset 4897 */ 29053 "\xce\xb7\xcd\x82\xcd\x85\0" /* offset 4902 */ 29054 "\xce\x95\xcc\x80\0" /* offset 4909 */ 29055 "\xce\x97\xcc\x80\0" /* offset 4914 */ 29056 "\xce\x97\xcd\x85\0" /* offset 4919 */ 29057 "\xe1\xbe\xbf\xcc\x80\0" /* offset 4924 */ 29058 "\x20\xcc\x93\xcc\x80\0" /* offset 4930 */ 29059 "\xe1\xbe\xbf\xcc\x81\0" /* offset 4936 */ 29060 "\x20\xcc\x93\xcc\x81\0" /* offset 4942 */ 29061 "\xe1\xbe\xbf\xcd\x82\0" /* offset 4948 */ 29062 "\x20\xcc\x93\xcd\x82\0" /* offset 4954 */ 29063 "\xce\xb9\xcc\x86\0" /* offset 4960 */ 29064 "\xce\xb9\xcc\x84\0" /* offset 4965 */ 29065 "\xce\xb9\xcc\x88\xcc\x80\0" /* offset 4970 */ 29066 "\xce\xb9\xcd\x82\0" /* offset 4977 */ 29067 "\xce\xb9\xcc\x88\xcd\x82\0" /* offset 4982 */ 29068 "\xce\x99\xcc\x86\0" /* offset 4989 */ 29069 "\xce\x99\xcc\x84\0" /* offset 4994 */ 29070 "\xce\x99\xcc\x80\0" /* offset 4999 */ 29071 "\xe1\xbf\xbe\xcc\x80\0" /* offset 5004 */ 29072 "\x20\xcc\x94\xcc\x80\0" /* offset 5010 */ 29073 "\xe1\xbf\xbe\xcc\x81\0" /* offset 5016 */ 29074 "\x20\xcc\x94\xcc\x81\0" /* offset 5022 */ 29075 "\xe1\xbf\xbe\xcd\x82\0" /* offset 5028 */ 29076 "\x20\xcc\x94\xcd\x82\0" /* offset 5034 */ 29077 "\xcf\x85\xcc\x86\0" /* offset 5040 */ 29078 "\xcf\x85\xcc\x84\0" /* offset 5045 */ 29079 "\xcf\x85\xcc\x88\xcc\x80\0" /* offset 5050 */ 29080 "\xcf\x81\xcc\x93\0" /* offset 5057 */ 29081 "\xcf\x81\xcc\x94\0" /* offset 5062 */ 29082 "\xcf\x85\xcd\x82\0" /* offset 5067 */ 29083 "\xcf\x85\xcc\x88\xcd\x82\0" /* offset 5072 */ 29084 "\xce\xa5\xcc\x86\0" /* offset 5079 */ 29085 "\xce\xa5\xcc\x84\0" /* offset 5084 */ 29086 "\xce\xa5\xcc\x80\0" /* offset 5089 */ 29087 "\xce\xa1\xcc\x94\0" /* offset 5094 */ 29088 "\xc2\xa8\xcc\x80\0" /* offset 5099 */ 29089 "\x20\xcc\x88\xcc\x80\0" /* offset 5104 */ 29090 "\x60\0" /* offset 5110 */ 29091 "\xcf\x89\xcc\x80\xcd\x85\0" /* offset 5112 */ 29092 "\xcf\x89\xcd\x85\0" /* offset 5119 */ 29093 "\xcf\x89\xcc\x81\xcd\x85\0" /* offset 5124 */ 29094 "\xcf\x89\xcd\x82\0" /* offset 5131 */ 29095 "\xcf\x89\xcd\x82\xcd\x85\0" /* offset 5136 */ 29096 "\xce\x9f\xcc\x80\0" /* offset 5143 */ 29097 "\xce\xa9\xcc\x80\0" /* offset 5148 */ 29098 "\xce\xa9\xcd\x85\0" /* offset 5153 */ 29099 "\xc2\xb4\0" /* offset 5158 */ 29100 "\x20\xcc\x94\0" /* offset 5161 */ 29101 "\xe2\x80\x82\0" /* offset 5165 */ 29102 "\xe2\x80\x83\0" /* offset 5169 */ 29103 "\xe2\x80\x90\0" /* offset 5173 */ 29104 "\x20\xcc\xb3\0" /* offset 5177 */ 29105 "\x2e\0" /* offset 5181 */ 29106 "\x2e\x2e\0" /* offset 5183 */ 29107 "\x2e\x2e\x2e\0" /* offset 5186 */ 29108 "\xe2\x80\xb2\xe2\x80\xb2\0" /* offset 5190 */ 29109 "\xe2\x80\xb2\xe2\x80\xb2\xe2\x80\xb2\0" /* offset 5197 */ 29110 "\xe2\x80\xb5\xe2\x80\xb5\0" /* offset 5207 */ 29111 "\xe2\x80\xb5\xe2\x80\xb5\xe2\x80\xb5\0" /* offset 5214 */ 29112 "\x21\x21\0" /* offset 5224 */ 29113 "\x20\xcc\x85\0" /* offset 5227 */ 29114 "\x3f\x3f\0" /* offset 5231 */ 29115 "\x3f\x21\0" /* offset 5234 */ 29116 "\x21\x3f\0" /* offset 5237 */ 29117 "\xe2\x80\xb2\xe2\x80\xb2\xe2\x80\xb2\xe2\x80\xb2\0" /* offset 5240 */ 29118 "\x30\0" /* offset 5253 */ 29119 "\x34\0" /* offset 5255 */ 29120 "\x35\0" /* offset 5257 */ 29121 "\x36\0" /* offset 5259 */ 29122 "\x37\0" /* offset 5261 */ 29123 "\x38\0" /* offset 5263 */ 29124 "\x39\0" /* offset 5265 */ 29125 "\x2b\0" /* offset 5267 */ 29126 "\xe2\x88\x92\0" /* offset 5269 */ 29127 "\x3d\0" /* offset 5273 */ 29128 "\x28\0" /* offset 5275 */ 29129 "\x29\0" /* offset 5277 */ 29130 "\x6e\0" /* offset 5279 */ 29131 "\x52\x73\0" /* offset 5281 */ 29132 "\x61\x2f\x63\0" /* offset 5284 */ 29133 "\x61\x2f\x73\0" /* offset 5288 */ 29134 "\x43\0" /* offset 5292 */ 29135 "\xc2\xb0\x43\0" /* offset 5294 */ 29136 "\x63\x2f\x6f\0" /* offset 5298 */ 29137 "\x63\x2f\x75\0" /* offset 5302 */ 29138 "\xc6\x90\0" /* offset 5306 */ 29139 "\xc2\xb0\x46\0" /* offset 5309 */ 29140 "\xc4\xa7\0" /* offset 5313 */ 29141 "\x4e\x6f\0" /* offset 5316 */ 29142 "\x51\0" /* offset 5319 */ 29143 "\x53\x4d\0" /* offset 5321 */ 29144 "\x54\x45\x4c\0" /* offset 5324 */ 29145 "\x54\x4d\0" /* offset 5328 */ 29146 "\x5a\0" /* offset 5331 */ 29147 "\xce\xa9\0" /* offset 5333 */ 29148 "\x46\0" /* offset 5336 */ 29149 "\xd7\x90\0" /* offset 5338 */ 29150 "\xd7\x91\0" /* offset 5341 */ 29151 "\xd7\x92\0" /* offset 5344 */ 29152 "\xd7\x93\0" /* offset 5347 */ 29153 "\x46\x41\x58\0" /* offset 5350 */ 29154 "\xce\x93\0" /* offset 5354 */ 29155 "\xce\xa0\0" /* offset 5357 */ 29156 "\xe2\x88\x91\0" /* offset 5360 */ 29157 "\x31\xe2\x81\x84\x37\0" /* offset 5364 */ 29158 "\x31\xe2\x81\x84\x39\0" /* offset 5370 */ 29159 "\x31\xe2\x81\x84\x31\x30\0" /* offset 5376 */ 29160 "\x31\xe2\x81\x84\x33\0" /* offset 5383 */ 29161 "\x32\xe2\x81\x84\x33\0" /* offset 5389 */ 29162 "\x31\xe2\x81\x84\x35\0" /* offset 5395 */ 29163 "\x32\xe2\x81\x84\x35\0" /* offset 5401 */ 29164 "\x33\xe2\x81\x84\x35\0" /* offset 5407 */ 29165 "\x34\xe2\x81\x84\x35\0" /* offset 5413 */ 29166 "\x31\xe2\x81\x84\x36\0" /* offset 5419 */ 29167 "\x35\xe2\x81\x84\x36\0" /* offset 5425 */ 29168 "\x31\xe2\x81\x84\x38\0" /* offset 5431 */ 29169 "\x33\xe2\x81\x84\x38\0" /* offset 5437 */ 29170 "\x35\xe2\x81\x84\x38\0" /* offset 5443 */ 29171 "\x37\xe2\x81\x84\x38\0" /* offset 5449 */ 29172 "\x31\xe2\x81\x84\0" /* offset 5455 */ 29173 "\x49\x49\0" /* offset 5460 */ 29174 "\x49\x49\x49\0" /* offset 5463 */ 29175 "\x49\x56\0" /* offset 5467 */ 29176 "\x56\0" /* offset 5470 */ 29177 "\x56\x49\0" /* offset 5472 */ 29178 "\x56\x49\x49\0" /* offset 5475 */ 29179 "\x56\x49\x49\x49\0" /* offset 5479 */ 29180 "\x49\x58\0" /* offset 5484 */ 29181 "\x58\0" /* offset 5487 */ 29182 "\x58\x49\0" /* offset 5489 */ 29183 "\x58\x49\x49\0" /* offset 5492 */ 29184 "\x69\x69\0" /* offset 5496 */ 29185 "\x69\x69\x69\0" /* offset 5499 */ 29186 "\x69\x76\0" /* offset 5503 */ 29187 "\x76\x69\0" /* offset 5506 */ 29188 "\x76\x69\x69\0" /* offset 5509 */ 29189 "\x76\x69\x69\x69\0" /* offset 5513 */ 29190 "\x69\x78\0" /* offset 5518 */ 29191 "\x78\x69\0" /* offset 5521 */ 29192 "\x78\x69\x69\0" /* offset 5524 */ 29193 "\x30\xe2\x81\x84\x33\0" /* offset 5528 */ 29194 "\xe2\x86\x90\xcc\xb8\0" /* offset 5534 */ 29195 "\xe2\x86\x92\xcc\xb8\0" /* offset 5540 */ 29196 "\xe2\x86\x94\xcc\xb8\0" /* offset 5546 */ 29197 "\xe2\x87\x90\xcc\xb8\0" /* offset 5552 */ 29198 "\xe2\x87\x94\xcc\xb8\0" /* offset 5558 */ 29199 "\xe2\x87\x92\xcc\xb8\0" /* offset 5564 */ 29200 "\xe2\x88\x83\xcc\xb8\0" /* offset 5570 */ 29201 "\xe2\x88\x88\xcc\xb8\0" /* offset 5576 */ 29202 "\xe2\x88\x8b\xcc\xb8\0" /* offset 5582 */ 29203 "\xe2\x88\xa3\xcc\xb8\0" /* offset 5588 */ 29204 "\xe2\x88\xa5\xcc\xb8\0" /* offset 5594 */ 29205 "\xe2\x88\xab\xe2\x88\xab\0" /* offset 5600 */ 29206 "\xe2\x88\xab\xe2\x88\xab\xe2\x88\xab\0" /* offset 5607 */ 29207 "\xe2\x88\xae\xe2\x88\xae\0" /* offset 5617 */ 29208 "\xe2\x88\xae\xe2\x88\xae\xe2\x88\xae\0" /* offset 5624 */ 29209 "\xe2\x88\xbc\xcc\xb8\0" /* offset 5634 */ 29210 "\xe2\x89\x83\xcc\xb8\0" /* offset 5640 */ 29211 "\xe2\x89\x85\xcc\xb8\0" /* offset 5646 */ 29212 "\xe2\x89\x88\xcc\xb8\0" /* offset 5652 */ 29213 "\x3d\xcc\xb8\0" /* offset 5658 */ 29214 "\xe2\x89\xa1\xcc\xb8\0" /* offset 5662 */ 29215 "\xe2\x89\x8d\xcc\xb8\0" /* offset 5668 */ 29216 "\x3c\xcc\xb8\0" /* offset 5674 */ 29217 "\x3e\xcc\xb8\0" /* offset 5678 */ 29218 "\xe2\x89\xa4\xcc\xb8\0" /* offset 5682 */ 29219 "\xe2\x89\xa5\xcc\xb8\0" /* offset 5688 */ 29220 "\xe2\x89\xb2\xcc\xb8\0" /* offset 5694 */ 29221 "\xe2\x89\xb3\xcc\xb8\0" /* offset 5700 */ 29222 "\xe2\x89\xb6\xcc\xb8\0" /* offset 5706 */ 29223 "\xe2\x89\xb7\xcc\xb8\0" /* offset 5712 */ 29224 "\xe2\x89\xba\xcc\xb8\0" /* offset 5718 */ 29225 "\xe2\x89\xbb\xcc\xb8\0" /* offset 5724 */ 29226 "\xe2\x8a\x82\xcc\xb8\0" /* offset 5730 */ 29227 "\xe2\x8a\x83\xcc\xb8\0" /* offset 5736 */ 29228 "\xe2\x8a\x86\xcc\xb8\0" /* offset 5742 */ 29229 "\xe2\x8a\x87\xcc\xb8\0" /* offset 5748 */ 29230 "\xe2\x8a\xa2\xcc\xb8\0" /* offset 5754 */ 29231 "\xe2\x8a\xa8\xcc\xb8\0" /* offset 5760 */ 29232 "\xe2\x8a\xa9\xcc\xb8\0" /* offset 5766 */ 29233 "\xe2\x8a\xab\xcc\xb8\0" /* offset 5772 */ 29234 "\xe2\x89\xbc\xcc\xb8\0" /* offset 5778 */ 29235 "\xe2\x89\xbd\xcc\xb8\0" /* offset 5784 */ 29236 "\xe2\x8a\x91\xcc\xb8\0" /* offset 5790 */ 29237 "\xe2\x8a\x92\xcc\xb8\0" /* offset 5796 */ 29238 "\xe2\x8a\xb2\xcc\xb8\0" /* offset 5802 */ 29239 "\xe2\x8a\xb3\xcc\xb8\0" /* offset 5808 */ 29240 "\xe2\x8a\xb4\xcc\xb8\0" /* offset 5814 */ 29241 "\xe2\x8a\xb5\xcc\xb8\0" /* offset 5820 */ 29242 "\xe3\x80\x88\0" /* offset 5826 */ 29243 "\xe3\x80\x89\0" /* offset 5830 */ 29244 "\x31\x30\0" /* offset 5834 */ 29245 "\x31\x31\0" /* offset 5837 */ 29246 "\x31\x32\0" /* offset 5840 */ 29247 "\x31\x33\0" /* offset 5843 */ 29248 "\x31\x34\0" /* offset 5846 */ 29249 "\x31\x35\0" /* offset 5849 */ 29250 "\x31\x36\0" /* offset 5852 */ 29251 "\x31\x37\0" /* offset 5855 */ 29252 "\x31\x38\0" /* offset 5858 */ 29253 "\x31\x39\0" /* offset 5861 */ 29254 "\x32\x30\0" /* offset 5864 */ 29255 "\x28\x31\x29\0" /* offset 5867 */ 29256 "\x28\x32\x29\0" /* offset 5871 */ 29257 "\x28\x33\x29\0" /* offset 5875 */ 29258 "\x28\x34\x29\0" /* offset 5879 */ 29259 "\x28\x35\x29\0" /* offset 5883 */ 29260 "\x28\x36\x29\0" /* offset 5887 */ 29261 "\x28\x37\x29\0" /* offset 5891 */ 29262 "\x28\x38\x29\0" /* offset 5895 */ 29263 "\x28\x39\x29\0" /* offset 5899 */ 29264 "\x28\x31\x30\x29\0" /* offset 5903 */ 29265 "\x28\x31\x31\x29\0" /* offset 5908 */ 29266 "\x28\x31\x32\x29\0" /* offset 5913 */ 29267 "\x28\x31\x33\x29\0" /* offset 5918 */ 29268 "\x28\x31\x34\x29\0" /* offset 5923 */ 29269 "\x28\x31\x35\x29\0" /* offset 5928 */ 29270 "\x28\x31\x36\x29\0" /* offset 5933 */ 29271 "\x28\x31\x37\x29\0" /* offset 5938 */ 29272 "\x28\x31\x38\x29\0" /* offset 5943 */ 29273 "\x28\x31\x39\x29\0" /* offset 5948 */ 29274 "\x28\x32\x30\x29\0" /* offset 5953 */ 29275 "\x31\x2e\0" /* offset 5958 */ 29276 "\x32\x2e\0" /* offset 5961 */ 29277 "\x33\x2e\0" /* offset 5964 */ 29278 "\x34\x2e\0" /* offset 5967 */ 29279 "\x35\x2e\0" /* offset 5970 */ 29280 "\x36\x2e\0" /* offset 5973 */ 29281 "\x37\x2e\0" /* offset 5976 */ 29282 "\x38\x2e\0" /* offset 5979 */ 29283 "\x39\x2e\0" /* offset 5982 */ 29284 "\x31\x30\x2e\0" /* offset 5985 */ 29285 "\x31\x31\x2e\0" /* offset 5989 */ 29286 "\x31\x32\x2e\0" /* offset 5993 */ 29287 "\x31\x33\x2e\0" /* offset 5997 */ 29288 "\x31\x34\x2e\0" /* offset 6001 */ 29289 "\x31\x35\x2e\0" /* offset 6005 */ 29290 "\x31\x36\x2e\0" /* offset 6009 */ 29291 "\x31\x37\x2e\0" /* offset 6013 */ 29292 "\x31\x38\x2e\0" /* offset 6017 */ 29293 "\x31\x39\x2e\0" /* offset 6021 */ 29294 "\x32\x30\x2e\0" /* offset 6025 */ 29295 "\x28\x61\x29\0" /* offset 6029 */ 29296 "\x28\x62\x29\0" /* offset 6033 */ 29297 "\x28\x63\x29\0" /* offset 6037 */ 29298 "\x28\x64\x29\0" /* offset 6041 */ 29299 "\x28\x65\x29\0" /* offset 6045 */ 29300 "\x28\x66\x29\0" /* offset 6049 */ 29301 "\x28\x67\x29\0" /* offset 6053 */ 29302 "\x28\x68\x29\0" /* offset 6057 */ 29303 "\x28\x69\x29\0" /* offset 6061 */ 29304 "\x28\x6a\x29\0" /* offset 6065 */ 29305 "\x28\x6b\x29\0" /* offset 6069 */ 29306 "\x28\x6c\x29\0" /* offset 6073 */ 29307 "\x28\x6d\x29\0" /* offset 6077 */ 29308 "\x28\x6e\x29\0" /* offset 6081 */ 29309 "\x28\x6f\x29\0" /* offset 6085 */ 29310 "\x28\x70\x29\0" /* offset 6089 */ 29311 "\x28\x71\x29\0" /* offset 6093 */ 29312 "\x28\x72\x29\0" /* offset 6097 */ 29313 "\x28\x73\x29\0" /* offset 6101 */ 29314 "\x28\x74\x29\0" /* offset 6105 */ 29315 "\x28\x75\x29\0" /* offset 6109 */ 29316 "\x28\x76\x29\0" /* offset 6113 */ 29317 "\x28\x77\x29\0" /* offset 6117 */ 29318 "\x28\x78\x29\0" /* offset 6121 */ 29319 "\x28\x79\x29\0" /* offset 6125 */ 29320 "\x28\x7a\x29\0" /* offset 6129 */ 29321 "\x53\0" /* offset 6133 */ 29322 "\x59\0" /* offset 6135 */ 29323 "\x71\0" /* offset 6137 */ 29324 "\xe2\x88\xab\xe2\x88\xab\xe2\x88\xab\xe2\x88\xab\0" /* offset 6139 */ 29325 "\x3a\x3a\x3d\0" /* offset 6152 */ 29326 "\x3d\x3d\0" /* offset 6156 */ 29327 "\x3d\x3d\x3d\0" /* offset 6159 */ 29328 "\xe2\xab\x9d\xcc\xb8\0" /* offset 6163 */ 29329 "\xe2\xb5\xa1\0" /* offset 6169 */ 29330 "\xe6\xaf\x8d\0" /* offset 6173 */ 29331 "\xe9\xbe\x9f\0" /* offset 6177 */ 29332 "\xe4\xb8\x80\0" /* offset 6181 */ 29333 "\xe4\xb8\xa8\0" /* offset 6185 */ 29334 "\xe4\xb8\xb6\0" /* offset 6189 */ 29335 "\xe4\xb8\xbf\0" /* offset 6193 */ 29336 "\xe4\xb9\x99\0" /* offset 6197 */ 29337 "\xe4\xba\x85\0" /* offset 6201 */ 29338 "\xe4\xba\x8c\0" /* offset 6205 */ 29339 "\xe4\xba\xa0\0" /* offset 6209 */ 29340 "\xe4\xba\xba\0" /* offset 6213 */ 29341 "\xe5\x84\xbf\0" /* offset 6217 */ 29342 "\xe5\x85\xa5\0" /* offset 6221 */ 29343 "\xe5\x85\xab\0" /* offset 6225 */ 29344 "\xe5\x86\x82\0" /* offset 6229 */ 29345 "\xe5\x86\x96\0" /* offset 6233 */ 29346 "\xe5\x86\xab\0" /* offset 6237 */ 29347 "\xe5\x87\xa0\0" /* offset 6241 */ 29348 "\xe5\x87\xb5\0" /* offset 6245 */ 29349 "\xe5\x88\x80\0" /* offset 6249 */ 29350 "\xe5\x8a\x9b\0" /* offset 6253 */ 29351 "\xe5\x8b\xb9\0" /* offset 6257 */ 29352 "\xe5\x8c\x95\0" /* offset 6261 */ 29353 "\xe5\x8c\x9a\0" /* offset 6265 */ 29354 "\xe5\x8c\xb8\0" /* offset 6269 */ 29355 "\xe5\x8d\x81\0" /* offset 6273 */ 29356 "\xe5\x8d\x9c\0" /* offset 6277 */ 29357 "\xe5\x8d\xa9\0" /* offset 6281 */ 29358 "\xe5\x8e\x82\0" /* offset 6285 */ 29359 "\xe5\x8e\xb6\0" /* offset 6289 */ 29360 "\xe5\x8f\x88\0" /* offset 6293 */ 29361 "\xe5\x8f\xa3\0" /* offset 6297 */ 29362 "\xe5\x9b\x97\0" /* offset 6301 */ 29363 "\xe5\x9c\x9f\0" /* offset 6305 */ 29364 "\xe5\xa3\xab\0" /* offset 6309 */ 29365 "\xe5\xa4\x82\0" /* offset 6313 */ 29366 "\xe5\xa4\x8a\0" /* offset 6317 */ 29367 "\xe5\xa4\x95\0" /* offset 6321 */ 29368 "\xe5\xa4\xa7\0" /* offset 6325 */ 29369 "\xe5\xa5\xb3\0" /* offset 6329 */ 29370 "\xe5\xad\x90\0" /* offset 6333 */ 29371 "\xe5\xae\x80\0" /* offset 6337 */ 29372 "\xe5\xaf\xb8\0" /* offset 6341 */ 29373 "\xe5\xb0\x8f\0" /* offset 6345 */ 29374 "\xe5\xb0\xa2\0" /* offset 6349 */ 29375 "\xe5\xb0\xb8\0" /* offset 6353 */ 29376 "\xe5\xb1\xae\0" /* offset 6357 */ 29377 "\xe5\xb1\xb1\0" /* offset 6361 */ 29378 "\xe5\xb7\x9b\0" /* offset 6365 */ 29379 "\xe5\xb7\xa5\0" /* offset 6369 */ 29380 "\xe5\xb7\xb1\0" /* offset 6373 */ 29381 "\xe5\xb7\xbe\0" /* offset 6377 */ 29382 "\xe5\xb9\xb2\0" /* offset 6381 */ 29383 "\xe5\xb9\xba\0" /* offset 6385 */ 29384 "\xe5\xb9\xbf\0" /* offset 6389 */ 29385 "\xe5\xbb\xb4\0" /* offset 6393 */ 29386 "\xe5\xbb\xbe\0" /* offset 6397 */ 29387 "\xe5\xbc\x8b\0" /* offset 6401 */ 29388 "\xe5\xbc\x93\0" /* offset 6405 */ 29389 "\xe5\xbd\x90\0" /* offset 6409 */ 29390 "\xe5\xbd\xa1\0" /* offset 6413 */ 29391 "\xe5\xbd\xb3\0" /* offset 6417 */ 29392 "\xe5\xbf\x83\0" /* offset 6421 */ 29393 "\xe6\x88\x88\0" /* offset 6425 */ 29394 "\xe6\x88\xb6\0" /* offset 6429 */ 29395 "\xe6\x89\x8b\0" /* offset 6433 */ 29396 "\xe6\x94\xaf\0" /* offset 6437 */ 29397 "\xe6\x94\xb4\0" /* offset 6441 */ 29398 "\xe6\x96\x87\0" /* offset 6445 */ 29399 "\xe6\x96\x97\0" /* offset 6449 */ 29400 "\xe6\x96\xa4\0" /* offset 6453 */ 29401 "\xe6\x96\xb9\0" /* offset 6457 */ 29402 "\xe6\x97\xa0\0" /* offset 6461 */ 29403 "\xe6\x97\xa5\0" /* offset 6465 */ 29404 "\xe6\x9b\xb0\0" /* offset 6469 */ 29405 "\xe6\x9c\x88\0" /* offset 6473 */ 29406 "\xe6\x9c\xa8\0" /* offset 6477 */ 29407 "\xe6\xac\xa0\0" /* offset 6481 */ 29408 "\xe6\xad\xa2\0" /* offset 6485 */ 29409 "\xe6\xad\xb9\0" /* offset 6489 */ 29410 "\xe6\xae\xb3\0" /* offset 6493 */ 29411 "\xe6\xaf\x8b\0" /* offset 6497 */ 29412 "\xe6\xaf\x94\0" /* offset 6501 */ 29413 "\xe6\xaf\x9b\0" /* offset 6505 */ 29414 "\xe6\xb0\x8f\0" /* offset 6509 */ 29415 "\xe6\xb0\x94\0" /* offset 6513 */ 29416 "\xe6\xb0\xb4\0" /* offset 6517 */ 29417 "\xe7\x81\xab\0" /* offset 6521 */ 29418 "\xe7\x88\xaa\0" /* offset 6525 */ 29419 "\xe7\x88\xb6\0" /* offset 6529 */ 29420 "\xe7\x88\xbb\0" /* offset 6533 */ 29421 "\xe7\x88\xbf\0" /* offset 6537 */ 29422 "\xe7\x89\x87\0" /* offset 6541 */ 29423 "\xe7\x89\x99\0" /* offset 6545 */ 29424 "\xe7\x89\x9b\0" /* offset 6549 */ 29425 "\xe7\x8a\xac\0" /* offset 6553 */ 29426 "\xe7\x8e\x84\0" /* offset 6557 */ 29427 "\xe7\x8e\x89\0" /* offset 6561 */ 29428 "\xe7\x93\x9c\0" /* offset 6565 */ 29429 "\xe7\x93\xa6\0" /* offset 6569 */ 29430 "\xe7\x94\x98\0" /* offset 6573 */ 29431 "\xe7\x94\x9f\0" /* offset 6577 */ 29432 "\xe7\x94\xa8\0" /* offset 6581 */ 29433 "\xe7\x94\xb0\0" /* offset 6585 */ 29434 "\xe7\x96\x8b\0" /* offset 6589 */ 29435 "\xe7\x96\x92\0" /* offset 6593 */ 29436 "\xe7\x99\xb6\0" /* offset 6597 */ 29437 "\xe7\x99\xbd\0" /* offset 6601 */ 29438 "\xe7\x9a\xae\0" /* offset 6605 */ 29439 "\xe7\x9a\xbf\0" /* offset 6609 */ 29440 "\xe7\x9b\xae\0" /* offset 6613 */ 29441 "\xe7\x9f\x9b\0" /* offset 6617 */ 29442 "\xe7\x9f\xa2\0" /* offset 6621 */ 29443 "\xe7\x9f\xb3\0" /* offset 6625 */ 29444 "\xe7\xa4\xba\0" /* offset 6629 */ 29445 "\xe7\xa6\xb8\0" /* offset 6633 */ 29446 "\xe7\xa6\xbe\0" /* offset 6637 */ 29447 "\xe7\xa9\xb4\0" /* offset 6641 */ 29448 "\xe7\xab\x8b\0" /* offset 6645 */ 29449 "\xe7\xab\xb9\0" /* offset 6649 */ 29450 "\xe7\xb1\xb3\0" /* offset 6653 */ 29451 "\xe7\xb3\xb8\0" /* offset 6657 */ 29452 "\xe7\xbc\xb6\0" /* offset 6661 */ 29453 "\xe7\xbd\x91\0" /* offset 6665 */ 29454 "\xe7\xbe\x8a\0" /* offset 6669 */ 29455 "\xe7\xbe\xbd\0" /* offset 6673 */ 29456 "\xe8\x80\x81\0" /* offset 6677 */ 29457 "\xe8\x80\x8c\0" /* offset 6681 */ 29458 "\xe8\x80\x92\0" /* offset 6685 */ 29459 "\xe8\x80\xb3\0" /* offset 6689 */ 29460 "\xe8\x81\xbf\0" /* offset 6693 */ 29461 "\xe8\x82\x89\0" /* offset 6697 */ 29462 "\xe8\x87\xa3\0" /* offset 6701 */ 29463 "\xe8\x87\xaa\0" /* offset 6705 */ 29464 "\xe8\x87\xb3\0" /* offset 6709 */ 29465 "\xe8\x87\xbc\0" /* offset 6713 */ 29466 "\xe8\x88\x8c\0" /* offset 6717 */ 29467 "\xe8\x88\x9b\0" /* offset 6721 */ 29468 "\xe8\x88\x9f\0" /* offset 6725 */ 29469 "\xe8\x89\xae\0" /* offset 6729 */ 29470 "\xe8\x89\xb2\0" /* offset 6733 */ 29471 "\xe8\x89\xb8\0" /* offset 6737 */ 29472 "\xe8\x99\x8d\0" /* offset 6741 */ 29473 "\xe8\x99\xab\0" /* offset 6745 */ 29474 "\xe8\xa1\x80\0" /* offset 6749 */ 29475 "\xe8\xa1\x8c\0" /* offset 6753 */ 29476 "\xe8\xa1\xa3\0" /* offset 6757 */ 29477 "\xe8\xa5\xbe\0" /* offset 6761 */ 29478 "\xe8\xa6\x8b\0" /* offset 6765 */ 29479 "\xe8\xa7\x92\0" /* offset 6769 */ 29480 "\xe8\xa8\x80\0" /* offset 6773 */ 29481 "\xe8\xb0\xb7\0" /* offset 6777 */ 29482 "\xe8\xb1\x86\0" /* offset 6781 */ 29483 "\xe8\xb1\x95\0" /* offset 6785 */ 29484 "\xe8\xb1\xb8\0" /* offset 6789 */ 29485 "\xe8\xb2\x9d\0" /* offset 6793 */ 29486 "\xe8\xb5\xa4\0" /* offset 6797 */ 29487 "\xe8\xb5\xb0\0" /* offset 6801 */ 29488 "\xe8\xb6\xb3\0" /* offset 6805 */ 29489 "\xe8\xba\xab\0" /* offset 6809 */ 29490 "\xe8\xbb\x8a\0" /* offset 6813 */ 29491 "\xe8\xbe\x9b\0" /* offset 6817 */ 29492 "\xe8\xbe\xb0\0" /* offset 6821 */ 29493 "\xe8\xbe\xb5\0" /* offset 6825 */ 29494 "\xe9\x82\x91\0" /* offset 6829 */ 29495 "\xe9\x85\x89\0" /* offset 6833 */ 29496 "\xe9\x87\x86\0" /* offset 6837 */ 29497 "\xe9\x87\x8c\0" /* offset 6841 */ 29498 "\xe9\x87\x91\0" /* offset 6845 */ 29499 "\xe9\x95\xb7\0" /* offset 6849 */ 29500 "\xe9\x96\x80\0" /* offset 6853 */ 29501 "\xe9\x98\x9c\0" /* offset 6857 */ 29502 "\xe9\x9a\xb6\0" /* offset 6861 */ 29503 "\xe9\x9a\xb9\0" /* offset 6865 */ 29504 "\xe9\x9b\xa8\0" /* offset 6869 */ 29505 "\xe9\x9d\x91\0" /* offset 6873 */ 29506 "\xe9\x9d\x9e\0" /* offset 6877 */ 29507 "\xe9\x9d\xa2\0" /* offset 6881 */ 29508 "\xe9\x9d\xa9\0" /* offset 6885 */ 29509 "\xe9\x9f\x8b\0" /* offset 6889 */ 29510 "\xe9\x9f\xad\0" /* offset 6893 */ 29511 "\xe9\x9f\xb3\0" /* offset 6897 */ 29512 "\xe9\xa0\x81\0" /* offset 6901 */ 29513 "\xe9\xa2\xa8\0" /* offset 6905 */ 29514 "\xe9\xa3\x9b\0" /* offset 6909 */ 29515 "\xe9\xa3\x9f\0" /* offset 6913 */ 29516 "\xe9\xa6\x96\0" /* offset 6917 */ 29517 "\xe9\xa6\x99\0" /* offset 6921 */ 29518 "\xe9\xa6\xac\0" /* offset 6925 */ 29519 "\xe9\xaa\xa8\0" /* offset 6929 */ 29520 "\xe9\xab\x98\0" /* offset 6933 */ 29521 "\xe9\xab\x9f\0" /* offset 6937 */ 29522 "\xe9\xac\xa5\0" /* offset 6941 */ 29523 "\xe9\xac\xaf\0" /* offset 6945 */ 29524 "\xe9\xac\xb2\0" /* offset 6949 */ 29525 "\xe9\xac\xbc\0" /* offset 6953 */ 29526 "\xe9\xad\x9a\0" /* offset 6957 */ 29527 "\xe9\xb3\xa5\0" /* offset 6961 */ 29528 "\xe9\xb9\xb5\0" /* offset 6965 */ 29529 "\xe9\xb9\xbf\0" /* offset 6969 */ 29530 "\xe9\xba\xa5\0" /* offset 6973 */ 29531 "\xe9\xba\xbb\0" /* offset 6977 */ 29532 "\xe9\xbb\x83\0" /* offset 6981 */ 29533 "\xe9\xbb\x8d\0" /* offset 6985 */ 29534 "\xe9\xbb\x91\0" /* offset 6989 */ 29535 "\xe9\xbb\xb9\0" /* offset 6993 */ 29536 "\xe9\xbb\xbd\0" /* offset 6997 */ 29537 "\xe9\xbc\x8e\0" /* offset 7001 */ 29538 "\xe9\xbc\x93\0" /* offset 7005 */ 29539 "\xe9\xbc\xa0\0" /* offset 7009 */ 29540 "\xe9\xbc\xbb\0" /* offset 7013 */ 29541 "\xe9\xbd\x8a\0" /* offset 7017 */ 29542 "\xe9\xbd\x92\0" /* offset 7021 */ 29543 "\xe9\xbe\x8d\0" /* offset 7025 */ 29544 "\xe9\xbe\x9c\0" /* offset 7029 */ 29545 "\xe9\xbe\xa0\0" /* offset 7033 */ 29546 "\xe3\x80\x92\0" /* offset 7037 */ 29547 "\xe5\x8d\x84\0" /* offset 7041 */ 29548 "\xe5\x8d\x85\0" /* offset 7045 */ 29549 "\xe3\x81\x8b\xe3\x82\x99\0" /* offset 7049 */ 29550 "\xe3\x81\x8d\xe3\x82\x99\0" /* offset 7056 */ 29551 "\xe3\x81\x8f\xe3\x82\x99\0" /* offset 7063 */ 29552 "\xe3\x81\x91\xe3\x82\x99\0" /* offset 7070 */ 29553 "\xe3\x81\x93\xe3\x82\x99\0" /* offset 7077 */ 29554 "\xe3\x81\x95\xe3\x82\x99\0" /* offset 7084 */ 29555 "\xe3\x81\x97\xe3\x82\x99\0" /* offset 7091 */ 29556 "\xe3\x81\x99\xe3\x82\x99\0" /* offset 7098 */ 29557 "\xe3\x81\x9b\xe3\x82\x99\0" /* offset 7105 */ 29558 "\xe3\x81\x9d\xe3\x82\x99\0" /* offset 7112 */ 29559 "\xe3\x81\x9f\xe3\x82\x99\0" /* offset 7119 */ 29560 "\xe3\x81\xa1\xe3\x82\x99\0" /* offset 7126 */ 29561 "\xe3\x81\xa4\xe3\x82\x99\0" /* offset 7133 */ 29562 "\xe3\x81\xa6\xe3\x82\x99\0" /* offset 7140 */ 29563 "\xe3\x81\xa8\xe3\x82\x99\0" /* offset 7147 */ 29564 "\xe3\x81\xaf\xe3\x82\x99\0" /* offset 7154 */ 29565 "\xe3\x81\xaf\xe3\x82\x9a\0" /* offset 7161 */ 29566 "\xe3\x81\xb2\xe3\x82\x99\0" /* offset 7168 */ 29567 "\xe3\x81\xb2\xe3\x82\x9a\0" /* offset 7175 */ 29568 "\xe3\x81\xb5\xe3\x82\x99\0" /* offset 7182 */ 29569 "\xe3\x81\xb5\xe3\x82\x9a\0" /* offset 7189 */ 29570 "\xe3\x81\xb8\xe3\x82\x99\0" /* offset 7196 */ 29571 "\xe3\x81\xb8\xe3\x82\x9a\0" /* offset 7203 */ 29572 "\xe3\x81\xbb\xe3\x82\x99\0" /* offset 7210 */ 29573 "\xe3\x81\xbb\xe3\x82\x9a\0" /* offset 7217 */ 29574 "\xe3\x81\x86\xe3\x82\x99\0" /* offset 7224 */ 29575 "\x20\xe3\x82\x99\0" /* offset 7231 */ 29576 "\x20\xe3\x82\x9a\0" /* offset 7236 */ 29577 "\xe3\x82\x9d\xe3\x82\x99\0" /* offset 7241 */ 29578 "\xe3\x82\x88\xe3\x82\x8a\0" /* offset 7248 */ 29579 "\xe3\x82\xab\xe3\x82\x99\0" /* offset 7255 */ 29580 "\xe3\x82\xad\xe3\x82\x99\0" /* offset 7262 */ 29581 "\xe3\x82\xaf\xe3\x82\x99\0" /* offset 7269 */ 29582 "\xe3\x82\xb1\xe3\x82\x99\0" /* offset 7276 */ 29583 "\xe3\x82\xb3\xe3\x82\x99\0" /* offset 7283 */ 29584 "\xe3\x82\xb5\xe3\x82\x99\0" /* offset 7290 */ 29585 "\xe3\x82\xb7\xe3\x82\x99\0" /* offset 7297 */ 29586 "\xe3\x82\xb9\xe3\x82\x99\0" /* offset 7304 */ 29587 "\xe3\x82\xbb\xe3\x82\x99\0" /* offset 7311 */ 29588 "\xe3\x82\xbd\xe3\x82\x99\0" /* offset 7318 */ 29589 "\xe3\x82\xbf\xe3\x82\x99\0" /* offset 7325 */ 29590 "\xe3\x83\x81\xe3\x82\x99\0" /* offset 7332 */ 29591 "\xe3\x83\x84\xe3\x82\x99\0" /* offset 7339 */ 29592 "\xe3\x83\x86\xe3\x82\x99\0" /* offset 7346 */ 29593 "\xe3\x83\x88\xe3\x82\x99\0" /* offset 7353 */ 29594 "\xe3\x83\x8f\xe3\x82\x99\0" /* offset 7360 */ 29595 "\xe3\x83\x8f\xe3\x82\x9a\0" /* offset 7367 */ 29596 "\xe3\x83\x92\xe3\x82\x99\0" /* offset 7374 */ 29597 "\xe3\x83\x92\xe3\x82\x9a\0" /* offset 7381 */ 29598 "\xe3\x83\x95\xe3\x82\x99\0" /* offset 7388 */ 29599 "\xe3\x83\x95\xe3\x82\x9a\0" /* offset 7395 */ 29600 "\xe3\x83\x98\xe3\x82\x99\0" /* offset 7402 */ 29601 "\xe3\x83\x98\xe3\x82\x9a\0" /* offset 7409 */ 29602 "\xe3\x83\x9b\xe3\x82\x99\0" /* offset 7416 */ 29603 "\xe3\x83\x9b\xe3\x82\x9a\0" /* offset 7423 */ 29604 "\xe3\x82\xa6\xe3\x82\x99\0" /* offset 7430 */ 29605 "\xe3\x83\xaf\xe3\x82\x99\0" /* offset 7437 */ 29606 "\xe3\x83\xb0\xe3\x82\x99\0" /* offset 7444 */ 29607 "\xe3\x83\xb1\xe3\x82\x99\0" /* offset 7451 */ 29608 "\xe3\x83\xb2\xe3\x82\x99\0" /* offset 7458 */ 29609 "\xe3\x83\xbd\xe3\x82\x99\0" /* offset 7465 */ 29610 "\xe3\x82\xb3\xe3\x83\x88\0" /* offset 7472 */ 29611 "\xe1\x84\x80\0" /* offset 7479 */ 29612 "\xe1\x84\x81\0" /* offset 7483 */ 29613 "\xe1\x86\xaa\0" /* offset 7487 */ 29614 "\xe1\x84\x82\0" /* offset 7491 */ 29615 "\xe1\x86\xac\0" /* offset 7495 */ 29616 "\xe1\x86\xad\0" /* offset 7499 */ 29617 "\xe1\x84\x83\0" /* offset 7503 */ 29618 "\xe1\x84\x84\0" /* offset 7507 */ 29619 "\xe1\x84\x85\0" /* offset 7511 */ 29620 "\xe1\x86\xb0\0" /* offset 7515 */ 29621 "\xe1\x86\xb1\0" /* offset 7519 */ 29622 "\xe1\x86\xb2\0" /* offset 7523 */ 29623 "\xe1\x86\xb3\0" /* offset 7527 */ 29624 "\xe1\x86\xb4\0" /* offset 7531 */ 29625 "\xe1\x86\xb5\0" /* offset 7535 */ 29626 "\xe1\x84\x9a\0" /* offset 7539 */ 29627 "\xe1\x84\x86\0" /* offset 7543 */ 29628 "\xe1\x84\x87\0" /* offset 7547 */ 29629 "\xe1\x84\x88\0" /* offset 7551 */ 29630 "\xe1\x84\xa1\0" /* offset 7555 */ 29631 "\xe1\x84\x89\0" /* offset 7559 */ 29632 "\xe1\x84\x8a\0" /* offset 7563 */ 29633 "\xe1\x84\x8b\0" /* offset 7567 */ 29634 "\xe1\x84\x8c\0" /* offset 7571 */ 29635 "\xe1\x84\x8d\0" /* offset 7575 */ 29636 "\xe1\x84\x8e\0" /* offset 7579 */ 29637 "\xe1\x84\x8f\0" /* offset 7583 */ 29638 "\xe1\x84\x90\0" /* offset 7587 */ 29639 "\xe1\x84\x91\0" /* offset 7591 */ 29640 "\xe1\x84\x92\0" /* offset 7595 */ 29641 "\xe1\x85\xa1\0" /* offset 7599 */ 29642 "\xe1\x85\xa2\0" /* offset 7603 */ 29643 "\xe1\x85\xa3\0" /* offset 7607 */ 29644 "\xe1\x85\xa4\0" /* offset 7611 */ 29645 "\xe1\x85\xa5\0" /* offset 7615 */ 29646 "\xe1\x85\xa6\0" /* offset 7619 */ 29647 "\xe1\x85\xa7\0" /* offset 7623 */ 29648 "\xe1\x85\xa8\0" /* offset 7627 */ 29649 "\xe1\x85\xa9\0" /* offset 7631 */ 29650 "\xe1\x85\xaa\0" /* offset 7635 */ 29651 "\xe1\x85\xab\0" /* offset 7639 */ 29652 "\xe1\x85\xac\0" /* offset 7643 */ 29653 "\xe1\x85\xad\0" /* offset 7647 */ 29654 "\xe1\x85\xae\0" /* offset 7651 */ 29655 "\xe1\x85\xaf\0" /* offset 7655 */ 29656 "\xe1\x85\xb0\0" /* offset 7659 */ 29657 "\xe1\x85\xb1\0" /* offset 7663 */ 29658 "\xe1\x85\xb2\0" /* offset 7667 */ 29659 "\xe1\x85\xb3\0" /* offset 7671 */ 29660 "\xe1\x85\xb4\0" /* offset 7675 */ 29661 "\xe1\x85\xb5\0" /* offset 7679 */ 29662 "\xe1\x85\xa0\0" /* offset 7683 */ 29663 "\xe1\x84\x94\0" /* offset 7687 */ 29664 "\xe1\x84\x95\0" /* offset 7691 */ 29665 "\xe1\x87\x87\0" /* offset 7695 */ 29666 "\xe1\x87\x88\0" /* offset 7699 */ 29667 "\xe1\x87\x8c\0" /* offset 7703 */ 29668 "\xe1\x87\x8e\0" /* offset 7707 */ 29669 "\xe1\x87\x93\0" /* offset 7711 */ 29670 "\xe1\x87\x97\0" /* offset 7715 */ 29671 "\xe1\x87\x99\0" /* offset 7719 */ 29672 "\xe1\x84\x9c\0" /* offset 7723 */ 29673 "\xe1\x87\x9d\0" /* offset 7727 */ 29674 "\xe1\x87\x9f\0" /* offset 7731 */ 29675 "\xe1\x84\x9d\0" /* offset 7735 */ 29676 "\xe1\x84\x9e\0" /* offset 7739 */ 29677 "\xe1\x84\xa0\0" /* offset 7743 */ 29678 "\xe1\x84\xa2\0" /* offset 7747 */ 29679 "\xe1\x84\xa3\0" /* offset 7751 */ 29680 "\xe1\x84\xa7\0" /* offset 7755 */ 29681 "\xe1\x84\xa9\0" /* offset 7759 */ 29682 "\xe1\x84\xab\0" /* offset 7763 */ 29683 "\xe1\x84\xac\0" /* offset 7767 */ 29684 "\xe1\x84\xad\0" /* offset 7771 */ 29685 "\xe1\x84\xae\0" /* offset 7775 */ 29686 "\xe1\x84\xaf\0" /* offset 7779 */ 29687 "\xe1\x84\xb2\0" /* offset 7783 */ 29688 "\xe1\x84\xb6\0" /* offset 7787 */ 29689 "\xe1\x85\x80\0" /* offset 7791 */ 29690 "\xe1\x85\x87\0" /* offset 7795 */ 29691 "\xe1\x85\x8c\0" /* offset 7799 */ 29692 "\xe1\x87\xb1\0" /* offset 7803 */ 29693 "\xe1\x87\xb2\0" /* offset 7807 */ 29694 "\xe1\x85\x97\0" /* offset 7811 */ 29695 "\xe1\x85\x98\0" /* offset 7815 */ 29696 "\xe1\x85\x99\0" /* offset 7819 */ 29697 "\xe1\x86\x84\0" /* offset 7823 */ 29698 "\xe1\x86\x85\0" /* offset 7827 */ 29699 "\xe1\x86\x88\0" /* offset 7831 */ 29700 "\xe1\x86\x91\0" /* offset 7835 */ 29701 "\xe1\x86\x92\0" /* offset 7839 */ 29702 "\xe1\x86\x94\0" /* offset 7843 */ 29703 "\xe1\x86\x9e\0" /* offset 7847 */ 29704 "\xe1\x86\xa1\0" /* offset 7851 */ 29705 "\xe4\xb8\x89\0" /* offset 7855 */ 29706 "\xe5\x9b\x9b\0" /* offset 7859 */ 29707 "\xe4\xb8\x8a\0" /* offset 7863 */ 29708 "\xe4\xb8\xad\0" /* offset 7867 */ 29709 "\xe4\xb8\x8b\0" /* offset 7871 */ 29710 "\xe7\x94\xb2\0" /* offset 7875 */ 29711 "\xe4\xb8\x99\0" /* offset 7879 */ 29712 "\xe4\xb8\x81\0" /* offset 7883 */ 29713 "\xe5\xa4\xa9\0" /* offset 7887 */ 29714 "\xe5\x9c\xb0\0" /* offset 7891 */ 29715 "\x28\xe1\x84\x80\x29\0" /* offset 7895 */ 29716 "\x28\xe1\x84\x82\x29\0" /* offset 7901 */ 29717 "\x28\xe1\x84\x83\x29\0" /* offset 7907 */ 29718 "\x28\xe1\x84\x85\x29\0" /* offset 7913 */ 29719 "\x28\xe1\x84\x86\x29\0" /* offset 7919 */ 29720 "\x28\xe1\x84\x87\x29\0" /* offset 7925 */ 29721 "\x28\xe1\x84\x89\x29\0" /* offset 7931 */ 29722 "\x28\xe1\x84\x8b\x29\0" /* offset 7937 */ 29723 "\x28\xe1\x84\x8c\x29\0" /* offset 7943 */ 29724 "\x28\xe1\x84\x8e\x29\0" /* offset 7949 */ 29725 "\x28\xe1\x84\x8f\x29\0" /* offset 7955 */ 29726 "\x28\xe1\x84\x90\x29\0" /* offset 7961 */ 29727 "\x28\xe1\x84\x91\x29\0" /* offset 7967 */ 29728 "\x28\xe1\x84\x92\x29\0" /* offset 7973 */ 29729 "\x28\xe1\x84\x80\xe1\x85\xa1\x29\0" /* offset 7979 */ 29730 "\x28\xe1\x84\x82\xe1\x85\xa1\x29\0" /* offset 7988 */ 29731 "\x28\xe1\x84\x83\xe1\x85\xa1\x29\0" /* offset 7997 */ 29732 "\x28\xe1\x84\x85\xe1\x85\xa1\x29\0" /* offset 8006 */ 29733 "\x28\xe1\x84\x86\xe1\x85\xa1\x29\0" /* offset 8015 */ 29734 "\x28\xe1\x84\x87\xe1\x85\xa1\x29\0" /* offset 8024 */ 29735 "\x28\xe1\x84\x89\xe1\x85\xa1\x29\0" /* offset 8033 */ 29736 "\x28\xe1\x84\x8b\xe1\x85\xa1\x29\0" /* offset 8042 */ 29737 "\x28\xe1\x84\x8c\xe1\x85\xa1\x29\0" /* offset 8051 */ 29738 "\x28\xe1\x84\x8e\xe1\x85\xa1\x29\0" /* offset 8060 */ 29739 "\x28\xe1\x84\x8f\xe1\x85\xa1\x29\0" /* offset 8069 */ 29740 "\x28\xe1\x84\x90\xe1\x85\xa1\x29\0" /* offset 8078 */ 29741 "\x28\xe1\x84\x91\xe1\x85\xa1\x29\0" /* offset 8087 */ 29742 "\x28\xe1\x84\x92\xe1\x85\xa1\x29\0" /* offset 8096 */ 29743 "\x28\xe1\x84\x8c\xe1\x85\xae\x29\0" /* offset 8105 */ 29744 "\x28\xe1\x84\x8b\xe1\x85\xa9\xe1\x84\x8c\xe1\x85\xa5\xe1\x86\xab\x29\0" /* offset 8114 */ 29745 "\x28\xe1\x84\x8b\xe1\x85\xa9\xe1\x84\x92\xe1\x85\xae\x29\0" /* offset 8132 */ 29746 "\x28\xe4\xb8\x80\x29\0" /* offset 8147 */ 29747 "\x28\xe4\xba\x8c\x29\0" /* offset 8153 */ 29748 "\x28\xe4\xb8\x89\x29\0" /* offset 8159 */ 29749 "\x28\xe5\x9b\x9b\x29\0" /* offset 8165 */ 29750 "\x28\xe4\xba\x94\x29\0" /* offset 8171 */ 29751 "\x28\xe5\x85\xad\x29\0" /* offset 8177 */ 29752 "\x28\xe4\xb8\x83\x29\0" /* offset 8183 */ 29753 "\x28\xe5\x85\xab\x29\0" /* offset 8189 */ 29754 "\x28\xe4\xb9\x9d\x29\0" /* offset 8195 */ 29755 "\x28\xe5\x8d\x81\x29\0" /* offset 8201 */ 29756 "\x28\xe6\x9c\x88\x29\0" /* offset 8207 */ 29757 "\x28\xe7\x81\xab\x29\0" /* offset 8213 */ 29758 "\x28\xe6\xb0\xb4\x29\0" /* offset 8219 */ 29759 "\x28\xe6\x9c\xa8\x29\0" /* offset 8225 */ 29760 "\x28\xe9\x87\x91\x29\0" /* offset 8231 */ 29761 "\x28\xe5\x9c\x9f\x29\0" /* offset 8237 */ 29762 "\x28\xe6\x97\xa5\x29\0" /* offset 8243 */ 29763 "\x28\xe6\xa0\xaa\x29\0" /* offset 8249 */ 29764 "\x28\xe6\x9c\x89\x29\0" /* offset 8255 */ 29765 "\x28\xe7\xa4\xbe\x29\0" /* offset 8261 */ 29766 "\x28\xe5\x90\x8d\x29\0" /* offset 8267 */ 29767 "\x28\xe7\x89\xb9\x29\0" /* offset 8273 */ 29768 "\x28\xe8\xb2\xa1\x29\0" /* offset 8279 */ 29769 "\x28\xe7\xa5\x9d\x29\0" /* offset 8285 */ 29770 "\x28\xe5\x8a\xb4\x29\0" /* offset 8291 */ 29771 "\x28\xe4\xbb\xa3\x29\0" /* offset 8297 */ 29772 "\x28\xe5\x91\xbc\x29\0" /* offset 8303 */ 29773 "\x28\xe5\xad\xa6\x29\0" /* offset 8309 */ 29774 "\x28\xe7\x9b\xa3\x29\0" /* offset 8315 */ 29775 "\x28\xe4\xbc\x81\x29\0" /* offset 8321 */ 29776 "\x28\xe8\xb3\x87\x29\0" /* offset 8327 */ 29777 "\x28\xe5\x8d\x94\x29\0" /* offset 8333 */ 29778 "\x28\xe7\xa5\xad\x29\0" /* offset 8339 */ 29779 "\x28\xe4\xbc\x91\x29\0" /* offset 8345 */ 29780 "\x28\xe8\x87\xaa\x29\0" /* offset 8351 */ 29781 "\x28\xe8\x87\xb3\x29\0" /* offset 8357 */ 29782 "\xe5\x95\x8f\0" /* offset 8363 */ 29783 "\xe5\xb9\xbc\0" /* offset 8367 */ 29784 "\xe7\xae\x8f\0" /* offset 8371 */ 29785 "\x50\x54\x45\0" /* offset 8375 */ 29786 "\x32\x31\0" /* offset 8379 */ 29787 "\x32\x32\0" /* offset 8382 */ 29788 "\x32\x33\0" /* offset 8385 */ 29789 "\x32\x34\0" /* offset 8388 */ 29790 "\x32\x35\0" /* offset 8391 */ 29791 "\x32\x36\0" /* offset 8394 */ 29792 "\x32\x37\0" /* offset 8397 */ 29793 "\x32\x38\0" /* offset 8400 */ 29794 "\x32\x39\0" /* offset 8403 */ 29795 "\x33\x30\0" /* offset 8406 */ 29796 "\x33\x31\0" /* offset 8409 */ 29797 "\x33\x32\0" /* offset 8412 */ 29798 "\x33\x33\0" /* offset 8415 */ 29799 "\x33\x34\0" /* offset 8418 */ 29800 "\x33\x35\0" /* offset 8421 */ 29801 "\xe1\x84\x80\xe1\x85\xa1\0" /* offset 8424 */ 29802 "\xe1\x84\x82\xe1\x85\xa1\0" /* offset 8431 */ 29803 "\xe1\x84\x83\xe1\x85\xa1\0" /* offset 8438 */ 29804 "\xe1\x84\x85\xe1\x85\xa1\0" /* offset 8445 */ 29805 "\xe1\x84\x86\xe1\x85\xa1\0" /* offset 8452 */ 29806 "\xe1\x84\x87\xe1\x85\xa1\0" /* offset 8459 */ 29807 "\xe1\x84\x89\xe1\x85\xa1\0" /* offset 8466 */ 29808 "\xe1\x84\x8b\xe1\x85\xa1\0" /* offset 8473 */ 29809 "\xe1\x84\x8c\xe1\x85\xa1\0" /* offset 8480 */ 29810 "\xe1\x84\x8e\xe1\x85\xa1\0" /* offset 8487 */ 29811 "\xe1\x84\x8f\xe1\x85\xa1\0" /* offset 8494 */ 29812 "\xe1\x84\x90\xe1\x85\xa1\0" /* offset 8501 */ 29813 "\xe1\x84\x91\xe1\x85\xa1\0" /* offset 8508 */ 29814 "\xe1\x84\x92\xe1\x85\xa1\0" /* offset 8515 */ 29815 "\xe1\x84\x8e\xe1\x85\xa1\xe1\x86\xb7\xe1\x84\x80\xe1\x85\xa9\0" /* offset 8522 */ 29816 "\xe1\x84\x8c\xe1\x85\xae\xe1\x84\x8b\xe1\x85\xb4\0" /* offset 8538 */ 29817 "\xe1\x84\x8b\xe1\x85\xae\0" /* offset 8551 */ 29818 "\xe4\xba\x94\0" /* offset 8558 */ 29819 "\xe5\x85\xad\0" /* offset 8562 */ 29820 "\xe4\xb8\x83\0" /* offset 8566 */ 29821 "\xe4\xb9\x9d\0" /* offset 8570 */ 29822 "\xe6\xa0\xaa\0" /* offset 8574 */ 29823 "\xe6\x9c\x89\0" /* offset 8578 */ 29824 "\xe7\xa4\xbe\0" /* offset 8582 */ 29825 "\xe5\x90\x8d\0" /* offset 8586 */ 29826 "\xe7\x89\xb9\0" /* offset 8590 */ 29827 "\xe8\xb2\xa1\0" /* offset 8594 */ 29828 "\xe7\xa5\x9d\0" /* offset 8598 */ 29829 "\xe5\x8a\xb4\0" /* offset 8602 */ 29830 "\xe7\xa7\x98\0" /* offset 8606 */ 29831 "\xe7\x94\xb7\0" /* offset 8610 */ 29832 "\xe9\x81\xa9\0" /* offset 8614 */ 29833 "\xe5\x84\xaa\0" /* offset 8618 */ 29834 "\xe5\x8d\xb0\0" /* offset 8622 */ 29835 "\xe6\xb3\xa8\0" /* offset 8626 */ 29836 "\xe9\xa0\x85\0" /* offset 8630 */ 29837 "\xe4\xbc\x91\0" /* offset 8634 */ 29838 "\xe5\x86\x99\0" /* offset 8638 */ 29839 "\xe6\xad\xa3\0" /* offset 8642 */ 29840 "\xe5\xb7\xa6\0" /* offset 8646 */ 29841 "\xe5\x8f\xb3\0" /* offset 8650 */ 29842 "\xe5\x8c\xbb\0" /* offset 8654 */ 29843 "\xe5\xae\x97\0" /* offset 8658 */ 29844 "\xe5\xad\xa6\0" /* offset 8662 */ 29845 "\xe7\x9b\xa3\0" /* offset 8666 */ 29846 "\xe4\xbc\x81\0" /* offset 8670 */ 29847 "\xe8\xb3\x87\0" /* offset 8674 */ 29848 "\xe5\x8d\x94\0" /* offset 8678 */ 29849 "\xe5\xa4\x9c\0" /* offset 8682 */ 29850 "\x33\x36\0" /* offset 8686 */ 29851 "\x33\x37\0" /* offset 8689 */ 29852 "\x33\x38\0" /* offset 8692 */ 29853 "\x33\x39\0" /* offset 8695 */ 29854 "\x34\x30\0" /* offset 8698 */ 29855 "\x34\x31\0" /* offset 8701 */ 29856 "\x34\x32\0" /* offset 8704 */ 29857 "\x34\x33\0" /* offset 8707 */ 29858 "\x34\x34\0" /* offset 8710 */ 29859 "\x34\x35\0" /* offset 8713 */ 29860 "\x34\x36\0" /* offset 8716 */ 29861 "\x34\x37\0" /* offset 8719 */ 29862 "\x34\x38\0" /* offset 8722 */ 29863 "\x34\x39\0" /* offset 8725 */ 29864 "\x35\x30\0" /* offset 8728 */ 29865 "\x31\xe6\x9c\x88\0" /* offset 8731 */ 29866 "\x32\xe6\x9c\x88\0" /* offset 8736 */ 29867 "\x33\xe6\x9c\x88\0" /* offset 8741 */ 29868 "\x34\xe6\x9c\x88\0" /* offset 8746 */ 29869 "\x35\xe6\x9c\x88\0" /* offset 8751 */ 29870 "\x36\xe6\x9c\x88\0" /* offset 8756 */ 29871 "\x37\xe6\x9c\x88\0" /* offset 8761 */ 29872 "\x38\xe6\x9c\x88\0" /* offset 8766 */ 29873 "\x39\xe6\x9c\x88\0" /* offset 8771 */ 29874 "\x31\x30\xe6\x9c\x88\0" /* offset 8776 */ 29875 "\x31\x31\xe6\x9c\x88\0" /* offset 8782 */ 29876 "\x31\x32\xe6\x9c\x88\0" /* offset 8788 */ 29877 "\x48\x67\0" /* offset 8794 */ 29878 "\x65\x72\x67\0" /* offset 8797 */ 29879 "\x65\x56\0" /* offset 8801 */ 29880 "\x4c\x54\x44\0" /* offset 8804 */ 29881 "\xe3\x82\xa2\0" /* offset 8808 */ 29882 "\xe3\x82\xa4\0" /* offset 8812 */ 29883 "\xe3\x82\xa6\0" /* offset 8816 */ 29884 "\xe3\x82\xa8\0" /* offset 8820 */ 29885 "\xe3\x82\xaa\0" /* offset 8824 */ 29886 "\xe3\x82\xab\0" /* offset 8828 */ 29887 "\xe3\x82\xad\0" /* offset 8832 */ 29888 "\xe3\x82\xaf\0" /* offset 8836 */ 29889 "\xe3\x82\xb1\0" /* offset 8840 */ 29890 "\xe3\x82\xb3\0" /* offset 8844 */ 29891 "\xe3\x82\xb5\0" /* offset 8848 */ 29892 "\xe3\x82\xb7\0" /* offset 8852 */ 29893 "\xe3\x82\xb9\0" /* offset 8856 */ 29894 "\xe3\x82\xbb\0" /* offset 8860 */ 29895 "\xe3\x82\xbd\0" /* offset 8864 */ 29896 "\xe3\x82\xbf\0" /* offset 8868 */ 29897 "\xe3\x83\x81\0" /* offset 8872 */ 29898 "\xe3\x83\x84\0" /* offset 8876 */ 29899 "\xe3\x83\x86\0" /* offset 8880 */ 29900 "\xe3\x83\x88\0" /* offset 8884 */ 29901 "\xe3\x83\x8a\0" /* offset 8888 */ 29902 "\xe3\x83\x8b\0" /* offset 8892 */ 29903 "\xe3\x83\x8c\0" /* offset 8896 */ 29904 "\xe3\x83\x8d\0" /* offset 8900 */ 29905 "\xe3\x83\x8e\0" /* offset 8904 */ 29906 "\xe3\x83\x8f\0" /* offset 8908 */ 29907 "\xe3\x83\x92\0" /* offset 8912 */ 29908 "\xe3\x83\x95\0" /* offset 8916 */ 29909 "\xe3\x83\x98\0" /* offset 8920 */ 29910 "\xe3\x83\x9b\0" /* offset 8924 */ 29911 "\xe3\x83\x9e\0" /* offset 8928 */ 29912 "\xe3\x83\x9f\0" /* offset 8932 */ 29913 "\xe3\x83\xa0\0" /* offset 8936 */ 29914 "\xe3\x83\xa1\0" /* offset 8940 */ 29915 "\xe3\x83\xa2\0" /* offset 8944 */ 29916 "\xe3\x83\xa4\0" /* offset 8948 */ 29917 "\xe3\x83\xa6\0" /* offset 8952 */ 29918 "\xe3\x83\xa8\0" /* offset 8956 */ 29919 "\xe3\x83\xa9\0" /* offset 8960 */ 29920 "\xe3\x83\xaa\0" /* offset 8964 */ 29921 "\xe3\x83\xab\0" /* offset 8968 */ 29922 "\xe3\x83\xac\0" /* offset 8972 */ 29923 "\xe3\x83\xad\0" /* offset 8976 */ 29924 "\xe3\x83\xaf\0" /* offset 8980 */ 29925 "\xe3\x83\xb0\0" /* offset 8984 */ 29926 "\xe3\x83\xb1\0" /* offset 8988 */ 29927 "\xe3\x83\xb2\0" /* offset 8992 */ 29928 "\xe3\x82\xa2\xe3\x83\x8f\xe3\x82\x9a\xe3\x83\xbc\xe3\x83\x88\0" /* offset 8996 */ 29929 "\xe3\x82\xa2\xe3\x83\xab\xe3\x83\x95\xe3\x82\xa1\0" /* offset 9012 */ 29930 "\xe3\x82\xa2\xe3\x83\xb3\xe3\x83\x98\xe3\x82\x9a\xe3\x82\xa2\0" /* offset 9025 */ 29931 "\xe3\x82\xa2\xe3\x83\xbc\xe3\x83\xab\0" /* offset 9041 */ 29932 "\xe3\x82\xa4\xe3\x83\x8b\xe3\x83\xb3\xe3\x82\xaf\xe3\x82\x99\0" /* offset 9051 */ 29933 "\xe3\x82\xa4\xe3\x83\xb3\xe3\x83\x81\0" /* offset 9067 */ 29934 "\xe3\x82\xa6\xe3\x82\xa9\xe3\x83\xb3\0" /* offset 9077 */ 29935 "\xe3\x82\xa8\xe3\x82\xb9\xe3\x82\xaf\xe3\x83\xbc\xe3\x83\x88\xe3\x82\x99\0" /* offset 9087 */ 29936 "\xe3\x82\xa8\xe3\x83\xbc\xe3\x82\xab\xe3\x83\xbc\0" /* offset 9106 */ 29937 "\xe3\x82\xaa\xe3\x83\xb3\xe3\x82\xb9\0" /* offset 9119 */ 29938 "\xe3\x82\xaa\xe3\x83\xbc\xe3\x83\xa0\0" /* offset 9129 */ 29939 "\xe3\x82\xab\xe3\x82\xa4\xe3\x83\xaa\0" /* offset 9139 */ 29940 "\xe3\x82\xab\xe3\x83\xa9\xe3\x83\x83\xe3\x83\x88\0" /* offset 9149 */ 29941 "\xe3\x82\xab\xe3\x83\xad\xe3\x83\xaa\xe3\x83\xbc\0" /* offset 9162 */ 29942 "\xe3\x82\xab\xe3\x82\x99\xe3\x83\xad\xe3\x83\xb3\0" /* offset 9175 */ 29943 "\xe3\x82\xab\xe3\x82\x99\xe3\x83\xb3\xe3\x83\x9e\0" /* offset 9188 */ 29944 "\xe3\x82\xad\xe3\x82\x99\xe3\x82\xab\xe3\x82\x99\0" /* offset 9201 */ 29945 "\xe3\x82\xad\xe3\x82\x99\xe3\x83\x8b\xe3\x83\xbc\0" /* offset 9214 */ 29946 "\xe3\x82\xad\xe3\x83\xa5\xe3\x83\xaa\xe3\x83\xbc\0" /* offset 9227 */ 29947 "\xe3\x82\xad\xe3\x82\x99\xe3\x83\xab\xe3\x82\xbf\xe3\x82\x99\xe3\x83\xbc\0" /* offset 9240 */ 29948 "\xe3\x82\xad\xe3\x83\xad\0" /* offset 9259 */ 29949 "\xe3\x82\xad\xe3\x83\xad\xe3\x82\xaf\xe3\x82\x99\xe3\x83\xa9\xe3\x83\xa0\0" /* offset 9266 */ 29950 "\xe3\x82\xad\xe3\x83\xad\xe3\x83\xa1\xe3\x83\xbc\xe3\x83\x88\xe3\x83\xab\0" /* offset 9285 */ 29951 "\xe3\x82\xad\xe3\x83\xad\xe3\x83\xaf\xe3\x83\x83\xe3\x83\x88\0" /* offset 9304 */ 29952 "\xe3\x82\xaf\xe3\x82\x99\xe3\x83\xa9\xe3\x83\xa0\0" /* offset 9320 */ 29953 "\xe3\x82\xaf\xe3\x82\x99\xe3\x83\xa9\xe3\x83\xa0\xe3\x83\x88\xe3\x83\xb3\0" /* offset 9333 */ 29954 "\xe3\x82\xaf\xe3\x83\xab\xe3\x82\xbb\xe3\x82\x99\xe3\x82\xa4\xe3\x83\xad\0" /* offset 9352 */ 29955 "\xe3\x82\xaf\xe3\x83\xad\xe3\x83\xbc\xe3\x83\x8d\0" /* offset 9371 */ 29956 "\xe3\x82\xb1\xe3\x83\xbc\xe3\x82\xb9\0" /* offset 9384 */ 29957 "\xe3\x82\xb3\xe3\x83\xab\xe3\x83\x8a\0" /* offset 9394 */ 29958 "\xe3\x82\xb3\xe3\x83\xbc\xe3\x83\x9b\xe3\x82\x9a\0" /* offset 9404 */ 29959 "\xe3\x82\xb5\xe3\x82\xa4\xe3\x82\xaf\xe3\x83\xab\0" /* offset 9417 */ 29960 "\xe3\x82\xb5\xe3\x83\xb3\xe3\x83\x81\xe3\x83\xbc\xe3\x83\xa0\0" /* offset 9430 */ 29961 "\xe3\x82\xb7\xe3\x83\xaa\xe3\x83\xb3\xe3\x82\xaf\xe3\x82\x99\0" /* offset 9446 */ 29962 "\xe3\x82\xbb\xe3\x83\xb3\xe3\x83\x81\0" /* offset 9462 */ 29963 "\xe3\x82\xbb\xe3\x83\xb3\xe3\x83\x88\0" /* offset 9472 */ 29964 "\xe3\x82\xbf\xe3\x82\x99\xe3\x83\xbc\xe3\x82\xb9\0" /* offset 9482 */ 29965 "\xe3\x83\x86\xe3\x82\x99\xe3\x82\xb7\0" /* offset 9495 */ 29966 "\xe3\x83\x88\xe3\x82\x99\xe3\x83\xab\0" /* offset 9505 */ 29967 "\xe3\x83\x88\xe3\x83\xb3\0" /* offset 9515 */ 29968 "\xe3\x83\x8a\xe3\x83\x8e\0" /* offset 9522 */ 29969 "\xe3\x83\x8e\xe3\x83\x83\xe3\x83\x88\0" /* offset 9529 */ 29970 "\xe3\x83\x8f\xe3\x82\xa4\xe3\x83\x84\0" /* offset 9539 */ 29971 "\xe3\x83\x8f\xe3\x82\x9a\xe3\x83\xbc\xe3\x82\xbb\xe3\x83\xb3\xe3\x83\x88\0" /* offset 9549 */ 29972 "\xe3\x83\x8f\xe3\x82\x9a\xe3\x83\xbc\xe3\x83\x84\0" /* offset 9568 */ 29973 "\xe3\x83\x8f\xe3\x82\x99\xe3\x83\xbc\xe3\x83\xac\xe3\x83\xab\0" /* offset 9581 */ 29974 "\xe3\x83\x92\xe3\x82\x9a\xe3\x82\xa2\xe3\x82\xb9\xe3\x83\x88\xe3\x83\xab\0" /* offset 9597 */ 29975 "\xe3\x83\x92\xe3\x82\x9a\xe3\x82\xaf\xe3\x83\xab\0" /* offset 9616 */ 29976 "\xe3\x83\x92\xe3\x82\x9a\xe3\x82\xb3\0" /* offset 9629 */ 29977 "\xe3\x83\x92\xe3\x82\x99\xe3\x83\xab\0" /* offset 9639 */ 29978 "\xe3\x83\x95\xe3\x82\xa1\xe3\x83\xa9\xe3\x83\x83\xe3\x83\x88\xe3\x82\x99\0" /* offset 9649 */ 29979 "\xe3\x83\x95\xe3\x82\xa3\xe3\x83\xbc\xe3\x83\x88\0" /* offset 9668 */ 29980 "\xe3\x83\x95\xe3\x82\x99\xe3\x83\x83\xe3\x82\xb7\xe3\x82\xa7\xe3\x83\xab\0" /* offset 9681 */ 29981 "\xe3\x83\x95\xe3\x83\xa9\xe3\x83\xb3\0" /* offset 9700 */ 29982 "\xe3\x83\x98\xe3\x82\xaf\xe3\x82\xbf\xe3\x83\xbc\xe3\x83\xab\0" /* offset 9710 */ 29983 "\xe3\x83\x98\xe3\x82\x9a\xe3\x82\xbd\0" /* offset 9726 */ 29984 "\xe3\x83\x98\xe3\x82\x9a\xe3\x83\x8b\xe3\x83\x92\0" /* offset 9736 */ 29985 "\xe3\x83\x98\xe3\x83\xab\xe3\x83\x84\0" /* offset 9749 */ 29986 "\xe3\x83\x98\xe3\x82\x9a\xe3\x83\xb3\xe3\x82\xb9\0" /* offset 9759 */ 29987 "\xe3\x83\x98\xe3\x82\x9a\xe3\x83\xbc\xe3\x82\xb7\xe3\x82\x99\0" /* offset 9772 */ 29988 "\xe3\x83\x98\xe3\x82\x99\xe3\x83\xbc\xe3\x82\xbf\0" /* offset 9788 */ 29989 "\xe3\x83\x9b\xe3\x82\x9a\xe3\x82\xa4\xe3\x83\xb3\xe3\x83\x88\0" /* offset 9801 */ 29990 "\xe3\x83\x9b\xe3\x82\x99\xe3\x83\xab\xe3\x83\x88\0" /* offset 9817 */ 29991 "\xe3\x83\x9b\xe3\x83\xb3\0" /* offset 9830 */ 29992 "\xe3\x83\x9b\xe3\x82\x9a\xe3\x83\xb3\xe3\x83\x88\xe3\x82\x99\0" /* offset 9837 */ 29993 "\xe3\x83\x9b\xe3\x83\xbc\xe3\x83\xab\0" /* offset 9853 */ 29994 "\xe3\x83\x9b\xe3\x83\xbc\xe3\x83\xb3\0" /* offset 9863 */ 29995 "\xe3\x83\x9e\xe3\x82\xa4\xe3\x82\xaf\xe3\x83\xad\0" /* offset 9873 */ 29996 "\xe3\x83\x9e\xe3\x82\xa4\xe3\x83\xab\0" /* offset 9886 */ 29997 "\xe3\x83\x9e\xe3\x83\x83\xe3\x83\x8f\0" /* offset 9896 */ 29998 "\xe3\x83\x9e\xe3\x83\xab\xe3\x82\xaf\0" /* offset 9906 */ 29999 "\xe3\x83\x9e\xe3\x83\xb3\xe3\x82\xb7\xe3\x83\xa7\xe3\x83\xb3\0" /* offset 9916 */ 30000 "\xe3\x83\x9f\xe3\x82\xaf\xe3\x83\xad\xe3\x83\xb3\0" /* offset 9932 */ 30001 "\xe3\x83\x9f\xe3\x83\xaa\0" /* offset 9945 */ 30002 "\xe3\x83\x9f\xe3\x83\xaa\xe3\x83\x8f\xe3\x82\x99\xe3\x83\xbc\xe3\x83\xab\0" /* offset 9952 */ 30003 "\xe3\x83\xa1\xe3\x82\xab\xe3\x82\x99\0" /* offset 9971 */ 30004 "\xe3\x83\xa1\xe3\x82\xab\xe3\x82\x99\xe3\x83\x88\xe3\x83\xb3\0" /* offset 9981 */ 30005 "\xe3\x83\xa1\xe3\x83\xbc\xe3\x83\x88\xe3\x83\xab\0" /* offset 9997 */ 30006 "\xe3\x83\xa4\xe3\x83\xbc\xe3\x83\x88\xe3\x82\x99\0" /* offset 10010 */ 30007 "\xe3\x83\xa4\xe3\x83\xbc\xe3\x83\xab\0" /* offset 10023 */ 30008 "\xe3\x83\xa6\xe3\x82\xa2\xe3\x83\xb3\0" /* offset 10033 */ 30009 "\xe3\x83\xaa\xe3\x83\x83\xe3\x83\x88\xe3\x83\xab\0" /* offset 10043 */ 30010 "\xe3\x83\xaa\xe3\x83\xa9\0" /* offset 10056 */ 30011 "\xe3\x83\xab\xe3\x83\x92\xe3\x82\x9a\xe3\x83\xbc\0" /* offset 10063 */ 30012 "\xe3\x83\xab\xe3\x83\xbc\xe3\x83\x95\xe3\x82\x99\xe3\x83\xab\0" /* offset 10076 */ 30013 "\xe3\x83\xac\xe3\x83\xa0\0" /* offset 10092 */ 30014 "\xe3\x83\xac\xe3\x83\xb3\xe3\x83\x88\xe3\x82\xb1\xe3\x82\x99\xe3\x83\xb3\0" /* offset 10099 */ 30015 "\xe3\x83\xaf\xe3\x83\x83\xe3\x83\x88\0" /* offset 10118 */ 30016 "\x30\xe7\x82\xb9\0" /* offset 10128 */ 30017 "\x31\xe7\x82\xb9\0" /* offset 10133 */ 30018 "\x32\xe7\x82\xb9\0" /* offset 10138 */ 30019 "\x33\xe7\x82\xb9\0" /* offset 10143 */ 30020 "\x34\xe7\x82\xb9\0" /* offset 10148 */ 30021 "\x35\xe7\x82\xb9\0" /* offset 10153 */ 30022 "\x36\xe7\x82\xb9\0" /* offset 10158 */ 30023 "\x37\xe7\x82\xb9\0" /* offset 10163 */ 30024 "\x38\xe7\x82\xb9\0" /* offset 10168 */ 30025 "\x39\xe7\x82\xb9\0" /* offset 10173 */ 30026 "\x31\x30\xe7\x82\xb9\0" /* offset 10178 */ 30027 "\x31\x31\xe7\x82\xb9\0" /* offset 10184 */ 30028 "\x31\x32\xe7\x82\xb9\0" /* offset 10190 */ 30029 "\x31\x33\xe7\x82\xb9\0" /* offset 10196 */ 30030 "\x31\x34\xe7\x82\xb9\0" /* offset 10202 */ 30031 "\x31\x35\xe7\x82\xb9\0" /* offset 10208 */ 30032 "\x31\x36\xe7\x82\xb9\0" /* offset 10214 */ 30033 "\x31\x37\xe7\x82\xb9\0" /* offset 10220 */ 30034 "\x31\x38\xe7\x82\xb9\0" /* offset 10226 */ 30035 "\x31\x39\xe7\x82\xb9\0" /* offset 10232 */ 30036 "\x32\x30\xe7\x82\xb9\0" /* offset 10238 */ 30037 "\x32\x31\xe7\x82\xb9\0" /* offset 10244 */ 30038 "\x32\x32\xe7\x82\xb9\0" /* offset 10250 */ 30039 "\x32\x33\xe7\x82\xb9\0" /* offset 10256 */ 30040 "\x32\x34\xe7\x82\xb9\0" /* offset 10262 */ 30041 "\x68\x50\x61\0" /* offset 10268 */ 30042 "\x64\x61\0" /* offset 10272 */ 30043 "\x41\x55\0" /* offset 10275 */ 30044 "\x62\x61\x72\0" /* offset 10278 */ 30045 "\x6f\x56\0" /* offset 10282 */ 30046 "\x70\x63\0" /* offset 10285 */ 30047 "\x64\x6d\0" /* offset 10288 */ 30048 "\x64\x6d\x32\0" /* offset 10291 */ 30049 "\x64\x6d\x33\0" /* offset 10295 */ 30050 "\x49\x55\0" /* offset 10299 */ 30051 "\xe5\xb9\xb3\xe6\x88\x90\0" /* offset 10302 */ 30052 "\xe6\x98\xad\xe5\x92\x8c\0" /* offset 10309 */ 30053 "\xe5\xa4\xa7\xe6\xad\xa3\0" /* offset 10316 */ 30054 "\xe6\x98\x8e\xe6\xb2\xbb\0" /* offset 10323 */ 30055 "\xe6\xa0\xaa\xe5\xbc\x8f\xe4\xbc\x9a\xe7\xa4\xbe\0" /* offset 10330 */ 30056 "\x70\x41\0" /* offset 10343 */ 30057 "\x6e\x41\0" /* offset 10346 */ 30058 "\xce\xbc\x41\0" /* offset 10349 */ 30059 "\x6d\x41\0" /* offset 10353 */ 30060 "\x6b\x41\0" /* offset 10356 */ 30061 "\x4b\x42\0" /* offset 10359 */ 30062 "\x4d\x42\0" /* offset 10362 */ 30063 "\x47\x42\0" /* offset 10365 */ 30064 "\x63\x61\x6c\0" /* offset 10368 */ 30065 "\x6b\x63\x61\x6c\0" /* offset 10372 */ 30066 "\x70\x46\0" /* offset 10377 */ 30067 "\x6e\x46\0" /* offset 10380 */ 30068 "\xce\xbc\x46\0" /* offset 10383 */ 30069 "\xce\xbc\x67\0" /* offset 10387 */ 30070 "\x6d\x67\0" /* offset 10391 */ 30071 "\x6b\x67\0" /* offset 10394 */ 30072 "\x48\x7a\0" /* offset 10397 */ 30073 "\x6b\x48\x7a\0" /* offset 10400 */ 30074 "\x4d\x48\x7a\0" /* offset 10404 */ 30075 "\x47\x48\x7a\0" /* offset 10408 */ 30076 "\x54\x48\x7a\0" /* offset 10412 */ 30077 "\xce\xbc\x6c\0" /* offset 10416 */ 30078 "\x6d\x6c\0" /* offset 10420 */ 30079 "\x64\x6c\0" /* offset 10423 */ 30080 "\x6b\x6c\0" /* offset 10426 */ 30081 "\x66\x6d\0" /* offset 10429 */ 30082 "\x6e\x6d\0" /* offset 10432 */ 30083 "\xce\xbc\x6d\0" /* offset 10435 */ 30084 "\x6d\x6d\0" /* offset 10439 */ 30085 "\x63\x6d\0" /* offset 10442 */ 30086 "\x6b\x6d\0" /* offset 10445 */ 30087 "\x6d\x6d\x32\0" /* offset 10448 */ 30088 "\x63\x6d\x32\0" /* offset 10452 */ 30089 "\x6d\x32\0" /* offset 10456 */ 30090 "\x6b\x6d\x32\0" /* offset 10459 */ 30091 "\x6d\x6d\x33\0" /* offset 10463 */ 30092 "\x63\x6d\x33\0" /* offset 10467 */ 30093 "\x6d\x33\0" /* offset 10471 */ 30094 "\x6b\x6d\x33\0" /* offset 10474 */ 30095 "\x6d\xe2\x88\x95\x73\0" /* offset 10478 */ 30096 "\x6d\xe2\x88\x95\x73\x32\0" /* offset 10484 */ 30097 "\x50\x61\0" /* offset 10491 */ 30098 "\x6b\x50\x61\0" /* offset 10494 */ 30099 "\x4d\x50\x61\0" /* offset 10498 */ 30100 "\x47\x50\x61\0" /* offset 10502 */ 30101 "\x72\x61\x64\0" /* offset 10506 */ 30102 "\x72\x61\x64\xe2\x88\x95\x73\0" /* offset 10510 */ 30103 "\x72\x61\x64\xe2\x88\x95\x73\x32\0" /* offset 10518 */ 30104 "\x70\x73\0" /* offset 10527 */ 30105 "\x6e\x73\0" /* offset 10530 */ 30106 "\xce\xbc\x73\0" /* offset 10533 */ 30107 "\x6d\x73\0" /* offset 10537 */ 30108 "\x70\x56\0" /* offset 10540 */ 30109 "\x6e\x56\0" /* offset 10543 */ 30110 "\xce\xbc\x56\0" /* offset 10546 */ 30111 "\x6d\x56\0" /* offset 10550 */ 30112 "\x6b\x56\0" /* offset 10553 */ 30113 "\x4d\x56\0" /* offset 10556 */ 30114 "\x70\x57\0" /* offset 10559 */ 30115 "\x6e\x57\0" /* offset 10562 */ 30116 "\xce\xbc\x57\0" /* offset 10565 */ 30117 "\x6d\x57\0" /* offset 10569 */ 30118 "\x6b\x57\0" /* offset 10572 */ 30119 "\x4d\x57\0" /* offset 10575 */ 30120 "\x6b\xce\xa9\0" /* offset 10578 */ 30121 "\x4d\xce\xa9\0" /* offset 10582 */ 30122 "\x61\x2e\x6d\x2e\0" /* offset 10586 */ 30123 "\x42\x71\0" /* offset 10591 */ 30124 "\x63\x63\0" /* offset 10594 */ 30125 "\x63\x64\0" /* offset 10597 */ 30126 "\x43\xe2\x88\x95\x6b\x67\0" /* offset 10600 */ 30127 "\x43\x6f\x2e\0" /* offset 10607 */ 30128 "\x64\x42\0" /* offset 10611 */ 30129 "\x47\x79\0" /* offset 10614 */ 30130 "\x68\x61\0" /* offset 10617 */ 30131 "\x48\x50\0" /* offset 10620 */ 30132 "\x69\x6e\0" /* offset 10623 */ 30133 "\x4b\x4b\0" /* offset 10626 */ 30134 "\x4b\x4d\0" /* offset 10629 */ 30135 "\x6b\x74\0" /* offset 10632 */ 30136 "\x6c\x6d\0" /* offset 10635 */ 30137 "\x6c\x6e\0" /* offset 10638 */ 30138 "\x6c\x6f\x67\0" /* offset 10641 */ 30139 "\x6c\x78\0" /* offset 10645 */ 30140 "\x6d\x62\0" /* offset 10648 */ 30141 "\x6d\x69\x6c\0" /* offset 10651 */ 30142 "\x6d\x6f\x6c\0" /* offset 10655 */ 30143 "\x50\x48\0" /* offset 10659 */ 30144 "\x70\x2e\x6d\x2e\0" /* offset 10662 */ 30145 "\x50\x50\x4d\0" /* offset 10667 */ 30146 "\x50\x52\0" /* offset 10671 */ 30147 "\x73\x72\0" /* offset 10674 */ 30148 "\x53\x76\0" /* offset 10677 */ 30149 "\x57\x62\0" /* offset 10680 */ 30150 "\x56\xe2\x88\x95\x6d\0" /* offset 10683 */ 30151 "\x41\xe2\x88\x95\x6d\0" /* offset 10689 */ 30152 "\x31\xe6\x97\xa5\0" /* offset 10695 */ 30153 "\x32\xe6\x97\xa5\0" /* offset 10700 */ 30154 "\x33\xe6\x97\xa5\0" /* offset 10705 */ 30155 "\x34\xe6\x97\xa5\0" /* offset 10710 */ 30156 "\x35\xe6\x97\xa5\0" /* offset 10715 */ 30157 "\x36\xe6\x97\xa5\0" /* offset 10720 */ 30158 "\x37\xe6\x97\xa5\0" /* offset 10725 */ 30159 "\x38\xe6\x97\xa5\0" /* offset 10730 */ 30160 "\x39\xe6\x97\xa5\0" /* offset 10735 */ 30161 "\x31\x30\xe6\x97\xa5\0" /* offset 10740 */ 30162 "\x31\x31\xe6\x97\xa5\0" /* offset 10746 */ 30163 "\x31\x32\xe6\x97\xa5\0" /* offset 10752 */ 30164 "\x31\x33\xe6\x97\xa5\0" /* offset 10758 */ 30165 "\x31\x34\xe6\x97\xa5\0" /* offset 10764 */ 30166 "\x31\x35\xe6\x97\xa5\0" /* offset 10770 */ 30167 "\x31\x36\xe6\x97\xa5\0" /* offset 10776 */ 30168 "\x31\x37\xe6\x97\xa5\0" /* offset 10782 */ 30169 "\x31\x38\xe6\x97\xa5\0" /* offset 10788 */ 30170 "\x31\x39\xe6\x97\xa5\0" /* offset 10794 */ 30171 "\x32\x30\xe6\x97\xa5\0" /* offset 10800 */ 30172 "\x32\x31\xe6\x97\xa5\0" /* offset 10806 */ 30173 "\x32\x32\xe6\x97\xa5\0" /* offset 10812 */ 30174 "\x32\x33\xe6\x97\xa5\0" /* offset 10818 */ 30175 "\x32\x34\xe6\x97\xa5\0" /* offset 10824 */ 30176 "\x32\x35\xe6\x97\xa5\0" /* offset 10830 */ 30177 "\x32\x36\xe6\x97\xa5\0" /* offset 10836 */ 30178 "\x32\x37\xe6\x97\xa5\0" /* offset 10842 */ 30179 "\x32\x38\xe6\x97\xa5\0" /* offset 10848 */ 30180 "\x32\x39\xe6\x97\xa5\0" /* offset 10854 */ 30181 "\x33\x30\xe6\x97\xa5\0" /* offset 10860 */ 30182 "\x33\x31\xe6\x97\xa5\0" /* offset 10866 */ 30183 "\x67\x61\x6c\0" /* offset 10872 */ 30184 "\xd1\x8a\0" /* offset 10876 */ 30185 "\xd1\x8c\0" /* offset 10879 */ 30186 "\xea\x9d\xaf\0" /* offset 10882 */ 30187 "\xc4\xa6\0" /* offset 10886 */ 30188 "\xc5\x93\0" /* offset 10889 */ 30189 "\xea\x9c\xa7\0" /* offset 10892 */ 30190 "\xea\xac\xb7\0" /* offset 10896 */ 30191 "\xc9\xab\0" /* offset 10900 */ 30192 "\xea\xad\x92\0" /* offset 10903 */ 30193 "\xe8\xb1\x88\0" /* offset 10907 */ 30194 "\xe6\x9b\xb4\0" /* offset 10911 */ 30195 "\xe8\xb3\x88\0" /* offset 10915 */ 30196 "\xe6\xbb\x91\0" /* offset 10919 */ 30197 "\xe4\xb8\xb2\0" /* offset 10923 */ 30198 "\xe5\x8f\xa5\0" /* offset 10927 */ 30199 "\xe5\xa5\x91\0" /* offset 10931 */ 30200 "\xe5\x96\x87\0" /* offset 10935 */ 30201 "\xe5\xa5\x88\0" /* offset 10939 */ 30202 "\xe6\x87\xb6\0" /* offset 10943 */ 30203 "\xe7\x99\xa9\0" /* offset 10947 */ 30204 "\xe7\xbe\x85\0" /* offset 10951 */ 30205 "\xe8\x98\xbf\0" /* offset 10955 */ 30206 "\xe8\x9e\xba\0" /* offset 10959 */ 30207 "\xe8\xa3\xb8\0" /* offset 10963 */ 30208 "\xe9\x82\x8f\0" /* offset 10967 */ 30209 "\xe6\xa8\x82\0" /* offset 10971 */ 30210 "\xe6\xb4\x9b\0" /* offset 10975 */ 30211 "\xe7\x83\x99\0" /* offset 10979 */ 30212 "\xe7\x8f\x9e\0" /* offset 10983 */ 30213 "\xe8\x90\xbd\0" /* offset 10987 */ 30214 "\xe9\x85\xaa\0" /* offset 10991 */ 30215 "\xe9\xa7\xb1\0" /* offset 10995 */ 30216 "\xe4\xba\x82\0" /* offset 10999 */ 30217 "\xe5\x8d\xb5\0" /* offset 11003 */ 30218 "\xe6\xac\x84\0" /* offset 11007 */ 30219 "\xe7\x88\x9b\0" /* offset 11011 */ 30220 "\xe8\x98\xad\0" /* offset 11015 */ 30221 "\xe9\xb8\x9e\0" /* offset 11019 */ 30222 "\xe5\xb5\x90\0" /* offset 11023 */ 30223 "\xe6\xbf\xab\0" /* offset 11027 */ 30224 "\xe8\x97\x8d\0" /* offset 11031 */ 30225 "\xe8\xa5\xa4\0" /* offset 11035 */ 30226 "\xe6\x8b\x89\0" /* offset 11039 */ 30227 "\xe8\x87\x98\0" /* offset 11043 */ 30228 "\xe8\xa0\x9f\0" /* offset 11047 */ 30229 "\xe5\xbb\x8a\0" /* offset 11051 */ 30230 "\xe6\x9c\x97\0" /* offset 11055 */ 30231 "\xe6\xb5\xaa\0" /* offset 11059 */ 30232 "\xe7\x8b\xbc\0" /* offset 11063 */ 30233 "\xe9\x83\x8e\0" /* offset 11067 */ 30234 "\xe4\xbe\x86\0" /* offset 11071 */ 30235 "\xe5\x86\xb7\0" /* offset 11075 */ 30236 "\xe5\x8b\x9e\0" /* offset 11079 */ 30237 "\xe6\x93\x84\0" /* offset 11083 */ 30238 "\xe6\xab\x93\0" /* offset 11087 */ 30239 "\xe7\x88\x90\0" /* offset 11091 */ 30240 "\xe7\x9b\xa7\0" /* offset 11095 */ 30241 "\xe8\x98\x86\0" /* offset 11099 */ 30242 "\xe8\x99\x9c\0" /* offset 11103 */ 30243 "\xe8\xb7\xaf\0" /* offset 11107 */ 30244 "\xe9\x9c\xb2\0" /* offset 11111 */ 30245 "\xe9\xad\xaf\0" /* offset 11115 */ 30246 "\xe9\xb7\xba\0" /* offset 11119 */ 30247 "\xe7\xa2\x8c\0" /* offset 11123 */ 30248 "\xe7\xa5\xbf\0" /* offset 11127 */ 30249 "\xe7\xb6\xa0\0" /* offset 11131 */ 30250 "\xe8\x8f\x89\0" /* offset 11135 */ 30251 "\xe9\x8c\x84\0" /* offset 11139 */ 30252 "\xe8\xab\x96\0" /* offset 11143 */ 30253 "\xe5\xa3\x9f\0" /* offset 11147 */ 30254 "\xe5\xbc\x84\0" /* offset 11151 */ 30255 "\xe7\xb1\xa0\0" /* offset 11155 */ 30256 "\xe8\x81\xbe\0" /* offset 11159 */ 30257 "\xe7\x89\xa2\0" /* offset 11163 */ 30258 "\xe7\xa3\x8a\0" /* offset 11167 */ 30259 "\xe8\xb3\x82\0" /* offset 11171 */ 30260 "\xe9\x9b\xb7\0" /* offset 11175 */ 30261 "\xe5\xa3\x98\0" /* offset 11179 */ 30262 "\xe5\xb1\xa2\0" /* offset 11183 */ 30263 "\xe6\xa8\x93\0" /* offset 11187 */ 30264 "\xe6\xb7\x9a\0" /* offset 11191 */ 30265 "\xe6\xbc\x8f\0" /* offset 11195 */ 30266 "\xe7\xb4\xaf\0" /* offset 11199 */ 30267 "\xe7\xb8\xb7\0" /* offset 11203 */ 30268 "\xe9\x99\x8b\0" /* offset 11207 */ 30269 "\xe5\x8b\x92\0" /* offset 11211 */ 30270 "\xe8\x82\x8b\0" /* offset 11215 */ 30271 "\xe5\x87\x9c\0" /* offset 11219 */ 30272 "\xe5\x87\x8c\0" /* offset 11223 */ 30273 "\xe7\xa8\x9c\0" /* offset 11227 */ 30274 "\xe7\xb6\xbe\0" /* offset 11231 */ 30275 "\xe8\x8f\xb1\0" /* offset 11235 */ 30276 "\xe9\x99\xb5\0" /* offset 11239 */ 30277 "\xe8\xae\x80\0" /* offset 11243 */ 30278 "\xe6\x8b\x8f\0" /* offset 11247 */ 30279 "\xe8\xab\xbe\0" /* offset 11251 */ 30280 "\xe4\xb8\xb9\0" /* offset 11255 */ 30281 "\xe5\xaf\xa7\0" /* offset 11259 */ 30282 "\xe6\x80\x92\0" /* offset 11263 */ 30283 "\xe7\x8e\x87\0" /* offset 11267 */ 30284 "\xe7\x95\xb0\0" /* offset 11271 */ 30285 "\xe5\x8c\x97\0" /* offset 11275 */ 30286 "\xe7\xa3\xbb\0" /* offset 11279 */ 30287 "\xe4\xbe\xbf\0" /* offset 11283 */ 30288 "\xe5\xbe\xa9\0" /* offset 11287 */ 30289 "\xe4\xb8\x8d\0" /* offset 11291 */ 30290 "\xe6\xb3\x8c\0" /* offset 11295 */ 30291 "\xe6\x95\xb8\0" /* offset 11299 */ 30292 "\xe7\xb4\xa2\0" /* offset 11303 */ 30293 "\xe5\x8f\x83\0" /* offset 11307 */ 30294 "\xe5\xa1\x9e\0" /* offset 11311 */ 30295 "\xe7\x9c\x81\0" /* offset 11315 */ 30296 "\xe8\x91\x89\0" /* offset 11319 */ 30297 "\xe8\xaa\xaa\0" /* offset 11323 */ 30298 "\xe6\xae\xba\0" /* offset 11327 */ 30299 "\xe6\xb2\x88\0" /* offset 11331 */ 30300 "\xe6\x8b\xbe\0" /* offset 11335 */ 30301 "\xe8\x8b\xa5\0" /* offset 11339 */ 30302 "\xe6\x8e\xa0\0" /* offset 11343 */ 30303 "\xe7\x95\xa5\0" /* offset 11347 */ 30304 "\xe4\xba\xae\0" /* offset 11351 */ 30305 "\xe5\x85\xa9\0" /* offset 11355 */ 30306 "\xe5\x87\x89\0" /* offset 11359 */ 30307 "\xe6\xa2\x81\0" /* offset 11363 */ 30308 "\xe7\xb3\xa7\0" /* offset 11367 */ 30309 "\xe8\x89\xaf\0" /* offset 11371 */ 30310 "\xe8\xab\x92\0" /* offset 11375 */ 30311 "\xe9\x87\x8f\0" /* offset 11379 */ 30312 "\xe5\x8b\xb5\0" /* offset 11383 */ 30313 "\xe5\x91\x82\0" /* offset 11387 */ 30314 "\xe5\xbb\xac\0" /* offset 11391 */ 30315 "\xe6\x97\x85\0" /* offset 11395 */ 30316 "\xe6\xbf\xbe\0" /* offset 11399 */ 30317 "\xe7\xa4\xaa\0" /* offset 11403 */ 30318 "\xe9\x96\xad\0" /* offset 11407 */ 30319 "\xe9\xa9\xaa\0" /* offset 11411 */ 30320 "\xe9\xba\x97\0" /* offset 11415 */ 30321 "\xe9\xbb\x8e\0" /* offset 11419 */ 30322 "\xe6\x9b\x86\0" /* offset 11423 */ 30323 "\xe6\xad\xb7\0" /* offset 11427 */ 30324 "\xe8\xbd\xa2\0" /* offset 11431 */ 30325 "\xe5\xb9\xb4\0" /* offset 11435 */ 30326 "\xe6\x86\x90\0" /* offset 11439 */ 30327 "\xe6\x88\x80\0" /* offset 11443 */ 30328 "\xe6\x92\x9a\0" /* offset 11447 */ 30329 "\xe6\xbc\xa3\0" /* offset 11451 */ 30330 "\xe7\x85\x89\0" /* offset 11455 */ 30331 "\xe7\x92\x89\0" /* offset 11459 */ 30332 "\xe7\xa7\x8a\0" /* offset 11463 */ 30333 "\xe7\xb7\xb4\0" /* offset 11467 */ 30334 "\xe8\x81\xaf\0" /* offset 11471 */ 30335 "\xe8\xbc\xa6\0" /* offset 11475 */ 30336 "\xe8\x93\xae\0" /* offset 11479 */ 30337 "\xe9\x80\xa3\0" /* offset 11483 */ 30338 "\xe9\x8d\x8a\0" /* offset 11487 */ 30339 "\xe5\x88\x97\0" /* offset 11491 */ 30340 "\xe5\x8a\xa3\0" /* offset 11495 */ 30341 "\xe5\x92\xbd\0" /* offset 11499 */ 30342 "\xe7\x83\x88\0" /* offset 11503 */ 30343 "\xe8\xa3\x82\0" /* offset 11507 */ 30344 "\xe5\xbb\x89\0" /* offset 11511 */ 30345 "\xe5\xbf\xb5\0" /* offset 11515 */ 30346 "\xe6\x8d\xbb\0" /* offset 11519 */ 30347 "\xe6\xae\xae\0" /* offset 11523 */ 30348 "\xe7\xb0\xbe\0" /* offset 11527 */ 30349 "\xe7\x8d\xb5\0" /* offset 11531 */ 30350 "\xe4\xbb\xa4\0" /* offset 11535 */ 30351 "\xe5\x9b\xb9\0" /* offset 11539 */ 30352 "\xe5\xb6\xba\0" /* offset 11543 */ 30353 "\xe6\x80\x9c\0" /* offset 11547 */ 30354 "\xe7\x8e\xb2\0" /* offset 11551 */ 30355 "\xe7\x91\xa9\0" /* offset 11555 */ 30356 "\xe7\xbe\x9a\0" /* offset 11559 */ 30357 "\xe8\x81\x86\0" /* offset 11563 */ 30358 "\xe9\x88\xb4\0" /* offset 11567 */ 30359 "\xe9\x9b\xb6\0" /* offset 11571 */ 30360 "\xe9\x9d\x88\0" /* offset 11575 */ 30361 "\xe9\xa0\x98\0" /* offset 11579 */ 30362 "\xe4\xbe\x8b\0" /* offset 11583 */ 30363 "\xe7\xa6\xae\0" /* offset 11587 */ 30364 "\xe9\x86\xb4\0" /* offset 11591 */ 30365 "\xe9\x9a\xb8\0" /* offset 11595 */ 30366 "\xe6\x83\xa1\0" /* offset 11599 */ 30367 "\xe4\xba\x86\0" /* offset 11603 */ 30368 "\xe5\x83\x9a\0" /* offset 11607 */ 30369 "\xe5\xaf\xae\0" /* offset 11611 */ 30370 "\xe5\xb0\xbf\0" /* offset 11615 */ 30371 "\xe6\x96\x99\0" /* offset 11619 */ 30372 "\xe7\x87\x8e\0" /* offset 11623 */ 30373 "\xe7\x99\x82\0" /* offset 11627 */ 30374 "\xe8\x93\xbc\0" /* offset 11631 */ 30375 "\xe9\x81\xbc\0" /* offset 11635 */ 30376 "\xe6\x9a\x88\0" /* offset 11639 */ 30377 "\xe9\x98\xae\0" /* offset 11643 */ 30378 "\xe5\x8a\x89\0" /* offset 11647 */ 30379 "\xe6\x9d\xbb\0" /* offset 11651 */ 30380 "\xe6\x9f\xb3\0" /* offset 11655 */ 30381 "\xe6\xb5\x81\0" /* offset 11659 */ 30382 "\xe6\xba\x9c\0" /* offset 11663 */ 30383 "\xe7\x90\x89\0" /* offset 11667 */ 30384 "\xe7\x95\x99\0" /* offset 11671 */ 30385 "\xe7\xa1\xab\0" /* offset 11675 */ 30386 "\xe7\xb4\x90\0" /* offset 11679 */ 30387 "\xe9\xa1\x9e\0" /* offset 11683 */ 30388 "\xe6\x88\xae\0" /* offset 11687 */ 30389 "\xe9\x99\xb8\0" /* offset 11691 */ 30390 "\xe5\x80\xab\0" /* offset 11695 */ 30391 "\xe5\xb4\x99\0" /* offset 11699 */ 30392 "\xe6\xb7\xaa\0" /* offset 11703 */ 30393 "\xe8\xbc\xaa\0" /* offset 11707 */ 30394 "\xe5\xbe\x8b\0" /* offset 11711 */ 30395 "\xe6\x85\x84\0" /* offset 11715 */ 30396 "\xe6\xa0\x97\0" /* offset 11719 */ 30397 "\xe9\x9a\x86\0" /* offset 11723 */ 30398 "\xe5\x88\xa9\0" /* offset 11727 */ 30399 "\xe5\x90\x8f\0" /* offset 11731 */ 30400 "\xe5\xb1\xa5\0" /* offset 11735 */ 30401 "\xe6\x98\x93\0" /* offset 11739 */ 30402 "\xe6\x9d\x8e\0" /* offset 11743 */ 30403 "\xe6\xa2\xa8\0" /* offset 11747 */ 30404 "\xe6\xb3\xa5\0" /* offset 11751 */ 30405 "\xe7\x90\x86\0" /* offset 11755 */ 30406 "\xe7\x97\xa2\0" /* offset 11759 */ 30407 "\xe7\xbd\xb9\0" /* offset 11763 */ 30408 "\xe8\xa3\x8f\0" /* offset 11767 */ 30409 "\xe8\xa3\xa1\0" /* offset 11771 */ 30410 "\xe9\x9b\xa2\0" /* offset 11775 */ 30411 "\xe5\x8c\xbf\0" /* offset 11779 */ 30412 "\xe6\xba\xba\0" /* offset 11783 */ 30413 "\xe5\x90\x9d\0" /* offset 11787 */ 30414 "\xe7\x87\x90\0" /* offset 11791 */ 30415 "\xe7\x92\x98\0" /* offset 11795 */ 30416 "\xe8\x97\xba\0" /* offset 11799 */ 30417 "\xe9\x9a\xa3\0" /* offset 11803 */ 30418 "\xe9\xb1\x97\0" /* offset 11807 */ 30419 "\xe9\xba\x9f\0" /* offset 11811 */ 30420 "\xe6\x9e\x97\0" /* offset 11815 */ 30421 "\xe6\xb7\x8b\0" /* offset 11819 */ 30422 "\xe8\x87\xa8\0" /* offset 11823 */ 30423 "\xe7\xac\xa0\0" /* offset 11827 */ 30424 "\xe7\xb2\x92\0" /* offset 11831 */ 30425 "\xe7\x8b\x80\0" /* offset 11835 */ 30426 "\xe7\x82\x99\0" /* offset 11839 */ 30427 "\xe8\xad\x98\0" /* offset 11843 */ 30428 "\xe4\xbb\x80\0" /* offset 11847 */ 30429 "\xe8\x8c\xb6\0" /* offset 11851 */ 30430 "\xe5\x88\xba\0" /* offset 11855 */ 30431 "\xe5\x88\x87\0" /* offset 11859 */ 30432 "\xe5\xba\xa6\0" /* offset 11863 */ 30433 "\xe6\x8b\x93\0" /* offset 11867 */ 30434 "\xe7\xb3\x96\0" /* offset 11871 */ 30435 "\xe5\xae\x85\0" /* offset 11875 */ 30436 "\xe6\xb4\x9e\0" /* offset 11879 */ 30437 "\xe6\x9a\xb4\0" /* offset 11883 */ 30438 "\xe8\xbc\xbb\0" /* offset 11887 */ 30439 "\xe9\x99\x8d\0" /* offset 11891 */ 30440 "\xe5\xbb\x93\0" /* offset 11895 */ 30441 "\xe5\x85\x80\0" /* offset 11899 */ 30442 "\xe5\x97\x80\0" /* offset 11903 */ 30443 "\xe5\xa1\x9a\0" /* offset 11907 */ 30444 "\xe6\x99\xb4\0" /* offset 11911 */ 30445 "\xe5\x87\x9e\0" /* offset 11915 */ 30446 "\xe7\x8c\xaa\0" /* offset 11919 */ 30447 "\xe7\x9b\x8a\0" /* offset 11923 */ 30448 "\xe7\xa4\xbc\0" /* offset 11927 */ 30449 "\xe7\xa5\x9e\0" /* offset 11931 */ 30450 "\xe7\xa5\xa5\0" /* offset 11935 */ 30451 "\xe7\xa6\x8f\0" /* offset 11939 */ 30452 "\xe9\x9d\x96\0" /* offset 11943 */ 30453 "\xe7\xb2\xbe\0" /* offset 11947 */ 30454 "\xe8\x98\x92\0" /* offset 11951 */ 30455 "\xe8\xab\xb8\0" /* offset 11955 */ 30456 "\xe9\x80\xb8\0" /* offset 11959 */ 30457 "\xe9\x83\xbd\0" /* offset 11963 */ 30458 "\xe9\xa3\xaf\0" /* offset 11967 */ 30459 "\xe9\xa3\xbc\0" /* offset 11971 */ 30460 "\xe9\xa4\xa8\0" /* offset 11975 */ 30461 "\xe9\xb6\xb4\0" /* offset 11979 */ 30462 "\xe9\x83\x9e\0" /* offset 11983 */ 30463 "\xe9\x9a\xb7\0" /* offset 11987 */ 30464 "\xe4\xbe\xae\0" /* offset 11991 */ 30465 "\xe5\x83\xa7\0" /* offset 11995 */ 30466 "\xe5\x85\x8d\0" /* offset 11999 */ 30467 "\xe5\x8b\x89\0" /* offset 12003 */ 30468 "\xe5\x8b\xa4\0" /* offset 12007 */ 30469 "\xe5\x8d\x91\0" /* offset 12011 */ 30470 "\xe5\x96\x9d\0" /* offset 12015 */ 30471 "\xe5\x98\x86\0" /* offset 12019 */ 30472 "\xe5\x99\xa8\0" /* offset 12023 */ 30473 "\xe5\xa1\x80\0" /* offset 12027 */ 30474 "\xe5\xa2\xa8\0" /* offset 12031 */ 30475 "\xe5\xb1\xa4\0" /* offset 12035 */ 30476 "\xe6\x82\x94\0" /* offset 12039 */ 30477 "\xe6\x85\xa8\0" /* offset 12043 */ 30478 "\xe6\x86\x8e\0" /* offset 12047 */ 30479 "\xe6\x87\xb2\0" /* offset 12051 */ 30480 "\xe6\x95\x8f\0" /* offset 12055 */ 30481 "\xe6\x97\xa2\0" /* offset 12059 */ 30482 "\xe6\x9a\x91\0" /* offset 12063 */ 30483 "\xe6\xa2\x85\0" /* offset 12067 */ 30484 "\xe6\xb5\xb7\0" /* offset 12071 */ 30485 "\xe6\xb8\x9a\0" /* offset 12075 */ 30486 "\xe6\xbc\xa2\0" /* offset 12079 */ 30487 "\xe7\x85\xae\0" /* offset 12083 */ 30488 "\xe7\x88\xab\0" /* offset 12087 */ 30489 "\xe7\x90\xa2\0" /* offset 12091 */ 30490 "\xe7\xa2\x91\0" /* offset 12095 */ 30491 "\xe7\xa5\x89\0" /* offset 12099 */ 30492 "\xe7\xa5\x88\0" /* offset 12103 */ 30493 "\xe7\xa5\x90\0" /* offset 12107 */ 30494 "\xe7\xa5\x96\0" /* offset 12111 */ 30495 "\xe7\xa6\x8d\0" /* offset 12115 */ 30496 "\xe7\xa6\x8e\0" /* offset 12119 */ 30497 "\xe7\xa9\x80\0" /* offset 12123 */ 30498 "\xe7\xaa\x81\0" /* offset 12127 */ 30499 "\xe7\xaf\x80\0" /* offset 12131 */ 30500 "\xe7\xb8\x89\0" /* offset 12135 */ 30501 "\xe7\xb9\x81\0" /* offset 12139 */ 30502 "\xe7\xbd\xb2\0" /* offset 12143 */ 30503 "\xe8\x80\x85\0" /* offset 12147 */ 30504 "\xe8\x87\xad\0" /* offset 12151 */ 30505 "\xe8\x89\xb9\0" /* offset 12155 */ 30506 "\xe8\x91\x97\0" /* offset 12159 */ 30507 "\xe8\xa4\x90\0" /* offset 12163 */ 30508 "\xe8\xa6\x96\0" /* offset 12167 */ 30509 "\xe8\xac\x81\0" /* offset 12171 */ 30510 "\xe8\xac\xb9\0" /* offset 12175 */ 30511 "\xe8\xb3\x93\0" /* offset 12179 */ 30512 "\xe8\xb4\x88\0" /* offset 12183 */ 30513 "\xe8\xbe\xb6\0" /* offset 12187 */ 30514 "\xe9\x9b\xa3\0" /* offset 12191 */ 30515 "\xe9\x9f\xbf\0" /* offset 12195 */ 30516 "\xe9\xa0\xbb\0" /* offset 12199 */ 30517 "\xe6\x81\xb5\0" /* offset 12203 */ 30518 "\xf0\xa4\x8b\xae\0" /* offset 12207 */ 30519 "\xe8\x88\x98\0" /* offset 12212 */ 30520 "\xe4\xb8\xa6\0" /* offset 12216 */ 30521 "\xe5\x86\xb5\0" /* offset 12220 */ 30522 "\xe5\x85\xa8\0" /* offset 12224 */ 30523 "\xe4\xbe\x80\0" /* offset 12228 */ 30524 "\xe5\x85\x85\0" /* offset 12232 */ 30525 "\xe5\x86\x80\0" /* offset 12236 */ 30526 "\xe5\x8b\x87\0" /* offset 12240 */ 30527 "\xe5\x8b\xba\0" /* offset 12244 */ 30528 "\xe5\x95\x95\0" /* offset 12248 */ 30529 "\xe5\x96\x99\0" /* offset 12252 */ 30530 "\xe5\x97\xa2\0" /* offset 12256 */ 30531 "\xe5\xa2\xb3\0" /* offset 12260 */ 30532 "\xe5\xa5\x84\0" /* offset 12264 */ 30533 "\xe5\xa5\x94\0" /* offset 12268 */ 30534 "\xe5\xa9\xa2\0" /* offset 12272 */ 30535 "\xe5\xac\xa8\0" /* offset 12276 */ 30536 "\xe5\xbb\x92\0" /* offset 12280 */ 30537 "\xe5\xbb\x99\0" /* offset 12284 */ 30538 "\xe5\xbd\xa9\0" /* offset 12288 */ 30539 "\xe5\xbe\xad\0" /* offset 12292 */ 30540 "\xe6\x83\x98\0" /* offset 12296 */ 30541 "\xe6\x85\x8e\0" /* offset 12300 */ 30542 "\xe6\x84\x88\0" /* offset 12304 */ 30543 "\xe6\x85\xa0\0" /* offset 12308 */ 30544 "\xe6\x88\xb4\0" /* offset 12312 */ 30545 "\xe6\x8f\x84\0" /* offset 12316 */ 30546 "\xe6\x90\x9c\0" /* offset 12320 */ 30547 "\xe6\x91\x92\0" /* offset 12324 */ 30548 "\xe6\x95\x96\0" /* offset 12328 */ 30549 "\xe6\x9c\x9b\0" /* offset 12332 */ 30550 "\xe6\x9d\x96\0" /* offset 12336 */ 30551 "\xe6\xbb\x9b\0" /* offset 12340 */ 30552 "\xe6\xbb\x8b\0" /* offset 12344 */ 30553 "\xe7\x80\x9e\0" /* offset 12348 */ 30554 "\xe7\x9e\xa7\0" /* offset 12352 */ 30555 "\xe7\x88\xb5\0" /* offset 12356 */ 30556 "\xe7\x8a\xaf\0" /* offset 12360 */ 30557 "\xe7\x91\xb1\0" /* offset 12364 */ 30558 "\xe7\x94\x86\0" /* offset 12368 */ 30559 "\xe7\x94\xbb\0" /* offset 12372 */ 30560 "\xe7\x98\x9d\0" /* offset 12376 */ 30561 "\xe7\x98\x9f\0" /* offset 12380 */ 30562 "\xe7\x9b\x9b\0" /* offset 12384 */ 30563 "\xe7\x9b\xb4\0" /* offset 12388 */ 30564 "\xe7\x9d\x8a\0" /* offset 12392 */ 30565 "\xe7\x9d\x80\0" /* offset 12396 */ 30566 "\xe7\xa3\x8c\0" /* offset 12400 */ 30567 "\xe7\xaa\xb1\0" /* offset 12404 */ 30568 "\xe7\xb1\xbb\0" /* offset 12408 */ 30569 "\xe7\xb5\x9b\0" /* offset 12412 */ 30570 "\xe7\xbc\xbe\0" /* offset 12416 */ 30571 "\xe8\x8d\x92\0" /* offset 12420 */ 30572 "\xe8\x8f\xaf\0" /* offset 12424 */ 30573 "\xe8\x9d\xb9\0" /* offset 12428 */ 30574 "\xe8\xa5\x81\0" /* offset 12432 */ 30575 "\xe8\xa6\x86\0" /* offset 12436 */ 30576 "\xe8\xaa\xbf\0" /* offset 12440 */ 30577 "\xe8\xab\x8b\0" /* offset 12444 */ 30578 "\xe8\xab\xad\0" /* offset 12448 */ 30579 "\xe8\xae\x8a\0" /* offset 12452 */ 30580 "\xe8\xbc\xb8\0" /* offset 12456 */ 30581 "\xe9\x81\xb2\0" /* offset 12460 */ 30582 "\xe9\x86\x99\0" /* offset 12464 */ 30583 "\xe9\x89\xb6\0" /* offset 12468 */ 30584 "\xe9\x99\xbc\0" /* offset 12472 */ 30585 "\xe9\x9f\x9b\0" /* offset 12476 */ 30586 "\xe9\xa0\x8b\0" /* offset 12480 */ 30587 "\xe9\xac\x92\0" /* offset 12484 */ 30588 "\xf0\xa2\xa1\x8a\0" /* offset 12488 */ 30589 "\xf0\xa2\xa1\x84\0" /* offset 12493 */ 30590 "\xf0\xa3\x8f\x95\0" /* offset 12498 */ 30591 "\xe3\xae\x9d\0" /* offset 12503 */ 30592 "\xe4\x80\x98\0" /* offset 12507 */ 30593 "\xe4\x80\xb9\0" /* offset 12511 */ 30594 "\xf0\xa5\x89\x89\0" /* offset 12515 */ 30595 "\xf0\xa5\xb3\x90\0" /* offset 12520 */ 30596 "\xf0\xa7\xbb\x93\0" /* offset 12525 */ 30597 "\xe9\xbd\x83\0" /* offset 12530 */ 30598 "\xe9\xbe\x8e\0" /* offset 12534 */ 30599 "\x66\x66\0" /* offset 12538 */ 30600 "\x66\x69\0" /* offset 12541 */ 30601 "\x66\x6c\0" /* offset 12544 */ 30602 "\x66\x66\x69\0" /* offset 12547 */ 30603 "\x66\x66\x6c\0" /* offset 12551 */ 30604 "\x73\x74\0" /* offset 12555 */ 30605 "\xd5\xb4\xd5\xb6\0" /* offset 12558 */ 30606 "\xd5\xb4\xd5\xa5\0" /* offset 12563 */ 30607 "\xd5\xb4\xd5\xab\0" /* offset 12568 */ 30608 "\xd5\xbe\xd5\xb6\0" /* offset 12573 */ 30609 "\xd5\xb4\xd5\xad\0" /* offset 12578 */ 30610 "\xd7\x99\xd6\xb4\0" /* offset 12583 */ 30611 "\xd7\xb2\xd6\xb7\0" /* offset 12588 */ 30612 "\xd7\xa2\0" /* offset 12593 */ 30613 "\xd7\x94\0" /* offset 12596 */ 30614 "\xd7\x9b\0" /* offset 12599 */ 30615 "\xd7\x9c\0" /* offset 12602 */ 30616 "\xd7\x9d\0" /* offset 12605 */ 30617 "\xd7\xa8\0" /* offset 12608 */ 30618 "\xd7\xaa\0" /* offset 12611 */ 30619 "\xd7\xa9\xd7\x81\0" /* offset 12614 */ 30620 "\xd7\xa9\xd7\x82\0" /* offset 12619 */ 30621 "\xd7\xa9\xd6\xbc\xd7\x81\0" /* offset 12624 */ 30622 "\xd7\xa9\xd6\xbc\xd7\x82\0" /* offset 12631 */ 30623 "\xd7\x90\xd6\xb7\0" /* offset 12638 */ 30624 "\xd7\x90\xd6\xb8\0" /* offset 12643 */ 30625 "\xd7\x90\xd6\xbc\0" /* offset 12648 */ 30626 "\xd7\x91\xd6\xbc\0" /* offset 12653 */ 30627 "\xd7\x92\xd6\xbc\0" /* offset 12658 */ 30628 "\xd7\x93\xd6\xbc\0" /* offset 12663 */ 30629 "\xd7\x94\xd6\xbc\0" /* offset 12668 */ 30630 "\xd7\x95\xd6\xbc\0" /* offset 12673 */ 30631 "\xd7\x96\xd6\xbc\0" /* offset 12678 */ 30632 "\xd7\x98\xd6\xbc\0" /* offset 12683 */ 30633 "\xd7\x99\xd6\xbc\0" /* offset 12688 */ 30634 "\xd7\x9a\xd6\xbc\0" /* offset 12693 */ 30635 "\xd7\x9b\xd6\xbc\0" /* offset 12698 */ 30636 "\xd7\x9c\xd6\xbc\0" /* offset 12703 */ 30637 "\xd7\x9e\xd6\xbc\0" /* offset 12708 */ 30638 "\xd7\xa0\xd6\xbc\0" /* offset 12713 */ 30639 "\xd7\xa1\xd6\xbc\0" /* offset 12718 */ 30640 "\xd7\xa3\xd6\xbc\0" /* offset 12723 */ 30641 "\xd7\xa4\xd6\xbc\0" /* offset 12728 */ 30642 "\xd7\xa6\xd6\xbc\0" /* offset 12733 */ 30643 "\xd7\xa7\xd6\xbc\0" /* offset 12738 */ 30644 "\xd7\xa8\xd6\xbc\0" /* offset 12743 */ 30645 "\xd7\xa9\xd6\xbc\0" /* offset 12748 */ 30646 "\xd7\xaa\xd6\xbc\0" /* offset 12753 */ 30647 "\xd7\x95\xd6\xb9\0" /* offset 12758 */ 30648 "\xd7\x91\xd6\xbf\0" /* offset 12763 */ 30649 "\xd7\x9b\xd6\xbf\0" /* offset 12768 */ 30650 "\xd7\xa4\xd6\xbf\0" /* offset 12773 */ 30651 "\xd7\x90\xd7\x9c\0" /* offset 12778 */ 30652 "\xd9\xb1\0" /* offset 12783 */ 30653 "\xd9\xbb\0" /* offset 12786 */ 30654 "\xd9\xbe\0" /* offset 12789 */ 30655 "\xda\x80\0" /* offset 12792 */ 30656 "\xd9\xba\0" /* offset 12795 */ 30657 "\xd9\xbf\0" /* offset 12798 */ 30658 "\xd9\xb9\0" /* offset 12801 */ 30659 "\xda\xa4\0" /* offset 12804 */ 30660 "\xda\xa6\0" /* offset 12807 */ 30661 "\xda\x84\0" /* offset 12810 */ 30662 "\xda\x83\0" /* offset 12813 */ 30663 "\xda\x86\0" /* offset 12816 */ 30664 "\xda\x87\0" /* offset 12819 */ 30665 "\xda\x8d\0" /* offset 12822 */ 30666 "\xda\x8c\0" /* offset 12825 */ 30667 "\xda\x8e\0" /* offset 12828 */ 30668 "\xda\x88\0" /* offset 12831 */ 30669 "\xda\x98\0" /* offset 12834 */ 30670 "\xda\x91\0" /* offset 12837 */ 30671 "\xda\xa9\0" /* offset 12840 */ 30672 "\xda\xaf\0" /* offset 12843 */ 30673 "\xda\xb3\0" /* offset 12846 */ 30674 "\xda\xb1\0" /* offset 12849 */ 30675 "\xda\xba\0" /* offset 12852 */ 30676 "\xda\xbb\0" /* offset 12855 */ 30677 "\xdb\x81\0" /* offset 12858 */ 30678 "\xda\xbe\0" /* offset 12861 */ 30679 "\xdb\x92\0" /* offset 12864 */ 30680 "\xda\xad\0" /* offset 12867 */ 30681 "\xdb\x87\0" /* offset 12870 */ 30682 "\xdb\x86\0" /* offset 12873 */ 30683 "\xdb\x88\0" /* offset 12876 */ 30684 "\xdb\x8b\0" /* offset 12879 */ 30685 "\xdb\x85\0" /* offset 12882 */ 30686 "\xdb\x89\0" /* offset 12885 */ 30687 "\xdb\x90\0" /* offset 12888 */ 30688 "\xd9\x89\0" /* offset 12891 */ 30689 "\xd9\x8a\xd9\x94\xd8\xa7\0" /* offset 12894 */ 30690 "\xd9\x8a\xd9\x94\xdb\x95\0" /* offset 12901 */ 30691 "\xd9\x8a\xd9\x94\xd9\x88\0" /* offset 12908 */ 30692 "\xd9\x8a\xd9\x94\xdb\x87\0" /* offset 12915 */ 30693 "\xd9\x8a\xd9\x94\xdb\x86\0" /* offset 12922 */ 30694 "\xd9\x8a\xd9\x94\xdb\x88\0" /* offset 12929 */ 30695 "\xd9\x8a\xd9\x94\xdb\x90\0" /* offset 12936 */ 30696 "\xd9\x8a\xd9\x94\xd9\x89\0" /* offset 12943 */ 30697 "\xdb\x8c\0" /* offset 12950 */ 30698 "\xd9\x8a\xd9\x94\xd8\xac\0" /* offset 12953 */ 30699 "\xd9\x8a\xd9\x94\xd8\xad\0" /* offset 12960 */ 30700 "\xd9\x8a\xd9\x94\xd9\x85\0" /* offset 12967 */ 30701 "\xd9\x8a\xd9\x94\xd9\x8a\0" /* offset 12974 */ 30702 "\xd8\xa8\xd8\xac\0" /* offset 12981 */ 30703 "\xd8\xa8\xd8\xad\0" /* offset 12986 */ 30704 "\xd8\xa8\xd8\xae\0" /* offset 12991 */ 30705 "\xd8\xa8\xd9\x85\0" /* offset 12996 */ 30706 "\xd8\xa8\xd9\x89\0" /* offset 13001 */ 30707 "\xd8\xa8\xd9\x8a\0" /* offset 13006 */ 30708 "\xd8\xaa\xd8\xac\0" /* offset 13011 */ 30709 "\xd8\xaa\xd8\xad\0" /* offset 13016 */ 30710 "\xd8\xaa\xd8\xae\0" /* offset 13021 */ 30711 "\xd8\xaa\xd9\x85\0" /* offset 13026 */ 30712 "\xd8\xaa\xd9\x89\0" /* offset 13031 */ 30713 "\xd8\xaa\xd9\x8a\0" /* offset 13036 */ 30714 "\xd8\xab\xd8\xac\0" /* offset 13041 */ 30715 "\xd8\xab\xd9\x85\0" /* offset 13046 */ 30716 "\xd8\xab\xd9\x89\0" /* offset 13051 */ 30717 "\xd8\xab\xd9\x8a\0" /* offset 13056 */ 30718 "\xd8\xac\xd8\xad\0" /* offset 13061 */ 30719 "\xd8\xac\xd9\x85\0" /* offset 13066 */ 30720 "\xd8\xad\xd8\xac\0" /* offset 13071 */ 30721 "\xd8\xad\xd9\x85\0" /* offset 13076 */ 30722 "\xd8\xae\xd8\xac\0" /* offset 13081 */ 30723 "\xd8\xae\xd8\xad\0" /* offset 13086 */ 30724 "\xd8\xae\xd9\x85\0" /* offset 13091 */ 30725 "\xd8\xb3\xd8\xac\0" /* offset 13096 */ 30726 "\xd8\xb3\xd8\xad\0" /* offset 13101 */ 30727 "\xd8\xb3\xd8\xae\0" /* offset 13106 */ 30728 "\xd8\xb3\xd9\x85\0" /* offset 13111 */ 30729 "\xd8\xb5\xd8\xad\0" /* offset 13116 */ 30730 "\xd8\xb5\xd9\x85\0" /* offset 13121 */ 30731 "\xd8\xb6\xd8\xac\0" /* offset 13126 */ 30732 "\xd8\xb6\xd8\xad\0" /* offset 13131 */ 30733 "\xd8\xb6\xd8\xae\0" /* offset 13136 */ 30734 "\xd8\xb6\xd9\x85\0" /* offset 13141 */ 30735 "\xd8\xb7\xd8\xad\0" /* offset 13146 */ 30736 "\xd8\xb7\xd9\x85\0" /* offset 13151 */ 30737 "\xd8\xb8\xd9\x85\0" /* offset 13156 */ 30738 "\xd8\xb9\xd8\xac\0" /* offset 13161 */ 30739 "\xd8\xb9\xd9\x85\0" /* offset 13166 */ 30740 "\xd8\xba\xd8\xac\0" /* offset 13171 */ 30741 "\xd8\xba\xd9\x85\0" /* offset 13176 */ 30742 "\xd9\x81\xd8\xac\0" /* offset 13181 */ 30743 "\xd9\x81\xd8\xad\0" /* offset 13186 */ 30744 "\xd9\x81\xd8\xae\0" /* offset 13191 */ 30745 "\xd9\x81\xd9\x85\0" /* offset 13196 */ 30746 "\xd9\x81\xd9\x89\0" /* offset 13201 */ 30747 "\xd9\x81\xd9\x8a\0" /* offset 13206 */ 30748 "\xd9\x82\xd8\xad\0" /* offset 13211 */ 30749 "\xd9\x82\xd9\x85\0" /* offset 13216 */ 30750 "\xd9\x82\xd9\x89\0" /* offset 13221 */ 30751 "\xd9\x82\xd9\x8a\0" /* offset 13226 */ 30752 "\xd9\x83\xd8\xa7\0" /* offset 13231 */ 30753 "\xd9\x83\xd8\xac\0" /* offset 13236 */ 30754 "\xd9\x83\xd8\xad\0" /* offset 13241 */ 30755 "\xd9\x83\xd8\xae\0" /* offset 13246 */ 30756 "\xd9\x83\xd9\x84\0" /* offset 13251 */ 30757 "\xd9\x83\xd9\x85\0" /* offset 13256 */ 30758 "\xd9\x83\xd9\x89\0" /* offset 13261 */ 30759 "\xd9\x83\xd9\x8a\0" /* offset 13266 */ 30760 "\xd9\x84\xd8\xac\0" /* offset 13271 */ 30761 "\xd9\x84\xd8\xad\0" /* offset 13276 */ 30762 "\xd9\x84\xd8\xae\0" /* offset 13281 */ 30763 "\xd9\x84\xd9\x85\0" /* offset 13286 */ 30764 "\xd9\x84\xd9\x89\0" /* offset 13291 */ 30765 "\xd9\x84\xd9\x8a\0" /* offset 13296 */ 30766 "\xd9\x85\xd8\xac\0" /* offset 13301 */ 30767 "\xd9\x85\xd8\xad\0" /* offset 13306 */ 30768 "\xd9\x85\xd8\xae\0" /* offset 13311 */ 30769 "\xd9\x85\xd9\x85\0" /* offset 13316 */ 30770 "\xd9\x85\xd9\x89\0" /* offset 13321 */ 30771 "\xd9\x85\xd9\x8a\0" /* offset 13326 */ 30772 "\xd9\x86\xd8\xac\0" /* offset 13331 */ 30773 "\xd9\x86\xd8\xad\0" /* offset 13336 */ 30774 "\xd9\x86\xd8\xae\0" /* offset 13341 */ 30775 "\xd9\x86\xd9\x85\0" /* offset 13346 */ 30776 "\xd9\x86\xd9\x89\0" /* offset 13351 */ 30777 "\xd9\x86\xd9\x8a\0" /* offset 13356 */ 30778 "\xd9\x87\xd8\xac\0" /* offset 13361 */ 30779 "\xd9\x87\xd9\x85\0" /* offset 13366 */ 30780 "\xd9\x87\xd9\x89\0" /* offset 13371 */ 30781 "\xd9\x87\xd9\x8a\0" /* offset 13376 */ 30782 "\xd9\x8a\xd8\xac\0" /* offset 13381 */ 30783 "\xd9\x8a\xd8\xad\0" /* offset 13386 */ 30784 "\xd9\x8a\xd8\xae\0" /* offset 13391 */ 30785 "\xd9\x8a\xd9\x85\0" /* offset 13396 */ 30786 "\xd9\x8a\xd9\x89\0" /* offset 13401 */ 30787 "\xd9\x8a\xd9\x8a\0" /* offset 13406 */ 30788 "\xd8\xb0\xd9\xb0\0" /* offset 13411 */ 30789 "\xd8\xb1\xd9\xb0\0" /* offset 13416 */ 30790 "\xd9\x89\xd9\xb0\0" /* offset 13421 */ 30791 "\x20\xd9\x8c\xd9\x91\0" /* offset 13426 */ 30792 "\x20\xd9\x8d\xd9\x91\0" /* offset 13432 */ 30793 "\x20\xd9\x8e\xd9\x91\0" /* offset 13438 */ 30794 "\x20\xd9\x8f\xd9\x91\0" /* offset 13444 */ 30795 "\x20\xd9\x90\xd9\x91\0" /* offset 13450 */ 30796 "\x20\xd9\x91\xd9\xb0\0" /* offset 13456 */ 30797 "\xd9\x8a\xd9\x94\xd8\xb1\0" /* offset 13462 */ 30798 "\xd9\x8a\xd9\x94\xd8\xb2\0" /* offset 13469 */ 30799 "\xd9\x8a\xd9\x94\xd9\x86\0" /* offset 13476 */ 30800 "\xd8\xa8\xd8\xb1\0" /* offset 13483 */ 30801 "\xd8\xa8\xd8\xb2\0" /* offset 13488 */ 30802 "\xd8\xa8\xd9\x86\0" /* offset 13493 */ 30803 "\xd8\xaa\xd8\xb1\0" /* offset 13498 */ 30804 "\xd8\xaa\xd8\xb2\0" /* offset 13503 */ 30805 "\xd8\xaa\xd9\x86\0" /* offset 13508 */ 30806 "\xd8\xab\xd8\xb1\0" /* offset 13513 */ 30807 "\xd8\xab\xd8\xb2\0" /* offset 13518 */ 30808 "\xd8\xab\xd9\x86\0" /* offset 13523 */ 30809 "\xd9\x85\xd8\xa7\0" /* offset 13528 */ 30810 "\xd9\x86\xd8\xb1\0" /* offset 13533 */ 30811 "\xd9\x86\xd8\xb2\0" /* offset 13538 */ 30812 "\xd9\x86\xd9\x86\0" /* offset 13543 */ 30813 "\xd9\x8a\xd8\xb1\0" /* offset 13548 */ 30814 "\xd9\x8a\xd8\xb2\0" /* offset 13553 */ 30815 "\xd9\x8a\xd9\x86\0" /* offset 13558 */ 30816 "\xd9\x8a\xd9\x94\xd8\xae\0" /* offset 13563 */ 30817 "\xd9\x8a\xd9\x94\xd9\x87\0" /* offset 13570 */ 30818 "\xd8\xa8\xd9\x87\0" /* offset 13577 */ 30819 "\xd8\xaa\xd9\x87\0" /* offset 13582 */ 30820 "\xd8\xb5\xd8\xae\0" /* offset 13587 */ 30821 "\xd9\x84\xd9\x87\0" /* offset 13592 */ 30822 "\xd9\x86\xd9\x87\0" /* offset 13597 */ 30823 "\xd9\x87\xd9\xb0\0" /* offset 13602 */ 30824 "\xd9\x8a\xd9\x87\0" /* offset 13607 */ 30825 "\xd8\xab\xd9\x87\0" /* offset 13612 */ 30826 "\xd8\xb3\xd9\x87\0" /* offset 13617 */ 30827 "\xd8\xb4\xd9\x85\0" /* offset 13622 */ 30828 "\xd8\xb4\xd9\x87\0" /* offset 13627 */ 30829 "\xd9\x80\xd9\x8e\xd9\x91\0" /* offset 13632 */ 30830 "\xd9\x80\xd9\x8f\xd9\x91\0" /* offset 13639 */ 30831 "\xd9\x80\xd9\x90\xd9\x91\0" /* offset 13646 */ 30832 "\xd8\xb7\xd9\x89\0" /* offset 13653 */ 30833 "\xd8\xb7\xd9\x8a\0" /* offset 13658 */ 30834 "\xd8\xb9\xd9\x89\0" /* offset 13663 */ 30835 "\xd8\xb9\xd9\x8a\0" /* offset 13668 */ 30836 "\xd8\xba\xd9\x89\0" /* offset 13673 */ 30837 "\xd8\xba\xd9\x8a\0" /* offset 13678 */ 30838 "\xd8\xb3\xd9\x89\0" /* offset 13683 */ 30839 "\xd8\xb3\xd9\x8a\0" /* offset 13688 */ 30840 "\xd8\xb4\xd9\x89\0" /* offset 13693 */ 30841 "\xd8\xb4\xd9\x8a\0" /* offset 13698 */ 30842 "\xd8\xad\xd9\x89\0" /* offset 13703 */ 30843 "\xd8\xad\xd9\x8a\0" /* offset 13708 */ 30844 "\xd8\xac\xd9\x89\0" /* offset 13713 */ 30845 "\xd8\xac\xd9\x8a\0" /* offset 13718 */ 30846 "\xd8\xae\xd9\x89\0" /* offset 13723 */ 30847 "\xd8\xae\xd9\x8a\0" /* offset 13728 */ 30848 "\xd8\xb5\xd9\x89\0" /* offset 13733 */ 30849 "\xd8\xb5\xd9\x8a\0" /* offset 13738 */ 30850 "\xd8\xb6\xd9\x89\0" /* offset 13743 */ 30851 "\xd8\xb6\xd9\x8a\0" /* offset 13748 */ 30852 "\xd8\xb4\xd8\xac\0" /* offset 13753 */ 30853 "\xd8\xb4\xd8\xad\0" /* offset 13758 */ 30854 "\xd8\xb4\xd8\xae\0" /* offset 13763 */ 30855 "\xd8\xb4\xd8\xb1\0" /* offset 13768 */ 30856 "\xd8\xb3\xd8\xb1\0" /* offset 13773 */ 30857 "\xd8\xb5\xd8\xb1\0" /* offset 13778 */ 30858 "\xd8\xb6\xd8\xb1\0" /* offset 13783 */ 30859 "\xd8\xa7\xd9\x8b\0" /* offset 13788 */ 30860 "\xd8\xaa\xd8\xac\xd9\x85\0" /* offset 13793 */ 30861 "\xd8\xaa\xd8\xad\xd8\xac\0" /* offset 13800 */ 30862 "\xd8\xaa\xd8\xad\xd9\x85\0" /* offset 13807 */ 30863 "\xd8\xaa\xd8\xae\xd9\x85\0" /* offset 13814 */ 30864 "\xd8\xaa\xd9\x85\xd8\xac\0" /* offset 13821 */ 30865 "\xd8\xaa\xd9\x85\xd8\xad\0" /* offset 13828 */ 30866 "\xd8\xaa\xd9\x85\xd8\xae\0" /* offset 13835 */ 30867 "\xd8\xac\xd9\x85\xd8\xad\0" /* offset 13842 */ 30868 "\xd8\xad\xd9\x85\xd9\x8a\0" /* offset 13849 */ 30869 "\xd8\xad\xd9\x85\xd9\x89\0" /* offset 13856 */ 30870 "\xd8\xb3\xd8\xad\xd8\xac\0" /* offset 13863 */ 30871 "\xd8\xb3\xd8\xac\xd8\xad\0" /* offset 13870 */ 30872 "\xd8\xb3\xd8\xac\xd9\x89\0" /* offset 13877 */ 30873 "\xd8\xb3\xd9\x85\xd8\xad\0" /* offset 13884 */ 30874 "\xd8\xb3\xd9\x85\xd8\xac\0" /* offset 13891 */ 30875 "\xd8\xb3\xd9\x85\xd9\x85\0" /* offset 13898 */ 30876 "\xd8\xb5\xd8\xad\xd8\xad\0" /* offset 13905 */ 30877 "\xd8\xb5\xd9\x85\xd9\x85\0" /* offset 13912 */ 30878 "\xd8\xb4\xd8\xad\xd9\x85\0" /* offset 13919 */ 30879 "\xd8\xb4\xd8\xac\xd9\x8a\0" /* offset 13926 */ 30880 "\xd8\xb4\xd9\x85\xd8\xae\0" /* offset 13933 */ 30881 "\xd8\xb4\xd9\x85\xd9\x85\0" /* offset 13940 */ 30882 "\xd8\xb6\xd8\xad\xd9\x89\0" /* offset 13947 */ 30883 "\xd8\xb6\xd8\xae\xd9\x85\0" /* offset 13954 */ 30884 "\xd8\xb7\xd9\x85\xd8\xad\0" /* offset 13961 */ 30885 "\xd8\xb7\xd9\x85\xd9\x85\0" /* offset 13968 */ 30886 "\xd8\xb7\xd9\x85\xd9\x8a\0" /* offset 13975 */ 30887 "\xd8\xb9\xd8\xac\xd9\x85\0" /* offset 13982 */ 30888 "\xd8\xb9\xd9\x85\xd9\x85\0" /* offset 13989 */ 30889 "\xd8\xb9\xd9\x85\xd9\x89\0" /* offset 13996 */ 30890 "\xd8\xba\xd9\x85\xd9\x85\0" /* offset 14003 */ 30891 "\xd8\xba\xd9\x85\xd9\x8a\0" /* offset 14010 */ 30892 "\xd8\xba\xd9\x85\xd9\x89\0" /* offset 14017 */ 30893 "\xd9\x81\xd8\xae\xd9\x85\0" /* offset 14024 */ 30894 "\xd9\x82\xd9\x85\xd8\xad\0" /* offset 14031 */ 30895 "\xd9\x82\xd9\x85\xd9\x85\0" /* offset 14038 */ 30896 "\xd9\x84\xd8\xad\xd9\x85\0" /* offset 14045 */ 30897 "\xd9\x84\xd8\xad\xd9\x8a\0" /* offset 14052 */ 30898 "\xd9\x84\xd8\xad\xd9\x89\0" /* offset 14059 */ 30899 "\xd9\x84\xd8\xac\xd8\xac\0" /* offset 14066 */ 30900 "\xd9\x84\xd8\xae\xd9\x85\0" /* offset 14073 */ 30901 "\xd9\x84\xd9\x85\xd8\xad\0" /* offset 14080 */ 30902 "\xd9\x85\xd8\xad\xd8\xac\0" /* offset 14087 */ 30903 "\xd9\x85\xd8\xad\xd9\x85\0" /* offset 14094 */ 30904 "\xd9\x85\xd8\xad\xd9\x8a\0" /* offset 14101 */ 30905 "\xd9\x85\xd8\xac\xd8\xad\0" /* offset 14108 */ 30906 "\xd9\x85\xd8\xac\xd9\x85\0" /* offset 14115 */ 30907 "\xd9\x85\xd8\xae\xd8\xac\0" /* offset 14122 */ 30908 "\xd9\x85\xd8\xae\xd9\x85\0" /* offset 14129 */ 30909 "\xd9\x85\xd8\xac\xd8\xae\0" /* offset 14136 */ 30910 "\xd9\x87\xd9\x85\xd8\xac\0" /* offset 14143 */ 30911 "\xd9\x87\xd9\x85\xd9\x85\0" /* offset 14150 */ 30912 "\xd9\x86\xd8\xad\xd9\x85\0" /* offset 14157 */ 30913 "\xd9\x86\xd8\xad\xd9\x89\0" /* offset 14164 */ 30914 "\xd9\x86\xd8\xac\xd9\x85\0" /* offset 14171 */ 30915 "\xd9\x86\xd8\xac\xd9\x89\0" /* offset 14178 */ 30916 "\xd9\x86\xd9\x85\xd9\x8a\0" /* offset 14185 */ 30917 "\xd9\x86\xd9\x85\xd9\x89\0" /* offset 14192 */ 30918 "\xd9\x8a\xd9\x85\xd9\x85\0" /* offset 14199 */ 30919 "\xd8\xa8\xd8\xae\xd9\x8a\0" /* offset 14206 */ 30920 "\xd8\xaa\xd8\xac\xd9\x8a\0" /* offset 14213 */ 30921 "\xd8\xaa\xd8\xac\xd9\x89\0" /* offset 14220 */ 30922 "\xd8\xaa\xd8\xae\xd9\x8a\0" /* offset 14227 */ 30923 "\xd8\xaa\xd8\xae\xd9\x89\0" /* offset 14234 */ 30924 "\xd8\xaa\xd9\x85\xd9\x8a\0" /* offset 14241 */ 30925 "\xd8\xaa\xd9\x85\xd9\x89\0" /* offset 14248 */ 30926 "\xd8\xac\xd9\x85\xd9\x8a\0" /* offset 14255 */ 30927 "\xd8\xac\xd8\xad\xd9\x89\0" /* offset 14262 */ 30928 "\xd8\xac\xd9\x85\xd9\x89\0" /* offset 14269 */ 30929 "\xd8\xb3\xd8\xae\xd9\x89\0" /* offset 14276 */ 30930 "\xd8\xb5\xd8\xad\xd9\x8a\0" /* offset 14283 */ 30931 "\xd8\xb4\xd8\xad\xd9\x8a\0" /* offset 14290 */ 30932 "\xd8\xb6\xd8\xad\xd9\x8a\0" /* offset 14297 */ 30933 "\xd9\x84\xd8\xac\xd9\x8a\0" /* offset 14304 */ 30934 "\xd9\x84\xd9\x85\xd9\x8a\0" /* offset 14311 */ 30935 "\xd9\x8a\xd8\xad\xd9\x8a\0" /* offset 14318 */ 30936 "\xd9\x8a\xd8\xac\xd9\x8a\0" /* offset 14325 */ 30937 "\xd9\x8a\xd9\x85\xd9\x8a\0" /* offset 14332 */ 30938 "\xd9\x85\xd9\x85\xd9\x8a\0" /* offset 14339 */ 30939 "\xd9\x82\xd9\x85\xd9\x8a\0" /* offset 14346 */ 30940 "\xd9\x86\xd8\xad\xd9\x8a\0" /* offset 14353 */ 30941 "\xd8\xb9\xd9\x85\xd9\x8a\0" /* offset 14360 */ 30942 "\xd9\x83\xd9\x85\xd9\x8a\0" /* offset 14367 */ 30943 "\xd9\x86\xd8\xac\xd8\xad\0" /* offset 14374 */ 30944 "\xd9\x85\xd8\xae\xd9\x8a\0" /* offset 14381 */ 30945 "\xd9\x84\xd8\xac\xd9\x85\0" /* offset 14388 */ 30946 "\xd9\x83\xd9\x85\xd9\x85\0" /* offset 14395 */ 30947 "\xd8\xac\xd8\xad\xd9\x8a\0" /* offset 14402 */ 30948 "\xd8\xad\xd8\xac\xd9\x8a\0" /* offset 14409 */ 30949 "\xd9\x85\xd8\xac\xd9\x8a\0" /* offset 14416 */ 30950 "\xd9\x81\xd9\x85\xd9\x8a\0" /* offset 14423 */ 30951 "\xd8\xa8\xd8\xad\xd9\x8a\0" /* offset 14430 */ 30952 "\xd8\xb3\xd8\xae\xd9\x8a\0" /* offset 14437 */ 30953 "\xd9\x86\xd8\xac\xd9\x8a\0" /* offset 14444 */ 30954 "\xd8\xb5\xd9\x84\xdb\x92\0" /* offset 14451 */ 30955 "\xd9\x82\xd9\x84\xdb\x92\0" /* offset 14458 */ 30956 "\xd8\xa7\xd9\x84\xd9\x84\xd9\x87\0" /* offset 14465 */ 30957 "\xd8\xa7\xd9\x83\xd8\xa8\xd8\xb1\0" /* offset 14474 */ 30958 "\xd9\x85\xd8\xad\xd9\x85\xd8\xaf\0" /* offset 14483 */ 30959 "\xd8\xb5\xd9\x84\xd8\xb9\xd9\x85\0" /* offset 14492 */ 30960 "\xd8\xb1\xd8\xb3\xd9\x88\xd9\x84\0" /* offset 14501 */ 30961 "\xd8\xb9\xd9\x84\xd9\x8a\xd9\x87\0" /* offset 14510 */ 30962 "\xd9\x88\xd8\xb3\xd9\x84\xd9\x85\0" /* offset 14519 */ 30963 "\xd8\xb5\xd9\x84\xd9\x89\0" /* offset 14528 */ 30964 "\xd8\xb5\xd9\x84\xd9\x89\x20\xd8\xa7\xd9\x84\xd9\x84\xd9\x87\x20\xd8\xb9\xd9\x84\xd9\x8a\xd9\x87\x20\xd9\x88\xd8\xb3\xd9\x84\xd9\x85\0" /* offset 14535 */ 30965 "\xd8\xac\xd9\x84\x20\xd8\xac\xd9\x84\xd8\xa7\xd9\x84\xd9\x87\0" /* offset 14569 */ 30966 "\xd8\xb1\xdb\x8c\xd8\xa7\xd9\x84\0" /* offset 14585 */ 30967 "\x2c\0" /* offset 14594 */ 30968 "\xe3\x80\x81\0" /* offset 14596 */ 30969 "\xe3\x80\x82\0" /* offset 14600 */ 30970 "\x3a\0" /* offset 14604 */ 30971 "\x21\0" /* offset 14606 */ 30972 "\x3f\0" /* offset 14608 */ 30973 "\xe3\x80\x96\0" /* offset 14610 */ 30974 "\xe3\x80\x97\0" /* offset 14614 */ 30975 "\xe2\x80\x94\0" /* offset 14618 */ 30976 "\xe2\x80\x93\0" /* offset 14622 */ 30977 "\x5f\0" /* offset 14626 */ 30978 "\x7b\0" /* offset 14628 */ 30979 "\x7d\0" /* offset 14630 */ 30980 "\xe3\x80\x94\0" /* offset 14632 */ 30981 "\xe3\x80\x95\0" /* offset 14636 */ 30982 "\xe3\x80\x90\0" /* offset 14640 */ 30983 "\xe3\x80\x91\0" /* offset 14644 */ 30984 "\xe3\x80\x8a\0" /* offset 14648 */ 30985 "\xe3\x80\x8b\0" /* offset 14652 */ 30986 "\xe3\x80\x8c\0" /* offset 14656 */ 30987 "\xe3\x80\x8d\0" /* offset 14660 */ 30988 "\xe3\x80\x8e\0" /* offset 14664 */ 30989 "\xe3\x80\x8f\0" /* offset 14668 */ 30990 "\x5b\0" /* offset 14672 */ 30991 "\x5d\0" /* offset 14674 */ 30992 "\x23\0" /* offset 14676 */ 30993 "\x26\0" /* offset 14678 */ 30994 "\x2a\0" /* offset 14680 */ 30995 "\x2d\0" /* offset 14682 */ 30996 "\x3c\0" /* offset 14684 */ 30997 "\x3e\0" /* offset 14686 */ 30998 "\x5c\0" /* offset 14688 */ 30999 "\x24\0" /* offset 14690 */ 31000 "\x25\0" /* offset 14692 */ 31001 "\x40\0" /* offset 14694 */ 31002 "\x20\xd9\x8b\0" /* offset 14696 */ 31003 "\xd9\x80\xd9\x8b\0" /* offset 14700 */ 31004 "\x20\xd9\x8c\0" /* offset 14705 */ 31005 "\x20\xd9\x8d\0" /* offset 14709 */ 31006 "\x20\xd9\x8e\0" /* offset 14713 */ 31007 "\xd9\x80\xd9\x8e\0" /* offset 14717 */ 31008 "\x20\xd9\x8f\0" /* offset 14722 */ 31009 "\xd9\x80\xd9\x8f\0" /* offset 14726 */ 31010 "\x20\xd9\x90\0" /* offset 14731 */ 31011 "\xd9\x80\xd9\x90\0" /* offset 14735 */ 31012 "\x20\xd9\x91\0" /* offset 14740 */ 31013 "\xd9\x80\xd9\x91\0" /* offset 14744 */ 31014 "\x20\xd9\x92\0" /* offset 14749 */ 31015 "\xd9\x80\xd9\x92\0" /* offset 14753 */ 31016 "\xd8\xa1\0" /* offset 14758 */ 31017 "\xd8\xa7\0" /* offset 14761 */ 31018 "\xd8\xa8\0" /* offset 14764 */ 31019 "\xd8\xa9\0" /* offset 14767 */ 31020 "\xd8\xaa\0" /* offset 14770 */ 31021 "\xd8\xab\0" /* offset 14773 */ 31022 "\xd8\xac\0" /* offset 14776 */ 31023 "\xd8\xad\0" /* offset 14779 */ 31024 "\xd8\xae\0" /* offset 14782 */ 31025 "\xd8\xaf\0" /* offset 14785 */ 31026 "\xd8\xb0\0" /* offset 14788 */ 31027 "\xd8\xb1\0" /* offset 14791 */ 31028 "\xd8\xb2\0" /* offset 14794 */ 31029 "\xd8\xb3\0" /* offset 14797 */ 31030 "\xd8\xb4\0" /* offset 14800 */ 31031 "\xd8\xb5\0" /* offset 14803 */ 31032 "\xd8\xb6\0" /* offset 14806 */ 31033 "\xd8\xb7\0" /* offset 14809 */ 31034 "\xd8\xb8\0" /* offset 14812 */ 31035 "\xd8\xb9\0" /* offset 14815 */ 31036 "\xd8\xba\0" /* offset 14818 */ 31037 "\xd9\x81\0" /* offset 14821 */ 31038 "\xd9\x82\0" /* offset 14824 */ 31039 "\xd9\x83\0" /* offset 14827 */ 31040 "\xd9\x84\0" /* offset 14830 */ 31041 "\xd9\x85\0" /* offset 14833 */ 31042 "\xd9\x86\0" /* offset 14836 */ 31043 "\xd9\x87\0" /* offset 14839 */ 31044 "\xd9\x88\0" /* offset 14842 */ 31045 "\xd9\x8a\0" /* offset 14845 */ 31046 "\xd9\x84\xd8\xa7\xd9\x93\0" /* offset 14848 */ 31047 "\xd9\x84\xd8\xa7\xd9\x94\0" /* offset 14855 */ 31048 "\xd9\x84\xd8\xa7\xd9\x95\0" /* offset 14862 */ 31049 "\xd9\x84\xd8\xa7\0" /* offset 14869 */ 31050 "\x22\0" /* offset 14874 */ 31051 "\x27\0" /* offset 14876 */ 31052 "\x2f\0" /* offset 14878 */ 31053 "\x5e\0" /* offset 14880 */ 31054 "\x7c\0" /* offset 14882 */ 31055 "\x7e\0" /* offset 14884 */ 31056 "\xe2\xa6\x85\0" /* offset 14886 */ 31057 "\xe2\xa6\x86\0" /* offset 14890 */ 31058 "\xe3\x83\xbb\0" /* offset 14894 */ 31059 "\xe3\x82\xa1\0" /* offset 14898 */ 31060 "\xe3\x82\xa3\0" /* offset 14902 */ 31061 "\xe3\x82\xa5\0" /* offset 14906 */ 31062 "\xe3\x82\xa7\0" /* offset 14910 */ 31063 "\xe3\x82\xa9\0" /* offset 14914 */ 31064 "\xe3\x83\xa3\0" /* offset 14918 */ 31065 "\xe3\x83\xa5\0" /* offset 14922 */ 31066 "\xe3\x83\xa7\0" /* offset 14926 */ 31067 "\xe3\x83\x83\0" /* offset 14930 */ 31068 "\xe3\x83\xbc\0" /* offset 14934 */ 31069 "\xe3\x83\xb3\0" /* offset 14938 */ 31070 "\xe3\x82\x99\0" /* offset 14942 */ 31071 "\xe3\x82\x9a\0" /* offset 14946 */ 31072 "\xc2\xa2\0" /* offset 14950 */ 31073 "\xc2\xa3\0" /* offset 14953 */ 31074 "\xc2\xac\0" /* offset 14956 */ 31075 "\xc2\xa6\0" /* offset 14959 */ 31076 "\xc2\xa5\0" /* offset 14962 */ 31077 "\xe2\x82\xa9\0" /* offset 14965 */ 31078 "\xe2\x94\x82\0" /* offset 14969 */ 31079 "\xe2\x86\x90\0" /* offset 14973 */ 31080 "\xe2\x86\x91\0" /* offset 14977 */ 31081 "\xe2\x86\x92\0" /* offset 14981 */ 31082 "\xe2\x86\x93\0" /* offset 14985 */ 31083 "\xe2\x96\xa0\0" /* offset 14989 */ 31084 "\xe2\x97\x8b\0" /* offset 14993 */ 31085 "\xf0\x91\x82\x99\xf0\x91\x82\xba\0" /* offset 14997 */ 31086 "\xf0\x91\x82\x9b\xf0\x91\x82\xba\0" /* offset 15006 */ 31087 "\xf0\x91\x82\xa5\xf0\x91\x82\xba\0" /* offset 15015 */ 31088 "\xf0\x91\x84\xb1\xf0\x91\x84\xa7\0" /* offset 15024 */ 31089 "\xf0\x91\x84\xb2\xf0\x91\x84\xa7\0" /* offset 15033 */ 31090 "\xf0\x91\x8d\x87\xf0\x91\x8c\xbe\0" /* offset 15042 */ 31091 "\xf0\x91\x8d\x87\xf0\x91\x8d\x97\0" /* offset 15051 */ 31092 "\xf0\x91\x92\xb9\xf0\x91\x92\xba\0" /* offset 15060 */ 31093 "\xf0\x91\x92\xb9\xf0\x91\x92\xb0\0" /* offset 15069 */ 31094 "\xf0\x91\x92\xb9\xf0\x91\x92\xbd\0" /* offset 15078 */ 31095 "\xf0\x91\x96\xb8\xf0\x91\x96\xaf\0" /* offset 15087 */ 31096 "\xf0\x91\x96\xb9\xf0\x91\x96\xaf\0" /* offset 15096 */ 31097 "\xf0\x9d\x85\x97\xf0\x9d\x85\xa5\0" /* offset 15105 */ 31098 "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\0" /* offset 15114 */ 31099 "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xae\0" /* offset 15123 */ 31100 "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xaf\0" /* offset 15136 */ 31101 "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xb0\0" /* offset 15149 */ 31102 "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xb1\0" /* offset 15162 */ 31103 "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xb2\0" /* offset 15175 */ 31104 "\xf0\x9d\x86\xb9\xf0\x9d\x85\xa5\0" /* offset 15188 */ 31105 "\xf0\x9d\x86\xba\xf0\x9d\x85\xa5\0" /* offset 15197 */ 31106 "\xf0\x9d\x86\xb9\xf0\x9d\x85\xa5\xf0\x9d\x85\xae\0" /* offset 15206 */ 31107 "\xf0\x9d\x86\xba\xf0\x9d\x85\xa5\xf0\x9d\x85\xae\0" /* offset 15219 */ 31108 "\xf0\x9d\x86\xb9\xf0\x9d\x85\xa5\xf0\x9d\x85\xaf\0" /* offset 15232 */ 31109 "\xf0\x9d\x86\xba\xf0\x9d\x85\xa5\xf0\x9d\x85\xaf\0" /* offset 15245 */ 31110 "\xc4\xb1\0" /* offset 15258 */ 31111 "\xc8\xb7\0" /* offset 15261 */ 31112 "\xce\x91\0" /* offset 15264 */ 31113 "\xce\x92\0" /* offset 15267 */ 31114 "\xce\x94\0" /* offset 15270 */ 31115 "\xce\x95\0" /* offset 15273 */ 31116 "\xce\x96\0" /* offset 15276 */ 31117 "\xce\x97\0" /* offset 15279 */ 31118 "\xce\x99\0" /* offset 15282 */ 31119 "\xce\x9a\0" /* offset 15285 */ 31120 "\xce\x9b\0" /* offset 15288 */ 31121 "\xce\x9c\0" /* offset 15291 */ 31122 "\xce\x9d\0" /* offset 15294 */ 31123 "\xce\x9e\0" /* offset 15297 */ 31124 "\xce\x9f\0" /* offset 15300 */ 31125 "\xce\xa1\0" /* offset 15303 */ 31126 "\xce\xa4\0" /* offset 15306 */ 31127 "\xce\xa6\0" /* offset 15309 */ 31128 "\xce\xa7\0" /* offset 15312 */ 31129 "\xce\xa8\0" /* offset 15315 */ 31130 "\xe2\x88\x87\0" /* offset 15318 */ 31131 "\xce\xb1\0" /* offset 15322 */ 31132 "\xce\xb6\0" /* offset 15325 */ 31133 "\xce\xb7\0" /* offset 15328 */ 31134 "\xce\xbb\0" /* offset 15331 */ 31135 "\xce\xbd\0" /* offset 15334 */ 31136 "\xce\xbe\0" /* offset 15337 */ 31137 "\xce\xbf\0" /* offset 15340 */ 31138 "\xcf\x83\0" /* offset 15343 */ 31139 "\xcf\x84\0" /* offset 15346 */ 31140 "\xcf\x85\0" /* offset 15349 */ 31141 "\xcf\x88\0" /* offset 15352 */ 31142 "\xcf\x89\0" /* offset 15355 */ 31143 "\xe2\x88\x82\0" /* offset 15358 */ 31144 "\xcf\x9c\0" /* offset 15362 */ 31145 "\xcf\x9d\0" /* offset 15365 */ 31146 "\xd9\xae\0" /* offset 15368 */ 31147 "\xda\xa1\0" /* offset 15371 */ 31148 "\xd9\xaf\0" /* offset 15374 */ 31149 "\x30\x2e\0" /* offset 15377 */ 31150 "\x30\x2c\0" /* offset 15380 */ 31151 "\x31\x2c\0" /* offset 15383 */ 31152 "\x32\x2c\0" /* offset 15386 */ 31153 "\x33\x2c\0" /* offset 15389 */ 31154 "\x34\x2c\0" /* offset 15392 */ 31155 "\x35\x2c\0" /* offset 15395 */ 31156 "\x36\x2c\0" /* offset 15398 */ 31157 "\x37\x2c\0" /* offset 15401 */ 31158 "\x38\x2c\0" /* offset 15404 */ 31159 "\x39\x2c\0" /* offset 15407 */ 31160 "\x28\x41\x29\0" /* offset 15410 */ 31161 "\x28\x42\x29\0" /* offset 15414 */ 31162 "\x28\x43\x29\0" /* offset 15418 */ 31163 "\x28\x44\x29\0" /* offset 15422 */ 31164 "\x28\x45\x29\0" /* offset 15426 */ 31165 "\x28\x46\x29\0" /* offset 15430 */ 31166 "\x28\x47\x29\0" /* offset 15434 */ 31167 "\x28\x48\x29\0" /* offset 15438 */ 31168 "\x28\x49\x29\0" /* offset 15442 */ 31169 "\x28\x4a\x29\0" /* offset 15446 */ 31170 "\x28\x4b\x29\0" /* offset 15450 */ 31171 "\x28\x4c\x29\0" /* offset 15454 */ 31172 "\x28\x4d\x29\0" /* offset 15458 */ 31173 "\x28\x4e\x29\0" /* offset 15462 */ 31174 "\x28\x4f\x29\0" /* offset 15466 */ 31175 "\x28\x50\x29\0" /* offset 15470 */ 31176 "\x28\x51\x29\0" /* offset 15474 */ 31177 "\x28\x52\x29\0" /* offset 15478 */ 31178 "\x28\x53\x29\0" /* offset 15482 */ 31179 "\x28\x54\x29\0" /* offset 15486 */ 31180 "\x28\x55\x29\0" /* offset 15490 */ 31181 "\x28\x56\x29\0" /* offset 15494 */ 31182 "\x28\x57\x29\0" /* offset 15498 */ 31183 "\x28\x58\x29\0" /* offset 15502 */ 31184 "\x28\x59\x29\0" /* offset 15506 */ 31185 "\x28\x5a\x29\0" /* offset 15510 */ 31186 "\xe3\x80\x94\x53\xe3\x80\x95\0" /* offset 15514 */ 31187 "\x43\x44\0" /* offset 15522 */ 31188 "\x57\x5a\0" /* offset 15525 */ 31189 "\x48\x56\0" /* offset 15528 */ 31190 "\x53\x44\0" /* offset 15531 */ 31191 "\x53\x53\0" /* offset 15534 */ 31192 "\x50\x50\x56\0" /* offset 15537 */ 31193 "\x57\x43\0" /* offset 15541 */ 31194 "\x4d\x43\0" /* offset 15544 */ 31195 "\x4d\x44\0" /* offset 15547 */ 31196 "\x44\x4a\0" /* offset 15550 */ 31197 "\xe3\x81\xbb\xe3\x81\x8b\0" /* offset 15553 */ 31198 "\xe3\x82\xb3\xe3\x82\xb3\0" /* offset 15560 */ 31199 "\xe5\xad\x97\0" /* offset 15567 */ 31200 "\xe5\x8f\x8c\0" /* offset 15571 */ 31201 "\xe5\xa4\x9a\0" /* offset 15575 */ 31202 "\xe8\xa7\xa3\0" /* offset 15579 */ 31203 "\xe4\xba\xa4\0" /* offset 15583 */ 31204 "\xe6\x98\xa0\0" /* offset 15587 */ 31205 "\xe7\x84\xa1\0" /* offset 15591 */ 31206 "\xe5\x89\x8d\0" /* offset 15595 */ 31207 "\xe5\xbe\x8c\0" /* offset 15599 */ 31208 "\xe5\x86\x8d\0" /* offset 15603 */ 31209 "\xe6\x96\xb0\0" /* offset 15607 */ 31210 "\xe5\x88\x9d\0" /* offset 15611 */ 31211 "\xe7\xb5\x82\0" /* offset 15615 */ 31212 "\xe8\xb2\xa9\0" /* offset 15619 */ 31213 "\xe5\xa3\xb0\0" /* offset 15623 */ 31214 "\xe5\x90\xb9\0" /* offset 15627 */ 31215 "\xe6\xbc\x94\0" /* offset 15631 */ 31216 "\xe6\x8a\x95\0" /* offset 15635 */ 31217 "\xe6\x8d\x95\0" /* offset 15639 */ 31218 "\xe9\x81\x8a\0" /* offset 15643 */ 31219 "\xe6\x8c\x87\0" /* offset 15647 */ 31220 "\xe6\x89\x93\0" /* offset 15651 */ 31221 "\xe7\xa6\x81\0" /* offset 15655 */ 31222 "\xe7\xa9\xba\0" /* offset 15659 */ 31223 "\xe5\x90\x88\0" /* offset 15663 */ 31224 "\xe6\xba\x80\0" /* offset 15667 */ 31225 "\xe7\x94\xb3\0" /* offset 15671 */ 31226 "\xe5\x89\xb2\0" /* offset 15675 */ 31227 "\xe5\x96\xb6\0" /* offset 15679 */ 31228 "\xe9\x85\x8d\0" /* offset 15683 */ 31229 "\xe3\x80\x94\xe6\x9c\xac\xe3\x80\x95\0" /* offset 15687 */ 31230 "\xe3\x80\x94\xe4\xb8\x89\xe3\x80\x95\0" /* offset 15697 */ 31231 "\xe3\x80\x94\xe4\xba\x8c\xe3\x80\x95\0" /* offset 15707 */ 31232 "\xe3\x80\x94\xe5\xae\x89\xe3\x80\x95\0" /* offset 15717 */ 31233 "\xe3\x80\x94\xe7\x82\xb9\xe3\x80\x95\0" /* offset 15727 */ 31234 "\xe3\x80\x94\xe6\x89\x93\xe3\x80\x95\0" /* offset 15737 */ 31235 "\xe3\x80\x94\xe7\x9b\x97\xe3\x80\x95\0" /* offset 15747 */ 31236 "\xe3\x80\x94\xe5\x8b\x9d\xe3\x80\x95\0" /* offset 15757 */ 31237 "\xe3\x80\x94\xe6\x95\x97\xe3\x80\x95\0" /* offset 15767 */ 31238 "\xe5\xbe\x97\0" /* offset 15777 */ 31239 "\xe5\x8f\xaf\0" /* offset 15781 */ 31240 "\xe4\xb8\xbd\0" /* offset 15785 */ 31241 "\xe4\xb8\xb8\0" /* offset 15789 */ 31242 "\xe4\xb9\x81\0" /* offset 15793 */ 31243 "\xf0\xa0\x84\xa2\0" /* offset 15797 */ 31244 "\xe4\xbd\xa0\0" /* offset 15802 */ 31245 "\xe4\xbe\xbb\0" /* offset 15806 */ 31246 "\xe5\x80\x82\0" /* offset 15810 */ 31247 "\xe5\x81\xba\0" /* offset 15814 */ 31248 "\xe5\x82\x99\0" /* offset 15818 */ 31249 "\xe5\x83\x8f\0" /* offset 15822 */ 31250 "\xe3\x92\x9e\0" /* offset 15826 */ 31251 "\xf0\xa0\x98\xba\0" /* offset 15830 */ 31252 "\xe5\x85\x94\0" /* offset 15835 */ 31253 "\xe5\x85\xa4\0" /* offset 15839 */ 31254 "\xe5\x85\xb7\0" /* offset 15843 */ 31255 "\xf0\xa0\x94\x9c\0" /* offset 15847 */ 31256 "\xe3\x92\xb9\0" /* offset 15852 */ 31257 "\xe5\x85\xa7\0" /* offset 15856 */ 31258 "\xf0\xa0\x95\x8b\0" /* offset 15860 */ 31259 "\xe5\x86\x97\0" /* offset 15865 */ 31260 "\xe5\x86\xa4\0" /* offset 15869 */ 31261 "\xe4\xbb\x8c\0" /* offset 15873 */ 31262 "\xe5\x86\xac\0" /* offset 15877 */ 31263 "\xf0\xa9\x87\x9f\0" /* offset 15881 */ 31264 "\xe5\x88\x83\0" /* offset 15886 */ 31265 "\xe3\x93\x9f\0" /* offset 15890 */ 31266 "\xe5\x88\xbb\0" /* offset 15894 */ 31267 "\xe5\x89\x86\0" /* offset 15898 */ 31268 "\xe5\x89\xb7\0" /* offset 15902 */ 31269 "\xe3\x94\x95\0" /* offset 15906 */ 31270 "\xe5\x8c\x85\0" /* offset 15910 */ 31271 "\xe5\x8c\x86\0" /* offset 15914 */ 31272 "\xe5\x8d\x89\0" /* offset 15918 */ 31273 "\xe5\x8d\x9a\0" /* offset 15922 */ 31274 "\xe5\x8d\xb3\0" /* offset 15926 */ 31275 "\xe5\x8d\xbd\0" /* offset 15930 */ 31276 "\xe5\x8d\xbf\0" /* offset 15934 */ 31277 "\xf0\xa0\xa8\xac\0" /* offset 15938 */ 31278 "\xe7\x81\xb0\0" /* offset 15943 */ 31279 "\xe5\x8f\x8a\0" /* offset 15947 */ 31280 "\xe5\x8f\x9f\0" /* offset 15951 */ 31281 "\xf0\xa0\xad\xa3\0" /* offset 15955 */ 31282 "\xe5\x8f\xab\0" /* offset 15960 */ 31283 "\xe5\x8f\xb1\0" /* offset 15964 */ 31284 "\xe5\x90\x86\0" /* offset 15968 */ 31285 "\xe5\x92\x9e\0" /* offset 15972 */ 31286 "\xe5\x90\xb8\0" /* offset 15976 */ 31287 "\xe5\x91\x88\0" /* offset 15980 */ 31288 "\xe5\x91\xa8\0" /* offset 15984 */ 31289 "\xe5\x92\xa2\0" /* offset 15988 */ 31290 "\xe5\x93\xb6\0" /* offset 15992 */ 31291 "\xe5\x94\x90\0" /* offset 15996 */ 31292 "\xe5\x95\x93\0" /* offset 16000 */ 31293 "\xe5\x95\xa3\0" /* offset 16004 */ 31294 "\xe5\x96\x84\0" /* offset 16008 */ 31295 "\xe5\x96\xab\0" /* offset 16012 */ 31296 "\xe5\x96\xb3\0" /* offset 16016 */ 31297 "\xe5\x97\x82\0" /* offset 16020 */ 31298 "\xe5\x9c\x96\0" /* offset 16024 */ 31299 "\xe5\x9c\x97\0" /* offset 16028 */ 31300 "\xe5\x99\x91\0" /* offset 16032 */ 31301 "\xe5\x99\xb4\0" /* offset 16036 */ 31302 "\xe5\xa3\xae\0" /* offset 16040 */ 31303 "\xe5\x9f\x8e\0" /* offset 16044 */ 31304 "\xe5\x9f\xb4\0" /* offset 16048 */ 31305 "\xe5\xa0\x8d\0" /* offset 16052 */ 31306 "\xe5\x9e\x8b\0" /* offset 16056 */ 31307 "\xe5\xa0\xb2\0" /* offset 16060 */ 31308 "\xe5\xa0\xb1\0" /* offset 16064 */ 31309 "\xe5\xa2\xac\0" /* offset 16068 */ 31310 "\xf0\xa1\x93\xa4\0" /* offset 16072 */ 31311 "\xe5\xa3\xb2\0" /* offset 16077 */ 31312 "\xe5\xa3\xb7\0" /* offset 16081 */ 31313 "\xe5\xa4\x86\0" /* offset 16085 */ 31314 "\xe5\xa4\xa2\0" /* offset 16089 */ 31315 "\xe5\xa5\xa2\0" /* offset 16093 */ 31316 "\xf0\xa1\x9a\xa8\0" /* offset 16097 */ 31317 "\xf0\xa1\x9b\xaa\0" /* offset 16102 */ 31318 "\xe5\xa7\xac\0" /* offset 16107 */ 31319 "\xe5\xa8\x9b\0" /* offset 16111 */ 31320 "\xe5\xa8\xa7\0" /* offset 16115 */ 31321 "\xe5\xa7\x98\0" /* offset 16119 */ 31322 "\xe5\xa9\xa6\0" /* offset 16123 */ 31323 "\xe3\x9b\xae\0" /* offset 16127 */ 31324 "\xe3\x9b\xbc\0" /* offset 16131 */ 31325 "\xe5\xac\x88\0" /* offset 16135 */ 31326 "\xe5\xac\xbe\0" /* offset 16139 */ 31327 "\xf0\xa1\xa7\x88\0" /* offset 16143 */ 31328 "\xe5\xaf\x83\0" /* offset 16148 */ 31329 "\xe5\xaf\x98\0" /* offset 16152 */ 31330 "\xe5\xaf\xb3\0" /* offset 16156 */ 31331 "\xf0\xa1\xac\x98\0" /* offset 16160 */ 31332 "\xe5\xaf\xbf\0" /* offset 16165 */ 31333 "\xe5\xb0\x86\0" /* offset 16169 */ 31334 "\xe5\xbd\x93\0" /* offset 16173 */ 31335 "\xe3\x9e\x81\0" /* offset 16177 */ 31336 "\xe5\xb1\xa0\0" /* offset 16181 */ 31337 "\xe5\xb3\x80\0" /* offset 16185 */ 31338 "\xe5\xb2\x8d\0" /* offset 16189 */ 31339 "\xf0\xa1\xb7\xa4\0" /* offset 16193 */ 31340 "\xe5\xb5\x83\0" /* offset 16198 */ 31341 "\xf0\xa1\xb7\xa6\0" /* offset 16202 */ 31342 "\xe5\xb5\xae\0" /* offset 16207 */ 31343 "\xe5\xb5\xab\0" /* offset 16211 */ 31344 "\xe5\xb5\xbc\0" /* offset 16215 */ 31345 "\xe5\xb7\xa1\0" /* offset 16219 */ 31346 "\xe5\xb7\xa2\0" /* offset 16223 */ 31347 "\xe3\xa0\xaf\0" /* offset 16227 */ 31348 "\xe5\xb7\xbd\0" /* offset 16231 */ 31349 "\xe5\xb8\xa8\0" /* offset 16235 */ 31350 "\xe5\xb8\xbd\0" /* offset 16239 */ 31351 "\xe5\xb9\xa9\0" /* offset 16243 */ 31352 "\xe3\xa1\xa2\0" /* offset 16247 */ 31353 "\xf0\xa2\x86\x83\0" /* offset 16251 */ 31354 "\xe3\xa1\xbc\0" /* offset 16256 */ 31355 "\xe5\xba\xb0\0" /* offset 16260 */ 31356 "\xe5\xba\xb3\0" /* offset 16264 */ 31357 "\xe5\xba\xb6\0" /* offset 16268 */ 31358 "\xf0\xaa\x8e\x92\0" /* offset 16272 */ 31359 "\xf0\xa2\x8c\xb1\0" /* offset 16277 */ 31360 "\xe8\x88\x81\0" /* offset 16282 */ 31361 "\xe5\xbc\xa2\0" /* offset 16286 */ 31362 "\xe3\xa3\x87\0" /* offset 16290 */ 31363 "\xf0\xa3\x8a\xb8\0" /* offset 16294 */ 31364 "\xf0\xa6\x87\x9a\0" /* offset 16299 */ 31365 "\xe5\xbd\xa2\0" /* offset 16304 */ 31366 "\xe5\xbd\xab\0" /* offset 16308 */ 31367 "\xe3\xa3\xa3\0" /* offset 16312 */ 31368 "\xe5\xbe\x9a\0" /* offset 16316 */ 31369 "\xe5\xbf\x8d\0" /* offset 16320 */ 31370 "\xe5\xbf\x97\0" /* offset 16324 */ 31371 "\xe5\xbf\xb9\0" /* offset 16328 */ 31372 "\xe6\x82\x81\0" /* offset 16332 */ 31373 "\xe3\xa4\xba\0" /* offset 16336 */ 31374 "\xe3\xa4\x9c\0" /* offset 16340 */ 31375 "\xf0\xa2\x9b\x94\0" /* offset 16344 */ 31376 "\xe6\x83\x87\0" /* offset 16349 */ 31377 "\xe6\x85\x88\0" /* offset 16353 */ 31378 "\xe6\x85\x8c\0" /* offset 16357 */ 31379 "\xe6\x85\xba\0" /* offset 16361 */ 31380 "\xe6\x86\xb2\0" /* offset 16365 */ 31381 "\xe6\x86\xa4\0" /* offset 16369 */ 31382 "\xe6\x86\xaf\0" /* offset 16373 */ 31383 "\xe6\x87\x9e\0" /* offset 16377 */ 31384 "\xe6\x88\x90\0" /* offset 16381 */ 31385 "\xe6\x88\x9b\0" /* offset 16385 */ 31386 "\xe6\x89\x9d\0" /* offset 16389 */ 31387 "\xe6\x8a\xb1\0" /* offset 16393 */ 31388 "\xe6\x8b\x94\0" /* offset 16397 */ 31389 "\xe6\x8d\x90\0" /* offset 16401 */ 31390 "\xf0\xa2\xac\x8c\0" /* offset 16405 */ 31391 "\xe6\x8c\xbd\0" /* offset 16410 */ 31392 "\xe6\x8b\xbc\0" /* offset 16414 */ 31393 "\xe6\x8d\xa8\0" /* offset 16418 */ 31394 "\xe6\x8e\x83\0" /* offset 16422 */ 31395 "\xe6\x8f\xa4\0" /* offset 16426 */ 31396 "\xf0\xa2\xaf\xb1\0" /* offset 16430 */ 31397 "\xe6\x90\xa2\0" /* offset 16435 */ 31398 "\xe6\x8f\x85\0" /* offset 16439 */ 31399 "\xe6\x8e\xa9\0" /* offset 16443 */ 31400 "\xe3\xa8\xae\0" /* offset 16447 */ 31401 "\xe6\x91\xa9\0" /* offset 16451 */ 31402 "\xe6\x91\xbe\0" /* offset 16455 */ 31403 "\xe6\x92\x9d\0" /* offset 16459 */ 31404 "\xe6\x91\xb7\0" /* offset 16463 */ 31405 "\xe3\xa9\xac\0" /* offset 16467 */ 31406 "\xe6\x95\xac\0" /* offset 16471 */ 31407 "\xf0\xa3\x80\x8a\0" /* offset 16475 */ 31408 "\xe6\x97\xa3\0" /* offset 16480 */ 31409 "\xe6\x9b\xb8\0" /* offset 16484 */ 31410 "\xe6\x99\x89\0" /* offset 16488 */ 31411 "\xe3\xac\x99\0" /* offset 16492 */ 31412 "\xe3\xac\x88\0" /* offset 16496 */ 31413 "\xe3\xab\xa4\0" /* offset 16500 */ 31414 "\xe5\x86\x92\0" /* offset 16504 */ 31415 "\xe5\x86\x95\0" /* offset 16508 */ 31416 "\xe6\x9c\x80\0" /* offset 16512 */ 31417 "\xe6\x9a\x9c\0" /* offset 16516 */ 31418 "\xe8\x82\xad\0" /* offset 16520 */ 31419 "\xe4\x8f\x99\0" /* offset 16524 */ 31420 "\xe6\x9c\xa1\0" /* offset 16528 */ 31421 "\xe6\x9d\x9e\0" /* offset 16532 */ 31422 "\xe6\x9d\x93\0" /* offset 16536 */ 31423 "\xf0\xa3\x8f\x83\0" /* offset 16540 */ 31424 "\xe3\xad\x89\0" /* offset 16545 */ 31425 "\xe6\x9f\xba\0" /* offset 16549 */ 31426 "\xe6\x9e\x85\0" /* offset 16553 */ 31427 "\xe6\xa1\x92\0" /* offset 16557 */ 31428 "\xf0\xa3\x91\xad\0" /* offset 16561 */ 31429 "\xe6\xa2\x8e\0" /* offset 16566 */ 31430 "\xe6\xa0\x9f\0" /* offset 16570 */ 31431 "\xe6\xa4\x94\0" /* offset 16574 */ 31432 "\xe6\xa5\x82\0" /* offset 16578 */ 31433 "\xe6\xa6\xa3\0" /* offset 16582 */ 31434 "\xe6\xa7\xaa\0" /* offset 16586 */ 31435 "\xe6\xaa\xa8\0" /* offset 16590 */ 31436 "\xf0\xa3\x9a\xa3\0" /* offset 16594 */ 31437 "\xe6\xab\x9b\0" /* offset 16599 */ 31438 "\xe3\xb0\x98\0" /* offset 16603 */ 31439 "\xe6\xac\xa1\0" /* offset 16607 */ 31440 "\xf0\xa3\xa2\xa7\0" /* offset 16611 */ 31441 "\xe6\xad\x94\0" /* offset 16616 */ 31442 "\xe3\xb1\x8e\0" /* offset 16620 */ 31443 "\xe6\xad\xb2\0" /* offset 16624 */ 31444 "\xe6\xae\x9f\0" /* offset 16628 */ 31445 "\xe6\xae\xbb\0" /* offset 16632 */ 31446 "\xf0\xa3\xaa\x8d\0" /* offset 16636 */ 31447 "\xf0\xa1\xb4\x8b\0" /* offset 16641 */ 31448 "\xf0\xa3\xab\xba\0" /* offset 16646 */ 31449 "\xe6\xb1\x8e\0" /* offset 16651 */ 31450 "\xf0\xa3\xb2\xbc\0" /* offset 16655 */ 31451 "\xe6\xb2\xbf\0" /* offset 16660 */ 31452 "\xe6\xb3\x8d\0" /* offset 16664 */ 31453 "\xe6\xb1\xa7\0" /* offset 16668 */ 31454 "\xe6\xb4\x96\0" /* offset 16672 */ 31455 "\xe6\xb4\xbe\0" /* offset 16676 */ 31456 "\xe6\xb5\xa9\0" /* offset 16680 */ 31457 "\xe6\xb5\xb8\0" /* offset 16684 */ 31458 "\xe6\xb6\x85\0" /* offset 16688 */ 31459 "\xf0\xa3\xb4\x9e\0" /* offset 16692 */ 31460 "\xe6\xb4\xb4\0" /* offset 16697 */ 31461 "\xe6\xb8\xaf\0" /* offset 16701 */ 31462 "\xe6\xb9\xae\0" /* offset 16705 */ 31463 "\xe3\xb4\xb3\0" /* offset 16709 */ 31464 "\xe6\xbb\x87\0" /* offset 16713 */ 31465 "\xf0\xa3\xbb\x91\0" /* offset 16717 */ 31466 "\xe6\xb7\xb9\0" /* offset 16722 */ 31467 "\xe6\xbd\xae\0" /* offset 16726 */ 31468 "\xf0\xa3\xbd\x9e\0" /* offset 16730 */ 31469 "\xf0\xa3\xbe\x8e\0" /* offset 16735 */ 31470 "\xe6\xbf\x86\0" /* offset 16740 */ 31471 "\xe7\x80\xb9\0" /* offset 16744 */ 31472 "\xe7\x80\x9b\0" /* offset 16748 */ 31473 "\xe3\xb6\x96\0" /* offset 16752 */ 31474 "\xe7\x81\x8a\0" /* offset 16756 */ 31475 "\xe7\x81\xbd\0" /* offset 16760 */ 31476 "\xe7\x81\xb7\0" /* offset 16764 */ 31477 "\xe7\x82\xad\0" /* offset 16768 */ 31478 "\xf0\xa0\x94\xa5\0" /* offset 16772 */ 31479 "\xe7\x85\x85\0" /* offset 16777 */ 31480 "\xf0\xa4\x89\xa3\0" /* offset 16781 */ 31481 "\xe7\x86\x9c\0" /* offset 16786 */ 31482 "\xf0\xa4\x8e\xab\0" /* offset 16790 */ 31483 "\xe7\x88\xa8\0" /* offset 16795 */ 31484 "\xe7\x89\x90\0" /* offset 16799 */ 31485 "\xf0\xa4\x98\x88\0" /* offset 16803 */ 31486 "\xe7\x8a\x80\0" /* offset 16808 */ 31487 "\xe7\x8a\x95\0" /* offset 16812 */ 31488 "\xf0\xa4\x9c\xb5\0" /* offset 16816 */ 31489 "\xf0\xa4\xa0\x94\0" /* offset 16821 */ 31490 "\xe7\x8d\xba\0" /* offset 16826 */ 31491 "\xe7\x8e\x8b\0" /* offset 16830 */ 31492 "\xe3\xba\xac\0" /* offset 16834 */ 31493 "\xe7\x8e\xa5\0" /* offset 16838 */ 31494 "\xe3\xba\xb8\0" /* offset 16842 */ 31495 "\xe7\x91\x87\0" /* offset 16846 */ 31496 "\xe7\x91\x9c\0" /* offset 16850 */ 31497 "\xe7\x92\x85\0" /* offset 16854 */ 31498 "\xe7\x93\x8a\0" /* offset 16858 */ 31499 "\xe3\xbc\x9b\0" /* offset 16862 */ 31500 "\xe7\x94\xa4\0" /* offset 16866 */ 31501 "\xf0\xa4\xb0\xb6\0" /* offset 16870 */ 31502 "\xe7\x94\xbe\0" /* offset 16875 */ 31503 "\xf0\xa4\xb2\x92\0" /* offset 16879 */ 31504 "\xf0\xa2\x86\x9f\0" /* offset 16884 */ 31505 "\xe7\x98\x90\0" /* offset 16889 */ 31506 "\xf0\xa4\xbe\xa1\0" /* offset 16893 */ 31507 "\xf0\xa4\xbe\xb8\0" /* offset 16898 */ 31508 "\xf0\xa5\x81\x84\0" /* offset 16903 */ 31509 "\xe3\xbf\xbc\0" /* offset 16908 */ 31510 "\xe4\x80\x88\0" /* offset 16912 */ 31511 "\xf0\xa5\x83\xb3\0" /* offset 16916 */ 31512 "\xf0\xa5\x83\xb2\0" /* offset 16921 */ 31513 "\xf0\xa5\x84\x99\0" /* offset 16926 */ 31514 "\xf0\xa5\x84\xb3\0" /* offset 16931 */ 31515 "\xe7\x9c\x9e\0" /* offset 16936 */ 31516 "\xe7\x9c\x9f\0" /* offset 16940 */ 31517 "\xe7\x9e\x8b\0" /* offset 16944 */ 31518 "\xe4\x81\x86\0" /* offset 16948 */ 31519 "\xe4\x82\x96\0" /* offset 16952 */ 31520 "\xf0\xa5\x90\x9d\0" /* offset 16956 */ 31521 "\xe7\xa1\x8e\0" /* offset 16961 */ 31522 "\xe4\x83\xa3\0" /* offset 16965 */ 31523 "\xf0\xa5\x98\xa6\0" /* offset 16969 */ 31524 "\xf0\xa5\x9a\x9a\0" /* offset 16974 */ 31525 "\xf0\xa5\x9b\x85\0" /* offset 16979 */ 31526 "\xe7\xa7\xab\0" /* offset 16984 */ 31527 "\xe4\x84\xaf\0" /* offset 16988 */ 31528 "\xe7\xa9\x8a\0" /* offset 16992 */ 31529 "\xe7\xa9\x8f\0" /* offset 16996 */ 31530 "\xf0\xa5\xa5\xbc\0" /* offset 17000 */ 31531 "\xf0\xa5\xaa\xa7\0" /* offset 17005 */ 31532 "\xe7\xab\xae\0" /* offset 17010 */ 31533 "\xe4\x88\x82\0" /* offset 17014 */ 31534 "\xf0\xa5\xae\xab\0" /* offset 17018 */ 31535 "\xe7\xaf\x86\0" /* offset 17023 */ 31536 "\xe7\xaf\x89\0" /* offset 17027 */ 31537 "\xe4\x88\xa7\0" /* offset 17031 */ 31538 "\xf0\xa5\xb2\x80\0" /* offset 17035 */ 31539 "\xe7\xb3\x92\0" /* offset 17040 */ 31540 "\xe4\x8a\xa0\0" /* offset 17044 */ 31541 "\xe7\xb3\xa8\0" /* offset 17048 */ 31542 "\xe7\xb3\xa3\0" /* offset 17052 */ 31543 "\xe7\xb4\x80\0" /* offset 17056 */ 31544 "\xf0\xa5\xbe\x86\0" /* offset 17060 */ 31545 "\xe7\xb5\xa3\0" /* offset 17065 */ 31546 "\xe4\x8c\x81\0" /* offset 17069 */ 31547 "\xe7\xb7\x87\0" /* offset 17073 */ 31548 "\xe7\xb8\x82\0" /* offset 17077 */ 31549 "\xe7\xb9\x85\0" /* offset 17081 */ 31550 "\xe4\x8c\xb4\0" /* offset 17085 */ 31551 "\xf0\xa6\x88\xa8\0" /* offset 17089 */ 31552 "\xf0\xa6\x89\x87\0" /* offset 17094 */ 31553 "\xe4\x8d\x99\0" /* offset 17099 */ 31554 "\xf0\xa6\x8b\x99\0" /* offset 17103 */ 31555 "\xe7\xbd\xba\0" /* offset 17108 */ 31556 "\xf0\xa6\x8c\xbe\0" /* offset 17112 */ 31557 "\xe7\xbe\x95\0" /* offset 17117 */ 31558 "\xe7\xbf\xba\0" /* offset 17121 */ 31559 "\xf0\xa6\x93\x9a\0" /* offset 17125 */ 31560 "\xf0\xa6\x94\xa3\0" /* offset 17130 */ 31561 "\xe8\x81\xa0\0" /* offset 17135 */ 31562 "\xf0\xa6\x96\xa8\0" /* offset 17139 */ 31563 "\xe8\x81\xb0\0" /* offset 17144 */ 31564 "\xf0\xa3\x8d\x9f\0" /* offset 17148 */ 31565 "\xe4\x8f\x95\0" /* offset 17153 */ 31566 "\xe8\x82\xb2\0" /* offset 17157 */ 31567 "\xe8\x84\x83\0" /* offset 17161 */ 31568 "\xe4\x90\x8b\0" /* offset 17165 */ 31569 "\xe8\x84\xbe\0" /* offset 17169 */ 31570 "\xe5\xaa\xb5\0" /* offset 17173 */ 31571 "\xf0\xa6\x9e\xa7\0" /* offset 17177 */ 31572 "\xf0\xa6\x9e\xb5\0" /* offset 17182 */ 31573 "\xf0\xa3\x8e\x93\0" /* offset 17187 */ 31574 "\xf0\xa3\x8e\x9c\0" /* offset 17192 */ 31575 "\xe8\x88\x84\0" /* offset 17197 */ 31576 "\xe8\xbe\x9e\0" /* offset 17201 */ 31577 "\xe4\x91\xab\0" /* offset 17205 */ 31578 "\xe8\x8a\x91\0" /* offset 17209 */ 31579 "\xe8\x8a\x8b\0" /* offset 17213 */ 31580 "\xe8\x8a\x9d\0" /* offset 17217 */ 31581 "\xe5\x8a\xb3\0" /* offset 17221 */ 31582 "\xe8\x8a\xb1\0" /* offset 17225 */ 31583 "\xe8\x8a\xb3\0" /* offset 17229 */ 31584 "\xe8\x8a\xbd\0" /* offset 17233 */ 31585 "\xe8\x8b\xa6\0" /* offset 17237 */ 31586 "\xf0\xa6\xac\xbc\0" /* offset 17241 */ 31587 "\xe8\x8c\x9d\0" /* offset 17246 */ 31588 "\xe8\x8d\xa3\0" /* offset 17250 */ 31589 "\xe8\x8e\xad\0" /* offset 17254 */ 31590 "\xe8\x8c\xa3\0" /* offset 17258 */ 31591 "\xe8\x8e\xbd\0" /* offset 17262 */ 31592 "\xe8\x8f\xa7\0" /* offset 17266 */ 31593 "\xe8\x8d\x93\0" /* offset 17270 */ 31594 "\xe8\x8f\x8a\0" /* offset 17274 */ 31595 "\xe8\x8f\x8c\0" /* offset 17278 */ 31596 "\xe8\x8f\x9c\0" /* offset 17282 */ 31597 "\xf0\xa6\xb0\xb6\0" /* offset 17286 */ 31598 "\xf0\xa6\xb5\xab\0" /* offset 17291 */ 31599 "\xf0\xa6\xb3\x95\0" /* offset 17296 */ 31600 "\xe4\x94\xab\0" /* offset 17301 */ 31601 "\xe8\x93\xb1\0" /* offset 17305 */ 31602 "\xe8\x93\xb3\0" /* offset 17309 */ 31603 "\xe8\x94\x96\0" /* offset 17313 */ 31604 "\xf0\xa7\x8f\x8a\0" /* offset 17317 */ 31605 "\xe8\x95\xa4\0" /* offset 17322 */ 31606 "\xf0\xa6\xbc\xac\0" /* offset 17326 */ 31607 "\xe4\x95\x9d\0" /* offset 17331 */ 31608 "\xe4\x95\xa1\0" /* offset 17335 */ 31609 "\xf0\xa6\xbe\xb1\0" /* offset 17339 */ 31610 "\xf0\xa7\x83\x92\0" /* offset 17344 */ 31611 "\xe4\x95\xab\0" /* offset 17349 */ 31612 "\xe8\x99\x90\0" /* offset 17353 */ 31613 "\xe8\x99\xa7\0" /* offset 17357 */ 31614 "\xe8\x99\xa9\0" /* offset 17361 */ 31615 "\xe8\x9a\xa9\0" /* offset 17365 */ 31616 "\xe8\x9a\x88\0" /* offset 17369 */ 31617 "\xe8\x9c\x8e\0" /* offset 17373 */ 31618 "\xe8\x9b\xa2\0" /* offset 17377 */ 31619 "\xe8\x9c\xa8\0" /* offset 17381 */ 31620 "\xe8\x9d\xab\0" /* offset 17385 */ 31621 "\xe8\x9e\x86\0" /* offset 17389 */ 31622 "\xe4\x97\x97\0" /* offset 17393 */ 31623 "\xe8\x9f\xa1\0" /* offset 17397 */ 31624 "\xe8\xa0\x81\0" /* offset 17401 */ 31625 "\xe4\x97\xb9\0" /* offset 17405 */ 31626 "\xe8\xa1\xa0\0" /* offset 17409 */ 31627 "\xf0\xa7\x99\xa7\0" /* offset 17413 */ 31628 "\xe8\xa3\x97\0" /* offset 17418 */ 31629 "\xe8\xa3\x9e\0" /* offset 17422 */ 31630 "\xe4\x98\xb5\0" /* offset 17426 */ 31631 "\xe8\xa3\xba\0" /* offset 17430 */ 31632 "\xe3\x92\xbb\0" /* offset 17434 */ 31633 "\xf0\xa7\xa2\xae\0" /* offset 17438 */ 31634 "\xf0\xa7\xa5\xa6\0" /* offset 17443 */ 31635 "\xe4\x9a\xbe\0" /* offset 17448 */ 31636 "\xe4\x9b\x87\0" /* offset 17452 */ 31637 "\xe8\xaa\xa0\0" /* offset 17456 */ 31638 "\xf0\xa7\xb2\xa8\0" /* offset 17460 */ 31639 "\xe8\xb2\xab\0" /* offset 17465 */ 31640 "\xe8\xb3\x81\0" /* offset 17469 */ 31641 "\xe8\xb4\x9b\0" /* offset 17473 */ 31642 "\xe8\xb5\xb7\0" /* offset 17477 */ 31643 "\xf0\xa7\xbc\xaf\0" /* offset 17481 */ 31644 "\xf0\xa0\xa0\x84\0" /* offset 17486 */ 31645 "\xe8\xb7\x8b\0" /* offset 17491 */ 31646 "\xe8\xb6\xbc\0" /* offset 17495 */ 31647 "\xe8\xb7\xb0\0" /* offset 17499 */ 31648 "\xf0\xa0\xa3\x9e\0" /* offset 17503 */ 31649 "\xe8\xbb\x94\0" /* offset 17508 */ 31650 "\xf0\xa8\x97\x92\0" /* offset 17512 */ 31651 "\xf0\xa8\x97\xad\0" /* offset 17517 */ 31652 "\xe9\x82\x94\0" /* offset 17522 */ 31653 "\xe9\x83\xb1\0" /* offset 17526 */ 31654 "\xe9\x84\x91\0" /* offset 17530 */ 31655 "\xf0\xa8\x9c\xae\0" /* offset 17534 */ 31656 "\xe9\x84\x9b\0" /* offset 17539 */ 31657 "\xe9\x88\xb8\0" /* offset 17543 */ 31658 "\xe9\x8b\x97\0" /* offset 17547 */ 31659 "\xe9\x8b\x98\0" /* offset 17551 */ 31660 "\xe9\x89\xbc\0" /* offset 17555 */ 31661 "\xe9\x8f\xb9\0" /* offset 17559 */ 31662 "\xe9\x90\x95\0" /* offset 17563 */ 31663 "\xf0\xa8\xaf\xba\0" /* offset 17567 */ 31664 "\xe9\x96\x8b\0" /* offset 17572 */ 31665 "\xe4\xa6\x95\0" /* offset 17576 */ 31666 "\xe9\x96\xb7\0" /* offset 17580 */ 31667 "\xf0\xa8\xb5\xb7\0" /* offset 17584 */ 31668 "\xe4\xa7\xa6\0" /* offset 17589 */ 31669 "\xe9\x9b\x83\0" /* offset 17593 */ 31670 "\xe5\xb6\xb2\0" /* offset 17597 */ 31671 "\xe9\x9c\xa3\0" /* offset 17601 */ 31672 "\xf0\xa9\x85\x85\0" /* offset 17605 */ 31673 "\xf0\xa9\x88\x9a\0" /* offset 17610 */ 31674 "\xe4\xa9\xae\0" /* offset 17615 */ 31675 "\xe4\xa9\xb6\0" /* offset 17619 */ 31676 "\xe9\x9f\xa0\0" /* offset 17623 */ 31677 "\xf0\xa9\x90\x8a\0" /* offset 17627 */ 31678 "\xe4\xaa\xb2\0" /* offset 17632 */ 31679 "\xf0\xa9\x92\x96\0" /* offset 17636 */ 31680 "\xe9\xa0\xa9\0" /* offset 17641 */ 31681 "\xf0\xa9\x96\xb6\0" /* offset 17645 */ 31682 "\xe9\xa3\xa2\0" /* offset 17650 */ 31683 "\xe4\xac\xb3\0" /* offset 17654 */ 31684 "\xe9\xa4\xa9\0" /* offset 17658 */ 31685 "\xe9\xa6\xa7\0" /* offset 17662 */ 31686 "\xe9\xa7\x82\0" /* offset 17666 */ 31687 "\xe9\xa7\xbe\0" /* offset 17670 */ 31688 "\xe4\xaf\x8e\0" /* offset 17674 */ 31689 "\xf0\xa9\xac\xb0\0" /* offset 17678 */ 31690 "\xe9\xb1\x80\0" /* offset 17683 */ 31691 "\xe9\xb3\xbd\0" /* offset 17687 */ 31692 "\xe4\xb3\x8e\0" /* offset 17691 */ 31693 "\xe4\xb3\xad\0" /* offset 17695 */ 31694 "\xe9\xb5\xa7\0" /* offset 17699 */ 31695 "\xf0\xaa\x83\x8e\0" /* offset 17703 */ 31696 "\xe4\xb3\xb8\0" /* offset 17708 */ 31697 "\xf0\xaa\x84\x85\0" /* offset 17712 */ 31698 "\xf0\xaa\x88\x8e\0" /* offset 17717 */ 31699 "\xf0\xaa\x8a\x91\0" /* offset 17722 */ 31700 "\xe4\xb5\x96\0" /* offset 17727 */ 31701 "\xe9\xbb\xbe\0" /* offset 17731 */ 31702 "\xe9\xbc\x85\0" /* offset 17735 */ 31703 "\xe9\xbc\x8f\0" /* offset 17739 */ 31704 "\xe9\xbc\x96\0" /* offset 17743 */ 31705 "\xf0\xaa\x98\x80\0" /* offset 17747 */; 31706 31707 31708 const uint8_t codeSzUTF8[256] = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,1,1}; 31709 31710 static const char type_data[][256] = { 31711 { /* page 0, index 0 */ 31712 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31713 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31714 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31715 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31716 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31717 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31718 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31719 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31720 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31721 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31722 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_SPACE_SEPARATOR, 31723 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 31724 UNICODE_OTHER_PUNCTUATION, UNICODE_CURRENCY_SYMBOL, 31725 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 31726 UNICODE_OTHER_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 31727 UNICODE_CLOSE_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 31728 UNICODE_MATH_SYMBOL, UNICODE_OTHER_PUNCTUATION, 31729 UNICODE_DASH_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 31730 UNICODE_OTHER_PUNCTUATION, UNICODE_DECIMAL_NUMBER, 31731 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 31732 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 31733 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 31734 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 31735 UNICODE_DECIMAL_NUMBER, UNICODE_OTHER_PUNCTUATION, 31736 UNICODE_OTHER_PUNCTUATION, UNICODE_MATH_SYMBOL, 31737 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 31738 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 31739 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31740 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31741 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31742 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31743 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31744 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31745 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31746 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31747 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31748 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31749 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31750 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31751 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31752 UNICODE_OPEN_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 31753 UNICODE_CLOSE_PUNCTUATION, UNICODE_MODIFIER_SYMBOL, 31754 UNICODE_CONNECT_PUNCTUATION, UNICODE_MODIFIER_SYMBOL, 31755 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31756 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31757 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31758 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31759 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31760 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31761 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31762 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31763 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31764 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31765 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31766 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31767 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31768 UNICODE_OPEN_PUNCTUATION, UNICODE_MATH_SYMBOL, 31769 UNICODE_CLOSE_PUNCTUATION, UNICODE_MATH_SYMBOL, UNICODE_CONTROL, 31770 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31771 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31772 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31773 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31774 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31775 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31776 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31777 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31778 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31779 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31780 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_SPACE_SEPARATOR, 31781 UNICODE_OTHER_PUNCTUATION, UNICODE_CURRENCY_SYMBOL, 31782 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 31783 UNICODE_CURRENCY_SYMBOL, UNICODE_OTHER_SYMBOL, 31784 UNICODE_OTHER_PUNCTUATION, UNICODE_MODIFIER_SYMBOL, 31785 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_LETTER, 31786 UNICODE_INITIAL_PUNCTUATION, UNICODE_MATH_SYMBOL, UNICODE_FORMAT, 31787 UNICODE_OTHER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 31788 UNICODE_OTHER_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_OTHER_NUMBER, 31789 UNICODE_OTHER_NUMBER, UNICODE_MODIFIER_SYMBOL, 31790 UNICODE_LOWERCASE_LETTER, UNICODE_OTHER_PUNCTUATION, 31791 UNICODE_OTHER_PUNCTUATION, UNICODE_MODIFIER_SYMBOL, 31792 UNICODE_OTHER_NUMBER, UNICODE_OTHER_LETTER, 31793 UNICODE_FINAL_PUNCTUATION, UNICODE_OTHER_NUMBER, 31794 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 31795 UNICODE_OTHER_PUNCTUATION, UNICODE_UPPERCASE_LETTER, 31796 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31797 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31798 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31799 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31800 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31801 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31802 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31803 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31804 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31805 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31806 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31807 UNICODE_MATH_SYMBOL, UNICODE_UPPERCASE_LETTER, 31808 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31809 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31810 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31811 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31812 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31813 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31814 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31815 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31816 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31817 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31818 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31819 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31820 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31821 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31822 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31823 UNICODE_MATH_SYMBOL, UNICODE_LOWERCASE_LETTER, 31824 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31825 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31826 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31827 UNICODE_LOWERCASE_LETTER 31828 }, 31829 { /* page 1, index 1 */ 31830 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31831 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31832 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31833 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31834 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31835 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31836 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31837 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31838 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31839 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31840 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31841 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31842 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31843 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31844 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31845 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31846 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31847 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31848 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31849 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31850 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31851 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31852 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31853 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31854 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31855 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31856 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31857 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31858 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31859 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31860 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31861 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31862 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31863 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31864 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31865 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31866 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31867 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31868 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31869 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31870 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31871 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31872 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31873 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31874 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31875 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31876 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31877 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31878 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31879 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31880 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31881 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31882 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31883 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31884 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31885 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31886 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31887 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31888 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31889 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31890 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31891 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31892 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31893 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31894 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31895 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31896 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31897 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31898 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31899 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31900 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31901 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31902 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31903 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31904 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31905 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31906 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31907 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31908 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31909 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31910 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31911 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31912 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31913 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31914 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31915 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31916 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31917 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31918 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31919 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31920 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31921 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31922 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31923 UNICODE_LOWERCASE_LETTER, UNICODE_OTHER_LETTER, 31924 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31925 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31926 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 31927 UNICODE_OTHER_LETTER, UNICODE_UPPERCASE_LETTER, 31928 UNICODE_TITLECASE_LETTER, UNICODE_LOWERCASE_LETTER, 31929 UNICODE_UPPERCASE_LETTER, UNICODE_TITLECASE_LETTER, 31930 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31931 UNICODE_TITLECASE_LETTER, UNICODE_LOWERCASE_LETTER, 31932 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31933 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31934 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31935 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31936 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31937 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31938 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31939 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31940 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31941 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31942 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31943 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31944 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31945 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31946 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31947 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31948 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31949 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31950 UNICODE_UPPERCASE_LETTER, UNICODE_TITLECASE_LETTER, 31951 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31952 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31953 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31954 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31955 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31956 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31957 UNICODE_LOWERCASE_LETTER 31958 }, 31959 { /* page 2, index 2 */ 31960 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31961 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31962 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31963 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31964 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31965 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31966 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31967 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31968 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31969 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31970 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31971 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31972 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31973 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31974 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31975 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31976 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31977 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31978 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31979 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31980 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31981 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31982 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31983 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31984 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31985 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31986 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31987 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31988 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31989 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31990 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31991 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31992 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31993 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31994 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31995 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31996 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31997 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31998 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31999 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32000 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32001 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32002 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32003 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32004 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32005 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32006 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32007 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32008 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32009 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32010 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32011 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32012 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32013 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32014 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32015 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32016 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32017 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32018 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32019 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32020 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32021 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32022 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32023 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32024 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32025 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32026 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32027 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32028 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32029 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32030 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32031 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32032 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32033 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32034 UNICODE_OTHER_LETTER, UNICODE_LOWERCASE_LETTER, 32035 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32036 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32037 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32038 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32039 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32040 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32041 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32042 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32043 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32044 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32045 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32046 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32047 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32048 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32049 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32050 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32051 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32052 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32053 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32054 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32055 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32056 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32057 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32058 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32059 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32060 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32061 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32062 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32063 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32064 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32065 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32066 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32067 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32068 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32069 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32070 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32071 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32072 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32073 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32074 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_SYMBOL, 32075 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32076 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32077 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32078 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_SYMBOL, 32079 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_SYMBOL, 32080 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32081 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32082 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32083 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32084 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32085 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32086 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32087 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL 32088 }, 32089 { /* page 3, index 3 */ 32090 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32091 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32092 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32093 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32094 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32095 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32096 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32097 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32098 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32099 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32100 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32101 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32102 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32103 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32104 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32105 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32106 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32107 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32108 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32109 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32110 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32111 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32112 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32113 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32114 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32115 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32116 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32117 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32118 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32119 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32120 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32121 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32122 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32123 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32124 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32125 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32126 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32127 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32128 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32129 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32130 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32131 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32132 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32133 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32134 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32135 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32136 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32137 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32138 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32139 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32140 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32141 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32142 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32143 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32144 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32145 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32146 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32147 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32148 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_SYMBOL, 32149 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32150 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_MODIFIER_LETTER, 32151 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32152 UNICODE_LOWERCASE_LETTER, UNICODE_OTHER_PUNCTUATION, 32153 UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32154 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_MODIFIER_SYMBOL, 32155 UNICODE_MODIFIER_SYMBOL, UNICODE_UPPERCASE_LETTER, 32156 UNICODE_OTHER_PUNCTUATION, UNICODE_UPPERCASE_LETTER, 32157 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32158 UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, 32159 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32160 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32161 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32162 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32163 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32164 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32165 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32166 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32167 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32168 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32169 UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 32170 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32171 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32172 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32173 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32174 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32175 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32176 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32177 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32178 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32179 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32180 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32181 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32182 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32183 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32184 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32185 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32186 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32187 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32188 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32189 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32190 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32191 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32192 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32193 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32194 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32195 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32196 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32197 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32198 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32199 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32200 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32201 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32202 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32203 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32204 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32205 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32206 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32207 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32208 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32209 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32210 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32211 UNICODE_MATH_SYMBOL, UNICODE_UPPERCASE_LETTER, 32212 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32213 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32214 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32215 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER 32216 }, 32217 { /* page 4, index 4 */ 32218 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32219 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32220 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32221 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32222 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32223 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32224 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32225 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32226 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32227 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32228 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32229 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32230 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32231 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32232 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32233 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32234 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32235 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32236 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32237 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32238 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32239 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32240 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32241 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32242 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32243 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32244 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32245 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32246 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32247 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32248 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32249 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32250 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32251 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32252 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32253 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32254 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32255 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32256 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32257 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32258 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32259 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32260 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32261 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32262 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32263 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32264 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32265 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32266 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32267 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32268 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32269 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32270 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32271 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32272 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32273 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32274 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32275 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32276 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32277 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32278 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32279 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32280 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32281 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32282 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32283 UNICODE_OTHER_SYMBOL, UNICODE_NON_SPACING_MARK, 32284 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32285 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32286 UNICODE_ENCLOSING_MARK, UNICODE_ENCLOSING_MARK, 32287 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32288 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32289 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32290 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32291 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32292 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32293 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32294 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32295 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32296 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32297 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32298 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32299 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32300 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32301 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32302 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32303 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32304 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32305 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32306 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32307 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32308 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32309 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32310 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32311 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32312 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32313 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32314 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32315 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32316 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32317 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32318 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32319 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32320 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32321 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32322 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32323 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32324 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32325 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32326 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32327 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32328 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32329 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32330 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32331 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32332 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32333 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32334 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32335 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32336 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32337 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32338 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32339 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32340 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32341 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32342 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32343 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32344 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32345 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER 32346 }, 32347 { /* page 5, index 5 */ 32348 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32349 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32350 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32351 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32352 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32353 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32354 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32355 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32356 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32357 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32358 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32359 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32360 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32361 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32362 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32363 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32364 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32365 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32366 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32367 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32368 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32369 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32370 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32371 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32372 UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 32373 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32374 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32375 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32376 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32377 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32378 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32379 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32380 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32381 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32382 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32383 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32384 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32385 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32386 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32387 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32388 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32389 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32390 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32391 UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32392 UNICODE_MODIFIER_LETTER, UNICODE_OTHER_PUNCTUATION, 32393 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32394 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32395 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, 32396 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32397 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32398 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32399 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32400 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32401 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32402 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32403 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32404 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32405 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32406 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32407 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32408 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32409 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32410 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32411 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32412 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32413 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32414 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32415 UNICODE_LOWERCASE_LETTER, UNICODE_UNASSIGNED, 32416 UNICODE_OTHER_PUNCTUATION, UNICODE_DASH_PUNCTUATION, 32417 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, 32418 UNICODE_OTHER_SYMBOL, UNICODE_CURRENCY_SYMBOL, UNICODE_UNASSIGNED, 32419 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32420 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32421 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32422 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32423 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32424 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32425 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32426 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32427 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32428 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32429 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32430 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32431 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32432 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32433 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32434 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32435 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32436 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32437 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32438 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32439 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32440 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32441 UNICODE_NON_SPACING_MARK, UNICODE_DASH_PUNCTUATION, 32442 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 32443 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32444 UNICODE_OTHER_PUNCTUATION, UNICODE_NON_SPACING_MARK, 32445 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 32446 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32447 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32448 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32449 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32450 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32451 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32452 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32453 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32454 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32455 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32456 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32457 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32458 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32459 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 32460 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32461 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32462 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32463 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32464 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32465 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 32466 }, 32467 { /* page 6, index 6 */ 32468 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 32469 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_MATH_SYMBOL, 32470 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 32471 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32472 UNICODE_CURRENCY_SYMBOL, UNICODE_OTHER_PUNCTUATION, 32473 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_SYMBOL, 32474 UNICODE_OTHER_SYMBOL, UNICODE_NON_SPACING_MARK, 32475 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32476 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32477 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32478 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32479 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32480 UNICODE_OTHER_PUNCTUATION, UNICODE_FORMAT, UNICODE_UNASSIGNED, 32481 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32482 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32483 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32484 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32485 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32486 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32487 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32488 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32489 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32490 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32491 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32492 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32493 UNICODE_MODIFIER_LETTER, UNICODE_OTHER_LETTER, 32494 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32495 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32496 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32497 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32498 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32499 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32500 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32501 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32502 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32503 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32504 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32505 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32506 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32507 UNICODE_NON_SPACING_MARK, UNICODE_DECIMAL_NUMBER, 32508 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32509 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32510 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32511 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32512 UNICODE_DECIMAL_NUMBER, UNICODE_OTHER_PUNCTUATION, 32513 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32514 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 32515 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 32516 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32517 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32518 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32519 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32520 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32521 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32522 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32523 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32524 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32525 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32526 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32527 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32528 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32529 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32530 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32531 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32532 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32533 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32534 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32535 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32536 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32537 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32538 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32539 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32540 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32541 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32542 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32543 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32544 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32545 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32546 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32547 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32548 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32549 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 32550 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32551 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32552 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32553 UNICODE_NON_SPACING_MARK, UNICODE_FORMAT, UNICODE_OTHER_SYMBOL, 32554 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32555 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32556 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32557 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32558 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32559 UNICODE_OTHER_SYMBOL, UNICODE_NON_SPACING_MARK, 32560 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32561 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 32562 UNICODE_OTHER_LETTER, UNICODE_DECIMAL_NUMBER, 32563 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32564 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32565 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32566 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32567 UNICODE_DECIMAL_NUMBER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32568 UNICODE_OTHER_LETTER, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 32569 UNICODE_OTHER_LETTER 32570 }, 32571 { /* page 7, index 7 */ 32572 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32573 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32574 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32575 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32576 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32577 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32578 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32579 UNICODE_UNASSIGNED, UNICODE_FORMAT, UNICODE_OTHER_LETTER, 32580 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 32581 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32582 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32583 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32584 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32585 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32586 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32587 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32588 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32589 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32590 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32591 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32592 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32593 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32594 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32595 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32596 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32597 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32598 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32599 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32600 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32601 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32602 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32603 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32604 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32605 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32606 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32607 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32608 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32609 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32610 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32611 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32612 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32613 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32614 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32615 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32616 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32617 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32618 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32619 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32620 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32621 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32622 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32623 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32624 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32625 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32626 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32627 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32628 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32629 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32630 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32631 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32632 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32633 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32634 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32635 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32636 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32637 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32638 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32639 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32640 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 32641 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32642 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32643 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32644 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32645 UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32646 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32647 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32648 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32649 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32650 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32651 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32652 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32653 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32654 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32655 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32656 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32657 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32658 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32659 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32660 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32661 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32662 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32663 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32664 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32665 UNICODE_NON_SPACING_MARK, UNICODE_MODIFIER_LETTER, 32666 UNICODE_MODIFIER_LETTER, UNICODE_OTHER_SYMBOL, 32667 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32668 UNICODE_OTHER_PUNCTUATION, UNICODE_MODIFIER_LETTER, 32669 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32670 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 32671 }, 32672 { /* page 8, index 8 */ 32673 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32674 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32675 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32676 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32677 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32678 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32679 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32680 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 32681 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32682 UNICODE_NON_SPACING_MARK, UNICODE_MODIFIER_LETTER, 32683 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32684 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32685 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32686 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32687 UNICODE_NON_SPACING_MARK, UNICODE_MODIFIER_LETTER, 32688 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32689 UNICODE_NON_SPACING_MARK, UNICODE_MODIFIER_LETTER, 32690 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32691 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32692 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32693 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32694 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32695 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32696 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32697 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32698 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32699 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32700 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, 32701 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32702 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32703 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32704 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32705 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32706 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32707 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32708 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32709 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 32710 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32711 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_PUNCTUATION, 32712 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32713 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32714 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32715 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32716 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32717 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32718 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32719 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32720 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32721 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32722 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32723 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32724 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32725 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32726 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32727 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32728 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32729 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32730 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32731 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32732 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32733 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 32734 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32735 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32736 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32737 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32738 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32739 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32740 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 32741 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32742 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32743 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 32744 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32745 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32746 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32747 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32748 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32749 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32750 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32751 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32752 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32753 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32754 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32755 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32756 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32757 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, UNICODE_FORMAT, 32758 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32759 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32760 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32761 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32762 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32763 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32764 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32765 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32766 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32767 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32768 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32769 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32770 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32771 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32772 UNICODE_NON_SPACING_MARK 32773 }, 32774 { /* page 9, index 9 */ 32775 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32776 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 32777 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32778 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32779 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32780 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32781 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32782 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32783 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32784 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32785 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32786 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32787 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32788 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32789 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32790 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32791 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32792 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32793 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32794 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32795 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 32796 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 32797 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 32798 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32799 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32800 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32801 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32802 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 32803 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32804 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_OTHER_LETTER, 32805 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32806 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32807 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32808 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 32809 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32810 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32811 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32812 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32813 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32814 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32815 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32816 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32817 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32818 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32819 UNICODE_OTHER_PUNCTUATION, UNICODE_MODIFIER_LETTER, 32820 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32821 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32822 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32823 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32824 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32825 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 32826 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 32827 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32828 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32829 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32830 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 32831 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32832 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32833 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32834 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32835 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32836 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32837 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32838 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 32839 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32840 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32841 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 32842 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32843 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32844 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32845 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 32846 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 32847 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32848 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32849 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, 32850 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32851 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 32852 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 32853 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32854 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32855 UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, 32856 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32857 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 32858 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32859 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32860 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, 32861 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32862 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32863 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32864 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32865 UNICODE_DECIMAL_NUMBER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32866 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 32867 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 32868 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 32869 UNICODE_OTHER_SYMBOL, UNICODE_CURRENCY_SYMBOL, 32870 UNICODE_OTHER_LETTER, UNICODE_OTHER_PUNCTUATION, 32871 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 32872 }, 32873 { /* page 10, index 10 */ 32874 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 32875 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, 32876 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32877 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32878 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32879 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32880 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 32881 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32882 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32883 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32884 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32885 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32886 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32887 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32888 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32889 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32890 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 32891 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 32892 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 32893 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 32894 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, 32895 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 32896 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32897 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32898 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 32899 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32900 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32901 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32902 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, 32903 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32904 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32905 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32906 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 32907 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32908 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32909 UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32910 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32911 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32912 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32913 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32914 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32915 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32916 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32917 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32918 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32919 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32920 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32921 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 32922 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32923 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32924 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 32925 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32926 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32927 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32928 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32929 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32930 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32931 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32932 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32933 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 32934 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32935 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32936 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 32937 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 32938 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32939 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32940 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 32941 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 32942 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32943 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32944 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, 32945 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32946 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, 32947 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, 32948 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 32949 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32950 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32951 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32952 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32953 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 32954 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 32955 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32956 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32957 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32958 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32959 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32960 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32961 UNICODE_OTHER_PUNCTUATION, UNICODE_CURRENCY_SYMBOL, 32962 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32963 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32964 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 32965 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32966 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32967 UNICODE_NON_SPACING_MARK 32968 }, 32969 { /* page 11, index 11 */ 32970 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 32971 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 32972 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32973 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32974 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32975 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 32976 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32977 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32978 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32979 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32980 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32981 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32982 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32983 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 32984 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32985 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32986 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 32987 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 32988 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32989 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32990 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 32991 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32992 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32993 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32994 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32995 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, 32996 UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 32997 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32998 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32999 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33000 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, 33001 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33002 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33003 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33004 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33005 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, 33006 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33007 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33008 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33009 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33010 UNICODE_DECIMAL_NUMBER, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_LETTER, 33011 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33012 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33013 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33014 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33015 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33016 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 33017 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33018 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33019 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33020 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33021 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33022 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33023 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33024 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33025 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33026 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33027 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33028 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33029 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33030 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33031 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33032 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33033 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33034 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33035 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33036 UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33037 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 33038 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33039 UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33040 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, 33041 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33042 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33043 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33044 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33045 UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, 33046 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33047 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33048 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33049 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33050 UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33051 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33052 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33053 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33054 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33055 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33056 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 33057 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 33058 UNICODE_CURRENCY_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 33059 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33060 UNICODE_UNASSIGNED 33061 }, 33062 { /* page 12, index 12 */ 33063 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 33064 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, 33065 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33066 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33067 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33068 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33069 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33070 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33071 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33072 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33073 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33074 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33075 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33076 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33077 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33078 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33079 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33080 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33081 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33082 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33083 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33084 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33085 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 33086 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33087 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 33088 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33089 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 33090 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33091 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33092 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33093 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 33094 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33095 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33096 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33097 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33098 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33099 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, 33100 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33101 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33102 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33103 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33104 UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33105 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33106 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33107 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33108 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33109 UNICODE_OTHER_NUMBER, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_LETTER, 33110 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 33111 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33112 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33113 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33114 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33115 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33116 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33117 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33118 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33119 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33120 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33121 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33122 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33123 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33124 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33125 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33126 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33127 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33128 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33129 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33130 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 33131 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33132 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33133 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, 33134 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 33135 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, 33136 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33137 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33138 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33139 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, 33140 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33141 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33142 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33143 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33144 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33145 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, 33146 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33147 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33148 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33149 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33150 UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33151 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33152 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33153 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33154 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33155 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 33156 }, 33157 { /* page 13, index 13 */ 33158 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33159 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, 33160 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33161 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33162 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33163 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33164 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33165 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33166 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33167 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33168 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33169 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33170 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33171 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33172 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33173 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33174 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33175 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33176 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33177 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33178 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33179 UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33180 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33181 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33182 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, 33183 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, 33184 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33185 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 33186 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33187 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33188 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, 33189 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33190 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33191 UNICODE_OTHER_NUMBER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33192 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 33193 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33194 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33195 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33196 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33197 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33198 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33199 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33200 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33201 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33202 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33203 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33204 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33205 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, 33206 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33207 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33208 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33209 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33210 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33211 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33212 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33213 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33214 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33215 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33216 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33217 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33218 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33219 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33220 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33221 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33222 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33223 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33224 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33225 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33226 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33227 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33228 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33229 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33230 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, 33231 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33232 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33233 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, 33234 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, 33235 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33236 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33237 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33238 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33239 UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33240 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33241 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33242 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33243 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, 33244 UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33245 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33246 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33247 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33248 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 33249 }, 33250 { /* page 14, index 14 */ 33251 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33252 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33253 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33254 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33255 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33256 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33257 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33258 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33259 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33260 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33261 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33262 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33263 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33264 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33265 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33266 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33267 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 33268 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33269 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33270 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33271 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33272 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33273 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_CURRENCY_SYMBOL, 33274 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33275 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33276 UNICODE_MODIFIER_LETTER, UNICODE_NON_SPACING_MARK, 33277 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33278 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33279 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33280 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 33281 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33282 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33283 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33284 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33285 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33286 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33287 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33288 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33289 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33290 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33291 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33292 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33293 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33294 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33295 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33296 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33297 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33298 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33299 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33300 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33301 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33302 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33303 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33304 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33305 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33306 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33307 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33308 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33309 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33310 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33311 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33312 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33313 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33314 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33315 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 33316 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33317 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33318 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33319 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33320 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 33321 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33322 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33323 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33324 UNICODE_UNASSIGNED, UNICODE_MODIFIER_LETTER, UNICODE_UNASSIGNED, 33325 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33326 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33327 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33328 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, 33329 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33330 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33331 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33332 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33333 UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33334 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33335 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33336 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33337 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33338 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33339 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33340 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33341 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33342 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33343 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33344 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33345 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 33346 }, 33347 { /* page 15, index 15 */ 33348 UNICODE_OTHER_LETTER, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 33349 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_PUNCTUATION, 33350 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33351 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33352 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33353 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33354 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33355 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33356 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33357 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_PUNCTUATION, 33358 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 33359 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33360 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 33361 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 33362 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33363 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33364 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33365 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33366 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33367 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33368 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33369 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33370 UNICODE_OTHER_NUMBER, UNICODE_OTHER_SYMBOL, 33371 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_SYMBOL, 33372 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_SYMBOL, 33373 UNICODE_NON_SPACING_MARK, UNICODE_OPEN_PUNCTUATION, 33374 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 33375 UNICODE_CLOSE_PUNCTUATION, UNICODE_SPACING_MARK, 33376 UNICODE_SPACING_MARK, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33377 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33378 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33379 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33380 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33381 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33382 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33383 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33384 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33385 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33386 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33387 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33388 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33389 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33390 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33391 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33392 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 33393 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33394 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33395 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33396 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33397 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33398 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33399 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 33400 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33401 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33402 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 33403 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33404 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33405 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33406 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33407 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33408 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33409 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33410 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33411 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, 33412 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33413 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33414 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33415 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33416 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33417 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33418 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33419 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33420 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33421 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33422 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33423 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33424 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33425 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33426 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33427 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33428 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33429 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33430 UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 33431 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 33432 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 33433 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_SYMBOL, 33434 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 33435 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 33436 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 33437 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33438 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33439 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_SYMBOL, 33440 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 33441 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33442 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33443 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33444 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33445 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33446 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33447 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33448 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33449 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33450 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33451 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33452 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33453 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33454 UNICODE_UNASSIGNED 33455 }, 33456 { /* page 16, index 16 */ 33457 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33458 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33459 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33460 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33461 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33462 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33463 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33464 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33465 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33466 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33467 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33468 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33469 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33470 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33471 UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33472 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33473 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33474 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33475 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33476 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33477 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 33478 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33479 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33480 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33481 UNICODE_OTHER_LETTER, UNICODE_DECIMAL_NUMBER, 33482 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33483 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33484 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33485 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33486 UNICODE_DECIMAL_NUMBER, UNICODE_OTHER_PUNCTUATION, 33487 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33488 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33489 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 33490 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33491 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, 33492 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33493 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 33494 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33495 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33496 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 33497 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33498 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, 33499 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33500 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33501 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33502 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33503 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33504 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33505 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33506 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33507 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33508 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 33509 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33510 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33511 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33512 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33513 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 33514 UNICODE_SPACING_MARK, UNICODE_DECIMAL_NUMBER, 33515 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33516 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33517 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33518 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33519 UNICODE_DECIMAL_NUMBER, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33520 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33521 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 33522 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33523 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33524 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33525 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33526 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33527 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33528 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33529 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33530 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33531 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33532 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33533 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33534 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33535 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33536 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33537 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33538 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33539 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33540 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33541 UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, 33542 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33543 UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, 33544 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33545 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33546 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33547 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33548 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33549 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33550 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33551 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33552 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33553 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33554 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33555 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33556 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33557 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33558 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33559 UNICODE_OTHER_PUNCTUATION, UNICODE_MODIFIER_LETTER, 33560 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER 33561 }, 33562 { /* page 18, index 17 */ 33563 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33564 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33565 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33566 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33567 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33568 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33569 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33570 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33571 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33572 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33573 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33574 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33575 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33576 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33577 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33578 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33579 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33580 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33581 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33582 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33583 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33584 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33585 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33586 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33587 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33588 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33589 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33590 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33591 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33592 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33593 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33594 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33595 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33596 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33597 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33598 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33599 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33600 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33601 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33602 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33603 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33604 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33605 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33606 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33607 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33608 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33609 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33610 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33611 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33612 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33613 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33614 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33615 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33616 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33617 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33618 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33619 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33620 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33621 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33622 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33623 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33624 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33625 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33626 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33627 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33628 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33629 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33630 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33631 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33632 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33633 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33634 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33635 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33636 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33637 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33638 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33639 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33640 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33641 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33642 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33643 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33644 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33645 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33646 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33647 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33648 UNICODE_OTHER_LETTER 33649 }, 33650 { /* page 19, index 18 */ 33651 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33652 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33653 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33654 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33655 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33656 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33657 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33658 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33659 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33660 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33661 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33662 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33663 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33664 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33665 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33666 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33667 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33668 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33669 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33670 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33671 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33672 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33673 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33674 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33675 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33676 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33677 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33678 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33679 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33680 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33681 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33682 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33683 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 33684 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33685 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33686 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33687 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33688 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33689 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33690 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33691 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33692 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33693 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33694 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_UNASSIGNED, 33695 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33696 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33697 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33698 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33699 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33700 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33701 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 33702 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 33703 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 33704 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33705 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33706 UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 33707 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33708 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33709 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33710 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33711 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33712 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33713 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33714 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33715 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33716 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33717 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33718 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33719 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33720 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33721 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33722 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33723 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33724 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33725 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33726 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33727 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33728 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33729 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33730 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33731 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33732 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33733 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33734 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33735 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33736 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33737 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33738 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33739 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33740 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33741 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33742 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33743 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33744 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33745 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33746 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33747 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33748 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33749 UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33750 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 33751 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 33752 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 33753 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 33754 }, 33755 { /* page 20, index 19 */ 33756 UNICODE_DASH_PUNCTUATION, UNICODE_OTHER_LETTER, 33757 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33758 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33759 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33760 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33761 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33762 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33763 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33764 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33765 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33766 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33767 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33768 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33769 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33770 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33771 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33772 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33773 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33774 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33775 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33776 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33777 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33778 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33779 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33780 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33781 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33782 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33783 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33784 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33785 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33786 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33787 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33788 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33789 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33790 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33791 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33792 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33793 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33794 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33795 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33796 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33797 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33798 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33799 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33800 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33801 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33802 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33803 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33804 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33805 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33806 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33807 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33808 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33809 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33810 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33811 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33812 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33813 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33814 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33815 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33816 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33817 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33818 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33819 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33820 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33821 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33822 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33823 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33824 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33825 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33826 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33827 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33828 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33829 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33830 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33831 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33832 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33833 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33834 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33835 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33836 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33837 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33838 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33839 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33840 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33841 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER 33842 }, 33843 { /* page 22, index 20 */ 33844 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33845 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33846 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33847 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33848 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33849 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33850 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33851 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33852 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33853 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33854 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33855 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33856 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33857 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33858 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33859 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33860 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33861 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33862 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33863 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33864 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33865 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33866 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33867 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33868 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33869 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33870 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33871 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33872 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33873 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33874 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33875 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33876 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33877 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33878 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33879 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33880 UNICODE_OTHER_LETTER, UNICODE_OTHER_PUNCTUATION, 33881 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 33882 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33883 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33884 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33885 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33886 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33887 UNICODE_OTHER_LETTER, UNICODE_SPACE_SEPARATOR, 33888 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33889 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33890 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33891 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33892 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33893 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33894 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33895 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33896 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33897 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 33898 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33899 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33900 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33901 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33902 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33903 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33904 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33905 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33906 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33907 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33908 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33909 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33910 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33911 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33912 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33913 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33914 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33915 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33916 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33917 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33918 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33919 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33920 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33921 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33922 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33923 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33924 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33925 UNICODE_OTHER_PUNCTUATION, UNICODE_LETTER_NUMBER, 33926 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, UNICODE_OTHER_LETTER, 33927 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33928 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33929 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33930 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33931 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 33932 }, 33933 { /* page 23, index 21 */ 33934 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33935 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33936 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33937 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33938 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33939 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33940 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33941 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33942 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33943 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33944 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33945 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33946 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33947 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33948 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33949 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33950 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33951 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33952 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 33953 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33954 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33955 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33956 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33957 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33958 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33959 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33960 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33961 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33962 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 33963 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33964 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33965 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33966 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33967 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33968 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33969 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33970 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33971 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33972 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33973 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 33974 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33975 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33976 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33977 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33978 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33979 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33980 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33981 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33982 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33983 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33984 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33985 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33986 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33987 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33988 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33989 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33990 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33991 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33992 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33993 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33994 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33995 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33996 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33997 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33998 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33999 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34000 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34001 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34002 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34003 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34004 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34005 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34006 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34007 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34008 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34009 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34010 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34011 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34012 UNICODE_OTHER_PUNCTUATION, UNICODE_MODIFIER_LETTER, 34013 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34014 UNICODE_OTHER_PUNCTUATION, UNICODE_CURRENCY_SYMBOL, 34015 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, 34016 UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34017 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34018 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34019 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34020 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, 34021 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34022 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_NUMBER, 34023 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 34024 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 34025 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 34026 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34027 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 34028 }, 34029 { /* page 24, index 22 */ 34030 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34031 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34032 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34033 UNICODE_DASH_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34034 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34035 UNICODE_OTHER_PUNCTUATION, UNICODE_NON_SPACING_MARK, 34036 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, UNICODE_FORMAT, 34037 UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34038 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34039 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34040 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34041 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, 34042 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34043 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 34044 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34045 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34046 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34047 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34048 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34049 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34050 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34051 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34052 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34053 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34054 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34055 UNICODE_OTHER_LETTER, UNICODE_MODIFIER_LETTER, 34056 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34057 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34058 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34059 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34060 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34061 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34062 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34063 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34064 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34065 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34066 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34067 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34068 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34069 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34070 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34071 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34072 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34073 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34074 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34075 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34076 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34077 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34078 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34079 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34080 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34081 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34082 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34083 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34084 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34085 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34086 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34087 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34088 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34089 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34090 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 34091 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34092 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34093 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34094 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34095 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34096 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34097 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34098 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34099 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34100 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34101 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34102 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34103 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34104 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34105 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34106 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34107 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34108 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34109 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34110 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34111 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34112 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34113 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34114 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34115 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34116 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34117 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34118 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34119 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 34120 }, 34121 { /* page 25, index 23 */ 34122 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34123 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34124 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34125 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34126 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34127 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34128 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34129 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34130 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34131 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34132 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 34133 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34134 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34135 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34136 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34137 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, 34138 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34139 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34140 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34141 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34142 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34143 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34144 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34145 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, 34146 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34147 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34148 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34149 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34150 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34151 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34152 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34153 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34154 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34155 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34156 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34157 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34158 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34159 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34160 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34161 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34162 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34163 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 34164 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34165 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34166 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34167 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34168 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34169 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34170 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34171 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34172 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34173 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34174 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34175 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34176 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34177 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34178 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34179 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34180 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34181 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34182 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34183 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 34184 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34185 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34186 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34187 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34188 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34189 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34190 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34191 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34192 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34193 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 34194 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34195 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, 34196 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34197 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34198 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34199 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34200 UNICODE_DECIMAL_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_UNASSIGNED, 34201 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, 34202 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 34203 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 34204 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 34205 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 34206 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 34207 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 34208 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 34209 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 34210 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 34211 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 34212 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL 34213 }, 34214 { /* page 26, index 24 */ 34215 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34216 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34217 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34218 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34219 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34220 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34221 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34222 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34223 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34224 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34225 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34226 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34227 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34228 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34229 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34230 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34231 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34232 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34233 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34234 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34235 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34236 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34237 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34238 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34239 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34240 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34241 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34242 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34243 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34244 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, 34245 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34246 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34247 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34248 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34249 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, 34250 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34251 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34252 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34253 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34254 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34255 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34256 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34257 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34258 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34259 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34260 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34261 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34262 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34263 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34264 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 34265 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34266 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34267 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34268 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34269 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, 34270 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34271 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, 34272 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34273 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34274 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34275 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34276 UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34277 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34278 UNICODE_UNASSIGNED, UNICODE_OTHER_PUNCTUATION, 34279 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34280 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34281 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34282 UNICODE_MODIFIER_LETTER, UNICODE_OTHER_PUNCTUATION, 34283 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34284 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34285 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34286 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34287 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34288 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34289 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34290 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34291 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34292 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34293 UNICODE_ENCLOSING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34294 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34295 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34296 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34297 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34298 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34299 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34300 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34301 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34302 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34303 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34304 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34305 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34306 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34307 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34308 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34309 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34310 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34311 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34312 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34313 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34314 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 34315 }, 34316 { /* page 27, index 25 */ 34317 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34318 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34319 UNICODE_SPACING_MARK, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34320 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34321 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34322 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34323 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34324 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34325 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34326 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34327 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34328 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34329 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34330 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34331 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34332 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34333 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34334 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34335 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34336 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34337 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34338 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34339 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34340 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34341 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34342 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_OTHER_LETTER, 34343 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34344 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34345 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34346 UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34347 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34348 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34349 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34350 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34351 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34352 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34353 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34354 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_SYMBOL, 34355 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 34356 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 34357 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 34358 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34359 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34360 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34361 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34362 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_SYMBOL, 34363 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 34364 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 34365 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 34366 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 34367 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34368 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34369 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34370 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34371 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34372 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34373 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34374 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34375 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34376 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34377 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34378 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34379 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34380 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34381 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34382 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34383 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34384 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 34385 UNICODE_OTHER_LETTER, UNICODE_DECIMAL_NUMBER, 34386 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34387 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34388 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34389 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34390 UNICODE_DECIMAL_NUMBER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34391 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34392 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34393 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34394 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34395 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34396 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34397 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34398 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34399 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34400 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34401 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34402 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34403 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34404 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34405 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34406 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34407 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34408 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34409 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34410 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34411 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34412 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34413 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34414 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34415 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION 34416 }, 34417 { /* page 28, index 26 */ 34418 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34419 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34420 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34421 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34422 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34423 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34424 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34425 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34426 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34427 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34428 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34429 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34430 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34431 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34432 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34433 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34434 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34435 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34436 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34437 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34438 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34439 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34440 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34441 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34442 UNICODE_OTHER_PUNCTUATION, UNICODE_DECIMAL_NUMBER, 34443 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34444 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34445 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34446 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34447 UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34448 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34449 UNICODE_OTHER_LETTER, UNICODE_DECIMAL_NUMBER, 34450 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34451 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34452 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34453 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34454 UNICODE_DECIMAL_NUMBER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34455 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34456 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34457 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34458 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34459 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34460 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34461 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34462 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34463 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34464 UNICODE_OTHER_LETTER, UNICODE_MODIFIER_LETTER, 34465 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34466 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34467 UNICODE_MODIFIER_LETTER, UNICODE_OTHER_PUNCTUATION, 34468 UNICODE_OTHER_PUNCTUATION, UNICODE_LOWERCASE_LETTER, 34469 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34470 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34471 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34472 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34473 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34474 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34475 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34476 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34477 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34478 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34479 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34480 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34481 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34482 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34483 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34484 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34485 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34486 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34487 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34488 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34489 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34490 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34491 UNICODE_UNASSIGNED, UNICODE_OTHER_PUNCTUATION, 34492 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34493 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34494 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34495 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34496 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34497 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34498 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34499 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 34500 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34501 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34502 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34503 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34504 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34505 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34506 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34507 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34508 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34509 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34510 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 34511 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34512 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 34513 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34514 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34515 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 34516 UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, 34517 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34518 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34519 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 34520 }, 34521 { /* page 29, index 27 */ 34522 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34523 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34524 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34525 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34526 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34527 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34528 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34529 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34530 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34531 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34532 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34533 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34534 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34535 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34536 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34537 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34538 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34539 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34540 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34541 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34542 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34543 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34544 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34545 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34546 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34547 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34548 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34549 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34550 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34551 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34552 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34553 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34554 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34555 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34556 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34557 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34558 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34559 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34560 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34561 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34562 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34563 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34564 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34565 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34566 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34567 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34568 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34569 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34570 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34571 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34572 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34573 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34574 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34575 UNICODE_MODIFIER_LETTER, UNICODE_LOWERCASE_LETTER, 34576 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34577 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34578 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34579 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34580 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34581 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34582 UNICODE_MODIFIER_LETTER, UNICODE_LOWERCASE_LETTER, 34583 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34584 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34585 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34586 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34587 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34588 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34589 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34590 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34591 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34592 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34593 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34594 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34595 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34596 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34597 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34598 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34599 UNICODE_LOWERCASE_LETTER, UNICODE_MODIFIER_LETTER, 34600 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34601 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34602 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34603 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34604 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34605 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34606 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34607 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34608 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34609 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34610 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34611 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34612 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34613 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34614 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34615 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34616 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34617 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34618 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34619 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34620 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34621 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34622 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34623 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34624 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34625 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34626 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34627 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34628 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34629 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34630 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34631 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34632 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34633 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34634 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34635 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34636 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34637 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34638 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34639 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34640 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34641 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34642 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34643 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34644 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34645 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34646 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34647 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 34648 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34649 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK 34650 }, 34651 { /* page 30, index 28 */ 34652 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34653 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34654 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34655 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34656 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34657 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34658 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34659 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34660 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34661 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34662 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34663 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34664 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34665 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34666 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34667 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34668 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34669 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34670 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34671 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34672 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34673 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34674 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34675 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34676 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34677 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34678 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34679 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34680 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34681 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34682 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34683 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34684 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34685 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34686 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34687 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34688 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34689 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34690 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34691 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34692 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34693 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34694 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34695 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34696 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34697 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34698 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34699 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34700 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34701 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34702 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34703 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34704 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34705 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34706 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34707 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34708 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34709 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34710 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34711 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34712 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34713 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34714 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34715 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34716 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34717 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34718 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34719 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34720 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34721 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34722 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34723 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34724 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34725 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34726 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34727 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34728 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34729 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34730 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34731 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34732 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34733 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34734 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34735 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34736 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34737 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34738 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34739 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34740 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34741 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34742 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34743 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34744 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34745 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34746 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34747 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34748 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34749 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34750 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34751 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34752 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34753 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34754 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34755 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34756 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34757 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34758 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34759 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34760 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34761 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34762 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34763 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34764 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34765 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34766 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34767 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34768 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34769 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34770 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34771 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34772 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34773 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34774 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34775 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34776 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34777 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34778 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34779 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER 34780 }, 34781 { /* page 31, index 29 */ 34782 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34783 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34784 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34785 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34786 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34787 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34788 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34789 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34790 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34791 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34792 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34793 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 34794 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34795 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34796 UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34797 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34798 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34799 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34800 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34801 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34802 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34803 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34804 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34805 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34806 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34807 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34808 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34809 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34810 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34811 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34812 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34813 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34814 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34815 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34816 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 34817 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34818 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34819 UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34820 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34821 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34822 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34823 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34824 UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, 34825 UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, 34826 UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, 34827 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34828 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34829 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34830 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34831 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34832 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34833 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34834 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34835 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34836 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34837 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34838 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34839 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34840 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34841 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34842 UNICODE_LOWERCASE_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34843 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34844 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34845 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34846 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34847 UNICODE_TITLECASE_LETTER, UNICODE_TITLECASE_LETTER, 34848 UNICODE_TITLECASE_LETTER, UNICODE_TITLECASE_LETTER, 34849 UNICODE_TITLECASE_LETTER, UNICODE_TITLECASE_LETTER, 34850 UNICODE_TITLECASE_LETTER, UNICODE_TITLECASE_LETTER, 34851 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34852 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34853 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34854 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34855 UNICODE_TITLECASE_LETTER, UNICODE_TITLECASE_LETTER, 34856 UNICODE_TITLECASE_LETTER, UNICODE_TITLECASE_LETTER, 34857 UNICODE_TITLECASE_LETTER, UNICODE_TITLECASE_LETTER, 34858 UNICODE_TITLECASE_LETTER, UNICODE_TITLECASE_LETTER, 34859 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34860 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34861 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34862 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34863 UNICODE_TITLECASE_LETTER, UNICODE_TITLECASE_LETTER, 34864 UNICODE_TITLECASE_LETTER, UNICODE_TITLECASE_LETTER, 34865 UNICODE_TITLECASE_LETTER, UNICODE_TITLECASE_LETTER, 34866 UNICODE_TITLECASE_LETTER, UNICODE_TITLECASE_LETTER, 34867 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34868 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34869 UNICODE_LOWERCASE_LETTER, UNICODE_UNASSIGNED, 34870 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34871 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34872 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34873 UNICODE_TITLECASE_LETTER, UNICODE_MODIFIER_SYMBOL, 34874 UNICODE_LOWERCASE_LETTER, UNICODE_MODIFIER_SYMBOL, 34875 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 34876 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34877 UNICODE_LOWERCASE_LETTER, UNICODE_UNASSIGNED, 34878 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34879 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34880 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34881 UNICODE_TITLECASE_LETTER, UNICODE_MODIFIER_SYMBOL, 34882 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 34883 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34884 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34885 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_LOWERCASE_LETTER, 34886 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34887 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34888 UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, 34889 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 34890 UNICODE_MODIFIER_SYMBOL, UNICODE_LOWERCASE_LETTER, 34891 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34892 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34893 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34894 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34895 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34896 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34897 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 34898 UNICODE_MODIFIER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34899 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34900 UNICODE_LOWERCASE_LETTER, UNICODE_UNASSIGNED, 34901 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34902 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34903 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34904 UNICODE_TITLECASE_LETTER, UNICODE_MODIFIER_SYMBOL, 34905 UNICODE_MODIFIER_SYMBOL, UNICODE_UNASSIGNED 34906 }, 34907 { /* page 32, index 30 */ 34908 UNICODE_SPACE_SEPARATOR, UNICODE_SPACE_SEPARATOR, 34909 UNICODE_SPACE_SEPARATOR, UNICODE_SPACE_SEPARATOR, 34910 UNICODE_SPACE_SEPARATOR, UNICODE_SPACE_SEPARATOR, 34911 UNICODE_SPACE_SEPARATOR, UNICODE_SPACE_SEPARATOR, 34912 UNICODE_SPACE_SEPARATOR, UNICODE_SPACE_SEPARATOR, 34913 UNICODE_SPACE_SEPARATOR, UNICODE_FORMAT, UNICODE_FORMAT, 34914 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 34915 UNICODE_DASH_PUNCTUATION, UNICODE_DASH_PUNCTUATION, 34916 UNICODE_DASH_PUNCTUATION, UNICODE_DASH_PUNCTUATION, 34917 UNICODE_DASH_PUNCTUATION, UNICODE_DASH_PUNCTUATION, 34918 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34919 UNICODE_INITIAL_PUNCTUATION, UNICODE_FINAL_PUNCTUATION, 34920 UNICODE_OPEN_PUNCTUATION, UNICODE_INITIAL_PUNCTUATION, 34921 UNICODE_INITIAL_PUNCTUATION, UNICODE_FINAL_PUNCTUATION, 34922 UNICODE_OPEN_PUNCTUATION, UNICODE_INITIAL_PUNCTUATION, 34923 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34924 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34925 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34926 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34927 UNICODE_LINE_SEPARATOR, UNICODE_PARAGRAPH_SEPARATOR, 34928 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 34929 UNICODE_FORMAT, UNICODE_SPACE_SEPARATOR, UNICODE_OTHER_PUNCTUATION, 34930 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34931 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34932 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34933 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34934 UNICODE_INITIAL_PUNCTUATION, UNICODE_FINAL_PUNCTUATION, 34935 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34936 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34937 UNICODE_CONNECT_PUNCTUATION, UNICODE_CONNECT_PUNCTUATION, 34938 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34939 UNICODE_OTHER_PUNCTUATION, UNICODE_MATH_SYMBOL, 34940 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 34941 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34942 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34943 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34944 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34945 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34946 UNICODE_OTHER_PUNCTUATION, UNICODE_MATH_SYMBOL, 34947 UNICODE_OTHER_PUNCTUATION, UNICODE_CONNECT_PUNCTUATION, 34948 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34949 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34950 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34951 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34952 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34953 UNICODE_SPACE_SEPARATOR, UNICODE_FORMAT, UNICODE_FORMAT, 34954 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 34955 UNICODE_UNASSIGNED, UNICODE_FORMAT, UNICODE_FORMAT, 34956 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 34957 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 34958 UNICODE_OTHER_NUMBER, UNICODE_MODIFIER_LETTER, UNICODE_UNASSIGNED, 34959 UNICODE_UNASSIGNED, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 34960 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 34961 UNICODE_OTHER_NUMBER, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 34962 UNICODE_MATH_SYMBOL, UNICODE_OPEN_PUNCTUATION, 34963 UNICODE_CLOSE_PUNCTUATION, UNICODE_MODIFIER_LETTER, 34964 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 34965 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 34966 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 34967 UNICODE_OTHER_NUMBER, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 34968 UNICODE_MATH_SYMBOL, UNICODE_OPEN_PUNCTUATION, 34969 UNICODE_CLOSE_PUNCTUATION, UNICODE_UNASSIGNED, 34970 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34971 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34972 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34973 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34974 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34975 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34976 UNICODE_MODIFIER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34977 UNICODE_UNASSIGNED, UNICODE_CURRENCY_SYMBOL, 34978 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 34979 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 34980 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 34981 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 34982 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 34983 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 34984 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 34985 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 34986 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 34987 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 34988 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 34989 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 34990 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 34991 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 34992 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 34993 UNICODE_CURRENCY_SYMBOL, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34994 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34995 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34996 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34997 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34998 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 34999 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35000 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35001 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35002 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35003 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35004 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35005 UNICODE_ENCLOSING_MARK, UNICODE_ENCLOSING_MARK, 35006 UNICODE_ENCLOSING_MARK, UNICODE_ENCLOSING_MARK, 35007 UNICODE_NON_SPACING_MARK, UNICODE_ENCLOSING_MARK, 35008 UNICODE_ENCLOSING_MARK, UNICODE_ENCLOSING_MARK, 35009 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35010 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35011 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35012 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35013 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35014 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35015 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35016 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35017 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35018 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35019 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 35020 }, 35021 { /* page 33, index 31 */ 35022 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35023 UNICODE_UPPERCASE_LETTER, UNICODE_OTHER_SYMBOL, 35024 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35025 UNICODE_UPPERCASE_LETTER, UNICODE_OTHER_SYMBOL, 35026 UNICODE_OTHER_SYMBOL, UNICODE_LOWERCASE_LETTER, 35027 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35028 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35029 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35030 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35031 UNICODE_LOWERCASE_LETTER, UNICODE_OTHER_SYMBOL, 35032 UNICODE_UPPERCASE_LETTER, UNICODE_OTHER_SYMBOL, 35033 UNICODE_OTHER_SYMBOL, UNICODE_MATH_SYMBOL, 35034 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35035 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35036 UNICODE_UPPERCASE_LETTER, UNICODE_OTHER_SYMBOL, 35037 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35038 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35039 UNICODE_UPPERCASE_LETTER, UNICODE_OTHER_SYMBOL, 35040 UNICODE_UPPERCASE_LETTER, UNICODE_OTHER_SYMBOL, 35041 UNICODE_UPPERCASE_LETTER, UNICODE_OTHER_SYMBOL, 35042 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35043 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35044 UNICODE_OTHER_SYMBOL, UNICODE_LOWERCASE_LETTER, 35045 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35046 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35047 UNICODE_LOWERCASE_LETTER, UNICODE_OTHER_LETTER, 35048 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35049 UNICODE_LOWERCASE_LETTER, UNICODE_OTHER_SYMBOL, 35050 UNICODE_OTHER_SYMBOL, UNICODE_LOWERCASE_LETTER, 35051 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35052 UNICODE_UPPERCASE_LETTER, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35053 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35054 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35055 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35056 UNICODE_LOWERCASE_LETTER, UNICODE_OTHER_SYMBOL, 35057 UNICODE_MATH_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35058 UNICODE_LOWERCASE_LETTER, UNICODE_OTHER_SYMBOL, 35059 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35060 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35061 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35062 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35063 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35064 UNICODE_OTHER_NUMBER, UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35065 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35066 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35067 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35068 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35069 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35070 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35071 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35072 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35073 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35074 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35075 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35076 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35077 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35078 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35079 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35080 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35081 UNICODE_LETTER_NUMBER, UNICODE_UPPERCASE_LETTER, 35082 UNICODE_LOWERCASE_LETTER, UNICODE_LETTER_NUMBER, 35083 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35084 UNICODE_LETTER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_SYMBOL, 35085 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35086 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_MATH_SYMBOL, 35087 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35088 UNICODE_MATH_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35089 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35090 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_OTHER_SYMBOL, 35091 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35092 UNICODE_MATH_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35093 UNICODE_MATH_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35094 UNICODE_MATH_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35095 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35096 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_MATH_SYMBOL, 35097 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35098 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35099 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35100 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35101 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35102 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35103 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35104 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35105 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35106 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35107 UNICODE_OTHER_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35108 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_MATH_SYMBOL, 35109 UNICODE_OTHER_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_OTHER_SYMBOL, 35110 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35111 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35112 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35113 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35114 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35115 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35116 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35117 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35118 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35119 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35120 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35121 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35122 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35123 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL 35124 }, 35125 { /* page 35, index 32 */ 35126 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35127 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35128 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35129 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 35130 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 35131 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35132 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35133 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35134 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35135 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35136 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35137 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_MATH_SYMBOL, 35138 UNICODE_MATH_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35139 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35140 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35141 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 35142 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35143 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35144 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35145 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35146 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35147 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35148 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35149 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35150 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35151 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35152 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35153 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35154 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35155 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35156 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35157 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35158 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35159 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35160 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35161 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35162 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35163 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35164 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35165 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35166 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35167 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35168 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35169 UNICODE_MATH_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35170 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35171 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35172 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35173 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35174 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35175 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35176 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35177 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35178 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35179 UNICODE_OTHER_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35180 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35181 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35182 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35183 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35184 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35185 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35186 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35187 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_OTHER_SYMBOL, 35188 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35189 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35190 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35191 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35192 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35193 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35194 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35195 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35196 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35197 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35198 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35199 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35200 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35201 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35202 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35203 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35204 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35205 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35206 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35207 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35208 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35209 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35210 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35211 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35212 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL 35213 }, 35214 { /* page 36, index 33 */ 35215 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35216 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35217 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35218 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35219 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35220 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35221 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35222 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35223 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35224 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35225 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35226 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35227 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35228 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35229 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35230 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35231 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35232 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35233 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35234 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35235 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35236 UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35237 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35238 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35239 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35240 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35241 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35242 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35243 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35244 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35245 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35246 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35247 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35248 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35249 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35250 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35251 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35252 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35253 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35254 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35255 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35256 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35257 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35258 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35259 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35260 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35261 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35262 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35263 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35264 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35265 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35266 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35267 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35268 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35269 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35270 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35271 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35272 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35273 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35274 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35275 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35276 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35277 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35278 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35279 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35280 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35281 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35282 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35283 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35284 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35285 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35286 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35287 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35288 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35289 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35290 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35291 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35292 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35293 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35294 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35295 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35296 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35297 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35298 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35299 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35300 UNICODE_OTHER_NUMBER 35301 }, 35302 { /* page 37, index 34 */ 35303 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35304 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35305 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35306 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35307 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35308 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35309 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35310 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35311 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35312 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35313 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35314 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35315 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35316 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35317 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35318 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35319 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35320 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35321 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35322 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35323 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35324 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35325 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35326 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35327 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35328 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35329 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35330 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35331 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35332 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35333 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35334 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35335 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35336 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35337 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35338 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35339 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35340 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35341 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35342 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35343 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35344 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35345 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35346 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35347 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35348 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35349 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35350 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35351 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35352 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35353 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35354 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35355 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35356 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35357 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35358 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35359 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35360 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35361 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35362 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35363 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35364 UNICODE_MATH_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35365 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35366 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35367 UNICODE_OTHER_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_OTHER_SYMBOL, 35368 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35369 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35370 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35371 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35372 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35373 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35374 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35375 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35376 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35377 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35378 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35379 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35380 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35381 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35382 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35383 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35384 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35385 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_MATH_SYMBOL, 35386 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35387 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35388 UNICODE_MATH_SYMBOL 35389 }, 35390 { /* page 38, index 35 */ 35391 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35392 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35393 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35394 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35395 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35396 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35397 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35398 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35399 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35400 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35401 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35402 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35403 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35404 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35405 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35406 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35407 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35408 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35409 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35410 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35411 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35412 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35413 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35414 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35415 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35416 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35417 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35418 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35419 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35420 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35421 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35422 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35423 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35424 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35425 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35426 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35427 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35428 UNICODE_MATH_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35429 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35430 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35431 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35432 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35433 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35434 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35435 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35436 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35437 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35438 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35439 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35440 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35441 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35442 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35443 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35444 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35445 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35446 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35447 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35448 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35449 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35450 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35451 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35452 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35453 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35454 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35455 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35456 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35457 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35458 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35459 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35460 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35461 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35462 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35463 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35464 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35465 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35466 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35467 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35468 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35469 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35470 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35471 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35472 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35473 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35474 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35475 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35476 UNICODE_OTHER_SYMBOL 35477 }, 35478 { /* page 39, index 36 */ 35479 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35480 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35481 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35482 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35483 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35484 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35485 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35486 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35487 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35488 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35489 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35490 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35491 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35492 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35493 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35494 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35495 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35496 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35497 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35498 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35499 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35500 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35501 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35502 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35503 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35504 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35505 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35506 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35507 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35508 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35509 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35510 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35511 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35512 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35513 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35514 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 35515 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 35516 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 35517 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 35518 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 35519 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 35520 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 35521 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35522 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35523 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35524 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35525 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35526 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35527 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35528 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35529 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35530 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35531 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35532 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35533 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35534 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35535 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35536 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35537 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35538 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35539 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35540 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35541 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35542 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35543 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35544 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35545 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_MATH_SYMBOL, 35546 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35547 UNICODE_MATH_SYMBOL, UNICODE_OPEN_PUNCTUATION, 35548 UNICODE_CLOSE_PUNCTUATION, UNICODE_MATH_SYMBOL, 35549 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35550 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35551 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35552 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35553 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35554 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35555 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35556 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35557 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35558 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35559 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 35560 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 35561 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 35562 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 35563 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 35564 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35565 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35566 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35567 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35568 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35569 UNICODE_MATH_SYMBOL 35570 }, 35571 { /* page 41, index 37 */ 35572 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35573 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35574 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35575 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35576 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35577 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35578 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35579 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35580 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35581 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35582 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35583 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35584 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35585 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35586 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35587 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35588 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35589 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35590 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35591 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35592 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35593 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35594 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35595 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35596 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35597 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35598 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35599 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35600 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35601 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35602 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35603 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35604 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35605 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35606 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35607 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35608 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35609 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35610 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35611 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35612 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35613 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35614 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35615 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_OPEN_PUNCTUATION, 35616 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 35617 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 35618 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 35619 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 35620 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 35621 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 35622 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 35623 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 35624 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 35625 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 35626 UNICODE_CLOSE_PUNCTUATION, UNICODE_MATH_SYMBOL, 35627 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35628 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35629 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35630 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35631 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35632 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35633 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35634 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35635 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35636 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35637 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35638 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35639 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35640 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35641 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35642 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35643 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35644 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35645 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35646 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35647 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_OPEN_PUNCTUATION, 35648 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 35649 UNICODE_CLOSE_PUNCTUATION, UNICODE_MATH_SYMBOL, 35650 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35651 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35652 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35653 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35654 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35655 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35656 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35657 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35658 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35659 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35660 UNICODE_MATH_SYMBOL, UNICODE_OPEN_PUNCTUATION, 35661 UNICODE_CLOSE_PUNCTUATION, UNICODE_MATH_SYMBOL, 35662 UNICODE_MATH_SYMBOL 35663 }, 35664 { /* page 43, index 38 */ 35665 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35666 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35667 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35668 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35669 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35670 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35671 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35672 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35673 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35674 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35675 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35676 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35677 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35678 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35679 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35680 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35681 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35682 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35683 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35684 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35685 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35686 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35687 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35688 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_MATH_SYMBOL, 35689 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35690 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_OTHER_SYMBOL, 35691 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35692 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35693 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35694 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35695 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35696 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35697 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35698 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35699 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35700 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35701 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35702 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35703 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 35704 UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35705 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35706 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35707 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35708 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35709 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35710 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35711 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35712 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35713 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35714 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35715 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, 35716 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35717 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35718 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35719 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35720 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35721 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35722 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35723 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35724 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35725 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35726 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35727 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35728 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35729 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35730 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35731 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35732 UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35733 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35734 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35735 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35736 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35737 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35738 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35739 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35740 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35741 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35742 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35743 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, 35744 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35745 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35746 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35747 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35748 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35749 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35750 UNICODE_UNASSIGNED 35751 }, 35752 { /* page 44, index 39 */ 35753 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35754 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35755 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35756 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35757 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35758 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35759 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35760 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35761 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35762 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35763 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35764 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35765 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35766 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35767 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35768 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35769 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35770 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35771 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35772 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35773 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35774 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35775 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35776 UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, 35777 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35778 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35779 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35780 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35781 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35782 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35783 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35784 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35785 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35786 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35787 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35788 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35789 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35790 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35791 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35792 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35793 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35794 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35795 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35796 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35797 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35798 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35799 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35800 UNICODE_LOWERCASE_LETTER, UNICODE_UNASSIGNED, 35801 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35802 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35803 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35804 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35805 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35806 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35807 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35808 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35809 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35810 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35811 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35812 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35813 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35814 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35815 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 35816 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35817 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35818 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35819 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35820 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35821 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35822 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35823 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35824 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35825 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35826 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35827 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35828 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35829 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35830 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35831 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35832 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35833 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35834 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35835 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35836 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35837 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35838 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35839 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35840 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35841 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35842 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35843 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35844 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35845 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35846 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35847 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35848 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35849 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35850 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35851 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35852 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35853 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35854 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35855 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35856 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35857 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35858 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35859 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35860 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35861 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35862 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35863 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35864 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35865 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35866 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35867 UNICODE_LOWERCASE_LETTER, UNICODE_OTHER_SYMBOL, 35868 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35869 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35870 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35871 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35872 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35873 UNICODE_NON_SPACING_MARK, UNICODE_UPPERCASE_LETTER, 35874 UNICODE_LOWERCASE_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35875 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35876 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 35877 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 35878 UNICODE_OTHER_NUMBER, UNICODE_OTHER_PUNCTUATION, 35879 UNICODE_OTHER_PUNCTUATION 35880 }, 35881 { /* page 45, index 40 */ 35882 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35883 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35884 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35885 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35886 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35887 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35888 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35889 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35890 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35891 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35892 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35893 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35894 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35895 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35896 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35897 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35898 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35899 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35900 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35901 UNICODE_UNASSIGNED, UNICODE_LOWERCASE_LETTER, UNICODE_UNASSIGNED, 35902 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35903 UNICODE_UNASSIGNED, UNICODE_LOWERCASE_LETTER, UNICODE_UNASSIGNED, 35904 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35905 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35906 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35907 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35908 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35909 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35910 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35911 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35912 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35913 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35914 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35915 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35916 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35917 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35918 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35919 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35920 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35921 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35922 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35923 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35924 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35925 UNICODE_UNASSIGNED, UNICODE_MODIFIER_LETTER, 35926 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35927 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35928 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35929 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35930 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35931 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 35932 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35933 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35934 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35935 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35936 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35937 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35938 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35939 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35940 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35941 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35942 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35943 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35944 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 35945 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35946 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35947 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 35948 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35949 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35950 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35951 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35952 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 35953 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35954 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35955 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 35956 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35957 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35958 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35959 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35960 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 35961 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35962 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35963 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 35964 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35965 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35966 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35967 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35968 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35969 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35970 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35971 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35972 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35973 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35974 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35975 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35976 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35977 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35978 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35979 UNICODE_NON_SPACING_MARK 35980 }, 35981 { /* page 46, index 41 */ 35982 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 35983 UNICODE_INITIAL_PUNCTUATION, UNICODE_FINAL_PUNCTUATION, 35984 UNICODE_INITIAL_PUNCTUATION, UNICODE_FINAL_PUNCTUATION, 35985 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 35986 UNICODE_OTHER_PUNCTUATION, UNICODE_INITIAL_PUNCTUATION, 35987 UNICODE_FINAL_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 35988 UNICODE_INITIAL_PUNCTUATION, UNICODE_FINAL_PUNCTUATION, 35989 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 35990 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 35991 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 35992 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 35993 UNICODE_OTHER_PUNCTUATION, UNICODE_DASH_PUNCTUATION, 35994 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 35995 UNICODE_DASH_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 35996 UNICODE_INITIAL_PUNCTUATION, UNICODE_FINAL_PUNCTUATION, 35997 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 35998 UNICODE_INITIAL_PUNCTUATION, UNICODE_FINAL_PUNCTUATION, 35999 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 36000 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 36001 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 36002 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 36003 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36004 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36005 UNICODE_OTHER_PUNCTUATION, UNICODE_MODIFIER_LETTER, 36006 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36007 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36008 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36009 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36010 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36011 UNICODE_DASH_PUNCTUATION, UNICODE_DASH_PUNCTUATION, 36012 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36013 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36014 UNICODE_DASH_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36015 UNICODE_OPEN_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36016 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36017 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36018 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36019 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36020 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36021 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36022 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36023 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36024 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36025 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36026 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36027 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36028 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36029 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36030 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36031 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36032 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36033 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36034 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36035 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36036 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36037 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36038 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36039 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36040 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36041 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36042 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36043 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36044 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36045 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 36046 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36047 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36048 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36049 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36050 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36051 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36052 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36053 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36054 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36055 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36056 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36057 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36058 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36059 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36060 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36061 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36062 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36063 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36064 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36065 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36066 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36067 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36068 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36069 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36070 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36071 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36072 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36073 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36074 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36075 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 36076 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36077 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36078 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36079 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 36080 }, 36081 { /* page 47, index 42 */ 36082 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36083 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36084 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36085 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36086 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36087 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36088 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36089 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36090 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36091 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36092 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36093 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36094 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36095 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36096 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36097 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36098 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36099 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36100 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36101 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36102 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36103 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36104 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36105 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36106 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36107 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36108 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36109 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36110 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36111 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36112 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36113 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36114 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36115 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36116 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36117 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36118 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36119 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36120 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36121 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36122 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36123 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36124 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36125 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36126 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36127 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36128 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36129 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36130 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36131 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36132 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36133 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36134 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36135 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36136 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36137 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36138 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36139 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36140 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36141 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36142 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36143 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36144 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36145 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36146 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36147 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36148 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36149 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36150 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36151 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36152 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36153 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36154 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36155 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36156 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36157 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36158 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36159 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36160 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36161 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36162 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36163 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36164 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36165 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36166 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36167 UNICODE_UNASSIGNED 36168 }, 36169 { /* page 48, index 43 */ 36170 UNICODE_SPACE_SEPARATOR, UNICODE_OTHER_PUNCTUATION, 36171 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36172 UNICODE_OTHER_SYMBOL, UNICODE_MODIFIER_LETTER, 36173 UNICODE_OTHER_LETTER, UNICODE_LETTER_NUMBER, 36174 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 36175 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 36176 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 36177 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 36178 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 36179 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36180 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 36181 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 36182 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 36183 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 36184 UNICODE_DASH_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 36185 UNICODE_CLOSE_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 36186 UNICODE_OTHER_SYMBOL, UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 36187 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 36188 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 36189 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 36190 UNICODE_LETTER_NUMBER, UNICODE_NON_SPACING_MARK, 36191 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 36192 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 36193 UNICODE_SPACING_MARK, UNICODE_DASH_PUNCTUATION, 36194 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 36195 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 36196 UNICODE_MODIFIER_LETTER, UNICODE_OTHER_SYMBOL, 36197 UNICODE_OTHER_SYMBOL, UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 36198 UNICODE_LETTER_NUMBER, UNICODE_MODIFIER_LETTER, 36199 UNICODE_OTHER_LETTER, UNICODE_OTHER_PUNCTUATION, 36200 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 36201 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36202 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36203 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36204 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36205 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36206 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36207 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36208 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36209 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36210 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36211 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36212 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36213 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36214 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36215 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36216 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36217 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36218 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36219 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36220 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36221 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36222 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36223 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36224 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36225 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36226 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36227 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36228 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36229 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 36230 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 36231 UNICODE_NON_SPACING_MARK, UNICODE_MODIFIER_SYMBOL, 36232 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_LETTER, 36233 UNICODE_MODIFIER_LETTER, UNICODE_OTHER_LETTER, 36234 UNICODE_DASH_PUNCTUATION, UNICODE_OTHER_LETTER, 36235 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36236 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36237 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36238 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36239 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36240 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36241 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36242 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36243 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36244 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36245 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36246 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36247 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36248 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36249 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36250 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36251 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36252 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36253 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36254 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36255 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36256 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36257 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36258 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36259 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36260 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36261 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36262 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36263 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36264 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36265 UNICODE_OTHER_PUNCTUATION, UNICODE_MODIFIER_LETTER, 36266 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 36267 UNICODE_OTHER_LETTER 36268 }, 36269 { /* page 49, index 44 */ 36270 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36271 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 36272 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36273 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36274 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36275 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36276 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36277 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36278 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36279 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36280 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36281 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36282 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36283 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36284 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36285 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 36286 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36287 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36288 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36289 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36290 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36291 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36292 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36293 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36294 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36295 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36296 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36297 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36298 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36299 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36300 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36301 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36302 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36303 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36304 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36305 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36306 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36307 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36308 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36309 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36310 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36311 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36312 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36313 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36314 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36315 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36316 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36317 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 36318 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_NUMBER, 36319 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36320 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36321 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36322 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36323 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36324 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36325 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36326 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36327 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36328 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36329 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36330 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36331 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36332 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36333 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36334 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36335 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36336 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36337 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36338 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36339 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36340 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36341 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36342 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36343 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36344 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36345 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36346 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36347 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36348 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36349 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36350 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36351 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36352 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36353 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36354 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36355 UNICODE_OTHER_LETTER 36356 }, 36357 { /* page 50, index 45 */ 36358 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36359 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36360 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36361 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36362 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36363 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36364 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36365 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36366 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36367 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36368 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_OTHER_NUMBER, 36369 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36370 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36371 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36372 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36373 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36374 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36375 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36376 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36377 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36378 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36379 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36380 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36381 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36382 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36383 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36384 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_SYMBOL, 36385 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36386 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36387 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36388 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36389 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36390 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36391 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36392 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36393 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36394 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36395 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36396 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36397 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36398 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36399 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36400 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_NUMBER, 36401 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36402 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36403 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36404 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36405 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36406 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36407 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36408 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36409 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36410 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36411 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36412 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36413 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36414 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36415 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36416 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36417 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36418 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36419 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36420 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36421 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36422 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36423 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36424 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36425 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36426 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36427 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36428 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36429 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36430 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36431 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36432 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36433 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36434 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36435 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36436 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36437 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36438 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36439 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36440 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36441 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36442 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36443 UNICODE_UNASSIGNED 36444 }, 36445 { /* page 77, index 46 */ 36446 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36447 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36448 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36449 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36450 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36451 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36452 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36453 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36454 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36455 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36456 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36457 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36458 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36459 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36460 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36461 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36462 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36463 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36464 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36465 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36466 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36467 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36468 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36469 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36470 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36471 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36472 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36473 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36474 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36475 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36476 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36477 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36478 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36479 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36480 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36481 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36482 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36483 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36484 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36485 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36486 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36487 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36488 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36489 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36490 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36491 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36492 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36493 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36494 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36495 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36496 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36497 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36498 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36499 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36500 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36501 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36502 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36503 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36504 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36505 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36506 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 36507 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36508 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36509 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36510 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36511 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36512 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36513 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36514 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36515 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36516 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36517 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36518 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36519 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36520 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36521 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36522 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36523 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36524 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36525 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36526 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36527 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36528 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36529 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36530 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36531 UNICODE_OTHER_SYMBOL 36532 }, 36533 { /* page 159, index 47 */ 36534 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36535 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36536 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36537 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36538 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36539 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36540 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36541 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36542 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36543 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36544 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36545 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36546 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36547 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36548 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36549 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36550 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36551 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36552 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36553 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36554 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36555 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36556 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36557 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36558 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36559 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36560 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36561 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36562 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36563 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36564 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36565 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36566 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36567 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36568 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36569 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36570 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36571 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36572 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36573 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36574 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36575 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36576 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36577 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36578 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36579 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36580 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36581 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36582 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36583 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36584 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36585 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36586 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36587 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36588 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36589 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36590 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36591 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36592 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36593 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36594 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36595 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36596 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36597 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36598 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36599 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36600 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36601 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36602 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36603 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36604 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36605 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36606 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36607 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36608 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36609 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36610 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36611 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36612 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36613 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36614 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36615 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36616 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36617 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36618 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36619 UNICODE_UNASSIGNED 36620 }, 36621 { /* page 160, index 48 */ 36622 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36623 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36624 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36625 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36626 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36627 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36628 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36629 UNICODE_MODIFIER_LETTER, UNICODE_OTHER_LETTER, 36630 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36631 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36632 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36633 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36634 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36635 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36636 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36637 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36638 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36639 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36640 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36641 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36642 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36643 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36644 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36645 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36646 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36647 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36648 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36649 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36650 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36651 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36652 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36653 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36654 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36655 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36656 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36657 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36658 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36659 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36660 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36661 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36662 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36663 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36664 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36665 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36666 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36667 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36668 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36669 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36670 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36671 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36672 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36673 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36674 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36675 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36676 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36677 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36678 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36679 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36680 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36681 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36682 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36683 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36684 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36685 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36686 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36687 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36688 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36689 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36690 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36691 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36692 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36693 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36694 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36695 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36696 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36697 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36698 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36699 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36700 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36701 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36702 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36703 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36704 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36705 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36706 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36707 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER 36708 }, 36709 { /* page 164, index 49 */ 36710 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36711 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36712 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36713 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36714 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36715 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36716 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36717 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36718 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36719 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36720 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36721 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36722 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36723 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36724 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36725 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36726 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36727 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36728 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36729 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36730 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36731 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36732 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36733 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36734 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36735 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36736 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36737 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36738 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36739 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36740 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36741 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36742 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36743 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36744 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36745 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36746 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36747 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36748 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36749 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36750 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36751 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36752 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36753 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36754 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36755 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36756 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36757 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36758 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36759 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36760 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36761 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36762 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36763 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36764 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36765 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36766 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36767 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36768 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36769 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36770 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36771 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36772 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36773 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36774 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36775 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36776 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36777 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36778 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36779 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36780 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36781 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36782 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36783 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36784 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36785 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36786 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36787 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36788 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36789 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36790 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36791 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36792 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36793 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 36794 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 36795 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 36796 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION 36797 }, 36798 { /* page 166, index 50 */ 36799 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36800 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36801 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36802 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36803 UNICODE_MODIFIER_LETTER, UNICODE_OTHER_PUNCTUATION, 36804 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36805 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36806 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36807 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36808 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36809 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36810 UNICODE_OTHER_LETTER, UNICODE_DECIMAL_NUMBER, 36811 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 36812 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 36813 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 36814 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 36815 UNICODE_DECIMAL_NUMBER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36816 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36817 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36818 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36819 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36820 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36821 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36822 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 36823 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36824 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36825 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36826 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36827 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36828 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36829 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36830 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36831 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36832 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36833 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36834 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36835 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36836 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36837 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36838 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36839 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36840 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36841 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36842 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36843 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36844 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36845 UNICODE_LOWERCASE_LETTER, UNICODE_OTHER_LETTER, 36846 UNICODE_NON_SPACING_MARK, UNICODE_ENCLOSING_MARK, 36847 UNICODE_ENCLOSING_MARK, UNICODE_ENCLOSING_MARK, 36848 UNICODE_OTHER_PUNCTUATION, UNICODE_NON_SPACING_MARK, 36849 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 36850 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 36851 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 36852 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 36853 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 36854 UNICODE_MODIFIER_LETTER, UNICODE_UPPERCASE_LETTER, 36855 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36856 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36857 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36858 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36859 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36860 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36861 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36862 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36863 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36864 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36865 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36866 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36867 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36868 UNICODE_LOWERCASE_LETTER, UNICODE_MODIFIER_LETTER, 36869 UNICODE_MODIFIER_LETTER, UNICODE_NON_SPACING_MARK, 36870 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 36871 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36872 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36873 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36874 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36875 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36876 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36877 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36878 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36879 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36880 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36881 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36882 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36883 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36884 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36885 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36886 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36887 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36888 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36889 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36890 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36891 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36892 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36893 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36894 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 36895 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 36896 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 36897 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 36898 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 36899 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 36900 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36901 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36902 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36903 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36904 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36905 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 36906 }, 36907 { /* page 167, index 51 */ 36908 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 36909 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 36910 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 36911 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 36912 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 36913 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 36914 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 36915 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 36916 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 36917 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 36918 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 36919 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_LETTER, 36920 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 36921 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 36922 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 36923 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 36924 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 36925 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36926 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36927 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36928 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36929 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36930 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36931 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36932 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36933 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36934 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36935 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36936 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36937 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36938 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36939 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36940 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36941 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36942 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36943 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36944 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36945 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36946 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36947 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36948 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36949 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36950 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36951 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36952 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36953 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36954 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36955 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36956 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36957 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36958 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36959 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36960 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36961 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36962 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36963 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36964 UNICODE_MODIFIER_LETTER, UNICODE_LOWERCASE_LETTER, 36965 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36966 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36967 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36968 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36969 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36970 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36971 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36972 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36973 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36974 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36975 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36976 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_SYMBOL, 36977 UNICODE_MODIFIER_SYMBOL, UNICODE_UPPERCASE_LETTER, 36978 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36979 UNICODE_LOWERCASE_LETTER, UNICODE_OTHER_LETTER, 36980 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36981 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36982 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36983 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36984 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36985 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36986 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36987 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36988 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36989 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36990 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36991 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36992 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36993 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36994 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36995 UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, 36996 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36997 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36998 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36999 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37000 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37001 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37002 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37003 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37004 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37005 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37006 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37007 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37008 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37009 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37010 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37011 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37012 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37013 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37014 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37015 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37016 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37017 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37018 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37019 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37020 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37021 UNICODE_OTHER_LETTER, UNICODE_MODIFIER_LETTER, 37022 UNICODE_MODIFIER_LETTER, UNICODE_LOWERCASE_LETTER, 37023 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37024 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER 37025 }, 37026 { /* page 168, index 52 */ 37027 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37028 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 37029 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37030 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 37031 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37032 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 37033 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37034 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37035 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37036 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37037 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37038 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37039 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37040 UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 37041 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37042 UNICODE_SPACING_MARK, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 37043 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 37044 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37045 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 37046 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 37047 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 37048 UNICODE_CURRENCY_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 37049 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37050 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 37051 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37052 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37053 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37054 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37055 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37056 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37057 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37058 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37059 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37060 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37061 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37062 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37063 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37064 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37065 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37066 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37067 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37068 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37069 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37070 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37071 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37072 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, 37073 UNICODE_SPACING_MARK, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37074 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37075 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37076 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37077 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37078 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37079 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37080 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37081 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37082 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37083 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37084 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37085 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37086 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37087 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37088 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37089 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37090 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 37091 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 37092 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 37093 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 37094 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 37095 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37096 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37097 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37098 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37099 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37100 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37101 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37102 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37103 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37104 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, 37105 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37106 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 37107 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37108 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37109 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37110 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37111 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37112 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37113 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37114 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37115 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 37116 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37117 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37118 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37119 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 37120 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 37121 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 37122 }, 37123 { /* page 169, index 53 */ 37124 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37125 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37126 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37127 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37128 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37129 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37130 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37131 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37132 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37133 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37134 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37135 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37136 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37137 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37138 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 37139 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37140 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37141 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37142 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 37143 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 37144 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37145 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37146 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37147 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37148 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37149 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37150 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37151 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 37152 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37153 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37154 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37155 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37156 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37157 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, 37158 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37159 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37160 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37161 UNICODE_UNASSIGNED, UNICODE_OTHER_PUNCTUATION, 37162 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37163 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37164 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37165 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37166 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37167 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37168 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37169 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37170 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37171 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 37172 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 37173 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37174 UNICODE_SPACING_MARK, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37175 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37176 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37177 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37178 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37179 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37180 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37181 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37182 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37183 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37184 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37185 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37186 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37187 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37188 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37189 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37190 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 37191 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37192 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37193 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 37194 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37195 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 37196 UNICODE_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 37197 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37198 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37199 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37200 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37201 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37202 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37203 UNICODE_UNASSIGNED, UNICODE_MODIFIER_LETTER, 37204 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37205 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37206 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37207 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37208 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, 37209 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37210 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37211 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37212 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37213 UNICODE_NON_SPACING_MARK, UNICODE_MODIFIER_LETTER, 37214 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37215 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37216 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37217 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37218 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37219 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37220 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37221 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37222 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37223 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED 37224 }, 37225 { /* page 170, index 54 */ 37226 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37227 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37228 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37229 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37230 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37231 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37232 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37233 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37234 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37235 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37236 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37237 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37238 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37239 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37240 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37241 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37242 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37243 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 37244 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37245 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 37246 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37247 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37248 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37249 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37250 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37251 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 37252 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37253 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37254 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 37255 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37256 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37257 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37258 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37259 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37260 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, 37261 UNICODE_UNASSIGNED, UNICODE_OTHER_PUNCTUATION, 37262 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37263 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 37264 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37265 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37266 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37267 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37268 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37269 UNICODE_MODIFIER_LETTER, UNICODE_OTHER_LETTER, 37270 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37271 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_SYMBOL, 37272 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_LETTER, 37273 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37274 UNICODE_SPACING_MARK, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37275 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37276 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37277 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37278 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37279 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37280 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37281 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37282 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37283 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37284 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37285 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37286 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37287 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37288 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37289 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37290 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37291 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 37292 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37293 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 37294 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 37295 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 37296 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37297 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 37298 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 37299 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 37300 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37301 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37302 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37303 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37304 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37305 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37306 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37307 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 37308 UNICODE_OTHER_LETTER, UNICODE_MODIFIER_LETTER, 37309 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37310 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37311 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37312 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37313 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, 37314 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37315 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 37316 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37317 UNICODE_OTHER_LETTER, UNICODE_MODIFIER_LETTER, 37318 UNICODE_MODIFIER_LETTER, UNICODE_SPACING_MARK, 37319 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37320 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37321 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37322 UNICODE_UNASSIGNED 37323 }, 37324 { /* page 171, index 55 */ 37325 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37326 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37327 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37328 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37329 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37330 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 37331 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37332 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 37333 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37334 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37335 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 37336 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37337 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37338 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37339 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37340 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 37341 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37342 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37343 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37344 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37345 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37346 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37347 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37348 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37349 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37350 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37351 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37352 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37353 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37354 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37355 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37356 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37357 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37358 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37359 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37360 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37361 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37362 UNICODE_LOWERCASE_LETTER, UNICODE_MODIFIER_SYMBOL, 37363 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 37364 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 37365 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37366 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37367 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37368 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37369 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37370 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37371 UNICODE_UNASSIGNED, UNICODE_LOWERCASE_LETTER, 37372 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37373 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37374 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37375 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37376 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37377 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37378 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37379 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37380 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37381 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37382 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37383 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37384 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37385 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37386 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37387 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37388 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37389 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37390 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37391 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37392 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37393 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37394 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37395 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37396 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37397 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37398 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37399 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37400 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37401 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37402 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37403 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37404 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37405 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37406 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37407 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37408 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37409 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37410 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37411 UNICODE_LOWERCASE_LETTER, UNICODE_OTHER_LETTER, 37412 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37413 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37414 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37415 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37416 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37417 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37418 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37419 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37420 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37421 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37422 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37423 UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 37424 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 37425 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37426 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 37427 UNICODE_OTHER_PUNCTUATION, UNICODE_SPACING_MARK, 37428 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37429 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37430 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37431 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37432 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37433 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, 37434 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37435 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 37436 }, 37437 { /* page 215, index 56 */ 37438 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37439 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37440 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37441 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37442 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37443 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37444 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37445 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37446 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37447 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37448 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37449 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37450 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37451 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37452 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37453 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37454 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37455 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37456 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37457 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37458 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37459 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37460 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37461 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37462 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37463 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37464 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37465 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37466 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37467 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37468 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37469 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37470 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37471 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37472 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37473 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37474 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37475 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37476 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37477 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37478 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37479 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37480 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37481 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37482 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37483 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37484 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37485 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37486 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37487 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37488 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37489 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37490 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37491 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37492 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 37493 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37494 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37495 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37496 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 37497 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37498 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37499 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37500 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37501 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37502 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37503 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37504 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37505 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 37506 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37507 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37508 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37509 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37510 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37511 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37512 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37513 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37514 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37515 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37516 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37517 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37518 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37519 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37520 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37521 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37522 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37523 UNICODE_UNASSIGNED 37524 }, 37525 { /* page 250, index 57 */ 37526 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37527 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37528 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37529 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37530 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37531 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37532 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37533 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37534 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37535 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37536 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37537 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37538 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37539 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37540 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37541 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37542 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37543 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37544 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37545 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37546 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37547 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37548 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37549 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37550 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37551 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37552 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37553 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37554 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37555 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37556 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37557 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37558 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37559 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37560 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37561 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37562 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 37563 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37564 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37565 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37566 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37567 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37568 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37569 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37570 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37571 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37572 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37573 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37574 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37575 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37576 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37577 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37578 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37579 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37580 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37581 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37582 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37583 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37584 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37585 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37586 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37587 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37588 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37589 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37590 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37591 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37592 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37593 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37594 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37595 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37596 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37597 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37598 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 37599 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37600 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37601 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37602 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37603 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37604 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37605 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37606 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37607 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37608 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37609 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37610 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37611 UNICODE_UNASSIGNED 37612 }, 37613 { /* page 251, index 58 */ 37614 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37615 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37616 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37617 UNICODE_LOWERCASE_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37618 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37619 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37620 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37621 UNICODE_UNASSIGNED, UNICODE_LOWERCASE_LETTER, 37622 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37623 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37624 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37625 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 37626 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 37627 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37628 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37629 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37630 UNICODE_MATH_SYMBOL, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37631 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37632 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37633 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37634 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 37635 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37636 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 37637 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 37638 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 37639 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 37640 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37641 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37642 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37643 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37644 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37645 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37646 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37647 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37648 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37649 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37650 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37651 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37652 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37653 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37654 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37655 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37656 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37657 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37658 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37659 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37660 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37661 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37662 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37663 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37664 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37665 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37666 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37667 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37668 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37669 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37670 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37671 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37672 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37673 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37674 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37675 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37676 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 37677 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 37678 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 37679 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 37680 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 37681 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 37682 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 37683 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 37684 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37685 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37686 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37687 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37688 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37689 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 37690 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37691 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37692 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37693 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37694 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37695 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37696 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37697 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37698 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37699 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37700 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37701 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37702 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37703 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37704 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER 37705 }, 37706 { /* page 253, index 59 */ 37707 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37708 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37709 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37710 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37711 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37712 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37713 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37714 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37715 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37716 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37717 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37718 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37719 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37720 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37721 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37722 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37723 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37724 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37725 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37726 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37727 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37728 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 37729 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37730 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37731 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37732 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37733 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37734 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37735 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37736 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37737 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37738 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37739 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37740 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37741 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37742 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37743 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37744 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37745 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37746 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37747 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37748 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37749 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37750 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37751 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37752 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37753 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37754 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37755 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 37756 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37757 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37758 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37759 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37760 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37761 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37762 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37763 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37764 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37765 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37766 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37767 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37768 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37769 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37770 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37771 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37772 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37773 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37774 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37775 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37776 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37777 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37778 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37779 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37780 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37781 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37782 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37783 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37784 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37785 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37786 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37787 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 37788 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37789 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37790 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37791 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37792 UNICODE_CURRENCY_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 37793 UNICODE_UNASSIGNED 37794 }, 37795 { /* page 254, index 60 */ 37796 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37797 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37798 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37799 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37800 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37801 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37802 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37803 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37804 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37805 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37806 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37807 UNICODE_OTHER_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 37808 UNICODE_CLOSE_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37809 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37810 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37811 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37812 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37813 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37814 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37815 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37816 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37817 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37818 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37819 UNICODE_OTHER_PUNCTUATION, UNICODE_DASH_PUNCTUATION, 37820 UNICODE_DASH_PUNCTUATION, UNICODE_CONNECT_PUNCTUATION, 37821 UNICODE_CONNECT_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 37822 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 37823 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 37824 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 37825 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 37826 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 37827 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 37828 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 37829 UNICODE_CLOSE_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37830 UNICODE_OTHER_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 37831 UNICODE_CLOSE_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37832 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37833 UNICODE_OTHER_PUNCTUATION, UNICODE_CONNECT_PUNCTUATION, 37834 UNICODE_CONNECT_PUNCTUATION, UNICODE_CONNECT_PUNCTUATION, 37835 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37836 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, 37837 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37838 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37839 UNICODE_DASH_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 37840 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 37841 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 37842 UNICODE_CLOSE_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37843 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37844 UNICODE_MATH_SYMBOL, UNICODE_DASH_PUNCTUATION, UNICODE_MATH_SYMBOL, 37845 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_UNASSIGNED, 37846 UNICODE_OTHER_PUNCTUATION, UNICODE_CURRENCY_SYMBOL, 37847 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37848 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37849 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37850 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37851 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37852 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37853 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37854 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37855 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37856 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37857 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37858 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37859 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37860 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37861 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37862 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37863 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37864 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37865 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37866 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37867 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37868 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37869 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37870 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37871 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37872 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37873 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37874 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37875 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37876 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37877 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37878 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37879 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37880 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37881 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37882 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37883 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37884 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37885 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37886 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37887 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37888 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37889 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37890 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37891 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37892 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37893 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37894 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37895 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37896 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37897 UNICODE_FORMAT 37898 }, 37899 { /* page 255, index 61 */ 37900 UNICODE_UNASSIGNED, UNICODE_OTHER_PUNCTUATION, 37901 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37902 UNICODE_CURRENCY_SYMBOL, UNICODE_OTHER_PUNCTUATION, 37903 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37904 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 37905 UNICODE_OTHER_PUNCTUATION, UNICODE_MATH_SYMBOL, 37906 UNICODE_OTHER_PUNCTUATION, UNICODE_DASH_PUNCTUATION, 37907 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37908 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37909 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37910 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37911 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37912 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37913 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37914 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 37915 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37916 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37917 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37918 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37919 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37920 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37921 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37922 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37923 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37924 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37925 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37926 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37927 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37928 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37929 UNICODE_OPEN_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37930 UNICODE_CLOSE_PUNCTUATION, UNICODE_MODIFIER_SYMBOL, 37931 UNICODE_CONNECT_PUNCTUATION, UNICODE_MODIFIER_SYMBOL, 37932 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37933 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37934 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37935 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37936 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37937 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37938 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37939 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37940 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37941 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37942 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37943 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37944 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37945 UNICODE_OPEN_PUNCTUATION, UNICODE_MATH_SYMBOL, 37946 UNICODE_CLOSE_PUNCTUATION, UNICODE_MATH_SYMBOL, 37947 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 37948 UNICODE_OTHER_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 37949 UNICODE_CLOSE_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37950 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 37951 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37952 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37953 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37954 UNICODE_MODIFIER_LETTER, UNICODE_OTHER_LETTER, 37955 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37956 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37957 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37958 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37959 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37960 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37961 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37962 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37963 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37964 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37965 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37966 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37967 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37968 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37969 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37970 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 37971 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37972 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37973 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37974 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37975 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37976 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37977 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37978 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37979 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37980 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37981 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37982 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37983 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37984 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37985 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37986 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37987 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 37988 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37989 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 37990 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37991 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37992 UNICODE_UNASSIGNED, UNICODE_CURRENCY_SYMBOL, 37993 UNICODE_CURRENCY_SYMBOL, UNICODE_MATH_SYMBOL, 37994 UNICODE_MODIFIER_SYMBOL, UNICODE_OTHER_SYMBOL, 37995 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 37996 UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, UNICODE_MATH_SYMBOL, 37997 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 37998 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 37999 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38000 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38001 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38002 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 38003 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 38004 UNICODE_UNASSIGNED 38005 }, 38006 { /* page 256, index 62 */ 38007 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38008 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38009 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38010 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38011 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38012 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38013 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38014 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38015 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38016 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38017 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38018 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38019 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38020 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38021 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38022 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38023 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38024 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38025 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38026 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 38027 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 38028 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38029 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38030 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38031 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38032 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38033 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 38034 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38035 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38036 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38037 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38038 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38039 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38040 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38041 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38042 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38043 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38044 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38045 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38046 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38047 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38048 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38049 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 38050 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38051 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38052 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38053 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38054 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38055 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38056 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38057 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38058 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38059 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38060 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38061 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38062 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38063 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38064 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38065 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38066 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38067 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38068 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38069 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38070 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38071 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38072 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38073 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38074 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38075 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38076 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38077 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38078 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38079 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38080 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38081 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38082 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38083 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38084 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38085 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38086 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38087 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38088 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38089 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38090 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 38091 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38092 UNICODE_UNASSIGNED 38093 }, 38094 { /* page 257, index 63 */ 38095 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 38096 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38097 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_NUMBER, 38098 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38099 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38100 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38101 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38102 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38103 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38104 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38105 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38106 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38107 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38108 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38109 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38110 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38111 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38112 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_UNASSIGNED, 38113 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, 38114 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38115 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38116 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_LETTER_NUMBER, 38117 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38118 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38119 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38120 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38121 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38122 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38123 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38124 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38125 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38126 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38127 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38128 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38129 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38130 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38131 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38132 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38133 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38134 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38135 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38136 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38137 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38138 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38139 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38140 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38141 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38142 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, UNICODE_OTHER_NUMBER, 38143 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38144 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38145 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38146 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38147 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38148 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38149 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_NUMBER, 38150 UNICODE_OTHER_NUMBER, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38151 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, 38152 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38153 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38154 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38155 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 38156 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38157 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38158 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38159 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38160 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38161 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38162 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38163 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38164 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38165 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38166 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38167 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38168 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38169 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38170 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38171 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38172 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38173 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38174 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38175 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38176 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38177 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38178 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38179 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38180 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38181 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38182 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38183 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38184 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38185 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38186 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38187 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38188 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 38189 }, 38190 { /* page 258, index 64 */ 38191 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38192 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38193 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38194 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38195 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38196 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38197 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38198 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38199 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38200 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38201 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38202 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38203 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38204 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38205 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38206 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38207 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38208 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38209 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38210 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38211 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38212 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38213 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38214 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38215 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38216 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38217 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38218 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38219 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38220 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38221 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38222 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38223 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38224 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38225 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38226 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38227 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38228 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38229 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38230 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38231 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38232 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38233 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 38234 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38235 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38236 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38237 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38238 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38239 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38240 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38241 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38242 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38243 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38244 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38245 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38246 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38247 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38248 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38249 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38250 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38251 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38252 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38253 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38254 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38255 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38256 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38257 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38258 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38259 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38260 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 38261 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38262 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38263 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38264 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38265 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 38266 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38267 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38268 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38269 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38270 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38271 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38272 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38273 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38274 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38275 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38276 UNICODE_UNASSIGNED 38277 }, 38278 { /* page 259, index 65 */ 38279 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38280 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38281 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38282 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38283 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38284 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38285 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38286 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38287 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38288 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38289 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_NUMBER, 38290 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38291 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38292 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38293 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38294 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38295 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38296 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38297 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38298 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38299 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38300 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_LETTER_NUMBER, 38301 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38302 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38303 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_LETTER_NUMBER, 38304 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38305 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 38306 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38307 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38308 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38309 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38310 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38311 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38312 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38313 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38314 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38315 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38316 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38317 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38318 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 38319 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 38320 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 38321 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38322 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 38323 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38324 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38325 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38326 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38327 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38328 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38329 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38330 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38331 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38332 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 38333 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 38334 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38335 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38336 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38337 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38338 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38339 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38340 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38341 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38342 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38343 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38344 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38345 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 38346 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38347 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38348 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38349 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38350 UNICODE_OTHER_PUNCTUATION, UNICODE_LETTER_NUMBER, 38351 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38352 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, UNICODE_UNASSIGNED, 38353 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38354 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38355 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38356 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38357 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38358 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38359 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38360 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38361 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38362 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38363 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38364 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38365 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38366 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 38367 }, 38368 { /* page 260, index 66 */ 38369 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38370 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38371 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38372 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38373 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38374 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38375 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38376 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38377 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38378 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38379 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38380 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38381 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38382 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38383 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38384 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38385 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38386 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38387 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38388 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38389 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38390 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38391 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38392 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38393 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38394 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38395 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38396 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38397 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38398 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38399 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38400 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38401 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38402 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38403 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38404 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38405 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38406 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38407 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38408 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38409 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38410 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38411 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38412 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38413 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38414 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38415 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38416 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38417 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38418 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38419 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38420 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38421 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38422 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38423 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38424 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38425 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38426 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38427 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38428 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38429 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38430 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38431 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38432 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38433 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38434 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38435 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, 38436 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 38437 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 38438 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 38439 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 38440 UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38441 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38442 UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 38443 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38444 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38445 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38446 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38447 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38448 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38449 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38450 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38451 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38452 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38453 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38454 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38455 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38456 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38457 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38458 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38459 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38460 UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38461 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_LOWERCASE_LETTER, 38462 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38463 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38464 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38465 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38466 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38467 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38468 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38469 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38470 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38471 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38472 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38473 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38474 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38475 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38476 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38477 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38478 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38479 UNICODE_LOWERCASE_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38480 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 38481 }, 38482 { /* page 261, index 67 */ 38483 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38484 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38485 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38486 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38487 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38488 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38489 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38490 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38491 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38492 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38493 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38494 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38495 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38496 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38497 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38498 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38499 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38500 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38501 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38502 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38503 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38504 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38505 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38506 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38507 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38508 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38509 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38510 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38511 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38512 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38513 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38514 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38515 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38516 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38517 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38518 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38519 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38520 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38521 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38522 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38523 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38524 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38525 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38526 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38527 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38528 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38529 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38530 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38531 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38532 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38533 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38534 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38535 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38536 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38537 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38538 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38539 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38540 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38541 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38542 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38543 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38544 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38545 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38546 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38547 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38548 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38549 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38550 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38551 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38552 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38553 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38554 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38555 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38556 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38557 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38558 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38559 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38560 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38561 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38562 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38563 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38564 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38565 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38566 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38567 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38568 UNICODE_UNASSIGNED 38569 }, 38570 { /* page 263, index 68 */ 38571 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38572 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38573 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38574 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38575 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38576 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38577 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38578 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38579 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38580 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38581 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38582 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38583 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38584 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38585 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38586 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38587 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38588 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38589 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38590 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38591 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38592 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38593 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38594 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38595 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38596 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38597 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38598 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38599 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 38600 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38601 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38602 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38603 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38604 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38605 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 38606 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38607 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38608 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38609 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38610 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38611 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38612 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38613 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38614 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38615 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38616 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38617 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38618 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38619 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38620 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38621 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38622 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38623 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38624 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38625 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38626 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38627 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38628 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38629 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38630 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38631 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38632 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38633 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38634 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38635 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38636 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38637 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38638 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38639 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38640 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38641 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38642 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38643 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38644 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38645 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38646 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38647 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38648 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38649 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38650 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38651 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38652 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38653 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38654 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38655 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38656 UNICODE_UNASSIGNED 38657 }, 38658 { /* page 264, index 69 */ 38659 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38660 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38661 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 38662 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38663 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38664 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38665 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38666 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38667 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38668 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38669 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38670 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38671 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38672 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38673 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38674 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38675 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38676 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38677 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38678 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38679 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38680 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38681 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38682 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38683 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38684 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38685 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38686 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38687 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 38688 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_NUMBER, 38689 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38690 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38691 UNICODE_OTHER_NUMBER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38692 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38693 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38694 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38695 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38696 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38697 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38698 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38699 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_NUMBER, 38700 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38701 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38702 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38703 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38704 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38705 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38706 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38707 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38708 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38709 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38710 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38711 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38712 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38713 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38714 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38715 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38716 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38717 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38718 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38719 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38720 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38721 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38722 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38723 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38724 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38725 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38726 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38727 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38728 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38729 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38730 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38731 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38732 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38733 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38734 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38735 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38736 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38737 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38738 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38739 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38740 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 38741 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38742 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38743 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38744 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER 38745 }, 38746 { /* page 265, index 70 */ 38747 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38748 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38749 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38750 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38751 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38752 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38753 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38754 UNICODE_OTHER_LETTER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38755 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38756 UNICODE_OTHER_NUMBER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38757 UNICODE_UNASSIGNED, UNICODE_OTHER_PUNCTUATION, 38758 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38759 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38760 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38761 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38762 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38763 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38764 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38765 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38766 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 38767 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38768 UNICODE_UNASSIGNED, UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, 38769 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38770 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38771 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38772 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38773 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38774 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38775 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38776 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38777 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38778 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38779 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38780 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38781 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38782 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38783 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38784 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38785 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38786 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38787 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38788 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38789 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38790 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38791 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38792 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38793 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38794 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38795 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38796 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38797 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38798 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38799 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38800 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38801 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38802 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38803 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38804 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38805 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38806 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38807 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38808 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 38809 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38810 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_LETTER, 38811 UNICODE_OTHER_LETTER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38812 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38813 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38814 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38815 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38816 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_UNASSIGNED, 38817 UNICODE_UNASSIGNED, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38818 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38819 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38820 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38821 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38822 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38823 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38824 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38825 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38826 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38827 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38828 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38829 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38830 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38831 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38832 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER 38833 }, 38834 { /* page 266, index 71 */ 38835 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 38836 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 38837 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 38838 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38839 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38840 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 38841 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 38842 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38843 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 38844 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 38845 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38846 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38847 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38848 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38849 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38850 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38851 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38852 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38853 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38854 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38855 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 38856 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 38857 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38858 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, UNICODE_OTHER_NUMBER, 38859 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38860 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38861 UNICODE_OTHER_NUMBER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38862 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38863 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38864 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 38865 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 38866 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 38867 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 38868 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38869 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38870 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 38871 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38872 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38873 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38874 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38875 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38876 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38877 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38878 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38879 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38880 UNICODE_OTHER_LETTER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38881 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 38882 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38883 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38884 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38885 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38886 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38887 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38888 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38889 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38890 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38891 UNICODE_OTHER_LETTER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38892 UNICODE_OTHER_NUMBER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38893 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38894 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38895 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38896 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38897 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38898 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38899 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38900 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38901 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38902 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38903 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38904 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38905 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_SYMBOL, 38906 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38907 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38908 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38909 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38910 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38911 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38912 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38913 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38914 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38915 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 38916 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38917 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_NUMBER, 38918 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38919 UNICODE_OTHER_NUMBER, UNICODE_OTHER_PUNCTUATION, 38920 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 38921 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 38922 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 38923 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38924 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38925 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 38926 }, 38927 { /* page 267, index 72 */ 38928 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38929 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38930 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38931 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38932 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38933 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38934 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38935 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38936 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38937 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38938 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38939 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38940 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38941 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38942 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38943 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38944 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38945 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38946 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38947 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 38948 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 38949 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 38950 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 38951 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38952 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38953 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38954 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38955 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38956 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38957 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38958 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_NUMBER, 38959 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38960 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38961 UNICODE_OTHER_NUMBER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38962 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38963 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38964 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38965 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38966 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38967 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 38968 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38969 UNICODE_UNASSIGNED, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38970 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38971 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38972 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38973 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38974 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38975 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38976 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38977 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38978 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38979 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38980 UNICODE_UNASSIGNED, UNICODE_OTHER_PUNCTUATION, 38981 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 38982 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38983 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38984 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38985 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38986 UNICODE_UNASSIGNED, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38987 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38988 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_UNASSIGNED, 38989 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38990 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38991 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38992 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38993 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38994 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38995 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38996 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38997 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38998 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38999 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39000 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39001 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39002 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39003 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39004 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39005 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39006 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39007 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39008 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39009 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39010 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39011 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39012 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39013 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39014 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39015 UNICODE_UNASSIGNED 39016 }, 39017 { /* page 268, index 73 */ 39018 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39019 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39020 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39021 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39022 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39023 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39024 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39025 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39026 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39027 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39028 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39029 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39030 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39031 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39032 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39033 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39034 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39035 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39036 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39037 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39038 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39039 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39040 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39041 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39042 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39043 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39044 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39045 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39046 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39047 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39048 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39049 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39050 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39051 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39052 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39053 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39054 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39055 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39056 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39057 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39058 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39059 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39060 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 39061 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39062 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39063 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39064 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39065 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39066 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39067 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39068 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39069 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39070 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39071 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39072 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39073 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39074 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39075 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39076 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39077 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39078 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39079 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39080 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39081 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39082 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39083 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39084 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39085 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39086 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39087 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39088 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39089 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39090 UNICODE_UNASSIGNED, UNICODE_LOWERCASE_LETTER, 39091 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39092 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39093 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39094 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39095 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39096 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39097 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39098 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39099 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39100 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39101 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39102 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39103 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39104 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39105 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39106 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39107 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39108 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39109 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39110 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39111 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39112 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39113 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39114 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39115 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39116 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39117 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39118 UNICODE_UNASSIGNED, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39119 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39120 UNICODE_OTHER_NUMBER 39121 }, 39122 { /* page 270, index 74 */ 39123 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39124 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39125 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39126 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39127 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39128 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39129 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39130 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39131 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39132 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39133 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39134 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39135 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39136 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39137 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39138 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39139 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39140 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39141 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39142 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39143 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39144 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39145 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39146 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39147 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39148 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39149 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39150 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39151 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39152 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39153 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39154 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39155 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39156 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39157 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39158 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39159 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39160 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39161 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39162 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39163 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39164 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39165 UNICODE_OTHER_NUMBER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39166 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39167 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39168 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39169 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39170 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39171 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39172 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39173 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39174 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39175 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39176 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39177 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39178 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39179 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39180 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39181 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39182 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39183 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39184 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39185 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39186 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39187 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39188 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39189 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39190 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39191 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39192 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39193 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39194 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39195 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39196 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39197 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39198 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39199 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39200 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39201 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39202 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39203 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39204 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39205 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39206 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39207 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39208 UNICODE_UNASSIGNED 39209 }, 39210 { /* page 272, index 75 */ 39211 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39212 UNICODE_SPACING_MARK, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39213 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39214 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39215 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39216 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39217 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39218 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39219 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39220 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39221 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39222 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39223 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39224 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39225 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39226 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39227 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39228 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39229 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39230 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39231 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39232 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39233 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39234 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39235 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39236 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39237 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 39238 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39239 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39240 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39241 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39242 UNICODE_UNASSIGNED, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39243 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39244 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39245 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39246 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39247 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39248 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39249 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39250 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39251 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39252 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39253 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, 39254 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39255 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39256 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39257 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39258 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 39259 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39260 UNICODE_SPACING_MARK, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39261 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39262 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39263 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39264 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39265 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39266 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39267 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39268 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39269 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39270 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39271 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39272 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39273 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39274 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39275 UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 39276 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39277 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39278 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 39279 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39280 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 39281 UNICODE_OTHER_PUNCTUATION, UNICODE_FORMAT, 39282 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39283 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39284 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39285 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39286 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39287 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39288 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 39289 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39290 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39291 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39292 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39293 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39294 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39295 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39296 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39297 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39298 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39299 UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39300 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39301 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39302 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39303 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, 39304 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39305 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 39306 }, 39307 { /* page 273, index 76 */ 39308 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39309 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 39310 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39311 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39312 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39313 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39314 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39315 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39316 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39317 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39318 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39319 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39320 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39321 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39322 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39323 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39324 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 39325 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39326 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39327 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39328 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39329 UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39330 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39331 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39332 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39333 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39334 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39335 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39336 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39337 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39338 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39339 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39340 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39341 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39342 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39343 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39344 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39345 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39346 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39347 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39348 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39349 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39350 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39351 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39352 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 39353 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 39354 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39355 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39356 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39357 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39358 UNICODE_SPACING_MARK, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39359 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39360 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39361 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39362 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39363 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39364 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39365 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39366 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39367 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39368 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39369 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39370 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39371 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39372 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39373 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39374 UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 39375 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39376 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39377 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39378 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39379 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39380 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_OTHER_LETTER, 39381 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39382 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39383 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39384 UNICODE_OTHER_PUNCTUATION, UNICODE_NON_SPACING_MARK, 39385 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39386 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39387 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39388 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39389 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39390 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39391 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39392 UNICODE_OTHER_LETTER, UNICODE_OTHER_PUNCTUATION, 39393 UNICODE_OTHER_LETTER, UNICODE_OTHER_PUNCTUATION, 39394 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39395 UNICODE_UNASSIGNED, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39396 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39397 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39398 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39399 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39400 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39401 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39402 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39403 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39404 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39405 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 39406 }, 39407 { /* page 274, index 77 */ 39408 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39409 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39410 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39411 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39412 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39413 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39414 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39415 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39416 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39417 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39418 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39419 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39420 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39421 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39422 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, 39423 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 39424 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39425 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 39426 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39427 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39428 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 39429 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39430 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39431 UNICODE_OTHER_PUNCTUATION, UNICODE_NON_SPACING_MARK, 39432 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39433 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39434 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39435 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39436 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39437 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39438 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39439 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39440 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39441 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39442 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39443 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39444 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39445 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39446 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39447 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39448 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39449 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39450 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39451 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39452 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39453 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 39454 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39455 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39456 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 39457 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39458 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 39459 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39460 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39461 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39462 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39463 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 39464 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39465 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39466 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39467 UNICODE_OTHER_LETTER, UNICODE_OTHER_PUNCTUATION, 39468 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39469 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39470 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39471 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39472 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39473 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39474 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39475 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39476 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39477 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39478 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39479 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39480 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39481 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39482 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39483 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39484 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39485 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39486 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 39487 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 39488 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39489 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39490 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39491 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39492 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39493 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, 39494 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39495 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39496 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39497 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39498 UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39499 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39500 UNICODE_UNASSIGNED 39501 }, 39502 { /* page 275, index 78 */ 39503 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39504 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, 39505 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39506 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39507 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 39508 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39509 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 39510 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39511 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39512 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39513 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39514 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39515 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39516 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39517 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39518 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39519 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 39520 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 39521 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39522 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 39523 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 39524 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 39525 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 39526 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 39527 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, 39528 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39529 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 39530 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 39531 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39532 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39533 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39534 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39535 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39536 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, 39537 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39538 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39539 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39540 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39541 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39542 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 39543 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39544 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39545 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39546 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39547 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39548 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39549 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39550 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39551 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39552 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39553 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39554 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39555 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39556 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39557 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39558 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39559 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39560 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39561 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39562 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39563 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39564 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39565 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39566 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39567 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39568 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39569 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39570 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39571 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39572 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39573 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39574 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39575 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39576 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39577 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39578 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39579 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39580 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39581 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39582 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39583 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39584 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39585 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39586 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39587 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39588 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39589 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39590 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39591 UNICODE_UNASSIGNED 39592 }, 39593 { /* page 276, index 79 */ 39594 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39595 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39596 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39597 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39598 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39599 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39600 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39601 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39602 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39603 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39604 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39605 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39606 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39607 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39608 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39609 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39610 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39611 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, 39612 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 39613 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39614 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39615 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39616 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39617 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 39618 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39619 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 39620 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 39621 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39622 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39623 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39624 UNICODE_OTHER_PUNCTUATION, UNICODE_DECIMAL_NUMBER, 39625 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39626 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39627 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39628 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39629 UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, 39630 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, 39631 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39632 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39633 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39634 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39635 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39636 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39637 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39638 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39639 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39640 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39641 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39642 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 39643 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39644 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39645 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39646 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39647 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39648 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39649 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39650 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39651 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39652 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39653 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39654 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39655 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39656 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39657 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39658 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, 39659 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 39660 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39661 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39662 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39663 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39664 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 39665 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39666 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 39667 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39668 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39669 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 39670 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39671 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39672 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, 39673 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39674 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39675 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39676 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39677 UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39678 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39679 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39680 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39681 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39682 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39683 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39684 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39685 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39686 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39687 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39688 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39689 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 39690 }, 39691 { /* page 277, index 80 */ 39692 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39693 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39694 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39695 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39696 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39697 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39698 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39699 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39700 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39701 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39702 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39703 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39704 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39705 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39706 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39707 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39708 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39709 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39710 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39711 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39712 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39713 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39714 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39715 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39716 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39717 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39718 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39719 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39720 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39721 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39722 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39723 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39724 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39725 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39726 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39727 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39728 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39729 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39730 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39731 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39732 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39733 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39734 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 39735 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39736 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39737 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39738 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39739 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39740 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39741 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39742 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39743 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39744 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39745 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39746 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39747 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39748 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39749 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39750 UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 39751 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39752 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39753 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39754 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 39755 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39756 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 39757 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39758 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39759 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39760 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39761 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39762 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39763 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39764 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39765 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39766 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39767 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39768 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39769 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 39770 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39771 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39772 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39773 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39774 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39775 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39776 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39777 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39778 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39779 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39780 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39781 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39782 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39783 UNICODE_UNASSIGNED 39784 }, 39785 { /* page 278, index 81 */ 39786 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39787 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39788 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39789 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39790 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39791 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39792 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39793 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39794 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39795 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39796 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39797 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39798 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39799 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39800 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39801 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39802 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 39803 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39804 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39805 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39806 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39807 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 39808 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 39809 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39810 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39811 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 39812 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39813 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39814 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39815 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, 39816 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39817 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39818 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39819 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39820 UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39821 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39822 UNICODE_UNASSIGNED, UNICODE_OTHER_PUNCTUATION, 39823 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39824 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39825 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39826 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39827 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39828 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39829 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39830 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39831 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39832 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39833 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39834 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39835 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39836 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39837 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39838 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39839 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39840 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39841 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39842 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39843 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39844 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39845 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39846 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39847 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39848 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39849 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39850 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 39851 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 39852 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39853 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39854 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39855 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 39856 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39857 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39858 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39859 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39860 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39861 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39862 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39863 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, 39864 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39865 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39866 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39867 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39868 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39869 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39870 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39871 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39872 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39873 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39874 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39875 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39876 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39877 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39878 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39879 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39880 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39881 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 39882 }, 39883 { /* page 279, index 82 */ 39884 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39885 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39886 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39887 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39888 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39889 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39890 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39891 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39892 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 39893 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 39894 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39895 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 39896 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39897 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39898 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39899 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39900 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39901 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39902 UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39903 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39904 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39905 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39906 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39907 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39908 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39909 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_SYMBOL, 39910 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39911 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39912 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39913 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39914 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39915 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39916 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39917 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39918 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39919 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39920 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39921 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39922 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39923 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39924 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39925 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39926 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39927 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39928 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39929 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39930 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39931 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39932 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39933 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39934 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39935 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39936 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39937 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39938 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39939 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39940 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39941 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39942 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39943 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39944 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39945 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39946 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39947 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39948 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39949 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39950 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39951 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39952 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39953 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39954 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39955 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39956 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39957 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39958 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39959 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39960 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39961 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39962 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39963 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39964 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39965 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39966 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39967 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39968 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39969 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39970 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39971 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39972 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39973 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 39974 }, 39975 { /* page 280, index 83 */ 39976 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39977 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39978 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39979 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39980 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39981 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39982 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39983 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39984 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39985 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39986 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39987 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39988 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39989 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39990 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39991 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39992 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39993 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39994 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39995 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39996 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39997 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39998 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39999 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40000 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40001 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40002 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40003 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40004 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40005 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40006 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40007 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40008 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40009 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40010 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40011 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40012 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40013 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40014 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40015 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40016 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40017 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40018 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40019 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40020 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40021 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40022 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40023 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40024 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40025 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40026 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40027 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40028 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40029 UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 40030 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 40031 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 40032 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 40033 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 40034 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 40035 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 40036 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 40037 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 40038 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 40039 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 40040 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 40041 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 40042 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 40043 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 40044 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 40045 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 40046 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 40047 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 40048 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 40049 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 40050 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 40051 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 40052 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 40053 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 40054 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 40055 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 40056 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 40057 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 40058 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 40059 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 40060 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 40061 UNICODE_LOWERCASE_LETTER, UNICODE_DECIMAL_NUMBER, 40062 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40063 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40064 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40065 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40066 UNICODE_DECIMAL_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 40067 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 40068 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 40069 UNICODE_OTHER_NUMBER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40070 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40071 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40072 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40073 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER 40074 }, 40075 { /* page 282, index 84 */ 40076 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 40077 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40078 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40079 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 40080 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40081 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 40082 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40083 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40084 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40085 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40086 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40087 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40088 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40089 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40090 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40091 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40092 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40093 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40094 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40095 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40096 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40097 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40098 UNICODE_SPACING_MARK, UNICODE_OTHER_LETTER, 40099 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40100 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40101 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 40102 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 40103 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 40104 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 40105 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40106 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40107 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40108 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 40109 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40110 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40111 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 40112 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40113 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40114 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40115 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40116 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40117 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40118 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40119 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40120 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40121 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40122 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40123 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40124 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40125 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40126 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40127 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40128 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40129 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 40130 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40131 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40132 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40133 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40134 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40135 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40136 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40137 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 40138 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 40139 UNICODE_UNASSIGNED, UNICODE_OTHER_PUNCTUATION, 40140 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 40141 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 40142 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40143 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40144 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40145 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40146 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40147 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40148 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40149 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40150 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40151 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 40152 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40153 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40154 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40155 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40156 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40157 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40158 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40159 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40160 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40161 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40162 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40163 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40164 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40165 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40166 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40167 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40168 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40169 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40170 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 40171 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40172 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 40173 }, 40174 { /* page 284, index 85 */ 40175 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40176 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40177 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40178 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40179 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40180 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40181 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40182 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40183 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40184 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40185 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40186 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40187 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40188 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40189 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40190 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, 40191 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40192 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40193 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40194 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, 40195 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40196 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40197 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40198 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40199 UNICODE_OTHER_LETTER, UNICODE_OTHER_PUNCTUATION, 40200 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 40201 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 40202 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40203 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40204 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40205 UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40206 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40207 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40208 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40209 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40210 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 40211 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 40212 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 40213 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 40214 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 40215 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 40216 UNICODE_OTHER_NUMBER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40217 UNICODE_UNASSIGNED, UNICODE_OTHER_PUNCTUATION, 40218 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 40219 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40220 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40221 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40222 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40223 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40224 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40225 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40226 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40227 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40228 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 40229 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 40230 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40231 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40232 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40233 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40234 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40235 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40236 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40237 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40238 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40239 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40240 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, 40241 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40242 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40243 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40244 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 40245 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40246 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40247 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40248 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40249 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40250 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40251 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40252 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40253 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40254 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40255 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40256 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40257 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40258 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40259 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40260 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40261 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40262 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40263 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40264 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40265 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40266 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40267 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40268 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40269 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40270 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40271 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 40272 }, 40273 { /* page 285, index 86 */ 40274 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40275 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40276 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 40277 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 40278 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40279 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40280 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40281 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40282 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40283 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40284 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40285 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40286 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40287 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40288 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40289 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40290 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 40291 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40292 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40293 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40294 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, 40295 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40296 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 40297 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40298 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40299 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40300 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, 40301 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40302 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40303 UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40304 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40305 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40306 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40307 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, 40308 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40309 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40310 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40311 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40312 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40313 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40314 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40315 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40316 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40317 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40318 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40319 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40320 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40321 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40322 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40323 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40324 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40325 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40326 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40327 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40328 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40329 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40330 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40331 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40332 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40333 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40334 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40335 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40336 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40337 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40338 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40339 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40340 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40341 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40342 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40343 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40344 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40345 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40346 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40347 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40348 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40349 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40350 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40351 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40352 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40353 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40354 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40355 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40356 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40357 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40358 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40359 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40360 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40361 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40362 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 40363 }, 40364 { /* page 291, index 87 */ 40365 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40366 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40367 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40368 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40369 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40370 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40371 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40372 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40373 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40374 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40375 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40376 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40377 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40378 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40379 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40380 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40381 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40382 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40383 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40384 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40385 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40386 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40387 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40388 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40389 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40390 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40391 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40392 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40393 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40394 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40395 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40396 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40397 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40398 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40399 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40400 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40401 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40402 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40403 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40404 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40405 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40406 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40407 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40408 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40409 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40410 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40411 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40412 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40413 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40414 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40415 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40416 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40417 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40418 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40419 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40420 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40421 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40422 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40423 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40424 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40425 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40426 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40427 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40428 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40429 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40430 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40431 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40432 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40433 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40434 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40435 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40436 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40437 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40438 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40439 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40440 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40441 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40442 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40443 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40444 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40445 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40446 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40447 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40448 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40449 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40450 UNICODE_UNASSIGNED 40451 }, 40452 { /* page 292, index 88 */ 40453 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40454 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40455 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40456 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40457 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40458 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40459 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40460 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40461 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40462 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40463 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40464 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40465 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40466 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40467 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40468 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40469 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40470 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40471 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40472 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40473 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40474 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40475 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40476 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40477 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40478 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40479 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40480 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40481 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40482 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40483 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40484 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40485 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40486 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40487 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40488 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40489 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40490 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40491 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40492 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40493 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40494 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40495 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40496 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40497 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40498 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40499 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40500 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40501 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40502 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40503 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40504 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40505 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40506 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40507 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40508 UNICODE_LETTER_NUMBER, UNICODE_UNASSIGNED, 40509 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 40510 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 40511 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40512 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40513 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40514 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40515 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40516 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40517 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40518 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40519 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40520 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40521 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40522 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40523 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40524 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40525 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40526 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40527 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40528 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40529 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40530 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40531 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40532 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40533 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40534 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40535 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40536 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40537 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40538 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40539 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40540 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40541 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40542 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40543 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40544 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40545 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40546 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40547 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40548 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40549 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40550 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40551 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40552 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40553 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40554 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40555 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40556 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40557 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER 40558 }, 40559 { /* page 293, index 89 */ 40560 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40561 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40562 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40563 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40564 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40565 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40566 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40567 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40568 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40569 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40570 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40571 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40572 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40573 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40574 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40575 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40576 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40577 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40578 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40579 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40580 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40581 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40582 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 40583 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40584 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40585 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40586 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40587 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40588 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40589 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40590 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40591 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40592 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40593 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40594 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40595 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40596 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40597 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40598 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40599 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40600 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40601 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40602 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40603 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40604 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40605 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40606 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40607 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40608 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40609 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40610 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40611 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40612 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40613 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40614 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40615 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40616 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40617 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40618 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40619 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40620 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40621 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40622 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40623 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40624 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40625 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40626 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40627 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40628 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40629 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40630 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40631 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40632 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40633 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40634 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40635 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40636 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40637 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40638 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40639 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40640 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40641 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40642 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40643 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40644 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40645 UNICODE_UNASSIGNED 40646 }, 40647 { /* page 308, index 90 */ 40648 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40649 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40650 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40651 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40652 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40653 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40654 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40655 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40656 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40657 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40658 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40659 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40660 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40661 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40662 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40663 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 40664 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40665 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40666 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40667 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40668 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40669 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40670 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40671 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40672 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40673 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40674 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40675 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40676 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40677 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40678 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40679 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40680 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40681 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40682 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40683 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40684 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40685 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40686 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40687 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40688 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40689 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40690 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40691 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40692 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40693 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40694 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40695 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40696 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40697 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40698 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40699 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40700 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40701 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40702 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40703 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40704 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40705 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40706 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40707 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40708 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40709 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40710 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40711 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40712 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40713 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40714 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40715 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40716 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40717 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40718 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40719 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40720 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40721 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40722 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40723 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40724 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40725 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40726 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40727 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40728 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40729 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40730 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40731 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40732 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40733 UNICODE_UNASSIGNED 40734 }, 40735 { /* page 326, index 91 */ 40736 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40737 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40738 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40739 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40740 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40741 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40742 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40743 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40744 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40745 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40746 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40747 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40748 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40749 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40750 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40751 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40752 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40753 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40754 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40755 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40756 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40757 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40758 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40759 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 40760 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40761 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40762 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40763 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40764 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40765 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40766 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40767 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40768 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40769 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40770 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40771 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40772 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40773 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40774 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40775 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40776 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40777 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40778 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40779 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40780 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40781 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40782 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40783 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40784 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40785 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40786 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40787 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40788 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40789 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40790 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40791 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40792 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40793 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40794 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40795 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40796 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40797 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40798 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40799 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40800 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40801 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40802 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40803 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40804 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40805 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40806 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40807 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40808 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40809 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40810 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40811 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40812 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40813 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40814 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40815 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40816 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40817 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40818 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40819 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40820 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40821 UNICODE_UNASSIGNED 40822 }, 40823 { /* page 362, index 92 */ 40824 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40825 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40826 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40827 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40828 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40829 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40830 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40831 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40832 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40833 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40834 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40835 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40836 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40837 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40838 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40839 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40840 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40841 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40842 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40843 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40844 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40845 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40846 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40847 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40848 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40849 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40850 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40851 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40852 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40853 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40854 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40855 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 40856 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40857 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40858 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40859 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40860 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, 40861 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40862 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 40863 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40864 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40865 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40866 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40867 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40868 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40869 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40870 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40871 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40872 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40873 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40874 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40875 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40876 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40877 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40878 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40879 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40880 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40881 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40882 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40883 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40884 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40885 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40886 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40887 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40888 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40889 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40890 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40891 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40892 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40893 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40894 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40895 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40896 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40897 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40898 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40899 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40900 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40901 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40902 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40903 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40904 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40905 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 40906 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40907 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40908 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40909 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40910 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40911 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 40912 }, 40913 { /* page 363, index 93 */ 40914 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40915 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40916 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40917 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40918 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40919 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40920 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40921 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40922 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40923 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40924 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40925 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40926 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40927 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40928 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40929 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40930 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40931 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40932 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40933 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 40934 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 40935 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 40936 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 40937 UNICODE_OTHER_SYMBOL, UNICODE_MODIFIER_LETTER, 40938 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 40939 UNICODE_MODIFIER_LETTER, UNICODE_OTHER_PUNCTUATION, 40940 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40941 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40942 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40943 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, 40944 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40945 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40946 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40947 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40948 UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, UNICODE_OTHER_NUMBER, 40949 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 40950 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 40951 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40952 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40953 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40954 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40955 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40956 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40957 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40958 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40959 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40960 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40961 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40962 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40963 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40964 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40965 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40966 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40967 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40968 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40969 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40970 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40971 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40972 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40973 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40974 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40975 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40976 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40977 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40978 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40979 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40980 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40981 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40982 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40983 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40984 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40985 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40986 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40987 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40988 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40989 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40990 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40991 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40992 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40993 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40994 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40995 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40996 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40997 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40998 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40999 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41000 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41001 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41002 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41003 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 41004 }, 41005 { /* page 367, index 94 */ 41006 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41007 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41008 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41009 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41010 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41011 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41012 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41013 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41014 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41015 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41016 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41017 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41018 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41019 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41020 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41021 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41022 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41023 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41024 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41025 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41026 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41027 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41028 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41029 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41030 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41031 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41032 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 41033 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41034 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41035 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41036 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41037 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41038 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41039 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41040 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41041 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41042 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41043 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41044 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41045 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41046 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41047 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41048 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41049 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41050 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41051 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41052 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41053 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 41054 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 41055 UNICODE_NON_SPACING_MARK, UNICODE_MODIFIER_LETTER, 41056 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 41057 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 41058 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 41059 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 41060 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 41061 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 41062 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41063 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41064 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41065 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41066 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41067 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41068 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41069 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41070 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41071 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41072 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41073 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41074 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41075 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41076 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41077 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41078 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41079 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41080 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41081 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41082 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41083 UNICODE_UNASSIGNED, UNICODE_MODIFIER_LETTER, 41084 UNICODE_MODIFIER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41085 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41086 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41087 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41088 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41089 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41090 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41091 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41092 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41093 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41094 UNICODE_UNASSIGNED 41095 }, 41096 { /* page 391, index 95 */ 41097 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41098 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41099 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41100 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41101 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41102 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41103 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41104 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41105 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41106 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41107 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41108 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41109 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41110 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41111 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41112 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41113 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41114 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41115 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41116 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41117 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41118 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41119 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41120 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41121 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41122 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41123 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41124 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41125 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41126 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41127 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41128 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41129 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41130 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41131 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41132 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41133 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41134 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41135 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41136 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41137 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41138 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41139 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41140 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41141 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41142 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41143 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41144 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41145 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41146 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41147 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41148 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41149 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41150 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41151 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41152 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41153 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41154 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41155 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41156 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41157 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41158 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41159 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41160 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41161 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41162 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41163 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41164 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41165 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41166 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41167 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41168 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41169 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41170 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41171 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41172 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41173 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41174 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41175 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41176 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41177 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41178 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41179 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41180 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41181 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41182 UNICODE_UNASSIGNED 41183 }, 41184 { /* page 394, index 96 */ 41185 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41186 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41187 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41188 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41189 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41190 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41191 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41192 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41193 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41194 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41195 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41196 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41197 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41198 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41199 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41200 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41201 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41202 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41203 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41204 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41205 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41206 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41207 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41208 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41209 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41210 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41211 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41212 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41213 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41214 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41215 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41216 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41217 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41218 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41219 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41220 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41221 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41222 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41223 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41224 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41225 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41226 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41227 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41228 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41229 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41230 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41231 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41232 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41233 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41234 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41235 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41236 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41237 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41238 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41239 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41240 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41241 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41242 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41243 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41244 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41245 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41246 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41247 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41248 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41249 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41250 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41251 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41252 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41253 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41254 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41255 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41256 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41257 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41258 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41259 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41260 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41261 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41262 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41263 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41264 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41265 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41266 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41267 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41268 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41269 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41270 UNICODE_UNASSIGNED 41271 }, 41272 { /* page 433, index 97 */ 41273 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41274 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41275 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41276 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41277 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41278 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41279 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41280 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41281 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41282 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41283 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41284 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41285 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41286 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41287 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41288 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41289 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41290 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41291 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41292 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41293 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41294 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41295 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41296 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41297 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41298 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41299 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41300 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41301 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41302 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41303 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41304 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41305 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41306 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41307 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41308 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41309 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41310 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41311 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41312 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41313 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41314 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41315 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41316 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41317 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41318 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41319 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41320 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41321 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41322 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41323 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41324 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41325 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41326 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41327 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41328 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41329 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41330 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41331 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41332 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41333 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41334 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41335 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41336 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41337 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41338 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41339 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41340 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41341 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41342 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41343 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41344 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41345 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41346 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41347 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41348 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41349 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41350 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41351 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41352 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41353 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41354 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41355 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41356 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41357 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41358 UNICODE_OTHER_LETTER 41359 }, 41360 { /* page 434, index 98 */ 41361 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41362 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41363 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41364 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41365 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41366 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41367 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41368 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41369 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41370 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41371 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41372 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41373 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41374 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41375 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41376 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41377 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41378 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41379 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41380 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41381 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41382 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41383 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41384 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41385 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41386 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41387 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41388 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41389 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41390 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41391 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41392 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41393 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41394 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41395 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41396 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41397 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41398 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41399 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41400 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41401 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41402 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41403 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41404 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41405 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41406 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41407 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41408 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41409 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41410 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41411 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41412 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41413 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41414 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41415 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41416 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41417 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41418 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41419 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41420 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41421 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41422 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41423 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41424 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41425 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41426 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41427 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41428 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41429 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41430 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41431 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41432 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41433 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41434 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41435 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41436 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41437 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41438 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41439 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41440 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41441 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41442 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41443 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41444 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41445 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41446 UNICODE_UNASSIGNED 41447 }, 41448 { /* page 444, index 99 */ 41449 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41450 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41451 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41452 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41453 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41454 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41455 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41456 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41457 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41458 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41459 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41460 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41461 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41462 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41463 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41464 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41465 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41466 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41467 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41468 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41469 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41470 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41471 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41472 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41473 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41474 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41475 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41476 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41477 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41478 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41479 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41480 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41481 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41482 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41483 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41484 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 41485 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41486 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41487 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41488 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41489 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41490 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 41491 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 41492 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41493 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41494 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 41495 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41496 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41497 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41498 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41499 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41500 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41501 UNICODE_OTHER_SYMBOL, UNICODE_NON_SPACING_MARK, 41502 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 41503 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 41504 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41505 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41506 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41507 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41508 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41509 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41510 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41511 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41512 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41513 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41514 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41515 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41516 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41517 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41518 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41519 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41520 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41521 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41522 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41523 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41524 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41525 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41526 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41527 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41528 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41529 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41530 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41531 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41532 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41533 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41534 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 41535 }, 41536 { /* page 464, index 100 */ 41537 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41538 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41539 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41540 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41541 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41542 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41543 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41544 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41545 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41546 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41547 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41548 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41549 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41550 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41551 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41552 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41553 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41554 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41555 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41556 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41557 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41558 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41559 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41560 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41561 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41562 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41563 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41564 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41565 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41566 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41567 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41568 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41569 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41570 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41571 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41572 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41573 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41574 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41575 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41576 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41577 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41578 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41579 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41580 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41581 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41582 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41583 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41584 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41585 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41586 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41587 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41588 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41589 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41590 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41591 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41592 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41593 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41594 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41595 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41596 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41597 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41598 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41599 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41600 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41601 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41602 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41603 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41604 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41605 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41606 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41607 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41608 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41609 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41610 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41611 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41612 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41613 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41614 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41615 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41616 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41617 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41618 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41619 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41620 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41621 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41622 UNICODE_UNASSIGNED 41623 }, 41624 { /* page 465, index 101 */ 41625 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41626 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41627 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41628 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41629 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41630 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41631 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41632 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41633 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41634 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41635 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41636 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41637 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41638 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, 41639 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41640 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41641 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41642 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41643 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41644 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41645 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41646 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41647 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41648 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41649 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41650 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41651 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41652 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41653 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41654 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41655 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41656 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41657 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41658 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_SPACING_MARK, 41659 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 41660 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 41661 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41662 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41663 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41664 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 41665 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 41666 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 41667 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 41668 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 41669 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 41670 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41671 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 41672 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 41673 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 41674 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_SYMBOL, 41675 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41676 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41677 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41678 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41679 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41680 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41681 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41682 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41683 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41684 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41685 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 41686 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 41687 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41688 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41689 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41690 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41691 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41692 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41693 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41694 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41695 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41696 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41697 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41698 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41699 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41700 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41701 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41702 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41703 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41704 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41705 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41706 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 41707 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41708 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41709 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41710 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41711 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41712 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41713 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41714 UNICODE_UNASSIGNED 41715 }, 41716 { /* page 466, index 102 */ 41717 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41718 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41719 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41720 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41721 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41722 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41723 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41724 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41725 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41726 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41727 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41728 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41729 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41730 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41731 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41732 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41733 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41734 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41735 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41736 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41737 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41738 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41739 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 41740 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 41741 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41742 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41743 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41744 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41745 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41746 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41747 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41748 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41749 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41750 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41751 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41752 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41753 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41754 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41755 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41756 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41757 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41758 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41759 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41760 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41761 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41762 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41763 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41764 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41765 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41766 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41767 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41768 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41769 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41770 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41771 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41772 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41773 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41774 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41775 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41776 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41777 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41778 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41779 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41780 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41781 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41782 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41783 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41784 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41785 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41786 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41787 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41788 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41789 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41790 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41791 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41792 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41793 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41794 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41795 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41796 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41797 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41798 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41799 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41800 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41801 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41802 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 41803 }, 41804 { /* page 467, index 103 */ 41805 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41806 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41807 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41808 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41809 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41810 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41811 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41812 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41813 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41814 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41815 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41816 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41817 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41818 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41819 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41820 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41821 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41822 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41823 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41824 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41825 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41826 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41827 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41828 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41829 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41830 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41831 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41832 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41833 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41834 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41835 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41836 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41837 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 41838 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 41839 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 41840 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 41841 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 41842 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 41843 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41844 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41845 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41846 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41847 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41848 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41849 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41850 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41851 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41852 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41853 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41854 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41855 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41856 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41857 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41858 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41859 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41860 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41861 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41862 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41863 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41864 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41865 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41866 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41867 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41868 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41869 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41870 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41871 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41872 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41873 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41874 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41875 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41876 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41877 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41878 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41879 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41880 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41881 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41882 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41883 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41884 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41885 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41886 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41887 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41888 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41889 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41890 UNICODE_UNASSIGNED 41891 }, 41892 { /* page 468, index 104 */ 41893 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41894 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41895 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41896 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41897 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41898 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41899 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41900 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41901 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41902 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41903 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41904 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41905 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41906 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41907 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41908 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41909 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41910 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41911 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41912 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41913 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41914 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41915 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41916 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41917 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41918 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41919 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41920 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41921 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41922 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41923 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41924 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41925 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41926 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41927 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41928 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41929 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41930 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41931 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41932 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41933 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41934 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41935 UNICODE_LOWERCASE_LETTER, UNICODE_UNASSIGNED, 41936 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41937 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41938 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41939 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41940 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41941 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41942 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41943 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41944 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41945 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41946 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41947 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41948 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41949 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41950 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41951 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41952 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41953 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41954 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41955 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41956 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41957 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41958 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41959 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41960 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41961 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41962 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41963 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41964 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41965 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41966 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41967 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41968 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41969 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41970 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41971 UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, 41972 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41973 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 41974 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 41975 UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41976 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41977 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41978 UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 41979 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41980 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41981 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41982 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41983 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41984 UNICODE_LOWERCASE_LETTER, UNICODE_UNASSIGNED, 41985 UNICODE_LOWERCASE_LETTER, UNICODE_UNASSIGNED, 41986 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41987 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41988 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41989 UNICODE_LOWERCASE_LETTER, UNICODE_UNASSIGNED, 41990 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41991 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41992 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41993 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41994 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41995 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41996 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41997 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41998 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41999 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42000 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42001 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42002 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42003 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42004 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42005 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42006 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42007 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42008 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42009 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42010 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42011 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42012 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42013 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42014 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42015 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42016 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42017 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42018 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42019 UNICODE_LOWERCASE_LETTER 42020 }, 42021 { /* page 469, index 105 */ 42022 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42023 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42024 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42025 UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 42026 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42027 UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42028 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42029 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42030 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42031 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42032 UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 42033 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42034 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42035 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42036 UNICODE_UNASSIGNED, UNICODE_LOWERCASE_LETTER, 42037 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42038 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42039 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42040 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42041 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42042 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42043 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42044 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42045 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42046 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42047 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42048 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42049 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42050 UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, 42051 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42052 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42053 UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 42054 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42055 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42056 UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, 42057 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 42058 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42059 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42060 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42061 UNICODE_UNASSIGNED, UNICODE_LOWERCASE_LETTER, 42062 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42063 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42064 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42065 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42066 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42067 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42068 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42069 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42070 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42071 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42072 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42073 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42074 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42075 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42076 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42077 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42078 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42079 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42080 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42081 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42082 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42083 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42084 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42085 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42086 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42087 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42088 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42089 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42090 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42091 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42092 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42093 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42094 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42095 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42096 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42097 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42098 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42099 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42100 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42101 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42102 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42103 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42104 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42105 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42106 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42107 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42108 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42109 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42110 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42111 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42112 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42113 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42114 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42115 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42116 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42117 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42118 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42119 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42120 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42121 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42122 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42123 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42124 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42125 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42126 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42127 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42128 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42129 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42130 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42131 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42132 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42133 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42134 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42135 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42136 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42137 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42138 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42139 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42140 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42141 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42142 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42143 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42144 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42145 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42146 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42147 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42148 UNICODE_LOWERCASE_LETTER 42149 }, 42150 { /* page 470, index 106 */ 42151 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42152 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42153 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42154 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42155 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42156 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42157 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42158 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42159 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42160 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42161 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42162 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42163 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42164 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42165 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42166 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42167 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42168 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42169 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42170 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42171 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42172 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42173 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42174 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42175 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42176 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42177 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42178 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42179 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42180 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42181 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42182 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42183 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42184 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42185 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42186 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42187 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42188 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42189 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42190 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42191 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42192 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42193 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42194 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42195 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42196 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42197 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42198 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42199 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42200 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42201 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42202 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42203 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42204 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42205 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42206 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42207 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42208 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42209 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42210 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42211 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42212 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42213 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42214 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42215 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42216 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42217 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42218 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42219 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42220 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42221 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42222 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42223 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42224 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42225 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42226 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42227 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42228 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42229 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42230 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42231 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42232 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42233 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42234 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 42235 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42236 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42237 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42238 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42239 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42240 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42241 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42242 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42243 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42244 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42245 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42246 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42247 UNICODE_MATH_SYMBOL, UNICODE_LOWERCASE_LETTER, 42248 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42249 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42250 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42251 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42252 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42253 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42254 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42255 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42256 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42257 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42258 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42259 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42260 UNICODE_MATH_SYMBOL, UNICODE_LOWERCASE_LETTER, 42261 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42262 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42263 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42264 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42265 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42266 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42267 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42268 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42269 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42270 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42271 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42272 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42273 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42274 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42275 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42276 UNICODE_MATH_SYMBOL, UNICODE_LOWERCASE_LETTER, 42277 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42278 UNICODE_LOWERCASE_LETTER 42279 }, 42280 { /* page 471, index 107 */ 42281 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42282 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42283 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42284 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42285 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42286 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42287 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42288 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42289 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42290 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42291 UNICODE_LOWERCASE_LETTER, UNICODE_MATH_SYMBOL, 42292 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42293 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42294 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42295 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42296 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42297 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42298 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42299 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42300 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42301 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42302 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42303 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42304 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42305 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42306 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42307 UNICODE_UPPERCASE_LETTER, UNICODE_MATH_SYMBOL, 42308 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42309 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42310 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42311 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42312 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42313 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42314 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42315 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42316 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42317 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42318 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42319 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42320 UNICODE_LOWERCASE_LETTER, UNICODE_MATH_SYMBOL, 42321 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42322 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42323 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42324 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42325 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42326 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42327 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42328 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42329 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42330 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42331 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42332 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42333 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42334 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42335 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42336 UNICODE_UPPERCASE_LETTER, UNICODE_MATH_SYMBOL, 42337 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42338 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42339 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42340 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42341 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42342 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42343 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42344 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42345 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42346 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42347 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42348 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42349 UNICODE_LOWERCASE_LETTER, UNICODE_MATH_SYMBOL, 42350 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42351 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42352 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42353 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42354 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42355 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42356 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42357 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42358 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42359 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42360 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42361 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42362 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42363 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42364 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42365 UNICODE_UPPERCASE_LETTER, UNICODE_MATH_SYMBOL, 42366 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42367 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42368 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42369 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42370 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42371 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42372 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42373 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42374 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42375 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42376 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42377 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42378 UNICODE_LOWERCASE_LETTER, UNICODE_MATH_SYMBOL, 42379 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42380 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42381 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42382 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42383 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, 42384 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42385 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42386 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42387 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42388 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42389 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42390 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42391 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42392 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42393 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42394 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42395 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42396 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42397 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42398 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42399 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42400 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42401 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42402 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42403 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42404 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42405 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42406 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42407 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42408 UNICODE_DECIMAL_NUMBER 42409 }, 42410 { /* page 474, index 108 */ 42411 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42412 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42413 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42414 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42415 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42416 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42417 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42418 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42419 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42420 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42421 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42422 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42423 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42424 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42425 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42426 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42427 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42428 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42429 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42430 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42431 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42432 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42433 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42434 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42435 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42436 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42437 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42438 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_SYMBOL, 42439 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42440 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42441 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42442 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42443 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42444 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42445 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42446 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42447 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42448 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42449 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42450 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42451 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42452 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42453 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42454 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42455 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42456 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42457 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42458 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42459 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42460 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42461 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42462 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42463 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42464 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42465 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42466 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42467 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42468 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_SYMBOL, 42469 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42470 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42471 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42472 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42473 UNICODE_OTHER_SYMBOL, UNICODE_NON_SPACING_MARK, 42474 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42475 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 42476 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 42477 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42478 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42479 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42480 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42481 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42482 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 42483 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42484 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42485 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 42486 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42487 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42488 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42489 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42490 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42491 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42492 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42493 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42494 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42495 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42496 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42497 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42498 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42499 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42500 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42501 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42502 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42503 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42504 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42505 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42506 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42507 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42508 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42509 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42510 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42511 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42512 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42513 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42514 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42515 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42516 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42517 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42518 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42519 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 42520 }, 42521 { /* page 480, index 109 */ 42522 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42523 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42524 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42525 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, 42526 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42527 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42528 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42529 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42530 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42531 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42532 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42533 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42534 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42535 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42536 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42537 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42538 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, 42539 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42540 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 42541 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42542 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42543 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42544 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42545 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42546 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42547 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42548 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42549 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42550 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42551 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42552 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42553 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42554 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42555 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42556 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42557 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42558 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42559 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42560 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42561 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42562 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42563 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42564 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42565 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42566 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42567 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42568 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42569 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42570 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42571 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42572 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42573 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42574 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42575 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42576 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42577 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42578 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42579 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42580 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42581 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42582 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42583 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42584 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42585 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42586 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42587 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42588 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42589 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42590 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42591 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42592 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42593 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42594 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42595 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42596 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42597 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42598 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42599 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42600 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42601 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42602 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42603 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42604 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42605 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42606 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42607 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42608 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42609 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42610 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42611 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42612 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42613 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 42614 }, 42615 { /* page 488, index 110 */ 42616 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42617 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42618 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42619 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42620 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42621 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42622 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42623 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42624 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42625 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42626 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42627 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42628 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42629 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42630 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42631 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42632 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42633 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42634 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42635 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42636 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42637 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42638 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42639 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42640 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42641 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42642 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42643 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42644 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42645 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42646 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42647 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42648 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42649 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42650 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42651 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42652 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42653 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42654 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42655 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42656 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42657 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42658 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42659 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42660 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42661 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42662 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42663 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42664 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42665 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42666 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42667 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42668 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42669 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42670 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42671 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42672 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42673 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42674 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42675 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42676 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42677 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42678 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42679 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42680 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42681 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 42682 UNICODE_UNASSIGNED, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 42683 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 42684 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 42685 UNICODE_OTHER_NUMBER, UNICODE_NON_SPACING_MARK, 42686 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42687 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42688 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42689 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42690 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42691 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42692 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42693 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42694 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42695 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42696 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42697 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42698 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42699 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42700 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42701 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42702 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 42703 }, 42704 { /* page 489, index 111 */ 42705 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42706 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42707 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42708 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42709 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42710 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42711 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42712 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42713 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42714 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42715 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42716 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42717 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42718 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42719 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42720 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42721 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42722 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42723 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42724 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42725 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42726 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42727 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42728 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42729 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42730 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42731 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42732 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42733 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42734 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42735 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42736 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42737 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42738 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42739 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42740 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42741 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42742 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42743 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42744 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42745 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42746 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42747 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42748 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, 42749 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42750 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 42751 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42752 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42753 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42754 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42755 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42756 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42757 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42758 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42759 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42760 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42761 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42762 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42763 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42764 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42765 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42766 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42767 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42768 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42769 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42770 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42771 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42772 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42773 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42774 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42775 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42776 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42777 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42778 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42779 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42780 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42781 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42782 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42783 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42784 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42785 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42786 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42787 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42788 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42789 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42790 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42791 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42792 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42793 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42794 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42795 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42796 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42797 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42798 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42799 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42800 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42801 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42802 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42803 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42804 UNICODE_UNASSIGNED 42805 }, 42806 { /* page 494, index 112 */ 42807 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42808 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 42809 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42810 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42811 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42812 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42813 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42814 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42815 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42816 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42817 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 42818 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 42819 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42820 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 42821 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42822 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42823 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42824 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42825 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 42826 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 42827 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42828 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42829 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42830 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 42831 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 42832 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 42833 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 42834 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 42835 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42836 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 42837 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 42838 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 42839 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42840 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 42841 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42842 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 42843 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42844 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42845 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 42846 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42847 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42848 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 42849 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 42850 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42851 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42852 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42853 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42854 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42855 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42856 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42857 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42858 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42859 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42860 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 42861 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 42862 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42863 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 42864 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42865 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42866 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42867 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42868 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42869 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 42870 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42871 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42872 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42873 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42874 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42875 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42876 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42877 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42878 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42879 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42880 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42881 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42882 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42883 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42884 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42885 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42886 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42887 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_UNASSIGNED, 42888 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42889 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42890 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42891 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42892 UNICODE_UNASSIGNED 42893 }, 42894 { /* page 496, index 113 */ 42895 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42896 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42897 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42898 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42899 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42900 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42901 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42902 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42903 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42904 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42905 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42906 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42907 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42908 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42909 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 42910 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42911 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42912 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42913 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42914 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42915 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42916 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42917 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42918 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42919 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42920 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42921 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42922 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42923 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42924 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42925 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42926 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42927 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42928 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42929 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42930 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42931 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42932 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42933 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42934 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42935 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42936 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42937 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42938 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42939 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42940 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42941 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42942 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42943 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42944 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42945 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42946 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42947 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42948 UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42949 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42950 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42951 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42952 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42953 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42954 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42955 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42956 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42957 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42958 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42959 UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42960 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42961 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42962 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42963 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42964 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, 42965 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42966 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42967 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42968 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42969 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42970 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42971 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42972 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42973 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42974 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42975 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42976 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42977 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42978 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42979 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42980 UNICODE_UNASSIGNED 42981 }, 42982 { /* page 497, index 114 */ 42983 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 42984 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 42985 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 42986 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 42987 UNICODE_OTHER_NUMBER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42988 UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42989 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42990 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42991 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42992 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42993 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42994 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42995 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42996 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42997 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42998 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 42999 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43000 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43001 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43002 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43003 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43004 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43005 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43006 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43007 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43008 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43009 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43010 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43011 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43012 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43013 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43014 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43015 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43016 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43017 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43018 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43019 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43020 UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43021 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43022 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43023 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43024 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43025 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43026 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43027 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43028 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43029 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43030 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43031 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43032 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43033 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43034 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43035 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43036 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43037 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43038 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43039 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43040 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 43041 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43042 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43043 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43044 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43045 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43046 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43047 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43048 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43049 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43050 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43051 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43052 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43053 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43054 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43055 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43056 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43057 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43058 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43059 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, 43060 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43061 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43062 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43063 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43064 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43065 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43066 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43067 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43068 UNICODE_OTHER_SYMBOL 43069 }, 43070 { /* page 498, index 115 */ 43071 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43072 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43073 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43074 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43075 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43076 UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43077 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43078 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43079 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43080 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43081 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43082 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43083 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43084 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43085 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43086 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43087 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43088 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43089 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43090 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43091 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43092 UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43093 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43094 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43095 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43096 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43097 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, 43098 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43099 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43100 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43101 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43102 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43103 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43104 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43105 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43106 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43107 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43108 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43109 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43110 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43111 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43112 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43113 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43114 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43115 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43116 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43117 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43118 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43119 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43120 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43121 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43122 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43123 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43124 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43125 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43126 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43127 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43128 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43129 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43130 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43131 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43132 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43133 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43134 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43135 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43136 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43137 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43138 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43139 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43140 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43141 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43142 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43143 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43144 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43145 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43146 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43147 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43148 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43149 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43150 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43151 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43152 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43153 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43154 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43155 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43156 UNICODE_UNASSIGNED 43157 }, 43158 { /* page 499, index 116 */ 43159 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43160 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43161 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43162 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43163 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43164 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43165 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43166 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43167 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43168 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43169 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43170 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43171 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43172 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43173 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43174 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43175 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43176 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43177 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43178 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43179 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43180 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43181 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43182 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43183 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43184 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43185 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43186 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43187 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43188 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43189 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43190 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43191 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43192 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43193 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43194 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43195 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43196 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43197 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43198 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43199 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43200 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43201 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43202 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43203 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43204 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43205 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43206 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43207 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43208 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43209 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43210 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43211 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43212 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43213 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43214 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43215 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43216 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43217 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43218 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43219 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43220 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43221 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43222 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43223 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43224 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43225 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43226 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43227 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43228 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43229 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43230 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43231 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43232 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43233 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43234 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43235 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43236 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43237 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43238 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43239 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43240 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43241 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43242 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43243 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 43244 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 43245 UNICODE_MODIFIER_SYMBOL 43246 }, 43247 { /* page 502, index 117 */ 43248 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43249 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43250 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43251 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43252 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43253 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43254 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43255 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43256 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43257 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43258 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43259 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43260 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43261 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43262 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43263 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43264 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43265 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43266 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43267 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43268 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43269 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43270 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43271 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43272 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43273 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43274 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43275 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43276 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43277 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43278 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43279 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43280 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43281 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43282 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43283 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43284 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43285 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43286 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43287 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43288 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43289 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43290 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43291 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43292 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43293 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43294 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43295 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43296 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43297 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43298 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43299 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43300 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43301 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43302 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43303 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43304 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43305 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43306 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43307 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43308 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43309 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43310 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43311 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43312 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43313 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43314 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43315 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43316 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43317 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43318 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43319 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43320 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43321 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43322 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, 43323 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43324 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43325 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43326 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43327 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43328 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43329 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43330 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43331 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43332 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43333 UNICODE_UNASSIGNED 43334 }, 43335 { /* page 503, index 118 */ 43336 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43337 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43338 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43339 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43340 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43341 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43342 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43343 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43344 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43345 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43346 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43347 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43348 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43349 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43350 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43351 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43352 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43353 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43354 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43355 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43356 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43357 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43358 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43359 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43360 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43361 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43362 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43363 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43364 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43365 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43366 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43367 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43368 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43369 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43370 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43371 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43372 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43373 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43374 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 43375 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43376 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43377 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43378 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, 43379 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43380 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43381 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43382 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43383 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43384 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43385 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43386 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43387 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43388 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43389 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43390 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43391 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43392 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43393 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43394 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43395 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43396 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43397 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43398 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43399 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43400 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43401 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43402 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43403 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43404 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43405 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43406 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43407 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43408 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43409 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43410 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43411 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43412 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43413 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43414 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43415 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43416 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43417 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43418 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43419 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43420 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43421 UNICODE_UNASSIGNED 43422 }, 43423 { /* page 504, index 119 */ 43424 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43425 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43426 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43427 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43428 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43429 UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43430 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43431 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43432 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43433 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43434 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43435 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43436 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43437 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43438 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43439 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43440 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43441 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43442 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43443 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43444 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43445 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43446 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43447 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43448 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43449 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43450 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, 43451 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43452 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43453 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43454 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43455 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43456 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43457 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43458 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43459 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43460 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43461 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43462 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43463 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43464 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43465 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43466 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43467 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43468 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43469 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43470 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43471 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43472 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43473 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43474 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43475 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43476 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43477 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43478 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43479 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43480 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43481 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43482 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43483 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43484 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43485 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43486 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43487 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43488 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43489 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43490 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43491 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43492 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43493 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43494 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43495 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43496 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43497 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43498 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43499 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43500 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43501 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43502 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43503 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43504 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43505 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43506 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43507 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43508 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43509 UNICODE_UNASSIGNED 43510 }, 43511 { /* page 505, index 120 */ 43512 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43513 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43514 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43515 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43516 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43517 UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43518 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43519 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43520 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43521 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43522 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43523 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43524 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43525 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43526 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43527 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43528 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43529 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43530 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43531 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43532 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43533 UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43534 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43535 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43536 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43537 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 43538 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, 43539 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43540 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43541 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43542 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43543 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43544 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43545 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43546 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43547 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43548 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43549 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43550 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43551 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43552 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43553 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43554 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, 43555 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43556 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43557 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43558 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43559 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43560 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43561 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43562 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 43563 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43564 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43565 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43566 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43567 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43568 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43569 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43570 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43571 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43572 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43573 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43574 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43575 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43576 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43577 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43578 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43579 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43580 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43581 UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43582 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43583 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43584 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43585 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43586 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43587 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43588 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43589 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43590 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43591 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43592 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43593 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43594 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43595 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43596 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43597 UNICODE_UNASSIGNED 43598 }, 43599 { /* page 678, index 121 */ 43600 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43601 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43602 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43603 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43604 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43605 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43606 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43607 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43608 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43609 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43610 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43611 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43612 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43613 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43614 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43615 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43616 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43617 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43618 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43619 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43620 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43621 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43622 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43623 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43624 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43625 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43626 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43627 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43628 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43629 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43630 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43631 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43632 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43633 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43634 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43635 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43636 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43637 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43638 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43639 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43640 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43641 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43642 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43643 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43644 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43645 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43646 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43647 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43648 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43649 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43650 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43651 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43652 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43653 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43654 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43655 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43656 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43657 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43658 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43659 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43660 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43661 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43662 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43663 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43664 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43665 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43666 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43667 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43668 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43669 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43670 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43671 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 43672 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43673 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43674 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43675 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43676 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43677 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43678 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43679 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43680 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43681 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43682 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43683 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43684 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43685 UNICODE_UNASSIGNED 43686 }, 43687 { /* page 695, index 122 */ 43688 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43689 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43690 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43691 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43692 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43693 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43694 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43695 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43696 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43697 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43698 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43699 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43700 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43701 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43702 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43703 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43704 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43705 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 43706 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43707 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43708 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43709 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43710 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43711 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43712 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43713 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43714 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43715 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43716 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43717 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43718 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43719 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43720 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43721 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43722 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43723 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43724 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43725 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43726 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43727 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43728 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43729 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43730 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43731 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43732 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43733 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43734 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43735 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43736 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43737 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43738 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43739 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43740 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43741 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43742 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43743 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43744 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43745 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43746 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43747 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43748 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43749 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43750 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43751 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43752 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43753 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43754 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43755 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43756 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43757 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43758 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43759 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43760 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43761 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43762 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43763 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43764 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43765 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43766 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43767 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43768 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43769 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43770 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43771 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43772 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43773 UNICODE_OTHER_LETTER 43774 }, 43775 { /* page 696, index 123 */ 43776 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43777 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43778 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43779 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43780 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43781 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43782 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43783 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43784 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43785 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43786 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 43787 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43788 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43789 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43790 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43791 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43792 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43793 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43794 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43795 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43796 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43797 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43798 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43799 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43800 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43801 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43802 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43803 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43804 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43805 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43806 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43807 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43808 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43809 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43810 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43811 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43812 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43813 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43814 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43815 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43816 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43817 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43818 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43819 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43820 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43821 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43822 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43823 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43824 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43825 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43826 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43827 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43828 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43829 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43830 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43831 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43832 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43833 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43834 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43835 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43836 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43837 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43838 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43839 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43840 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43841 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43842 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43843 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43844 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43845 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43846 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43847 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43848 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43849 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43850 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43851 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43852 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43853 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43854 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43855 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43856 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43857 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43858 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43859 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43860 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43861 UNICODE_OTHER_LETTER 43862 }, 43863 { /* page 718, index 124 */ 43864 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43865 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43866 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43867 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43868 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43869 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43870 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43871 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43872 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43873 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43874 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43875 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43876 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43877 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43878 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43879 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43880 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43881 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43882 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43883 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43884 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43885 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43886 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43887 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43888 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43889 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43890 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43891 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43892 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43893 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43894 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43895 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43896 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43897 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43898 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43899 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43900 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43901 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43902 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43903 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43904 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43905 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43906 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43907 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43908 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43909 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43910 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43911 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43912 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43913 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43914 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43915 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43916 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43917 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43918 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43919 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43920 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43921 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43922 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 43923 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43924 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43925 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43926 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43927 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43928 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43929 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43930 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43931 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43932 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43933 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43934 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43935 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43936 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43937 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43938 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43939 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43940 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43941 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43942 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43943 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43944 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43945 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43946 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43947 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43948 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43949 UNICODE_OTHER_LETTER 43950 }, 43951 { /* page 747, index 125 */ 43952 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43953 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43954 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43955 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43956 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43957 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43958 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43959 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43960 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43961 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43962 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43963 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43964 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43965 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43966 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43967 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43968 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43969 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43970 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43971 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43972 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43973 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43974 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43975 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43976 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43977 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43978 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43979 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43980 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43981 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43982 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43983 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43984 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43985 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43986 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43987 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43988 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43989 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43990 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43991 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43992 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43993 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43994 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43995 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43996 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43997 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43998 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43999 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44000 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44001 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44002 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44003 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44004 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44005 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44006 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44007 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44008 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44009 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44010 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44011 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44012 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44013 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44014 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44015 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44016 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44017 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44018 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44019 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44020 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44021 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44022 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44023 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44024 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44025 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44026 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44027 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44028 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44029 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44030 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44031 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44032 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44033 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44034 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44035 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44036 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44037 UNICODE_UNASSIGNED 44038 }, 44039 { /* page 762, index 126 */ 44040 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44041 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44042 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44043 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44044 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44045 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44046 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44047 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44048 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44049 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44050 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44051 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44052 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44053 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44054 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44055 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44056 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44057 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44058 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44059 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44060 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44061 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44062 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44063 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44064 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44065 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44066 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44067 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44068 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44069 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44070 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44071 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44072 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44073 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44074 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44075 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44076 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44077 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44078 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44079 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44080 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44081 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44082 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44083 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44084 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44085 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44086 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44087 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44088 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44089 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44090 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44091 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44092 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44093 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44094 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44095 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44096 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44097 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44098 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44099 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44100 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44101 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44102 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44103 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44104 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44105 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44106 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44107 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44108 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44109 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44110 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44111 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44112 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44113 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44114 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44115 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44116 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44117 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44118 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44119 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44120 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44121 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44122 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44123 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44124 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44125 UNICODE_UNASSIGNED 44126 }, 44127 { /* page 3584, index 127 */ 44128 UNICODE_UNASSIGNED, UNICODE_FORMAT, UNICODE_UNASSIGNED, 44129 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44130 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44131 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44132 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44133 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44134 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44135 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44136 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44137 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44138 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_FORMAT, 44139 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44140 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44141 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44142 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44143 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44144 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44145 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44146 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44147 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44148 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44149 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44150 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44151 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44152 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44153 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44154 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44155 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44156 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44157 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44158 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44159 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44160 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44161 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44162 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44163 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44164 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44165 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44166 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44167 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44168 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44169 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44170 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44171 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44172 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44173 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44174 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44175 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44176 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44177 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44178 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44179 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44180 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44181 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44182 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44183 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44184 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44185 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44186 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44187 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44188 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44189 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44190 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44191 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44192 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44193 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44194 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44195 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44196 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44197 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44198 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44199 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44200 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44201 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44202 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44203 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44204 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44205 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 44206 }, 44207 { /* page 3585, index 128 */ 44208 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44209 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44210 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44211 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44212 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44213 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44214 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44215 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44216 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44217 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44218 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44219 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44220 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44221 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44222 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44223 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44224 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44225 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44226 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44227 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44228 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44229 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44230 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44231 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44232 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44233 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44234 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44235 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44236 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44237 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44238 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44239 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44240 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44241 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44242 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44243 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44244 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44245 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44246 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44247 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44248 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44249 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44250 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44251 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44252 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44253 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44254 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44255 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44256 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44257 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44258 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44259 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44260 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44261 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44262 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44263 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44264 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44265 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44266 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44267 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44268 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44269 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44270 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44271 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44272 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44273 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44274 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44275 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44276 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44277 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44278 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44279 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44280 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44281 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44282 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44283 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44284 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44285 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44286 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44287 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44288 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44289 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44290 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44291 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44292 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44293 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44294 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44295 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44296 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44297 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44298 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44299 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44300 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44301 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44302 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44303 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44304 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44305 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44306 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44307 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44308 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44309 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44310 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44311 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44312 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44313 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44314 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44315 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44316 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44317 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44318 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44319 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44320 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44321 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44322 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44323 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44324 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44325 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44326 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44327 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44328 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44329 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44330 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44331 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44332 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44333 UNICODE_UNASSIGNED 44334 }, 44335 { /* page 4095, index 129 */ 44336 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44337 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44338 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44339 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44340 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44341 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44342 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44343 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44344 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44345 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44346 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44347 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44348 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44349 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44350 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44351 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44352 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44353 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44354 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44355 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44356 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44357 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44358 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44359 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44360 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44361 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44362 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44363 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44364 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44365 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44366 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44367 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44368 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44369 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44370 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44371 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44372 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44373 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44374 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44375 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44376 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44377 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44378 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44379 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44380 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44381 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44382 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44383 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44384 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44385 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44386 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44387 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44388 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44389 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44390 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44391 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44392 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44393 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44394 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44395 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44396 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44397 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44398 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44399 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44400 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44401 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44402 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44403 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44404 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44405 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44406 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44407 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44408 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44409 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44410 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44411 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44412 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44413 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44414 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44415 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44416 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44417 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44418 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44419 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44420 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_UNASSIGNED, 44421 UNICODE_UNASSIGNED 44422 }, 44423 { /* page 4351, index 130 */ 44424 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44425 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44426 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44427 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44428 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44429 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44430 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44431 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44432 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44433 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44434 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44435 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44436 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44437 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44438 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44439 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44440 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44441 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44442 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44443 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44444 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44445 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44446 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44447 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44448 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44449 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44450 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44451 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44452 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44453 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44454 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44455 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44456 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44457 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44458 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44459 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44460 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44461 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44462 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44463 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44464 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44465 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44466 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44467 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44468 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44469 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44470 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44471 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44472 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44473 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44474 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44475 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44476 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44477 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44478 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44479 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44480 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44481 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44482 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44483 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44484 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44485 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44486 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44487 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44488 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44489 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44490 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44491 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44492 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44493 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44494 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44495 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44496 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44497 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44498 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44499 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44500 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44501 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44502 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44503 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44504 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44505 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44506 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44507 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44508 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_UNASSIGNED, 44509 UNICODE_UNASSIGNED 44510 } 44511 }; 44512 44513 /* U+0000 through U+2FAFF */ 44514 static const int16_t type_table_part1[763] = { 44515 0 /* page 0 */, 44516 1 /* page 1 */, 44517 2 /* page 2 */, 44518 3 /* page 3 */, 44519 4 /* page 4 */, 44520 5 /* page 5 */, 44521 6 /* page 6 */, 44522 7 /* page 7 */, 44523 8 /* page 8 */, 44524 9 /* page 9 */, 44525 10 /* page 10 */, 44526 11 /* page 11 */, 44527 12 /* page 12 */, 44528 13 /* page 13 */, 44529 14 /* page 14 */, 44530 15 /* page 15 */, 44531 16 /* page 16 */, 44532 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44533 17 /* page 18 */, 44534 18 /* page 19 */, 44535 19 /* page 20 */, 44536 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44537 20 /* page 22 */, 44538 21 /* page 23 */, 44539 22 /* page 24 */, 44540 23 /* page 25 */, 44541 24 /* page 26 */, 44542 25 /* page 27 */, 44543 26 /* page 28 */, 44544 27 /* page 29 */, 44545 28 /* page 30 */, 44546 29 /* page 31 */, 44547 30 /* page 32 */, 44548 31 /* page 33 */, 44549 UNICODE_MATH_SYMBOL + UNICODE_MAX_TABLE_INDEX, 44550 32 /* page 35 */, 44551 33 /* page 36 */, 44552 34 /* page 37 */, 44553 35 /* page 38 */, 44554 36 /* page 39 */, 44555 UNICODE_OTHER_SYMBOL + UNICODE_MAX_TABLE_INDEX, 44556 37 /* page 41 */, 44557 UNICODE_MATH_SYMBOL + UNICODE_MAX_TABLE_INDEX, 44558 38 /* page 43 */, 44559 39 /* page 44 */, 44560 40 /* page 45 */, 44561 41 /* page 46 */, 44562 42 /* page 47 */, 44563 43 /* page 48 */, 44564 44 /* page 49 */, 44565 45 /* page 50 */, 44566 UNICODE_OTHER_SYMBOL + UNICODE_MAX_TABLE_INDEX, 44567 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44568 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44569 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44570 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44571 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44572 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44573 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44574 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44575 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44576 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44577 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44578 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44579 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44580 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44581 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44582 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44583 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44584 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44585 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44586 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44587 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44588 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44589 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44590 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44591 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44592 46 /* page 77 */, 44593 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44594 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44595 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44596 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44597 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44598 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44599 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44600 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44601 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44602 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44603 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44604 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44605 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44606 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44607 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44608 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44609 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44610 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44611 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44612 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44613 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44614 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44615 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44616 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44617 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44618 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44619 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44620 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44621 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44622 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44623 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44624 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44625 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44626 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44627 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44628 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44629 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44630 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44631 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44632 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44633 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44634 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44635 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44636 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44637 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44638 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44639 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44640 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44641 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44642 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44643 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44644 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44645 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44646 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44647 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44648 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44649 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44650 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44651 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44652 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44653 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44654 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44655 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44656 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44657 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44658 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44659 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44660 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44661 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44662 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44663 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44664 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44665 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44666 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44667 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44668 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44669 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44670 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44671 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44672 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44673 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44674 47 /* page 159 */, 44675 48 /* page 160 */, 44676 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44677 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44678 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44679 49 /* page 164 */, 44680 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44681 50 /* page 166 */, 44682 51 /* page 167 */, 44683 52 /* page 168 */, 44684 53 /* page 169 */, 44685 54 /* page 170 */, 44686 55 /* page 171 */, 44687 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44688 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44689 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44690 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44691 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44692 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44693 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44694 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44695 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44696 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44697 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44698 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44699 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44700 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44701 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44702 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44703 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44704 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44705 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44706 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44707 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44708 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44709 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44710 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44711 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44712 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44713 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44714 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44715 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44716 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44717 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44718 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44719 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44720 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44721 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44722 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44723 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44724 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44725 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44726 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44727 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44728 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44729 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44730 56 /* page 215 */, 44731 UNICODE_SURROGATE + UNICODE_MAX_TABLE_INDEX, 44732 UNICODE_SURROGATE + UNICODE_MAX_TABLE_INDEX, 44733 UNICODE_SURROGATE + UNICODE_MAX_TABLE_INDEX, 44734 UNICODE_SURROGATE + UNICODE_MAX_TABLE_INDEX, 44735 UNICODE_SURROGATE + UNICODE_MAX_TABLE_INDEX, 44736 UNICODE_SURROGATE + UNICODE_MAX_TABLE_INDEX, 44737 UNICODE_SURROGATE + UNICODE_MAX_TABLE_INDEX, 44738 UNICODE_SURROGATE + UNICODE_MAX_TABLE_INDEX, 44739 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44740 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44741 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44742 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44743 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44744 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44745 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44746 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44747 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44748 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44749 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44750 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44751 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44752 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44753 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44754 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44755 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44756 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44757 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44758 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44759 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44760 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44761 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44762 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44763 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44764 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44765 57 /* page 250 */, 44766 58 /* page 251 */, 44767 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44768 59 /* page 253 */, 44769 60 /* page 254 */, 44770 61 /* page 255 */, 44771 62 /* page 256 */, 44772 63 /* page 257 */, 44773 64 /* page 258 */, 44774 65 /* page 259 */, 44775 66 /* page 260 */, 44776 67 /* page 261 */, 44777 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44778 68 /* page 263 */, 44779 69 /* page 264 */, 44780 70 /* page 265 */, 44781 71 /* page 266 */, 44782 72 /* page 267 */, 44783 73 /* page 268 */, 44784 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44785 74 /* page 270 */, 44786 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44787 75 /* page 272 */, 44788 76 /* page 273 */, 44789 77 /* page 274 */, 44790 78 /* page 275 */, 44791 79 /* page 276 */, 44792 80 /* page 277 */, 44793 81 /* page 278 */, 44794 82 /* page 279 */, 44795 83 /* page 280 */, 44796 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44797 84 /* page 282 */, 44798 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44799 85 /* page 284 */, 44800 86 /* page 285 */, 44801 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44802 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44803 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44804 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44805 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44806 87 /* page 291 */, 44807 88 /* page 292 */, 44808 89 /* page 293 */, 44809 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44810 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44811 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44812 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44813 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44814 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44815 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44816 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44817 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44818 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44819 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44820 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44821 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44822 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44823 90 /* page 308 */, 44824 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44825 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44826 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44827 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44828 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44829 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44830 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44831 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44832 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44833 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44834 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44835 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44836 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44837 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44838 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44839 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44840 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44841 91 /* page 326 */, 44842 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44843 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44844 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44845 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44846 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44847 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44848 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44849 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44850 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44851 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44852 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44853 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44854 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44855 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44856 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44857 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44858 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44859 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44860 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44861 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44862 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44863 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44864 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44865 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44866 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44867 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44868 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44869 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44870 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44871 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44872 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44873 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44874 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44875 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44876 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44877 92 /* page 362 */, 44878 93 /* page 363 */, 44879 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44880 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44881 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44882 94 /* page 367 */, 44883 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44884 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44885 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44886 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44887 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44888 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44889 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44890 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44891 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44892 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44893 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44894 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44895 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44896 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44897 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44898 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44899 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44900 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44901 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44902 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44903 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44904 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44905 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44906 95 /* page 391 */, 44907 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44908 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44909 96 /* page 394 */, 44910 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44911 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44912 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44913 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44914 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44915 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44916 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44917 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44918 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44919 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44920 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44921 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44922 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44923 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44924 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44925 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44926 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44927 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44928 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44929 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44930 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44931 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44932 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44933 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44934 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44935 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44936 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44937 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44938 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44939 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44940 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44941 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44942 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44943 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44944 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44945 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44946 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44947 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44948 97 /* page 433 */, 44949 98 /* page 434 */, 44950 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44951 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44952 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44953 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44954 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44955 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44956 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44957 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44958 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44959 99 /* page 444 */, 44960 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44961 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44962 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44963 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44964 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44965 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44966 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44967 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44968 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44969 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44970 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44971 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44972 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44973 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44974 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44975 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44976 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44977 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44978 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44979 100 /* page 464 */, 44980 101 /* page 465 */, 44981 102 /* page 466 */, 44982 103 /* page 467 */, 44983 104 /* page 468 */, 44984 105 /* page 469 */, 44985 106 /* page 470 */, 44986 107 /* page 471 */, 44987 UNICODE_OTHER_SYMBOL + UNICODE_MAX_TABLE_INDEX, 44988 UNICODE_OTHER_SYMBOL + UNICODE_MAX_TABLE_INDEX, 44989 108 /* page 474 */, 44990 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44991 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44992 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44993 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44994 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44995 109 /* page 480 */, 44996 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44997 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44998 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44999 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45000 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45001 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45002 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45003 110 /* page 488 */, 45004 111 /* page 489 */, 45005 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45006 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45007 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45008 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45009 112 /* page 494 */, 45010 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45011 113 /* page 496 */, 45012 114 /* page 497 */, 45013 115 /* page 498 */, 45014 116 /* page 499 */, 45015 UNICODE_OTHER_SYMBOL + UNICODE_MAX_TABLE_INDEX, 45016 UNICODE_OTHER_SYMBOL + UNICODE_MAX_TABLE_INDEX, 45017 117 /* page 502 */, 45018 118 /* page 503 */, 45019 119 /* page 504 */, 45020 120 /* page 505 */, 45021 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45022 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45023 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45024 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45025 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45026 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45027 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45028 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45029 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45030 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45031 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45032 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45033 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45034 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45035 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45036 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45037 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45038 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45039 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45040 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45041 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45042 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45043 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45044 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45045 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45046 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45047 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45048 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45049 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45050 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45051 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45052 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45053 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45054 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45055 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45056 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45057 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45058 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45059 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45060 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45061 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45062 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45063 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45064 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45065 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45066 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45067 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45068 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45069 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45070 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45071 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45072 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45073 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45074 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45075 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45076 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45077 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45078 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45079 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45080 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45081 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45082 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45083 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45084 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45085 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45086 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45087 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45088 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45089 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45090 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45091 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45092 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45093 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45094 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45095 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45096 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45097 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45098 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45099 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45100 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45101 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45102 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45103 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45104 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45105 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45106 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45107 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45108 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45109 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45110 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45111 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45112 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45113 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45114 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45115 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45116 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45117 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45118 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45119 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45120 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45121 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45122 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45123 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45124 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45125 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45126 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45127 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45128 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45129 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45130 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45131 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45132 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45133 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45134 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45135 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45136 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45137 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45138 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45139 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45140 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45141 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45142 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45143 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45144 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45145 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45146 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45147 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45148 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45149 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45150 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45151 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45152 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45153 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45154 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45155 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45156 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45157 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45158 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45159 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45160 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45161 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45162 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45163 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45164 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45165 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45166 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45167 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45168 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45169 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45170 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45171 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45172 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45173 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45174 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45175 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45176 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45177 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45178 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45179 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45180 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45181 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45182 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45183 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45184 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45185 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45186 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45187 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45188 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45189 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45190 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45191 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45192 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45193 121 /* page 678 */, 45194 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45195 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45196 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45197 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45198 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45199 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45200 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45201 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45202 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45203 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45204 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45205 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45206 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45207 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45208 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45209 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45210 122 /* page 695 */, 45211 123 /* page 696 */, 45212 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45213 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45214 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45215 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45216 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45217 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45218 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45219 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45220 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45221 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45222 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45223 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45224 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45225 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45226 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45227 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45228 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45229 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45230 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45231 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45232 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45233 124 /* page 718 */, 45234 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45235 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45236 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45237 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45238 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45239 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45240 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45241 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45242 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45243 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45244 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45245 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45246 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45247 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45248 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45249 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45250 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45251 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45252 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45253 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45254 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45255 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45256 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45257 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45258 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45259 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45260 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45261 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45262 125 /* page 747 */, 45263 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45264 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45265 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45266 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45267 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45268 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45269 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45270 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45271 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45272 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45273 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45274 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45275 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45276 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45277 126 /* page 762 */ 45278 }; 45279 45280 /* U+E0000 through U+10FFFF */ 45281 static const int16_t type_table_part2[768] = { 45282 127 /* page 3584 */, 45283 128 /* page 3585 */, 45284 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45285 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45286 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45287 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45288 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45289 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45290 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45291 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45292 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45293 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45294 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45295 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45296 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45297 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45298 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45299 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45300 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45301 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45302 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45303 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45304 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45305 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45306 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45307 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45308 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45309 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45310 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45311 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45312 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45313 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45314 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45315 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45316 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45317 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45318 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45319 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45320 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45321 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45322 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45323 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45324 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45325 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45326 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45327 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45328 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45329 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45330 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45331 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45332 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45333 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45334 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45335 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45336 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45337 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45338 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45339 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45340 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45341 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45342 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45343 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45344 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45345 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45346 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45347 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45348 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45349 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45350 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45351 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45352 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45353 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45354 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45355 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45356 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45357 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45358 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45359 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45360 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45361 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45362 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45363 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45364 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45365 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45366 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45367 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45368 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45369 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45370 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45371 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45372 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45373 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45374 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45375 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45376 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45377 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45378 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45379 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45380 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45381 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45382 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45383 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45384 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45385 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45386 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45387 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45388 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45389 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45390 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45391 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45392 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45393 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45394 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45395 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45396 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45397 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45398 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45399 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45400 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45401 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45402 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45403 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45404 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45405 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45406 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45407 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45408 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45409 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45410 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45411 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45412 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45413 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45414 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45415 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45416 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45417 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45418 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45419 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45420 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45421 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45422 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45423 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45424 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45425 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45426 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45427 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45428 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45429 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45430 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45431 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45432 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45433 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45434 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45435 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45436 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45437 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45438 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45439 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45440 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45441 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45442 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45443 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45444 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45445 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45446 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45447 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45448 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45449 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45450 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45451 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45452 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45453 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45454 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45455 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45456 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45457 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45458 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45459 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45460 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45461 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45462 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45463 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45464 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45465 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45466 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45467 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45468 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45469 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45470 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45471 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45472 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45473 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45474 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45475 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45476 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45477 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45478 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45479 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45480 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45481 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45482 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45483 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45484 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45485 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45486 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45487 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45488 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45489 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45490 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45491 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45492 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45493 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45494 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45495 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45496 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45497 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45498 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45499 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45500 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45501 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45502 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45503 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45504 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45505 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45506 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45507 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45508 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45509 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45510 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45511 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45512 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45513 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45514 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45515 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45516 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45517 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45518 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45519 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45520 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45521 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45522 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45523 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45524 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45525 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45526 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45527 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45528 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45529 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45530 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45531 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45532 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45533 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45534 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45535 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45536 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45537 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45538 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45539 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45540 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45541 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45542 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45543 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45544 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45545 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45546 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45547 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45548 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45549 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45550 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45551 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45552 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45553 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45554 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45555 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45556 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45557 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45558 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45559 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45560 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45561 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45562 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45563 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45564 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45565 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45566 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45567 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45568 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45569 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45570 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45571 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45572 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45573 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45574 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45575 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45576 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45577 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45578 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45579 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45580 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45581 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45582 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45583 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45584 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45585 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45586 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45587 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45588 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45589 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45590 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45591 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45592 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45593 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45594 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45595 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45596 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45597 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45598 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45599 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45600 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45601 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45602 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45603 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45604 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45605 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45606 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45607 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45608 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45609 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45610 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45611 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45612 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45613 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45614 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45615 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45616 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45617 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45618 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45619 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45620 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45621 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45622 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45623 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45624 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45625 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45626 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45627 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45628 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45629 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45630 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45631 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45632 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45633 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45634 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45635 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45636 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45637 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45638 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45639 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45640 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45641 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45642 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45643 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45644 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45645 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45646 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45647 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45648 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45649 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45650 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45651 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45652 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45653 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45654 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45655 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45656 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45657 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45658 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45659 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45660 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45661 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45662 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45663 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45664 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45665 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45666 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45667 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45668 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45669 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45670 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45671 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45672 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45673 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45674 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45675 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45676 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45677 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45678 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45679 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45680 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45681 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45682 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45683 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45684 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45685 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45686 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45687 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45688 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45689 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45690 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45691 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45692 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45693 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45694 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45695 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45696 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45697 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45698 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45699 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45700 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45701 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45702 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45703 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45704 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45705 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45706 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45707 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45708 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45709 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45710 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45711 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45712 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45713 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45714 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45715 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45716 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45717 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45718 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45719 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45720 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45721 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45722 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45723 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45724 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45725 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45726 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45727 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45728 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45729 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45730 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45731 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45732 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45733 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45734 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45735 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45736 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45737 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45738 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45739 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45740 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45741 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45742 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45743 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45744 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45745 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45746 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45747 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45748 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45749 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45750 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45751 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45752 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45753 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45754 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45755 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45756 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45757 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45758 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45759 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45760 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45761 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45762 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45763 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45764 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45765 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45766 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45767 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45768 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45769 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45770 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45771 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45772 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45773 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45774 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45775 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45776 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45777 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45778 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45779 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45780 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45781 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45782 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45783 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45784 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45785 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45786 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45787 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45788 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45789 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45790 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45791 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45792 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45793 129 /* page 4095 */, 45794 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45795 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45796 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45797 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45798 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45799 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45800 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45801 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45802 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45803 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45804 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45805 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45806 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45807 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45808 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45809 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45810 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45811 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45812 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45813 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45814 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45815 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45816 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45817 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45818 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45819 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45820 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45821 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45822 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45823 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45824 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45825 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45826 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45827 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45828 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45829 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45830 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45831 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45832 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45833 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45834 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45835 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45836 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45837 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45838 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45839 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45840 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45841 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45842 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45843 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45844 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45845 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45846 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45847 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45848 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45849 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45850 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45851 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45852 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45853 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45854 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45855 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45856 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45857 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45858 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45859 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45860 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45861 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45862 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45863 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45864 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45865 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45866 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45867 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45868 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45869 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45870 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45871 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45872 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45873 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45874 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45875 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45876 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45877 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45878 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45879 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45880 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45881 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45882 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45883 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45884 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45885 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45886 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45887 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45888 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45889 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45890 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45891 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45892 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45893 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45894 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45895 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45896 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45897 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45898 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45899 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45900 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45901 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45902 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45903 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45904 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45905 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45906 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45907 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45908 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45909 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45910 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45911 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45912 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45913 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45914 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45915 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45916 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45917 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45918 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45919 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45920 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45921 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45922 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45923 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45924 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45925 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45926 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45927 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45928 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45929 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45930 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45931 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45932 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45933 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45934 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45935 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45936 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45937 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45938 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45939 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45940 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45941 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45942 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45943 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45944 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45945 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45946 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45947 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45948 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45949 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45950 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45951 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45952 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45953 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45954 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45955 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45956 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45957 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45958 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45959 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45960 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45961 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45962 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45963 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45964 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45965 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45966 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45967 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45968 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45969 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45970 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45971 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45972 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45973 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45974 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45975 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45976 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45977 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45978 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45979 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45980 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45981 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45982 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45983 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45984 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45985 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45986 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45987 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45988 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45989 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45990 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45991 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45992 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45993 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45994 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45995 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45996 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45997 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45998 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45999 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46000 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46001 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46002 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46003 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46004 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46005 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46006 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46007 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46008 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46009 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46010 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46011 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46012 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46013 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46014 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46015 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46016 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46017 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46018 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46019 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46020 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46021 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46022 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46023 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46024 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46025 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46026 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46027 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46028 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46029 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46030 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46031 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46032 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46033 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46034 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46035 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46036 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46037 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46038 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46039 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46040 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46041 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46042 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46043 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46044 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46045 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46046 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46047 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46048 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46049 130 /* page 4351 */ 46050 }; 46051 46052 46053 46054 /** 46055 * next UTF-8 code point 46056 * 46057 * find the next UTF-8 code point in the string 46058 * 46059 * the validity of the found UTF-8 code point is not checked 46060 * 46061 * nextUTF8 gives wrong result when utf8 is not on the first byte of a code point 46062 * use findNextUTF8 to find next code point when utf8 is not at the start of a code point 46063 * 46064 * \param 46065 * utf8 UTF-8 encoded string 46066 * \return 46067 * pointer to next UTF-8 code point 46068 * NULL when the end string is reached or utf8 is NULL 46069 */ 46070 const char *nextUTF8(const char *utf8) { 46071 46072 if (!utf8 || !*utf8) { 46073 return(NULL); 46074 } 46075 46076 nxCodeUTF8(utf8); 46077 return(utf8); 46078 } 46079 46080 /** 46081 * buffer length next UTF-8 code point 46082 * 46083 * find the next UTF-8 code point in the string 46084 * 46085 * the validity of the found UTF-8 code point is not checked 46086 * 46087 * bLNextUTF8 gives wrong result when utf8 is not on the first byte of a code point 46088 * use findNextUTF8 to find next code point when utf8 is not at the start of a code point 46089 * 46090 * \param 46091 * string start of the UTF-8 encoded string 46092 * \param 46093 * utf8 pointer to a code point in string 46094 * \param 46095 * utf8Size string buffer size (including NUL, strlen(string) +1 when the buffer is full) 46096 * \return 46097 * pointer to next UTF-8 code point 46098 * NULL when the end string is reached or utf8 is NULL or the start of the next code point is outside the string 46099 */ 46100 const char *bLNextUTF8(const char *string, size_t utf8Size, const char *utf8) { 46101 46102 if (!string || !utf8 || !utf8Size || !*utf8 || (size_t)(utf8 - string) >= utf8Size) { 46103 return(NULL); 46104 } 46105 46106 nxCodeUTF8(utf8); 46107 if (((size_t)(utf8-string) >= utf8Size) || !*utf8) { 46108 return(NULL); 46109 } 46110 46111 return(utf8); 46112 } 46113 46114 /** 46115 * find next UTF-8 code point 46116 * even not at the start of a code point 46117 * 46118 * find the next UTF-8 code point in the string 46119 * 46120 * the validity of the found UTF-8 code point is not checked 46121 * 46122 * \param 46123 * string start of the UTF-8 encoded string 46124 * \param 46125 * utf8 pointer in string 46126 * \param 46127 * ut8Size string buffer size (including NUL, strlen(string) +1 when the buffer is full) 46128 * \return 46129 * pointer to next UTF-8 code point 46130 * NULL when the end string is reached or utf8 is NULL or the start of the next code point is outside the string 46131 */ 46132 const char *findNextUTF8(const char *string, size_t utf8Size, const char *utf8) { 46133 46134 if (!string || !utf8 || !utf8Size || !*utf8 || (size_t)(utf8 - string) >= utf8Size) { 46135 return(NULL); 46136 } 46137 46138 while (*utf8 && ((size_t)(utf8-string) < utf8Size)) { 46139 if ((*utf8++ & 0xC0) != 0x80) { 46140 break; 46141 } 46142 } 46143 if (((size_t)(utf8-string) >= utf8Size) || !*utf8) { 46144 return(NULL); 46145 } 46146 46147 return(utf8); 46148 } 46149 46150 /** 46151 * previous UTF-8 code point 46152 * 46153 * find the previous UTF-8 code point in the string 46154 * 46155 * the validity of the found UTF-8 code point is not checked 46156 * 46157 * the behavior is undefined when utf8 is the start of the string, use instead findPrevUTF8 for safe handling 46158 * 46159 * \param 46160 * utf8 UTF-8 encoded string 46161 * \return 46162 * pointer to previous UTF-8 code point 46163 * NULL when utf8 is NULL 46164 */ 46165 const char *prevUTF8(const char *utf8) { 46166 46167 if (!utf8) { 46168 return(NULL); 46169 } 46170 46171 forever { 46172 utf8--; 46173 if ((*utf8 & 0xC0) != 0x80) { 46174 return(utf8); 46175 } 46176 } 46177 } 46178 46179 /** 46180 * buffer previous UTF-8 code point 46181 * 46182 * find the previous UTF-8 code point in the string 46183 * 46184 * the validity of the found UTF-8 code point is not checked 46185 * 46186 * \param 46187 * string UTF-8 encoded string 46188 * \param 46189 * utf8 pointer in UTF-8 encoded string 46190 * \return 46191 * pointer to previous UTF-8 code point 46192 * NULL when utf8 is NULL 46193 */ 46194 const char *bPrevUTF8(const char *string, const char *utf8) { 46195 46196 if (!string || !utf8) { 46197 return(NULL); 46198 } 46199 46200 return(bPrevUTF8Tiny(string, utf8)); 46201 } 46202 46203 local const char *bPrevUTF8Tiny(const char *string, const char *utf8) { 46204 46205 while (utf8 > string) { 46206 utf8--; 46207 if ((*utf8 & 0xC0) != 0x80) { 46208 return(utf8); 46209 } 46210 } 46211 46212 return(NULL); 46213 } 46214 46215 local char *bPrevRWUTF8Tiny(const char *string, char *utf8) { 46216 46217 while (utf8 > string) { 46218 utf8--; 46219 if ((*utf8 & 0xC0) != 0x80) { 46220 return(utf8); 46221 } 46222 } 46223 46224 return(NULL); 46225 } 46226 46227 /** 46228 * index to pointer UTF8 encoded string 46229 * 46230 * Converts character index to pointer in utf8 46231 * 46232 * \param 46233 * utf8 UTF8 encoded string 46234 * \param 46235 * index character index in utf8, positive or negative. -1 is the last character in the string 46236 * \return 46237 * pointer to character at index 46238 * NULL when index is outside the string 46239 */ 46240 const char *idx2PtrUTF8(const char *utf8, int64_t index) { 46241 46242 if (!utf8 || !*utf8 || !index) { 46243 return(utf8); 46244 } 46245 46246 int64_t len = (int64_t)strlen(utf8); 46247 46248 if (index > 0) { 46249 if (index > len) { 46250 // index is outside the string 46251 return(NULL); 46252 } 46253 46254 // go forward 46255 const char *end = utf8 + len;; 46256 int64_t i = 0;; 46257 while (i != index) { 46258 nxCodeUTF8(utf8); 46259 if (utf8 > end) { 46260 return(NULL); 46261 } 46262 i++; 46263 } 46264 } 46265 else { 46266 if (index < -len) { 46267 // index is outside the string 46268 return(NULL); 46269 } 46270 46271 // go from the end 46272 const char *start = utf8;; 46273 utf8 += len;; 46274 int64_t i = 0;; 46275 while (i != index) { 46276 utf8 = bPrevUTF8Tiny(start, utf8);; 46277 i--; 46278 } 46279 } 46280 return(utf8); 46281 } 46282 46283 /** 46284 * index to pointer UTF8 encoded string - read write utf8 string (char*) 46285 * 46286 * Converts character index to pointer in utf8 46287 * 46288 * \param 46289 * utf8 UTF8 encoded string 46290 * \param 46291 * index character index in utf8, positive or negative. -1 is the last character in the string 46292 * \return 46293 * pointer to character at index 46294 * NULL when index is outside the string 46295 */ 46296 local char *idx2PtrRWUTF8(char *utf8, int64_t index) { 46297 46298 if (!utf8 || !*utf8 || !index) { 46299 return(utf8); 46300 } 46301 46302 int64_t len = (int64_t)strlen(utf8); 46303 46304 if (index > 0) { 46305 if (index > len) { 46306 // index is outside the string 46307 return(NULL); 46308 } 46309 46310 // go forward 46311 char *end = utf8 + len;; 46312 int64_t i = 0;; 46313 while (i != index) { 46314 nxCodeUTF8(utf8); 46315 if (utf8 > end) { 46316 return(NULL); 46317 } 46318 i++; 46319 } 46320 } 46321 else { 46322 if (index < -len) { 46323 // index is outside the string 46324 return(NULL); 46325 } 46326 46327 // go from the end 46328 char *start = utf8;; 46329 utf8 += len;; 46330 int64_t i = 0;; 46331 while (i != index) { 46332 utf8 = bPrevRWUTF8Tiny(start, utf8);; 46333 i--; 46334 } 46335 } 46336 return(utf8); 46337 } 46338 46339 const char *bLIdx2PtrUTF8(const char *utf8, size_t utf8Size, int64_t index) { 46340 46341 if (!utf8 || !*utf8 || !utf8Size || !index) { 46342 return(utf8); 46343 } 46344 46345 if (index > 0) { 46346 if ((size_t)index > utf8Size) { 46347 // index is outside the string 46348 return(NULL); 46349 } 46350 46351 // go forward 46352 const char *end = utf8 + utf8Size;; 46353 int64_t i = 0;; 46354 while (i != index) { 46355 nxCodeUTF8(utf8); 46356 if (utf8 >= end) { 46357 return(NULL); 46358 } 46359 i++; 46360 } 46361 } 46362 else { 46363 if (index < -(int64_t)utf8Size) { 46364 // index is outside the string 46365 return(NULL); 46366 } 46367 46368 // find string end 46369 size_t len; 46370 len = strlen(utf8); 46371 if (len+1 > utf8Size) { 46372 len = utf8Size - 1; 46373 } 46374 46375 // go from the end 46376 const char *start = utf8;; 46377 utf8 += len;; 46378 int64_t i = 0;; 46379 while (i != index) { 46380 utf8 = bPrevUTF8Tiny(start, utf8);; 46381 i--; 46382 } 46383 } 46384 return(utf8); 46385 } 46386 46387 /** 46388 * pointer to code point index UTF8 encoded string 46389 * 46390 * Converts pointer to character index 46391 * 46392 * This function works when utf8 and pos point inside code points 46393 * 46394 * \param 46395 * utf8 pointer to a code point in a UTF8 encoded string 46396 * \param 46397 * pos pointer to a code point in a UTF8 encoded string 46398 * \return 46399 * Number of code points from utf8 to pos, positive or negative 46400 * When utf8 < pos, the result is positive 46401 * When pos < utf8, the result is negative 46402 * 0 failed or index 0 46403 */ 46404 int64_t ptr2IdxUTF8(const char *utf8, const char *pos) { 46405 46406 if (!utf8 || !pos || utf8 == pos) { 46407 return(0); 46408 } 46409 46410 int64_t r = 0; 46411 46412 if (pos > utf8) { 46413 // there is at least one code point 46414 // find next code point, works even when utf8 points inside a code point 46415 while (*utf8) { 46416 if ((*utf8 & 0xC0) != 0x80) { 46417 // check utf8 is in a multibyte code point 46418 // if it is, find the end of the code point 46419 if ((*utf8 & 0xC0) == 0xC0) { 46420 nxCodeUTF8(utf8); 46421 } 46422 else { 46423 utf8++; 46424 } 46425 break; 46426 } 46427 utf8++; 46428 } 46429 r++; 46430 while (*utf8 && (utf8 < pos)) { 46431 nxCodeUTF8(utf8); 46432 r++; 46433 } 46434 if (utf8 > pos || !*utf8) { 46435 // pos points inside a code point, return index to pos code point 46436 // instead of next one 46437 // or reached the end of the string 46438 r--; 46439 } 46440 } 46441 else { 46442 while (utf8 > pos) { 46443 // find previous code point 46444 forever { 46445 utf8--; 46446 if ((*utf8 & 0xC0) != 0x80) { 46447 break; 46448 } 46449 } 46450 r--; 46451 } 46452 } 46453 return(r); 46454 } 46455 46456 /** 46457 * buffer pointer to code point index UTF8 encoded string 46458 * 46459 * Converts pointer to character index 46460 * 46461 * Safe function for negative index 46462 * 46463 * This function works when utf8 and pos point inside code points 46464 * 46465 * \param 46466 * start start of the UTF8 encoded string 46467 * \param 46468 * utf8 pointer to a code point in a UTF8 encoded string 46469 * \param 46470 * pos pointer to a code point in a UTF8 encoded string 46471 * \return 46472 * Number of code points from utf8 to pos, positive or negative 46473 * When utf8 < pos, the result is positive 46474 * When pos < utf8, the result is negative 46475 * 0 failed or index 0 46476 */ 46477 int64_t bPtr2IdxUTF8(const char *start, const char *utf8, const char *pos) { 46478 46479 if (!utf8 || !pos || utf8 == pos || !start || pos < start) { 46480 return(0); 46481 } 46482 46483 int64_t r = 0; 46484 46485 if (pos > utf8) { 46486 // there is at least one code point 46487 // find next code point, works even when utf8 points inside a code point 46488 while (*utf8) { 46489 if ((*utf8++ & 0xC0) != 0x80) { 46490 break; 46491 } 46492 } 46493 nxCodeUTF8(utf8); 46494 r++; 46495 while (*utf8 && (utf8 < pos)) { 46496 nxCodeUTF8(utf8); 46497 r++; 46498 } 46499 if (utf8 > pos || !*utf8) { 46500 // pos points inside a code point, return index to pos code point 46501 // instead of next one 46502 // or reached the end of the string 46503 r--; 46504 } 46505 } 46506 else { 46507 while ((utf8 > pos) && (utf8 > start)) { 46508 // find previous code point 46509 while (utf8 > start) { 46510 utf8--; 46511 if ((*utf8 & 0xC0) != 0x80) { 46512 break; 46513 } 46514 } 46515 r--; 46516 } 46517 } 46518 return(r); 46519 } 46520 46521 /** 46522 * buffer size pointer to code point index UTF8 encoded string 46523 * 46524 * Converts pointer to character index 46525 * 46526 * This function works when utf8 and pos point inside code points 46527 * 46528 * \param 46529 * utf8 pointer to a code point in a UTF8 encoded string 46530 * \param 46531 * utf8Size utf8 buffer size including NUL 46532 * \param 46533 * pos pointer to a code point in a UTF8 encoded string 46534 * \return 46535 * Number of code points from utf8 to pos, positive 46536 * -1 failed 46537 */ 46538 int64_t bLPtr2IdxUTF8(const char *utf8, size_t utf8Size, const char *pos) { 46539 46540 if (!utf8 || !utf8Size || !pos || (pos < utf8) || (pos >= (utf8+utf8Size))) { 46541 return(-1); 46542 } 46543 46544 int64_t r = 0; 46545 46546 // return 0 if utf8 = pos 46547 if (pos > utf8) { 46548 // there is at least one code point 46549 // find next code point, works even when utf8 points inside a code point 46550 const char *end = utf8+utf8Size-1;; 46551 while ((utf8 < end) && *utf8) { 46552 if ((*utf8++ & 0xC0) != 0x80) { 46553 break; 46554 } 46555 } 46556 nxCodeUTF8(utf8); 46557 r++; 46558 while ((utf8 < end) && *utf8 && (utf8 < pos)) { 46559 nxCodeUTF8(utf8); 46560 r++; 46561 } 46562 if (utf8 >= end || utf8 > pos || !*utf8) { 46563 // pos points inside a code point, return index to pos code point 46564 // instead of next one 46565 // or reached the end of the string 46566 r--; 46567 } 46568 } 46569 return(r); 46570 } 46571 46572 /** 46573 * buffer size pointer to negative code point index UTF8 encoded string 46574 * 46575 * Converts pointer to negative character index (from the end of the string) 46576 * 46577 * This function works when utf8 and pos point inside code points 46578 * 46579 * \param 46580 * utf8 pointer to a code point in a UTF8 encoded string 46581 * \param 46582 * utf8Size utf8 buffer size including NUL 46583 * \param 46584 * pos pointer to a code point in a UTF8 encoded string 46585 * \return 46586 * Number of code points from utf8 end to pos, negative 46587 * 0 failed 46588 */ 46589 int64_t bLPtr2NegIdxUTF8(const char *utf8, size_t utf8Size, const char *pos) { 46590 46591 if (!utf8 || !utf8Size || !pos || (pos < utf8) || (pos >= (utf8+utf8Size))) { 46592 return(0); 46593 } 46594 46595 int64_t r = 0; 46596 46597 const char *end = utf8+utf8Size-1; 46598 46599 while ((end > pos) && (end > utf8)) { 46600 // find previous code point 46601 while (end > utf8) { 46602 end--; 46603 if ((*end & 0xC0) != 0x80) { 46604 break; 46605 } 46606 } 46607 r--; 46608 } 46609 return(r); 46610 } 46611 46612 /** 46613 * make valid UTF-8 encoded string 46614 * 46615 * copy utf8 to newly allocated buffer, the invalid code points are 46616 * replaced with '?' 46617 * 46618 * The result buffer size is the same as utf8 size 46619 * 46620 * \param 46621 * utf8 valid or invalid UTF-8 encoded string 46622 * \result 46623 * new valid UTF-8 encoded string (you must free the pointer) 46624 * NULL failed 46625 */ 46626 char *makeValidUTF8(const char *utf8) { 46627 46628 if (!utf8) { 46629 return(NULL); 46630 } 46631 46632 char *r = malloc(strlen(utf8)+1); 46633 if (!r) { 46634 return(NULL); 46635 } 46636 46637 char *c = r; 46638 46639 while (*utf8) { 46640 if (isCodeUTF8(utf8)) { 46641 range(i, codeSizeUTF8(utf8)) { 46642 *c++ = *utf8++; 46643 } 46644 } 46645 else { 46646 *c = '?'; 46647 c++; 46648 utf8++; 46649 } 46650 } 46651 46652 *c = 0; 46653 46654 return(r); 46655 } 46656 46657 /** 46658 * buffer make valid UTF-8 encoded string 46659 * 46660 * replace the invalid code points with '?' in utf8 46661 * 46662 * \param 46663 * utf8 valid or invalid UTF-8 encoded string 46664 * \result 46665 * valid UTF-8 encoded string in utf8 buffer 46666 * NULL failed 46667 */ 46668 char *bMakeValidUTF8(char *utf8) { 46669 46670 if (!utf8) { 46671 return(NULL); 46672 } 46673 46674 char *r = utf8; 46675 46676 while (*utf8) { 46677 if (isCodeUTF8(utf8)) { 46678 nxCodeUTF8(utf8); 46679 } 46680 else { 46681 *utf8 = '?'; 46682 utf8++; 46683 } 46684 } 46685 46686 return(r); 46687 } 46688 46689 /** 46690 * length make valid UTF-8 encoded string 46691 * 46692 * copy utf8 to newly allocated buffer, the invalid code points are 46693 * replaced with '?' 46694 * 46695 * The result buffer size is utf8Len+1 46696 * 46697 * \param 46698 * utf8 valid or invalid UTF-8 encoded string 46699 * \param 46700 * utf8Len utf8 length 46701 * \result 46702 * new valid UTF-8 encoded string (you must free the pointer) 46703 * NULL failed 46704 */ 46705 char *nMakeValidUTF8(const char *utf8, size_t utf8Len) { 46706 46707 if (!utf8 || !utf8Len) { 46708 return(NULL); 46709 } 46710 46711 char *r = malloc(utf8Len+1); 46712 if (!r) { 46713 return(NULL); 46714 } 46715 46716 const char *end = utf8+utf8Len; 46717 char *c = r; 46718 46719 while (*utf8 && utf8 < end) { 46720 if (isCodeUTF8(utf8)) { 46721 range(i, codeSizeUTF8(utf8)) { 46722 *c++ = *utf8++; 46723 if (utf8 == end) { 46724 goto finish; 46725 } 46726 } 46727 } 46728 else { 46729 *c = '?'; 46730 c++; 46731 utf8++; 46732 } 46733 } 46734 46735 finish: 46736 *c = 0; 46737 46738 return(r); 46739 } 46740 46741 /** 46742 * buffer length make valid UTF-8 encoded string 46743 * 46744 * copy utf8 to the dst buffer, the invalid code points are 46745 * replaced with '?' 46746 * 46747 * The result buffer size is utf8Len+1 46748 * 46749 * \param 46750 * utf8 valid or invalid UTF-8 encoded string 46751 * \param 46752 * utf8Len utf8 length 46753 * \result 46754 * new valid UTF-8 encoded string 46755 * NULL failed 46756 */ 46757 char *bNMakeValidUTF8(char *dst, const char *utf8, size_t utf8Len) { 46758 46759 if (!dst || !utf8 || !utf8Len) { 46760 return(NULL); 46761 } 46762 46763 const char *end = utf8+utf8Len; 46764 char *c = dst; 46765 46766 while (*utf8 && utf8 < end) { 46767 if (isCodeUTF8(utf8)) { 46768 range(i, codeSizeUTF8(utf8)) { 46769 *c++ = *utf8++; 46770 if (utf8 == end) { 46771 goto finish; 46772 } 46773 } 46774 } 46775 else { 46776 *c = '?'; 46777 c++; 46778 utf8++; 46779 } 46780 } 46781 46782 finish: 46783 *c = 0; 46784 46785 return(dst); 46786 } 46787 46788 /** 46789 * buffer destination size make valid UTF-8 encoded string 46790 * 46791 * copy utf8 to the dst buffer, the invalid code points are 46792 * replaced with '?' 46793 * 46794 * The result buffer size is dstSize 46795 * 46796 * \param 46797 * dst destination buffer 46798 * \param 46799 * dstSize size of dst 46800 * \param 46801 * utf8 valid or invalid UTF-8 encoded string 46802 * \result 46803 * new valid UTF-8 encoded string 46804 * NULL failed 46805 */ 46806 char *bLMakeValidUTF8(char *dst, size_t dstSize, const char *utf8) { 46807 46808 if (!dst || !utf8 || !dstSize) { 46809 return(NULL); 46810 } 46811 46812 char *end = dst+dstSize-1; 46813 char *c = dst; 46814 46815 while (*utf8 && c < end) { 46816 if (isCodeUTF8(utf8)) { 46817 range(i, codeSizeUTF8(utf8)) { 46818 *c++ = *utf8++; 46819 if (c == end) { 46820 goto finish; 46821 } 46822 } 46823 } 46824 else { 46825 *c = '?'; 46826 c++; 46827 utf8++; 46828 } 46829 } 46830 46831 finish: 46832 *c = 0; 46833 46834 return(dst); 46835 } 46836 46837 /** 46838 * buffer destination size source length make valid UTF-8 encoded string 46839 * 46840 * copy utf8 to the dst buffer, the invalid code points are 46841 * replaced with '?' 46842 * 46843 * This function always reads less than utf8Len+1 bytes in utf8 buffer 46844 * The result buffer size is dstSize 46845 * 46846 * \param 46847 * dst destination buffer 46848 * \param 46849 * dstSize size of dst 46850 * \param 46851 * utf8 valid or invalid UTF-8 encoded string 46852 * \param 46853 * utf8Len utf8 length 46854 * \result 46855 * new valid UTF-8 encoded string 46856 * NULL failed 46857 */ 46858 char *bLNMakeValidUTF8(char *dst, size_t dstSize, const char *utf8, size_t utf8Len) { 46859 46860 if (!dst || !dstSize || !utf8 || !utf8Len) { 46861 return(NULL); 46862 } 46863 46864 const char *end = utf8+utf8Len; 46865 char *dstEnd = dst+dstSize-1; 46866 char *c = dst; 46867 46868 while (*utf8 && utf8 < end && c < dstEnd) { 46869 if (isCodeUTF8(utf8)) { 46870 range(i, codeSizeUTF8(utf8)) { 46871 *c++ = *utf8++; 46872 if (utf8 == end || c == dstEnd) { 46873 goto finish; 46874 } 46875 } 46876 } 46877 else { 46878 *c = '?'; 46879 c++; 46880 utf8++; 46881 } 46882 } 46883 46884 finish: 46885 *c = 0; 46886 46887 return(dst); 46888 } 46889 46890 // No need for randomUTF8 46891 46892 /** 46893 * strNCpyUTF8 - copy src to dst with srcLen in code points 46894 * 46895 * copy srcLen code points from src (UTF-8 encoded string) to dst and add one NUL character when src 46896 * end is not reached (unlike strncpy). 46897 * 46898 * \param 46899 * dst destination buffer 46900 * \param 46901 * src source string 46902 * \param 46903 * srcLen source buffer size in code points 46904 * \return 46905 * dst string 46906 * NULL error 46907 */ 46908 char *strNCpyUTF8(char *dst, const char *src, size_t srcLen) { 46909 46910 if (!dst || !src) { 46911 return(NULL); 46912 } 46913 46914 if (!srcLen) { 46915 return(dst); 46916 } 46917 46918 const char *c = src; 46919 size_t count = 0; 46920 46921 while (*c && count < srcLen) { 46922 nxCodeUTF8(c); 46923 count++; 46924 } 46925 46926 return(strncpy(dst, src, (size_t)(c-src))); 46927 } 46928 46929 /** 46930 * strLCpyUTF8 - copy src to dst 46931 * 46932 * like strncpy and the NUL char is always added at the end of the string 46933 * and the result string is always a valid UTF-8 encoded string 46934 * 46935 * \param 46936 * dst destination buffer 46937 * \param 46938 * dstSize destination buffer size, result string will be no longer than dstSize-1 46939 * \param 46940 * src source string 46941 * \return 46942 * dst string 46943 * NULL error 46944 */ 46945 char *strLCpyUTF8(char *dst, size_t dstSize, const char *src) { 46946 46947 if (!dst || !src) { 46948 return(NULL); 46949 } 46950 46951 char *r = strncpy(dst, src, dstSize);; 46952 if (dstSize) { 46953 r[dstSize-1] = 0; 46954 } 46955 pErrorNULL(bMakeValidUTF8(r)); 46956 return(r); 46957 } 46958 46959 /** 46960 * strNCatUTF8 - concatenate two UTF-8 encoded strings 46961 * 46962 * like strncat with sanity checks and srcLen is the number of code points 46963 * 46964 * \param 46965 * dst destination buffer 46966 * \param 46967 * src source string 46968 * \param 46969 * srcLen max source len in code points 46970 * \return 46971 * string with input strings concatenated 46972 * NULL error 46973 */ 46974 char *strNCatUTF8(char *dst, const char *src, size_t srcLen) { 46975 46976 if (!dst || !src) { 46977 return(NULL); 46978 } 46979 46980 if (!srcLen) { 46981 return(dst); 46982 } 46983 46984 const char *c = src; 46985 size_t count = 0; 46986 46987 while (*c && count < srcLen) { 46988 nxCodeUTF8(c); 46989 count++; 46990 } 46991 46992 return(strncat(dst, src, (size_t)(c-src))); 46993 } 46994 46995 /** 46996 * strLCatUTF8 - concatenate two UTF-8 encoded strings 46997 * 46998 * like strlcat with sanity checks 46999 * the result string is always a valid UTF-8 encoded string 47000 * 47001 * \param 47002 * dst destination buffer 47003 * \param 47004 * src source string 47005 * \param 47006 * dstSize destination buffer size, result string will be no longer than dstSize-1 47007 * \return 47008 * string with input strings concatenated 47009 * NULL error 47010 */ 47011 char *strLCatUTF8(char *dst, size_t dstSize, const char *src) { 47012 47013 if (!dst || !src) { 47014 return(NULL); 47015 } 47016 47017 size_t dL = strnlen(dst, dstSize); 47018 size_t dstLen = dstSize-1; 47019 47020 if (dL >= dstLen) { 47021 // buffer is full 47022 return(dst); 47023 } 47024 47025 size_t sL = strlen(src); 47026 47027 if (dL+sL > dstLen) { 47028 // truncate 47029 char *r = strncat(dst, src, dstLen - dL); 47030 pErrorNULL(bMakeValidUTF8(r)); 47031 return(r); 47032 } 47033 else { 47034 return(strcat(dst, src)); 47035 } 47036 } 47037 47038 /** 47039 * strLNCatUTF8 - concatenate two UTF-8 encoded strings 47040 * 47041 * like strlcat with sanity checks and srcLen is the number of code points 47042 * the result string is always a valid UTF-8 encoded string 47043 * 47044 * \param 47045 * dst destination buffer 47046 * \param 47047 * src source string 47048 * \param 47049 * dstSize destination buffer size, result string will be no longer than dstSize-1 47050 * \param 47051 * srcLen max source len in code points 47052 * \return 47053 * string with input strings concatenated 47054 * NULL error 47055 */ 47056 char *strLNCatUTF8(char *dst, size_t dstSize, const char *src, size_t srcLen) { 47057 47058 if (!dst || !src) { 47059 return(NULL); 47060 } 47061 47062 if (!srcLen) { 47063 return(dst); 47064 } 47065 47066 size_t dL = strnlen(dst, dstSize); 47067 size_t dstLen = dstSize-1; 47068 47069 if (dL >= dstLen) { 47070 // buffer is full 47071 return(dst); 47072 } 47073 47074 const char *c = src; 47075 size_t count = 0; 47076 47077 while (*c && count < srcLen) { 47078 nxCodeUTF8(c); 47079 count++; 47080 } 47081 47082 size_t sL = (size_t)(c-src); 47083 47084 if (dL+sL > dstLen) { 47085 // truncate 47086 char *r = strncat(dst, src, dstLen - dL); 47087 pErrorNULL(bMakeValidUTF8(r)); 47088 return(r); 47089 } 47090 else { 47091 return(strncat(dst, src, sL)); 47092 } 47093 } 47094 47095 /** 47096 * ignore case Replace UTF8 encoded String 47097 * the original remains unchanged 47098 * duplicate s 47099 * the olds string is replaced with the news string max times in the result 47100 * 0 for max means replace all olds strings 47101 * 47102 * \param 47103 * s: UTF8 encoded string 47104 * olds: old UTF8 encoded string to be replaced in s 47105 * news: new UTF8 encoded string replacing olds in s 47106 * max: number of times to replace olds, 0 to replace all found olds 47107 * \return 47108 * new string (you must free the pointer) 47109 * "" when s is empty 47110 * NULL when s is NULL 47111 * NULL when olds is empty 47112 */ 47113 char* icReplaceUTF8(const char UNUSED *s, const char UNUSED *olds, const char UNUSED *news, size_t UNUSED max ) { 47114 47115 // TODO changing UTF8 to lower case with casefold can change the 47116 // number of bytes in the string 47117 return(NULL); 47118 } 47119 47120 char *icReplaceCharSUTF8(const char *s UNUSED, char olds UNUSED, const char *news UNUSED, size_t max UNUSED) { 47121 47122 // TODO changing UTF8 to lower case with casefold can change the 47123 // number of bytes in the string 47124 return(NULL); 47125 } 47126 47127 char *icReplaceSCharUTF8(const char *s UNUSED, const char *olds UNUSED, char news UNUSED, size_t max UNUSED) { 47128 47129 // TODO changing UTF8 to lower case with casefold can change the 47130 // number of bytes in the string 47131 return(NULL); 47132 } 47133 47134 47135 /** 47136 * in place ignore case replace UTF8 encoded String 47137 * the olds UTF8 encoded string is replaced with the news UTF8 encoded string max times in the result 47138 * 0 for max means replace all olds strings 47139 * 47140 * \param 47141 * s: UTF8 encoded string 47142 * olds: old UTF8 encoded string to be replaced in s 47143 * news: new UTF8 encoded string replacing olds in s 47144 * max: number of times to replace olds, 0 to replace all found olds 47145 * \return 47146 * modified s string 47147 * NULL s not modified when s is NULL or empty and when olds is empty 47148 */ 47149 char* iicReplaceUTF8(char UNUSED **s, const char UNUSED *olds, const char UNUSED *news, size_t UNUSED max ) { 47150 47151 // TODO changing UTF8 to lower case with casefold can change the 47152 // number of bytes in the string 47153 return(NULL); 47154 } 47155 47156 char *iicReplaceCharSUTF8(char **s UNUSED, char olds UNUSED, const char *news UNUSED, size_t max UNUSED) { 47157 47158 // TODO changing UTF8 to lower case with casefold can change the 47159 // number of bytes in the string 47160 return(NULL); 47161 } 47162 47163 char *iicReplaceSCharUTF8(char **s UNUSED, const char *olds UNUSED, char news UNUSED, size_t max UNUSED) { 47164 47165 // TODO changing UTF8 to lower case with casefold can change the 47166 // number of bytes in the string 47167 return(NULL); 47168 } 47169 47170 47171 /** 47172 * buffer ignore case replace UTF8 encoded String 47173 * the olds string is replaced with the news string max times in the result 47174 * 0 for max means replace all olds strings 47175 * 47176 * \param 47177 * s: string 47178 * \param 47179 * olds: old string to be replaced in s 47180 * \param 47181 * news: new string replacing olds in s 47182 * \param 47183 * max: number of times to replace olds, 0 to replace all found olds 47184 * \return 47185 * modified s string 47186 * NULL s not modified when s is NULL or empty and when olds is empty 47187 */ 47188 char* bicReplaceUTF8(char UNUSED *s, const char UNUSED *olds, const char UNUSED *news, size_t UNUSED max ) { 47189 47190 // TODO changing UTF8 to lower case with casefold can change the 47191 // number of bytes in the string 47192 return(NULL); 47193 } 47194 47195 47196 /** 47197 * buffer size ignore case replace UTF8 encoded String 47198 * the olds string is replaced with the news string max times in the result 47199 * 0 for max means replace all olds strings 47200 * 47201 * \param 47202 * s: string 47203 * \param 47204 * olds: old string to be replaced in s 47205 * \param 47206 * news: new string replacing olds in s 47207 * \param 47208 * max: number of times to replace olds, 0 to replace all found olds 47209 * \return 47210 * modified s string 47211 * NULL s not modified when s is NULL or empty and when olds is empty 47212 */ 47213 char* bLicReplaceUTF8(char UNUSED *s, size_t UNUSED sSize, const char UNUSED *olds, const char UNUSED *news, size_t max UNUSED) { 47214 47215 // TODO changing UTF8 to lower case with casefold can change the 47216 // number of bytes in the string 47217 return(NULL); 47218 } 47219 47220 47221 /** 47222 * ignore case replace Many UTF8 encoded Strings 47223 * the original remains unchanged 47224 * duplicate s 47225 * the olds string is replaced with the news string max times in the result 47226 * 47227 * Example: 47228 * r = replaceManyUTF8("asd", "s", "BNM", "a", "AAA") 47229 * ^olds ^news ^olds ^news 47230 * 47231 * \param 47232 * s: string 47233 * \param 47234 * olds: old string to be replaced in s 47235 * \param 47236 * news: new string replacing olds in s 47237 * ... 47238 * \return 47239 * new string 47240 * "" when s is empty 47241 * NULL when s is NULL 47242 * NULL when only 2 parameters are given 47243 * NULL when any olds is empty 47244 */ 47245 char *icReplaceManyUTF8F(const char *paramType UNUSED, ...) { 47246 47247 // TODO changing UTF8 to lower case with casefold can change the 47248 // number of bytes in the string 47249 return(NULL); 47250 } 47251 47252 /** 47253 * in place ignore case replace Many UTF8 encoded Strings 47254 * the olds string is replaced with the news string max times in the result 47255 * 47256 * Example: 47257 * iicReplaceManyUTF8(s, "s", "BNM", "a", "AAA") 47258 * ^olds ^news ^olds ^news 47259 * 47260 * \param 47261 * string 47262 * \param 47263 * olds: old string to be replaced in s 47264 * \param 47265 * news: new string replacing olds in s 47266 * ... 47267 * \return 47268 * modified string 47269 * NULL not modified when s is empty, when s is NULL, when only 2 parameters are given, 47270 * when any olds is empty 47271 */ 47272 char *iicReplaceManyUTF8F(char **s UNUSED, char *paramType UNUSED, ...) { 47273 47274 // TODO changing UTF8 to lower case with casefold can change the 47275 // number of bytes in the string 47276 return(NULL); 47277 } 47278 47279 /** 47280 * buffer ignore case replace Many UTF8 encoded Strings 47281 * the olds string is replaced with the news string max times in the result 47282 * 47283 * Example: 47284 * bReplaceManyUTF8(s, "s", "BNM", "a", "AAA") 47285 * ^olds ^news ^olds ^news 47286 * 47287 * \param 47288 * string 47289 * \param 47290 * olds: old string to be replaced in s 47291 * \param 47292 * news: new string replacing olds in s 47293 * ... 47294 * \return 47295 * modified string 47296 * NULL not modified when s is empty, when s is NULL, when only 2 parameters are given, 47297 * when any olds is empty 47298 */ 47299 char *bicReplaceManyUTF8F(char *s UNUSED, char *paramType UNUSED, ...) { 47300 47301 // TODO changing UTF8 to lower case with casefold can change the 47302 // number of bytes in the string 47303 return(NULL); 47304 } 47305 47306 /** 47307 * buffer size ignore case replace Many UTF8 encoded Strings 47308 * the olds string is replaced with the news string max times in the result 47309 * 47310 * Example: 47311 * bReplaceManyUTF8(s, "s", "BNM", "a", "AAA") 47312 * ^olds ^news ^olds ^news 47313 * 47314 * \param 47315 * string 47316 * \param 47317 * olds: old string to be replaced in s 47318 * \param 47319 * news: new string replacing olds in s 47320 * ... 47321 * \return 47322 * modified string 47323 * NULL not modified when s is empty, when s is NULL, when only 2 parameters are given, 47324 * when any olds is empty 47325 */ 47326 char *bLicReplaceManyUTF8F(char *s UNUSED, size_t sSize UNUSED, char *paramType UNUSED, ...) { 47327 47328 // TODO changing UTF8 to lower case with casefold can change the 47329 // number of bytes in the string 47330 return(NULL); 47331 } 47332 47333 47334 /** 47335 * UTF8 encoded string Index Equal 47336 * compare string1 at character index to string2 47337 * when string2 is empty, the result is false 47338 * 47339 * \param 47340 * 2 strings 47341 * \return 47342 * true string1 at index is equal to string2 47343 * false they differ 47344 */ 47345 bool eqIUTF8(const char *string1, const char *string2, int64_t index) { 47346 47347 if (!string1) { 47348 return(false); 47349 } 47350 47351 const char *i = idx2PtrUTF8(string1, index); 47352 return(eqIS(string1, string2, (int64_t)(i-string1))); 47353 } 47354 47355 bool eqICharUTF8(const char *string1, char c, int64_t index) { 47356 47357 if (!string1) { 47358 return(false); 47359 } 47360 47361 const char *i = idx2PtrUTF8(string1, index); 47362 return(eqICharS(string1, c, (int64_t)(i-string1))); 47363 } 47364 47365 47366 /** 47367 * ignore case UTF8 encoded string Equal 47368 * compare string1 to string2 47369 * 47370 * \param 47371 * 2 strings 47372 * \return 47373 * true the strings have identical content 47374 * false they differ 47375 */ 47376 bool icEqUTF8(const char *string1, const char *string2) { 47377 47378 // sanity checks 47379 if (!string1 || !string2) { 47380 return(false); 47381 } 47382 47383 char *s1 = casefoldUTF8(string1); 47384 char *s2 = casefoldUTF8(string2); 47385 bool r = (strcmp(s1,s2) == 0); 47386 freeManyS(s1, s2); 47387 return(r); 47388 } 47389 47390 bool icEqCharUTF8(char c, const char *string2) { 47391 47392 // sanity checks 47393 if (!string2) { 47394 return(false); 47395 } 47396 47397 charToS(s, (char)tolower(c)); 47398 char *s2 = casefoldUTF8(string2); 47399 bool r = (strcmp(s,s2) == 0); 47400 free(s2); 47401 return(r); 47402 } 47403 47404 bool icEqUTF8Char(const char *string1, char c) { 47405 47406 // sanity checks 47407 if (!string1) { 47408 return(false); 47409 } 47410 47411 charToS(s, (char)tolower(c)); 47412 char *s1 = casefoldUTF8(string1); 47413 bool r = (strcmp(s1,s) == 0); 47414 free(s1); 47415 return(r); 47416 } 47417 47418 /** 47419 * ignore case UTF8 encoded string Index Equal 47420 * compare string1 at character index to string2 47421 * when string2 is empty, the result is false 47422 * 47423 * \param 47424 * 2 strings 47425 * \return 47426 * true string1 at index is equal to string2 47427 * false they differ 47428 */ 47429 bool icEqIUTF8(const char *string1 UNUSED, const char *string2 UNUSED, int64_t index UNUSED) { 47430 47431 // TODO casefold changes the number of character, index might change 47432 return(false); 47433 } 47434 47435 bool icEqICharUTF8(const char *string1 UNUSED, char c UNUSED, int64_t index UNUSED) { 47436 47437 // TODO casefold changes the number of character, index might change 47438 return(false); 47439 } 47440 47441 47442 /** 47443 * ignore case starts With UTF8 encoded String 47444 * compare start of string1 with string2 47445 * 47446 * \param 47447 * 2 strings 47448 * \return 47449 * true when string1 starts with string2 47450 * false for other cases 47451 */ 47452 bool icStartsWithUTF8(const char *string1, const char *string2) { 47453 47454 // sanity checks 47455 if (!string1 || !string2) { 47456 return(false); 47457 } 47458 47459 char *s1 = casefoldUTF8(string1); 47460 char *s2 = casefoldUTF8(string2); 47461 bool r = (strncmp(s1, s2, strlen(s2)) == 0); 47462 freeManyS(s1, s2); 47463 return(r); 47464 } 47465 47466 47467 /** 47468 * ignore case ends With UTF8 encoded String 47469 * compare end of string1 with string2 47470 * 47471 * \param 47472 * 2 strings 47473 * \return 47474 * true when string1 ends with string2 47475 * false for other cases 47476 */ 47477 bool icEndsWithUTF8(const char *string1, const char *string2) { 47478 bool r; 47479 47480 // sanity checks 47481 if (!string1 || !string2) { 47482 return(false); 47483 } 47484 47485 char *s1 = casefoldUTF8(string1); 47486 char *s2 = casefoldUTF8(string2); 47487 if (strlen(s1) < strlen(s2)) { 47488 r = false; 47489 goto end; 47490 } 47491 r = (strcmp(s1 + strlen(s1) - strlen(s2), s2) == 0); 47492 end: 47493 freeManyS(s1, s2); 47494 return(r); 47495 } 47496 47497 47498 /** 47499 * ignore case count UTF8 encoded String 47500 * count number of (non-overlapping) occurrences of a substring 47501 * 47502 * Example: 47503 * assert(countUTF8("aaa aaa", "a") == 6); 47504 * assert(countUTF8("aaa aaa", "ab") == 0); 47505 * assert(countUTF8("aaa aaa", "aa") == 2); 47506 * 47507 * \param 47508 * 2 strings 47509 * \return 47510 * string count 47511 * -1 when there is an error 47512 */ 47513 ssize_t icCountUTF8(const char *s, const char *needle) { 47514 char *lower = NULL; 47515 47516 // sanity checks 47517 if (!s || !needle) { 47518 return(-1); 47519 } 47520 47521 lower = casefoldUTF8(s); 47522 needle = casefoldUTF8(needle); 47523 ssize_t r = 0; 47524 size_t len = strlen(needle); 47525 47526 s = lower; 47527 while (s != NULL) { 47528 s = strstr(s, needle); 47529 if (s != NULL) { 47530 r++; 47531 s += len; 47532 } 47533 else { 47534 break; 47535 } 47536 } 47537 47538 freeManyS(lower, needle); 47539 return(r); 47540 } 47541 47542 /** some case convertions depend on the current LOCALE */ 47543 internal localeType getLocaleType(void) { 47544 47545 const char *locale = setlocale (LC_CTYPE, NULL);; 47546 47547 if (!locale) { 47548 return(LOCALE_NORMAL); 47549 } 47550 47551 switch (locale[0]) { 47552 case 'a': 47553 if (locale[1] == 'z') { 47554 return(LOCALE_TURKIC); 47555 } 47556 break; 47557 case 'l': 47558 if (locale[1] == 't') { 47559 return(LOCALE_LITHUANIAN); 47560 } 47561 break; 47562 case 't': 47563 if (locale[1] == 'r') { 47564 return(LOCALE_TURKIC); 47565 } 47566 break; 47567 default:; 47568 // return default value 47569 } 47570 47571 return(LOCALE_NORMAL); 47572 } 47573 47574 /** 47575 * UTF-8 code point to rune 47576 * 47577 * \param 47578 * code UTF-8 code point 47579 * \return 47580 * Rune 47581 * 0 failed 47582 */ 47583 rune code2RuneUTF8(const char *code) { 47584 uint8_t ln; 47585 47586 return(code2RuneLUTF8(code, &ln)); 47587 } 47588 47589 /** 47590 * UTF-8 code point to rune and length 47591 * 47592 * the code point length is returned in *n 47593 * 47594 * \param 47595 * code UTF-8 code point 47596 * \param 47597 * n pointer to returned code point length 47598 * \return 47599 * Rune 47600 * 0 failed 47601 */ 47602 rune code2RuneLUTF8(const char *code, uint8_t *n) { 47603 47604 if (!code || !*code || !n) { 47605 return(0); 47606 } 47607 47608 rune r; 47609 47610 *n = UTFSEQ(code[0]);; 47611 switch (*n) { 47612 case 1: 47613 r = code[0]; 47614 break; /* 0xxxxxxx */ 47615 case 2: 47616 r = code[0] & 0x1F; 47617 break; /* 110xxxxx */ 47618 case 3: 47619 r = code[0] & 0x0F; 47620 break; /* 1110xxxx */ 47621 case 4: 47622 r = code[0] & 0x07; 47623 break; /* 11110xxx */ 47624 case 5: 47625 r = code[0] & 0x03; 47626 break; /* 111110xx */ 47627 case 6: 47628 r = code[0] & 0x01; 47629 break; /* 1111110x */ 47630 default: /* invalid sequence */ 47631 return(0); 47632 } 47633 47634 // add values from continuation bytes 47635 rangeFrom(i, 1, *n) { 47636 if ((code[i] & 0xC0) == 0x80) { 47637 // add bits from continuation byte to rune value 47638 // cannot overflow: 6 byte sequences contain 31 bits 47639 // 10xxxxxx 47640 r = (r << 6) | (code[i] & 0x3F); 47641 } 47642 else { 47643 // expected continuation 47644 return(0); 47645 } 47646 } 47647 47648 if (runeLenUTF8(r) < *n) { 47649 return(0); 47650 } 47651 return(r); 47652 } 47653 47654 static int firstBytesUTF8[6] = {0, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC}; 47655 47656 /** 47657 * rune to UTF-8 code point 47658 * 47659 * \param 47660 * dst destination buffer at least 6 bytes or if NULL, the code point length is computed 47661 * \param 47662 * c UNICODE rune 47663 * \return 47664 * code point length and code point in dst 47665 * when dst is NULL, return code point length only 47666 * 0 bad rune, dst becomes an empty string 47667 */ 47668 size_t bRune2CodeUTF8(char *dst, rune c) { 47669 size_t len = 0;; 47670 int first; 47671 47672 len = runeLenUTF8(c); 47673 if (!len) { 47674 // bad rune 47675 if (dst) { 47676 *dst = 0; 47677 } 47678 return(0); 47679 } 47680 47681 first = firstBytesUTF8[len-1]; 47682 47683 if (dst) { 47684 rangeDownTo(i, (ssize_t)len, 1) { 47685 dst[i] = (char)((c & 0x3f) | 0x80); 47686 c >>= 6; 47687 } 47688 dst[0] = (char)(c | first); 47689 } 47690 47691 return(len); 47692 } 47693 47694 /** 47695 * rune length as UTF-8 code point 47696 * 47697 * \param 47698 * r UNICODE rune 47699 * \return 47700 * code point length 47701 * 0 bad rune 47702 */ 47703 uint8_t runeLenUTF8(rune r) { 47704 47705 if (BADRUNE(r)) { 47706 // error 47707 return(0); 47708 } 47709 else if (r < 0x80) { 47710 return(1); 47711 } 47712 else if (r < 0x800) { 47713 return(2); 47714 } 47715 else if (r < 0x10000) { 47716 return(3); 47717 } 47718 else if (r < 0x200000) { 47719 return(4); 47720 } 47721 else if (r < 0x4000000) { 47722 return(5); 47723 } 47724 else { 47725 return(6); 47726 } 47727 } 47728 47729 // constants for hangul syllable [de]composition 47730 #define SBase 0xAC00 47731 #define LBase 0x1100 47732 #define VBase 0x1161 47733 #define TBase 0x11A7 47734 #define LCount 19 47735 #define VCount 21 47736 #define TCount 28 47737 #define NCount (VCount * TCount) 47738 #define SCount (LCount * NCount) 47739 47740 /* http://www.unicode.org/unicode/reports/tr15/#Hangul 47741 * r should be null or have sufficient space. Calling with r == NULL will 47742 * only calculate the result len; however, a buffer with space for three 47743 * characters will always be big enough. */ 47744 internal size_t decompose_hangul(rune s, rune *r) { 47745 int32_t SIndex = s - SBase;; 47746 int32_t TIndex = SIndex % TCount;; 47747 47748 if (r) { 47749 r[0] = LBase + SIndex / NCount; 47750 r[1] = VBase + (SIndex % NCount) / TCount; 47751 } 47752 47753 if (TIndex) { 47754 if (r) { 47755 r[2] = TBase + TIndex; 47756 } 47757 return(3); 47758 } 47759 else { 47760 return(2); 47761 } 47762 } 47763 47764 /* returns a pointer to a null-terminated UTF-8 string */ 47765 internal const char *find_decomposition (rune ch) { 47766 int start = 0;; 47767 int end = ARRAY_SIZE(decomp_table);; 47768 47769 if (ch >= decomp_table[start].ch && ch <= decomp_table[end - 1].ch) { 47770 forever { 47771 int half = (start + end) / 2; 47772 if (ch == decomp_table[half].ch) { 47773 int offset = decomp_table[half].canon_offset;; 47774 if (offset == UNICODE_NOT_PRESENT_OFFSET) { 47775 return(NULL); 47776 } 47777 47778 return(&(decomp_expansion_string[offset])); 47779 } 47780 else if (half == start) { 47781 break; 47782 } 47783 else if (ch > decomp_table[half].ch) { 47784 start = half; 47785 } 47786 else { 47787 end = half; 47788 } 47789 } 47790 } 47791 47792 return(NULL); 47793 } 47794 47795 47796 internal size_t runeFullyDecompose(rune ch, rune *result, size_t resultLen) { 47797 const char *decomp = NULL; 47798 const char *p = NULL; 47799 47800 // Hangul syllable 47801 if (ch >= SBase && ch < SBase + SCount) { 47802 rune buffer[3]; 47803 size_t len = decompose_hangul(ch, result ? buffer : NULL); 47804 if (result) { 47805 for (size_t i = 0; i < len && i < resultLen; i++) { 47806 result[i] = buffer[i]; 47807 } 47808 } 47809 return(len); 47810 } 47811 else if (EVA(decomp, find_decomposition (ch)) != NULL) { 47812 // Found it. 47813 size_t len = lenUTF8(decomp); 47814 size_t i; 47815 for (p = decomp, i = 0; i < len && i < resultLen; nxCodeUTF8(p), i++) { 47816 result[i] = code2RuneUTF8(p); 47817 } 47818 47819 return(len); 47820 } 47821 47822 // Does not decompose 47823 if (result && resultLen >= 1) { 47824 *result = ch; 47825 } 47826 return(1); 47827 } 47828 47829 internal size_t output_marks(const char **p_inout, char *dst, bool remove_dot) { 47830 const char *p = NULL; 47831 size_t len = 0;; 47832 47833 p = *p_inout; 47834 47835 while (*p) { 47836 rune c = code2RuneUTF8(p);; 47837 47838 if (ISMARK(RUNETYPE(c))) { 47839 if (!remove_dot || c != 0x307) { 47840 // COMBINING DOT ABOVE 47841 len += bRune2CodeUTF8(dst ? dst + len : NULL, c); 47842 } 47843 nxCodeUTF8(p); 47844 } 47845 else { 47846 break; 47847 } 47848 } 47849 47850 *p_inout = p; 47851 return(len); 47852 } 47853 47854 internal size_t output_special_case(char *dst, int offset, int type, int which) { 47855 const char *p = NULL; 47856 size_t len; 47857 47858 p = special_case_table + offset; 47859 47860 if (type != UNICODE_TITLECASE_LETTER) { 47861 nxCodeUTF8(p); 47862 } 47863 47864 if (which == 1) { 47865 p += strlen(p) + 1; 47866 } 47867 47868 len = strlen(p); 47869 if (dst) { 47870 memcpy(dst, p, len); 47871 } 47872 47873 return(len); 47874 } 47875 47876 /** 47877 * rune toupper UTF8 47878 * 47879 * Converts a character to uppercase. 47880 * 47881 * \param 47882 * c rune 47883 * \return 47884 * c converted to uppercase 47885 * c unchanged if c has no upper case or is not lowercase or titlecase 47886 */ 47887 rune toupperUTF8(rune c) { 47888 int t = RUNETYPE(c);; 47889 47890 if (t == UNICODE_LOWERCASE_LETTER) { 47891 rune val = ATTTABLE (c >> 8, c & 0xff); 47892 if (val >= 0x1000000) { 47893 const char *p = special_case_table + val - 0x1000000;; 47894 val = code2RuneUTF8(p); 47895 } 47896 // Some lowercase letters, e.g., U+000AA, FEMININE ORDINAL INDICATOR, 47897 // do not have an uppercase equivalent, in which case val will be 47898 // zero. 47899 return(val ? val : c); 47900 } 47901 else if (t == UNICODE_TITLECASE_LETTER) { 47902 range(i, ARRAY_SIZE(title_table)) { 47903 if (title_table[i][0] == c) { 47904 return(title_table[i][1] ? title_table[i][1] : c); 47905 } 47906 } 47907 } 47908 return(c); 47909 } 47910 47911 internal size_t _upperUTF8(char *dst, const char *utf8, localeType lcl) { 47912 size_t len = 0;; 47913 const char *last = NULL; 47914 bool last_was_i = FALSE;; 47915 47916 while (*utf8) { 47917 rune c = code2RuneUTF8(utf8); 47918 int t = RUNETYPE(c); 47919 47920 last = utf8; 47921 47922 nxCodeUTF8(utf8); 47923 47924 if (lcl == LOCALE_LITHUANIAN) { 47925 if (c == 'i') { 47926 last_was_i = TRUE; 47927 } 47928 else { 47929 if (last_was_i) { 47930 rune decomp[RUNE_MAX_DECOMPOSITION_LENGTH]; 47931 size_t decompLen = runeFullyDecompose(c, decomp, ARRAY_SIZE(decomp)); 47932 range(i, decompLen) { 47933 if (decomp[i] != 0x307) { 47934 // COMBINING DOT ABOVE 47935 len += bRune2CodeUTF8(dst ? dst + len : NULL, toupperUTF8(decomp[i]));; 47936 } 47937 } 47938 47939 len += output_marks(&utf8, dst ? dst + len : NULL, TRUE);; 47940 continue; 47941 } 47942 47943 if (!ISMARK(t)) { 47944 last_was_i = FALSE; 47945 } 47946 } 47947 } 47948 47949 if (lcl == LOCALE_TURKIC && c == 'i') { 47950 // i => LATIN CAPITAL LETTER I WITH DOT ABOVE 47951 len += bRune2CodeUTF8(dst ? dst + len : NULL, 0x130); 47952 } 47953 else if (c == 0x0345) { 47954 // COMBINING GREEK YPOGEGRAMMENI 47955 len += output_marks(&utf8, dst ? dst + len : NULL, FALSE); 47956 47957 // And output as GREEK CAPITAL LETTER IOTA 47958 len += bRune2CodeUTF8(dst ? dst + len : NULL, 0x399); 47959 } 47960 else if (IS(t, OR(UNICODE_LOWERCASE_LETTER, OR(UNICODE_TITLECASE_LETTER, 0)))) { 47961 rune val = ATTTABLE (c >> 8, c & 0xff); 47962 47963 if (val >= 0x1000000) { 47964 len += output_special_case (dst ? dst + len : NULL, val - 0x1000000, t, t == UNICODE_LOWERCASE_LETTER ? 0 : 1); 47965 } 47966 else { 47967 if (t == UNICODE_TITLECASE_LETTER) { 47968 range(i, ARRAY_SIZE(title_table)) { 47969 if (title_table[i][0] == c) { 47970 val = title_table[i][1]; 47971 break; 47972 } 47973 } 47974 } 47975 47976 // Some lowercase letters, e.g., U+000AA, FEMININE ORDINAL INDICATOR, 47977 // do not have an uppercase equivalent, in which case val will be 47978 // zero. 47979 len += bRune2CodeUTF8(dst ? dst + len : NULL, val ? val : c); 47980 } 47981 } 47982 else { 47983 uint8_t codeLen = codeSizeUTF8(last); 47984 47985 if ((dst)) { 47986 memcpy(dst + len, last, codeLen); 47987 } 47988 47989 len += codeLen;; 47990 } 47991 } 47992 if (dst) { 47993 *(dst+len) = 0; 47994 } 47995 return(len); 47996 } 47997 47998 47999 /** 48000 * upper case UTF-8 encoded string 48001 * duplicate string 48002 * 48003 * \param 48004 * string UTF-8 encoded string 48005 * \return 48006 * new upper case string (you must free the pointer) 48007 */ 48008 char *upperUTF8(const char *utf8) { 48009 char *r = NULL; 48010 48011 // sanity checks 48012 if (!utf8) { 48013 return(NULL); 48014 } 48015 48016 localeType lcl = getLocaleType(); 48017 48018 size_t len = _upperUTF8(NULL, utf8, lcl); 48019 r = malloc(len+1); 48020 if (!r) { 48021 return(NULL); 48022 } 48023 _upperUTF8(r, utf8, lcl); 48024 return(r); 48025 } 48026 48027 /** 48028 * upper case UTF-8 encoded string 48029 * 48030 * \param 48031 * string (this parameter is reallocated) 48032 * \return 48033 * upper case string (you must free the pointer) 48034 * NULL error 48035 */ 48036 char *iUpperUTF8(char **utf8) { 48037 48038 if (!utf8 || !*utf8) { 48039 return(NULL); 48040 } 48041 48042 char *s = upperUTF8(*utf8); 48043 48044 free(*utf8); 48045 *utf8 = s; 48046 48047 return(*utf8); 48048 } 48049 48050 /** 48051 * buffer upper case String 48052 * 48053 * \param 48054 * string 48055 * \return 48056 * upper case string 48057 * NULL error 48058 */ 48059 char *bUpperUTF8(char *utf8 UNUSED) { 48060 48061 // TODO 48062 return(NULL); 48063 } 48064 48065 /** 48066 * runeCombiningClass: 48067 * @uc: a Unicode character 48068 * 48069 * Determines the canonical combining class of a Unicode character. 48070 * 48071 * Returns: the combining class of the character 48072 **/ 48073 local int runeCombiningClass (rune uc) { 48074 48075 return(COMBINING_CLASS(uc)); 48076 } 48077 48078 /* traverses the string checking for characters with combining class == 230 48079 * until a base character is found */ 48080 internal bool has_more_above (const char *str) { 48081 const char *p = NULL; 48082 int combining_class; 48083 48084 p = str; 48085 while (*p) { 48086 combining_class = runeCombiningClass(code2RuneUTF8(p)); 48087 if (combining_class == 230) { 48088 return(TRUE); 48089 } 48090 else if (combining_class == 0) { 48091 break; 48092 } 48093 48094 nxCodeUTF8(p); 48095 } 48096 48097 return(FALSE); 48098 } 48099 48100 /** 48101 * rune tolower UTF8 48102 * 48103 * Converts a character to lower case. 48104 * 48105 * \param 48106 * c UNICODE rune 48107 * \return 48108 * lowercase c 48109 * c unchanged if c has lowercase or is not an uppercase or titlecase character 48110 **/ 48111 rune tolowerUTF8(rune c) { 48112 48113 int t = RUNETYPE(c); 48114 if (t == UNICODE_UPPERCASE_LETTER) { 48115 rune val = ATTTABLE (c >> 8, c & 0xff); 48116 if (val >= 0x1000000) { 48117 const char *p = special_case_table + val - 0x1000000; 48118 return(code2RuneUTF8(p)); 48119 } 48120 else { 48121 // Not all uppercase letters are guaranteed to have a lowercase 48122 // equivalent. If this is the case, val will be zero. 48123 return(val ? val : c); 48124 } 48125 } 48126 else if (t == UNICODE_TITLECASE_LETTER) { 48127 range(i, ARRAY_SIZE(title_table)) { 48128 if (title_table[i][0] == c) { 48129 return(title_table[i][2]); 48130 } 48131 } 48132 } 48133 return(c); 48134 } 48135 48136 internal size_t _lowerUTF8(char *dst, const char *utf8, localeType lcl) { 48137 size_t len = 0;; 48138 const char *last = NULL; 48139 48140 while (*utf8) { 48141 rune c = code2RuneUTF8(utf8); 48142 int t = RUNETYPE(c); 48143 48144 last = utf8; 48145 48146 nxCodeUTF8(utf8); 48147 48148 rune val; 48149 48150 if ((lcl == LOCALE_TURKIC && c == 'I')) { 48151 if (code2RuneUTF8(utf8) == 0x0307) { 48152 // I + COMBINING DOT ABOVE => i (U+0069) 48153 len += bRune2CodeUTF8(dst ? dst + len : NULL, 0x0069); 48154 nxCodeUTF8(utf8); 48155 } 48156 else { 48157 // I => LATIN SMALL LETTER DOTLESS I 48158 len += bRune2CodeUTF8(dst ? dst + len : NULL, 0x131); 48159 } 48160 } 48161 // Introduce an explicit dot above when lowercasing capital I's and J's 48162 // whenever there are more accents above. [SpecialCasing.txt] 48163 else if (lcl == LOCALE_LITHUANIAN && (c == 0x00cc || c == 0x00cd || c == 0x0128)) { 48164 len += bRune2CodeUTF8(dst ? dst + len : NULL, 0x0069); 48165 len += bRune2CodeUTF8(dst ? dst + len : NULL, 0x0307); 48166 48167 switch (c) { 48168 case 0x00cc: 48169 len += bRune2CodeUTF8(dst ? dst + len : NULL, 0x0300); 48170 break; 48171 case 0x00cd: 48172 len += bRune2CodeUTF8(dst ? dst + len : NULL, 0x0301); 48173 break; 48174 case 0x0128: 48175 len += bRune2CodeUTF8(dst ? dst + len : NULL, 0x0303); 48176 break; 48177 default:; 48178 // do nothing 48179 } 48180 } 48181 else if (lcl == LOCALE_LITHUANIAN && (c == 'I' || c == 'J' || c == 0x012e) && has_more_above (utf8)) { 48182 len += bRune2CodeUTF8(dst ? dst+len : NULL, tolowerUTF8(c)); 48183 len += bRune2CodeUTF8(dst ? dst+len : NULL, 0x0307); 48184 } 48185 else if (c == 0x03A3) { 48186 // GREEK CAPITAL LETTER SIGMA 48187 if (*utf8) { 48188 rune next_c = code2RuneUTF8(utf8);; 48189 int next_type = RUNETYPE(next_c);; 48190 48191 // SIGMA maps differently depending on whether it is 48192 // final or not. The following simplified test would 48193 // fail in the case of combining marks following the 48194 // sigma, but I don't think that occurs in real text. 48195 // The test here matches that in ICU. 48196 // Lu,Ll,Lt,Lm,Lo 48197 if (ISALPHA(next_type)) { 48198 // GREEK SMALL SIGMA 48199 val = 0x3c3; 48200 } 48201 else { 48202 // GREEK SMALL FINAL SIGMA 48203 val = 0x3c2; 48204 } 48205 } 48206 else { 48207 // GREEK SMALL FINAL SIGMA 48208 val = 0x3c2; 48209 } 48210 48211 len += bRune2CodeUTF8(dst ? dst + len : NULL, val); 48212 } 48213 else if (IS (t, OR (UNICODE_UPPERCASE_LETTER, OR (UNICODE_TITLECASE_LETTER, 0)))) { 48214 val = ATTTABLE(c >> 8, c & 0xff); 48215 48216 if (val >= 0x1000000) { 48217 len += output_special_case(dst ? dst + len : NULL, val - 0x1000000, t, 0); 48218 } 48219 else { 48220 if (t == UNICODE_TITLECASE_LETTER) { 48221 range(i, ARRAY_SIZE(title_table)) { 48222 if (title_table[i][0] == c) { 48223 val = title_table[i][2]; 48224 break; 48225 } 48226 } 48227 } 48228 48229 // Not all uppercase letters are guaranteed to have a lowercase 48230 // equivalent. If this is the case, val will be zero. 48231 len += bRune2CodeUTF8(dst ? dst+len : NULL, val ? val : c);; 48232 } 48233 } 48234 48235 else { 48236 uint8_t codeLen = codeSizeUTF8(last); 48237 48238 if ((dst)) { 48239 memcpy(dst+len, last, codeLen); 48240 } 48241 48242 len += codeLen;; 48243 } 48244 } 48245 48246 if (dst) { 48247 *(dst+len) = 0; 48248 } 48249 return(len); 48250 } 48251 48252 /** 48253 * lower case UTF-8 String 48254 * duplicate string 48255 * 48256 * \param 48257 * string 48258 * \return 48259 * new lower case string (you must free the pointer) 48260 */ 48261 char *lowerUTF8(const char *utf8) { 48262 char *r = NULL; 48263 48264 // sanity checks 48265 if (!utf8) { 48266 return(NULL); 48267 } 48268 48269 localeType lcl = getLocaleType(); 48270 48271 size_t len = _lowerUTF8(NULL, utf8, lcl); 48272 r = malloc(len+1); 48273 if (!r) { 48274 return(NULL); 48275 } 48276 _lowerUTF8(r, utf8, lcl); 48277 return(r); 48278 } 48279 48280 /** 48281 * lower case String 48282 * 48283 * \param 48284 * string (this parameter is reallocated) 48285 * \return 48286 * lower case string (you must free the pointer) 48287 * NULL error 48288 */ 48289 char *iLowerUTF8(char **utf8) { 48290 48291 if (!utf8 || !*utf8) { 48292 return(NULL); 48293 } 48294 48295 char *s = lowerUTF8(*utf8); 48296 48297 free(*utf8); 48298 *utf8 = s; 48299 48300 return(*utf8); 48301 } 48302 48303 /** 48304 * buffer lower case String 48305 * 48306 * \param 48307 * string 48308 * \return 48309 * lower case string 48310 * NULL error 48311 */ 48312 char *bLowerUTF8(char *string UNUSED) { 48313 48314 // TODO 48315 return(NULL); 48316 } 48317 48318 /** 48319 * casefold UTF-8 encoded string 48320 * 48321 * \param 48322 * utf8 UTF-8 encoded string 48323 * \return 48324 * new string (you must free the pointer) 48325 * NULL when utf8 is NULL 48326 */ 48327 char *casefoldUTF8(const char *utf8) { 48328 char *r = NULL; 48329 48330 if (!utf8) { 48331 return(NULL); 48332 } 48333 48334 emptyS(r); 48335 48336 while (*utf8) { 48337 rune ch = code2RuneUTF8(utf8); 48338 48339 int start = 0; 48340 int end = ARRAY_SIZE(casefold_table); 48341 48342 if (ch >= casefold_table[start].ch && ch <= casefold_table[end - 1].ch) { 48343 forever { 48344 int half = (start + end) / 2; 48345 if (ch == casefold_table[half].ch) { 48346 pErrorNULL(iAppendS(&r, casefold_table[half].data)); 48347 goto next; 48348 } 48349 else if (half == start) { 48350 break; 48351 } 48352 else if (ch > casefold_table[half].ch) { 48353 start = half; 48354 } 48355 else { 48356 end = half; 48357 } 48358 } 48359 } 48360 48361 char code[8] = {0, 0, 0, 0, 0, 0, 0, 0}; 48362 pError0(bRune2CodeUTF8(code, tolowerUTF8(ch))); 48363 pErrorNULL(iAppendS(&r, code)); 48364 48365 next: 48366 nxCodeUTF8(utf8); 48367 } 48368 48369 return(r); 48370 } 48371 48372 /** 48373 * uniq UTF-8 String 48374 * duplicate string 48375 * 48376 * remove successive repetitions of UTF-8 code point code 48377 * 48378 * \param 48379 * string 48380 * \param 48381 * c character to remove 48382 * \return 48383 * new string without successive repetitions of char c (you must free the pointer) 48384 */ 48385 char *uniqUTF8(const char *string, const char *code) { 48386 char *r = NULL; 48387 size_t len; 48388 48389 // sanity checks 48390 if (!string || !code) { 48391 return(NULL); 48392 } 48393 48394 r = strdup(string); 48395 if (!r) { 48396 return(NULL); 48397 } 48398 len = lenUTF8(string); 48399 48400 if (len < 2) { 48401 // string is too short to have repetitions 48402 return(r); 48403 } 48404 48405 char *p = r; 48406 char *c = nextCodeUTF8(r); 48407 nxCodeUTF8(string); 48408 48409 while (*string) { 48410 if (startsWithS(p, code) && startsWithS(string, code)) { 48411 // skip 48412 goto next; 48413 } 48414 else { 48415 memcpy(c, string, codeSizeUTF8(string)); 48416 nxCodeUTF8(c); 48417 } 48418 48419 next: 48420 nxCodeUTF8(string); 48421 nxCodeUTF8(p); 48422 } 48423 48424 *c = 0; 48425 48426 return(r); 48427 } 48428 48429 /** 48430 * uniq UTF-8 String 48431 * 48432 * remove successive repetitions of char c 48433 * 48434 * \param 48435 * string 48436 * \param 48437 * c character to remove 48438 * \return 48439 * string without successive repetitions of char c 48440 * NULL error 48441 */ 48442 char *iUniqUTF8(char **string, const char *code) { 48443 size_t len; 48444 48445 // sanity checks 48446 if (!string || !*string || !code) { 48447 return(NULL); 48448 } 48449 48450 len = lenUTF8(*string); 48451 48452 if (len < 2) { 48453 // string is too short to have repetitions 48454 return(*string); 48455 } 48456 48457 char *p = *string; 48458 char *s = *string; 48459 char *c = nextCodeUTF8(*string); 48460 nxCodeUTF8(s); 48461 48462 while (*s) { 48463 if (startsWithS(p, code) && startsWithS(s, code)) { 48464 // skip 48465 goto next; 48466 } 48467 else { 48468 memcpy(c, s, codeSizeUTF8(s)); 48469 nxCodeUTF8(c); 48470 } 48471 48472 next: 48473 nxCodeUTF8(s); 48474 nxCodeUTF8(p); 48475 } 48476 48477 *c = 0; 48478 48479 return(*string); 48480 } 48481 48482 48483 /** 48484 * buffer uniq String 48485 * 48486 * remove successive repetitions of char c 48487 * 48488 * \param 48489 * string 48490 * \param 48491 * c character to remove 48492 * \return 48493 * string without successive repetitions of char c 48494 * NULL error 48495 */ 48496 char *bUniqUTF8(char *string, const char *code) { 48497 size_t len; 48498 48499 // sanity checks 48500 if (!string || !code) { 48501 return(NULL); 48502 } 48503 48504 len = lenUTF8(string); 48505 48506 if (len < 2) { 48507 // string is too short to have repetitions 48508 return(string); 48509 } 48510 48511 char *p = string; 48512 char *s = string; 48513 char *c = nextCodeUTF8(string); 48514 nxCodeUTF8(s); 48515 48516 while (*s) { 48517 if (startsWithS(p, code) && startsWithS(s, code)) { 48518 // skip 48519 goto next; 48520 } 48521 else { 48522 memcpy(c, s, codeSizeUTF8(s)); 48523 nxCodeUTF8(c); 48524 } 48525 48526 next: 48527 nxCodeUTF8(s); 48528 nxCodeUTF8(p); 48529 } 48530 48531 *c = 0; 48532 48533 return(string); 48534 } 48535 48536 /** 48537 * ignore case uniq String 48538 * duplicate string 48539 * 48540 * remove successive repetitions of char c 48541 * 48542 * \param 48543 * string 48544 * \param 48545 * c character to remove 48546 * \return 48547 * new string without successive repetitions of char c (you must free the pointer) 48548 */ 48549 char *icUniqUTF8(const char *string UNUSED, const char *code UNUSED) { 48550 48551 // TODO casefoldUTF8 changes the string length in bytes and characters 48552 return(NULL); 48553 } 48554 48555 /** 48556 * in place ignore case uniq String 48557 * 48558 * remove successive repetitions of char c 48559 * 48560 * \param 48561 * string 48562 * \param 48563 * c character to remove 48564 * \return 48565 * string without successive repetitions of char c 48566 * NULL error 48567 */ 48568 char *iicUniqUTF8(char **string UNUSED, const char *code UNUSED) { 48569 48570 // TODO casefoldUTF8 changes the string length in bytes and characters 48571 return(NULL); 48572 } 48573 48574 /** 48575 * ignore case buffer uniq String 48576 * 48577 * remove successive repetitions of char c 48578 * 48579 * \param 48580 * string 48581 * \param 48582 * c character to remove 48583 * \return 48584 * string without successive repetitions of char c 48585 * NULL error 48586 */ 48587 char *bicUniqUTF8(char *string UNUSED, char c UNUSED) { 48588 48589 // TODO casefoldUTF8 changes the string length in bytes and characters 48590 return(NULL); 48591 } 48592 48593 48594 /** 48595 * get UTF8 encoded string 48596 * 48597 * get char at python index 48598 * 48599 */ 48600 rune getUTF8(const char *string, int64_t index) { 48601 int64_t len; 48602 48603 if (!string) { 48604 return(0); 48605 } 48606 48607 len = (int64_t)lenUTF8(string); 48608 if (index >= len) { 48609 return(0); 48610 } 48611 if (index < -len) { 48612 return(0); 48613 } 48614 if (index < 0) { 48615 index = len + index; 48616 } 48617 48618 const char *c = idx2PtrUTF8(string, index); 48619 return(code2RuneUTF8(c)); 48620 } 48621 48622 48623 /** 48624 * set UTF8 encoded string 48625 * 48626 * set char at python index 48627 * 48628 * TODO this function might make the string invalid UTF8 48629 * check codeSizeUTF8 and adjust the buffer 48630 */ 48631 char *setUTF8(char *string, int64_t index, rune c) { 48632 int64_t len; 48633 48634 if (!string) { 48635 return(NULL); 48636 } 48637 48638 len = (int64_t)lenUTF8(string); 48639 if (index >= len) { 48640 return(NULL); 48641 } 48642 if (index < -len) { 48643 return(NULL); 48644 } 48645 if (index < 0) { 48646 index = len + index; 48647 } 48648 48649 char *p = idx2PtrRWUTF8(string, index); 48650 pError0(bRune2CodeUTF8(p, c)); 48651 // TODO check code point length and shift string end when necessary 48652 return(string); 48653 } 48654 48655 48656 /** 48657 * slice UTF8 encoded String 48658 * return new string which is the string between start and end 48659 * negative indexes are allowed 48660 * 48661 * (copy substring from start to end) 48662 * 48663 * \param 48664 * string to slice 48665 * \param 48666 * start: start character index, must be in the string 48667 * \param 48668 * end: end character index, must be in the string after start 48669 * \return 48670 * new sliced string (you must free the pointer) 48671 * "" when start=end 48672 * NULL when start and end are not set correctly 48673 */ 48674 char *sliceUTF8(const char *string, int64_t start, int64_t end) { 48675 char *s = NULL; 48676 int64_t len; 48677 48678 // sanity checks 48679 if (!string) { 48680 return(NULL); 48681 } 48682 48683 len = (int64_t)lenUTF8(string); 48684 48685 if (start > len) { 48686 return(NULL); 48687 } 48688 if (end > len) { 48689 end = len; 48690 } 48691 if (start <= -len) { 48692 start = -len; 48693 } 48694 if (end <= -len) { 48695 return(NULL); 48696 } 48697 if (start < 0) { 48698 start = len + start; 48699 } 48700 if (end <= 0) { 48701 end = len + end; 48702 } 48703 if (end < start) { 48704 return(NULL); 48705 } 48706 48707 if (start == end) { 48708 emptyS(s) 48709 } 48710 else { 48711 // start < end < len 48712 // copy range to a new string 48713 const char *startp = idx2PtrUTF8(string, start); 48714 const char *endp = idx2PtrUTF8(string, end); 48715 size_t n; 48716 n = (size_t)(endp - startp); 48717 s = MALLOC((n+1)); 48718 if (!s) { 48719 return(NULL);//LCOV_EXCL_LINE 48720 } 48721 s = strncpy(s, string+(size_t)(startp-string), n); 48722 s[n] = 0; 48723 } 48724 48725 return(s); 48726 } 48727 48728 48729 /** 48730 * slice UTF8 encoded String 48731 * return string which is the string between start and end 48732 * negative indexes are allowed 48733 * 48734 * \param 48735 * string to slice (this parameter is reallocated) 48736 * \param 48737 * start: start character index, must be in the string 48738 * \param 48739 * end: end character index, must be in the string after start 48740 * \return 48741 * sliced string (you must free the pointer) 48742 * "" when start=end 48743 * NULL unchanged string when start and end are not set correctly 48744 */ 48745 char *iSliceUTF8(char **string, int64_t start, int64_t end) { 48746 char *s = NULL; 48747 int64_t len; 48748 48749 // sanity checks 48750 if (!string || !*string) { 48751 return(NULL); 48752 } 48753 48754 len = (int64_t)lenUTF8(*string); 48755 48756 if (start > len) { 48757 free(*string); 48758 emptyS(*string); 48759 return(NULL); 48760 } 48761 if (end > len) { 48762 end = len; 48763 } 48764 if (start <= -len) { 48765 start = -len; 48766 } 48767 if (end <= -len) { 48768 free(*string); 48769 emptyS(*string); 48770 return(NULL); 48771 } 48772 if (start < 0) { 48773 start = len + start; 48774 } 48775 if (end <= 0) { 48776 end = len + end; 48777 } 48778 if (end < start) { 48779 free(*string); 48780 emptyS(*string); 48781 return(NULL); 48782 } 48783 48784 if (start == end) { 48785 emptyS(s); 48786 } 48787 else { 48788 // start < end < len 48789 // copy range to a new string 48790 const char *startp = idx2PtrUTF8(*string, start); 48791 const char *endp = idx2PtrUTF8(*string, end); 48792 size_t n; 48793 n = (size_t)(endp - startp); 48794 s = MALLOC(n+1); 48795 if (!s) { 48796 return(NULL); 48797 } 48798 s = strncpy(s, (*string)+(size_t)(startp-*string), n); 48799 s[n] = 0; 48800 } 48801 48802 free(*string); 48803 *string = s; 48804 return(s); 48805 } 48806 48807 48808 /** 48809 * buffer slice UTF8 encoded String 48810 * return string which is the string between start and end 48811 * negative indexes are allowed 48812 * 48813 * \param 48814 * string to slice 48815 * \param 48816 * start: start index, must be in the string 48817 * \param 48818 * end: end index, must be in the string after start 48819 * \return 48820 * sliced string 48821 * "" when start=end 48822 * NULL unchanged string when start and end are not set correctly 48823 */ 48824 char *bSliceUTF8(char *string, int64_t start, int64_t end) { 48825 int64_t len; 48826 48827 // sanity checks 48828 if (!string) { 48829 return(NULL); 48830 } 48831 48832 len = (int64_t)lenUTF8(string); 48833 48834 if (start > len) { 48835 bEmptyS(string); 48836 return(NULL); 48837 } 48838 if (end > len) { 48839 end = len; 48840 } 48841 if (start <= -len) { 48842 start = -len; 48843 } 48844 if (end <= -len) { 48845 bEmptyS(string); 48846 return(NULL); 48847 } 48848 if (start < 0) { 48849 start = len + start; 48850 } 48851 if (end <= 0) { 48852 end = len + end; 48853 } 48854 if (end < start) { 48855 bEmptyS(string); 48856 return(NULL); 48857 } 48858 48859 if (start == end) { 48860 bEmptyS(string); 48861 } 48862 else { 48863 // start < end < len 48864 // copy range to a new string 48865 const char *startp = idx2PtrUTF8(string, start); 48866 const char *endp = idx2PtrUTF8(string, end); 48867 size_t n; 48868 n = (size_t)(endp - startp); 48869 memmove(string, string+(size_t)(startp-string), n); 48870 string[n] = 0; 48871 } 48872 48873 return(string); 48874 } 48875 48876 48877 /** 48878 * buffer size slice UTF8 encoded String 48879 * return string which is the string between start and end 48880 * negative indexes are allowed 48881 * 48882 * \param 48883 * string to slice 48884 * \param 48885 * stringSize string buffer size 48886 * \param 48887 * start: start character index, must be in the string 48888 * \param 48889 * end: end character index, must be in the string after start 48890 * \return 48891 * sliced string 48892 * "" when start=end 48893 * NULL unchanged string when start and end are not set correctly 48894 */ 48895 char *bLSliceUTF8(char *string, size_t stringSize, int64_t start, int64_t end) { 48896 int64_t len; 48897 48898 // sanity checks 48899 if (!string || !stringSize) { 48900 return(NULL); 48901 } 48902 48903 len = (int64_t)strlen(string); 48904 if ((size_t)len+1 > stringSize) { 48905 len = (int64_t)(stringSize - 1); 48906 } 48907 48908 if (start > len) { 48909 bEmptyS(string); 48910 return(NULL); 48911 } 48912 if (end > len) { 48913 end = len; 48914 } 48915 if (start <= -len) { 48916 start = -len; 48917 } 48918 if (end <= -len) { 48919 bEmptyS(string); 48920 return(NULL); 48921 } 48922 if (start < 0) { 48923 start = len + start; 48924 } 48925 if (end <= 0) { 48926 end = len + end; 48927 } 48928 if (end < start) { 48929 bEmptyS(string); 48930 return(NULL); 48931 } 48932 48933 const char *startp = bLIdx2PtrUTF8(string, stringSize, start); 48934 const char *endp = bLIdx2PtrUTF8(string, stringSize, end); 48935 48936 size_t starto = (size_t)(startp-string); 48937 size_t endo = (size_t)(endp-string); 48938 48939 // compute string length without NUL 48940 stringSize--; 48941 if (starto > stringSize) { 48942 bEmptyS(string); 48943 return(NULL); 48944 } 48945 if (endo > stringSize) { 48946 end = (int64_t)stringSize; 48947 } 48948 if (start == 0) { 48949 starto = 0; 48950 } 48951 if (end < start) { 48952 bEmptyS(string); 48953 return(NULL); 48954 } 48955 48956 if (start == end) { 48957 bEmptyS(string); 48958 } 48959 else { 48960 // start < end < stringSize 48961 // copy range to a new string 48962 size_t n; 48963 n = (size_t)(endp - startp); 48964 memmove(string, string+starto, n); 48965 string[n] = 0; 48966 } 48967 48968 return(string); 48969 } 48970 48971 48972 /** 48973 * insert string in UTF8 encoded string at index 48974 * 48975 * return new string with toInsert at index 48976 * negative indexes are allowed 48977 * index -1 is the end of the array and is equivalent to index len 48978 * 48979 * \param 48980 * string UTF8 encoded string 48981 * \param 48982 * index character index in string 48983 * \param 48984 * toInsert UTF8 encoded string 48985 * \return 48986 * new string (you must free the pointer) 48987 * NULL when string is NULL or invalid index 48988 */ 48989 char *insertUTF8(const char *string, int64_t index, const char *toInsert) { 48990 char *r = NULL; 48991 int64_t len; 48992 48993 // sanity checks 48994 if (!string) { 48995 if (index || !toInsert) { 48996 return(NULL); 48997 } 48998 return(strdup(toInsert)); 48999 } 49000 49001 len = (int64_t)lenUTF8(string); 49002 49003 if (!len && index == -1) { 49004 // empty string, index -1 is equal to 0 49005 index = 0; 49006 } 49007 bool neg = false; 49008 if (index < 0) { 49009 neg = true; 49010 } 49011 49012 if (index > len) { 49013 return(NULL); 49014 } 49015 if (neg) { 49016 index++; 49017 } 49018 if (index < -len) { 49019 return(NULL); 49020 } 49021 if (neg) { 49022 index = len + index; 49023 } 49024 49025 49026 if (!toInsert || isEmptyS(toInsert)) { 49027 return(strdup(string)); 49028 } 49029 49030 if (index == 0) { 49031 // insert at beginning 49032 return(catS(toInsert, string)); 49033 } 49034 49035 int64_t offset = idx2PtrUTF8(string, index) - string; 49036 char *s1 = sliceS(string, 0, offset); 49037 char *s2 = sliceS(string, offset, 0); 49038 r = catS(s1, toInsert, s2); 49039 freeManyS(s1,s2); 49040 49041 return(r); 49042 } 49043 49044 49045 /** 49046 * insert string in UTF8 encoded string at index and free toInsert 49047 * 49048 * return new string with toInsert at index 49049 * negative indexes are allowed 49050 * index -1 is the end of the array and is equivalent to index len 49051 * 49052 * \param 49053 * string UTF8 encoded string 49054 * \param 49055 * index character index in string 49056 * \param 49057 * toInsert UTF8 encoded string 49058 * \return 49059 * new string (you must free the pointer) 49060 * NULL when string is NULL or invalid index 49061 */ 49062 char *insertNFreeUTF8(const char *string, int64_t index, char *toInsert) { 49063 char *r = NULL; 49064 int64_t len; 49065 49066 // sanity checks 49067 if (!string) { 49068 if (index) { 49069 return(NULL); 49070 } 49071 if (!toInsert) { 49072 return(NULL); 49073 } 49074 r = strdup(toInsert); 49075 free(toInsert); 49076 return(r); 49077 } 49078 49079 len = (int64_t)lenUTF8(string); 49080 49081 if (!len && index == -1) { 49082 // empty string, index -1 is equal to 0 49083 index = 0; 49084 } 49085 bool neg = false; 49086 if (index < 0) { 49087 neg = true; 49088 } 49089 49090 if (index > len) { 49091 return(NULL); 49092 } 49093 if (neg) { 49094 index++; 49095 } 49096 if (index < -len) { 49097 return(NULL); 49098 } 49099 if (neg) { 49100 index = len + index; 49101 } 49102 49103 49104 if (!toInsert || isEmptyS(toInsert)) { 49105 free(toInsert); 49106 return(strdup(string)); 49107 } 49108 49109 if (index == 0) { 49110 // insert at beginning 49111 r = catS(toInsert, string); 49112 free(toInsert); 49113 return(r); 49114 } 49115 49116 int64_t offset = idx2PtrUTF8(string, index) - string; 49117 char *s1 = sliceS(string, 0, offset); 49118 char *s2 = sliceS(string, offset, 0); 49119 r = catS(s1, toInsert, s2); 49120 freeManyS(s1,s2, toInsert); 49121 49122 return(r); 49123 } 49124 49125 49126 /** 49127 * insert string in UTF8 encoded string at index 49128 * 49129 * return string with toInsert at index 49130 * negative indexes are allowed 49131 * index -1 is the end of the array and is equivalent to index len 49132 * 49133 * \param 49134 * string UTF8 encoded string (this parameter is reallocated) 49135 * \param 49136 * index character index in string 49137 * \param 49138 * toInsert UTF8 encoded string 49139 * \return 49140 * modified string (you must free the pointer) 49141 * NULL unchanged string when string is NULL or invalid index 49142 */ 49143 char *iInsertUTF8(char **string, int64_t index, const char *toInsert) { 49144 char *r = NULL; 49145 int64_t len; 49146 49147 // sanity checks 49148 if (!string) { 49149 return(NULL); 49150 } 49151 if (!*string) { 49152 if (index) { 49153 return(NULL); 49154 } 49155 r = strdup(toInsert); 49156 *string = r; 49157 return(r); 49158 } 49159 49160 len = (int64_t)lenUTF8(*string); 49161 49162 if (!len && index == -1) { 49163 // empty string, index -1 is equal to 0 49164 index = 0; 49165 } 49166 bool neg = false; 49167 if (index < 0) { 49168 neg = true; 49169 } 49170 49171 if (index > len) { 49172 return(NULL); 49173 } 49174 if (neg) { 49175 index++; 49176 } 49177 if (index < -len) { 49178 return(NULL); 49179 } 49180 if (neg) { 49181 index = len + index; 49182 } 49183 49184 49185 if (!toInsert || isEmptyS(toInsert)) { 49186 return(*string); 49187 } 49188 49189 if (index == 0) { 49190 // insert at beginning 49191 r = catS(toInsert, *string); 49192 } 49193 else { 49194 int64_t offset = idx2PtrUTF8(*string, index) - *string; 49195 char *s1 = sliceS(*string, 0, offset); 49196 char *s2 = sliceS(*string, offset, 0); 49197 r = catS(s1, toInsert, s2); 49198 freeManyS(s1,s2); 49199 } 49200 49201 free(*string); 49202 *string = r; 49203 return(r); 49204 } 49205 49206 49207 /** 49208 * insert string in UTF8 encoded string at index and free toInsert 49209 * 49210 * return string with toInsert at index 49211 * negative indexes are allowed 49212 * index -1 is the end of the array and is equivalent to index len 49213 * 49214 * \param 49215 * string UTF8 encoded string (this parameter is reallocated) 49216 * \param 49217 * index character index in string 49218 * \param 49219 * toInsert UTF8 encoded string 49220 * \return 49221 * modified string (you must free the pointer) 49222 * NULL unchanged string when string is NULL or invalid index 49223 */ 49224 char *iInsertNFreeUTF8(char **string, int64_t index, char *toInsert) { 49225 char *r = NULL; 49226 int64_t len; 49227 49228 // sanity checks 49229 if (!string) { 49230 return(NULL); 49231 } 49232 if (!*string) { 49233 if (index) { 49234 return(NULL); 49235 } 49236 r = strdup(toInsert); 49237 free(toInsert); 49238 *string = r; 49239 return(r); 49240 } 49241 49242 len = (int64_t)lenUTF8(*string); 49243 49244 if (!len && index == -1) { 49245 // empty string, index -1 is equal to 0 49246 index = 0; 49247 } 49248 bool neg = false; 49249 if (index < 0) { 49250 neg = true; 49251 } 49252 49253 if (index > len) { 49254 return(NULL); 49255 } 49256 if (neg) { 49257 index++; 49258 } 49259 if (index < -len) { 49260 return(NULL); 49261 } 49262 if (neg) { 49263 index = len + index; 49264 } 49265 49266 49267 if (!toInsert || isEmptyS(toInsert)) { 49268 free(toInsert); 49269 return(*string); 49270 } 49271 49272 if (index == 0) { 49273 // insert at beginning 49274 r = catS(toInsert, *string); 49275 } 49276 else { 49277 int64_t offset = idx2PtrUTF8(*string, index) - *string; 49278 char *s1 = sliceS(*string, 0, offset); 49279 char *s2 = sliceS(*string, offset, 0); 49280 r = catS(s1, toInsert, s2); 49281 freeManyS(s1,s2); 49282 } 49283 free(toInsert); 49284 49285 free(*string); 49286 *string = r; 49287 return(r); 49288 } 49289 49290 49291 /** 49292 * buffer insert string in UTF8 encoded string at index 49293 * 49294 * return string with toInsert at index 49295 * negative indexes are allowed 49296 * index -1 is the end of the array and is equivalent to index len 49297 * 49298 * \param 49299 * string UTF8 encoded string 49300 * \param 49301 * index character index in string 49302 * \param 49303 * toInsert UTF8 encoded string 49304 * \return 49305 * modified string 49306 * NULL unchanged string when string is NULL or invalid index 49307 */ 49308 char *bInsertUTF8(char *string, int64_t index, const char *toInsert) { 49309 int64_t len; 49310 49311 // sanity checks 49312 if (!string) { 49313 return(NULL); 49314 } 49315 49316 len = (int64_t)lenUTF8(string); 49317 49318 if (!len && index == -1) { 49319 // empty string, index -1 is equal to 0 49320 index = 0; 49321 } 49322 bool neg = false; 49323 if (index < 0) { 49324 neg = true; 49325 } 49326 49327 if (index > len) { 49328 return(NULL); 49329 } 49330 if (neg) { 49331 index++; 49332 } 49333 if (index < -len) { 49334 return(NULL); 49335 } 49336 if (neg) { 49337 index = len + index; 49338 } 49339 49340 49341 if (!toInsert || isEmptyS(toInsert)) { 49342 return(string); 49343 } 49344 49345 if (index == 0) { 49346 // insert at beginning 49347 char *s = alloca((size_t)(len+1)); 49348 strcpy(s, string); 49349 pErrorNULL(bCatS(string, toInsert, s)); 49350 } 49351 else { 49352 int64_t offset = idx2PtrUTF8(string, index) - string; 49353 char *s1 = alloca((size_t)(offset+1)); 49354 pErrorNULL(strLCpy(s1, (size_t)(offset+1), string)); 49355 char *s2 = alloca((size_t)(len-offset+1)); 49356 strcpy(s2, string+offset); 49357 pErrorNULL(bCatS(string, s1, toInsert, s2)); 49358 } 49359 return(string); 49360 } 49361 49362 49363 /** 49364 * buffer size insert string in UTF8 encoded string at index 49365 * 49366 * return string with toInsert at index 49367 * negative indexes are allowed 49368 * index -1 is the end of the array and is equivalent to index len 49369 * 49370 * \param 49371 * string UTF8 encoded string 49372 * \param 49373 * index character index in string 49374 * \param 49375 * toInsert UTF8 encoded string 49376 * \return 49377 * modified string 49378 * NULL unchanged string when string is NULL or invalid index 49379 */ 49380 char *bLInsertUTF8(char *string, size_t stringSize, int64_t index, const char *toInsert) { 49381 int64_t len; 49382 49383 // sanity checks 49384 if (!string) { 49385 return(NULL); 49386 } 49387 49388 if (!stringSize) { 49389 // string size is 0 - no change 49390 return(string); 49391 } 49392 49393 len = (int64_t)bLLenUTF8(string, stringSize); 49394 49395 if (!len && index == -1) { 49396 // empty string, index -1 is equal to 0 49397 index = 0; 49398 } 49399 bool neg = false; 49400 if (index < 0) { 49401 neg = true; 49402 } 49403 49404 if (index > len) { 49405 return(NULL); 49406 } 49407 if (neg) { 49408 index++; 49409 } 49410 if (index < -len) { 49411 return(NULL); 49412 } 49413 if (neg) { 49414 index = len + index; 49415 } 49416 49417 49418 if (!toInsert || isEmptyS(toInsert)) { 49419 return(string); 49420 } 49421 49422 if (index == 0) { 49423 // insert at beginning 49424 char *s = alloca((size_t)(len+1));; 49425 strcpy(s, string); 49426 pErrorNULL(bLCatS(string, stringSize, toInsert, s)); 49427 } 49428 else { 49429 int64_t offset = bLIdx2PtrUTF8(string, stringSize, index) - string; 49430 char *s1 = alloca((size_t)(offset+1)); 49431 pErrorNULL(strLCpy(s1, (size_t)(offset+1), string)); 49432 char *s2 = alloca((size_t)(len-offset+1)); 49433 strcpy(s2, string+offset); 49434 pErrorNULL(bLCatS(string, stringSize, s1, toInsert, s2)); 49435 } 49436 return(string); 49437 } 49438 49439 49440 /** 49441 * delete UTF8 encoded string 49442 * 49443 * return new string without the string between start and end 49444 * negative indexes are allowed 49445 * 49446 * \param 49447 * string to delete 49448 * \param 49449 * start: start character index, must be in the string 49450 * \param 49451 * end: end character index, must be in the string after start 49452 * \return 49453 * new sliced string (you must free the pointer) 49454 * new identical string when start=end or when start and end are not set correctly 49455 * NULL when input string is NULL or when malloc failed or when end is under start 49456 */ 49457 char *delUTF8(const char *string, int64_t start, int64_t end) { 49458 char *s = NULL; 49459 int64_t len; 49460 49461 // sanity checks 49462 if (!string) { 49463 return(NULL); 49464 } 49465 49466 len = (int64_t)lenUTF8(string); 49467 49468 if (start >= len) { 49469 start = len; 49470 } 49471 if (end > len) { 49472 end = len; 49473 } 49474 if (start <= -len) { 49475 start = -len; 49476 } 49477 if (end <= -len) { 49478 end = -len; 49479 } 49480 if (start < 0) { 49481 start = len + start; 49482 } 49483 if (end <= 0) { 49484 end = len + end; 49485 } 49486 if (end < start) { 49487 return(NULL); 49488 } 49489 49490 if (start == end) { 49491 return(strdup(string)); 49492 } 49493 49494 // start < end < len 49495 // copy range to a new string 49496 len = (int64_t)strlen(string); 49497 const char *startp = idx2PtrUTF8(string, start); 49498 const char *endp = idx2PtrUTF8(string, end); 49499 size_t starto = (size_t)(startp-string); 49500 int64_t n; 49501 n = endp - startp; 49502 s = MALLOC((size_t)(len-n+1)); 49503 if (!s) { 49504 return(NULL);//LCOV_EXCL_LINE 49505 } 49506 strncpy(s, string, starto); 49507 strncpy(s+starto, string+starto+n, (size_t)(len-n)-starto); 49508 s[len-n] = 0; 49509 49510 return(s); 49511 } 49512 49513 49514 /** 49515 * delete UTF8 encoded string 49516 * 49517 * return string without the string between start and end 49518 * negative indexes are allowed 49519 * 49520 * \param 49521 * string to delete (this parameter is reallocated) 49522 * \param 49523 * start: start character index, must be in the string 49524 * \param 49525 * end: end character index, must be in the string after start 49526 * \return 49527 * sliced string (you must free the pointer) 49528 * unchanged string when start=end 49529 * NULL when start and end are not set correctly 49530 * or when input string is NULL or when malloc failed or when end is under start 49531 */ 49532 char *iDelUTF8(char **string, int64_t start, int64_t end) { 49533 char *s = NULL; 49534 int64_t len; 49535 49536 // sanity checks 49537 if (!string || !*string) { 49538 return(NULL); 49539 } 49540 49541 len = (int64_t)lenUTF8(*string); 49542 49543 if (start >= len) { 49544 start = len; 49545 } 49546 if (end > len) { 49547 end = len; 49548 } 49549 if (start <= -len) { 49550 start = -len; 49551 } 49552 if (end <= -len) { 49553 end = -len; 49554 } 49555 if (start < 0) { 49556 start = len + start; 49557 } 49558 if (end <= 0) { 49559 end = len + end; 49560 } 49561 if (end < start) { 49562 return(NULL); 49563 } 49564 49565 if (start == end) { 49566 return(*string); 49567 } 49568 49569 // start < end < len 49570 // copy range to a new string 49571 len = (int64_t)strlen(*string); 49572 const char *startp = idx2PtrUTF8(*string, start); 49573 const char *endp = idx2PtrUTF8(*string, end); 49574 size_t starto = (size_t)(startp-*string); 49575 int64_t n; 49576 n = endp - startp; 49577 s = MALLOC((size_t)(len-n+1)); 49578 if (!s) { 49579 return(NULL); 49580 } 49581 strncpy(s, *string, starto); 49582 strncpy(s+starto, (*string)+starto+n, (size_t)(len-n)-starto); 49583 s[len-n] = 0; 49584 49585 free(*string); 49586 *string = s; 49587 return(s); 49588 } 49589 49590 49591 /** 49592 * buffer delete UTF8 encoded string 49593 * 49594 * return string without the string between start and end 49595 * negative indexes are allowed 49596 * 49597 * \param 49598 * string to delete 49599 * \param 49600 * start: start character index, must be in the string 49601 * \param 49602 * end: end character index, must be in the string after start 49603 * \return 49604 * sliced string 49605 * unchanged string when start=end 49606 * NULL when start and end are not set correctly 49607 * or when input string is NULL or when malloc failed or when end is under start 49608 */ 49609 char *bDelUTF8(char *string, int64_t start, int64_t end) { 49610 int64_t len; 49611 49612 // sanity checks 49613 if (!string) { 49614 return(NULL); 49615 } 49616 49617 len = (int64_t)lenUTF8(string); 49618 49619 if (start >= len) { 49620 start = len; 49621 } 49622 if (end > len) { 49623 end = len; 49624 } 49625 if (start <= -len) { 49626 start = -len; 49627 } 49628 if (end <= -len) { 49629 end = -len; 49630 } 49631 if (start < 0) { 49632 start = len + start; 49633 } 49634 if (end <= 0) { 49635 end = len + end; 49636 } 49637 if (end < start) { 49638 return(NULL); 49639 } 49640 49641 if (start == end) { 49642 return(string); 49643 } 49644 49645 // start < end < len 49646 // copy range to a new string 49647 len = (int64_t)strlen(string); 49648 const char *startp = idx2PtrUTF8(string, start); 49649 const char *endp = idx2PtrUTF8(string, end); 49650 size_t starto = (size_t)(startp-string); 49651 int64_t n; 49652 n = endp - startp; 49653 memmove(string+starto, string+starto+n, (size_t)(len-n)-starto); 49654 string[len-n] = 0; 49655 49656 return(string); 49657 } 49658 49659 49660 /** 49661 * buffer size delete UTF8 encoded string 49662 * 49663 * return string without the string between start and end 49664 * negative indexes are allowed 49665 * 49666 * \param 49667 * string to delete 49668 * \param 49669 * stringSize string buffer size 49670 * \param 49671 * start: start character index, must be in the string 49672 * \param 49673 * end: end character index, must be in the string after start 49674 * \return 49675 * sliced string 49676 * unchanged string when start=end 49677 * NULL when start and end are not set correctly 49678 * or when input string is NULL or when malloc failed or when end is under start 49679 */ 49680 char *bLDelUTF8(char *string, size_t stringSize, int64_t start, int64_t end) { 49681 int64_t len; 49682 49683 // sanity checks 49684 if (!string || !stringSize) { 49685 return(NULL); 49686 } 49687 49688 len = (int64_t)strlen(string); 49689 if ((size_t)len+1 > stringSize) { 49690 len = (int64_t)(stringSize - 1); 49691 } 49692 49693 // compute string length without NUL 49694 if (start >= len) { 49695 start = len; 49696 } 49697 if (end > len) { 49698 end = len; 49699 } 49700 if (start <= -len) { 49701 start = -len; 49702 } 49703 if (end <= -len) { 49704 end = -len; 49705 } 49706 if (start < 0) { 49707 start = len + start; 49708 } 49709 if (end <= 0) { 49710 end = len + end; 49711 } 49712 if (end < start) { 49713 return(NULL); 49714 } 49715 49716 const char *startp = bLIdx2PtrUTF8(string, stringSize, start); 49717 const char *endp = bLIdx2PtrUTF8(string, stringSize, end); 49718 49719 size_t starto = (size_t)(startp-string); 49720 49721 if (starto >= stringSize) { 49722 starto = stringSize; 49723 } 49724 if (start == 0) { 49725 starto = 0; 49726 } 49727 if (end < start) { 49728 return(NULL); 49729 } 49730 49731 if (start == end) { 49732 return(string); 49733 } 49734 49735 // start < end < len 49736 // copy range to a new string 49737 int64_t n; 49738 n = endp - startp; 49739 memmove(string+starto, string+starto+n, (size_t)(len-n)-starto); 49740 string[len-n] = 0; 49741 49742 return(string); 49743 } 49744 49745 49746 /** 49747 * indexOf UTF8 encoded String 49748 * relative to start 49749 * 49750 * \param 49751 * string 49752 * \param 49753 * needle: string to find 49754 * \return 49755 * character index of first occurence of needle in string 49756 * -1 when needle is not found 49757 * -1 when string or needle are NULL 49758 */ 49759 ssize_t indexOfUTF8(const char *string, const char *needle) { 49760 49761 char *r = findS(string, needle); 49762 if (!r) { 49763 return(-1); 49764 } 49765 return(ptr2IdxUTF8(string, r)); 49766 } 49767 49768 49769 /** 49770 * ignore case indexOf UTF8 encoded String 49771 * relative to start 49772 * 49773 * \param 49774 * string 49775 * \param 49776 * needle: string to find 49777 * \return 49778 * character index of first occurence of needle in string 49779 * -1 when needle is not found 49780 * -1 when string or needle are NULL 49781 */ 49782 ssize_t icIndexOfUTF8(const char *string UNUSED, const char *needle UNUSED) { 49783 49784 //TODO casefoldUTF8 can change the number of characters 49785 return(-1); 49786 } 49787 49788 49789 /** 49790 * ignore case has UTF8 encoded String 49791 * 49792 * \param 49793 * string 49794 * \param 49795 * needle: string to find 49796 * \return 49797 * true when needle is in string 49798 * false when needle is not found 49799 * false when string or needle are NULL 49800 */ 49801 bool icHasUTF8(const char *string, const char *needle) { 49802 49803 // sanity checks 49804 if (!string || !needle) { 49805 return(false); 49806 } 49807 49808 char *s = casefoldUTF8(string); 49809 char *n = casefoldUTF8(needle); 49810 49811 bool r = hasS(s, n); 49812 49813 free(s); 49814 free(n); 49815 return(r); 49816 } 49817 49818 49819 /** 49820 * ignore case token in UTF8 encoded String 49821 * 49822 * parse string into a sequence of tokens delimited by the ENTIRE DELIM string 49823 * work like strtok_r from c stdlib 49824 * (for strtok_r, when delim has multiple characters, each character is a delimiter) 49825 * 49826 * on first call s is the string to parse, optionally initialize *saveptr to NULL 49827 * on next calls, s should be NULL 49828 * 49829 * \param 49830 * s string to parse, the s string is modified 49831 * \param 49832 * delim string 49833 * \return 49834 * token 49835 * *saveptr is set to NULL when the last token is found 49836 */ 49837 char *icTokUTF8(const char *s UNUSED, const char *delim UNUSED, char **saveptr UNUSED) { 49838 49839 //TODO casefoldUTF8 changes the string 49840 return(NULL); 49841 } 49842 49843 49844 /** 49845 * ignore case split UTF8 encoded string with delim string 49846 * return list 49847 * 49848 * \param 49849 * string to split 49850 * \param 49851 * delim delimiter 49852 * \return 49853 * list of tokens 49854 * NULL when list or delim are NULL 49855 */ 49856 char **icSplitUTF8(const char *string UNUSED, const char* delim UNUSED) { 49857 49858 //TODO casefoldUTF8 changes the string 49859 return(NULL); 49860 } 49861 49862 /** 49863 * ignore case extract UTF8 encoded string between delim1 and delim2 strings 49864 * return list 49865 * 49866 * \param 49867 * string to split 49868 * \param 49869 * delim1 first delimiter 49870 * \param 49871 * delim2 second delimiter, has to different from delim1 49872 * \return 49873 * list of tokens 49874 * NULL when list or delim are NULL 49875 */ 49876 char **icExtractUTF8(const char *string UNUSED, const char* delim1 UNUSED, const char* delim2 UNUSED) { 49877 49878 //TODO casefoldUTF8 changes the string 49879 return(NULL); 49880 } 49881 49882 char **icExtractCharSUTF8(const char *string UNUSED, char delim1 UNUSED, const char* delim2 UNUSED) { 49883 49884 //TODO casefoldUTF8 changes the string 49885 return(NULL); 49886 } 49887 49888 char **icExtractSCharUTF8(const char *string UNUSED, const char* delim1 UNUSED, char delim2 UNUSED) { 49889 49890 //TODO casefoldUTF8 changes the string 49891 return(NULL); 49892 } 49893 49894 49895 /** 49896 * ignore case list Sort UTF-8 encoded String Compare function 49897 * 49898 * in: 49899 * a 49900 * b 49901 * out: 49902 * test result 49903 */ 49904 internal int icListSortUTF8Cmp(const void * a, const void * b) { 49905 49906 // sanity checks 49907 if (!a && !b) { 49908 return(0); 49909 } 49910 if (!a && b) { 49911 return(-1); 49912 } 49913 if (a && !b) { 49914 return(1); 49915 } 49916 char *A = casefoldUTF8(*(char *const*)a); 49917 char *B = casefoldUTF8(*(char *const*)b); 49918 int r = strcmp(A,B); 49919 free(A); 49920 free(B); 49921 return(r); 49922 } 49923 49924 49925 /** 49926 * ignore case list Sort UTF8 encoded String 49927 * duplicate list and sort 49928 * 49929 * \param 49930 * list 49931 * \return 49932 * new sorted list (you must free the pointer with listFreeS) 49933 * empty list when list is empty 49934 * NULL when list is NULL 49935 */ 49936 char **icListSortUTF8(char **list) { 49937 size_t len; 49938 char **l = NULL; 49939 49940 // sanity checks 49941 if (!list) { 49942 return(NULL); 49943 } 49944 len = listLengthS(list); 49945 // duplicate 49946 l = listDupS(list); 49947 if (!len) { 49948 return(l); 49949 } 49950 // sort 49951 qsort(l, len, sizeof(char *), icListSortUTF8Cmp); 49952 return(l); 49953 } 49954 49955 49956 /** 49957 * ignore case list Sort UTF8 encoded String 49958 * 49959 * \param 49960 * list 49961 * \return 49962 * sorted list 49963 * empty list when list is empty 49964 * unchanged list when list is NULL 49965 * NULL error 49966 */ 49967 char **iicListSortUTF8(char ***list) { 49968 size_t len; 49969 49970 // sanity checks 49971 if (!list || !*list) { 49972 return(NULL); 49973 } 49974 len = listLengthS(*list); 49975 if (!len) { 49976 return(NULL); 49977 } 49978 // sort 49979 qsort(*list, len, sizeof(char *), icListSortUTF8Cmp); 49980 return(*list); 49981 } 49982 49983 49984 /** 49985 * ignore case list Equal UTF8 encoded String 49986 * compare each element of list1 and list2 49987 * 49988 * \param 49989 * 2 lists 49990 * \return 49991 * true the lists have identical elements 49992 * false they differ 49993 */ 49994 bool icListEqUTF8(char **list1, char **list2) { 49995 49996 // sanity checks 49997 if (!list1 || !list2) { 49998 return(false); 49999 } 50000 if (listLengthS(list1) != listLengthS(list2)) { 50001 return(false); 50002 } 50003 50004 // compare elements 50005 enumerateCharP(list1, e, i) { 50006 if (!icEqUTF8(*e, list2[i])) { 50007 return(false); 50008 } 50009 } 50010 50011 return(true); 50012 } 50013 50014 50015 /** 50016 * ignore case and return true when list has UTF8 encoded string 50017 * 50018 * \param 50019 * list 50020 * \param 50021 * string 50022 * \return 50023 * true when list has string 50024 * false when the string is not found 50025 * false when list or string are NULL 50026 */ 50027 bool icListHasUTF8(char **list, const char *string) { 50028 50029 if (!list || !string) { 50030 return(false); 50031 } 50032 if (icListIndexOfUTF8(list, string) == -1) { 50033 return(false); 50034 } 50035 return(true); 50036 } 50037 50038 50039 /** 50040 * ignore case and return index of UTF8 encoded string in list 50041 * 50042 * \param 50043 * list 50044 * \param 50045 * string 50046 * \return 50047 * index 50048 * -1 when the string is not found 50049 * -1 when list or string are NULL 50050 */ 50051 ssize_t icListIndexOfUTF8(char **list, const char *string) { 50052 bool found = false;; 50053 50054 // sanity checks 50055 if (!list || !string) { 50056 return(-1); 50057 } 50058 // search string in elements 50059 enumerateCharP(list, e, i) { 50060 if (icEqUTF8(*e, string)) { 50061 found = true; 50062 break; 50063 } 50064 } 50065 if (found) { 50066 return((ssize_t)i); 50067 } 50068 else { 50069 return(-1); 50070 } 50071 } 50072 50073 50074 /** 50075 * ignore case list binary search UTF8 encoded string 50076 * 50077 * efficiently finds the index of string in list 50078 * the list has be sorted with for example listSortS 50079 * 50080 * \param 50081 * list 50082 * \param 50083 * string to search 50084 * \return 50085 * index of string 50086 * -1 string not found or NULL input pointers 50087 */ 50088 ssize_t icListBinarySearchUTF8(char **list, const char *string) { 50089 ssize_t first = 0, middle, last;; 50090 50091 if (!list || !string) { 50092 return(-1); 50093 } 50094 50095 char *s = casefoldUTF8(string); 50096 50097 last = (ssize_t)(listLengthS(list) - 1); 50098 while (first <= last) { 50099 middle = (first+last)/2; 50100 char *m = casefoldUTF8(list[middle]); 50101 if (strcmp(m, s) < 0) { 50102 first = middle + 1; 50103 } 50104 else if (strcmp(m, s) == 0) { 50105 free(m); 50106 free(s); 50107 return(middle); 50108 } 50109 else { 50110 last = middle -1; 50111 } 50112 free(m); 50113 } 50114 free(s); 50115 return(-1); 50116 } 50117 50118 50119 /** 50120 * ignore case and uniquify UTF8 encoded elements of list 50121 * duplicate list 50122 * each elements are unique in the new list 50123 * 50124 * \param 50125 * list 50126 * \return 50127 * new list with unique elements (you must free the pointer with listFreeS) 50128 * empty list when list is empty 50129 * NULL when list is NULL 50130 */ 50131 char **icListUniqUTF8(char **list) { 50132 char **r = NULL; 50133 50134 // sanity checks 50135 if (!list) { 50136 return(NULL); 50137 } 50138 50139 size_t len = listLengthS(list); 50140 50141 if (!len) { 50142 listEmptyS(r); 50143 return(r); 50144 } 50145 pErrorNULL(listPushS(&r, list[0])); 50146 // one element list 50147 if (len == 1) { 50148 return(r); 50149 } 50150 // push element to new list if it is not already in new list 50151 forEachCharP(list, e) { 50152 if (icListIndexOfUTF8(r, *e) == -1) { 50153 pErrorNULL(listPushS(&r, *e)); 50154 } 50155 } 50156 return(r); 50157 } 50158 50159 50160 /** 50161 * ignore case and uniquify UTF8 encoded elements of list 50162 * each elements are unique in the list 50163 * 50164 * \param 50165 * list 50166 * \return 50167 * list with unique elements 50168 * empty list when list is empty 50169 * unchanged list when list is NULL 50170 * NULL error 50171 */ 50172 char **iicListUniqUTF8(char ***list) { 50173 char **r = NULL; 50174 50175 // sanity checks 50176 if (!list || !*list) { 50177 return(NULL); 50178 } 50179 50180 size_t len = listLengthS(*list); 50181 50182 if (len < 1) { 50183 return(*list); 50184 } 50185 else if (len < 2) { 50186 // one element list 50187 pErrorNULL(iListPushS(&r, (*list)[0])); 50188 } 50189 else { 50190 // push element to new list if it is not already in new list 50191 forEachCharP(*list, e) { 50192 if (icListIndexOfUTF8(r, *e) == -1) { 50193 pErrorNULL(iListPushS(&r, *e)); 50194 } 50195 else { 50196 free(*e); 50197 } 50198 } 50199 } 50200 50201 free(*list); 50202 *list = r; 50203 return(r); 50204 } 50205 50206 50207 // TODO reverseUTF8 50208 50209 // 50210 // End UTF-8 string functions 50211 // 50212 50213 50214 50215 /** 50216 * empty String Function 50217 * 50218 * \return 50219 * new empty string (you must free the pointer) 50220 */ 50221 char *emptySF(void) { 50222 50223 return(strdup("")); 50224 } 50225 50226 /** 50227 * empty String Function 50228 * 50229 * when *string is NULL, it is freed 50230 * 50231 * \return 50232 * empty string (you must free the pointer) 50233 * NULL nothing when string is NULL 50234 */ 50235 char *iEmptySF(char **string) { 50236 50237 // sanity checks 50238 if (!string) { 50239 return(NULL); 50240 } 50241 50242 if (*string) { 50243 free(*string); 50244 } 50245 *string = strdup(""); 50246 return(*string); 50247 } 50248 50249 /** 50250 * is Empty String 50251 * 50252 * \param 50253 * string 50254 * \return 50255 * false when there are characters in the string 50256 * true when string is empty 50257 * true when string is NULL 50258 */ 50259 bool isEmptyS(const char *string) { 50260 50261 // sanity checks 50262 if (!string || !*string) { 50263 return(true); 50264 } 50265 return(false); 50266 } 50267 50268 /** 50269 * is Blank String 50270 * 50271 * \param 50272 * string 50273 * \return 50274 * false when there are non white space characters in the string 50275 * true when there are only white spaces in the string 50276 * true when string is empty 50277 * true when string is NULL 50278 */ 50279 bool isBlankS(const char *string) { 50280 50281 // sanity checks 50282 if (!string || !*string) { 50283 return(true); 50284 } 50285 50286 char *s = trimS(string); 50287 if (!s || !*s) { 50288 free(s); 50289 return(true); 50290 } 50291 free(s); 50292 return(false); 50293 } 50294 50295 50296 /** 50297 * int to positive index 50298 * index can be negative 50299 * 50300 * \param 50301 * index: index in list, must be inside the list 50302 * \param 50303 * length: list length 50304 * \return 50305 * positive index 50306 * -1 when length is 0 or index is not set correctly 50307 */ 50308 ssize_t intIndex(int64_t index, int64_t length) { 50309 ssize_t r; 50310 50311 // sanity checks 50312 if (length < 1) { 50313 return(-1); 50314 } 50315 50316 if (index >= length) { 50317 return(-1); 50318 } 50319 if (index < -length) { 50320 return(-1); 50321 } 50322 if (index < 0) { 50323 r = length + index; 50324 } 50325 else { 50326 r = index; 50327 } 50328 return(r); 50329 } 50330 50331 50332 /** 50333 * list Empty String Function 50334 * 50335 * \return 50336 * new empty list (you must free the pointer with listFreeS) 50337 */ 50338 char **listEmptySF(void) { 50339 char **list = NULL; 50340 50341 list = MALLOC(1 * sizeof(char *)); 50342 if (list) { 50343 list[0] = NULL; 50344 } 50345 return(list); 50346 } 50347 50348 /** 50349 * list Empty String Function 50350 * 50351 * \return 50352 * empty list (you must free the pointer with listFreeS) 50353 * NULL error 50354 */ 50355 char **iListEmptySF(char ***list) { 50356 50357 // sanity checks 50358 if (!list) { 50359 return(NULL); 50360 } 50361 50362 if (*list) { 50363 listFreeS(*list); 50364 } 50365 50366 *list = MALLOC(1 * sizeof(char *)); 50367 if (*list) { 50368 (*list)[0] = NULL; 50369 } 50370 50371 return(*list); 50372 } 50373 50374 /** 50375 * list Is Empty String 50376 * 50377 * \param 50378 * list 50379 * \return 50380 * false when there are elements in the list 50381 * true when list is empty 50382 * true when list is NULL 50383 */ 50384 bool listIsEmptyS(char **list) { 50385 50386 // sanity checks 50387 if (!list || !*list) { 50388 return(true); 50389 } 50390 return(false); 50391 } 50392 50393 /** 50394 * list Is Empty String 50395 * 50396 * \param 50397 * list 50398 * \return 50399 * false when there are non blank elements in the list 50400 * true when all elements are blank 50401 * true when list is NULL 50402 */ 50403 bool listIsBlankS(char **list) { 50404 50405 // sanity checks 50406 if (!list || !*list) { 50407 return(true); 50408 } 50409 forEachCharP(list, e) { 50410 if (!isBlankS(*e)) { 50411 return(false); 50412 } 50413 } 50414 return(true); 50415 } 50416 50417 /** 50418 * list Create String Function 50419 * create a list from the list of parameters 50420 * used from the listCreateS(...) macro 50421 * 50422 * \param 50423 * list of strings seperated with commas 50424 * \return 50425 * list 50426 * NULL when first element if NULL 50427 */ 50428 char **listCreateSF(const char *paramType, ...) { 50429 va_list pl; 50430 char **l = NULL; 50431 50432 //Not needed if !paramType return NULL 50433 50434 // push arguments to a list 50435 va_start(pl, paramType); 50436 paramType = va_arg(pl, char *); 50437 while (paramType) { 50438 pErrorNULL(listPushS(&l, paramType)); 50439 paramType = va_arg(pl, char *); 50440 } 50441 va_end(pl); 50442 return(l); 50443 } 50444 50445 /** 50446 * list From Array String 50447 * 50448 * copy array of 'size' strings to a new list 50449 * NULL strings are not copied to the list 50450 * 50451 * \param 50452 * array of strings 50453 * \param 50454 * size - number of strings in the array 50455 * \return 50456 * list 50457 * empty list when size is 0 50458 * NULL when array is NULL 50459 */ 50460 char **listFromArrayS(char **array, size_t size) { 50461 char **r = NULL; 50462 50463 // sanity checks 50464 if (!array) { 50465 return(NULL); 50466 } 50467 if (!size) { 50468 listEmptyS(r); 50469 return(r); 50470 } 50471 50472 // TODO allocate array size r for z to avoid reallocs and remove listPushS 50473 // copy array content 50474 for (size_t i = 0 ; i < size ; i++) { 50475 if (array[i]) { 50476 // remove NULL strings 50477 pErrorNULL(listPushS(&r, array[i])); 50478 } 50479 } 50480 return(r); 50481 } 50482 50483 /** 50484 * list From Const Array String 50485 * 50486 * copy array of 'size' strings to a new list 50487 * NULL strings are not copied to the list 50488 * 50489 * \param 50490 * array of strings 50491 * \param 50492 * size - number of strings in the array 50493 * \return 50494 * list 50495 * empty list when size is 0 50496 * NULL when array is NULL 50497 */ 50498 char **listFromCArrayS(const char **array, size_t size) { 50499 char **r = NULL; 50500 50501 // sanity checks 50502 if (!array) { 50503 return(NULL); 50504 } 50505 if (!size) { 50506 listEmptyS(r); 50507 return(r); 50508 } 50509 50510 // copy array content 50511 for (size_t i = 0 ; i < size ; i++) { 50512 if (array[i]) { 50513 // remove NULL strings 50514 pErrorNULL(listPushS(&r, array[i])); 50515 } 50516 } 50517 return(r); 50518 } 50519 50520 /** 50521 * list Push String 50522 * append s at the end of the list 50523 * when list is NULL, a new list with one element is returned 50524 * when list and s are NULL return list with 2 NULL elements 50525 * when s is NULL, NULL is pushed at the end of the list 50526 * 50527 * the list is reallocated to add extra space 50528 * 50529 * \param 50530 * pointer to list - becomes NULL when realloc fails (this parameter is reallocated) 50531 * \param 50532 * s: string to push 50533 * \return 50534 * list success (you must free the pointer with listFreeS) 50535 * NULL error 50536 */ 50537 char **listPushS(char ***list, const char *s) { 50538 50539 // sanity checks 50540 if (!list || !s) { 50541 return(NULL); 50542 } 50543 50544 if (!*list) { 50545 *list = MALLOC(2 * sizeof(char *)); 50546 if (!*list) { 50547 return(NULL); 50548 } 50549 (*list)[0] = strdup(s); 50550 (*list)[1] = NULL; 50551 } 50552 else { 50553 // realloc list and copy s to last element 50554 size_t len; 50555 len = listLengthS(*list); 50556 char **tmp = REALLOC(*list, (len+2) * sizeof(char *)); 50557 if (!tmp) { 50558 return(NULL); 50559 } 50560 else { 50561 *list = tmp; 50562 (*list)[len+1] = NULL; 50563 (*list)[len] = strdup(s); 50564 } 50565 } 50566 return(*list); 50567 } 50568 50569 char **listPushCharS(char ***list, char c) { 50570 50571 charToS(s, c); 50572 return(listPushS(list, s)); 50573 } 50574 50575 /** 50576 * list Push String 50577 * append s pointer at the end of the list 50578 * when list is NULL, a new list with one element is returned 50579 * when list and s are NULL return list with 2 NULL elements 50580 * when s is NULL, NULL is pushed at the end of the list 50581 * 50582 * the list is reallocated to add extra space 50583 * 50584 * \param 50585 * pointer to list - becomes NULL when realloc fails (this parameter is reallocated) 50586 * \param 50587 * s: string to push 50588 * \return 50589 * list success 50590 * NULL error 50591 */ 50592 char **iListPushS(char ***list, char *s) { 50593 50594 // sanity checks 50595 if (!list || !s) { 50596 return(NULL); 50597 } 50598 50599 if (!*list) { 50600 *list = MALLOC(2 * sizeof(char *)); 50601 if (!*list) { 50602 return(NULL); 50603 } 50604 (*list)[0] = s; 50605 (*list)[1] = NULL; 50606 } 50607 else { 50608 // realloc list and copy s to last element 50609 size_t len; 50610 len = listLengthS(*list); 50611 char **tmp = REALLOC(*list, (len+2) * sizeof(char *)); 50612 if (!tmp) { 50613 return(NULL); 50614 } 50615 else { 50616 *list = tmp; 50617 (*list)[len+1] = NULL; 50618 (*list)[len] = s; 50619 } 50620 } 50621 return(*list); 50622 } 50623 50624 50625 /** 50626 * list Pop String 50627 * return last string from list and remove last element from the list 50628 * 50629 * \param 50630 * pointer to list 50631 * \return 50632 * duplicated last string (you must free the pointer) 50633 * NULL when the list is NULL or empty (first element is NULL) 50634 */ 50635 char *listPopS(char ***list) { 50636 char *s = NULL; 50637 size_t len; 50638 50639 // sanity checks 50640 if (!list) { 50641 return(NULL); 50642 } 50643 50644 if (!*list || !**list) { 50645 // empty list 50646 // no element in the list 50647 return(NULL); 50648 } 50649 // copy and free last non NULL element 50650 // the number of elements including NULL element remains the same 50651 len = listLengthS(*list); 50652 s = (*list)[len-1]; 50653 (*list)[len-1] = NULL; 50654 return(s); 50655 } 50656 50657 /** 50658 * list Prepend String 50659 * append s at the beginning of the list 50660 * when list is NULL, a new list with one element is returned 50661 * when list and s are NULL return list with 2 NULL elements 50662 * when s is NULL, the operation is canceled 50663 * 50664 * the list is reallocated to add extra space 50665 * 50666 * \param 50667 * pointer to list - becomes NULL when realloc fails (this parameter is reallocated) 50668 * \param 50669 * s: string to prepend 50670 * \return 50671 * list success (you must free the pointer with listFreeS) 50672 * NULL error 50673 */ 50674 char **listPrependS(char ***list, const char *s) { 50675 50676 // sanity checks 50677 if (!list || !s) { 50678 return(NULL); 50679 } 50680 50681 if (!*list) { 50682 *list = MALLOC(2 * sizeof(char *)); 50683 if (!*list) { 50684 return(NULL); 50685 } 50686 (*list)[0] = strdup(s); 50687 (*list)[1] = NULL; 50688 } 50689 else { 50690 // realloc list and copy s to first element 50691 size_t len; 50692 len = listLengthS(*list); 50693 char **tmp = REALLOC(*list, (len+2) * sizeof(char *)); 50694 if (!tmp) { 50695 return(NULL); 50696 } 50697 else { 50698 *list = tmp; 50699 (*list)[len+1] = NULL; 50700 // shift list 50701 for (size_t i = len; i > 0; i--) { 50702 (*list)[i] = (*list)[i-1]; 50703 } 50704 (*list)[0] = strdup(s); 50705 } 50706 } 50707 return(*list); 50708 } 50709 50710 char **listPrependCharS(char ***list, char c) { 50711 50712 charToS(s, c); 50713 return(listPrependS(list, s)); 50714 } 50715 50716 /** 50717 * list Prepend String 50718 * append s pointer at the beginning of the list 50719 * when list is NULL, a new list with one element is returned 50720 * when list and s are NULL return list with 2 NULL elements 50721 * when s is NULL, the operation is canceled 50722 * 50723 * the list is reallocated to add extra space 50724 * 50725 * \param 50726 * pointer to list - becomes NULL when realloc fails (this parameter is reallocated) 50727 * \param 50728 * s: string to prepend 50729 * \return 50730 * list success 50731 * NULL error 50732 */ 50733 char **iListPrependS(char ***list, char *s) { 50734 50735 // sanity checks 50736 if (!list || !s) { 50737 return(NULL); 50738 } 50739 50740 if (!*list) { 50741 *list = MALLOC(2 * sizeof(char *)); 50742 if (!*list) { 50743 return(NULL); 50744 } 50745 (*list)[0] = s; 50746 (*list)[1] = NULL; 50747 } 50748 else { 50749 // realloc list and copy s to first element 50750 size_t len; 50751 len = listLengthS(*list); 50752 char **tmp = REALLOC(*list, (len+2) * sizeof(char *)); 50753 if (!tmp) { 50754 return(NULL); 50755 } 50756 else { 50757 *list = tmp; 50758 (*list)[len+1] = NULL; 50759 // shift list 50760 for (size_t i = len; i > 0; i--) { 50761 (*list)[i] = (*list)[i-1]; 50762 } 50763 (*list)[0] = s; 50764 } 50765 } 50766 return(*list); 50767 } 50768 50769 /** 50770 * list Dequeue String 50771 * return first string from list and remove it from the list 50772 * 50773 * \param 50774 * pointer to list 50775 * \return 50776 * first string (you must free the pointer) 50777 * NULL when the list is NULL or empty (first element is NULL) 50778 */ 50779 char *listDequeueS(char ***list) { 50780 char *s = NULL; 50781 size_t len; 50782 50783 // sanity checks 50784 if (!list) { 50785 return(NULL); 50786 } 50787 50788 if (!*list || !**list) { 50789 // empty list 50790 // no element in the list 50791 return(NULL); 50792 } 50793 // copy and free last non NULL element 50794 // the number of elements including NULL element remains the same 50795 len = listLengthS(*list); 50796 s = (*list)[0]; 50797 // shift list 50798 for (size_t i = 1; i < len; i++) { 50799 (*list)[i-1] = (*list)[i]; 50800 } 50801 (*list)[len-1] = NULL; 50802 return(s); 50803 } 50804 50805 /** 50806 * list Free String 50807 * 50808 * \param 50809 * list 50810 * \return 50811 * nothing 50812 */ 50813 void listFreeS(char **list) { 50814 50815 // sanity checks 50816 if (list) { 50817 forEachCharP(list, e) { 50818 free(*e); 50819 } 50820 free(list); 50821 } 50822 } 50823 50824 /** 50825 * list free many String 50826 * 50827 * free variable list of pointers 50828 * listFreeManyS(l1, l2, ...); 50829 */ 50830 void listFreeManySF(char **paramType, ...) { 50831 va_list pl; 50832 50833 // add arguments to a list 50834 va_start(pl, paramType); 50835 paramType = va_arg(pl, char **); 50836 while (paramType) { 50837 listFreeS(paramType); 50838 paramType = va_arg(pl, char **); 50839 } 50840 va_end(pl); 50841 } 50842 50843 /** 50844 * list Length String 50845 * return number of elements until the first NULL element 50846 * 50847 * \param 50848 * list 50849 * \return 50850 * number of element until first NULL element 50851 * 0 when list is NULL 50852 */ 50853 size_t listLengthS(char **list) { 50854 size_t r = 0;; 50855 50856 // sanity checks 50857 if (!list) { 50858 return(0); 50859 } 50860 forEachCharP(list, i) { 50861 r++; 50862 } 50863 return(r); 50864 } 50865 50866 /** 50867 * const list Length String 50868 * return number of elements until the first NULL element 50869 * 50870 * \param 50871 * list 50872 * \return 50873 * number of element until first NULL element 50874 * 0 when list is NULL 50875 */ 50876 size_t listLengthCS(const char **list) { 50877 size_t r = 0;; 50878 50879 // sanity checks 50880 if (!list) { 50881 return(0); 50882 } 50883 forEachCCharP(list, i) { 50884 r++; 50885 } 50886 return(r); 50887 } 50888 50889 /** 50890 * list String Length String 50891 * 50892 * \param 50893 * list 50894 * \return 50895 * list length as a single string 50896 * -1 when list is NULL 50897 */ 50898 ssize_t listStrLengthS(char **list) { 50899 ssize_t r = 0;; 50900 50901 // sanity checks 50902 if (!list) { 50903 return(-1); 50904 } 50905 50906 forEachS(list, i) { 50907 r += (ssize_t)strlen(i); 50908 } 50909 50910 return(r); 50911 } 50912 50913 /** 50914 * list int to index String 50915 * index can be negative 50916 * 50917 * \param 50918 * list 50919 * \param 50920 * index: index in list, must be inside the list 50921 * \return 50922 * positive index 50923 * -1 when list is NULL or index is not set correctly 50924 */ 50925 ssize_t listIntIndexS(char **list, int64_t index) { 50926 ssize_t r; 50927 int64_t len; 50928 50929 // sanity checks 50930 if (!list) { 50931 return(-1); 50932 } 50933 50934 len = (int64_t)listLengthS(list); 50935 if (index >= len) { 50936 return(-1); 50937 } 50938 if (index < -len) { 50939 return(-1); 50940 } 50941 if (index < 0) { 50942 r = len + index; 50943 } 50944 else { 50945 r = index; 50946 } 50947 return(r); 50948 } 50949 50950 /** 50951 * list address String 50952 * index can be negative 50953 * 50954 * \param 50955 * list 50956 * \param 50957 * index: index in list, must be inside the list 50958 * \return 50959 * pointer to char* at index 50960 * NULL when list is NULL or index is not set correctly 50961 */ 50962 char **listAddrS(char **list, int64_t index) { 50963 size_t r; 50964 int64_t len; 50965 50966 // sanity checks 50967 if (!list) { 50968 return(NULL); 50969 } 50970 50971 len = (int64_t)listLengthS(list); 50972 if (index >= len) { 50973 return(NULL); 50974 } 50975 if (index < -len) { 50976 return(NULL); 50977 } 50978 if (index < 0) { 50979 r = (size_t)(len + index); 50980 } 50981 else { 50982 r = (size_t)(index); 50983 } 50984 return((list+r)); 50985 } 50986 50987 /** 50988 * list Get String 50989 * duplicate string at given index 50990 * index can be negative 50991 * 50992 * \param 50993 * list 50994 * \param 50995 * index: index in list, must be inside the list 50996 * \return 50997 * duplicated string (you must free the pointer) 50998 * NULL when list is NULL or index is not set correctly 50999 */ 51000 char *listGetS(char **list, int64_t index) { 51001 int64_t len; 51002 51003 // sanity checks 51004 if (!list) { 51005 return(NULL); 51006 } 51007 51008 len = (int64_t)listLengthS(list); 51009 if (index >= len) { 51010 return(NULL); 51011 } 51012 if (index < -len) { 51013 return(NULL); 51014 } 51015 if (index < 0) { 51016 index = len + index; 51017 } 51018 51019 return(strdup(list[index])); 51020 } 51021 51022 /** 51023 * list Get String 51024 * index can be negative 51025 * 51026 * \param 51027 * list 51028 * \param 51029 * index: index in list, must be inside the list 51030 * \return 51031 * string 51032 * NULL when list is NULL or index is not set correctly 51033 */ 51034 char *iListGetS(char **list, int64_t index) { 51035 int64_t len; 51036 51037 // sanity checks 51038 if (!list) { 51039 return(NULL); 51040 } 51041 51042 len = (int64_t)listLengthS(list); 51043 if (index >= len) { 51044 return(NULL); 51045 } 51046 if (index < -len) { 51047 return(NULL); 51048 } 51049 if (index < 0) { 51050 index = len + index; 51051 } 51052 51053 return(list[index]); 51054 } 51055 51056 /** 51057 * const list Get String 51058 * duplicate string at given index 51059 * index can be negative 51060 * 51061 * \param 51062 * list 51063 * \param 51064 * index: index in list, must be inside the list 51065 * \return 51066 * duplicated string (you must free the pointer) 51067 * NULL when list is NULL or index is not set correctly 51068 */ 51069 char *listGetCS(const char **list, int64_t index) { 51070 int64_t len; 51071 51072 // sanity checks 51073 if (!list) { 51074 return(NULL); 51075 } 51076 51077 len = (int64_t)listLengthCS(list); 51078 if (index >= len) { 51079 return(NULL); 51080 } 51081 if (index < -len) { 51082 return(NULL); 51083 } 51084 if (index < 0) { 51085 index = len + index; 51086 } 51087 51088 return(strdup(list[index])); 51089 } 51090 51091 /** 51092 * const list Get String 51093 * index can be negative 51094 * 51095 * \param 51096 * list 51097 * \param 51098 * index: index in list, must be inside the list 51099 * \return 51100 * string 51101 * NULL when list is NULL or index is not set correctly 51102 */ 51103 const char *iListGetCS(const char **list, int64_t index) { 51104 int64_t len; 51105 51106 // sanity checks 51107 if (!list) { 51108 return(NULL); 51109 } 51110 51111 len = (int64_t)listLengthCS(list); 51112 if (index >= len) { 51113 return(NULL); 51114 } 51115 if (index < -len) { 51116 return(NULL); 51117 } 51118 if (index < 0) { 51119 index = len + index; 51120 } 51121 51122 return(list[index]); 51123 } 51124 51125 /** 51126 * list Set String 51127 * duplicate string and store at given index, the existing element is freed 51128 * index can be negative 51129 * 51130 * \param 51131 * list 51132 * \param 51133 * index: index in list, must be inside the list 51134 * \param 51135 * string 51136 * \return 51137 * list success (you must free the pointer with listFreeS) 51138 * NULL error 51139 * 51140 * Does nothing when: 51141 * when list is NULL, index is not set correctly or s is NULL 51142 */ 51143 char **listSetS(char **list, int64_t index, const char *s) { 51144 int64_t len; 51145 51146 // sanity checks 51147 if (!list || !s) { 51148 return(NULL); 51149 } 51150 51151 len = (int64_t)listLengthS(list); 51152 if (index >= len) { 51153 return(NULL); 51154 } 51155 if (index < -len) { 51156 return(NULL); 51157 } 51158 if (index < 0) { 51159 index = len + index; 51160 } 51161 51162 free(list[index]); 51163 list[index] = strdup(s); 51164 return(list); 51165 } 51166 51167 char **listSetCharS(char **list, int64_t index, char c) { 51168 51169 charToS(s, c); 51170 return(listSetS(list, index, s)); 51171 } 51172 51173 /** 51174 * list Set String 51175 * store string at given index 51176 * index can be negative 51177 * 51178 * \param 51179 * list 51180 * \param 51181 * index: index in list, must be inside the list 51182 * \param 51183 * string 51184 * \return 51185 * list success 51186 * NULL error 51187 * 51188 * Does nothing when: 51189 * when list is NULL, index is not set correctly or s is NULL 51190 */ 51191 char **iListSetS(char **list, int64_t index, char *s) { 51192 int64_t len; 51193 51194 // sanity checks 51195 if (!list || !s) { 51196 return(NULL); 51197 } 51198 51199 len = (int64_t)listLengthS(list); 51200 if (index >= len) { 51201 return(NULL); 51202 } 51203 if (index < -len) { 51204 return(NULL); 51205 } 51206 if (index < 0) { 51207 index = len + index; 51208 } 51209 51210 free(list[index]); 51211 list[index] = s; 51212 return(list); 51213 } 51214 51215 /** 51216 * swap elements in list 51217 * 51218 * \param 51219 * list 51220 * \param 51221 * index1 index of character to swap 51222 * \param 51223 * index2 index of second character to swap 51224 * \return 51225 * new list with elements swapped at index1 and index2 (you must free this pointer) 51226 * NULL when list is NULL or when index1 or index2 are outside the list 51227 */ 51228 char **listSwapS(char **list, int64_t index1, int64_t index2) { 51229 int64_t len; 51230 51231 if (!list) { 51232 return(NULL); 51233 } 51234 51235 len = (int64_t)listLengthS(list); 51236 if (index1 >= len) { 51237 return(NULL); 51238 } 51239 if (index1 < -len) { 51240 return(NULL); 51241 } 51242 if (index1 < 0) { 51243 index1 = len + index1; 51244 } 51245 51246 if (index2 >= len) { 51247 return(NULL); 51248 } 51249 if (index2 < -len) { 51250 return(NULL); 51251 } 51252 if (index2 < 0) { 51253 index2 = len + index2; 51254 } 51255 51256 char **r = listDupS(list); 51257 51258 char *tmp = r[index1]; 51259 r[index1] = r[index2]; 51260 r[index2] = tmp;; 51261 51262 return(r); 51263 } 51264 51265 /** 51266 * swap elements in list 51267 * 51268 * \param 51269 * list 51270 * \param 51271 * index1 index of character to swap 51272 * \param 51273 * index2 index of second character to swap 51274 * \return 51275 * updated list with characters swapped at index1 and index2 (you must free this pointer) 51276 * NULL when list is NULL or when index1 or index2 are outside the list 51277 */ 51278 char **iListSwapS(char **list, int64_t index1, int64_t index2) { 51279 int64_t len; 51280 51281 if (!list) { 51282 return(NULL); 51283 } 51284 51285 len = (int64_t)listLengthS(list); 51286 if (index1 >= len) { 51287 return(NULL); 51288 } 51289 if (index1 < -len) { 51290 return(NULL); 51291 } 51292 if (index1 < 0) { 51293 index1 = len + index1; 51294 } 51295 51296 if (index2 >= len) { 51297 return(NULL); 51298 } 51299 if (index2 < -len) { 51300 return(NULL); 51301 } 51302 if (index2 < 0) { 51303 index2 = len + index2; 51304 } 51305 51306 char *tmp = list[index1]; 51307 list[index1] = list[index2]; 51308 list[index2] = tmp;; 51309 51310 return(list); 51311 } 51312 51313 51314 /** 51315 * split string with delim string 51316 * when updating this function, also update splitS (identical to split) 51317 * return list 51318 * 51319 * \param 51320 * string to split 51321 * \param 51322 * delim delimiter 51323 * \return 51324 * list of tokens (you must free the pointer with listFreeS) 51325 * NULL when list or delim are NULL 51326 */ 51327 char **split(const char *string, const char* delim) { 51328 char *startString = NULL; 51329 char *workingString = NULL; 51330 char *line = NULL; 51331 char *token = NULL; 51332 char **r = NULL; 51333 51334 // sanity checks 51335 if (!string || !delim) { 51336 return(NULL); 51337 } 51338 51339 if (!*delim || !*string) { 51340 // empty delimiter empty string, return string in a list 51341 pErrorNULL(listPushS(&r, string)); 51342 return(r); 51343 } 51344 51345 // split using strtok_r 51346 startString = strdup(string); 51347 workingString = startString; 51348 line = workingString; 51349 while (strlen(workingString) != 0) { 51350 token = tokS(line, delim, &workingString); 51351 pErrorNULL(listPushS(&r, token)); 51352 // mac os sets workingString to NULL at the end 51353 if (!workingString) { 51354 break; //LCOV_EXCL_LINE 51355 } 51356 // first parameter should be NULL in next strtok_r calls 51357 line = NULL; 51358 } 51359 free(startString); 51360 51361 // check if delim is at the end of string 51362 // if yes, add an empty string in the result 51363 // ["one",""] = split "one/" "/" 51364 size_t len = strlen(string); 51365 size_t lenD = strlen(delim); 51366 if (strEq(string+(len-lenD), delim)) { 51367 pErrorNULL(listPushS(&r, "")); 51368 } 51369 51370 return(r); 51371 } 51372 51373 // splitS is identical to split 51374 // to make the interface uniform 51375 char **splitS(const char *string, const char* delim) { 51376 char *startString = NULL; 51377 char *workingString = NULL; 51378 char *line = NULL; 51379 char *token = NULL; 51380 char **r = NULL; 51381 51382 // sanity checks 51383 if (!string || !delim) { 51384 return(NULL); 51385 } 51386 51387 if (!*delim || !*string) { 51388 // empty delimiter empty string, return string in a list 51389 pErrorNULL(listPushS(&r, string)); 51390 return(r); 51391 } 51392 51393 // split using strtok_r 51394 startString = strdup(string); 51395 workingString = startString; 51396 line = workingString; 51397 while (strlen(workingString) != 0) { 51398 token = tokS(line, delim, &workingString); 51399 pErrorNULL(listPushS(&r, token)); 51400 // mac os sets workingString to NULL at the end 51401 if (!workingString) { 51402 break; //LCOV_EXCL_LINE 51403 } 51404 // first parameter should be NULL in next strtok_r calls 51405 line = NULL; 51406 } 51407 free(startString); 51408 51409 // check if delim is at the end of string 51410 // if yes, add an empty string in the result 51411 // ["one",""] = split "one/" "/" 51412 size_t len = strlen(string); 51413 size_t lenD = strlen(delim); 51414 if (strEq(string+(len-lenD), delim)) { 51415 pErrorNULL(listPushS(&r, "")); 51416 } 51417 51418 return(r); 51419 } 51420 51421 char **splitChar(const char *string, char delim) { 51422 51423 charToS(s, delim); 51424 return(split(string, s)); 51425 } 51426 51427 /** 51428 * ignore case split string with delim string 51429 * when updating this function, also update icSplitS (identical to icSplit) 51430 * return list 51431 * 51432 * \param 51433 * string to split 51434 * \param 51435 * delim delimiter 51436 * \return 51437 * list of tokens (you must free the pointer with listFreeS) 51438 * NULL when list or delim are NULL 51439 */ 51440 char **icSplit(const char *string, const char* delim) { 51441 char *startString = NULL; 51442 char *workingString = NULL; 51443 char *line = NULL; 51444 char *token = NULL; 51445 char **r = NULL; 51446 51447 // sanity checks 51448 if (!string || !delim) { 51449 return(NULL); 51450 } 51451 51452 if (!*delim || !*string) { 51453 // empty delimiter empty string, return string in a list 51454 pErrorNULL(listPushS(&r, string)); 51455 return(r); 51456 } 51457 51458 // split using strtok_r 51459 startString = strdup(string); 51460 workingString = startString; 51461 line = workingString; 51462 while (strlen(workingString) != 0) { 51463 token = icTokS(line, delim, &workingString); 51464 pErrorNULL(listPushS(&r, token)); 51465 // mac os sets workingString to NULL at the end 51466 if (!workingString) { 51467 break; //LCOV_EXCL_LINE 51468 } 51469 // first parameter should be NULL in next strtok_r calls 51470 line = NULL; 51471 } 51472 free(startString); 51473 51474 // check if delim is at the end of string 51475 // if yes, add an empty string in the result 51476 // ["one",""] = split "one/" "/" 51477 size_t len = strlen(string); 51478 size_t lenD = strlen(delim); 51479 if (icEqS(string+(len-lenD), delim)) { 51480 pErrorNULL(listPushS(&r, "")); 51481 } 51482 51483 return(r); 51484 } 51485 51486 // icSplitS is identical to icSplit 51487 // to make the interface uniform 51488 char **icSplitS(const char *string, const char* delim) { 51489 char *startString = NULL; 51490 char *workingString = NULL; 51491 char *line = NULL; 51492 char *token = NULL; 51493 char **r = NULL; 51494 51495 // sanity checks 51496 if (!string || !delim) { 51497 return(NULL); 51498 } 51499 51500 if (!*delim || !*string) { 51501 // empty delimiter empty string, return string in a list 51502 pErrorNULL(listPushS(&r, string)); 51503 return(r); 51504 } 51505 51506 // split using strtok_r 51507 startString = strdup(string); 51508 workingString = startString; 51509 line = workingString; 51510 while (strlen(workingString) != 0) { 51511 token = icTokS(line, delim, &workingString); 51512 pErrorNULL(listPushS(&r, token)); 51513 // mac os sets workingString to NULL at the end 51514 if (!workingString) { 51515 break; //LCOV_EXCL_LINE 51516 } 51517 // first parameter should be NULL in next strtok_r calls 51518 line = NULL; 51519 } 51520 free(startString); 51521 51522 // check if delim is at the end of string 51523 // if yes, add an empty string in the result 51524 // ["one",""] = split "one/" "/" 51525 size_t len = strlen(string); 51526 size_t lenD = strlen(delim); 51527 if (icEqS(string+(len-lenD), delim)) { 51528 pErrorNULL(listPushS(&r, "")); 51529 } 51530 51531 return(r); 51532 } 51533 51534 char **icSplitChar(const char *string, char delim) { 51535 51536 charToS(s, delim); 51537 return(icSplit(string, s)); 51538 } 51539 51540 /** 51541 * join Length 51542 * list length after joined with delimiter 51543 * 51544 * \param 51545 * list 51546 * \param 51547 * delim: string seperator 51548 * \return 51549 * list length as a single string 51550 * -1 when list is NULL 51551 */ 51552 ssize_t joinLength(char **list, const char* delim) { 51553 ssize_t r = 0;; 51554 51555 // sanity checks 51556 if (!list || !delim) { 51557 return(-1); 51558 } 51559 51560 size_t delimLen = strlen(delim); 51561 bool isFirstElem = true; 51562 forEachS(list, i) { 51563 if (isFirstElem) { 51564 r += (ssize_t)strlen(i); 51565 isFirstElem = no; 51566 } 51567 else { 51568 r += (ssize_t)(strlen(i) + delimLen); 51569 } 51570 } 51571 51572 return(r); 51573 } 51574 51575 /** 51576 * join list, the elements are seperated with delim in the resulting string 51577 * when updating this function, also update joinS (identical to join) 51578 * 51579 * \param 51580 * list 51581 * \param 51582 * delim: string seperator 51583 * \return 51584 * joined string (you must free the pointer) 51585 * NULL when list or delim are NULL 51586 */ 51587 char *join(char **list, const char* delim) { 51588 char *r = NULL; 51589 51590 // sanity checks 51591 if (!list || !delim) { 51592 return(NULL); 51593 } 51594 51595 forEachCharP(list, e) { 51596 if (!r) { 51597 r = strdup(*e); 51598 } 51599 else { 51600 char *tmp; 51601 tmp = REALLOC(r, strlen(r) + strlen(delim) + 1); 51602 if (!tmp) { 51603 free(r); 51604 return(NULL);//LCOV_EXCL_LINE 51605 } 51606 r = tmp; 51607 strcat(r, delim); 51608 tmp = REALLOC(r, strlen(r) + strlen(*e) + 1); 51609 if (!tmp) { 51610 free(r); 51611 return(NULL);//LCOV_EXCL_LINE 51612 } 51613 r = tmp; 51614 strcat(r, *e); 51615 } 51616 } 51617 return(r); 51618 } 51619 51620 // joinS is identical to join 51621 // to make the interface uniform 51622 char *joinS(char **list, const char* delim) { 51623 char *r = NULL; 51624 51625 // sanity checks 51626 if (!list || !delim) { 51627 return(NULL); 51628 } 51629 51630 forEachCharP(list, e) { 51631 if (!r) { 51632 r = strdup(*e); 51633 } 51634 else { 51635 char *tmp; 51636 tmp = REALLOC(r, strlen(r) + strlen(delim) + 1); 51637 if (!tmp) { 51638 free(r); 51639 return(NULL);//LCOV_EXCL_LINE 51640 } 51641 r = tmp; 51642 strcat(r, delim); 51643 tmp = REALLOC(r, strlen(r) + strlen(*e) + 1); 51644 if (!tmp) { 51645 free(r); 51646 return(NULL);//LCOV_EXCL_LINE 51647 } 51648 r = tmp; 51649 strcat(r, *e); 51650 } 51651 } 51652 return(r); 51653 } 51654 51655 /** 51656 * join list, the elements are seperated with delim in the resulting string 51657 * 51658 * \param 51659 * list 51660 * \param 51661 * delim: string seperator 51662 * \return 51663 * joined string (you must free the pointer) 51664 * NULL when list or delim are NULL 51665 */ 51666 char *joinCS(const char **list, const char* delim) { 51667 char *r = NULL; 51668 51669 // sanity checks 51670 if (!list || !delim) { 51671 return(NULL); 51672 } 51673 51674 forEachCCharP(list, e) { 51675 if (!r) { 51676 r = strdup(*e); 51677 } 51678 else { 51679 char *tmp; 51680 tmp = REALLOC(r, strlen(r) + strlen(delim) + 1); 51681 if (!tmp) { 51682 free(r); 51683 return(NULL);//LCOV_EXCL_LINE 51684 } 51685 r = tmp; 51686 strcat(r, delim); 51687 tmp = REALLOC(r, strlen(r) + strlen(*e) + 1); 51688 if (!tmp) { 51689 free(r); 51690 return(NULL);//LCOV_EXCL_LINE 51691 } 51692 r = tmp; 51693 strcat(r, *e); 51694 } 51695 } 51696 return(r); 51697 } 51698 51699 char *joinChar(char **list, char delim) { 51700 51701 charToS(s, delim); 51702 return(join(list, s)); 51703 } 51704 51705 /** 51706 * buffer join list, the elements are seperated with delim in the resulting string 51707 * 51708 * \param 51709 * list 51710 * \param 51711 * delim: string seperator 51712 * \return 51713 * joined string 51714 * NULL when list or delim are NULL 51715 */ 51716 char *bJoin(char *string, char **list, const char* delim) { 51717 51718 // sanity checks 51719 if (!list || !delim || !string || !*list) { 51720 return(NULL); 51721 } 51722 51723 bEmptyS(string); 51724 51725 enumerateCharP(list, e, i) { 51726 if (!i) { 51727 strcpy(string, *e); 51728 } 51729 else { 51730 pErrorNULL(bAppendManyS(string, delim, *e)); 51731 } 51732 } 51733 return(string); 51734 } 51735 51736 char *bJoinChar(char *string, char **list, char delim) { 51737 51738 charToS(s, delim); 51739 return(bJoin(string, list, s)); 51740 } 51741 51742 /** 51743 * buffer size join list, the elements are seperated with delim in the resulting string 51744 * 51745 * \param 51746 * list 51747 * \param 51748 * delim: string seperator 51749 * \return 51750 * joined string 51751 * NULL when list or delim are NULL 51752 */ 51753 char *bLJoin(char *string, size_t stringSize, char **list, const char* delim) { 51754 51755 // sanity checks 51756 if (!list || !delim || !string || !*list) { 51757 return(NULL); 51758 } 51759 51760 if (!stringSize) { 51761 // size 0 - no change 51762 return(string); 51763 } 51764 51765 bEmptyS(string); 51766 51767 enumerateCharP(list, e, i) { 51768 if (!i) { 51769 pErrorNULL(strLCpy(string, stringSize, *e)); 51770 } 51771 else { 51772 pErrorNULL(bLAppendManyS(string, stringSize, delim, *e)); 51773 } 51774 } 51775 return(string); 51776 } 51777 51778 char *bLJoinChar(char *string, size_t stringSize, char **list, char delim) { 51779 51780 charToS(s, delim); 51781 return(bLJoin(string, stringSize, list, s)); 51782 } 51783 51784 /** 51785 * extract string between delim1 and delim2 strings 51786 * return list 51787 * 51788 * \param 51789 * string to split 51790 * \param 51791 * delim1 first delimiter 51792 * \param 51793 * delim2 second delimiter, has to be different from delim1 51794 * \return 51795 * list of tokens (you must free the pointer with listFreeS) 51796 * NULL when list or delim are NULL 51797 */ 51798 char **extractS(const char *string, const char* delim1, const char* delim2) { 51799 char **tmp = NULL; 51800 char **r = NULL; 51801 51802 // sanity checks 51803 if (!string || !delim1 || !delim2) { 51804 return(NULL); 51805 } 51806 51807 if (strEq(delim1, delim2)) { 51808 return(NULL); 51809 } 51810 51811 tmp = split(string, delim1);; 51812 51813 if (!tmp) { 51814 return(NULL); 51815 } 51816 51817 if (listLengthS(tmp) < 2) { 51818 // delim1 not found 51819 listFreeS(tmp); 51820 return(NULL); 51821 } 51822 51823 // remove first element 51824 pErrorNULL(iListSliceS(&tmp, 1, 0)); 51825 51826 forEachCharP(tmp, e) { 51827 char **tmp2 = split(*e, delim2); 51828 if (listLengthS(tmp2) > 1) { 51829 pErrorNULL(listPushS(&r, tmp2[0])); 51830 } 51831 listFreeS(tmp2); 51832 } 51833 51834 listFreeS(tmp); 51835 return(r); 51836 } 51837 51838 char **extractCharSS(const char *string, char delim1, const char* delim2) { 51839 51840 charToS(d1, delim1); 51841 return(extractS(string, d1, delim2)); 51842 } 51843 51844 char **extractSCharS(const char *string, const char* delim1, char delim2) { 51845 51846 charToS(d2, delim2); 51847 return(extractS(string, delim1, d2)); 51848 } 51849 51850 char **extractCharCharS(const char *string, char delim1, char delim2) { 51851 51852 charToS(d1, delim1); 51853 charToS(d2, delim2); 51854 return(extractS(string, d1, d2)); 51855 } 51856 51857 /** 51858 * ignore case extract string between delim1 and delim2 strings 51859 * return list 51860 * 51861 * \param 51862 * string to split 51863 * \param 51864 * delim1 first delimiter 51865 * \param 51866 * delim2 second delimiter, has to different from delim1 51867 * \return 51868 * list of tokens (you must free the pointer with listFreeS) 51869 * NULL when list or delim are NULL 51870 */ 51871 char **icExtractS(const char *string, const char* delim1, const char* delim2) { 51872 char **tmp = NULL; 51873 char **r = NULL; 51874 51875 // sanity checks 51876 if (!string || !delim1 || !delim2) { 51877 return(NULL); 51878 } 51879 51880 if (strEq(delim1, delim2)) { 51881 return(NULL); 51882 } 51883 51884 tmp = icSplit(string, delim1);; 51885 51886 if (!tmp) { 51887 return(NULL); 51888 } 51889 51890 if (listLengthS(tmp) < 2) { 51891 // delim1 not found 51892 listFreeS(tmp); 51893 return(NULL); 51894 } 51895 51896 // remove first element 51897 pErrorNULL(iListSliceS(&tmp, 1, 0)); 51898 51899 forEachCharP(tmp, e) { 51900 char **tmp2 = icSplit(*e, delim2); 51901 if (listLengthS(tmp2) > 1) { 51902 pErrorNULL(listPushS(&r, tmp2[0])); 51903 } 51904 listFreeS(tmp2); 51905 } 51906 51907 listFreeS(tmp); 51908 return(r); 51909 } 51910 51911 char **icExtractCharSS(const char *string, char delim1, const char* delim2) { 51912 51913 charToS(d1, delim1); 51914 return(icExtractS(string, d1, delim2)); 51915 } 51916 51917 char **icExtractSCharS(const char *string, const char* delim1, char delim2) { 51918 51919 charToS(d2, delim2); 51920 return(icExtractS(string, delim1, d2)); 51921 } 51922 51923 char **icExtractCharCharS(const char *string, char delim1, char delim2) { 51924 51925 charToS(d1, delim1); 51926 charToS(d2, delim2); 51927 return(icExtractS(string, d1, d2)); 51928 } 51929 51930 /** 51931 * list Duplicate String 51932 * 51933 * \param 51934 * list 51935 * \return 51936 * duplicated list (you must free the pointer with listFreeS) 51937 * NULL when list is NULL 51938 */ 51939 char **listDupS(char **list) { 51940 char **l = NULL; 51941 size_t len; 51942 51943 // sanity checks 51944 if (!list) { 51945 return(NULL); 51946 } 51947 51948 len = listLengthS(list); 51949 l = MALLOC((len+1) * sizeof(char *)); 51950 if (!l) { 51951 return(NULL);//LCOV_EXCL_LINE 51952 } 51953 51954 // last element is NULL 51955 l[len] = NULL; 51956 51957 // copy each element 51958 enumerateCharP(list, e, i) { 51959 l[i] = strdup(*e); 51960 } 51961 return(l); 51962 } 51963 51964 /** 51965 * const list Duplicate String 51966 * 51967 * \param 51968 * list 51969 * \return 51970 * duplicated list (you must free the pointer with listFreeS) 51971 * NULL when list is NULL 51972 */ 51973 char **listDupCS(const char **list) { 51974 char **l = NULL; 51975 size_t len; 51976 51977 // sanity checks 51978 if (!list) { 51979 return(NULL); 51980 } 51981 51982 len = listLengthCS(list); 51983 l = MALLOC((len+1) * sizeof(char *)); 51984 if (!l) { 51985 return(NULL);//LCOV_EXCL_LINE 51986 } 51987 51988 // last element is NULL 51989 l[len] = NULL; 51990 51991 // copy each element 51992 enumerateCCharP(list, e, i) { 51993 l[i] = strdup(*e); 51994 } 51995 return(l); 51996 } 51997 51998 /** 51999 * list Duplicate String 52000 * 52001 * copy pointers to new list 52002 * After this function, free list with free instead of listFreeS 52003 * 52004 * Note: this function creates a new list, so char *** is not needed. 52005 * Unlike iList functions. 52006 * 52007 * \param 52008 * list 52009 * \return 52010 * new list pointing to the same string as list (you should free the pointer with free) 52011 * NULL when list is NULL 52012 */ 52013 char **iListDupS(char **list) { 52014 char **l = NULL; 52015 size_t len; 52016 52017 // sanity checks 52018 if (!list) { 52019 return(NULL); 52020 } 52021 52022 len = listLengthS(list); 52023 l = MALLOC((len+1) * sizeof(char *)); 52024 if (!l) { 52025 return(NULL);//LCOV_EXCL_LINE 52026 } 52027 52028 // last element is NULL 52029 l[len] = NULL; 52030 52031 // copy each element 52032 enumerateCharP(list, e, i) { 52033 l[i] = *e; 52034 } 52035 return(l); 52036 } 52037 52038 /** 52039 * list Reverse String 52040 * duplicate and reverse list, the last element is the first element of the new list 52041 * 52042 * \param 52043 * list 52044 * \return 52045 * reversed list (you must free the pointer with listFreeS) 52046 * NULL when list is NULL 52047 */ 52048 char **listReverseS(char **list) { 52049 char **l = NULL; 52050 size_t len; 52051 52052 // sanity checks 52053 if (!list) { 52054 return(NULL); 52055 } 52056 52057 len = listLengthS(list); 52058 l = MALLOC((len+1) * sizeof(char *)); 52059 if (!l) { 52060 return(NULL);//LCOV_EXCL_LINE 52061 } 52062 52063 // last element is NULL 52064 l[len] = NULL; 52065 52066 // copy each element in reverse order 52067 enumerateCharP(list, e, i) { 52068 l[len-1-i] = strdup(*e); 52069 } 52070 return(l); 52071 } 52072 52073 /** 52074 * list Reverse String 52075 * reverse list, the last element is the first element of the list 52076 * 52077 * \param 52078 * list (this parameter is reallocated) 52079 * \return 52080 * reversed list (you must free the pointer with listFreeS or free) 52081 * nothing when list is NULL 52082 * NULL error 52083 */ 52084 char **iListReverseS(char ***list) { 52085 char **l = NULL; 52086 size_t len; 52087 52088 // sanity checks 52089 if (!list || !*list) { 52090 return(NULL); 52091 } 52092 52093 len = listLengthS(*list); 52094 l = MALLOC((len+1) * sizeof(char *)); 52095 if (!l) { 52096 return(NULL); 52097 } 52098 52099 // last element is NULL 52100 l[len] = NULL; 52101 52102 // copy each element in reverse order 52103 enumerateCharP(*list, e, i) { 52104 l[len-1-i] = *e; 52105 } 52106 52107 free(*list); 52108 *list = l; 52109 return(l); 52110 } 52111 52112 /** 52113 * list Cat String 52114 * \param 52115 * arbitrary list of lists seperated by commas 52116 * \return 52117 * new list with input lists concatenated (you must free the pointer with listFreeS) 52118 */ 52119 char **listCatSF(char **paramType, ...) { 52120 va_list pl; 52121 char **r = NULL; 52122 52123 // add arguments to a list 52124 va_start(pl, paramType); 52125 paramType = va_arg(pl, char **); 52126 while (paramType) { 52127 pErrorNULL(listAppendS(&r, paramType)); 52128 paramType = va_arg(pl, char **); 52129 } 52130 va_end(pl); 52131 return(r); 52132 } 52133 52134 /** 52135 * list Append String 52136 * Append list2 at the end of list1 52137 * 52138 * list1 is reallocated to add extra space 52139 * 52140 * \param 52141 * list1 (this parameter is reallocated) 52142 * \param 52143 * list2 52144 * \return 52145 * list1 and list2 (you must free the pointer with listFreeS) 52146 * list1 not modified when list1 and list2 are NULL 52147 * NULL error 52148 */ 52149 char **listAppendS(char ***list1, char **list2) { 52150 char **r = NULL; 52151 char **l2 = NULL; 52152 size_t len1; 52153 size_t len2; 52154 bool freeL2Status = false;; 52155 52156 // sanity checks 52157 if (!list1) { 52158 // need a list to store results, abort 52159 return(NULL); 52160 } 52161 if (!(*list1)) { 52162 // copy list2 52163 (*list1) = listDupS(list2); 52164 return(*list1); 52165 } 52166 if (!list2) { 52167 // list1 not modified 52168 return(*list1); 52169 } 52170 52171 len1 = listLengthS(*list1); 52172 52173 if ((*list1) == list2) { 52174 // list1 and list2 identical, duplicate list before realloc 52175 // copy only the string pointers 52176 l2 = MALLOC((len1+1) * sizeof(char *)); 52177 if (!l2) { 52178 return(NULL); 52179 } 52180 int j = 0; 52181 while (list2[j]) { 52182 l2[j] = list2[j]; 52183 j++; 52184 } 52185 l2[j] = NULL; 52186 freeL2Status = true; 52187 } 52188 else { 52189 l2 = list2; 52190 } 52191 len2 = listLengthS(l2); 52192 r = REALLOC((*list1), (len1+len2+1) * sizeof(char *)); 52193 if (!r) { 52194 // realloc fails list1 not modified 52195 if (freeL2Status) { 52196 free(l2); 52197 } 52198 return(NULL); 52199 } 52200 (*list1) = r; 52201 // push list2 to new list 52202 enumerateCharP(l2, e, i) { 52203 r[len1+i] = strdup(*e); 52204 } 52205 52206 r[len1+len2] = NULL; 52207 52208 if (freeL2Status) { 52209 free(l2); 52210 } 52211 return(r); 52212 } 52213 52214 /** 52215 * in place list Append String 52216 * Append list2 at the end of list1 by copying the pointers 52217 * from list2 to list1. 52218 * After this function, free list2 with free instead of listFreeS 52219 * 52220 * list1 is reallocated to add extra space 52221 * 52222 * \param 52223 * list1 (this parameter is reallocated) 52224 * \param 52225 * list2 52226 * \return 52227 * list1 and list2 (you must free the pointer with listFreeS or free) 52228 * list1 not modified when list1 and list2 are NULL 52229 * or when list1 is identical to list2 (same pointers) 52230 * NULL error 52231 */ 52232 char **iListAppendS(char ***list1, char **list2) { 52233 char **r = NULL; 52234 size_t len1; 52235 size_t len2; 52236 52237 // sanity checks 52238 if (!list1) { 52239 // need a list to store results, abort 52240 return(NULL); 52241 } 52242 if (!list2 || !*list2) { 52243 // list1 not modified 52244 return(*list1); 52245 } 52246 if (!(*list1)) { 52247 // copy list2 52248 len2 = listLengthS(list2); 52249 *list1 = MALLOC((len2+1) * sizeof(char *)); 52250 if (!*list1) { 52251 return(NULL); 52252 } 52253 int j = 0; 52254 while (list2[j]) { 52255 (*list1)[j] = list2[j]; 52256 j++; 52257 } 52258 (*list1)[j] = NULL; 52259 return(*list1); 52260 } 52261 52262 len1 = listLengthS(*list1); 52263 52264 if ((*list1) == list2) { 52265 // list1 and list2 identical, cancel this operations 52266 // to avoid double free undefined behavior in listFreeS 52267 return(NULL); 52268 } 52269 52270 len2 = listLengthS(list2); 52271 r = REALLOC((*list1), (len1+len2+1) * sizeof(char *)); 52272 if (!r) { 52273 // realloc fails list1 not modified 52274 return(NULL); 52275 } 52276 (*list1) = r; 52277 // push list2 to new list 52278 enumerateCharP(list2, e, i) { 52279 r[len1+i] = *e; 52280 } 52281 52282 r[len1+len2] = NULL; 52283 52284 return(r); 52285 } 52286 52287 /** 52288 * list Append and smash list2 52289 * Append list2 at the end of list1 by copying the pointers 52290 * from list2 to list1. 52291 * 52292 * list2 is freed (except when there is an error) 52293 * 52294 * list1 is reallocated to add extra space 52295 * 52296 * \param 52297 * list1 (this parameter is reallocated) 52298 * \param 52299 * list2 52300 * \return 52301 * list1 and list2 (you must free the pointer with listFreeS or free) 52302 * list1 not modified when list1 and list2 are NULL 52303 * or when list1 is identical to list2 (same pointers) 52304 * NULL error 52305 */ 52306 char **iListAppendNSmashS(char ***list1, char **list2) { 52307 char **r = NULL; 52308 52309 r = iListAppendS(list1, list2); 52310 if (r) { 52311 free(list2); 52312 } 52313 return(r); 52314 } 52315 52316 /** 52317 * list Shift String 52318 * Append list2 at the start of list1 52319 * 52320 * list1 is reallocated to add extra space 52321 * 52322 * \param 52323 * list1 (this parameter is reallocated) 52324 * \param 52325 * list2 52326 * \return 52327 * list1 and list2 (you must free the pointer with listFreeS) 52328 * list1 not modified when list1 and list2 are NULL 52329 * NULL error 52330 */ 52331 char **listShiftS(char ***list1, char **list2) { 52332 52333 if (!list1) { 52334 return(NULL); 52335 } 52336 52337 char **r = listInsertS(*list1, 0, list2); 52338 if (r) { 52339 listFreeS(*list1); 52340 *list1 = r; 52341 } 52342 return(r); 52343 } 52344 52345 /** 52346 * in place list Shift String 52347 * Append list2 at the start of list1 by copying the pointers 52348 * from list2 to list1. 52349 * After this function, free list2 with free instead of listFreeS 52350 * 52351 * list1 is reallocated to add extra space 52352 * 52353 * \param 52354 * list1 (this parameter is reallocated) 52355 * \param 52356 * list2 52357 * \return 52358 * list1 and list2 (you must free the pointer with listFreeS or free) 52359 * list1 not modified when list1 and list2 are NULL 52360 * or when list1 is identical to list2 (same pointers) 52361 * NULL error 52362 */ 52363 char **iListShiftS(char ***list1, char **list2) { 52364 52365 return(iListInsertS(list1, 0, list2)); 52366 } 52367 52368 /** 52369 * list Append and smash list2 52370 * Append list2 at the start of list1 by copying the pointers 52371 * from list2 to list1. 52372 * 52373 * list2 is freed (except when there is an error) 52374 * 52375 * list1 is reallocated to add extra space 52376 * 52377 * \param 52378 * list1 (this parameter is reallocated) 52379 * \param 52380 * list2 52381 * \return 52382 * list1 and list2 (you must free the pointer with listFreeS or free) 52383 * list1 not modified when list1 and list2 are NULL 52384 * or when list1 is identical to list2 (same pointers) 52385 * NULL error 52386 */ 52387 char **iListShiftNSmashS(char ***list1, char **list2) { 52388 52389 return(iListInsertNFreeS(list1, 0, list2)); 52390 } 52391 52392 52393 /** 52394 * list Add String 52395 * add list1 and list2 in a new list 52396 * 52397 * \param 52398 * list1 52399 * \param 52400 * list2 52401 * \return 52402 * new list with list1 and list2 (you must free the pointer with listFreeS) 52403 * NULL when list1 and list2 are NULL 52404 */ 52405 char **listAddS(char **list1, char **list2) { 52406 char **l = NULL; 52407 char **r = NULL; 52408 size_t len1; 52409 size_t len2; 52410 52411 // sanity checks 52412 if (!list1 && !list2) { 52413 return(NULL); 52414 } 52415 if (!list1) { 52416 // copy list2 52417 return(listDupS(list2)); 52418 } 52419 if (!list2) { 52420 // copy list1 52421 return(listDupS(list1)); 52422 } 52423 // duplicate list1 52424 l = listDupS(list1); 52425 len1 = listLengthS(list1); 52426 len2 = listLengthS(list2); 52427 r = REALLOC(l, (len1+len2+1) * sizeof(char *)); 52428 if (!r) { 52429 // free l when realloc fails 52430 listFreeS(l); 52431 return(NULL);//LCOV_EXCL_LINE 52432 } 52433 // push list2 to new list 52434 enumerateCharP(list2, e, i) { 52435 r[len1+i] = strdup(*e); 52436 } 52437 52438 r[len1+len2] = NULL; 52439 52440 return(r); 52441 } 52442 52443 52444 /** 52445 * const list Add String 52446 * add list1 and list2 in a new list 52447 * 52448 * \param 52449 * list1 52450 * \param 52451 * list2 52452 * \return 52453 * new list with list1 and list2 (you must free the pointer with listFreeS) 52454 * NULL when list1 and list2 are NULL 52455 */ 52456 char **listAddCS(char **list1, const char **list2) { 52457 char **l = NULL; 52458 char **r = NULL; 52459 size_t len1; 52460 size_t len2; 52461 52462 // sanity checks 52463 if (!list1 && !list2) { 52464 return(NULL); 52465 } 52466 if (!list1) { 52467 // copy list2 52468 return(listDupCS(list2)); 52469 } 52470 if (!list2) { 52471 // copy list1 52472 return(listDupS(list1)); 52473 } 52474 // duplicate list1 52475 l = listDupS(list1); 52476 len1 = listLengthS(list1); 52477 len2 = listLengthCS(list2); 52478 r = REALLOC(l, (len1+len2+1) * sizeof(char *)); 52479 if (!r) { 52480 // free l when realloc fails 52481 listFreeS(l); 52482 return(NULL);//LCOV_EXCL_LINE 52483 } 52484 // push list2 to new list 52485 enumerateCCharP(list2, e, i) { 52486 r[len1+i] = strdup(*e); 52487 } 52488 52489 r[len1+len2] = NULL; 52490 52491 return(r); 52492 } 52493 52494 52495 /** 52496 * list Slice String 52497 * return new list with elements from start and end in list 52498 * negative indexes are allowed 52499 * 52500 * \param 52501 * list 52502 * \param 52503 * start index, must be in the list 52504 * \param 52505 * end index, must be in the list 52506 * \return 52507 * sliced list (you must free the pointer with listFreeS) 52508 * empty list when start=end 52509 * NULL when list is empty 52510 * NULL when list is NULL or when start and end are not set correctly 52511 */ 52512 char **listSliceS(char **list, int64_t start, int64_t end) { 52513 char **l = NULL; 52514 int64_t len; 52515 52516 // sanity checks 52517 if (!list) { 52518 return(NULL); 52519 } 52520 52521 len = (int64_t)listLengthS(list); 52522 52523 if (start > len) { 52524 return(NULL); 52525 } 52526 if (end > len) { 52527 end = len; 52528 } 52529 if (start <= -len) { 52530 start = -len; 52531 } 52532 if (end <= -len) { 52533 return(NULL); 52534 } 52535 if (start < 0) { 52536 start = len + start; 52537 } 52538 if (end <= 0) { 52539 end = len + end; 52540 } 52541 if (end < start) { 52542 return(NULL); 52543 } 52544 52545 if (start == end) { 52546 // empty list 52547 listEmptyS(l); 52548 return(l); 52549 } 52550 52551 // start < end < len 52552 int64_t n; 52553 n = end - start; 52554 l = MALLOC((size_t)(n+1) * sizeof(char *)); 52555 if (!l) { 52556 return(NULL);//LCOV_EXCL_LINE 52557 } 52558 for (int64_t i=0;i < n;i++) { 52559 l[i] = strdup(*(list+start+i)); 52560 } 52561 l[n] = NULL; 52562 return(l); 52563 } 52564 52565 /** 52566 * list Copy String 52567 * return new list with element pointers from start and end in list 52568 * negative indexes are allowed 52569 * 52570 * Note: this function creates a new list, so char *** is not needed. 52571 * Unlike iList functions. 52572 * 52573 * \param 52574 * list 52575 * \param 52576 * start index, must be in the list 52577 * \param 52578 * end index, must be in the list 52579 * \return 52580 * new list pointing to the same string as list (you must free the pointer with free) 52581 * empty list when start=end 52582 * NULL when list is empty 52583 * NULL when list is NULL or when start and end are not set correctly 52584 */ 52585 char **iListCopyS(char **list, int64_t start, int64_t end) { 52586 char **l = NULL; 52587 int64_t len; 52588 52589 // sanity checks 52590 if (!list) { 52591 return(NULL); 52592 } 52593 52594 len = (int64_t)listLengthS(list); 52595 52596 if (start > len) { 52597 return(NULL); 52598 } 52599 if (end > len) { 52600 end = len; 52601 } 52602 if (start <= -len) { 52603 start = -len; 52604 } 52605 if (end <= -len) { 52606 return(NULL); 52607 } 52608 if (start < 0) { 52609 start = len + start; 52610 } 52611 if (end <= 0) { 52612 end = len + end; 52613 } 52614 if (end < start) { 52615 return(NULL); 52616 } 52617 52618 if (start == end) { 52619 // empty list 52620 listEmptyS(l); 52621 return(l); 52622 } 52623 52624 // start < end < len 52625 int64_t n; 52626 n = end - start; 52627 l = MALLOC((size_t)(n+1) * sizeof(char *)); 52628 if (!l) { 52629 return(NULL);//LCOV_EXCL_LINE 52630 } 52631 for (int64_t i=0;i < n;i++) { 52632 l[i] = *(list+start+i); 52633 } 52634 l[n] = NULL; 52635 return(l); 52636 } 52637 52638 /** 52639 * list Slice String 52640 * return list with elements from start and end in list 52641 * negative indexes are allowed 52642 * 52643 * \param 52644 * list (this parameter is reallocated) 52645 * \param 52646 * start index, must be in the list 52647 * \param 52648 * end index, must be in the list 52649 * \return 52650 * sliced list (you must free the pointer with listFreeS or free) 52651 * empty list when start=end 52652 * unchanged when list is empty 52653 * unchanged when list is NULL or when start and end are not set correctly 52654 * NULL error 52655 */ 52656 char **iListSliceS(char ***list, int64_t start, int64_t end) { 52657 char **l = NULL; 52658 int64_t len; 52659 52660 // sanity checks 52661 if (!list || !*list) { 52662 return(NULL); 52663 } 52664 52665 len = (int64_t)listLengthS(*list); 52666 52667 if (start > len) { 52668 listFreeS(*list); 52669 listEmptyS(*list); 52670 return(NULL); 52671 } 52672 if (end > len) { 52673 end = len; 52674 } 52675 if (start <= -len) { 52676 start = -len; 52677 } 52678 if (end <= -len) { 52679 listFreeS(*list); 52680 listEmptyS(*list); 52681 return(NULL); 52682 } 52683 if (start < 0) { 52684 start = len + start; 52685 } 52686 if (end <= 0) { 52687 end = len + end; 52688 } 52689 if (end < start) { 52690 listFreeS(*list); 52691 listEmptyS(*list); 52692 return(NULL); 52693 } 52694 52695 if (start == end) { 52696 // empty list 52697 listEmptyS(l); 52698 // free elements 52699 listFreeS(*list); 52700 } 52701 else { 52702 // start < end < len 52703 int64_t n; 52704 n = end - start; 52705 l = MALLOC((size_t)(n+1) * sizeof(char *)); 52706 if (!l) { 52707 return(NULL); 52708 } 52709 for (int64_t i=0;i < n;i++) { 52710 l[i] = *((*list)+start+i); 52711 } 52712 l[n] = NULL; 52713 // free 0 < start 52714 for (int64_t i=0;i < start;i++) { 52715 free((*list)[i]); 52716 } 52717 // free end < len 52718 for (int64_t i=end;i < len;i++) { 52719 free((*list)[i]); 52720 } 52721 free(*list); 52722 } 52723 52724 *list = l; 52725 return(l); 52726 } 52727 52728 /** 52729 * list Crop String 52730 * return a new list with elements from start and end in list 52731 * and delete elements from start to end in the original list 52732 * negative indexes are allowed 52733 * 52734 * iListCropS is faster than listSliceS+iListDelS because only the 52735 * string pointers are copied to the sliced list 52736 * 52737 * \param 52738 * list 52739 * \param 52740 * start index, must be in the list 52741 * \param 52742 * end index, must be in the list 52743 * \return 52744 * new sliced list (you must free the pointer with listFreeS or free) 52745 * empty list when start=end 52746 * unchanged when list is empty 52747 * unchanged when list is NULL or when start and end are not set correctly 52748 * NULL error 52749 */ 52750 char **listCropS(char **list, int64_t start, int64_t end) { 52751 char **l = NULL; 52752 int64_t len; 52753 52754 // sanity checks 52755 if (!list) { 52756 return(NULL); 52757 } 52758 52759 len = (int64_t)listLengthS(list); 52760 52761 if (start > len) { 52762 return(NULL); 52763 } 52764 if (end > len) { 52765 end = len; 52766 } 52767 if (start <= -len) { 52768 start = -len; 52769 } 52770 if (end <= -len) { 52771 return(NULL); 52772 } 52773 if (start < 0) { 52774 start = len + start; 52775 } 52776 if (end <= 0) { 52777 end = len + end; 52778 } 52779 if (end < start) { 52780 return(NULL); 52781 } 52782 52783 if (start == end) { 52784 // empty list 52785 listEmptyS(l); 52786 return(l); 52787 } 52788 else { 52789 // start < end < len 52790 int64_t n; 52791 n = end - start; 52792 l = MALLOC((size_t)(n+1) * sizeof(char *)); 52793 if (!l) { 52794 return(NULL); 52795 } 52796 for (int64_t i=0;i < n;i++) { 52797 l[i] = *(list+start+i); 52798 } 52799 l[n] = NULL; 52800 // free end < len 52801 for (int64_t i=0;i < (len - end);i++) { 52802 list[i+start] = *(list+i+end); 52803 } 52804 list[len-n] = NULL; 52805 } 52806 52807 return(l); 52808 } 52809 52810 /** 52811 * list Crop String 52812 * return a new list with elements from start and end in list 52813 * and delete elements from start to end in the original list 52814 * negative indexes are allowed 52815 * 52816 * iListCropS is faster than listSliceS+iListDelS because only the 52817 * string pointers are copied to the sliced list 52818 * 52819 * \param 52820 * list 52821 * \param 52822 * start index, must be in the list 52823 * \param 52824 * end index, must be in the list 52825 * \return 52826 * new sliced list (you must free the pointer with listFreeS or free) 52827 * empty list when start=end 52828 * unchanged when list is empty 52829 * unchanged when list is NULL or when start and end are not set correctly 52830 * NULL error 52831 */ 52832 char **iListCropS(char ***list, int64_t start, int64_t end) { 52833 char **l = NULL; 52834 int64_t len; 52835 52836 // sanity checks 52837 if (!list || !*list) { 52838 return(NULL); 52839 } 52840 52841 len = (int64_t)listLengthS(*list); 52842 52843 if (start > len) { 52844 return(NULL); 52845 } 52846 if (end > len) { 52847 end = len; 52848 } 52849 if (start <= -len) { 52850 start = -len; 52851 } 52852 if (end <= -len) { 52853 return(NULL); 52854 } 52855 if (start < 0) { 52856 start = len + start; 52857 } 52858 if (end <= 0) { 52859 end = len + end; 52860 } 52861 if (end < start) { 52862 return(NULL); 52863 } 52864 52865 if (start == end) { 52866 // empty list 52867 listEmptyS(l); 52868 return(l); 52869 } 52870 else { 52871 // start < end < len 52872 int64_t n; 52873 n = end - start; 52874 l = MALLOC((size_t)(n+1) * sizeof(char *)); 52875 if (!l) { 52876 return(NULL); 52877 } 52878 for (int64_t i=0;i < n;i++) { 52879 l[i] = *((*list)+start+i); 52880 } 52881 l[n] = NULL; 52882 // free end < len 52883 for (int64_t i=0;i < (len - end);i++) { 52884 (*list)[i+start] = *((*list)+i+end); 52885 } 52886 (*list)[len-n] = NULL; 52887 } 52888 52889 return(l); 52890 } 52891 52892 /** 52893 * list Crop Element String 52894 * return element at index 52895 * and delete element at index in the original list 52896 * negative indexes are allowed 52897 * 52898 * iListCropS is faster than listSliceS+iListDelElemS because only the 52899 * string pointer is returned directly 52900 * 52901 * \param 52902 * list 52903 * \param 52904 * index must be in the list 52905 * \return 52906 * element at index (you must free the pointer with free) 52907 * empty list when start=end 52908 * unchanged when list is empty 52909 * unchanged when list is NULL or when start and end are not set correctly 52910 * NULL error 52911 */ 52912 char *listCropElemS(char **list, int64_t index) { 52913 char *r = NULL; 52914 int64_t len; 52915 52916 // sanity checks 52917 if (!list) { 52918 return(NULL); 52919 } 52920 52921 len = (int64_t)listLengthS(list); 52922 52923 if (len == 0) { 52924 return(NULL); 52925 } 52926 52927 if (index >= len) { 52928 return(NULL); 52929 } 52930 if (index < -len) { 52931 return(NULL); 52932 } 52933 if (index < 0) { 52934 index = len + index; 52935 } 52936 52937 r = *(list+index); 52938 for (int64_t i=index ; i < len-1 ; i++) { 52939 list[i] = *(list+1+i); 52940 } 52941 list[len-1] = NULL; 52942 52943 return(r); 52944 } 52945 52946 /** 52947 * list Crop Element String 52948 * return element at index 52949 * and delete element at index in the original list 52950 * negative indexes are allowed 52951 * 52952 * iListCropS is faster than listSliceS+iListDelElemS because only the 52953 * string pointer is returned directly 52954 * 52955 * \param 52956 * list 52957 * \param 52958 * index must be in the list 52959 * \return 52960 * element at index (you must free the pointer with free) 52961 * empty list when start=end 52962 * unchanged when list is empty 52963 * unchanged when list is NULL or when start and end are not set correctly 52964 * NULL error 52965 */ 52966 char *iListCropElemS(char ***list, int64_t index) { 52967 char *r = NULL; 52968 int64_t len; 52969 52970 // sanity checks 52971 if (!list || !*list) { 52972 return(NULL); 52973 } 52974 52975 len = (int64_t)listLengthS(*list); 52976 52977 if (len == 0) { 52978 return(NULL); 52979 } 52980 52981 if (index >= len) { 52982 return(NULL); 52983 } 52984 if (index < -len) { 52985 return(NULL); 52986 } 52987 if (index < 0) { 52988 index = len + index; 52989 } 52990 52991 r = *((*list)+index); 52992 for (int64_t i=index ; i < len-1 ; i++) { 52993 (*list)[i] = *((*list)+1+i); 52994 } 52995 (*list)[len-1] = NULL; 52996 52997 return(r); 52998 } 52999 53000 /** 53001 * list Insert string 53002 * 53003 * insert list in list at index 53004 * 53005 * return new list with toInsert at index 53006 * negative indexes are allowed 53007 * index -1 is the end of the array and is equivalent to index len 53008 * 53009 * \param 53010 * list 53011 * \param 53012 * index in list 53013 * \param 53014 * toInsert list 53015 * \return 53016 * new list (you must free the pointer with listFreeS) 53017 * NULL when list is NULL or invalid index 53018 */ 53019 char **listInsertS(char **list, int64_t index, char **toInsert) { 53020 char **r = NULL; 53021 int64_t len; 53022 53023 //sanity checks 53024 if (!list) { 53025 if (index || !toInsert) { 53026 return(NULL); 53027 } 53028 return(listDupS(toInsert)); 53029 } 53030 len = (int64_t)listLengthS(list); 53031 53032 if (!len && index == -1) { 53033 // empty string, index -1 is equal to 0 53034 index = 0; 53035 } 53036 bool neg = false; 53037 if (index < 0) { 53038 neg = true; 53039 } 53040 53041 if (index > len) { 53042 return(NULL); 53043 } 53044 if (neg) { 53045 index++; 53046 } 53047 if (index < -len) { 53048 return(NULL); 53049 } 53050 if (neg) { 53051 index = len + index; 53052 } 53053 53054 53055 if (!toInsert || listIsEmptyS(toInsert)) { 53056 return(listDupS(list)); 53057 } 53058 53059 if (index == 0) { 53060 // insert at beginning 53061 return(listAddS(toInsert, list)); 53062 } 53063 53064 char **l1 = listSliceS(list, 0, index); 53065 char **l2 = listSliceS(list, index, 0); 53066 r = listCatS(l1, toInsert, l2); 53067 listFreeManyS(l1,l2); 53068 53069 return(r); 53070 } 53071 53072 /** 53073 * list Insert string 53074 * 53075 * insert list in list at index 53076 * After this function, free toInsert with free instead of listFreeS 53077 * 53078 * return list with toInsert at index 53079 * negative indexes are allowed 53080 * index -1 is the end of the array and is equivalent to index len 53081 * 53082 * \param 53083 * list (this parameter is reallocated) 53084 * \param 53085 * index in list 53086 * \param 53087 * toInsert list 53088 * \return 53089 * list (you must free the pointer with listFreeS or free) 53090 * unchanged list when list is NULL or invalid index 53091 * NULL error 53092 */ 53093 char **iListInsertS(char ***list, int64_t index, char **toInsert) { 53094 char **r = NULL; 53095 int64_t len; 53096 53097 //sanity checks 53098 if (!list || !toInsert) { 53099 return(NULL); 53100 } 53101 if (!*list) { 53102 if (index) { 53103 return(NULL); 53104 } 53105 len = (int64_t)listLengthS(toInsert); 53106 r = MALLOC((size_t)(len+1) * sizeof(char *)); 53107 if (!r) { 53108 return(NULL);//LCOV_EXCL_LINE 53109 } 53110 // last element is NULL 53111 r[len] = NULL; 53112 // copy each element 53113 enumerateCharP(toInsert, e, i) { 53114 r[i] = *e; 53115 } 53116 *list = r; 53117 return(r); 53118 } 53119 53120 len = (int64_t)listLengthS(*list); 53121 53122 if (!len && index == -1) { 53123 // empty string, index -1 is equal to 0 53124 index = 0; 53125 } 53126 bool neg = false; 53127 if (index < 0) { 53128 neg = true; 53129 } 53130 53131 if (index > len) { 53132 return(NULL); 53133 } 53134 if (neg) { 53135 index++; 53136 } 53137 if (index < -len) { 53138 return(NULL); 53139 } 53140 if (neg) { 53141 index = len + index; 53142 } 53143 53144 53145 if (listIsEmptyS(toInsert)) { 53146 return(*list); 53147 } 53148 53149 if ((*list) == toInsert) { 53150 // list1 and list2 identical, cancel this operations 53151 // to avoid double free undefined behavior in listFreeS 53152 return(NULL); 53153 } 53154 53155 if (index == 0) { 53156 // insert at beginning 53157 pErrorNULL(iListAppendS(&r, toInsert)); 53158 pErrorNULL(iListAppendS(&r, *list)); 53159 } 53160 else { 53161 53162 r = iListCopyS(*list, 0, index);; 53163 char **l2 = iListCopyS(*list, index, 0); 53164 pErrorNULL(iListAppendS(&r, toInsert)); 53165 pErrorNULL(iListAppendS(&r, l2)); 53166 free(l2); 53167 } 53168 53169 free(*list); 53170 *list = r; 53171 return(r); 53172 } 53173 53174 /** 53175 * list Insert string and free toInsert 53176 * 53177 * insert list in list at index 53178 * 53179 * return list with toInsert at index 53180 * negative indexes are allowed 53181 * index -1 is the end of the array and is equivalent to index len 53182 * 53183 * \param 53184 * list (this parameter is reallocated) 53185 * \param 53186 * index in list 53187 * \param 53188 * toInsert list 53189 * \return 53190 * list (you must free the pointer with listFreeS or free) 53191 * unchanged list when list is NULL or invalid index 53192 * NULL error 53193 */ 53194 char **iListInsertNFreeS(char ***list, int64_t index, char **toInsert) { 53195 char **r = NULL; 53196 int64_t len; 53197 53198 //sanity checks 53199 if (!list || !toInsert) { 53200 return(NULL); 53201 } 53202 if (!*list) { 53203 if (index) { 53204 return(NULL); 53205 } 53206 r = listDupS(toInsert); 53207 listFreeS(toInsert); 53208 *list = r; 53209 return(r); 53210 } 53211 53212 len = (int64_t)listLengthS(*list); 53213 53214 if (!len && index == -1) { 53215 // empty string, index -1 is equal to 0 53216 index = 0; 53217 } 53218 bool neg = false; 53219 if (index < 0) { 53220 neg = true; 53221 } 53222 53223 if (index > len) { 53224 return(NULL); 53225 } 53226 if (neg) { 53227 index++; 53228 } 53229 if (index < -len) { 53230 return(NULL); 53231 } 53232 if (neg) { 53233 index = len + index; 53234 } 53235 53236 53237 if (listIsEmptyS(toInsert)) { 53238 listFreeS(toInsert); 53239 return(*list); 53240 } 53241 53242 if ((*list) == toInsert) { 53243 // list1 and list2 identical, cancel this operations 53244 // to avoid double free undefined behavior in listFreeS 53245 return(NULL); 53246 } 53247 53248 if (index == 0) { 53249 // insert at beginning 53250 pErrorNULL(iListAppendS(&r, toInsert)); 53251 pErrorNULL(iListAppendS(&r, *list)); 53252 } 53253 else { 53254 53255 r = iListCopyS(*list, 0, index);; 53256 char **l2 = iListCopyS(*list, index, 0); 53257 pErrorNULL(iListAppendS(&r, toInsert)); 53258 pErrorNULL(iListAppendS(&r, l2)); 53259 free(l2); 53260 } 53261 free(toInsert); 53262 53263 free(*list); 53264 *list = r; 53265 return(r); 53266 } 53267 53268 /** 53269 * list Inject string 53270 * 53271 * Inject string in list at index 53272 * 53273 * return new list with toInject at index 53274 * negative indexes are allowed 53275 * index -1 is the end of the array and is equivalent to index len 53276 * 53277 * \param 53278 * list 53279 * \param 53280 * index in list 53281 * \param 53282 * toInject string 53283 * \return 53284 * new list (you must free the pointer with listFreeS) 53285 * NULL when list is NULL or invalid index 53286 */ 53287 char **listInjectS(char **list, int64_t index, char *toInject) { 53288 char **r = NULL; 53289 int64_t len; 53290 53291 //sanity checks 53292 if (!list) { 53293 if (index || !toInject) { 53294 return(NULL); 53295 } 53296 pErrorNULL(listPushS(&r, toInject)); 53297 return(r); 53298 } 53299 53300 if (!toInject) { 53301 return(NULL); 53302 } 53303 53304 len = (int64_t)listLengthS(list); 53305 53306 if (!len && index == -1) { 53307 // empty string, index -1 is equal to 0 53308 index = 0; 53309 } 53310 bool neg = false; 53311 if (index < 0) { 53312 neg = true; 53313 } 53314 53315 if (index > len) { 53316 return(NULL); 53317 } 53318 if (neg) { 53319 index++; 53320 } 53321 if (index < -len) { 53322 return(NULL); 53323 } 53324 if (neg) { 53325 index = len + index; 53326 } 53327 53328 53329 char *inject[2]; 53330 inject[0] = toInject; 53331 inject[1] = NULL; 53332 53333 if (index == 0) { 53334 // Inject at beginning 53335 return(listAddS(inject, list)); 53336 } 53337 53338 char **l1 = listSliceS(list, 0, index); 53339 char **l2 = listSliceS(list, index, 0); 53340 r = listCatS(l1, inject, l2); 53341 listFreeManyS(l1,l2); 53342 53343 return(r); 53344 } 53345 53346 char **listInjectCharS(char **list, int64_t index, char toInject) { 53347 53348 charToS(s, toInject); 53349 return(listInjectS(list, index, s)); 53350 } 53351 53352 /** 53353 * list Inject string 53354 * 53355 * Inject string pointer in list at index 53356 * 53357 * return list with toInject at index 53358 * negative indexes are allowed 53359 * index -1 is the end of the array and is equivalent to index len 53360 * 53361 * \param 53362 * list (this parameter is reallocated) 53363 * \param 53364 * index in list 53365 * \param 53366 * toInject string 53367 * \return 53368 * list (you must free the pointer with listFreeS or free) 53369 * unchanged list when list is NULL or invalid index 53370 * NULL error 53371 */ 53372 char **iListInjectS(char ***list, int64_t index, char *toInject) { 53373 char **r = NULL; 53374 int64_t len; 53375 53376 //sanity checks 53377 if (!list || !toInject) { 53378 return(NULL); 53379 } 53380 if (!*list) { 53381 if (index) { 53382 return(NULL); 53383 } 53384 pErrorNULL(iListPushS(list, toInject)); 53385 return(*list); 53386 } 53387 53388 len = (int64_t)listLengthS(*list); 53389 53390 if (!len && index == -1) { 53391 // empty string, index -1 is equal to 0 53392 index = 0; 53393 } 53394 bool neg = false; 53395 if (index < 0) { 53396 neg = true; 53397 } 53398 53399 if (index > len) { 53400 return(NULL); 53401 } 53402 if (neg) { 53403 index++; 53404 } 53405 if (index < -len) { 53406 return(NULL); 53407 } 53408 if (neg) { 53409 index = len + index; 53410 } 53411 53412 53413 char *inject[2]; 53414 inject[0] = toInject; 53415 inject[1] = NULL; 53416 53417 if (index == 0) { 53418 // Inject at beginning 53419 pErrorNULL(iListAppendS(&r, inject)); 53420 pErrorNULL(iListAppendS(&r, *list)); 53421 } 53422 else { 53423 53424 r = iListCopyS(*list, 0, index);; 53425 char **l2 = iListCopyS(*list, index, 0); 53426 pErrorNULL(iListAppendS(&r, inject)); 53427 pErrorNULL(iListAppendS(&r, l2)); 53428 free(l2); 53429 } 53430 53431 free(*list); 53432 *list = r; 53433 return(r); 53434 } 53435 53436 char **iListInjectCharS(char ***list, int64_t index, char toInject) { 53437 53438 if (!list) { 53439 return(NULL); 53440 } 53441 53442 if (!*list && index) { 53443 return(NULL); 53444 } 53445 53446 charToS(s, toInject); 53447 *list = iListInjectS(list, index, strdup(s)); 53448 return(*list); 53449 } 53450 53451 /** 53452 * list Delete String 53453 * return new list without elements from start and end in list 53454 * negative indexes are allowed 53455 * 53456 * \param 53457 * list 53458 * \param 53459 * start index, must be in the list 53460 * \param 53461 * end index, must be in the list 53462 * \return 53463 * sliced list (you must free the pointer with listFreeS) 53464 * list copy when start=end or when start and end are not set correctly 53465 * NULL when list is empty 53466 * NULL when list is NULL or when end is under start 53467 */ 53468 char **listDelS(char **list, int64_t start, int64_t end) { 53469 char **l = NULL; 53470 int64_t len; 53471 53472 // sanity checks 53473 if (!list) { 53474 return(NULL); 53475 } 53476 53477 len = (int64_t)listLengthS(list); 53478 53479 if (len == 0) { 53480 return(NULL); 53481 } 53482 53483 if (start >= len) { 53484 start = len; 53485 } 53486 if (end > len) { 53487 end = len; 53488 } 53489 if (start <= -len) { 53490 start = -len; 53491 } 53492 if (end <= -len) { 53493 end = -len; 53494 } 53495 if (start < 0) { 53496 start = len + start; 53497 } 53498 if (end <= 0) { 53499 end = len + end; 53500 } 53501 if (end < start) { 53502 return(NULL); 53503 } 53504 53505 if (start == end) { 53506 return(listDupS(list)); 53507 } 53508 53509 // start < end < len 53510 int64_t n; 53511 n = end - start; 53512 l = MALLOC((size_t)(len-n+1) * sizeof(char *)); 53513 if (!l) { 53514 return(NULL);//LCOV_EXCL_LINE 53515 } 53516 for (int64_t i=0;i < start;i++) { 53517 l[i] = strdup(*(list+i)); 53518 } 53519 for (int64_t i=start ; i < len-n ; i++) { 53520 l[i] = strdup(*(list+n+i)); 53521 } 53522 l[len-n] = NULL; 53523 return(l); 53524 } 53525 53526 53527 /** 53528 * list Delete String 53529 * return list without elements from start and end in list 53530 * negative indexes are allowed 53531 * 53532 * \param 53533 * list (this parameter is reallocated) 53534 * \param 53535 * start index, must be in the list 53536 * \param 53537 * end index, must be in the list 53538 * \return 53539 * sliced list (you must free the pointer with listFreeS or free) 53540 * list copy when start=end or when start and end are not set correctly 53541 * NULL when list is empty 53542 * NULL when list is NULL or when end is under start 53543 * NULL error 53544 */ 53545 char **iListDelS(char ***list, int64_t start, int64_t end) { 53546 char **l = NULL; 53547 int64_t len; 53548 53549 // sanity checks 53550 if (!list || !*list) { 53551 return(NULL); 53552 } 53553 53554 len = (int64_t)listLengthS(*list); 53555 53556 if (len == 0) { 53557 return(NULL); 53558 } 53559 53560 if (start >= len) { 53561 start = len; 53562 } 53563 if (end > len) { 53564 end = len; 53565 } 53566 if (start <= -len) { 53567 start = -len; 53568 } 53569 if (end <= -len) { 53570 end = -len; 53571 } 53572 if (start < 0) { 53573 start = len + start; 53574 } 53575 if (end <= 0) { 53576 end = len + end; 53577 } 53578 if (end < start) { 53579 return(NULL); 53580 } 53581 53582 if (start == end) { 53583 return(*list); 53584 } 53585 53586 // start < end < len 53587 int64_t n; 53588 n = end - start; 53589 l = MALLOC((size_t)(len-n+1) * sizeof(char *)); 53590 if (!l) { 53591 return(NULL); 53592 } 53593 for (int64_t i=0;i < start;i++) { 53594 l[i] = *((*list)+i); 53595 } 53596 for (int64_t i=0;i < n;i++) { 53597 free(*((*list)+start+i)); 53598 } 53599 for (int64_t i=start ; i < len-n ; i++) { 53600 l[i] = *((*list)+n+i); 53601 } 53602 l[len-n] = NULL; 53603 53604 free(*list); 53605 *list = l; 53606 return(l); 53607 } 53608 53609 /** 53610 * list Remove String 53611 * return list without elements from start and end in list 53612 * the elements are removed without being freed 53613 * negative indexes are allowed 53614 * 53615 * \param 53616 * list (this parameter is reallocated) 53617 * \param 53618 * start index, must be in the list 53619 * \param 53620 * end index, must be in the list 53621 * \return 53622 * sliced list (you must free the pointer with listFreeS or free) 53623 * list copy when start=end or when start and end are not set correctly 53624 * NULL when list is empty 53625 * NULL when list is NULL or when end is under start 53626 * NULL error 53627 */ 53628 char **iListRemoveS(char ***list, int64_t start, int64_t end) { 53629 char **l = NULL; 53630 int64_t len; 53631 53632 // sanity checks 53633 if (!list || !*list) { 53634 return(NULL); 53635 } 53636 53637 len = (int64_t)listLengthS(*list); 53638 53639 if (len == 0) { 53640 return(NULL); 53641 } 53642 53643 if (start >= len) { 53644 start = len; 53645 } 53646 if (end > len) { 53647 end = len; 53648 } 53649 if (start <= -len) { 53650 start = -len; 53651 } 53652 if (end <= -len) { 53653 end = -len; 53654 } 53655 if (start < 0) { 53656 start = len + start; 53657 } 53658 if (end <= 0) { 53659 end = len + end; 53660 } 53661 if (end < start) { 53662 return(NULL); 53663 } 53664 53665 if (start == end) { 53666 return(*list); 53667 } 53668 53669 // start < end < len 53670 int64_t n; 53671 n = end - start; 53672 l = MALLOC((size_t)(len-n+1) * sizeof(char *)); 53673 if (!l) { 53674 return(NULL); 53675 } 53676 for (int64_t i=0;i < start;i++) { 53677 l[i] = *((*list)+i); 53678 } 53679 for (int64_t i=start ; i < len-n ; i++) { 53680 l[i] = *((*list)+n+i); 53681 } 53682 l[len-n] = NULL; 53683 53684 free(*list); 53685 *list = l; 53686 return(l); 53687 } 53688 53689 /** 53690 * list Delete Element String 53691 * return new list without the element at index 53692 * negative indexes are allowed 53693 * 53694 * \param 53695 * list 53696 * \param 53697 * index must be in the list 53698 * \return 53699 * new list without the element at index (you must free the pointer with listFreeS) 53700 * NULL when list is empty 53701 * NULL when list is NULL 53702 */ 53703 char **listDelElemS(char **list, int64_t index) { 53704 char **l = NULL; 53705 int64_t len; 53706 53707 // sanity checks 53708 if (!list) { 53709 return(NULL); 53710 } 53711 53712 len = (int64_t)listLengthS(list); 53713 53714 if (len == 0) { 53715 return(NULL); 53716 } 53717 53718 if (index >= len) { 53719 return(NULL); 53720 } 53721 if (index < -len) { 53722 return(NULL); 53723 } 53724 if (index < 0) { 53725 index = len + index; 53726 } 53727 53728 l = MALLOC((size_t)(len-1+1) * sizeof(char *)); 53729 if (!l) { 53730 return(NULL);//LCOV_EXCL_LINE 53731 } 53732 for (int64_t i=0;i < index;i++) { 53733 l[i] = strdup(*(list+i)); 53734 } 53735 for (int64_t i=index ; i < len-1 ; i++) { 53736 l[i] = strdup(*(list+1+i)); 53737 } 53738 l[len-1] = NULL; 53739 return(l); 53740 } 53741 53742 53743 /** 53744 * list Delete Element String 53745 * return list without the element at index 53746 * negative indexes are allowed 53747 * 53748 * \param 53749 * list (this parameter is reallocated) 53750 * \param 53751 * index must be in the list 53752 * \return 53753 * new list without the element at index (you must free the pointer with listFreeS) 53754 * NULL when list is empty 53755 * NULL when list is NULL 53756 * NULL error 53757 */ 53758 char **iListDelElemS(char ***list, int64_t index) { 53759 char **l = NULL; 53760 int64_t len; 53761 53762 // sanity checks 53763 if (!list || !*list) { 53764 return(NULL); 53765 } 53766 53767 len = (int64_t)listLengthS(*list); 53768 53769 if (len == 0) { 53770 return(NULL); 53771 } 53772 53773 if (index >= len) { 53774 return(NULL); 53775 } 53776 if (index < -len) { 53777 return(NULL); 53778 } 53779 if (index < 0) { 53780 index = len + index; 53781 } 53782 53783 l = MALLOC((size_t)(len-1+1) * sizeof(char *)); 53784 if (!l) { 53785 return(NULL); 53786 } 53787 for (int64_t i=0;i < index;i++) { 53788 l[i] = *((*list)+i); 53789 } 53790 free(*((*list)+index)); 53791 for (int64_t i=index ; i < len-1 ; i++) { 53792 l[i] = *((*list)+1+i); 53793 } 53794 l[len-1] = NULL; 53795 53796 free(*list); 53797 *list = l; 53798 return(l); 53799 } 53800 53801 53802 /** 53803 * list Remove Element String 53804 * return list without the element at index 53805 * the element is removed without being freed 53806 * negative indexes are allowed 53807 * 53808 * \param 53809 * list (this parameter is reallocated) 53810 * \param 53811 * index must be in the list 53812 * \return 53813 * new list without the element at index (you must free the pointer with listFreeS) 53814 * NULL when list is empty 53815 * NULL when list is NULL 53816 * NULL error 53817 */ 53818 char **iListRemoveElemS(char ***list, int64_t index) { 53819 char **l = NULL; 53820 int64_t len; 53821 53822 // sanity checks 53823 if (!list || !*list) { 53824 return(NULL); 53825 } 53826 53827 len = (int64_t)listLengthS(*list); 53828 53829 if (len == 0) { 53830 return(NULL); 53831 } 53832 53833 if (index >= len) { 53834 return(NULL); 53835 } 53836 if (index < -len) { 53837 return(NULL); 53838 } 53839 if (index < 0) { 53840 index = len + index; 53841 } 53842 53843 l = MALLOC((size_t)(len-1+1) * sizeof(char *)); 53844 if (!l) { 53845 return(NULL); 53846 } 53847 for (int64_t i=0;i < index;i++) { 53848 l[i] = *((*list)+i); 53849 } 53850 for (int64_t i=index ; i < len-1 ; i++) { 53851 l[i] = *((*list)+1+i); 53852 } 53853 l[len-1] = NULL; 53854 53855 free(*list); 53856 *list = l; 53857 return(l); 53858 } 53859 53860 53861 /** 53862 * print list elements 53863 * to stdout 53864 * 53865 * when list is NULL, returns directly without doing anything 53866 * 53867 * \param 53868 * list 53869 * \return 53870 * nothing 53871 * 1 success 53872 * 0 error 53873 */ 53874 int listPrintS(char **list) { 53875 53876 if (!list) { 53877 return(0); 53878 } 53879 forEachCharP(list, e) { 53880 printf("%s\n", *e); 53881 } 53882 return(1); 53883 } 53884 53885 int listPrintCS(const char **list) { 53886 53887 if (!list) { 53888 return(0); 53889 } 53890 forEachCCharP(list, e) { 53891 printf("%s\n", *e); 53892 } 53893 return(1); 53894 } 53895 53896 /** 53897 * list Sort String Compare function 53898 * 53899 * in: 53900 * a 53901 * b 53902 * out: 53903 * test result 53904 */ 53905 internal int listSortSCmp(const void * a, const void * b) { 53906 53907 // sanity checks 53908 if (!a && !b) { 53909 return(0); 53910 } 53911 if (!a && b) { 53912 return(-1); 53913 } 53914 if (a && !b) { 53915 return(1); 53916 } 53917 return(strcmp(*(char *const*)a,*(char *const*)b)); 53918 } 53919 53920 /** 53921 * list Sort String 53922 * duplicate list and sort 53923 * 53924 * \param 53925 * list 53926 * \return 53927 * new sorted list (you must free the pointer with listFreeS) 53928 * empty list when list is empty 53929 * NULL when list is NULL 53930 */ 53931 char **listSortS(char **list) { 53932 size_t len; 53933 char **l = NULL; 53934 53935 // sanity checks 53936 if (!list) { 53937 return(NULL); 53938 } 53939 len = listLengthS(list); 53940 // duplicate 53941 l = listDupS(list); 53942 if (!len) { 53943 return(l); 53944 } 53945 // sort 53946 qsort(l, len, sizeof(char *), listSortSCmp); 53947 return(l); 53948 } 53949 53950 /** 53951 * list Sort String 53952 * 53953 * \param 53954 * list 53955 * \return 53956 * sorted list 53957 * empty list when list is empty 53958 * unchanged list when list is NULL 53959 * NULL error 53960 */ 53961 char **iListSortS(char ***list) { 53962 size_t len; 53963 53964 // sanity checks 53965 if (!list || !*list) { 53966 return(NULL); 53967 } 53968 len = listLengthS(*list); 53969 if (!len) { 53970 return(NULL); 53971 } 53972 // sort 53973 qsort(*list, len, sizeof(char *), listSortSCmp); 53974 return(*list); 53975 } 53976 53977 /** 53978 * list Sort String 53979 * duplicate list and sort 53980 * 53981 * \param 53982 * list 53983 * compareFunction 53984 * \return 53985 * new sorted list (you must free the pointer with listFreeS) 53986 * empty list when list is empty 53987 * NULL when list is NULL 53988 */ 53989 char **listSortFS(char **list, shCmpt compareFunction) { 53990 size_t len; 53991 char **l = NULL; 53992 53993 // sanity checks 53994 if (!list || !compareFunction) { 53995 return(NULL); 53996 } 53997 len = listLengthS(list); 53998 // duplicate 53999 l = listDupS(list); 54000 if (!len) { 54001 return(l); 54002 } 54003 // sort 54004 qsort(l, len, sizeof(char *), compareFunction); 54005 return(l); 54006 } 54007 54008 /** 54009 * list Sort String 54010 * 54011 * \param 54012 * list 54013 * compareFunction 54014 * \return 54015 * sorted list 54016 * empty list when list is empty 54017 * unchanged list when list is NULL 54018 * NULL error 54019 */ 54020 char **iListSortFS(char ***list, shCmpt compareFunction) { 54021 size_t len; 54022 54023 // sanity checks 54024 if (!list || !*list) { 54025 return(NULL); 54026 } 54027 len = listLengthS(*list); 54028 if (!len) { 54029 return(NULL); 54030 } 54031 // sort 54032 qsort(*list, len, sizeof(char *), compareFunction); 54033 return(*list); 54034 } 54035 54036 54037 /** 54038 * ignore case list Sort String Compare function 54039 * 54040 * in: 54041 * a 54042 * b 54043 * out: 54044 * test result 54045 */ 54046 internal int icListSortSCmp(const void * a, const void * b) { 54047 54048 // sanity checks 54049 if (!a && !b) { 54050 return(0); 54051 } 54052 if (!a && b) { 54053 return(-1); 54054 } 54055 if (a && !b) { 54056 return(1); 54057 } 54058 return(strcasecmp(*(char *const*)a,*(char *const*)b)); 54059 } 54060 54061 /** 54062 * ignore case list Sort String 54063 * duplicate list and sort 54064 * 54065 * \param 54066 * list 54067 * \return 54068 * new sorted list (you must free the pointer with listFreeS) 54069 * empty list when list is empty 54070 * NULL when list is NULL 54071 */ 54072 char **icListSortS(char **list) { 54073 size_t len; 54074 char **l = NULL; 54075 54076 // sanity checks 54077 if (!list) { 54078 return(NULL); 54079 } 54080 len = listLengthS(list); 54081 // duplicate 54082 l = listDupS(list); 54083 if (!len) { 54084 return(l); 54085 } 54086 // sort 54087 qsort(l, len, sizeof(char *), icListSortSCmp); 54088 return(l); 54089 } 54090 54091 /** 54092 * ignore case list Sort String 54093 * 54094 * \param 54095 * list 54096 * \return 54097 * sorted list 54098 * empty list when list is empty 54099 * unchanged list when list is NULL 54100 * NULL error 54101 */ 54102 char **iicListSortS(char ***list) { 54103 size_t len; 54104 54105 // sanity checks 54106 if (!list || !*list) { 54107 return(NULL); 54108 } 54109 len = listLengthS(*list); 54110 if (!len) { 54111 return(NULL); 54112 } 54113 // sort 54114 qsort(*list, len, sizeof(char *), icListSortSCmp); 54115 return(*list); 54116 } 54117 54118 54119 /** 54120 * return text from filePath in a list 54121 * new line characters are removed 54122 * 54123 * \param 54124 * filePath: file path 54125 * \return 54126 * lines in list (you must free the pointer with listFreeS) 54127 * empty list when the file is empty 54128 * NULL on failure 54129 */ 54130 /* this readText has the same performance as the original and takes twice the amount of RAM */ 54131 /* most of the cycles are spent in listLengthS */ 54132 /* char **readText(const char *filePath) */ 54133 /* size_t len */ 54134 /* char *buf */ 54135 /* char **list */ 54136 /* */ 54137 /* // sanity checks */ 54138 /* if !filePath */ 54139 /* return NULL */ 54140 /* */ 54141 /* buf = readFileToS(filePath) */ 54142 /* if !buf */ 54143 /* return NULL */ 54144 /* len = fileSize(filePath) */ 54145 /* if len = 0 */ 54146 /* free buf */ 54147 /* return listEmptySF() */ 54148 /* if buf[len-1] = '\n' */ 54149 /* // remove last return char to avoid empty line in split */ 54150 /* buf[len-1] = 0 */ 54151 /* list = split(buf, "\n") */ 54152 /* free buf */ 54153 /* return list */ 54154 54155 char **readText(const char *filePath) { 54156 FILE *fp = NULL; 54157 size_t len; 54158 char* line = NULL; 54159 ssize_t read; 54160 char **list = NULL; 54161 54162 // sanity checks 54163 if (!filePath || isBlankS(filePath)) { 54164 return(NULL); 54165 } 54166 fp = fopen(filePath, "r"); 54167 if (!fp) { 54168 pFuncError 54169 shEPrintfS("The path was: \"%s\"\n", filePath); 54170 return(NULL); 54171 } 54172 // read all lines 54173 read = getline(&line, &len, fp); 54174 size_t index = 0; 54175 size_t alloc = sizeof(*list); 54176 list = MALLOC(alloc); 54177 if (!list) { 54178 goto end; 54179 } 54180 *list = NULL; 54181 while (read != -1) { 54182 { 54183 char* pos = NULL; 54184 pos = strchr(line, '\n'); 54185 if (pos != NULL) 54186 *pos = '\0'; 54187 } 54188 size_t newsize = makeRoom((index+1) * sizeof(*list), alloc, sizeof(*list)); 54189 if (newsize != alloc) { 54190 char **tmp = REALLOC(list, newsize); 54191 if (!tmp) { 54192 listFreeS(list); 54193 list = NULL; 54194 goto end; 54195 } 54196 alloc = newsize; 54197 list = tmp; 54198 } 54199 list[index] = strdup(line); 54200 list[++index] = NULL; 54201 read = getline(&line, &len, fp); 54202 } 54203 end: 54204 fclose(fp); 54205 free(line); 54206 return(list); 54207 } 54208 54209 /** 54210 * return text from stream fp in a list 54211 * new line characters are removed 54212 * 54213 * \param 54214 * fp: file stream 54215 * \return 54216 * lines in list (you must free the pointer with listFreeS) 54217 * empty list when there is no data in the stream 54218 * NULL on failure 54219 */ 54220 char **readStream(FILE *fp) { 54221 size_t len; 54222 char* line = NULL; 54223 ssize_t read; 54224 char **list = NULL; 54225 54226 // sanity checks 54227 if (!fp) { 54228 return(NULL); 54229 } 54230 // read all lines 54231 read = getline(&line, &len, (FILE *) fp); 54232 while (read != -1) { 54233 { 54234 char* pos = NULL; 54235 pos = strchr(line, '\n'); 54236 if (pos != NULL) 54237 *pos = '\0'; 54238 } 54239 pErrorNULL(iListPushS(&list, line)); 54240 line = NULL; 54241 len = 0; 54242 read = getline(&line, &len, (FILE *) fp); 54243 } 54244 free(line); 54245 if (!list) { 54246 // nothing was read 54247 listEmptyS(list); 54248 } 54249 return(list); 54250 } 54251 54252 /** 54253 * write list to filePath 54254 * 54255 * \param 54256 * filePath 54257 * \param 54258 * list 54259 * \return 54260 * true success 54261 * false failed, filePath or list are NULL 54262 */ 54263 bool writeText(const char *filePath, char **list) { 54264 FILE *fp = NULL; 54265 54266 // sanity checks 54267 if (!filePath || isBlankS(filePath)) { 54268 return(false); 54269 } 54270 54271 fp = fopen(filePath, "w"); 54272 if (!fp) { 54273 pFuncError 54274 shEPrintfS("The path was: \"%s\"\n", filePath); 54275 return(false); 54276 } 54277 if (!list) { 54278 fclose(fp); 54279 return(false); 54280 } 54281 forEachCharP(list, e) { 54282 // add new line 54283 fprintf(fp, "%s\n", *e); 54284 } 54285 fclose(fp); 54286 return(true); 54287 } 54288 54289 /** 54290 * write const list to filePath 54291 * 54292 * \param 54293 * filePath 54294 * \param 54295 * list 54296 * \return 54297 * true success 54298 * false failed, filePath or list are NULL 54299 */ 54300 bool writeCText(const char *filePath, const char **list) { 54301 FILE *fp = NULL; 54302 54303 // sanity checks 54304 if (!filePath || isBlankS(filePath)) { 54305 return(false); 54306 } 54307 54308 fp = fopen(filePath, "w"); 54309 if (!fp) { 54310 pFuncError 54311 shEPrintfS("The path was: \"%s\"\n", filePath); 54312 return(false); 54313 } 54314 if (!list) { 54315 fclose(fp); 54316 return(false); 54317 } 54318 forEachCCharP(list, e) { 54319 // add new line 54320 fprintf(fp, "%s\n", *e); 54321 } 54322 fclose(fp); 54323 return(true); 54324 } 54325 54326 /** 54327 * write list to stream 54328 * 54329 * \param 54330 * fp: file stream 54331 * \param 54332 * list 54333 * \return 54334 * true success 54335 * false failed, fp or list are NULL 54336 */ 54337 bool writeStream(FILE *fp, char **list) { 54338 54339 // sanity checks 54340 if (!fp || !list) { 54341 return(false); 54342 } 54343 forEachCharP(list, e) { 54344 // add new line 54345 fprintf((FILE*)fp, "%s\n", *e); 54346 } 54347 return(true); 54348 } 54349 54350 /** 54351 * write const list to stream 54352 * 54353 * \param 54354 * fp: file stream 54355 * \param 54356 * list 54357 * \return 54358 * true success 54359 * false failed, fp or list are NULL 54360 */ 54361 bool writeCStream(FILE *fp, const char **list) { 54362 54363 // sanity checks 54364 if (!fp || !list) { 54365 return(false); 54366 } 54367 forEachCCharP(list, e) { 54368 // add new line 54369 fprintf((FILE*)fp, "%s\n", *e); 54370 } 54371 return(true); 54372 } 54373 54374 /** 54375 * append list to filePath 54376 * 54377 * \param 54378 * filePath 54379 * \param 54380 * list 54381 * \return 54382 * true success 54383 * false failed, filePath or list are NULL 54384 */ 54385 bool appendText(const char *filePath, char **list) { 54386 FILE *fp = NULL; 54387 54388 // sanity checks 54389 if (!filePath || isBlankS(filePath)) { 54390 return(false); 54391 } 54392 54393 fp = fopen(filePath, "a"); 54394 if (!fp) { 54395 pFuncError 54396 shEPrintfS("The path was: \"%s\"\n", filePath); 54397 return(false); 54398 } 54399 if (!list) { 54400 fclose(fp); 54401 return(false); 54402 } 54403 forEachCharP(list, e) { 54404 // add new line 54405 fprintf(fp, "%s\n", *e); 54406 } 54407 fclose(fp); 54408 return(true); 54409 } 54410 54411 /** 54412 * append const list to filePath 54413 * 54414 * \param 54415 * filePath 54416 * \param 54417 * list 54418 * \return 54419 * true success 54420 * false failed, filePath or list are NULL 54421 */ 54422 bool appendCText(const char *filePath, const char **list) { 54423 FILE *fp = NULL; 54424 54425 // sanity checks 54426 if (!filePath || isBlankS(filePath)) { 54427 return(false); 54428 } 54429 54430 fp = fopen(filePath, "a"); 54431 if (!fp) { 54432 pFuncError 54433 shEPrintfS("The path was: \"%s\"\n", filePath); 54434 return(false); 54435 } 54436 if (!list) { 54437 fclose(fp); 54438 return(false); 54439 } 54440 forEachCCharP(list, e) { 54441 // add new line 54442 fprintf(fp, "%s\n", *e); 54443 } 54444 fclose(fp); 54445 return(true); 54446 } 54447 54448 /** 54449 * execute command 54450 * return stdout from cmd 54451 * 54452 * \param 54453 * cmd: command 54454 * \return 54455 * stdout from command in a list (you must free the pointer with listFreeS) 54456 * empty list when command didnt produce any output 54457 * NULL when cmd is NULL 54458 */ 54459 char **execOut(const char *cmd) { 54460 FILE* fp = NULL; 54461 char **list = NULL; 54462 54463 // sanity checks 54464 if (!cmd) { 54465 return(NULL); 54466 } 54467 54468 fp = popen(cmd, "r"); 54469 if (!fp) { 54470 pFuncError 54471 shEPrintfS("The command was: \"%s\"\n", cmd); 54472 return(NULL);//LCOV_EXCL_LINE 54473 } 54474 54475 list = readStream(fp); 54476 54477 pclose(fp); 54478 return(list); 54479 } 54480 54481 /** 54482 * execute system command with formatting 54483 * 54484 * \param 54485 * formatting 54486 * \return 54487 * stdout from command in a list (you must free the pointer with listFreeS) 54488 * empty list when command didnt produce any output 54489 * NULL when cmd is NULL 54490 */ 54491 char **systemOutf(const char *fmt, ...) { 54492 char *cmd = NULL; 54493 va_list pl; 54494 54495 if (!fmt) { 54496 return(NULL); 54497 } 54498 va_start(pl, fmt); 54499 if (vasprintf(&cmd, fmt, pl) == -1) { 54500 return(NULL); 54501 } 54502 va_end(pl); 54503 54504 char **r = execOut(cmd); 54505 free(cmd); 54506 return(r); 54507 } 54508 54509 /** 54510 * execute system command with formatting 54511 * 54512 * \param 54513 * formatting 54514 * \return 54515 * system return code 54516 */ 54517 int systemf(const char *fmt, ...) { 54518 char *cmd = NULL; 54519 va_list pl; 54520 54521 if (!fmt) { 54522 return(-1); 54523 } 54524 va_start(pl, fmt); 54525 if (vasprintf(&cmd, fmt, pl) == -1) { 54526 va_end(pl); 54527 return(-1); 54528 } 54529 va_end(pl); 54530 54531 return(systemNFree(cmd)); 54532 } 54533 54534 /** 54535 * run command in default shell 54536 * 54537 * Exit value equals to 127 is considered an error 54538 * because if a shell could not be executed in the child process, then 54539 * the return value from system() is 127 (man 3 system). 54540 * 54541 * \param 54542 * cmd command string 54543 * \return 54544 * command exit code 54545 * -1 when cmd is NULL or system exited with errors 54546 */ 54547 int commandF(const char *cmd, int line, const char *thisFunc, const char *thisFileName) { 54548 54549 if (!cmd) { 54550 shEPrintfS("\nSystem Error at %d, %s, %s. The command was: NULL\n", line, thisFunc, thisFileName); 54551 return(-1); 54552 } 54553 54554 int r = system(cmd); 54555 54556 if (!WIFEXITED(r)) { 54557 shEPrintfS("\nSystem Error at %d, %s, %s. The command was: \"%s\"\n", line, thisFunc, thisFileName, cmd); 54558 return(-1); 54559 } 54560 54561 r = WEXITSTATUS(r);; 54562 54563 if (r == 127) { 54564 shEPrintfS("\nSystem Error at %d, %s, %s. The command was: \"%s\"\n", line, thisFunc, thisFileName, cmd); 54565 return(-1); 54566 } 54567 54568 return(r); 54569 } 54570 54571 /** 54572 * run command with formatting in default shell 54573 * 54574 * Exit value equals to 127 is considered an error 54575 * because if a shell could not be executed in the child process, then 54576 * the return value from system() is 127 (man 3 system). 54577 * 54578 * \param 54579 * formatting 54580 * \return 54581 * command exit code 54582 * -1 when cmd is NULL or system exited with errors 54583 */ 54584 int commandfF(int line, const char *thisFunc, const char *thisFileName, const char *fmt, ...) { 54585 char *cmd = NULL; 54586 va_list pl; 54587 54588 if (!fmt) { 54589 return(-1); 54590 } 54591 va_start(pl, fmt); 54592 if (vasprintf(&cmd, fmt, pl) == -1) { 54593 va_end(pl); 54594 return(-1); 54595 } 54596 va_end(pl); 54597 54598 return(commandNFreeF(cmd, line, thisFunc, thisFileName)); 54599 } 54600 54601 /** 54602 * run command in default shell and free the cmd parameter 54603 * 54604 * Exit value equals to 127 is considered an error 54605 * because if a shell could not be executed in the child process, then 54606 * the return value from system() is 127 (man 3 system). 54607 * 54608 * \param 54609 * cmd command string 54610 * \return 54611 * command exit code 54612 * -1 when cmd is NULL or system exited with errors 54613 */ 54614 int commandNFreeF(char *cmd, int line, const char *thisFunc, const char *thisFileName) { 54615 int r; 54616 54617 r = commandF(cmd, line, thisFunc, thisFileName); 54618 free(cmd); 54619 return(r); 54620 } 54621 54622 /** 54623 * list Equal String 54624 * compare each element of list1 and list2 54625 * 54626 * \param 54627 * 2 lists 54628 * \return 54629 * true the lists have identical elements 54630 * false they differ 54631 */ 54632 bool listEqS(char **list1, char **list2) { 54633 54634 // sanity checks 54635 if (!list1 || !list2) { 54636 return(false); 54637 } 54638 if (listLengthS(list1) != listLengthS(list2)) { 54639 return(false); 54640 } 54641 54642 // compare elements 54643 enumerateCharP(list1, e, i) { 54644 if (!strEq(*e, list2[i])) { 54645 return(false); 54646 } 54647 } 54648 54649 return(true); 54650 } 54651 54652 /** 54653 * const(list2) list Equal String 54654 * compare each element of list1 and list2 54655 * 54656 * \param 54657 * 2 lists 54658 * \return 54659 * true the lists have identical elements 54660 * false they differ 54661 */ 54662 bool listEqCS(char **list1, const char **list2) { 54663 54664 // sanity checks 54665 if (!list1 || !list2) { 54666 return(false); 54667 } 54668 if (listLengthS(list1) != listLengthCS(list2)) { 54669 return(false); 54670 } 54671 54672 // compare elements 54673 enumerateCharP(list1, e, i) { 54674 if (!strEq(*e, list2[i])) { 54675 return(false); 54676 } 54677 } 54678 54679 return(true); 54680 } 54681 54682 /** 54683 * const(list1) list Equal String 54684 * compare each element of list1 and list2 54685 * 54686 * \param 54687 * 2 lists 54688 * \return 54689 * true the lists have identical elements 54690 * false they differ 54691 */ 54692 bool listEqC1S(const char **list1, char **list2) { 54693 54694 // sanity checks 54695 if (!list1 || !list2) { 54696 return(false); 54697 } 54698 if (listLengthCS(list1) != listLengthS(list2)) { 54699 return(false); 54700 } 54701 54702 // compare elements 54703 enumerateCCharP(list1, e, i) { 54704 if (!strEq(*e, list2[i])) { 54705 return(false); 54706 } 54707 } 54708 54709 return(true); 54710 } 54711 54712 /** 54713 * const(list1 and 2) list Equal String 54714 * compare each element of list1 and list2 54715 * 54716 * \param 54717 * 2 lists 54718 * \return 54719 * true the lists have identical elements 54720 * false they differ 54721 */ 54722 bool listEqCCS(const char **list1, const char **list2) { 54723 54724 // sanity checks 54725 if (!list1 || !list2) { 54726 return(false); 54727 } 54728 if (listLengthCS(list1) != listLengthCS(list2)) { 54729 return(false); 54730 } 54731 54732 // compare elements 54733 enumerateCCharP(list1, e, i) { 54734 if (!strEq(*e, list2[i])) { 54735 return(false); 54736 } 54737 } 54738 54739 return(true); 54740 } 54741 54742 /** 54743 * return true when list has string 54744 * 54745 * \param 54746 * list 54747 * \param 54748 * string 54749 * \return 54750 * true when list has string 54751 * false when the string is not found 54752 * false when list or string are NULL 54753 */ 54754 bool listHasS(char **list, const char *string) { 54755 54756 if (!list || !string) { 54757 return(false); 54758 } 54759 if (listIndexOfS(list, string) == -1) { 54760 return(false); 54761 } 54762 return(true); 54763 } 54764 54765 /** 54766 * return true when const list has string 54767 * 54768 * \param 54769 * list 54770 * \param 54771 * string 54772 * \return 54773 * true when list has string 54774 * false when the string is not found 54775 * false when list or string are NULL 54776 */ 54777 bool listHasCS(const char **list, const char *string) { 54778 54779 if (!list || !string) { 54780 return(false); 54781 } 54782 if (listIndexOfCS(list, string) == -1) { 54783 return(false); 54784 } 54785 return(true); 54786 } 54787 54788 bool listHasCharS(char **list, char c) { 54789 54790 charToS(s, c); 54791 return(listHasS(list, s)); 54792 } 54793 54794 bool listHasCharCS(const char **list, char c) { 54795 54796 charToS(s, c); 54797 return(listHasCS(list, s)); 54798 } 54799 54800 /** 54801 * return index of string in list 54802 * 54803 * \param 54804 * list 54805 * \param 54806 * string 54807 * \return 54808 * index 54809 * -1 when the string is not found 54810 * -1 when list or string are NULL 54811 */ 54812 ssize_t listIndexOfS(char **list, const char *string) { 54813 bool found = false;; 54814 54815 // sanity checks 54816 if (!list || !string) { 54817 return(-1); 54818 } 54819 // search string in elements 54820 enumerateCharP(list, e, i) { 54821 if (strEq(*e, string)) { 54822 found = true; 54823 break; 54824 } 54825 } 54826 if (found) { 54827 return((ssize_t)i); 54828 } 54829 else { 54830 return(-1); 54831 } 54832 } 54833 54834 /** 54835 * return index of string in const list 54836 * 54837 * \param 54838 * list 54839 * \param 54840 * string 54841 * \return 54842 * index 54843 * -1 when the string is not found 54844 * -1 when list or string are NULL 54845 */ 54846 ssize_t listIndexOfCS(const char **list, const char *string) { 54847 bool found = false;; 54848 54849 // sanity checks 54850 if (!list || !string) { 54851 return(-1); 54852 } 54853 // search string in elements 54854 enumerateCCharP(list, e, i) { 54855 if (strEq(*e, string)) { 54856 found = true; 54857 break; 54858 } 54859 } 54860 if (found) { 54861 return((ssize_t)i); 54862 } 54863 else { 54864 return(-1); 54865 } 54866 } 54867 54868 ssize_t listIndexOfCharS(char **list, char c) { 54869 54870 charToS(s, c); 54871 return(listIndexOfS(list, s)); 54872 } 54873 54874 ssize_t listIndexOfCharCS(const char **list, char c) { 54875 54876 charToS(s, c); 54877 return(listIndexOfCS(list, s)); 54878 } 54879 54880 /** 54881 * list binary search string 54882 * 54883 * efficiently finds the index of string in list 54884 * the list has to be sorted with for example listSortS 54885 * 54886 * \param 54887 * list 54888 * \param 54889 * string to search 54890 * \return 54891 * index of string 54892 * -1 string not found or NULL input pointers 54893 */ 54894 ssize_t listBinarySearchS(char **list, const char *string) { 54895 ssize_t first = 0, middle, last;; 54896 54897 if (!list || !string) { 54898 return(-1); 54899 } 54900 54901 last = (ssize_t)(listLengthS(list) - 1); 54902 while (first <= last) { 54903 middle = (first+last)/2; 54904 if (strcmp(list[middle], string) < 0) { 54905 first = middle + 1; 54906 } 54907 else if (strcmp(list[middle], string) == 0) { 54908 return(middle); 54909 } 54910 else { 54911 last = middle -1; 54912 } 54913 } 54914 return(-1); 54915 } 54916 54917 ssize_t listBinarySearchCharS(char **list, char c) { 54918 54919 charToS(s, c); 54920 return(listBinarySearchS(list, s)); 54921 } 54922 54923 /** 54924 * Uniquify elements of list 54925 * duplicate list 54926 * each elements are unique in the new list 54927 * 54928 * \param 54929 * list 54930 * \return 54931 * new list with unique elements (you must free the pointer with listFreeS) 54932 * empty list when list is empty 54933 * NULL when list is NULL 54934 */ 54935 char **listUniqS(char **list) { 54936 char **r = NULL; 54937 54938 // sanity checks 54939 if (!list) { 54940 return(NULL); 54941 } 54942 54943 size_t len = listLengthS(list); 54944 54945 if (!len) { 54946 listEmptyS(r); 54947 return(r); 54948 } 54949 pErrorNULL(listPushS(&r, list[0])); 54950 // one element list 54951 if (len == 1) { 54952 return(r); 54953 } 54954 // push element to new list if it is not already in new list 54955 forEachCharP(list, e) { 54956 if (listIndexOfS(r, *e) == -1) { 54957 pErrorNULL(listPushS(&r, *e)); 54958 } 54959 } 54960 return(r); 54961 } 54962 54963 /** 54964 * Uniquify elements of list 54965 * each elements are unique in the list 54966 * 54967 * \param 54968 * list (this parameter is reallocated) 54969 * \return 54970 * list with unique elements (you must free the pointer with listFreeS) 54971 * empty list when list is empty 54972 * unchanged list when list is NULL 54973 * NULL error 54974 */ 54975 char **iListUniqS(char ***list) { 54976 char **r = NULL; 54977 54978 // sanity checks 54979 if (!list || !*list) { 54980 return(NULL); 54981 } 54982 54983 size_t len = listLengthS(*list); 54984 54985 if (!len) { 54986 listEmptyS(r); 54987 } 54988 else if (len == 1) { 54989 // one element list 54990 pErrorNULL(iListPushS(&r, (*list)[0])); 54991 } 54992 else { 54993 // push element to new list if it is not already in new list 54994 forEachCharP(*list, e) { 54995 if (listIndexOfS(r, *e) == -1) { 54996 pErrorNULL(iListPushS(&r, *e)); 54997 } 54998 else { 54999 free(*e); 55000 } 55001 } 55002 } 55003 55004 free(*list); 55005 *list = r; 55006 return(r); 55007 } 55008 55009 /** 55010 * ignore case list Equal String 55011 * compare each element of list1 and list2 55012 * 55013 * \param 55014 * 2 lists 55015 * \return 55016 * true the lists have identical elements 55017 * false they differ 55018 */ 55019 bool icListEqS(char **list1, char **list2) { 55020 55021 // sanity checks 55022 if (!list1 || !list2) { 55023 return(false); 55024 } 55025 if (listLengthS(list1) != listLengthS(list2)) { 55026 return(false); 55027 } 55028 55029 // compare elements 55030 enumerateCharP(list1, e, i) { 55031 if (!icEqS(*e, list2[i])) { 55032 return(false); 55033 } 55034 } 55035 55036 return(true); 55037 } 55038 55039 /** 55040 * ignore case const(list2) list Equal String 55041 * compare each element of list1 and list2 55042 * 55043 * \param 55044 * 2 lists 55045 * \return 55046 * true the lists have identical elements 55047 * false they differ 55048 */ 55049 bool icListEqCS(char **list1, const char **list2) { 55050 55051 // sanity checks 55052 if (!list1 || !list2) { 55053 return(false); 55054 } 55055 if (listLengthS(list1) != listLengthCS(list2)) { 55056 return(false); 55057 } 55058 55059 // compare elements 55060 enumerateCharP(list1, e, i) { 55061 if (!icEqS(*e, list2[i])) { 55062 return(false); 55063 } 55064 } 55065 55066 return(true); 55067 } 55068 55069 /** 55070 * ignore case const(list1) list Equal String 55071 * compare each element of list1 and list2 55072 * 55073 * \param 55074 * 2 lists 55075 * \return 55076 * true the lists have identical elements 55077 * false they differ 55078 */ 55079 bool icListEqC1S(const char **list1, char **list2) { 55080 55081 // sanity checks 55082 if (!list1 || !list2) { 55083 return(false); 55084 } 55085 if (listLengthCS(list1) != listLengthS(list2)) { 55086 return(false); 55087 } 55088 55089 // compare elements 55090 enumerateCCharP(list1, e, i) { 55091 if (!icEqS(*e, list2[i])) { 55092 return(false); 55093 } 55094 } 55095 55096 return(true); 55097 } 55098 55099 /** 55100 * ignore case const(list1 and 2) list Equal String 55101 * compare each element of list1 and list2 55102 * 55103 * \param 55104 * 2 lists 55105 * \return 55106 * true the lists have identical elements 55107 * false they differ 55108 */ 55109 bool icListEqCCS(const char **list1, const char **list2) { 55110 55111 // sanity checks 55112 if (!list1 || !list2) { 55113 return(false); 55114 } 55115 if (listLengthCS(list1) != listLengthCS(list2)) { 55116 return(false); 55117 } 55118 55119 // compare elements 55120 enumerateCCharP(list1, e, i) { 55121 if (!icEqS(*e, list2[i])) { 55122 return(false); 55123 } 55124 } 55125 55126 return(true); 55127 } 55128 55129 /** 55130 * ignore case and return true when list has string 55131 * 55132 * \param 55133 * list 55134 * \param 55135 * string 55136 * \return 55137 * true when list has string 55138 * false when the string is not found 55139 * false when list or string are NULL 55140 */ 55141 bool icListHasS(char **list, const char *string) { 55142 55143 if (!list || !string) { 55144 return(false); 55145 } 55146 if (icListIndexOfS(list, string) == -1) { 55147 return(false); 55148 } 55149 return(true); 55150 } 55151 55152 bool icListHasCharS(char **list, char c) { 55153 55154 charToS(s, c); 55155 return(icListHasS(list, s)); 55156 } 55157 55158 /** 55159 * ignore case and return true when const list has string 55160 * 55161 * \param 55162 * list 55163 * \param 55164 * string 55165 * \return 55166 * true when list has string 55167 * false when the string is not found 55168 * false when list or string are NULL 55169 */ 55170 bool icListHasCS(const char **list, const char *string) { 55171 55172 if (!list || !string) { 55173 return(false); 55174 } 55175 if (icListIndexOfCS(list, string) == -1) { 55176 return(false); 55177 } 55178 return(true); 55179 } 55180 55181 bool icListHasCharCS(const char **list, char c) { 55182 55183 charToS(s, c); 55184 return(icListHasCS(list, s)); 55185 } 55186 55187 /** 55188 * ignore case and return index of string in list 55189 * 55190 * \param 55191 * list 55192 * \param 55193 * string 55194 * \return 55195 * index 55196 * -1 when the string is not found 55197 * -1 when list or string are NULL 55198 */ 55199 ssize_t icListIndexOfS(char **list, const char *string) { 55200 bool found = false;; 55201 55202 // sanity checks 55203 if (!list || !string) { 55204 return(-1); 55205 } 55206 // search string in elements 55207 enumerateCharP(list, e, i) { 55208 if (icEqS(*e, string)) { 55209 found = true; 55210 break; 55211 } 55212 } 55213 if (found) { 55214 return((ssize_t)i); 55215 } 55216 else { 55217 return(-1); 55218 } 55219 } 55220 55221 /** 55222 * ignore case and return index of string in const list 55223 * 55224 * \param 55225 * list 55226 * \param 55227 * string 55228 * \return 55229 * index 55230 * -1 when the string is not found 55231 * -1 when list or string are NULL 55232 */ 55233 ssize_t icListIndexOfCS(const char **list, const char *string) { 55234 bool found = false;; 55235 55236 // sanity checks 55237 if (!list || !string) { 55238 return(-1); 55239 } 55240 // search string in elements 55241 enumerateCCharP(list, e, i) { 55242 if (icEqS(*e, string)) { 55243 found = true; 55244 break; 55245 } 55246 } 55247 if (found) { 55248 return((ssize_t)i); 55249 } 55250 else { 55251 return(-1); 55252 } 55253 } 55254 55255 ssize_t icListIndexOfCharS(char **list, char c) { 55256 55257 charToS(s, c); 55258 return(icListIndexOfS(list, s)); 55259 } 55260 55261 ssize_t icListIndexOfCharCS(const char **list, char c) { 55262 55263 charToS(s, c); 55264 return(icListIndexOfCS(list, s)); 55265 } 55266 55267 /** 55268 * ignore case list binary search string 55269 * 55270 * efficiently finds the index of string in list 55271 * the list has be sorted with for example listSortS 55272 * 55273 * \param 55274 * list 55275 * \param 55276 * string to search 55277 * \return 55278 * index of string 55279 * -1 string not found or NULL input pointers 55280 */ 55281 ssize_t icListBinarySearchS(char **list, const char *string) { 55282 ssize_t first = 0, middle, last;; 55283 55284 if (!list || !string) { 55285 return(-1); 55286 } 55287 55288 last = (ssize_t)listLengthS(list) - 1; 55289 while (first <= last) { 55290 middle = (first+last)/2; 55291 if (strcasecmp(list[middle], string) < 0) { 55292 first = middle + 1; 55293 } 55294 else if (strcasecmp(list[middle], string) == 0) { 55295 return(middle); 55296 } 55297 else { 55298 last = middle -1; 55299 } 55300 } 55301 return(-1); 55302 } 55303 55304 ssize_t icListBinarySearchCharS(char **list, char c) { 55305 55306 charToS(s, c); 55307 return(icListBinarySearchS(list, s)); 55308 } 55309 55310 /** 55311 * ignore case and uniquify elements of list 55312 * duplicate list 55313 * each elements are unique in the new list 55314 * 55315 * \param 55316 * list 55317 * \return 55318 * new list with unique elements (you must free the pointer with listFreeS) 55319 * empty list when list is empty 55320 * NULL when list is NULL 55321 */ 55322 char **icListUniqS(char **list) { 55323 char **r = NULL; 55324 55325 // sanity checks 55326 if (!list) { 55327 return(NULL); 55328 } 55329 55330 size_t len = listLengthS(list); 55331 55332 if (!len) { 55333 listEmptyS(r); 55334 return(r); 55335 } 55336 pErrorNULL(listPushS(&r, list[0])); 55337 // one element list 55338 if (listLengthS(list) == 1) { 55339 return(r); 55340 } 55341 // push element to new list if it is not already in new list 55342 forEachCharP(list, e) { 55343 if (icListIndexOfS(r, *e) == -1) { 55344 pErrorNULL(listPushS(&r, *e)); 55345 } 55346 } 55347 return(r); 55348 } 55349 55350 /** 55351 * ignore case and uniquify elements of list 55352 * each elements are unique in the list 55353 * 55354 * \param 55355 * list (this parameter is reallocated) 55356 * \return 55357 * list with unique elements (you must free the pointer with listFreeS) 55358 * empty list when list is empty 55359 * unchanged list when list is NULL 55360 * NULL error 55361 */ 55362 char **iicListUniqS(char ***list) { 55363 char **r = NULL; 55364 55365 // sanity checks 55366 if (!list || !*list) { 55367 return(NULL); 55368 } 55369 55370 size_t len = listLengthS(*list); 55371 55372 if (!len) { 55373 listEmptyS(r); 55374 } 55375 else if (len == 1) { 55376 // one element list 55377 pErrorNULL(iListPushS(&r, (*list)[0])); 55378 } 55379 else { 55380 // push element to new list if it is not already in new list 55381 forEachCharP(*list, e) { 55382 if (icListIndexOfS(r, *e) == -1) { 55383 pErrorNULL(iListPushS(&r, *e)); 55384 } 55385 else { 55386 free(*e); 55387 } 55388 } 55389 } 55390 55391 free(*list); 55392 *list = r; 55393 return(r); 55394 } 55395 55396 /** 55397 * remove empty strings from list 55398 * 55399 * \param 55400 * list 55401 * \return 55402 * list without empty strings (you must free the pointer with listFreeS) 55403 * empty list when list is empty 55404 * NULL when list is NULL 55405 */ 55406 char **listCompactS(char **list) { 55407 char **r = NULL; 55408 55409 // sanity checks 55410 if (!list) { 55411 return(NULL); 55412 } 55413 55414 // keep non empty elements 55415 forEachCharP(list, e) { 55416 char *trim = trimS(*e); 55417 if (*trim != 0) { 55418 pErrorNULL(listPushS(&r, *e)); 55419 } 55420 free(trim); 55421 } 55422 if (!r) { 55423 // the new list is empty 55424 listEmptyS(r) 55425 } 55426 return(r); 55427 } 55428 55429 /** 55430 * remove empty strings from list 55431 * 55432 * \param 55433 * list (this parameter is reallocated) 55434 * \return 55435 * list without empty strings (you must free the pointer with listFreeS) 55436 * empty list when list is empty 55437 * unchanged list when list is NULL 55438 * NULL error 55439 */ 55440 char **iListCompactS(char ***list) { 55441 char **r = NULL; 55442 55443 // sanity checks 55444 if (!list || !*list) { 55445 return(NULL); 55446 } 55447 55448 // keep non empty elements 55449 forEachCharP(*list, e) { 55450 char *trim = trimS(*e); 55451 if (*trim != 0) { 55452 pErrorNULL(iListPushS(&r, *e)); 55453 } 55454 else { 55455 free(*e); 55456 if (!r) { 55457 // set NULL to not free a second time in iListEmptySF 55458 // when the input list is [""] 55459 *e = NULL; 55460 } 55461 } 55462 free(trim); 55463 } 55464 if (r) { 55465 free(*list); 55466 *list = r; 55467 } 55468 else { 55469 pErrorNULL(iListEmptySF(list)); 55470 } 55471 return(*list); 55472 } 55473 55474 void btraceEnable(void) { 55475 55476 btraceCfg = true; 55477 } 55478 55479 void btraceDisable(void) { 55480 55481 btraceCfg = false; 55482 } 55483 55484 bool btraceConfig(void) { 55485 55486 return(btraceCfg); 55487 } 55488 55489 /** 55490 * generate backtrace 55491 * the program has to be linked the -rdynamic option for btrace to work 55492 * btrace can backtrace 50 functions at most. 55493 * 55494 * \return 55495 * list of functions in the backtrace, the line format is: function name: source path:line number (you must free the pointer with listFreeS) 55496 */ 55497 #if (__FreeBSD__ || __TERMUX__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __sun__ || __HAIKU__) 55498 // libexecinfo is not installed by default 55499 char **btrace(void) { 55500 55501 return(NULL); 55502 } 55503 55504 #else // #if (__FreeBSD__ || __TERMUX__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __sun__ || __HAIKU__) 55505 char **btrace(void) { 55506 char **r = NULL; 55507 55508 void *bt[51]; 55509 int count = backtrace(bt, 51); 55510 55511 if (count < 2) { 55512 // the program must in at least one function (main is the first function) 55513 // this should never happen 55514 pFuncError 55515 return(NULL); 55516 } 55517 55518 // backtrace strings 55519 char **bts = backtrace_symbols(bt, count); 55520 55521 if (!bts) { 55522 pFuncError 55523 shEPrintfS("malloc failed"); 55524 return(NULL); 55525 } 55526 55527 // check that the symbols are found 55528 if (hasS(bts[0], "(+")) { 55529 logE(BLD RED "No symbols found. Link the program with the '-rdynamic' option" RST); 55530 free(bts); 55531 return(NULL); 55532 } 55533 55534 // get all function symbols 55535 const char *realProgPath = getRealProgPath(); 55536 char *cmd = formatS("readelf -W -s %s", realProgPath); 55537 char **elf = execOut(cmd); 55538 free(cmd); 55539 55540 if (!elf) { 55541 pFuncError 55542 shEPrintfS("readelf failed"); 55543 free(bts); 55544 return(NULL); 55545 } 55546 55547 // dynamic array of uint64_t to store the function addresses 55548 dArrayT(u64Ar, uint64_t); 55549 u64Ar addresses; 55550 dArrayInit(&addresses); 55551 55552 // keep only functions 55553 // symbols stores the function names 55554 char **symbols = NULL;; 55555 forEachCharP(elf, s) { 55556 // keep only one space between columns 55557 pErrorNULL(iUniqS(s, ' ')); 55558 // s = " 530: 000000000000b7e5 65 FUNC GLOBAL DEFAULT 14 zeroS" 55559 size_t len = strlen(*s); 55560 // spaces is the column number 55561 int spaces = 0; 55562 // _ is the symbol type 55563 char *_ = NULL; 55564 // addr is the function address as a string, funcName is the function identifier 55565 char *addr, *funcName; 55566 // scan the columns for current symbol 55567 range(i, len) { 55568 if (*(*s+i) == ' ') { 55569 spaces++; 55570 if (spaces == 2) { 55571 // address column 55572 addr = (*s+i+1); 55573 } 55574 if (spaces == 4) { 55575 // symbol type column 55576 _ = (*s+i+1); 55577 } 55578 if (spaces == 8) { 55579 // stop scanning the symbol line when the function name is found 55580 funcName = (*s+i+1); 55581 break; 55582 } 55583 } 55584 } 55585 if (_ and startsWithS(_, "FUNC")) { 55586 // this symbol is a function 55587 // store function name and function address as a uint64_t 55588 pErrorNULL(iListPushS(&symbols, funcName)); 55589 dArrayAppend(&addresses, parseHex(addr)); 55590 } 55591 } 55592 55593 if (!symbols) { 55594 goto end; 55595 } 55596 // TODO sort and bin search symbols 55597 55598 // convert addresses from backtrace_symbols to source code line numbers 55599 // bts lines: ./exe(main+0x69) [0x556c7d39509b] 55600 // skip btrace call 55601 rangeFrom(i, 1, (size_t)count) { 55602 size_t len = strlen(bts[i]);; 55603 char *funcName = NULL; 55604 char *offset = NULL; 55605 int status = 0; 55606 // find function name after first ( 55607 // and function address separated with + from the function name 55608 range(j, len) { 55609 if (status == 1) { 55610 if (*(bts[i]+j) == '+') { 55611 offset = bts[i]+j+1; 55612 break; 55613 } 55614 } 55615 if (*(bts[i]+j) == '(') { 55616 funcName = bts[i]+j+1; 55617 status = 1; 55618 } 55619 } 55620 if (!offset) { 55621 shEPrintfS("Could not parse backtrace string, got: '%s', expected a string in the form './exe(main+0x69) [0x556c7d39509b]'"); 55622 free(bts); 55623 return(NULL); 55624 } 55625 size_t funcNameLen = (size_t)((offset-1) - funcName); 55626 55627 // search function in all funtions from the elf file 55628 int symbolIndex = 0;; 55629 enumerateCharP(symbols, l, j) { 55630 if (strlen(*l) != funcNameLen) { 55631 continue; 55632 } 55633 if (!strncmp(funcName, *l, funcNameLen)) { 55634 // found function 55635 symbolIndex = (int)j; 55636 break; 55637 } 55638 } 55639 55640 if (symbolIndex) { 55641 // found the function 55642 cmd = formatS("addr2line -e %s 0x%x", realProgPath, dArrayAt(&addresses, symbolIndex) + parseHex(offset)); 55643 char **cres = execOut(cmd);; 55644 free(cmd); 55645 55646 if (!cres) { 55647 pFuncError 55648 shEPrintfS("addr2line failed"); 55649 continue; 55650 } 55651 55652 pErrorNULL(iListPushS(&r, formatS("%s: %s", symbols[symbolIndex], cres[0]))); 55653 55654 listFreeS(cres); 55655 } 55656 55657 if (startsWithS(funcName, "main+")) { 55658 break; 55659 } 55660 } 55661 55662 end: 55663 dArrayFree(&addresses); 55664 free(symbols); 55665 listFreeS(elf); 55666 free(bts); 55667 return(r); 55668 } 55669 #endif 55670 // #if __FreeBSD__ || __TERMUX__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __sun__ || __HAIKU__ 55671 55672 // ************************** 55673 // void ** lists 55674 // ************************** 55675 55676 /** 55677 * list Empty Function 55678 * 55679 * \return 55680 * new empty list (you must free the pointer with listFreeS) 55681 */ 55682 void **listEmptyF(void) { 55683 void **list = NULL; 55684 55685 list = MALLOC(1 * sizeof(void *)); 55686 if (list) { 55687 list[0] = NULL; 55688 } 55689 return(list); 55690 } 55691 55692 /** 55693 * list Empty Function 55694 * 55695 * \param 55696 * list list to empty (this parameter is reallocated) 55697 * \return 55698 * empty list (you must free the pointer with listFreeS) 55699 * NULL error 55700 */ 55701 void **iListEmptyF(void ***list) { 55702 55703 // sanity checks 55704 if (!list) { 55705 return(NULL); 55706 } 55707 55708 if (*list) { 55709 free(*list); 55710 } 55711 55712 *list = MALLOC(1 * sizeof(void *)); 55713 if (*list) { 55714 (*list)[0] = NULL; 55715 } 55716 return(*list); 55717 } 55718 55719 /** 55720 * list Is Empty 55721 * 55722 * \param 55723 * list 55724 * \return 55725 * false when there are elements in the list 55726 * true when list is empty 55727 * true when list is NULL 55728 */ 55729 bool listIsEmpty(void **list) { 55730 55731 // sanity checks 55732 if (!list || !*list) { 55733 return(true); 55734 } 55735 return(false); 55736 } 55737 55738 /** 55739 * list Create Function 55740 * create a list from the list of parameters 55741 * used from the listCreate(...) macro 55742 * 55743 * \param 55744 * list of elements seperated with commas 55745 * \return 55746 * list (you must free the pointer with listFreeS) 55747 * NULL when first element if NULL 55748 */ 55749 void **listCreateF(void *paramType, ...) { 55750 va_list pl; 55751 void **l = NULL; 55752 55753 //Not needed if !paramType return NULL 55754 55755 // push arguments to a list 55756 va_start(pl, paramType); 55757 paramType = va_arg(pl, void *); 55758 while (paramType) { 55759 pErrorNULL(listPush(&l, paramType)); 55760 paramType = va_arg(pl, void *); 55761 } 55762 va_end(pl); 55763 return(l); 55764 } 55765 55766 /** 55767 * list From Array 55768 * 55769 * copy array of 'size' to a new list 55770 * NULL elements are not copied to the list 55771 * 55772 * \param 55773 * array 55774 * \param 55775 * size - number of elements in the array 55776 * \return 55777 * list (you must free the pointer with listFreeS) 55778 * empty list when size is 0 55779 * NULL when array is NULL 55780 */ 55781 void **listFromArray(void **array, size_t size) { 55782 void **r = NULL; 55783 55784 // sanity checks 55785 if (!array) { 55786 return(NULL); 55787 } 55788 if (!size) { 55789 listEmpty(r); 55790 return(r); 55791 } 55792 55793 // copy array content 55794 for (size_t i = 0 ; i < size ; i++) { 55795 if (array[i]) { 55796 // remove NULL elements 55797 pErrorNULL(listPush(&r, array[i])); 55798 } 55799 } 55800 return(r); 55801 } 55802 55803 /** 55804 * list Push 55805 * 55806 * (like iListPushS) 55807 * 55808 * append s pointer at the end of the list 55809 * when list is NULL, a new list with one element is returned 55810 * when list and s are NULL return list with 2 NULL elements 55811 * when s is NULL, NULL is pushed at the end of the list 55812 * 55813 * the list is reallocated to add extra space 55814 * 55815 * \param 55816 * pointer to list - becomes NULL when realloc fails (this parameter is reallocated) 55817 * \param 55818 * s: element to push 55819 * \return 55820 * list success (you must free the pointer) 55821 * NULL error 55822 */ 55823 void **listPush(void ***list, void *s) { 55824 55825 // sanity checks 55826 if (!list || !s) { 55827 return(NULL); 55828 } 55829 55830 if (!*list) { 55831 *list = MALLOC(2 * sizeof(void *)); 55832 if (!*list) { 55833 return(NULL); 55834 } 55835 (*list)[0] = s; 55836 (*list)[1] = NULL; 55837 } 55838 else { 55839 // realloc list and copy s to last element 55840 size_t len; 55841 len = listLength(*list); 55842 void **tmp = REALLOC(*list, (len+2) * sizeof(void *)); 55843 if (!tmp) { 55844 return(NULL); 55845 } 55846 else { 55847 *list = tmp; 55848 (*list)[len+1] = NULL; 55849 (*list)[len] = s; 55850 } 55851 } 55852 return(*list); 55853 } 55854 55855 /** 55856 * list Pop 55857 * return last element from list and remove last element from the list 55858 * 55859 * \param 55860 * pointer to list (this parameter is reallocated) 55861 * \return 55862 * last element 55863 * NULL when the list is NULL or empty (first element is NULL) 55864 */ 55865 void *listPop(void ***list) { 55866 void *s = NULL; 55867 size_t len; 55868 55869 // sanity checks 55870 if (!list) { 55871 return(NULL); 55872 } 55873 55874 if (!*list || !**list) { 55875 // empty list 55876 // no element in the list 55877 return(NULL); 55878 } 55879 // copy and free last non NULL element 55880 // the number of elements including NULL element remains the same 55881 len = listLength(*list); 55882 s = (*list)[len-1]; 55883 (*list)[len-1] = NULL; 55884 return(s); 55885 } 55886 55887 /** 55888 * list Prepend 55889 * 55890 * (like iListPrependS) 55891 * 55892 * append s pointer at the beginning of the list 55893 * when list is NULL, a new list with one element is returned 55894 * when list and s are NULL return list with 2 NULL elements 55895 * when s is NULL, NULL is pushed at the end of the list 55896 * 55897 * the list is reallocated to add extra space 55898 * 55899 * \param 55900 * pointer to list - becomes NULL when realloc fails (this parameter is reallocated) 55901 * \param 55902 * s: element to prepend 55903 * \return 55904 * list success (you must free the pointer) 55905 * NULL error 55906 */ 55907 void **listPrepend(void ***list, void *s) { 55908 55909 // sanity checks 55910 if (!list || !s) { 55911 return(NULL); 55912 } 55913 55914 if (!*list) { 55915 *list = MALLOC(2 * sizeof(void *)); 55916 if (!*list) { 55917 return(NULL); 55918 } 55919 (*list)[0] = s; 55920 (*list)[1] = NULL; 55921 } 55922 else { 55923 // realloc list and copy s to last element 55924 size_t len; 55925 len = listLength(*list); 55926 void **tmp = REALLOC(*list, (len+2) * sizeof(void *)); 55927 if (!tmp) { 55928 return(NULL); 55929 } 55930 else { 55931 *list = tmp; 55932 (*list)[len+1] = NULL; 55933 // shift list 55934 for (size_t i = len; i > 0; i--) { 55935 (*list)[i] = (*list)[i-1]; 55936 } 55937 (*list)[0] = s; 55938 } 55939 } 55940 return(*list); 55941 } 55942 55943 /** 55944 * list Dequeue 55945 * return first element from list and remove last element from the list 55946 * 55947 * \param 55948 * pointer to list 55949 * \return 55950 * first element 55951 * NULL when the list is NULL or empty (first element is NULL) 55952 */ 55953 void *listDequeue(void ***list) { 55954 void *s = NULL; 55955 size_t len; 55956 55957 // sanity checks 55958 if (!list) { 55959 return(NULL); 55960 } 55961 55962 if (!*list || !**list) { 55963 // empty list 55964 // no element in the list 55965 return(NULL); 55966 } 55967 // copy and free last non NULL element 55968 // the number of elements including NULL element remains the same 55969 len = listLength(*list); 55970 s = (*list)[0]; 55971 // shift list 55972 for (size_t i = 1; i < len; i++) { 55973 (*list)[i-1] = (*list)[i]; 55974 } 55975 (*list)[len-1] = NULL; 55976 return(s); 55977 } 55978 55979 /** 55980 * list Free 55981 * 55982 * \param 55983 * list 55984 * \return 55985 * nothing 55986 */ 55987 void listFree(void **list) { 55988 55989 // sanity checks 55990 if (list) { 55991 forEachType(void, list, e) { 55992 free(*e); 55993 } 55994 free(list); 55995 } 55996 } 55997 55998 /** 55999 * list free many 56000 * 56001 * free variable list of pointers 56002 * listFreeManyS(l1, l2, ...); 56003 */ 56004 void listFreeManyF(void **paramType, ...) { 56005 va_list pl; 56006 56007 // add arguments to a list 56008 va_start(pl, paramType); 56009 paramType = va_arg(pl, void **); 56010 while (paramType) { 56011 listFree(paramType); 56012 paramType = va_arg(pl, void **); 56013 } 56014 va_end(pl); 56015 } 56016 56017 /** 56018 * list Length 56019 * return number of elements until the first NULL element 56020 * 56021 * \param 56022 * list 56023 * \return 56024 * number of element until first NULL element 56025 * 0 when list is NULL 56026 */ 56027 size_t listLength(void **list) { 56028 size_t r = 0;; 56029 56030 // sanity checks 56031 if (!list) { 56032 return(0); 56033 } 56034 forEachType(void, list, i) { 56035 r++; 56036 } 56037 return(r); 56038 } 56039 56040 /** 56041 * list Get 56042 * 56043 * (like iListGetS) 56044 * 56045 * index can be negative 56046 * 56047 * \param 56048 * list 56049 * \param 56050 * index: index in list, must be inside the list 56051 * \return 56052 * element 56053 * NULL when list is NULL or index is not set correctly 56054 */ 56055 void *listGet(void **list, int64_t index) { 56056 int64_t len; 56057 56058 // sanity checks 56059 if (!list) { 56060 return(NULL); 56061 } 56062 56063 len = (int64_t)listLength(list); 56064 if (index >= len) { 56065 return(NULL); 56066 } 56067 if (index < -len) { 56068 return(NULL); 56069 } 56070 if (index < 0) { 56071 index = len + index; 56072 } 56073 56074 return(list[index]); 56075 } 56076 56077 /** 56078 * list Set 56079 * 56080 * (like iListSetS) 56081 * 56082 * store element at given index 56083 * previous element at index has to be freed before hand 56084 * index can be negative 56085 * 56086 * \param 56087 * list 56088 * \param 56089 * index: index in list, must be inside the list 56090 * \param 56091 * element 56092 * \return 56093 * list success 56094 * NULL error 56095 * 56096 * Does nothing when: 56097 * when list is NULL, index is not set correctly or s is NULL 56098 */ 56099 void **listSet(void **list, int64_t index, void *s) { 56100 int64_t len; 56101 56102 // sanity checks 56103 if (!list) { 56104 return(NULL); 56105 } 56106 56107 len = (int64_t)listLength(list); 56108 if (index >= len) { 56109 return(NULL); 56110 } 56111 if (index < -len) { 56112 return(NULL); 56113 } 56114 if (index < 0) { 56115 index = len + index; 56116 } 56117 56118 if (!s) { 56119 return(list); 56120 } 56121 56122 list[index] = s; 56123 return(list); 56124 } 56125 56126 /** 56127 * list Duplicate 56128 * 56129 * (like iListDupS) 56130 * 56131 * copy pointers to new list 56132 * After this function, free list with free instead of listFreeS 56133 * 56134 * Note: this function creates a new list, so void *** is not needed. 56135 * Unlike iList functions. 56136 * 56137 * \param 56138 * list 56139 * \return 56140 * new list pointing to the same elements as list (you must free the pointer) 56141 * NULL when list is NULL 56142 */ 56143 void **listDup(void **list) { 56144 void **l = NULL; 56145 size_t len; 56146 56147 // sanity checks 56148 if (!list) { 56149 return(NULL); 56150 } 56151 56152 len = listLength(list); 56153 l = MALLOC((len+1) * sizeof(void *)); 56154 if (!l) { 56155 return(NULL);//LCOV_EXCL_LINE 56156 } 56157 56158 // last element is NULL 56159 l[len] = NULL; 56160 56161 // copy each element 56162 enumerateType(void, list, e, i) { 56163 l[i] = *e; 56164 } 56165 return(l); 56166 } 56167 56168 /** 56169 * list Reverse 56170 * create index list and reverse list, the last element is the first element of the new list 56171 * 56172 * \param 56173 * list 56174 * \return 56175 * reversed list (you must free the pointer) 56176 * NULL when list is NULL 56177 */ 56178 void **listReverse(void **list) { 56179 void **l = NULL; 56180 size_t len; 56181 56182 // sanity checks 56183 if (!list) { 56184 return(NULL); 56185 } 56186 56187 len = listLength(list); 56188 l = MALLOC((len+1) * sizeof(void *)); 56189 if (!l) { 56190 return(NULL);//LCOV_EXCL_LINE 56191 } 56192 56193 // last element is NULL 56194 l[len] = NULL; 56195 56196 // copy each element in reverse order 56197 enumerateType(void, list, e, i) { 56198 l[len-1-i] = *e; 56199 } 56200 return(l); 56201 } 56202 56203 56204 /** 56205 * list Reverse 56206 * reverse list, the last element is the first element of the list 56207 * 56208 * \param 56209 * list (this parameter is reallocated) 56210 * \return 56211 * reversed list (you must free the pointer) 56212 * nothing when list is NULL 56213 * NULL error 56214 */ 56215 void **iListReverse(void ***list) { 56216 void **l = NULL; 56217 56218 if (!list) { 56219 return(NULL); 56220 } 56221 56222 l = listReverse(*list); 56223 56224 free(*list); 56225 *list = l; 56226 return(l); 56227 } 56228 56229 /** 56230 * list Cat 56231 * \param 56232 * arbitrary list of lists seperated by commas 56233 * \return 56234 * new list with input lists concatenated (you must free the pointer) 56235 */ 56236 void **listCatF(void **paramType, ...) { 56237 va_list pl; 56238 void **r = NULL; 56239 56240 // add arguments to a list 56241 va_start(pl, paramType); 56242 paramType = va_arg(pl, void **); 56243 while (paramType) { 56244 pErrorNULL(listAppend(&r, paramType)); 56245 paramType = va_arg(pl, void **); 56246 } 56247 va_end(pl); 56248 return(r); 56249 } 56250 56251 56252 /** 56253 * list Append 56254 * 56255 * (like iListAppendS) 56256 * 56257 * Append list2 at the end of list1 by copying the pointers 56258 * from list2 to list1. 56259 * After this function, free list2 with free instead of listFreeS 56260 * 56261 * list1 is reallocated to add extra space 56262 * 56263 * \param 56264 * list1 (this parameter is reallocated) 56265 * \param 56266 * list2 56267 * \return 56268 * list1 and list2 (you must free the pointer) 56269 * list1 not modified when list1 and list2 are NULL 56270 * or when list1 is identical to list2 (same pointers) 56271 * NULL error 56272 */ 56273 void **listAppend(void ***list1, void **list2) { 56274 void **r = NULL; 56275 size_t len1; 56276 size_t len2; 56277 56278 // sanity checks 56279 if (!list1) { 56280 // need a list to store results, abort 56281 return(NULL); 56282 } 56283 if (!(*list1)) { 56284 // copy list2 56285 len2 = listLength(list2); 56286 *list1 = MALLOC((len2+1) * sizeof(void *)); 56287 if (!*list1) { 56288 return(NULL); 56289 } 56290 int j = 0; 56291 while (list2[j]) { 56292 (*list1)[j] = list2[j]; 56293 j++; 56294 } 56295 (*list1)[j] = NULL; 56296 return(*list1); 56297 } 56298 if (!list2) { 56299 // list1 not modified 56300 return(*list1); 56301 } 56302 56303 len1 = listLength(*list1); 56304 56305 if ((*list1) == list2) { 56306 // list1 and list2 identical, cancel this operations 56307 // to avoid double free undefined behavior in listFreeS 56308 return(NULL); 56309 } 56310 56311 len2 = listLength(list2); 56312 r = REALLOC((*list1), (len1+len2+1) * sizeof(void *)); 56313 if (!r) { 56314 // realloc fails list1 not modified 56315 return(NULL); 56316 } 56317 (*list1) = r; 56318 // push list2 to new list 56319 enumerateType(void, list2, e, i) { 56320 r[len1+i] = *e; 56321 } 56322 56323 r[len1+len2] = NULL; 56324 56325 return(r); 56326 } 56327 56328 56329 /** 56330 * list Add 56331 * add list1 and list2 in a new list 56332 * 56333 * \param 56334 * list1 56335 * \param 56336 * list2 56337 * \return 56338 * new list with list1 and list2 (you must free the pointer) 56339 * NULL when list1 and list2 are NULL 56340 */ 56341 void **listAdd(void **list1, void **list2) { 56342 void **l = NULL; 56343 void **r = NULL; 56344 size_t len1; 56345 size_t len2; 56346 56347 // sanity checks 56348 if (!list1 && !list2) { 56349 return(NULL); 56350 } 56351 if (!list1) { 56352 // copy list2 56353 return(listDup(list2)); 56354 } 56355 if (!list2) { 56356 // copy list1 56357 return(listDup(list1)); 56358 } 56359 // duplicate list1 56360 l = listDup(list1); 56361 len1 = listLength(list1); 56362 len2 = listLength(list2); 56363 r = REALLOC(l, (len1+len2+1) * sizeof(void *)); 56364 if (!r) { 56365 // free l when realloc fails 56366 free(l); 56367 return(NULL);//LCOV_EXCL_LINE 56368 } 56369 // push list2 to new list 56370 enumerateType(void, list2, e, i) { 56371 r[len1+i] = *e; 56372 } 56373 56374 r[len1+len2] = NULL; 56375 56376 return(r); 56377 } 56378 56379 56380 /** 56381 * list Slice 56382 * 56383 * (like iListCopyS) 56384 * 56385 * return new list with element pointers from start and end in list 56386 * negative indexes are allowed 56387 * 56388 * Note: this function creates a new list, so void *** is not needed. 56389 * Unlike iList functions. 56390 * 56391 * \param 56392 * list 56393 * \param 56394 * start index, must be in the list 56395 * \param 56396 * end index, must be in the list 56397 * \return 56398 * new list pointing to the same elements as list (you must free the pointer) 56399 * empty list when start=end 56400 * NULL when list is empty 56401 * NULL when list is NULL or when start and end are not set correctly 56402 */ 56403 void **listSlice(void **list, int64_t start, int64_t end) { 56404 void **l = NULL; 56405 int64_t len; 56406 56407 // sanity checks 56408 if (!list) { 56409 return(NULL); 56410 } 56411 56412 len = (int64_t)listLength(list); 56413 56414 if (start > len) { 56415 return(NULL); 56416 } 56417 if (end > len) { 56418 end = len; 56419 } 56420 if (start <= -len) { 56421 start = -len; 56422 } 56423 if (end <= -len) { 56424 return(NULL); 56425 } 56426 if (start < 0) { 56427 start = len + start; 56428 } 56429 if (end <= 0) { 56430 end = len + end; 56431 } 56432 if (end < start) { 56433 return(NULL); 56434 } 56435 56436 if (start == end) { 56437 // empty list 56438 listEmpty(l); 56439 return(l); 56440 } 56441 56442 // start < end < len 56443 int64_t n; 56444 n = end - start; 56445 l = MALLOC((size_t)(n+1) * sizeof(void *)); 56446 if (!l) { 56447 return(NULL);//LCOV_EXCL_LINE 56448 } 56449 for (int64_t i=0;i < n;i++) { 56450 l[i] = *(list+start+i); 56451 } 56452 l[n] = NULL; 56453 return(l); 56454 } 56455 56456 /** 56457 * list Slice 56458 * return list with elements from start and end in list 56459 * negative indexes are allowed 56460 * 56461 * \param 56462 * list (this parameter is reallocated) 56463 * \param 56464 * start index, must be in the list 56465 * \param 56466 * end index, must be in the list 56467 * \return 56468 * sliced list (you must free the pointer) 56469 * empty list when start=end 56470 * unchanged when list is empty 56471 * unchanged when list is NULL or when start and end are not set correctly 56472 * NULL error 56473 */ 56474 void **iListSlice(void ***list, int64_t start, int64_t end) { 56475 void **l = NULL; 56476 int64_t len; 56477 56478 // sanity checks 56479 if (!list || !*list) { 56480 return(NULL); 56481 } 56482 56483 len = (int64_t)listLength(*list); 56484 56485 if (start > len) { 56486 free(*list); 56487 listEmpty(*list); 56488 return(NULL); 56489 } 56490 if (end > len) { 56491 end = len; 56492 } 56493 if (start <= -len) { 56494 start = -len; 56495 } 56496 if (end <= -len) { 56497 free(*list); 56498 listEmpty(*list); 56499 return(NULL); 56500 } 56501 if (start < 0) { 56502 start = len + start; 56503 } 56504 if (end <= 0) { 56505 end = len + end; 56506 } 56507 if (end < start) { 56508 free(*list); 56509 listEmpty(*list); 56510 return(NULL); 56511 } 56512 56513 if (start == end) { 56514 // empty list 56515 listEmpty(l); 56516 } 56517 else { 56518 // start < end < len 56519 int64_t n; 56520 n = end - start; 56521 l = MALLOC((size_t)(n+1) * sizeof(void *)); 56522 if (!l) { 56523 return(NULL); 56524 } 56525 for (int64_t i=0;i < n;i++) { 56526 l[i] = *((*list)+start+i); 56527 } 56528 l[n] = NULL; 56529 } 56530 56531 free(*list); 56532 *list = l; 56533 return(l); 56534 } 56535 56536 /** 56537 * list Insert 56538 * 56539 * insert list in list at index 56540 * 56541 * return new list with toInsert at index 56542 * negative indexes are allowed 56543 * index -1 is the end of the array and is equivalent to index len 56544 * 56545 * \param 56546 * list 56547 * \param 56548 * index in list 56549 * \param 56550 * toInsert list 56551 * \return 56552 * new list (you must free the pointer) 56553 * NULL when list is NULL or invalid index 56554 */ 56555 void **listInsert(void **list, int64_t index, void **toInsert) { 56556 void **r = NULL; 56557 int64_t len; 56558 56559 //sanity checks 56560 if (!list) { 56561 if (index || !toInsert) { 56562 return(NULL); 56563 } 56564 return(listDup(toInsert)); 56565 } 56566 56567 if (!toInsert) { 56568 return(NULL); 56569 } 56570 56571 len = (int64_t)listLength(list); 56572 56573 if (!len && index == -1) { 56574 // empty string, index -1 is equal to 0 56575 index = 0; 56576 } 56577 bool neg = false; 56578 if (index < 0) { 56579 neg = true; 56580 } 56581 56582 if (index > len) { 56583 return(NULL); 56584 } 56585 if (neg) { 56586 index++; 56587 } 56588 if (index < -len) { 56589 return(NULL); 56590 } 56591 if (neg) { 56592 index = len + index; 56593 } 56594 56595 56596 if (listIsEmpty(toInsert)) { 56597 return(listDup(list)); 56598 } 56599 56600 if (index == 0) { 56601 // insert at beginning 56602 return(listAdd(toInsert, list)); 56603 } 56604 56605 void **l1 = listSlice(list, 0, index); 56606 void **l2 = listSlice(list, index, 0); 56607 r = listCat(l1, toInsert, l2); 56608 free(l1); 56609 free(l2); 56610 56611 return(r); 56612 } 56613 56614 /** 56615 * list Insert 56616 * 56617 * insert list in list at index 56618 * After this function, free toInsert with free instead of listFreeS 56619 * 56620 * return list with toInsert at index 56621 * negative indexes are allowed 56622 * index -1 is the end of the array and is equivalent to index len 56623 * 56624 * \param 56625 * list (this parameter is reallocated) 56626 * \param 56627 * index in list 56628 * \param 56629 * toInsert list 56630 * \return 56631 * list (you must free the pointer) 56632 * unchanged list when list is NULL or invalid index 56633 * NULL error 56634 */ 56635 void **iListInsert(void ***list, int64_t index, void **toInsert) { 56636 void **r = NULL; 56637 int64_t len; 56638 56639 //sanity checks 56640 if (!list || !toInsert) { 56641 return(NULL); 56642 } 56643 if (!*list) { 56644 if (index) { 56645 return(NULL); 56646 } 56647 r = listDup(toInsert); 56648 *list = r; 56649 return(r); 56650 } 56651 56652 len = (int64_t)listLength(*list); 56653 56654 if (!len && index == -1) { 56655 // empty string, index -1 is equal to 0 56656 index = 0; 56657 } 56658 bool neg = false; 56659 if (index < 0) { 56660 neg = true; 56661 } 56662 56663 if (index > len) { 56664 return(NULL); 56665 } 56666 if (neg) { 56667 index++; 56668 } 56669 if (index < -len) { 56670 return(NULL); 56671 } 56672 if (neg) { 56673 index = len + index; 56674 } 56675 56676 56677 if (listIsEmpty(toInsert)) { 56678 return(*list); 56679 } 56680 56681 if (index == 0) { 56682 // insert at beginning 56683 pErrorNULL(listAppend(&r, toInsert)); 56684 pErrorNULL(listAppend(&r, *list)); 56685 } 56686 else { 56687 56688 r = listSlice(*list, 0, index); 56689 void **l2 = listSlice(*list, index, 0); 56690 pErrorNULL(listAppend(&r, toInsert)); 56691 pErrorNULL(listAppend(&r, l2)); 56692 free(l2); 56693 } 56694 56695 free(*list); 56696 *list = r; 56697 return(r); 56698 } 56699 56700 /** 56701 * list Delete 56702 * return new list without elements from start and end in list 56703 * negative indexes are allowed 56704 * 56705 * \param 56706 * list 56707 * \param 56708 * start index, must be in the list 56709 * \param 56710 * end index, must be in the list 56711 * \return 56712 * sliced list (you must free the pointer) 56713 * list copy when start=end or when start and end are not set correctly 56714 * NULL when list is empty 56715 * NULL when list is NULL or when end is under start 56716 */ 56717 void **listDel(void **list, int64_t start, int64_t end) { 56718 void **l = NULL; 56719 int64_t len; 56720 56721 // sanity checks 56722 if (!list) { 56723 return(NULL); 56724 } 56725 56726 len = (int64_t)listLength(list); 56727 56728 if (len == 0) { 56729 return(NULL); 56730 } 56731 56732 if (start >= len) { 56733 start = len; 56734 } 56735 if (end > len) { 56736 end = len; 56737 } 56738 if (start <= -len) { 56739 start = -len; 56740 } 56741 if (end <= -len) { 56742 end = -len; 56743 } 56744 if (start < 0) { 56745 start = len + start; 56746 } 56747 if (end <= 0) { 56748 end = len + end; 56749 } 56750 if (end < start) { 56751 return(NULL); 56752 } 56753 56754 if (start == end) { 56755 return(listDup(list)); 56756 } 56757 56758 // start < end < len 56759 int64_t n; 56760 n = end - start; 56761 l = MALLOC((size_t)(len-n+1) * sizeof(void *)); 56762 if (!l) { 56763 return(NULL);//LCOV_EXCL_LINE 56764 } 56765 for (int64_t i=0;i < start;i++) { 56766 l[i] = *(list+i); 56767 } 56768 for (int64_t i=start ; i < len-n ; i++) { 56769 l[i] = *(list+n+i); 56770 } 56771 l[len-n] = NULL; 56772 return(l); 56773 } 56774 56775 56776 /** 56777 * list Delete 56778 * return list without elements from start and end in list 56779 * negative indexes are allowed 56780 * 56781 * \param 56782 * list (this parameter is reallocated) 56783 * \param 56784 * start index, must be in the list 56785 * \param 56786 * end index, must be in the list 56787 * \return 56788 * sliced list (you must free the pointer) 56789 * list copy when start=end or when start and end are not set correctly 56790 * NULL when list is empty 56791 * NULL when list is NULL or when end is under start 56792 * NULL error 56793 */ 56794 void **iListDel(void ***list, int64_t start, int64_t end) { 56795 void **l = NULL; 56796 int64_t len; 56797 56798 // sanity checks 56799 if (!list || !*list) { 56800 return(NULL); 56801 } 56802 56803 len = (int64_t)listLength(*list); 56804 56805 if (len == 0) { 56806 return(NULL); 56807 } 56808 56809 if (start >= len) { 56810 start = len; 56811 } 56812 if (end > len) { 56813 end = len; 56814 } 56815 if (start <= -len) { 56816 start = -len; 56817 } 56818 if (end <= -len) { 56819 end = -len; 56820 } 56821 if (start < 0) { 56822 start = len + start; 56823 } 56824 if (end <= 0) { 56825 end = len + end; 56826 } 56827 if (end < start) { 56828 return(NULL); 56829 } 56830 56831 if (start == end) { 56832 return(*list); 56833 } 56834 56835 // start < end < len 56836 int64_t n; 56837 n = end - start; 56838 l = MALLOC((size_t)(len-n+1) * sizeof(void *)); 56839 if (!l) { 56840 return(NULL); 56841 } 56842 for (int64_t i=0;i < start;i++) { 56843 l[i] = *((*list)+i); 56844 } 56845 for (int64_t i=start ; i < len-n ; i++) { 56846 l[i] = *((*list)+n+i); 56847 } 56848 l[len-n] = NULL; 56849 56850 free(*list); 56851 *list = l; 56852 return(l); 56853 } 56854 56855 // TODO - add compare function as parameter 56856 /** 56857 * list Sort 56858 * duplicate list and sort 56859 * 56860 * \param 56861 * list 56862 * \return 56863 * new sorted list 56864 * empty list when list is empty 56865 * NULL when list is NULL 56866 */ 56867 /* void **listSort(void **list) */ 56868 /* size_t len */ 56869 /* void **l */ 56870 /* */ 56871 /* // sanity checks */ 56872 /* if !list */ 56873 /* return NULL */ 56874 /* len = listLength(list) */ 56875 /* // duplicate */ 56876 /* l = listDup(list) */ 56877 /* if !len */ 56878 /* return l */ 56879 /* // sort */ 56880 /* qsort(l, len, sizeof(void *), listSortSCmp); */ 56881 /* return l */ 56882 56883 /** 56884 * list Sort 56885 * 56886 * \param 56887 * list 56888 * \return 56889 * sorted list 56890 * empty list when list is empty 56891 * unchanged list when list is NULL 56892 */ 56893 /* void iListSortS(void ***list) */ 56894 /* size_t len */ 56895 /* */ 56896 /* // sanity checks */ 56897 /* if !list || !*list */ 56898 /* return */ 56899 /* len = listLength(*list) */ 56900 /* if !len */ 56901 /* return */ 56902 /* // sort */ 56903 /* qsort(*list, len, sizeof(void *), listSortSCmp); */ 56904 /* return */ 56905 56906 56907 // TODO - add compare function as parameter 56908 /** 56909 * list Equal 56910 * compare each element of list1 and list2 56911 * 56912 * \param 56913 * 2 lists 56914 * \return 56915 * true the lists have identical elements 56916 * false they differ 56917 */ 56918 /* bool listEq(void **list1, void **list2) */ 56919 /* */ 56920 /* // sanity checks */ 56921 /* if !list1 || !list2 */ 56922 /* return false */ 56923 /* if listLength(list1) != listLength(list2) */ 56924 /* return false */ 56925 /* */ 56926 /* // compare elements */ 56927 /* enumerateType(void, list1, e, i) */ 56928 /* if !strEq(*e, list2[i]) */ 56929 /* return false */ 56930 /* */ 56931 /* return true */ 56932 56933 // TODO - add compare function as parameter 56934 /** 56935 * return index of element in list 56936 * 56937 * \param 56938 * list 56939 * element 56940 * \return 56941 * index 56942 * -1 when the element is not found 56943 * -1 when list or element are NULL 56944 */ 56945 /* ssize_t listIndexOf(void **list, const void *string) */ 56946 /* bool found = false */ 56947 /* */ 56948 /* // sanity checks */ 56949 /* if !list */ 56950 /* return -1 */ 56951 /* if !string */ 56952 /* return -1 */ 56953 /* // search string in elements */ 56954 /* enumerateType(void, list, e, i) */ 56955 /* if strEq(*e, string) */ 56956 /* found = true */ 56957 /* break; */ 56958 /* if found */ 56959 /* return i */ 56960 /* else */ 56961 /* return -1 */ 56962 56963 // TODO - add compare function as parameter 56964 /** 56965 * list binary search 56966 * 56967 * efficiently finds the index of element in list 56968 * the list has be sorted with for example listSortS 56969 * 56970 * \param 56971 * list 56972 * element to search 56973 * \return 56974 * index of element 56975 * -1 element not found or NULL input pointers 56976 */ 56977 /* ssize_t listBinarySearch(void **list, const void *string) */ 56978 /* TODO copy listBinarySearchS */ 56979 56980 // TODO - add compare function as parameter 56981 /** 56982 * Uniquify elements of list 56983 * duplicate list 56984 * each elements are unique in the new list 56985 * 56986 * \param 56987 * list 56988 * \return 56989 * new list with unique elements 56990 * empty list when list is empty 56991 * NULL when list is NULL 56992 */ 56993 /* void **listUniq(void **list) */ 56994 /* void **r */ 56995 /* */ 56996 /* // sanity checks */ 56997 /* if !list */ 56998 /* return NULL */ 56999 /* */ 57000 /* listPush(&r, list[0]); */ 57001 /* // one element list */ 57002 /* if listLength(list) = 1 */ 57003 /* return r */ 57004 /* // push element to new list if it is not already in new list */ 57005 /* forEachType(void, list, e) */ 57006 /* if listIndexOf(r, *e) = -1 */ 57007 /* listPush(&r, *e); */ 57008 /* return r */ 57009 57010 /** 57011 * Uniquify elements of list 57012 * each elements are unique in the list 57013 * 57014 * \param 57015 * list 57016 * \return 57017 * list with unique elements 57018 * empty list when list is empty 57019 * unchanged list when list is NULL 57020 */ 57021 /* void iListUniq(void ***list) */ 57022 /* void **r */ 57023 /* */ 57024 /* // sanity checks */ 57025 /* if !list || !*list */ 57026 /* return */ 57027 /* */ 57028 /* listPush(&r, (*list)[0]); */ 57029 /* // one element list */ 57030 /* if listLength(*list) > 1 */ 57031 /* // push element to new list if it is not already in new list */ 57032 /* forEachType(void, *list, e) */ 57033 /* if listIndexOf(r, *e) = -1 */ 57034 /* listPushS(&r, *e); */ 57035 /* */ 57036 /* free *list */ 57037 /* *list = r */ 57038 /* return */ 57039 57040 // TODO - add compare function as parameter 57041 /** 57042 * remove empty element from list 57043 * 57044 * \param 57045 * list 57046 * \return 57047 * list without empty element 57048 * empty list when list is empty 57049 * NULL when list is NULL 57050 */ 57051 /* void **listCompact(void **list) */ 57052 /* void **r */ 57053 /* */ 57054 /* // sanity checks */ 57055 /* if !list */ 57056 /* return NULL */ 57057 /* */ 57058 /* // keep non empty elements */ 57059 /* forEachType(void, list, e) */ 57060 /* void *trim = trimS(*e) */ 57061 /* if *trim != 0 */ 57062 /* listPush(&r, *e); */ 57063 /* free trim */ 57064 /* if !r */ 57065 /* // the new list is empty */ 57066 /* listEmpty(r) */ 57067 /* return r */ 57068 57069 /** 57070 * remove empty elements from list 57071 * 57072 * \param 57073 * list 57074 * \return 57075 * list without empty elements 57076 * empty list when list is empty 57077 * unchanged list when list is NULL 57078 */ 57079 /* void iListCompact(void ***list) */ 57080 /* void **r */ 57081 /* */ 57082 /* // sanity checks */ 57083 /* if !list || !*list */ 57084 /* return */ 57085 /* */ 57086 /* // keep non empty elements */ 57087 /* forEachType(void, *list, e) */ 57088 /* void *trim = trimS(*e) */ 57089 /* if *trim != 0 */ 57090 /* listPush(&r, *e); */ 57091 /* free trim */ 57092 /* if r */ 57093 /* free *list */ 57094 /* *list = r */ 57095 /* return */ 57096 57097 /** 57098 * initialize ring/pointer to staticArray 57099 * sets count and head to 0 57100 * sets maxCount 57101 * 57102 * the ring is empty after this function 57103 * 57104 * a pointer to staticArray is also valid 57105 * the array is empty after this function 57106 * 57107 * \param 57108 * ring pointer to initialize 57109 * \param 57110 * maxCount for this ring type 57111 * \return 57112 * 1 success 57113 * 0 error 57114 */ 57115 int ringInit(void *ring, int maxCount) { 57116 57117 if (!ring) { 57118 return(0); 57119 } 57120 57121 cast(ringBase*, name, ring) 57122 57123 name->last = name->head = 0; 57124 name->maxCount = maxCount; 57125 name->isEmpty = true; 57126 return(1); 57127 } 57128 57129 /** 57130 * empty ring 57131 * Allocated buffers in the list must be freed before running staticArrayEmpty 57132 * 57133 * \return 57134 * 1 success 57135 * 0 error 57136 */ 57137 int ringEmpty(void *ring) { 57138 57139 if (!ring) { 57140 return(0); 57141 } 57142 57143 cast(ringBase*, name, ring) 57144 name->last = name->head = 0; 57145 name->isEmpty = true; 57146 return(1); 57147 } 57148 57149 /** 57150 * 1 when empty 57151 * 0 not empty 57152 * -1 error 57153 */ 57154 int ringIsEmpty(void *ring) { 57155 57156 if (!ring) { 57157 return(-1); 57158 } 57159 57160 cast(ringBase*, name, ring) 57161 57162 return(name->isEmpty); 57163 } 57164 57165 /** 57166 * 1 when full 57167 * 0 not full 57168 * -1 error 57169 */ 57170 int ringIsFull(void *ring) { 57171 57172 if (!ring) { 57173 return(-1); 57174 } 57175 57176 cast(ringBase*, name, ring) 57177 57178 if (((name->last+1) % name->maxCount) == name->head) { 57179 return(1); 57180 } 57181 return(0); 57182 } 57183 57184 57185 /** 57186 * return elements count 57187 * 57188 * \return 57189 * message count 57190 * -1 error 57191 */ 57192 ssize_t ringCount(void *ring) { 57193 57194 if (!ring) { 57195 return(-1); 57196 } 57197 57198 cast(ringBase*, name, ring) 57199 57200 if (name->isEmpty) { 57201 return(0); 57202 } 57203 57204 if ((name->last) > (name->head)) { 57205 return(name->last-name->head+1); 57206 } 57207 return((name->maxCount-name->head + name->last+1)); 57208 } 57209 57210 /** 57211 * push element to ring (only increases last, use ringSend) 57212 * use ringLast to access the element 57213 * 57214 * \return 57215 * position of the element 57216 * -1 ring is full 57217 * -2 error 57218 */ 57219 i64 ringPush(void *ring) { 57220 57221 if (!ring) { 57222 return(-2); 57223 } 57224 if (ringIsFull(ring)) { 57225 return(-1); 57226 } 57227 57228 cast(ringBase*, name, ring) 57229 57230 if (name->isEmpty) { 57231 name->isEmpty = false; 57232 } 57233 else { 57234 name->last++; 57235 name->last %= name->maxCount;; 57236 } 57237 return(name->last); 57238 } 57239 57240 /** 57241 * pop element from ring (only decreases last) 57242 * 57243 * \return 57244 * 1 element is removed 57245 * 0 ring is empty 57246 * -1 error 57247 */ 57248 int ringPop(void *ring) { 57249 57250 if (!ring) { 57251 return(-1); 57252 } 57253 if (ringIsEmpty(ring)) { 57254 return(0); 57255 } 57256 57257 cast(ringBase*, name, ring) 57258 57259 if (!name->isEmpty && (name->last == name->head)) { 57260 name->isEmpty = true; 57261 } 57262 else if (!name->isEmpty && (name->last != name->head)) { 57263 if (name->last) { 57264 name->last--; 57265 } 57266 else { 57267 name->last += name->maxCount-1; 57268 } 57269 } 57270 return(1); 57271 } 57272 57273 /** 57274 * prepend element to ring (only decreases head) 57275 * use ringFirst to access the element 57276 * 57277 * \return 57278 * position of the element 57279 * -1 ring is full 57280 * -2 error 57281 */ 57282 i64 ringPrepend(void *ring) { 57283 57284 if (!ring) { 57285 return(-2); 57286 } 57287 if (ringIsFull(ring)) { 57288 return(-1); 57289 } 57290 57291 cast(ringBase*, name, ring) 57292 57293 if (name->isEmpty) { 57294 name->isEmpty = false; 57295 } 57296 else { 57297 if (name->head) { 57298 name->head--; 57299 } 57300 else { 57301 name->head += name->maxCount-1;; 57302 } 57303 } 57304 return(name->head); 57305 } 57306 57307 /** 57308 * dequeue element from ring (only increases head, use ringRecv) 57309 * 57310 * \return 57311 * 1 element is removed 57312 * 0 ring is empty 57313 * -1 error 57314 */ 57315 int ringDequeue(void *ring) { 57316 57317 if (!ring) { 57318 return(-1); 57319 } 57320 if (ringIsEmpty(ring)) { 57321 return(0); 57322 } 57323 57324 cast(ringBase*, name, ring) 57325 57326 if (!name->isEmpty && (name->last == name->head)) { 57327 name->isEmpty = true; 57328 } 57329 else if (!name->isEmpty && (name->last != name->head)) { 57330 name->head++; 57331 name->head %= name->maxCount;; 57332 } 57333 return(1); 57334 } 57335 57336 57337 /** 57338 * fibers holds the necessary information to schedule fibers 57339 */ 57340 fibersT fibers; 57341 57342 /** 57343 * add new fiber 57344 * 57345 * \param 57346 * ctx context for the fiber at thisSlot 57347 * \param 57348 * thisSlot reserved slot for this fiber 57349 * \param 57350 * func fiber function 57351 * \return 57352 * true 57353 */ 57354 bool fiberAdd(void *ctx, int thisSlot, fiberFT func) { 57355 57356 cast(fiberBaseT*, thisCtx, ctx) 57357 thisCtx->slot = thisSlot; 57358 fibers.context[thisSlot] = ctx; 57359 staticArrayPush(fibers.startL) 57360 staticArrayLast(fibers.startL) = thisSlot; 57361 fibers.F[thisSlot] = func; 57362 return(true); 57363 } 57364 57365 /** 57366 * add new fiber and start immediately after next yield 57367 * 57368 * \param 57369 * ctx context for the fiber at thisSlot 57370 * \param 57371 * thisSlot reserved slot for this fiber 57372 * \param 57373 * func fiber function 57374 * \return 57375 * true 57376 */ 57377 bool fiberPrepend(void *ctx, int thisSlot, fiberFT func) { 57378 57379 cast(fiberBaseT*, thisCtx, ctx) 57380 thisCtx->slot = thisSlot; 57381 fibers.context[thisSlot] = ctx; 57382 staticArrayPrepend(fibers.startL) 57383 staticArrayFirst(fibers.startL) = thisSlot; 57384 fibers.F[thisSlot] = func; 57385 return(true); 57386 } 57387 57388 /** 57389 * Schedule fibers 57390 */ 57391 void scheduler(void) { 57392 static int task; 57393 57394 // Start tasks before the schedule loop 57395 // to add fibers to fiberL 57396 while (!staticArrayIsEmpty(fibers.startL)) { 57397 puts(__func__); 57398 task = staticArrayFirst(fibers.startL); 57399 printf("Start task %d\n", task); 57400 staticArrayDequeue(fibers.startL); 57401 startJump(fibers.F[task](task)); 57402 } 57403 57404 // Schedule Loop 57405 while (!staticArrayIsEmpty(fibers.L)) { 57406 // Start eventual new tasks 57407 while (!staticArrayIsEmpty(fibers.startL)) { 57408 puts(__func__); 57409 task = staticArrayFirst(fibers.startL); 57410 printf("-- Start NEW task %d\n", task); 57411 staticArrayDequeue(fibers.startL); 57412 startJump(fibers.F[task](task)); 57413 } 57414 puts(__func__); 57415 task = staticArrayFirst(fibers.L); 57416 staticArrayDequeue(fibers.L); 57417 57418 logVar(task, "d"); 57419 schedulerYield(task); 57420 } 57421 } 57422 57423 57424 57425 57426 57427 57428 57429 57430 57431 #if ((__GNUC__ > 4)) 57432 /** 57433 * return monotonic time in nanoseconds 57434 */ 57435 uint64_t getMonotonicTime(void) { 57436 struct timespec ts; 57437 57438 clock_gettime(CLOCK_MONOTONIC, &ts); 57439 57440 return((uint64_t)(ts.tv_sec) * 1000000000 + (uint64_t)(ts.tv_nsec)); 57441 } 57442 #else 57443 // not available on older platforms 57444 uint64_t getMonotonicTime(void) { 57445 57446 return(0); 57447 } 57448 #endif 57449 /** 57450 * nanosleep 57451 * 57452 * sleep nanoseconds 57453 * 57454 * \param 57455 * time in nanosceonds 57456 * \return 57457 * 1 ok 57458 * 0 error 57459 */ 57460 int nanoSleepF(uint64_t time) { 57461 struct timespec ts; 57462 57463 ts.tv_sec = (time_t)(time / 1000000000); 57464 ts.tv_nsec = (time_t)(time % 1000000000); 57465 int r = nanosleep(&ts, NULL);; 57466 if (r == -1) { 57467 pFuncError 57468 return(0); 57469 } 57470 return(1); 57471 } 57472 57473