From: "Liming Gao" <liming.gao@intel.com>
To: devel@edk2.groups.io
Cc: Jian J Wang <jian.j.wang@intel.com>,
Hao A Wu <hao.a.wu@intel.com>,
Cinnamon Shia <cinnamon.shia@hpe.com>
Subject: [Patch] MdeModulePkg RegularExpressionDxe: Update Oniguruma from v6.9.0 to v6.9.3
Date: Thu, 8 Aug 2019 21:31:17 +0800 [thread overview]
Message-ID: <1565271078-7716-1-git-send-email-liming.gao@intel.com> (raw)
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2066
Update Oniguruma to the latest version v6.9.3.
Oniguruma https://github.com/kkos/oniguruma
This release is the security fix release. It includes the changes:
Fixed CVE-2019-13224
Fixed CVE-2019-13225
Fixed many problems (found by libfuzzer programs)
Verify VS2015, GCC5 build.
Verify RegularExpressionProtocol GetInfo() and Match() function.
Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Hao A Wu <hao.a.wu@intel.com>
Cc: Cinnamon Shia <cinnamon.shia@hpe.com>
Signed-off-by: Liming Gao <liming.gao@intel.com>
---
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/ascii.c | 2 +-
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regcomp.c | 2433 +++++++++++--------
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regenc.c | 82 +-
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regerror.c | 63 +-
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regexec.c | 2672 +++++++++++----------
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/reggnu.c | 22 +-
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.c | 702 +++---
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposerr.c | 12 +-
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposix.c | 16 +-
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regsyntax.c | 12 +-
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode.c | 289 ++-
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_egcb_data.c | 31 +-
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold1_key.c | 2689 ++++++++++-----------
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold2_key.c | 4 +-
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold3_key.c | 4 +-
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold_data.c | 2256 +++++++++---------
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_property_data.c | 8545 +++++++++++++++++++++++++++++++++++--------------------------------
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_property_data_posix.c | 410 ++--
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_unfold_key.c | 3253 +++++++++++++-------------
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_wb_data.c | 1023 ++++++++
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/utf16_le.c | 36 +-
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/oniguruma.h | 21 +-
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regenc.h | 23 +-
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regint.h | 438 ++--
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.h | 313 ++-
25 files changed, 14055 insertions(+), 11296 deletions(-)
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/ascii.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/ascii.c
index ef961c94d5..2527c02b32 100644
--- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/ascii.c
+++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/ascii.c
@@ -113,6 +113,6 @@ OnigEncodingType OnigEncodingASCII = {
init,
0, /* is_initialized */
onigenc_always_true_is_valid_mbc_string,
- ENC_FLAG_ASCII_COMPATIBLE,
+ ENC_FLAG_ASCII_COMPATIBLE|ENC_FLAG_SKIP_OFFSET_1,
0, 0
};
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regcomp.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regcomp.c
index f5db3ea6e8..d847ca4233 100644
--- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regcomp.c
+++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regcomp.c
@@ -2,7 +2,7 @@
regcomp.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2019 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -29,6 +29,8 @@
#include "regparse.h"
+#define OPS_INIT_SIZE 8
+
OnigCaseFoldType OnigDefaultCaseFoldFlag = ONIGENC_CASE_FOLD_MIN;
#if 0
@@ -78,7 +80,7 @@ int_stack_push(int_stack* s, int v)
{
if (s->n >= s->alloc) {
int new_size = s->alloc * 2;
- int* nv = (int* )xrealloc(s->v, sizeof(int) * new_size);
+ int* nv = (int* )xrealloc(s->v, sizeof(int) * new_size, sizeof(int) * s->alloc);
if (IS_NULL(nv)) return ONIGERR_MEMORY;
s->alloc = new_size;
@@ -108,6 +110,280 @@ int_stack_pop(int_stack* s)
}
#endif
+static int
+ops_init(regex_t* reg, int init_alloc_size)
+{
+ Operation* p;
+ size_t size;
+
+ if (init_alloc_size > 0) {
+ size = sizeof(Operation) * init_alloc_size;
+ p = (Operation* )xmalloc(size);
+ CHECK_NULL_RETURN_MEMERR(p);
+#ifdef USE_DIRECT_THREADED_CODE
+ {
+ enum OpCode* cp;
+ size = sizeof(enum OpCode) * init_alloc_size;
+ cp = (enum OpCode* )xmalloc(size);
+ CHECK_NULL_RETURN_MEMERR(cp);
+ reg->ocs = cp;
+ }
+#endif
+ }
+ else {
+ p = (Operation* )0;
+#ifdef USE_DIRECT_THREADED_CODE
+ reg->ocs = (enum OpCode* )0;
+#endif
+ }
+
+ reg->ops = p;
+ reg->ops_curr = 0; /* !!! not yet done ops_new() */
+ reg->ops_alloc = init_alloc_size;
+ reg->ops_used = 0;
+
+ return ONIG_NORMAL;
+}
+
+static int
+ops_expand(regex_t* reg, int n)
+{
+#define MIN_OPS_EXPAND_SIZE 4
+
+#ifdef USE_DIRECT_THREADED_CODE
+ enum OpCode* cp;
+#endif
+ Operation* p;
+ size_t size;
+
+ if (n <= 0) n = MIN_OPS_EXPAND_SIZE;
+
+ n += reg->ops_alloc;
+
+ size = sizeof(Operation) * n;
+ p = (Operation* )xrealloc(reg->ops, size, sizeof(Operation) * reg->ops_alloc);
+ CHECK_NULL_RETURN_MEMERR(p);
+
+#ifdef USE_DIRECT_THREADED_CODE
+ size = sizeof(enum OpCode) * n;
+ cp = (enum OpCode* )xrealloc(reg->ocs, size, sizeof(enum OpCode) * reg->ops_alloc);
+ CHECK_NULL_RETURN_MEMERR(cp);
+ reg->ocs = cp;
+#endif
+
+ reg->ops = p;
+ reg->ops_alloc = n;
+ if (reg->ops_used == 0)
+ reg->ops_curr = 0;
+ else
+ reg->ops_curr = reg->ops + (reg->ops_used - 1);
+
+ return ONIG_NORMAL;
+}
+
+static int
+ops_new(regex_t* reg)
+{
+ int r;
+
+ if (reg->ops_used >= reg->ops_alloc) {
+ r = ops_expand(reg, reg->ops_alloc);
+ if (r != ONIG_NORMAL) return r;
+ }
+
+ reg->ops_curr = reg->ops + reg->ops_used;
+ reg->ops_used++;
+
+ xmemset(reg->ops_curr, 0, sizeof(Operation));
+ return ONIG_NORMAL;
+}
+
+static int
+is_in_string_pool(regex_t* reg, UChar* s)
+{
+ return (s >= reg->string_pool && s < reg->string_pool_end);
+}
+
+static void
+ops_free(regex_t* reg)
+{
+ int i;
+
+ if (IS_NULL(reg->ops)) return ;
+
+ for (i = 0; i < (int )reg->ops_used; i++) {
+ enum OpCode opcode;
+ Operation* op;
+
+ op = reg->ops + i;
+
+#ifdef USE_DIRECT_THREADED_CODE
+ opcode = *(reg->ocs + i);
+#else
+ opcode = op->opcode;
+#endif
+
+ switch (opcode) {
+ case OP_EXACTMBN:
+ if (! is_in_string_pool(reg, op->exact_len_n.s))
+ xfree(op->exact_len_n.s);
+ break;
+ case OP_EXACTN: case OP_EXACTMB2N: case OP_EXACTMB3N: case OP_EXACTN_IC:
+ if (! is_in_string_pool(reg, op->exact_n.s))
+ xfree(op->exact_n.s);
+ break;
+ case OP_EXACT1: case OP_EXACT2: case OP_EXACT3: case OP_EXACT4:
+ case OP_EXACT5: case OP_EXACTMB2N1: case OP_EXACTMB2N2:
+ case OP_EXACTMB2N3: case OP_EXACT1_IC:
+ break;
+
+ case OP_CCLASS_NOT: case OP_CCLASS:
+ xfree(op->cclass.bsp);
+ break;
+
+ case OP_CCLASS_MB_NOT: case OP_CCLASS_MB:
+ xfree(op->cclass_mb.mb);
+ break;
+ case OP_CCLASS_MIX_NOT: case OP_CCLASS_MIX:
+ xfree(op->cclass_mix.mb);
+ xfree(op->cclass_mix.bsp);
+ break;
+
+ case OP_BACKREF1: case OP_BACKREF2: case OP_BACKREF_N: case OP_BACKREF_N_IC:
+ break;
+ case OP_BACKREF_MULTI: case OP_BACKREF_MULTI_IC:
+ case OP_BACKREF_WITH_LEVEL:
+ case OP_BACKREF_WITH_LEVEL_IC:
+ case OP_BACKREF_CHECK:
+ case OP_BACKREF_CHECK_WITH_LEVEL:
+ if (op->backref_general.num != 1)
+ xfree(op->backref_general.ns);
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ xfree(reg->ops);
+#ifdef USE_DIRECT_THREADED_CODE
+ xfree(reg->ocs);
+ reg->ocs = 0;
+#endif
+
+ reg->ops = 0;
+ reg->ops_curr = 0;
+ reg->ops_alloc = 0;
+ reg->ops_used = 0;
+}
+
+static int
+ops_calc_size_of_string_pool(regex_t* reg)
+{
+ int i;
+ int total;
+
+ if (IS_NULL(reg->ops)) return 0;
+
+ total = 0;
+ for (i = 0; i < (int )reg->ops_used; i++) {
+ enum OpCode opcode;
+ Operation* op;
+
+ op = reg->ops + i;
+#ifdef USE_DIRECT_THREADED_CODE
+ opcode = *(reg->ocs + i);
+#else
+ opcode = op->opcode;
+#endif
+
+ switch (opcode) {
+ case OP_EXACTMBN:
+ total += op->exact_len_n.len * op->exact_len_n.n;
+ break;
+ case OP_EXACTN:
+ case OP_EXACTN_IC:
+ total += op->exact_n.n;
+ break;
+ case OP_EXACTMB2N:
+ total += op->exact_n.n * 2;
+ break;
+ case OP_EXACTMB3N:
+ total += op->exact_n.n * 3;
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ return total;
+}
+
+static int
+ops_make_string_pool(regex_t* reg)
+{
+ int i;
+ int len;
+ int size;
+ UChar* pool;
+ UChar* curr;
+
+ size = ops_calc_size_of_string_pool(reg);
+ if (size <= 0) {
+ return 0;
+ }
+
+ curr = pool = (UChar* )xmalloc((size_t )size);
+ CHECK_NULL_RETURN_MEMERR(pool);
+
+ for (i = 0; i < (int )reg->ops_used; i++) {
+ enum OpCode opcode;
+ Operation* op;
+
+ op = reg->ops + i;
+#ifdef USE_DIRECT_THREADED_CODE
+ opcode = *(reg->ocs + i);
+#else
+ opcode = op->opcode;
+#endif
+
+ switch (opcode) {
+ case OP_EXACTMBN:
+ len = op->exact_len_n.len * op->exact_len_n.n;
+ xmemcpy(curr, op->exact_len_n.s, len);
+ xfree(op->exact_len_n.s);
+ op->exact_len_n.s = curr;
+ curr += len;
+ break;
+ case OP_EXACTN:
+ case OP_EXACTN_IC:
+ len = op->exact_n.n;
+ copy:
+ xmemcpy(curr, op->exact_n.s, len);
+ xfree(op->exact_n.s);
+ op->exact_n.s = curr;
+ curr += len;
+ break;
+ case OP_EXACTMB2N:
+ len = op->exact_n.n * 2;
+ goto copy;
+ break;
+ case OP_EXACTMB3N:
+ len = op->exact_n.n * 3;
+ goto copy;
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ reg->string_pool = pool;
+ reg->string_pool_end = pool + size;
+ return 0;
+}
+
extern OnigCaseFoldType
onig_get_default_case_fold_flag(void)
{
@@ -138,10 +414,17 @@ int_multiply_cmp(int x, int y, int v)
return 1;
}
+extern int
+onig_positive_int_multiply(int x, int y)
+{
+ if (x == 0 || y == 0) return 0;
+
+ if (x < INT_MAX / y)
+ return x * y;
+ else
+ return -1;
+}
-#ifndef PLATFORM_UNALIGNED_WORD_ACCESS
-static unsigned char PadBuf[WORD_ALIGNMENT_SIZE];
-#endif
static void
swap_node(Node* a, Node* b)
@@ -152,7 +435,7 @@ swap_node(Node* a, Node* b)
if (NODE_TYPE(a) == NODE_STRING) {
StrNode* sn = STR_(a);
- if (sn->capa == 0) {
+ if (sn->capacity == 0) {
int len = (int )(sn->end - sn->s);
sn->s = sn->buf;
sn->end = sn->s + len;
@@ -161,7 +444,7 @@ swap_node(Node* a, Node* b)
if (NODE_TYPE(b) == NODE_STRING) {
StrNode* sn = STR_(b);
- if (sn->capa == 0) {
+ if (sn->capacity == 0) {
int len = (int )(sn->end - sn->s);
sn->s = sn->buf;
sn->end = sn->s + len;
@@ -202,24 +485,6 @@ bitset_is_empty(BitSetRef bs)
return 1;
}
-extern int
-onig_bbuf_init(BBuf* buf, int size)
-{
- if (size <= 0) {
- size = 0;
- buf->p = NULL;
- }
- else {
- buf->p = (UChar* )xmalloc(size);
- if (IS_NULL(buf->p)) return(ONIGERR_MEMORY);
- }
-
- buf->alloc = size;
- buf->used = 0;
- return 0;
-}
-
-
#ifdef USE_CALL
static int
@@ -264,113 +529,19 @@ unset_addr_list_add(UnsetAddrList* list, int offset, struct _Node* node)
static int
-add_opcode(regex_t* reg, int opcode)
-{
- BB_ADD1(reg, opcode);
- return 0;
-}
-
-static int
-add_rel_addr(regex_t* reg, int addr)
-{
- RelAddrType ra = (RelAddrType )addr;
-
- BB_ADD(reg, &ra, SIZE_RELADDR);
- return 0;
-}
-
-static int
-add_abs_addr(regex_t* reg, int addr)
-{
- AbsAddrType ra = (AbsAddrType )addr;
-
- BB_ADD(reg, &ra, SIZE_ABSADDR);
- return 0;
-}
-
-static int
-add_length(regex_t* reg, int len)
-{
- LengthType l = (LengthType )len;
-
- BB_ADD(reg, &l, SIZE_LENGTH);
- return 0;
-}
-
-static int
-add_mem_num(regex_t* reg, int num)
-{
- MemNumType n = (MemNumType )num;
-
- BB_ADD(reg, &n, SIZE_MEMNUM);
- return 0;
-}
-
-#if 0
-static int
-add_pointer(regex_t* reg, void* addr)
-{
- PointerType ptr = (PointerType )addr;
-
- BB_ADD(reg, &ptr, SIZE_POINTER);
- return 0;
-}
-#endif
-
-static int
-add_option(regex_t* reg, OnigOptionType option)
-{
- BB_ADD(reg, &option, SIZE_OPTION);
- return 0;
-}
-
-static int
-add_save_type(regex_t* reg, enum SaveType type)
-{
- SaveType t = (SaveType )type;
-
- BB_ADD(reg, &t, SIZE_SAVE_TYPE);
- return 0;
-}
-
-static int
-add_update_var_type(regex_t* reg, enum UpdateVarType type)
-{
- UpdateVarType t = (UpdateVarType )type;
-
- BB_ADD(reg, &t, SIZE_UPDATE_VAR_TYPE);
- return 0;
-}
-
-static int
-add_mode(regex_t* reg, ModeType mode)
-{
- BB_ADD(reg, &mode, SIZE_MODE);
- return 0;
-}
-
-static int
-add_opcode_rel_addr(regex_t* reg, int opcode, int addr)
+add_op(regex_t* reg, int opcode)
{
int r;
- r = add_opcode(reg, opcode);
- if (r != 0) return r;
- r = add_rel_addr(reg, addr);
- return r;
-}
+ r = ops_new(reg);
+ if (r != ONIG_NORMAL) return r;
-static int
-add_bytes(regex_t* reg, UChar* bytes, int len)
-{
- BB_ADD(reg, bytes, len);
- return 0;
-}
+#ifdef USE_DIRECT_THREADED_CODE
+ *(reg->ocs + (reg->ops_curr - reg->ops)) = opcode;
+#else
+ reg->ops_curr->opcode = opcode;
+#endif
-static int
-add_bitset(regex_t* reg, BitSetRef bs)
-{
- BB_ADD(reg, bs, SIZE_BITSET);
return 0;
}
@@ -428,32 +599,53 @@ select_str_opcode(int mb_len, int str_len, int ignore_case)
}
static int
-compile_tree_empty_check(Node* node, regex_t* reg, int empty_info, ScanEnv* env)
+is_strict_real_node(Node* node)
+{
+ switch (NODE_TYPE(node)) {
+ case NODE_STRING:
+ {
+ StrNode* sn = STR_(node);
+ return (sn->end != sn->s);
+ }
+ break;
+
+ case NODE_CCLASS:
+ case NODE_CTYPE:
+ return 1;
+ break;
+
+ default:
+ return 0;
+ break;
+ }
+}
+
+static int
+compile_tree_empty_check(Node* node, regex_t* reg, int emptiness, ScanEnv* env)
{
int r;
int saved_num_null_check = reg->num_null_check;
- if (empty_info != QUANT_BODY_IS_NOT_EMPTY) {
- r = add_opcode(reg, OP_EMPTY_CHECK_START);
- if (r != 0) return r;
- r = add_mem_num(reg, reg->num_null_check); /* NULL CHECK ID */
+ if (emptiness != BODY_IS_NOT_EMPTY) {
+ r = add_op(reg, OP_EMPTY_CHECK_START);
if (r != 0) return r;
+ COP(reg)->empty_check_start.mem = reg->num_null_check; /* NULL CHECK ID */
reg->num_null_check++;
}
r = compile_tree(node, reg, env);
if (r != 0) return r;
- if (empty_info != QUANT_BODY_IS_NOT_EMPTY) {
- if (empty_info == QUANT_BODY_IS_EMPTY)
- r = add_opcode(reg, OP_EMPTY_CHECK_END);
- else if (empty_info == QUANT_BODY_IS_EMPTY_MEM)
- r = add_opcode(reg, OP_EMPTY_CHECK_END_MEMST);
- else if (empty_info == QUANT_BODY_IS_EMPTY_REC)
- r = add_opcode(reg, OP_EMPTY_CHECK_END_MEMST_PUSH);
+ if (emptiness != BODY_IS_NOT_EMPTY) {
+ if (emptiness == BODY_IS_EMPTY_POSSIBILITY)
+ r = add_op(reg, OP_EMPTY_CHECK_END);
+ else if (emptiness == BODY_IS_EMPTY_POSSIBILITY_MEM)
+ r = add_op(reg, OP_EMPTY_CHECK_END_MEMST);
+ else if (emptiness == BODY_IS_EMPTY_POSSIBILITY_REC)
+ r = add_op(reg, OP_EMPTY_CHECK_END_MEMST_PUSH);
if (r != 0) return r;
- r = add_mem_num(reg, saved_num_null_check); /* NULL CHECK ID */
+ COP(reg)->empty_check_end.mem = saved_num_null_check; /* NULL CHECK ID */
}
return r;
}
@@ -463,13 +655,15 @@ static int
compile_call(CallNode* node, regex_t* reg, ScanEnv* env)
{
int r;
+ int offset;
- r = add_opcode(reg, OP_CALL);
+ r = add_op(reg, OP_CALL);
if (r != 0) return r;
- r = unset_addr_list_add(env->unset_addr_list, BB_GET_OFFSET_POS(reg),
- NODE_CALL_BODY(node));
- if (r != 0) return r;
- r = add_abs_addr(reg, 0 /*dummy addr.*/);
+
+ COP(reg)->call.addr = 0; /* dummy addr. */
+
+ offset = COP_CURR_OFFSET_BYTES(reg, call.addr);
+ r = unset_addr_list_add(env->unset_addr_list, offset, NODE_CALL_BODY(node));
return r;
}
#endif
@@ -490,41 +684,53 @@ static int
add_compile_string_length(UChar* s ARG_UNUSED, int mb_len, int str_len,
regex_t* reg ARG_UNUSED, int ignore_case)
{
- int len;
- int op = select_str_opcode(mb_len, str_len, ignore_case);
-
- len = SIZE_OPCODE;
-
- if (op == OP_EXACTMBN) len += SIZE_LENGTH;
- if (IS_NEED_STR_LEN_OP_EXACT(op))
- len += SIZE_LENGTH;
-
- len += mb_len * str_len;
- return len;
+ return 1;
}
static int
add_compile_string(UChar* s, int mb_len, int str_len,
regex_t* reg, int ignore_case)
{
- int op = select_str_opcode(mb_len, str_len, ignore_case);
- add_opcode(reg, op);
+ int op;
+ int r;
+ int byte_len;
+ UChar* p;
+ UChar* end;
+
+ op = select_str_opcode(mb_len, str_len, ignore_case);
+ r = add_op(reg, op);
+ if (r != 0) return r;
+
+ byte_len = mb_len * str_len;
+ end = s + byte_len;
- if (op == OP_EXACTMBN)
- add_length(reg, mb_len);
+ if (op == OP_EXACTMBN) {
+ p = onigenc_strdup(reg->enc, s, end);
+ CHECK_NULL_RETURN_MEMERR(p);
+
+ COP(reg)->exact_len_n.len = mb_len;
+ COP(reg)->exact_len_n.n = str_len;
+ COP(reg)->exact_len_n.s = p;
+ }
+ else if (IS_NEED_STR_LEN_OP_EXACT(op)) {
+ p = onigenc_strdup(reg->enc, s, end);
+ CHECK_NULL_RETURN_MEMERR(p);
- if (IS_NEED_STR_LEN_OP_EXACT(op)) {
if (op == OP_EXACTN_IC)
- add_length(reg, mb_len * str_len);
+ COP(reg)->exact_n.n = byte_len;
else
- add_length(reg, str_len);
+ COP(reg)->exact_n.n = str_len;
+
+ COP(reg)->exact_n.s = p;
+ }
+ else {
+ xmemcpy(COP(reg)->exact.s, s, (size_t )byte_len);
+ COP(reg)->exact.s[byte_len] = '\0';
}
- add_bytes(reg, s, mb_len * str_len);
return 0;
}
-
static int
compile_length_string_node(Node* node, regex_t* reg)
{
@@ -624,52 +830,24 @@ compile_string_raw_node(StrNode* sn, regex_t* reg)
return add_compile_string(sn->s, 1 /* sb */, (int )(sn->end - sn->s), reg, 0);
}
-static int
-add_multi_byte_cclass(BBuf* mbuf, regex_t* reg)
+static void*
+set_multi_byte_cclass(BBuf* mbuf, regex_t* reg)
{
-#ifdef PLATFORM_UNALIGNED_WORD_ACCESS
- add_length(reg, mbuf->used);
- return add_bytes(reg, mbuf->p, mbuf->used);
-#else
- int r, pad_size;
- UChar* p = BB_GET_ADD_ADDRESS(reg) + SIZE_LENGTH;
-
- GET_ALIGNMENT_PAD_SIZE(p, pad_size);
- add_length(reg, mbuf->used + (WORD_ALIGNMENT_SIZE - 1));
- if (pad_size != 0) add_bytes(reg, PadBuf, pad_size);
+ size_t len;
+ void* p;
- r = add_bytes(reg, mbuf->p, mbuf->used);
+ len = (size_t )mbuf->used;
+ p = xmalloc(len);
+ if (IS_NULL(p)) return NULL;
- /* padding for return value from compile_length_cclass_node() to be fix. */
- pad_size = (WORD_ALIGNMENT_SIZE - 1) - pad_size;
- if (pad_size != 0) add_bytes(reg, PadBuf, pad_size);
- return r;
-#endif
+ xmemcpy(p, mbuf->p, len);
+ return p;
}
static int
compile_length_cclass_node(CClassNode* cc, regex_t* reg)
{
- int len;
-
- if (IS_NULL(cc->mbuf)) {
- len = SIZE_OPCODE + SIZE_BITSET;
- }
- else {
- if (ONIGENC_MBC_MINLEN(reg->enc) > 1 || bitset_is_empty(cc->bs)) {
- len = SIZE_OPCODE;
- }
- else {
- len = SIZE_OPCODE + SIZE_BITSET;
- }
-#ifdef PLATFORM_UNALIGNED_WORD_ACCESS
- len += SIZE_LENGTH + cc->mbuf->used;
-#else
- len += SIZE_LENGTH + cc->mbuf->used + (WORD_ALIGNMENT_SIZE - 1);
-#endif
- }
-
- return len;
+ return 1;
}
static int
@@ -678,35 +856,39 @@ compile_cclass_node(CClassNode* cc, regex_t* reg)
int r;
if (IS_NULL(cc->mbuf)) {
- if (IS_NCCLASS_NOT(cc))
- add_opcode(reg, OP_CCLASS_NOT);
- else
- add_opcode(reg, OP_CCLASS);
+ r = add_op(reg, IS_NCCLASS_NOT(cc) ? OP_CCLASS_NOT : OP_CCLASS);
+ if (r != 0) return r;
- r = add_bitset(reg, cc->bs);
+ COP(reg)->cclass.bsp = xmalloc(SIZE_BITSET);
+ CHECK_NULL_RETURN_MEMERR(COP(reg)->cclass.bsp);
+ xmemcpy(COP(reg)->cclass.bsp, cc->bs, SIZE_BITSET);
}
else {
+ void* p;
+
if (ONIGENC_MBC_MINLEN(reg->enc) > 1 || bitset_is_empty(cc->bs)) {
- if (IS_NCCLASS_NOT(cc))
- add_opcode(reg, OP_CCLASS_MB_NOT);
- else
- add_opcode(reg, OP_CCLASS_MB);
+ r = add_op(reg, IS_NCCLASS_NOT(cc) ? OP_CCLASS_MB_NOT : OP_CCLASS_MB);
+ if (r != 0) return r;
- r = add_multi_byte_cclass(cc->mbuf, reg);
+ p = set_multi_byte_cclass(cc->mbuf, reg);
+ CHECK_NULL_RETURN_MEMERR(p);
+ COP(reg)->cclass_mb.mb = p;
}
else {
- if (IS_NCCLASS_NOT(cc))
- add_opcode(reg, OP_CCLASS_MIX_NOT);
- else
- add_opcode(reg, OP_CCLASS_MIX);
-
- r = add_bitset(reg, cc->bs);
+ r = add_op(reg, IS_NCCLASS_NOT(cc) ? OP_CCLASS_MIX_NOT : OP_CCLASS_MIX);
if (r != 0) return r;
- r = add_multi_byte_cclass(cc->mbuf, reg);
+
+ COP(reg)->cclass_mix.bsp = xmalloc(SIZE_BITSET);
+ CHECK_NULL_RETURN_MEMERR(COP(reg)->cclass_mix.bsp);
+ xmemcpy(COP(reg)->cclass_mix.bsp, cc->bs, SIZE_BITSET);
+
+ p = set_multi_byte_cclass(cc->mbuf, reg);
+ CHECK_NULL_RETURN_MEMERR(p);
+ COP(reg)->cclass_mix.mb = p;
}
}
- return r;
+ return 0;
}
static int
@@ -737,29 +919,27 @@ entry_repeat_range(regex_t* reg, int id, int lower, int upper)
}
p[id].lower = lower;
- p[id].upper = (IS_REPEAT_INFINITE(upper) ? 0x7fffffff : upper);
+ p[id].upper = (IS_INFINITE_REPEAT(upper) ? 0x7fffffff : upper);
return 0;
}
static int
-compile_range_repeat_node(QuantNode* qn, int target_len, int empty_info,
+compile_range_repeat_node(QuantNode* qn, int target_len, int emptiness,
regex_t* reg, ScanEnv* env)
{
int r;
- int num_repeat = reg->num_repeat;
+ int num_repeat = reg->num_repeat++;
- r = add_opcode(reg, qn->greedy ? OP_REPEAT : OP_REPEAT_NG);
- if (r != 0) return r;
- r = add_mem_num(reg, num_repeat); /* OP_REPEAT ID */
- reg->num_repeat++;
- if (r != 0) return r;
- r = add_rel_addr(reg, target_len + SIZE_OP_REPEAT_INC);
+ r = add_op(reg, qn->greedy ? OP_REPEAT : OP_REPEAT_NG);
if (r != 0) return r;
+ COP(reg)->repeat.id = num_repeat;
+ COP(reg)->repeat.addr = SIZE_INC_OP + target_len + SIZE_OP_REPEAT_INC;
+
r = entry_repeat_range(reg, num_repeat, qn->lower, qn->upper);
if (r != 0) return r;
- r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, empty_info, env);
+ r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, emptiness, env);
if (r != 0) return r;
if (
@@ -767,35 +947,36 @@ compile_range_repeat_node(QuantNode* qn, int target_len, int empty_info,
NODE_IS_IN_MULTI_ENTRY(qn) ||
#endif
NODE_IS_IN_REAL_REPEAT(qn)) {
- r = add_opcode(reg, qn->greedy ? OP_REPEAT_INC_SG : OP_REPEAT_INC_NG_SG);
+ r = add_op(reg, qn->greedy ? OP_REPEAT_INC_SG : OP_REPEAT_INC_NG_SG);
}
else {
- r = add_opcode(reg, qn->greedy ? OP_REPEAT_INC : OP_REPEAT_INC_NG);
+ r = add_op(reg, qn->greedy ? OP_REPEAT_INC : OP_REPEAT_INC_NG);
}
if (r != 0) return r;
- r = add_mem_num(reg, num_repeat); /* OP_REPEAT ID */
+
+ COP(reg)->repeat_inc.id = num_repeat;
return r;
}
static int
is_anychar_infinite_greedy(QuantNode* qn)
{
- if (qn->greedy && IS_REPEAT_INFINITE(qn->upper) &&
+ if (qn->greedy && IS_INFINITE_REPEAT(qn->upper) &&
NODE_IS_ANYCHAR(NODE_QUANT_BODY(qn)))
return 1;
else
return 0;
}
-#define QUANTIFIER_EXPAND_LIMIT_SIZE 50
+#define QUANTIFIER_EXPAND_LIMIT_SIZE 10
#define CKN_ON (ckn > 0)
static int
compile_length_quantifier_node(QuantNode* qn, regex_t* reg)
{
int len, mod_tlen;
- int infinite = IS_REPEAT_INFINITE(qn->upper);
- enum QuantBodyEmpty empty_info = qn->body_empty_info;
+ int infinite = IS_INFINITE_REPEAT(qn->upper);
+ enum BodyEmptyType emptiness = qn->emptiness;
int tlen = compile_length_tree(NODE_QUANT_BODY(qn), reg);
if (tlen < 0) return tlen;
@@ -812,10 +993,9 @@ compile_length_quantifier_node(QuantNode* qn, regex_t* reg)
}
}
- if (empty_info == QUANT_BODY_IS_NOT_EMPTY)
- mod_tlen = tlen;
- else
- mod_tlen = tlen + (SIZE_OP_EMPTY_CHECK_START + SIZE_OP_EMPTY_CHECK_END);
+ mod_tlen = tlen;
+ if (emptiness != BODY_IS_NOT_EMPTY)
+ mod_tlen += SIZE_OP_EMPTY_CHECK_START + SIZE_OP_EMPTY_CHECK_END;
if (infinite &&
(qn->lower <= 1 ||
@@ -828,9 +1008,12 @@ compile_length_quantifier_node(QuantNode* qn, regex_t* reg)
}
if (qn->greedy) {
+#ifdef USE_OP_PUSH_OR_JUMP_EXACT
if (IS_NOT_NULL(qn->head_exact))
len += SIZE_OP_PUSH_OR_JUMP_EXACT1 + mod_tlen + SIZE_OP_JUMP;
- else if (IS_NOT_NULL(qn->next_head_exact))
+ else
+#endif
+ if (IS_NOT_NULL(qn->next_head_exact))
len += SIZE_OP_PUSH_IF_PEEK_NEXT + mod_tlen + SIZE_OP_JUMP;
else
len += SIZE_OP_PUSH + mod_tlen + SIZE_OP_JUMP;
@@ -838,8 +1021,12 @@ compile_length_quantifier_node(QuantNode* qn, regex_t* reg)
else
len += SIZE_OP_JUMP + mod_tlen + SIZE_OP_PUSH;
}
- else if (qn->upper == 0 && qn->is_refered != 0) { /* /(?<n>..){0}/ */
- len = SIZE_OP_JUMP + tlen;
+ else if (qn->upper == 0) {
+ if (qn->is_refered != 0) { /* /(?<n>..){0}/ */
+ len = SIZE_OP_JUMP + tlen;
+ }
+ else
+ len = 0;
}
else if (!infinite && qn->greedy &&
(qn->upper == 1 ||
@@ -852,8 +1039,7 @@ compile_length_quantifier_node(QuantNode* qn, regex_t* reg)
len = SIZE_OP_PUSH + SIZE_OP_JUMP + tlen;
}
else {
- len = SIZE_OP_REPEAT_INC
- + mod_tlen + SIZE_OPCODE + SIZE_RELADDR + SIZE_MEMNUM;
+ len = SIZE_OP_REPEAT_INC + mod_tlen + SIZE_OP_REPEAT;
}
return len;
@@ -863,8 +1049,8 @@ static int
compile_quantifier_node(QuantNode* qn, regex_t* reg, ScanEnv* env)
{
int i, r, mod_tlen;
- int infinite = IS_REPEAT_INFINITE(qn->upper);
- enum QuantBodyEmpty empty_info = qn->body_empty_info;
+ int infinite = IS_INFINITE_REPEAT(qn->upper);
+ enum BodyEmptyType emptiness = qn->emptiness;
int tlen = compile_length_tree(NODE_QUANT_BODY(qn), reg);
if (tlen < 0) return tlen;
@@ -876,42 +1062,48 @@ compile_quantifier_node(QuantNode* qn, regex_t* reg, ScanEnv* env)
r = compile_tree_n_times(NODE_QUANT_BODY(qn), qn->lower, reg, env);
if (r != 0) return r;
if (IS_NOT_NULL(qn->next_head_exact)) {
- if (IS_MULTILINE(CTYPE_OPTION(NODE_QUANT_BODY(qn), reg)))
- r = add_opcode(reg, OP_ANYCHAR_ML_STAR_PEEK_NEXT);
- else
- r = add_opcode(reg, OP_ANYCHAR_STAR_PEEK_NEXT);
+ r = add_op(reg,
+ IS_MULTILINE(CTYPE_OPTION(NODE_QUANT_BODY(qn), reg)) ?
+ OP_ANYCHAR_ML_STAR_PEEK_NEXT : OP_ANYCHAR_STAR_PEEK_NEXT);
if (r != 0) return r;
- return add_bytes(reg, STR_(qn->next_head_exact)->s, 1);
+
+ COP(reg)->anychar_star_peek_next.c = STR_(qn->next_head_exact)->s[0];
+ return 0;
}
else {
- if (IS_MULTILINE(CTYPE_OPTION(NODE_QUANT_BODY(qn), reg)))
- return add_opcode(reg, OP_ANYCHAR_ML_STAR);
- else
- return add_opcode(reg, OP_ANYCHAR_STAR);
+ r = add_op(reg,
+ IS_MULTILINE(CTYPE_OPTION(NODE_QUANT_BODY(qn), reg)) ?
+ OP_ANYCHAR_ML_STAR : OP_ANYCHAR_STAR);
+ return r;
}
}
- if (empty_info == QUANT_BODY_IS_NOT_EMPTY)
- mod_tlen = tlen;
- else
- mod_tlen = tlen + (SIZE_OP_EMPTY_CHECK_START + SIZE_OP_EMPTY_CHECK_END);
+ mod_tlen = tlen;
+ if (emptiness != BODY_IS_NOT_EMPTY)
+ mod_tlen += SIZE_OP_EMPTY_CHECK_START + SIZE_OP_EMPTY_CHECK_END;
if (infinite &&
(qn->lower <= 1 ||
int_multiply_cmp(tlen, qn->lower, QUANTIFIER_EXPAND_LIMIT_SIZE) <= 0)) {
+ int addr;
+
if (qn->lower == 1 && tlen > QUANTIFIER_EXPAND_LIMIT_SIZE) {
+ r = add_op(reg, OP_JUMP);
+ if (r != 0) return r;
if (qn->greedy) {
+#ifdef USE_OP_PUSH_OR_JUMP_EXACT
if (IS_NOT_NULL(qn->head_exact))
- r = add_opcode_rel_addr(reg, OP_JUMP, SIZE_OP_PUSH_OR_JUMP_EXACT1);
- else if (IS_NOT_NULL(qn->next_head_exact))
- r = add_opcode_rel_addr(reg, OP_JUMP, SIZE_OP_PUSH_IF_PEEK_NEXT);
+ COP(reg)->jump.addr = SIZE_OP_PUSH_OR_JUMP_EXACT1 + SIZE_INC_OP;
+ else
+#endif
+ if (IS_NOT_NULL(qn->next_head_exact))
+ COP(reg)->jump.addr = SIZE_OP_PUSH_IF_PEEK_NEXT + SIZE_INC_OP;
else
- r = add_opcode_rel_addr(reg, OP_JUMP, SIZE_OP_PUSH);
+ COP(reg)->jump.addr = SIZE_OP_PUSH + SIZE_INC_OP;
}
else {
- r = add_opcode_rel_addr(reg, OP_JUMP, SIZE_OP_JUMP);
+ COP(reg)->jump.addr = SIZE_OP_JUMP + SIZE_INC_OP;
}
- if (r != 0) return r;
}
else {
r = compile_tree_n_times(NODE_QUANT_BODY(qn), qn->lower, reg, env);
@@ -919,48 +1111,72 @@ compile_quantifier_node(QuantNode* qn, regex_t* reg, ScanEnv* env)
}
if (qn->greedy) {
+#ifdef USE_OP_PUSH_OR_JUMP_EXACT
if (IS_NOT_NULL(qn->head_exact)) {
- r = add_opcode_rel_addr(reg, OP_PUSH_OR_JUMP_EXACT1,
- mod_tlen + SIZE_OP_JUMP);
+ r = add_op(reg, OP_PUSH_OR_JUMP_EXACT1);
if (r != 0) return r;
- add_bytes(reg, STR_(qn->head_exact)->s, 1);
- r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, empty_info, env);
+ COP(reg)->push_or_jump_exact1.addr = SIZE_INC_OP + mod_tlen + SIZE_OP_JUMP;
+ COP(reg)->push_or_jump_exact1.c = STR_(qn->head_exact)->s[0];
+
+ r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, emptiness, env);
if (r != 0) return r;
- r = add_opcode_rel_addr(reg, OP_JUMP,
- -(mod_tlen + (int )SIZE_OP_JUMP + (int )SIZE_OP_PUSH_OR_JUMP_EXACT1));
+
+ addr = -(mod_tlen + (int )SIZE_OP_PUSH_OR_JUMP_EXACT1);
}
- else if (IS_NOT_NULL(qn->next_head_exact)) {
- r = add_opcode_rel_addr(reg, OP_PUSH_IF_PEEK_NEXT,
- mod_tlen + SIZE_OP_JUMP);
+ else
+#endif
+ if (IS_NOT_NULL(qn->next_head_exact)) {
+ r = add_op(reg, OP_PUSH_IF_PEEK_NEXT);
if (r != 0) return r;
- add_bytes(reg, STR_(qn->next_head_exact)->s, 1);
- r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, empty_info, env);
+ COP(reg)->push_if_peek_next.addr = SIZE_INC_OP + mod_tlen + SIZE_OP_JUMP;
+ COP(reg)->push_if_peek_next.c = STR_(qn->next_head_exact)->s[0];
+
+ r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, emptiness, env);
if (r != 0) return r;
- r = add_opcode_rel_addr(reg, OP_JUMP,
- -(mod_tlen + (int )SIZE_OP_JUMP + (int )SIZE_OP_PUSH_IF_PEEK_NEXT));
+
+ addr = -(mod_tlen + (int )SIZE_OP_PUSH_IF_PEEK_NEXT);
}
else {
- r = add_opcode_rel_addr(reg, OP_PUSH, mod_tlen + SIZE_OP_JUMP);
+ r = add_op(reg, OP_PUSH);
if (r != 0) return r;
- r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, empty_info, env);
+ COP(reg)->push.addr = SIZE_INC_OP + mod_tlen + SIZE_OP_JUMP;
+
+ r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, emptiness, env);
if (r != 0) return r;
- r = add_opcode_rel_addr(reg, OP_JUMP,
- -(mod_tlen + (int )SIZE_OP_JUMP + (int )SIZE_OP_PUSH));
+
+ addr = -(mod_tlen + (int )SIZE_OP_PUSH);
}
+
+ r = add_op(reg, OP_JUMP);
+ if (r != 0) return r;
+ COP(reg)->jump.addr = addr;
}
else {
- r = add_opcode_rel_addr(reg, OP_JUMP, mod_tlen);
+ r = add_op(reg, OP_JUMP);
if (r != 0) return r;
- r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, empty_info, env);
+ COP(reg)->jump.addr = mod_tlen + SIZE_INC_OP;
+
+ r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, emptiness, env);
+ if (r != 0) return r;
+
+ r = add_op(reg, OP_PUSH);
+ if (r != 0) return r;
+ COP(reg)->push.addr = -mod_tlen;
+ }
+ }
+ else if (qn->upper == 0) {
+ if (qn->is_refered != 0) { /* /(?<n>..){0}/ */
+ r = add_op(reg, OP_JUMP);
if (r != 0) return r;
- r = add_opcode_rel_addr(reg, OP_PUSH, -(mod_tlen + (int )SIZE_OP_PUSH));
+ COP(reg)->jump.addr = tlen + SIZE_INC_OP;
+
+ r = compile_tree(NODE_QUANT_BODY(qn), reg, env);
+ }
+ else {
+ /* Nothing output */
+ r = 0;
}
}
- else if (qn->upper == 0 && qn->is_refered != 0) { /* /(?<n>..){0}/ */
- r = add_opcode_rel_addr(reg, OP_JUMP, tlen);
- if (r != 0) return r;
- r = compile_tree(NODE_QUANT_BODY(qn), reg, env);
- }
else if (! infinite && qn->greedy &&
(qn->upper == 1 ||
int_multiply_cmp(tlen + SIZE_OP_PUSH, qn->upper,
@@ -971,70 +1187,78 @@ compile_quantifier_node(QuantNode* qn, regex_t* reg, ScanEnv* env)
if (r != 0) return r;
for (i = 0; i < n; i++) {
- r = add_opcode_rel_addr(reg, OP_PUSH,
- (n - i) * tlen + (n - i - 1) * SIZE_OP_PUSH);
+ int v = onig_positive_int_multiply(n - i, tlen + SIZE_OP_PUSH);
+ if (v < 0) return ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE;
+
+ r = add_op(reg, OP_PUSH);
if (r != 0) return r;
+ COP(reg)->push.addr = v;
+
r = compile_tree(NODE_QUANT_BODY(qn), reg, env);
if (r != 0) return r;
}
}
else if (! qn->greedy && qn->upper == 1 && qn->lower == 0) { /* '??' */
- r = add_opcode_rel_addr(reg, OP_PUSH, SIZE_OP_JUMP);
+ r = add_op(reg, OP_PUSH);
if (r != 0) return r;
- r = add_opcode_rel_addr(reg, OP_JUMP, tlen);
+ COP(reg)->push.addr = SIZE_INC_OP + SIZE_OP_JUMP;
+
+ r = add_op(reg, OP_JUMP);
if (r != 0) return r;
+ COP(reg)->jump.addr = tlen + SIZE_INC_OP;
+
r = compile_tree(NODE_QUANT_BODY(qn), reg, env);
}
else {
- r = compile_range_repeat_node(qn, mod_tlen, empty_info, reg, env);
+ r = compile_range_repeat_node(qn, mod_tlen, emptiness, reg, env);
}
return r;
}
static int
-compile_length_option_node(EnclosureNode* node, regex_t* reg)
+compile_length_option_node(BagNode* node, regex_t* reg)
{
int tlen;
OnigOptionType prev = reg->options;
reg->options = node->o.options;
- tlen = compile_length_tree(NODE_ENCLOSURE_BODY(node), reg);
+ tlen = compile_length_tree(NODE_BAG_BODY(node), reg);
reg->options = prev;
return tlen;
}
static int
-compile_option_node(EnclosureNode* node, regex_t* reg, ScanEnv* env)
+compile_option_node(BagNode* node, regex_t* reg, ScanEnv* env)
{
int r;
OnigOptionType prev = reg->options;
reg->options = node->o.options;
- r = compile_tree(NODE_ENCLOSURE_BODY(node), reg, env);
+ r = compile_tree(NODE_BAG_BODY(node), reg, env);
reg->options = prev;
return r;
}
static int
-compile_length_enclosure_node(EnclosureNode* node, regex_t* reg)
+compile_length_bag_node(BagNode* node, regex_t* reg)
{
int len;
int tlen;
- if (node->type == ENCLOSURE_OPTION)
+ if (node->type == BAG_OPTION)
return compile_length_option_node(node, reg);
- if (NODE_ENCLOSURE_BODY(node)) {
- tlen = compile_length_tree(NODE_ENCLOSURE_BODY(node), reg);
+ if (NODE_BAG_BODY(node)) {
+ tlen = compile_length_tree(NODE_BAG_BODY(node), reg);
if (tlen < 0) return tlen;
}
else
tlen = 0;
switch (node->type) {
- case ENCLOSURE_MEMORY:
+ case BAG_MEMORY:
#ifdef USE_CALL
if (node->m.regnum == 0 && NODE_IS_CALLED(node)) {
@@ -1070,23 +1294,27 @@ compile_length_enclosure_node(EnclosureNode* node, regex_t* reg)
}
break;
- case ENCLOSURE_STOP_BACKTRACK:
- if (NODE_IS_STOP_BT_SIMPLE_REPEAT(node)) {
- QuantNode* qn = QUANT_(NODE_ENCLOSURE_BODY(node));
+ case BAG_STOP_BACKTRACK:
+ if (NODE_IS_STRICT_REAL_REPEAT(node)) {
+ int v;
+ QuantNode* qn;
+
+ qn = QUANT_(NODE_BAG_BODY(node));
tlen = compile_length_tree(NODE_QUANT_BODY(qn), reg);
if (tlen < 0) return tlen;
- len = tlen * qn->lower
- + SIZE_OP_PUSH + tlen + SIZE_OP_POP_OUT + SIZE_OP_JUMP;
+ v = onig_positive_int_multiply(qn->lower, tlen);
+ if (v < 0) return ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE;
+ len = v + SIZE_OP_PUSH + tlen + SIZE_OP_POP_OUT + SIZE_OP_JUMP;
}
else {
len = SIZE_OP_ATOMIC_START + tlen + SIZE_OP_ATOMIC_END;
}
break;
- case ENCLOSURE_IF_ELSE:
+ case BAG_IF_ELSE:
{
- Node* cond = NODE_ENCLOSURE_BODY(node);
+ Node* cond = NODE_BAG_BODY(node);
Node* Then = node->te.Then;
Node* Else = node->te.Else;
@@ -1101,8 +1329,9 @@ compile_length_enclosure_node(EnclosureNode* node, regex_t* reg)
len += tlen;
}
+ len += SIZE_OP_JUMP + SIZE_OP_ATOMIC_END;
+
if (IS_NOT_NULL(Else)) {
- len += SIZE_OP_JUMP;
tlen = compile_length_tree(Else, reg);
if (tlen < 0) return tlen;
len += tlen;
@@ -1110,146 +1339,151 @@ compile_length_enclosure_node(EnclosureNode* node, regex_t* reg)
}
break;
- default:
- return ONIGERR_TYPE_BUG;
+ case BAG_OPTION:
+ /* never come here, but set for escape warning */
+ len = 0;
break;
}
return len;
}
-static int get_char_length_tree(Node* node, regex_t* reg, int* len);
+static int get_char_len_node(Node* node, regex_t* reg, int* len);
static int
-compile_enclosure_memory_node(EnclosureNode* node, regex_t* reg, ScanEnv* env)
+compile_bag_memory_node(BagNode* node, regex_t* reg, ScanEnv* env)
{
int r;
int len;
#ifdef USE_CALL
- if (node->m.regnum == 0 && NODE_IS_CALLED(node)) {
- r = add_opcode(reg, OP_CALL);
+ if (NODE_IS_CALLED(node)) {
+ r = add_op(reg, OP_CALL);
if (r != 0) return r;
- node->m.called_addr = BB_GET_OFFSET_POS(reg) + SIZE_ABSADDR + SIZE_OP_JUMP;
+
+ node->m.called_addr = COP_CURR_OFFSET(reg) + 1 + SIZE_OP_JUMP;
NODE_STATUS_ADD(node, ADDR_FIXED);
- r = add_abs_addr(reg, (int )node->m.called_addr);
- if (r != 0) return r;
- len = compile_length_tree(NODE_ENCLOSURE_BODY(node), reg);
- len += SIZE_OP_RETURN;
- r = add_opcode_rel_addr(reg, OP_JUMP, len);
- if (r != 0) return r;
+ COP(reg)->call.addr = (int )node->m.called_addr;
- r = compile_tree(NODE_ENCLOSURE_BODY(node), reg, env);
- if (r != 0) return r;
- r = add_opcode(reg, OP_RETURN);
- return r;
- }
+ if (node->m.regnum == 0) {
+ len = compile_length_tree(NODE_BAG_BODY(node), reg);
+ len += SIZE_OP_RETURN;
- if (NODE_IS_CALLED(node)) {
- r = add_opcode(reg, OP_CALL);
- if (r != 0) return r;
- node->m.called_addr = BB_GET_OFFSET_POS(reg) + SIZE_ABSADDR + SIZE_OP_JUMP;
- NODE_STATUS_ADD(node, ADDR_FIXED);
- r = add_abs_addr(reg, (int )node->m.called_addr);
- if (r != 0) return r;
- len = compile_length_tree(NODE_ENCLOSURE_BODY(node), reg);
- len += (SIZE_OP_MEMORY_START_PUSH + SIZE_OP_RETURN);
- if (MEM_STATUS_AT0(reg->bt_mem_end, node->m.regnum))
- len += (NODE_IS_RECURSION(node)
- ? SIZE_OP_MEMORY_END_PUSH_REC : SIZE_OP_MEMORY_END_PUSH);
- else
- len += (NODE_IS_RECURSION(node)
- ? SIZE_OP_MEMORY_END_REC : SIZE_OP_MEMORY_END);
+ r = add_op(reg, OP_JUMP);
+ if (r != 0) return r;
+ COP(reg)->jump.addr = len + SIZE_INC_OP;
- r = add_opcode_rel_addr(reg, OP_JUMP, len);
- if (r != 0) return r;
+ r = compile_tree(NODE_BAG_BODY(node), reg, env);
+ if (r != 0) return r;
+
+ r = add_op(reg, OP_RETURN);
+ return r;
+ }
+ else {
+ len = compile_length_tree(NODE_BAG_BODY(node), reg);
+ len += (SIZE_OP_MEMORY_START_PUSH + SIZE_OP_RETURN);
+ if (MEM_STATUS_AT0(reg->bt_mem_end, node->m.regnum))
+ len += (NODE_IS_RECURSION(node)
+ ? SIZE_OP_MEMORY_END_PUSH_REC : SIZE_OP_MEMORY_END_PUSH);
+ else
+ len += (NODE_IS_RECURSION(node)
+ ? SIZE_OP_MEMORY_END_REC : SIZE_OP_MEMORY_END);
+
+ r = add_op(reg, OP_JUMP);
+ if (r != 0) return r;
+ COP(reg)->jump.addr = len + SIZE_INC_OP;
+ }
}
#endif
if (MEM_STATUS_AT0(reg->bt_mem_start, node->m.regnum))
- r = add_opcode(reg, OP_MEMORY_START_PUSH);
+ r = add_op(reg, OP_MEMORY_START_PUSH);
else
- r = add_opcode(reg, OP_MEMORY_START);
+ r = add_op(reg, OP_MEMORY_START);
if (r != 0) return r;
- r = add_mem_num(reg, node->m.regnum);
- if (r != 0) return r;
- r = compile_tree(NODE_ENCLOSURE_BODY(node), reg, env);
+ COP(reg)->memory_start.num = node->m.regnum;
+
+ r = compile_tree(NODE_BAG_BODY(node), reg, env);
if (r != 0) return r;
#ifdef USE_CALL
if (MEM_STATUS_AT0(reg->bt_mem_end, node->m.regnum))
- r = add_opcode(reg, (NODE_IS_RECURSION(node)
- ? OP_MEMORY_END_PUSH_REC : OP_MEMORY_END_PUSH));
+ r = add_op(reg, (NODE_IS_RECURSION(node)
+ ? OP_MEMORY_END_PUSH_REC : OP_MEMORY_END_PUSH));
else
- r = add_opcode(reg, (NODE_IS_RECURSION(node)
- ? OP_MEMORY_END_REC : OP_MEMORY_END));
+ r = add_op(reg, (NODE_IS_RECURSION(node) ? OP_MEMORY_END_REC : OP_MEMORY_END));
if (r != 0) return r;
- r = add_mem_num(reg, node->m.regnum);
+ COP(reg)->memory_end.num = node->m.regnum;
+
if (NODE_IS_CALLED(node)) {
if (r != 0) return r;
- r = add_opcode(reg, OP_RETURN);
+ r = add_op(reg, OP_RETURN);
}
#else
if (MEM_STATUS_AT0(reg->bt_mem_end, node->m.regnum))
- r = add_opcode(reg, OP_MEMORY_END_PUSH);
+ r = add_op(reg, OP_MEMORY_END_PUSH);
else
- r = add_opcode(reg, OP_MEMORY_END);
+ r = add_op(reg, OP_MEMORY_END);
if (r != 0) return r;
- r = add_mem_num(reg, node->m.regnum);
+ COP(reg)->memory_end.num = node->m.regnum;
#endif
return r;
}
static int
-compile_enclosure_node(EnclosureNode* node, regex_t* reg, ScanEnv* env)
+compile_bag_node(BagNode* node, regex_t* reg, ScanEnv* env)
{
int r, len;
switch (node->type) {
- case ENCLOSURE_MEMORY:
- r = compile_enclosure_memory_node(node, reg, env);
+ case BAG_MEMORY:
+ r = compile_bag_memory_node(node, reg, env);
break;
- case ENCLOSURE_OPTION:
+ case BAG_OPTION:
r = compile_option_node(node, reg, env);
break;
- case ENCLOSURE_STOP_BACKTRACK:
- if (NODE_IS_STOP_BT_SIMPLE_REPEAT(node)) {
- QuantNode* qn = QUANT_(NODE_ENCLOSURE_BODY(node));
+ case BAG_STOP_BACKTRACK:
+ if (NODE_IS_STRICT_REAL_REPEAT(node)) {
+ QuantNode* qn = QUANT_(NODE_BAG_BODY(node));
r = compile_tree_n_times(NODE_QUANT_BODY(qn), qn->lower, reg, env);
if (r != 0) return r;
len = compile_length_tree(NODE_QUANT_BODY(qn), reg);
if (len < 0) return len;
- r = add_opcode_rel_addr(reg, OP_PUSH, len + SIZE_OP_POP_OUT + SIZE_OP_JUMP);
+ r = add_op(reg, OP_PUSH);
if (r != 0) return r;
+ COP(reg)->push.addr = SIZE_INC_OP + len + SIZE_OP_POP_OUT + SIZE_OP_JUMP;
+
r = compile_tree(NODE_QUANT_BODY(qn), reg, env);
if (r != 0) return r;
- r = add_opcode(reg, OP_POP_OUT);
+ r = add_op(reg, OP_POP_OUT);
+ if (r != 0) return r;
+
+ r = add_op(reg, OP_JUMP);
if (r != 0) return r;
- r = add_opcode_rel_addr(reg, OP_JUMP,
- -((int )SIZE_OP_PUSH + len + (int )SIZE_OP_POP_OUT + (int )SIZE_OP_JUMP));
+ COP(reg)->jump.addr = -((int )SIZE_OP_PUSH + len + (int )SIZE_OP_POP_OUT);
}
else {
- r = add_opcode(reg, OP_ATOMIC_START);
+ r = add_op(reg, OP_ATOMIC_START);
if (r != 0) return r;
- r = compile_tree(NODE_ENCLOSURE_BODY(node), reg, env);
+ r = compile_tree(NODE_BAG_BODY(node), reg, env);
if (r != 0) return r;
- r = add_opcode(reg, OP_ATOMIC_END);
+ r = add_op(reg, OP_ATOMIC_END);
}
break;
- case ENCLOSURE_IF_ELSE:
+ case BAG_IF_ELSE:
{
- int cond_len, then_len, jump_len;
- Node* cond = NODE_ENCLOSURE_BODY(node);
+ int cond_len, then_len, else_len, jump_len;
+ Node* cond = NODE_BAG_BODY(node);
Node* Then = node->te.Then;
Node* Else = node->te.Else;
- r = add_opcode(reg, OP_ATOMIC_START);
+ r = add_op(reg, OP_ATOMIC_START);
if (r != 0) return r;
cond_len = compile_length_tree(cond, reg);
@@ -1261,14 +1495,15 @@ compile_enclosure_node(EnclosureNode* node, regex_t* reg, ScanEnv* env)
else
then_len = 0;
- jump_len = cond_len + then_len + SIZE_OP_ATOMIC_END;
- if (IS_NOT_NULL(Else)) jump_len += SIZE_OP_JUMP;
+ jump_len = cond_len + then_len + SIZE_OP_ATOMIC_END + SIZE_OP_JUMP;
- r = add_opcode_rel_addr(reg, OP_PUSH, jump_len);
+ r = add_op(reg, OP_PUSH);
if (r != 0) return r;
+ COP(reg)->push.addr = SIZE_INC_OP + jump_len;
+
r = compile_tree(cond, reg, env);
if (r != 0) return r;
- r = add_opcode(reg, OP_ATOMIC_END);
+ r = add_op(reg, OP_ATOMIC_END);
if (r != 0) return r;
if (IS_NOT_NULL(Then)) {
@@ -1277,17 +1512,24 @@ compile_enclosure_node(EnclosureNode* node, regex_t* reg, ScanEnv* env)
}
if (IS_NOT_NULL(Else)) {
- int else_len = compile_length_tree(Else, reg);
- r = add_opcode_rel_addr(reg, OP_JUMP, else_len);
- if (r != 0) return r;
+ else_len = compile_length_tree(Else, reg);
+ if (else_len < 0) return else_len;
+ }
+ else
+ else_len = 0;
+
+ r = add_op(reg, OP_JUMP);
+ if (r != 0) return r;
+ COP(reg)->jump.addr = SIZE_OP_ATOMIC_END + else_len + SIZE_INC_OP;
+
+ r = add_op(reg, OP_ATOMIC_END);
+ if (r != 0) return r;
+
+ if (IS_NOT_NULL(Else)) {
r = compile_tree(Else, reg, env);
}
}
break;
-
- default:
- return ONIGERR_TYPE_BUG;
- break;
}
return r;
@@ -1305,30 +1547,30 @@ compile_length_anchor_node(AnchorNode* node, regex_t* reg)
}
switch (node->type) {
- case ANCHOR_PREC_READ:
+ case ANCR_PREC_READ:
len = SIZE_OP_PREC_READ_START + tlen + SIZE_OP_PREC_READ_END;
break;
- case ANCHOR_PREC_READ_NOT:
+ case ANCR_PREC_READ_NOT:
len = SIZE_OP_PREC_READ_NOT_START + tlen + SIZE_OP_PREC_READ_NOT_END;
break;
- case ANCHOR_LOOK_BEHIND:
+ case ANCR_LOOK_BEHIND:
len = SIZE_OP_LOOK_BEHIND + tlen;
break;
- case ANCHOR_LOOK_BEHIND_NOT:
+ case ANCR_LOOK_BEHIND_NOT:
len = SIZE_OP_LOOK_BEHIND_NOT_START + tlen + SIZE_OP_LOOK_BEHIND_NOT_END;
break;
- case ANCHOR_WORD_BOUNDARY:
- case ANCHOR_NO_WORD_BOUNDARY:
+ case ANCR_WORD_BOUNDARY:
+ case ANCR_NO_WORD_BOUNDARY:
#ifdef USE_WORD_BEGIN_END
- case ANCHOR_WORD_BEGIN:
- case ANCHOR_WORD_END:
+ case ANCR_WORD_BEGIN:
+ case ANCR_WORD_END:
#endif
len = SIZE_OP_WORD_BOUNDARY;
break;
- case ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY:
- case ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY:
+ case ANCR_TEXT_SEGMENT_BOUNDARY:
+ case ANCR_NO_TEXT_SEGMENT_BOUNDARY:
len = SIZE_OPCODE;
break;
@@ -1347,96 +1589,111 @@ compile_anchor_node(AnchorNode* node, regex_t* reg, ScanEnv* env)
enum OpCode op;
switch (node->type) {
- case ANCHOR_BEGIN_BUF: r = add_opcode(reg, OP_BEGIN_BUF); break;
- case ANCHOR_END_BUF: r = add_opcode(reg, OP_END_BUF); break;
- case ANCHOR_BEGIN_LINE: r = add_opcode(reg, OP_BEGIN_LINE); break;
- case ANCHOR_END_LINE: r = add_opcode(reg, OP_END_LINE); break;
- case ANCHOR_SEMI_END_BUF: r = add_opcode(reg, OP_SEMI_END_BUF); break;
- case ANCHOR_BEGIN_POSITION: r = add_opcode(reg, OP_BEGIN_POSITION); break;
-
- case ANCHOR_WORD_BOUNDARY:
+ case ANCR_BEGIN_BUF: r = add_op(reg, OP_BEGIN_BUF); break;
+ case ANCR_END_BUF: r = add_op(reg, OP_END_BUF); break;
+ case ANCR_BEGIN_LINE: r = add_op(reg, OP_BEGIN_LINE); break;
+ case ANCR_END_LINE: r = add_op(reg, OP_END_LINE); break;
+ case ANCR_SEMI_END_BUF: r = add_op(reg, OP_SEMI_END_BUF); break;
+ case ANCR_BEGIN_POSITION: r = add_op(reg, OP_BEGIN_POSITION); break;
+
+ case ANCR_WORD_BOUNDARY:
op = OP_WORD_BOUNDARY;
word:
- r = add_opcode(reg, op);
+ r = add_op(reg, op);
if (r != 0) return r;
- r = add_mode(reg, (ModeType )node->ascii_mode);
+ COP(reg)->word_boundary.mode = (ModeType )node->ascii_mode;
break;
- case ANCHOR_NO_WORD_BOUNDARY:
+ case ANCR_NO_WORD_BOUNDARY:
op = OP_NO_WORD_BOUNDARY; goto word;
break;
#ifdef USE_WORD_BEGIN_END
- case ANCHOR_WORD_BEGIN:
+ case ANCR_WORD_BEGIN:
op = OP_WORD_BEGIN; goto word;
break;
- case ANCHOR_WORD_END:
+ case ANCR_WORD_END:
op = OP_WORD_END; goto word;
break;
#endif
- case ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY:
- r = add_opcode(reg, OP_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY);
- break;
+ case ANCR_TEXT_SEGMENT_BOUNDARY:
+ case ANCR_NO_TEXT_SEGMENT_BOUNDARY:
+ {
+ enum TextSegmentBoundaryType type;
- case ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY:
- r = add_opcode(reg, OP_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY);
+ r = add_op(reg, OP_TEXT_SEGMENT_BOUNDARY);
+ if (r != 0) return r;
+
+ type = EXTENDED_GRAPHEME_CLUSTER_BOUNDARY;
+#ifdef USE_UNICODE_WORD_BREAK
+ if (ONIG_IS_OPTION_ON(reg->options, ONIG_OPTION_TEXT_SEGMENT_WORD))
+ type = WORD_BOUNDARY;
+#endif
+
+ COP(reg)->text_segment_boundary.type = type;
+ COP(reg)->text_segment_boundary.not =
+ (node->type == ANCR_NO_TEXT_SEGMENT_BOUNDARY ? 1 : 0);
+ }
break;
- case ANCHOR_PREC_READ:
- r = add_opcode(reg, OP_PREC_READ_START);
+ case ANCR_PREC_READ:
+ r = add_op(reg, OP_PREC_READ_START);
if (r != 0) return r;
r = compile_tree(NODE_ANCHOR_BODY(node), reg, env);
if (r != 0) return r;
- r = add_opcode(reg, OP_PREC_READ_END);
+ r = add_op(reg, OP_PREC_READ_END);
break;
- case ANCHOR_PREC_READ_NOT:
+ case ANCR_PREC_READ_NOT:
len = compile_length_tree(NODE_ANCHOR_BODY(node), reg);
if (len < 0) return len;
- r = add_opcode_rel_addr(reg, OP_PREC_READ_NOT_START, len + SIZE_OP_PREC_READ_NOT_END);
+
+ r = add_op(reg, OP_PREC_READ_NOT_START);
if (r != 0) return r;
+ COP(reg)->prec_read_not_start.addr = SIZE_INC_OP + len + SIZE_OP_PREC_READ_NOT_END;
r = compile_tree(NODE_ANCHOR_BODY(node), reg, env);
if (r != 0) return r;
- r = add_opcode(reg, OP_PREC_READ_NOT_END);
+ r = add_op(reg, OP_PREC_READ_NOT_END);
break;
- case ANCHOR_LOOK_BEHIND:
+ case ANCR_LOOK_BEHIND:
{
int n;
- r = add_opcode(reg, OP_LOOK_BEHIND);
+ r = add_op(reg, OP_LOOK_BEHIND);
if (r != 0) return r;
if (node->char_len < 0) {
- r = get_char_length_tree(NODE_ANCHOR_BODY(node), reg, &n);
+ r = get_char_len_node(NODE_ANCHOR_BODY(node), reg, &n);
if (r != 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN;
}
else
n = node->char_len;
- r = add_length(reg, n);
- if (r != 0) return r;
+ COP(reg)->look_behind.len = n;
r = compile_tree(NODE_ANCHOR_BODY(node), reg, env);
}
break;
- case ANCHOR_LOOK_BEHIND_NOT:
+ case ANCR_LOOK_BEHIND_NOT:
{
int n;
len = compile_length_tree(NODE_ANCHOR_BODY(node), reg);
- r = add_opcode_rel_addr(reg, OP_LOOK_BEHIND_NOT_START,
- len + SIZE_OP_LOOK_BEHIND_NOT_END);
+ r = add_op(reg, OP_LOOK_BEHIND_NOT_START);
if (r != 0) return r;
+ COP(reg)->look_behind_not_start.addr = SIZE_INC_OP + len + SIZE_OP_LOOK_BEHIND_NOT_END;
+
if (node->char_len < 0) {
- r = get_char_length_tree(NODE_ANCHOR_BODY(node), reg, &n);
+ r = get_char_len_node(NODE_ANCHOR_BODY(node), reg, &n);
if (r != 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN;
}
else
n = node->char_len;
- r = add_length(reg, n);
- if (r != 0) return r;
+
+ COP(reg)->look_behind_not_start.len = n;
+
r = compile_tree(NODE_ANCHOR_BODY(node), reg, env);
if (r != 0) return r;
- r = add_opcode(reg, OP_LOOK_BEHIND_NOT_END);
+ r = add_op(reg, OP_LOOK_BEHIND_NOT_END);
}
break;
@@ -1455,31 +1712,21 @@ compile_gimmick_node(GimmickNode* node, regex_t* reg)
switch (node->type) {
case GIMMICK_FAIL:
- r = add_opcode(reg, OP_FAIL);
- break;
-
- case GIMMICK_KEEP:
- r = add_opcode(reg, OP_PUSH_SAVE_VAL);
- if (r != 0) return r;
- r = add_save_type(reg, SAVE_KEEP);
- if (r != 0) return r;
- r = add_mem_num(reg, node->id);
+ r = add_op(reg, OP_FAIL);
break;
case GIMMICK_SAVE:
- r = add_opcode(reg, OP_PUSH_SAVE_VAL);
- if (r != 0) return r;
- r = add_save_type(reg, node->detail_type);
+ r = add_op(reg, OP_PUSH_SAVE_VAL);
if (r != 0) return r;
- r = add_mem_num(reg, node->id);
+ COP(reg)->push_save_val.type = node->detail_type;
+ COP(reg)->push_save_val.id = node->id;
break;
case GIMMICK_UPDATE_VAR:
- r = add_opcode(reg, OP_UPDATE_VAR);
+ r = add_op(reg, OP_UPDATE_VAR);
if (r != 0) return r;
- r = add_update_var_type(reg, node->detail_type);
- if (r != 0) return r;
- r = add_mem_num(reg, node->id);
+ COP(reg)->update_var.type = node->detail_type;
+ COP(reg)->update_var.id = node->id;
break;
#ifdef USE_CALLOUT
@@ -1488,15 +1735,17 @@ compile_gimmick_node(GimmickNode* node, regex_t* reg)
case ONIG_CALLOUT_OF_CONTENTS:
case ONIG_CALLOUT_OF_NAME:
{
- r = add_opcode(reg, (node->detail_type == ONIG_CALLOUT_OF_CONTENTS) ?
- OP_CALLOUT_CONTENTS : OP_CALLOUT_NAME);
- if (r != 0) return r;
if (node->detail_type == ONIG_CALLOUT_OF_NAME) {
- r = add_mem_num(reg, node->id);
+ r = add_op(reg, OP_CALLOUT_NAME);
if (r != 0) return r;
+ COP(reg)->callout_name.id = node->id;
+ COP(reg)->callout_name.num = node->num;
+ }
+ else {
+ r = add_op(reg, OP_CALLOUT_CONTENTS);
+ if (r != 0) return r;
+ COP(reg)->callout_contents.num = node->num;
}
- r = add_mem_num(reg, node->num);
- if (r != 0) return r;
}
break;
@@ -1520,7 +1769,6 @@ compile_length_gimmick_node(GimmickNode* node, regex_t* reg)
len = SIZE_OP_FAIL;
break;
- case GIMMICK_KEEP:
case GIMMICK_SAVE:
len = SIZE_OP_PUSH_SAVE_VAL;
break;
@@ -1595,35 +1843,7 @@ compile_length_tree(Node* node, regex_t* reg)
break;
case NODE_BACKREF:
- {
- BackRefNode* br = BACKREF_(node);
-
- if (NODE_IS_CHECKER(node)) {
-#ifdef USE_BACKREF_WITH_LEVEL
- if (NODE_IS_NEST_LEVEL(node)) {
- r = SIZE_OPCODE + SIZE_LENGTH + SIZE_LENGTH + (SIZE_MEMNUM * br->back_num);
- }
- else
-#endif
- r = SIZE_OPCODE + SIZE_LENGTH + (SIZE_MEMNUM * br->back_num);
- }
- else {
-#ifdef USE_BACKREF_WITH_LEVEL
- if (NODE_IS_NEST_LEVEL(node)) {
- r = SIZE_OPCODE + SIZE_OPTION + SIZE_LENGTH +
- SIZE_LENGTH + (SIZE_MEMNUM * br->back_num);
- }
- else
-#endif
- if (br->back_num == 1) {
- r = ((!IS_IGNORECASE(reg->options) && br->back_static[0] <= 2)
- ? SIZE_OPCODE : (SIZE_OPCODE + SIZE_MEMNUM));
- }
- else {
- r = SIZE_OPCODE + SIZE_LENGTH + (SIZE_MEMNUM * br->back_num);
- }
- }
- }
+ r = SIZE_OP_BACKREF;
break;
#ifdef USE_CALL
@@ -1636,8 +1856,8 @@ compile_length_tree(Node* node, regex_t* reg)
r = compile_length_quantifier_node(QUANT_(node), reg);
break;
- case NODE_ENCLOSURE:
- r = compile_length_enclosure_node(ENCLOSURE_(node), reg);
+ case NODE_BAG:
+ r = compile_length_bag_node(BAG_(node), reg);
break;
case NODE_ANCHOR:
@@ -1678,21 +1898,23 @@ compile_tree(Node* node, regex_t* reg, ScanEnv* env)
len += SIZE_OP_PUSH + SIZE_OP_JUMP;
}
} while (IS_NOT_NULL(x = NODE_CDR(x)));
- pos = reg->used + len; /* goal position */
+ pos = COP_CURR_OFFSET(reg) + 1 + len; /* goal position */
do {
len = compile_length_tree(NODE_CAR(node), reg);
if (IS_NOT_NULL(NODE_CDR(node))) {
enum OpCode push = NODE_IS_SUPER(node) ? OP_PUSH_SUPER : OP_PUSH;
- r = add_opcode_rel_addr(reg, push, len + SIZE_OP_JUMP);
+ r = add_op(reg, push);
if (r != 0) break;
+ COP(reg)->push.addr = SIZE_INC_OP + len + SIZE_OP_JUMP;
}
r = compile_tree(NODE_CAR(node), reg, env);
if (r != 0) break;
if (IS_NOT_NULL(NODE_CDR(node))) {
- len = pos - (reg->used + SIZE_OP_JUMP);
- r = add_opcode_rel_addr(reg, OP_JUMP, len);
+ len = pos - (COP_CURR_OFFSET(reg) + 1);
+ r = add_op(reg, OP_JUMP);
if (r != 0) break;
+ COP(reg)->jump.addr = len;
}
} while (IS_NOT_NULL(node = NODE_CDR(node)));
}
@@ -1715,10 +1937,8 @@ compile_tree(Node* node, regex_t* reg, ScanEnv* env)
switch (CTYPE_(node)->ctype) {
case CTYPE_ANYCHAR:
- if (IS_MULTILINE(CTYPE_OPTION(node, reg)))
- r = add_opcode(reg, OP_ANYCHAR_ML);
- else
- r = add_opcode(reg, OP_ANYCHAR);
+ r = add_op(reg, IS_MULTILINE(CTYPE_OPTION(node, reg)) ?
+ OP_ANYCHAR_ML : OP_ANYCHAR);
break;
case ONIGENC_CTYPE_WORD:
@@ -1728,7 +1948,7 @@ compile_tree(Node* node, regex_t* reg, ScanEnv* env)
else {
op = CTYPE_(node)->not != 0 ? OP_NO_WORD_ASCII : OP_WORD_ASCII;
}
- r = add_opcode(reg, op);
+ r = add_op(reg, op);
break;
default:
@@ -1745,30 +1965,28 @@ compile_tree(Node* node, regex_t* reg, ScanEnv* env)
if (NODE_IS_CHECKER(node)) {
#ifdef USE_BACKREF_WITH_LEVEL
if (NODE_IS_NEST_LEVEL(node)) {
- r = add_opcode(reg, OP_BACKREF_CHECK_WITH_LEVEL);
- if (r != 0) return r;
- r = add_length(reg, br->nest_level);
+ r = add_op(reg, OP_BACKREF_CHECK_WITH_LEVEL);
if (r != 0) return r;
+ COP(reg)->backref_general.nest_level = br->nest_level;
}
else
#endif
{
- r = add_opcode(reg, OP_BACKREF_CHECK);
+ r = add_op(reg, OP_BACKREF_CHECK);
if (r != 0) return r;
}
-
goto add_bacref_mems;
}
else {
#ifdef USE_BACKREF_WITH_LEVEL
if (NODE_IS_NEST_LEVEL(node)) {
- r = add_opcode(reg, OP_BACKREF_WITH_LEVEL);
- if (r != 0) return r;
- r = add_option(reg, (reg->options & ONIG_OPTION_IGNORECASE));
- if (r != 0) return r;
- r = add_length(reg, br->nest_level);
- if (r != 0) return r;
+ if ((reg->options & ONIG_OPTION_IGNORECASE) != 0)
+ r = add_op(reg, OP_BACKREF_WITH_LEVEL_IC);
+ else
+ r = add_op(reg, OP_BACKREF_WITH_LEVEL);
+ if (r != 0) return r;
+ COP(reg)->backref_general.nest_level = br->nest_level;
goto add_bacref_mems;
}
else
@@ -1776,41 +1994,47 @@ compile_tree(Node* node, regex_t* reg, ScanEnv* env)
if (br->back_num == 1) {
n = br->back_static[0];
if (IS_IGNORECASE(reg->options)) {
- r = add_opcode(reg, OP_BACKREF_N_IC);
+ r = add_op(reg, OP_BACKREF_N_IC);
if (r != 0) return r;
- r = add_mem_num(reg, n);
+ COP(reg)->backref_n.n1 = n;
}
else {
switch (n) {
- case 1: r = add_opcode(reg, OP_BACKREF1); break;
- case 2: r = add_opcode(reg, OP_BACKREF2); break;
+ case 1: r = add_op(reg, OP_BACKREF1); break;
+ case 2: r = add_op(reg, OP_BACKREF2); break;
default:
- r = add_opcode(reg, OP_BACKREF_N);
+ r = add_op(reg, OP_BACKREF_N);
if (r != 0) return r;
- r = add_mem_num(reg, n);
+ COP(reg)->backref_n.n1 = n;
break;
}
}
}
else {
- int i;
+ int num;
int* p;
- if (IS_IGNORECASE(reg->options)) {
- r = add_opcode(reg, OP_BACKREF_MULTI_IC);
- }
- else {
- r = add_opcode(reg, OP_BACKREF_MULTI);
- }
+ r = add_op(reg, IS_IGNORECASE(reg->options) ?
+ OP_BACKREF_MULTI_IC : OP_BACKREF_MULTI);
if (r != 0) return r;
add_bacref_mems:
- r = add_length(reg, br->back_num);
- if (r != 0) return r;
- p = BACKREFS_P(br);
- for (i = br->back_num - 1; i >= 0; i--) {
- r = add_mem_num(reg, p[i]);
- if (r != 0) return r;
+ num = br->back_num;
+ COP(reg)->backref_general.num = num;
+ if (num == 1) {
+ COP(reg)->backref_general.n1 = br->back_static[0];
+ }
+ else {
+ int i, j;
+ MemNumType* ns;
+
+ ns = xmalloc(sizeof(MemNumType) * num);
+ CHECK_NULL_RETURN_MEMERR(ns);
+ COP(reg)->backref_general.ns = ns;
+ p = BACKREFS_P(br);
+ for (i = num - 1, j = 0; i >= 0; i--, j++) {
+ ns[j] = p[i];
+ }
}
}
}
@@ -1827,8 +2051,8 @@ compile_tree(Node* node, regex_t* reg, ScanEnv* env)
r = compile_quantifier_node(QUANT_(node), reg, env);
break;
- case NODE_ENCLOSURE:
- r = compile_enclosure_node(ENCLOSURE_(node), reg, env);
+ case NODE_BAG:
+ r = compile_bag_node(BAG_(node), reg, env);
break;
case NODE_ANCHOR:
@@ -1874,10 +2098,10 @@ noname_disable_map(Node** plink, GroupNumRemap* map, int* counter)
}
break;
- case NODE_ENCLOSURE:
+ case NODE_BAG:
{
- EnclosureNode* en = ENCLOSURE_(node);
- if (en->type == ENCLOSURE_MEMORY) {
+ BagNode* en = BAG_(node);
+ if (en->type == BAG_MEMORY) {
if (NODE_IS_NAMED_GROUP(node)) {
(*counter)++;
map[en->m.regnum].new_val = *counter;
@@ -1891,8 +2115,8 @@ noname_disable_map(Node** plink, GroupNumRemap* map, int* counter)
r = noname_disable_map(plink, map, counter);
}
}
- else if (en->type == ENCLOSURE_IF_ELSE) {
- r = noname_disable_map(&(NODE_ENCLOSURE_BODY(en)), map, counter);
+ else if (en->type == BAG_IF_ELSE) {
+ r = noname_disable_map(&(NODE_BAG_BODY(en)), map, counter);
if (r != 0) return r;
if (IS_NOT_NULL(en->te.Then)) {
r = noname_disable_map(&(en->te.Then), map, counter);
@@ -1965,14 +2189,14 @@ renumber_by_map(Node* node, GroupNumRemap* map)
r = renumber_by_map(NODE_BODY(node), map);
break;
- case NODE_ENCLOSURE:
+ case NODE_BAG:
{
- EnclosureNode* en = ENCLOSURE_(node);
+ BagNode* en = BAG_(node);
r = renumber_by_map(NODE_BODY(node), map);
if (r != 0) return r;
- if (en->type == ENCLOSURE_IF_ELSE) {
+ if (en->type == BAG_IF_ELSE) {
if (IS_NOT_NULL(en->te.Then)) {
r = renumber_by_map(en->te.Then, map);
if (r != 0) return r;
@@ -2022,14 +2246,14 @@ numbered_ref_check(Node* node)
r = numbered_ref_check(NODE_BODY(node));
break;
- case NODE_ENCLOSURE:
+ case NODE_BAG:
{
- EnclosureNode* en = ENCLOSURE_(node);
+ BagNode* en = BAG_(node);
r = numbered_ref_check(NODE_BODY(node));
if (r != 0) return r;
- if (en->type == ENCLOSURE_IF_ELSE) {
+ if (en->type == BAG_IF_ELSE) {
if (IS_NOT_NULL(en->te.Then)) {
r = numbered_ref_check(en->te.Then);
if (r != 0) return r;
@@ -2102,18 +2326,20 @@ static int
fix_unset_addr_list(UnsetAddrList* uslist, regex_t* reg)
{
int i, offset;
- EnclosureNode* en;
+ BagNode* en;
AbsAddrType addr;
+ AbsAddrType* paddr;
for (i = 0; i < uslist->num; i++) {
if (! NODE_IS_ADDR_FIXED(uslist->us[i].target))
return ONIGERR_PARSER_BUG;
- en = ENCLOSURE_(uslist->us[i].target);
+ en = BAG_(uslist->us[i].target);
addr = en->m.called_addr;
offset = uslist->us[i].offset;
- BB_WRITE(reg, offset, &addr, SIZE_ABSADDR);
+ paddr = (AbsAddrType* )((char* )reg->ops + offset);
+ *paddr = addr;
}
return 0;
}
@@ -2125,7 +2351,7 @@ fix_unset_addr_list(UnsetAddrList* uslist, regex_t* reg)
/* fixed size pattern node only */
static int
-get_char_length_tree1(Node* node, regex_t* reg, int* len, int level)
+get_char_len_node1(Node* node, regex_t* reg, int* len, int level)
{
int tlen;
int r = 0;
@@ -2135,7 +2361,7 @@ get_char_length_tree1(Node* node, regex_t* reg, int* len, int level)
switch (NODE_TYPE(node)) {
case NODE_LIST:
do {
- r = get_char_length_tree1(NODE_CAR(node), reg, &tlen, level);
+ r = get_char_len_node1(NODE_CAR(node), reg, &tlen, level);
if (r == 0)
*len = distance_add(*len, tlen);
} while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node)));
@@ -2146,9 +2372,9 @@ get_char_length_tree1(Node* node, regex_t* reg, int* len, int level)
int tlen2;
int varlen = 0;
- r = get_char_length_tree1(NODE_CAR(node), reg, &tlen, level);
+ r = get_char_len_node1(NODE_CAR(node), reg, &tlen, level);
while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))) {
- r = get_char_length_tree1(NODE_CAR(node), reg, &tlen2, level);
+ r = get_char_len_node1(NODE_CAR(node), reg, &tlen2, level);
if (r == 0) {
if (tlen != tlen2)
varlen = 1;
@@ -2188,7 +2414,7 @@ get_char_length_tree1(Node* node, regex_t* reg, int* len, int level)
*len = 0;
}
else {
- r = get_char_length_tree1(NODE_BODY(node), reg, &tlen, level);
+ r = get_char_len_node1(NODE_BODY(node), reg, &tlen, level);
if (r == 0)
*len = distance_multiply(tlen, qn->lower);
}
@@ -2201,7 +2427,7 @@ get_char_length_tree1(Node* node, regex_t* reg, int* len, int level)
#ifdef USE_CALL
case NODE_CALL:
if (! NODE_IS_RECURSION(node))
- r = get_char_length_tree1(NODE_BODY(node), reg, len, level);
+ r = get_char_len_node1(NODE_BODY(node), reg, len, level);
else
r = GET_CHAR_LEN_VARLEN;
break;
@@ -2212,17 +2438,17 @@ get_char_length_tree1(Node* node, regex_t* reg, int* len, int level)
*len = 1;
break;
- case NODE_ENCLOSURE:
+ case NODE_BAG:
{
- EnclosureNode* en = ENCLOSURE_(node);
+ BagNode* en = BAG_(node);
switch (en->type) {
- case ENCLOSURE_MEMORY:
+ case BAG_MEMORY:
#ifdef USE_CALL
if (NODE_IS_CLEN_FIXED(node))
*len = en->char_len;
else {
- r = get_char_length_tree1(NODE_BODY(node), reg, len, level);
+ r = get_char_len_node1(NODE_BODY(node), reg, len, level);
if (r == 0) {
en->char_len = *len;
NODE_STATUS_ADD(node, CLEN_FIXED);
@@ -2230,23 +2456,23 @@ get_char_length_tree1(Node* node, regex_t* reg, int* len, int level)
}
break;
#endif
- case ENCLOSURE_OPTION:
- case ENCLOSURE_STOP_BACKTRACK:
- r = get_char_length_tree1(NODE_BODY(node), reg, len, level);
+ case BAG_OPTION:
+ case BAG_STOP_BACKTRACK:
+ r = get_char_len_node1(NODE_BODY(node), reg, len, level);
break;
- case ENCLOSURE_IF_ELSE:
+ case BAG_IF_ELSE:
{
int clen, elen;
- r = get_char_length_tree1(NODE_BODY(node), reg, &clen, level);
+ r = get_char_len_node1(NODE_BODY(node), reg, &clen, level);
if (r == 0) {
if (IS_NOT_NULL(en->te.Then)) {
- r = get_char_length_tree1(en->te.Then, reg, &tlen, level);
+ r = get_char_len_node1(en->te.Then, reg, &tlen, level);
if (r != 0) break;
}
else tlen = 0;
if (IS_NOT_NULL(en->te.Else)) {
- r = get_char_length_tree1(en->te.Else, reg, &elen, level);
+ r = get_char_len_node1(en->te.Else, reg, &elen, level);
if (r != 0) break;
}
else elen = 0;
@@ -2260,9 +2486,6 @@ get_char_length_tree1(Node* node, regex_t* reg, int* len, int level)
}
}
break;
-
- default:
- break;
}
}
break;
@@ -2284,9 +2507,9 @@ get_char_length_tree1(Node* node, regex_t* reg, int* len, int level)
}
static int
-get_char_length_tree(Node* node, regex_t* reg, int* len)
+get_char_len_node(Node* node, regex_t* reg, int* len)
{
- return get_char_length_tree1(node, reg, len, 0);
+ return get_char_len_node1(node, reg, len, 0);
}
/* x is not included y ==> 1 : 0 */
@@ -2453,7 +2676,7 @@ is_exclusive(Node* x, Node* y, regex_t* reg)
code = ONIGENC_MBC_TO_CODE(reg->enc, xs->s,
xs->s + ONIGENC_MBC_MAXLEN(reg->enc));
- return (onig_is_code_in_cc(reg->enc, code, cc) != 0 ? 0 : 1);
+ return onig_is_code_in_cc(reg->enc, code, cc) == 0;
}
break;
@@ -2523,10 +2746,8 @@ get_head_value_node(Node* node, int exact, regex_t* reg)
if (sn->end <= sn->s)
break;
- if (exact != 0 &&
- !NODE_STRING_IS_RAW(node) && IS_IGNORECASE(reg->options)) {
- }
- else {
+ if (exact == 0 ||
+ ! IS_IGNORECASE(reg->options) || NODE_STRING_IS_RAW(node)) {
n = node;
}
}
@@ -2544,23 +2765,23 @@ get_head_value_node(Node* node, int exact, regex_t* reg)
}
break;
- case NODE_ENCLOSURE:
+ case NODE_BAG:
{
- EnclosureNode* en = ENCLOSURE_(node);
+ BagNode* en = BAG_(node);
switch (en->type) {
- case ENCLOSURE_OPTION:
+ case BAG_OPTION:
{
OnigOptionType options = reg->options;
- reg->options = ENCLOSURE_(node)->o.options;
+ reg->options = BAG_(node)->o.options;
n = get_head_value_node(NODE_BODY(node), exact, reg);
reg->options = options;
}
break;
- case ENCLOSURE_MEMORY:
- case ENCLOSURE_STOP_BACKTRACK:
- case ENCLOSURE_IF_ELSE:
+ case BAG_MEMORY:
+ case BAG_STOP_BACKTRACK:
+ case BAG_IF_ELSE:
n = get_head_value_node(NODE_BODY(node), exact, reg);
break;
}
@@ -2568,7 +2789,7 @@ get_head_value_node(Node* node, int exact, regex_t* reg)
break;
case NODE_ANCHOR:
- if (ANCHOR_(node)->type == ANCHOR_PREC_READ)
+ if (ANCHOR_(node)->type == ANCR_PREC_READ)
n = get_head_value_node(NODE_BODY(node), exact, reg);
break;
@@ -2581,7 +2802,7 @@ get_head_value_node(Node* node, int exact, regex_t* reg)
}
static int
-check_type_tree(Node* node, int type_mask, int enclosure_mask, int anchor_mask)
+check_type_tree(Node* node, int type_mask, int bag_mask, int anchor_mask)
{
NodeType type;
int r = 0;
@@ -2594,29 +2815,28 @@ check_type_tree(Node* node, int type_mask, int enclosure_mask, int anchor_mask)
case NODE_LIST:
case NODE_ALT:
do {
- r = check_type_tree(NODE_CAR(node), type_mask, enclosure_mask,
- anchor_mask);
+ r = check_type_tree(NODE_CAR(node), type_mask, bag_mask, anchor_mask);
} while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node)));
break;
case NODE_QUANT:
- r = check_type_tree(NODE_BODY(node), type_mask, enclosure_mask, anchor_mask);
+ r = check_type_tree(NODE_BODY(node), type_mask, bag_mask, anchor_mask);
break;
- case NODE_ENCLOSURE:
+ case NODE_BAG:
{
- EnclosureNode* en = ENCLOSURE_(node);
- if (((1<<en->type) & enclosure_mask) == 0)
+ BagNode* en = BAG_(node);
+ if (((1<<en->type) & bag_mask) == 0)
return 1;
- r = check_type_tree(NODE_BODY(node), type_mask, enclosure_mask, anchor_mask);
- if (r == 0 && en->type == ENCLOSURE_IF_ELSE) {
+ r = check_type_tree(NODE_BODY(node), type_mask, bag_mask, anchor_mask);
+ if (r == 0 && en->type == BAG_IF_ELSE) {
if (IS_NOT_NULL(en->te.Then)) {
- r = check_type_tree(en->te.Then, type_mask, enclosure_mask, anchor_mask);
+ r = check_type_tree(en->te.Then, type_mask, bag_mask, anchor_mask);
if (r != 0) break;
}
if (IS_NOT_NULL(en->te.Else)) {
- r = check_type_tree(en->te.Else, type_mask, enclosure_mask, anchor_mask);
+ r = check_type_tree(en->te.Else, type_mask, bag_mask, anchor_mask);
}
}
}
@@ -2628,7 +2848,7 @@ check_type_tree(Node* node, int type_mask, int enclosure_mask, int anchor_mask)
return 1;
if (IS_NOT_NULL(NODE_BODY(node)))
- r = check_type_tree(NODE_BODY(node), type_mask, enclosure_mask, anchor_mask);
+ r = check_type_tree(NODE_BODY(node), type_mask, bag_mask, anchor_mask);
break;
case NODE_GIMMICK:
@@ -2669,7 +2889,7 @@ tree_min_len(Node* node, ScanEnv* env)
Node* t = NODE_BODY(node);
if (NODE_IS_RECURSION(node)) {
if (NODE_IS_MIN_FIXED(t))
- len = ENCLOSURE_(t)->min_len;
+ len = BAG_(t)->min_len;
}
else
len = tree_min_len(t, env);
@@ -2720,11 +2940,11 @@ tree_min_len(Node* node, ScanEnv* env)
}
break;
- case NODE_ENCLOSURE:
+ case NODE_BAG:
{
- EnclosureNode* en = ENCLOSURE_(node);
+ BagNode* en = BAG_(node);
switch (en->type) {
- case ENCLOSURE_MEMORY:
+ case BAG_MEMORY:
if (NODE_IS_MIN_FIXED(node))
len = en->min_len;
else {
@@ -2741,11 +2961,11 @@ tree_min_len(Node* node, ScanEnv* env)
}
break;
- case ENCLOSURE_OPTION:
- case ENCLOSURE_STOP_BACKTRACK:
+ case BAG_OPTION:
+ case BAG_STOP_BACKTRACK:
len = tree_min_len(NODE_BODY(node), env);
break;
- case ENCLOSURE_IF_ELSE:
+ case BAG_IF_ELSE:
{
OnigLen elen;
@@ -2848,7 +3068,7 @@ tree_max_len(Node* node, ScanEnv* env)
if (qn->upper != 0) {
len = tree_max_len(NODE_BODY(node), env);
if (len != 0) {
- if (! IS_REPEAT_INFINITE(qn->upper))
+ if (! IS_INFINITE_REPEAT(qn->upper))
len = distance_multiply(len, qn->upper);
else
len = INFINITE_LEN;
@@ -2857,11 +3077,11 @@ tree_max_len(Node* node, ScanEnv* env)
}
break;
- case NODE_ENCLOSURE:
+ case NODE_BAG:
{
- EnclosureNode* en = ENCLOSURE_(node);
+ BagNode* en = BAG_(node);
switch (en->type) {
- case ENCLOSURE_MEMORY:
+ case BAG_MEMORY:
if (NODE_IS_MAX_FIXED(node))
len = en->max_len;
else {
@@ -2878,11 +3098,11 @@ tree_max_len(Node* node, ScanEnv* env)
}
break;
- case ENCLOSURE_OPTION:
- case ENCLOSURE_STOP_BACKTRACK:
+ case BAG_OPTION:
+ case BAG_STOP_BACKTRACK:
len = tree_max_len(NODE_BODY(node), env);
break;
- case ENCLOSURE_IF_ELSE:
+ case BAG_IF_ELSE:
{
OnigLen tlen, elen;
@@ -2934,12 +3154,12 @@ check_backrefs(Node* node, ScanEnv* env)
r = check_backrefs(NODE_BODY(node), env);
break;
- case NODE_ENCLOSURE:
+ case NODE_BAG:
r = check_backrefs(NODE_BODY(node), env);
{
- EnclosureNode* en = ENCLOSURE_(node);
+ BagNode* en = BAG_(node);
- if (en->type == ENCLOSURE_IF_ELSE) {
+ if (en->type == BAG_IF_ELSE) {
if (r != 0) return r;
if (IS_NOT_NULL(en->te.Then)) {
r = check_backrefs(en->te.Then, env);
@@ -3042,11 +3262,11 @@ infinite_recursive_call_check(Node* node, ScanEnv* env, int head)
r = infinite_recursive_call_check(NODE_BODY(node), env, head);
break;
- case NODE_ENCLOSURE:
+ case NODE_BAG:
{
- EnclosureNode* en = ENCLOSURE_(node);
+ BagNode* en = BAG_(node);
- if (en->type == ENCLOSURE_MEMORY) {
+ if (en->type == BAG_MEMORY) {
if (NODE_IS_MARK2(node))
return 0;
else if (NODE_IS_MARK1(node))
@@ -3058,7 +3278,7 @@ infinite_recursive_call_check(Node* node, ScanEnv* env, int head)
NODE_STATUS_REMOVE(node, MARK2);
}
}
- else if (en->type == ENCLOSURE_IF_ELSE) {
+ else if (en->type == BAG_IF_ELSE) {
int eret;
ret = infinite_recursive_call_check(NODE_BODY(node), env, head);
@@ -3119,11 +3339,11 @@ infinite_recursive_call_check_trav(Node* node, ScanEnv* env)
r = infinite_recursive_call_check_trav(NODE_BODY(node), env);
break;
- case NODE_ENCLOSURE:
+ case NODE_BAG:
{
- EnclosureNode* en = ENCLOSURE_(node);
+ BagNode* en = BAG_(node);
- if (en->type == ENCLOSURE_MEMORY) {
+ if (en->type == BAG_MEMORY) {
if (NODE_IS_RECURSION(node) && NODE_IS_CALLED(node)) {
int ret;
@@ -3137,7 +3357,7 @@ infinite_recursive_call_check_trav(Node* node, ScanEnv* env)
NODE_STATUS_REMOVE(node, MARK1);
}
}
- else if (en->type == ENCLOSURE_IF_ELSE) {
+ else if (en->type == BAG_IF_ELSE) {
if (IS_NOT_NULL(en->te.Then)) {
r = infinite_recursive_call_check_trav(en->te.Then, env);
if (r != 0) return r;
@@ -3192,11 +3412,11 @@ recursive_call_check(Node* node)
}
break;
- case NODE_ENCLOSURE:
+ case NODE_BAG:
{
- EnclosureNode* en = ENCLOSURE_(node);
+ BagNode* en = BAG_(node);
- if (en->type == ENCLOSURE_MEMORY) {
+ if (en->type == BAG_MEMORY) {
if (NODE_IS_MARK2(node))
return 0;
else if (NODE_IS_MARK1(node))
@@ -3207,7 +3427,7 @@ recursive_call_check(Node* node)
NODE_STATUS_REMOVE(node, MARK2);
}
}
- else if (en->type == ENCLOSURE_IF_ELSE) {
+ else if (en->type == BAG_IF_ELSE) {
r = 0;
if (IS_NOT_NULL(en->te.Then)) {
r |= recursive_call_check(en->te.Then);
@@ -3268,13 +3488,13 @@ recursive_call_check_trav(Node* node, ScanEnv* env, int state)
}
break;
- case NODE_ENCLOSURE:
+ case NODE_BAG:
{
int ret;
int state1;
- EnclosureNode* en = ENCLOSURE_(node);
+ BagNode* en = BAG_(node);
- if (en->type == ENCLOSURE_MEMORY) {
+ if (en->type == BAG_MEMORY) {
if (NODE_IS_CALLED(node) || (state & IN_RECURSION) != 0) {
if (! NODE_IS_RECURSION(node)) {
NODE_STATUS_ADD(node, MARK1);
@@ -3297,7 +3517,7 @@ recursive_call_check_trav(Node* node, ScanEnv* env, int state)
if (ret == FOUND_CALLED_NODE)
r = FOUND_CALLED_NODE;
- if (en->type == ENCLOSURE_IF_ELSE) {
+ if (en->type == BAG_IF_ELSE) {
if (IS_NOT_NULL(en->te.Then)) {
ret = recursive_call_check_trav(en->te.Then, env, state1);
if (ret == FOUND_CALLED_NODE)
@@ -3321,6 +3541,15 @@ recursive_call_check_trav(Node* node, ScanEnv* env, int state)
#endif
+#define IN_ALT (1<<0)
+#define IN_NOT (1<<1)
+#define IN_REAL_REPEAT (1<<2)
+#define IN_VAR_REPEAT (1<<3)
+#define IN_ZERO_REPEAT (1<<4)
+#define IN_MULTI_ENTRY (1<<5)
+#define IN_LOOK_BEHIND (1<<6)
+
+
/* divide different length alternatives in look-behind.
(?<=A|B) ==> (?<=A)|(?<=B)
(?<!A|B) ==> (?<!A)(?<!B)
@@ -3346,7 +3575,7 @@ divide_look_behind_alternatives(Node* node)
NODE_CAR(np) = insert_node;
}
- if (anc_type == ANCHOR_LOOK_BEHIND_NOT) {
+ if (anc_type == ANCR_LOOK_BEHIND_NOT) {
np = node;
do {
NODE_SET_TYPE(np, NODE_LIST); /* alt -> list */
@@ -3361,7 +3590,7 @@ setup_look_behind(Node* node, regex_t* reg, ScanEnv* env)
int r, len;
AnchorNode* an = ANCHOR_(node);
- r = get_char_length_tree(NODE_ANCHOR_BODY(an), reg, &len);
+ r = get_char_len_node(NODE_ANCHOR_BODY(an), reg, &len);
if (r == 0)
an->char_len = len;
else if (r == GET_CHAR_LEN_VARLEN)
@@ -3385,7 +3614,7 @@ next_setup(Node* node, Node* next_node, regex_t* reg)
type = NODE_TYPE(node);
if (type == NODE_QUANT) {
QuantNode* qn = QUANT_(node);
- if (qn->greedy && IS_REPEAT_INFINITE(qn->upper)) {
+ if (qn->greedy && IS_INFINITE_REPEAT(qn->upper)) {
#ifdef USE_QUANT_PEEK_NEXT
Node* n = get_head_value_node(next_node, 1, reg);
/* '\0': for UTF-16BE etc... */
@@ -3395,15 +3624,15 @@ next_setup(Node* node, Node* next_node, regex_t* reg)
#endif
/* automatic posseivation a*b ==> (?>a*)b */
if (qn->lower <= 1) {
- if (NODE_IS_SIMPLE_TYPE(NODE_BODY(node))) {
+ if (is_strict_real_node(NODE_BODY(node))) {
Node *x, *y;
x = get_head_value_node(NODE_BODY(node), 0, reg);
if (IS_NOT_NULL(x)) {
y = get_head_value_node(next_node, 0, reg);
if (IS_NOT_NULL(y) && is_exclusive(x, y, reg)) {
- Node* en = onig_node_new_enclosure(ENCLOSURE_STOP_BACKTRACK);
+ Node* en = onig_node_new_bag(BAG_STOP_BACKTRACK);
CHECK_NULL_RETURN_MEMERR(en);
- NODE_STATUS_ADD(en, STOP_BT_SIMPLE_REPEAT);
+ NODE_STATUS_ADD(en, STRICT_REAL_REPEAT);
swap_node(node, en);
NODE_BODY(node) = en;
}
@@ -3412,9 +3641,9 @@ next_setup(Node* node, Node* next_node, regex_t* reg)
}
}
}
- else if (type == NODE_ENCLOSURE) {
- EnclosureNode* en = ENCLOSURE_(node);
- if (en->type == ENCLOSURE_MEMORY) {
+ else if (type == NODE_BAG) {
+ BagNode* en = BAG_(node);
+ if (en->type == BAG_MEMORY) {
node = NODE_BODY(node);
goto retry;
}
@@ -3530,7 +3759,7 @@ expand_case_fold_string_alt(int item_num, OnigCaseFoldCodeItem items[], UChar *p
for (i = 0; i < item_num; i++) {
snode = onig_node_new_str(NULL, NULL);
if (IS_NULL(snode)) goto mem_err;
-
+
for (j = 0; j < items[i].code_len; j++) {
len = ONIGENC_CODE_TO_MBC(reg->enc, items[i].code[j], buf);
if (len < 0) {
@@ -3603,37 +3832,69 @@ expand_case_fold_string_alt(int item_num, OnigCaseFoldCodeItem items[], UChar *p
}
static int
-expand_case_fold_string(Node* node, regex_t* reg)
+is_good_case_fold_items_for_search(OnigEncoding enc, int slen,
+ int n, OnigCaseFoldCodeItem items[])
{
+ int i, len;
+ UChar buf[ONIGENC_MBC_CASE_FOLD_MAXLEN];
+
+ for (i = 0; i < n; i++) {
+ OnigCaseFoldCodeItem* item = items + i;
+
+ if (item->code_len != 1) return 0;
+ if (item->byte_len != slen) return 0;
+ len = ONIGENC_CODE_TO_MBC(enc, item->code[0], buf);
+ if (len != slen) return 0;
+ }
+
+ return 1;
+}
+
#define THRESHOLD_CASE_FOLD_ALT_FOR_EXPANSION 8
+static int
+expand_case_fold_string(Node* node, regex_t* reg, int state)
+{
int r, n, len, alt_num;
+ int fold_len;
+ int prev_is_ambig, prev_is_good, is_good, is_in_look_behind;
UChar *start, *end, *p;
+ UChar* foldp;
Node *top_root, *root, *snode, *prev_node;
OnigCaseFoldCodeItem items[ONIGENC_GET_CASE_FOLD_CODES_MAX_NUM];
- StrNode* sn = STR_(node);
+ UChar buf[ONIGENC_MBC_CASE_FOLD_MAXLEN];
+ StrNode* sn;
if (NODE_STRING_IS_AMBIG(node)) return 0;
+ sn = STR_(node);
+
start = sn->s;
end = sn->end;
if (start >= end) return 0;
+ is_in_look_behind = (state & IN_LOOK_BEHIND) != 0;
+
r = 0;
top_root = root = prev_node = snode = NULL_NODE;
alt_num = 1;
p = start;
while (p < end) {
- n = ONIGENC_GET_CASE_FOLD_CODES_BY_STR(reg->enc, reg->case_fold_flag, p, end,
- items);
+ n = ONIGENC_GET_CASE_FOLD_CODES_BY_STR(reg->enc, reg->case_fold_flag,
+ p, end, items);
if (n < 0) {
r = n;
goto err;
}
len = enclen(reg->enc, p);
+ is_good = is_good_case_fold_items_for_search(reg->enc, len, n, items);
- if (n == 0) {
+ if (is_in_look_behind ||
+ (IS_NOT_NULL(snode) ||
+ (is_good
+ /* expand single char case: ex. /(?i:a)/ */
+ && !(p == start && p + len >= end)))) {
if (IS_NULL(snode)) {
if (IS_NULL(root) && IS_NOT_NULL(prev_node)) {
top_root = root = onig_node_list_add(NULL_NODE, prev_node);
@@ -3651,10 +3912,49 @@ expand_case_fold_string(Node* node, regex_t* reg)
goto mem_err;
}
}
+
+ prev_is_ambig = -1; /* -1: new */
+ prev_is_good = 0; /* escape compiler warning */
+ }
+ else {
+ prev_is_ambig = NODE_STRING_IS_AMBIG(snode);
+ prev_is_good = NODE_STRING_IS_GOOD_AMBIG(snode);
}
- r = onig_node_str_cat(snode, p, p + len);
- if (r != 0) goto err;
+ if (n != 0) {
+ foldp = p;
+ fold_len = ONIGENC_MBC_CASE_FOLD(reg->enc, reg->case_fold_flag,
+ &foldp, end, buf);
+ foldp = buf;
+ }
+ else {
+ foldp = p; fold_len = len;
+ }
+
+ if ((prev_is_ambig == 0 && n != 0) ||
+ (prev_is_ambig > 0 && (n == 0 || prev_is_good != is_good))) {
+ if (IS_NULL(root) /* && IS_NOT_NULL(prev_node) */) {
+ top_root = root = onig_node_list_add(NULL_NODE, prev_node);
+ if (IS_NULL(root)) {
+ onig_node_free(prev_node);
+ goto mem_err;
+ }
+ }
+
+ prev_node = snode = onig_node_new_str(foldp, foldp + fold_len);
+ if (IS_NULL(snode)) goto mem_err;
+ if (IS_NULL(onig_node_list_add(root, snode))) {
+ onig_node_free(snode);
+ goto mem_err;
+ }
+ }
+ else {
+ r = onig_node_str_cat(snode, foldp, foldp + fold_len);
+ if (r != 0) goto err;
+ }
+
+ if (n != 0) NODE_STRING_SET_AMBIG(snode);
+ if (is_good != 0) NODE_STRING_SET_GOOD_AMBIG(snode);
}
else {
alt_num *= (n + 1);
@@ -3738,11 +4038,11 @@ expand_case_fold_string(Node* node, regex_t* reg)
return r;
}
-#ifdef USE_INSISTENT_CHECK_CAPTURES_IN_EMPTY_REPEAT
-static enum QuantBodyEmpty
+#ifdef USE_STUBBORN_CHECK_CAPTURES_IN_EMPTY_REPEAT
+static enum BodyEmptyType
quantifiers_memory_node_info(Node* node)
{
- int r = QUANT_BODY_IS_EMPTY;
+ int r = BODY_IS_EMPTY_POSSIBILITY;
switch (NODE_TYPE(node)) {
case NODE_LIST:
@@ -3759,7 +4059,7 @@ quantifiers_memory_node_info(Node* node)
#ifdef USE_CALL
case NODE_CALL:
if (NODE_IS_RECURSION(node)) {
- return QUANT_BODY_IS_EMPTY_REC; /* tiny version */
+ return BODY_IS_EMPTY_POSSIBILITY_REC; /* tiny version */
}
else
r = quantifiers_memory_node_info(NODE_BODY(node));
@@ -3775,22 +4075,22 @@ quantifiers_memory_node_info(Node* node)
}
break;
- case NODE_ENCLOSURE:
+ case NODE_BAG:
{
- EnclosureNode* en = ENCLOSURE_(node);
+ BagNode* en = BAG_(node);
switch (en->type) {
- case ENCLOSURE_MEMORY:
+ case BAG_MEMORY:
if (NODE_IS_RECURSION(node)) {
- return QUANT_BODY_IS_EMPTY_REC;
+ return BODY_IS_EMPTY_POSSIBILITY_REC;
}
- return QUANT_BODY_IS_EMPTY_MEM;
+ return BODY_IS_EMPTY_POSSIBILITY_MEM;
break;
- case ENCLOSURE_OPTION:
- case ENCLOSURE_STOP_BACKTRACK:
+ case BAG_OPTION:
+ case BAG_STOP_BACKTRACK:
r = quantifiers_memory_node_info(NODE_BODY(node));
break;
- case ENCLOSURE_IF_ELSE:
+ case BAG_IF_ELSE:
{
int v;
r = quantifiers_memory_node_info(NODE_BODY(node));
@@ -3804,8 +4104,6 @@ quantifiers_memory_node_info(Node* node)
}
}
break;
- default:
- break;
}
}
break;
@@ -3822,15 +4120,8 @@ quantifiers_memory_node_info(Node* node)
return r;
}
-#endif /* USE_INSISTENT_CHECK_CAPTURES_IN_EMPTY_REPEAT */
-
+#endif /* USE_STUBBORN_CHECK_CAPTURES_IN_EMPTY_REPEAT */
-#define IN_ALT (1<<0)
-#define IN_NOT (1<<1)
-#define IN_REAL_REPEAT (1<<2)
-#define IN_VAR_REPEAT (1<<3)
-#define IN_ZERO_REPEAT (1<<4)
-#define IN_MULTI_ENTRY (1<<5)
#ifdef USE_CALL
@@ -3908,18 +4199,18 @@ setup_call2_call(Node* node)
setup_call2_call(NODE_BODY(node));
break;
- case NODE_ENCLOSURE:
+ case NODE_BAG:
{
- EnclosureNode* en = ENCLOSURE_(node);
+ BagNode* en = BAG_(node);
- if (en->type == ENCLOSURE_MEMORY) {
+ if (en->type == BAG_MEMORY) {
if (! NODE_IS_MARK1(node)) {
NODE_STATUS_ADD(node, MARK1);
setup_call2_call(NODE_BODY(node));
NODE_STATUS_REMOVE(node, MARK1);
}
}
- else if (en->type == ENCLOSURE_IF_ELSE) {
+ else if (en->type == BAG_IF_ELSE) {
setup_call2_call(NODE_BODY(node));
if (IS_NOT_NULL(en->te.Then))
setup_call2_call(en->te.Then);
@@ -3942,7 +4233,7 @@ setup_call2_call(Node* node)
cn->entry_count++;
NODE_STATUS_ADD(called, CALLED);
- ENCLOSURE_(called)->m.entry_count++;
+ BAG_(called)->m.entry_count++;
setup_call2_call(called);
}
NODE_STATUS_REMOVE(node, MARK1);
@@ -3981,18 +4272,18 @@ setup_call(Node* node, ScanEnv* env, int state)
r = 0;
break;
- case NODE_ENCLOSURE:
+ case NODE_BAG:
{
- EnclosureNode* en = ENCLOSURE_(node);
+ BagNode* en = BAG_(node);
- if (en->type == ENCLOSURE_MEMORY) {
+ if (en->type == BAG_MEMORY) {
if ((state & IN_ZERO_REPEAT) != 0) {
NODE_STATUS_ADD(node, IN_ZERO_REPEAT);
- ENCLOSURE_(node)->m.entry_count--;
+ BAG_(node)->m.entry_count--;
}
r = setup_call(NODE_BODY(node), env, state);
}
- else if (en->type == ENCLOSURE_IF_ELSE) {
+ else if (en->type == BAG_IF_ELSE) {
r = setup_call(NODE_BODY(node), env, state);
if (r != 0) return r;
if (IS_NOT_NULL(en->te.Then)) {
@@ -4047,15 +4338,15 @@ setup_call2(Node* node)
r = setup_call2(NODE_BODY(node));
break;
- case NODE_ENCLOSURE:
+ case NODE_BAG:
if (! NODE_IS_IN_ZERO_REPEAT(node))
r = setup_call2(NODE_BODY(node));
{
- EnclosureNode* en = ENCLOSURE_(node);
+ BagNode* en = BAG_(node);
if (r != 0) return r;
- if (en->type == ENCLOSURE_IF_ELSE) {
+ if (en->type == BAG_IF_ELSE) {
if (IS_NOT_NULL(en->te.Then)) {
r = setup_call2(en->te.Then);
if (r != 0) return r;
@@ -4097,7 +4388,7 @@ setup_called_state_call(Node* node, int state)
{
QuantNode* qn = QUANT_(node);
- if (IS_REPEAT_INFINITE(qn->upper) || qn->upper >= 2)
+ if (IS_INFINITE_REPEAT(qn->upper) || qn->upper >= 2)
state |= IN_REAL_REPEAT;
if (qn->lower != qn->upper)
state |= IN_VAR_REPEAT;
@@ -4111,12 +4402,12 @@ setup_called_state_call(Node* node, int state)
AnchorNode* an = ANCHOR_(node);
switch (an->type) {
- case ANCHOR_PREC_READ_NOT:
- case ANCHOR_LOOK_BEHIND_NOT:
+ case ANCR_PREC_READ_NOT:
+ case ANCR_LOOK_BEHIND_NOT:
state |= IN_NOT;
/* fall */
- case ANCHOR_PREC_READ:
- case ANCHOR_LOOK_BEHIND:
+ case ANCR_PREC_READ:
+ case ANCR_LOOK_BEHIND:
setup_called_state_call(NODE_ANCHOR_BODY(an), state);
break;
default:
@@ -4125,11 +4416,11 @@ setup_called_state_call(Node* node, int state)
}
break;
- case NODE_ENCLOSURE:
+ case NODE_BAG:
{
- EnclosureNode* en = ENCLOSURE_(node);
+ BagNode* en = BAG_(node);
- if (en->type == ENCLOSURE_MEMORY) {
+ if (en->type == BAG_MEMORY) {
if (NODE_IS_MARK1(node)) {
if ((~en->m.called_state & state) != 0) {
en->m.called_state |= state;
@@ -4143,7 +4434,7 @@ setup_called_state_call(Node* node, int state)
NODE_STATUS_REMOVE(node, MARK1);
}
}
- else if (en->type == ENCLOSURE_IF_ELSE) {
+ else if (en->type == BAG_IF_ELSE) {
if (IS_NOT_NULL(en->te.Then)) {
setup_called_state_call(en->te.Then, state);
}
@@ -4184,22 +4475,22 @@ setup_called_state(Node* node, int state)
break;
#endif
- case NODE_ENCLOSURE:
+ case NODE_BAG:
{
- EnclosureNode* en = ENCLOSURE_(node);
+ BagNode* en = BAG_(node);
switch (en->type) {
- case ENCLOSURE_MEMORY:
+ case BAG_MEMORY:
if (en->m.entry_count > 1)
state |= IN_MULTI_ENTRY;
en->m.called_state |= state;
/* fall */
- case ENCLOSURE_OPTION:
- case ENCLOSURE_STOP_BACKTRACK:
+ case BAG_OPTION:
+ case BAG_STOP_BACKTRACK:
setup_called_state(NODE_BODY(node), state);
break;
- case ENCLOSURE_IF_ELSE:
+ case BAG_IF_ELSE:
setup_called_state(NODE_BODY(node), state);
if (IS_NOT_NULL(en->te.Then))
setup_called_state(en->te.Then, state);
@@ -4214,7 +4505,7 @@ setup_called_state(Node* node, int state)
{
QuantNode* qn = QUANT_(node);
- if (IS_REPEAT_INFINITE(qn->upper) || qn->upper >= 2)
+ if (IS_INFINITE_REPEAT(qn->upper) || qn->upper >= 2)
state |= IN_REAL_REPEAT;
if (qn->lower != qn->upper)
state |= IN_VAR_REPEAT;
@@ -4228,12 +4519,12 @@ setup_called_state(Node* node, int state)
AnchorNode* an = ANCHOR_(node);
switch (an->type) {
- case ANCHOR_PREC_READ_NOT:
- case ANCHOR_LOOK_BEHIND_NOT:
+ case ANCR_PREC_READ_NOT:
+ case ANCR_LOOK_BEHIND_NOT:
state |= IN_NOT;
/* fall */
- case ANCHOR_PREC_READ:
- case ANCHOR_LOOK_BEHIND:
+ case ANCR_PREC_READ:
+ case ANCR_LOOK_BEHIND:
setup_called_state(NODE_ANCHOR_BODY(an), state);
break;
default:
@@ -4266,56 +4557,55 @@ setup_anchor(Node* node, regex_t* reg, int state, ScanEnv* env)
/* allowed node types in look-behind */
#define ALLOWED_TYPE_IN_LB \
( NODE_BIT_LIST | NODE_BIT_ALT | NODE_BIT_STRING | NODE_BIT_CCLASS \
- | NODE_BIT_CTYPE | NODE_BIT_ANCHOR | NODE_BIT_ENCLOSURE | NODE_BIT_QUANT \
+ | NODE_BIT_CTYPE | NODE_BIT_ANCHOR | NODE_BIT_BAG | NODE_BIT_QUANT \
| NODE_BIT_CALL | NODE_BIT_GIMMICK)
-#define ALLOWED_ENCLOSURE_IN_LB ( 1<<ENCLOSURE_MEMORY | 1<<ENCLOSURE_OPTION )
-#define ALLOWED_ENCLOSURE_IN_LB_NOT (1<<ENCLOSURE_OPTION)
+#define ALLOWED_BAG_IN_LB ( 1<<BAG_MEMORY | 1<<BAG_OPTION | 1<<BAG_IF_ELSE )
+#define ALLOWED_BAG_IN_LB_NOT ( 1<<BAG_OPTION | 1<<BAG_IF_ELSE )
#define ALLOWED_ANCHOR_IN_LB \
- ( ANCHOR_LOOK_BEHIND | ANCHOR_BEGIN_LINE | ANCHOR_END_LINE | ANCHOR_BEGIN_BUF \
- | ANCHOR_BEGIN_POSITION | ANCHOR_WORD_BOUNDARY | ANCHOR_NO_WORD_BOUNDARY \
- | ANCHOR_WORD_BEGIN | ANCHOR_WORD_END \
- | ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY \
- | ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY )
+ ( ANCR_LOOK_BEHIND | ANCR_BEGIN_LINE | ANCR_END_LINE | ANCR_BEGIN_BUF \
+ | ANCR_BEGIN_POSITION | ANCR_WORD_BOUNDARY | ANCR_NO_WORD_BOUNDARY \
+ | ANCR_WORD_BEGIN | ANCR_WORD_END \
+ | ANCR_TEXT_SEGMENT_BOUNDARY | ANCR_NO_TEXT_SEGMENT_BOUNDARY )
#define ALLOWED_ANCHOR_IN_LB_NOT \
- ( ANCHOR_LOOK_BEHIND | ANCHOR_LOOK_BEHIND_NOT | ANCHOR_BEGIN_LINE \
- | ANCHOR_END_LINE | ANCHOR_BEGIN_BUF | ANCHOR_BEGIN_POSITION | ANCHOR_WORD_BOUNDARY \
- | ANCHOR_NO_WORD_BOUNDARY | ANCHOR_WORD_BEGIN | ANCHOR_WORD_END \
- | ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY \
- | ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY )
+ ( ANCR_LOOK_BEHIND | ANCR_LOOK_BEHIND_NOT | ANCR_BEGIN_LINE \
+ | ANCR_END_LINE | ANCR_BEGIN_BUF | ANCR_BEGIN_POSITION | ANCR_WORD_BOUNDARY \
+ | ANCR_NO_WORD_BOUNDARY | ANCR_WORD_BEGIN | ANCR_WORD_END \
+ | ANCR_TEXT_SEGMENT_BOUNDARY | ANCR_NO_TEXT_SEGMENT_BOUNDARY )
int r;
AnchorNode* an = ANCHOR_(node);
switch (an->type) {
- case ANCHOR_PREC_READ:
+ case ANCR_PREC_READ:
r = setup_tree(NODE_ANCHOR_BODY(an), reg, state, env);
break;
- case ANCHOR_PREC_READ_NOT:
+ case ANCR_PREC_READ_NOT:
r = setup_tree(NODE_ANCHOR_BODY(an), reg, (state | IN_NOT), env);
break;
- case ANCHOR_LOOK_BEHIND:
+ case ANCR_LOOK_BEHIND:
{
r = check_type_tree(NODE_ANCHOR_BODY(an), ALLOWED_TYPE_IN_LB,
- ALLOWED_ENCLOSURE_IN_LB, ALLOWED_ANCHOR_IN_LB);
+ ALLOWED_BAG_IN_LB, ALLOWED_ANCHOR_IN_LB);
if (r < 0) return r;
if (r > 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN;
- r = setup_tree(NODE_ANCHOR_BODY(an), reg, state, env);
+ r = setup_tree(NODE_ANCHOR_BODY(an), reg, (state|IN_LOOK_BEHIND), env);
if (r != 0) return r;
r = setup_look_behind(node, reg, env);
}
break;
- case ANCHOR_LOOK_BEHIND_NOT:
+ case ANCR_LOOK_BEHIND_NOT:
{
r = check_type_tree(NODE_ANCHOR_BODY(an), ALLOWED_TYPE_IN_LB,
- ALLOWED_ENCLOSURE_IN_LB_NOT, ALLOWED_ANCHOR_IN_LB_NOT);
+ ALLOWED_BAG_IN_LB_NOT, ALLOWED_ANCHOR_IN_LB_NOT);
if (r < 0) return r;
if (r > 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN;
- r = setup_tree(NODE_ANCHOR_BODY(an), reg, (state | IN_NOT), env);
+ r = setup_tree(NODE_ANCHOR_BODY(an), reg, (state|IN_NOT|IN_LOOK_BEHIND),
+ env);
if (r != 0) return r;
r = setup_look_behind(node, reg, env);
}
@@ -4347,24 +4637,24 @@ setup_quant(Node* node, regex_t* reg, int state, ScanEnv* env)
NODE_STATUS_ADD(node, IN_MULTI_ENTRY);
}
- if (IS_REPEAT_INFINITE(qn->upper) || qn->upper >= 1) {
+ if (IS_INFINITE_REPEAT(qn->upper) || qn->upper >= 1) {
d = tree_min_len(body, env);
if (d == 0) {
-#ifdef USE_INSISTENT_CHECK_CAPTURES_IN_EMPTY_REPEAT
- qn->body_empty_info = quantifiers_memory_node_info(body);
- if (qn->body_empty_info == QUANT_BODY_IS_EMPTY_REC) {
- if (NODE_TYPE(body) == NODE_ENCLOSURE &&
- ENCLOSURE_(body)->type == ENCLOSURE_MEMORY) {
- MEM_STATUS_ON(env->bt_mem_end, ENCLOSURE_(body)->m.regnum);
+#ifdef USE_STUBBORN_CHECK_CAPTURES_IN_EMPTY_REPEAT
+ qn->emptiness = quantifiers_memory_node_info(body);
+ if (qn->emptiness == BODY_IS_EMPTY_POSSIBILITY_REC) {
+ if (NODE_TYPE(body) == NODE_BAG &&
+ BAG_(body)->type == BAG_MEMORY) {
+ MEM_STATUS_ON(env->bt_mem_end, BAG_(body)->m.regnum);
}
}
#else
- qn->body_empty_info = QUANT_BODY_IS_EMPTY;
+ qn->emptiness = BODY_IS_EMPTY_POSSIBILITY;
#endif
}
}
- if (IS_REPEAT_INFINITE(qn->upper) || qn->upper >= 2)
+ if (IS_INFINITE_REPEAT(qn->upper) || qn->upper >= 2)
state |= IN_REAL_REPEAT;
if (qn->lower != qn->upper)
state |= IN_VAR_REPEAT;
@@ -4375,7 +4665,7 @@ setup_quant(Node* node, regex_t* reg, int state, ScanEnv* env)
/* expand string */
#define EXPAND_STRING_MAX_LENGTH 100
if (NODE_TYPE(body) == NODE_STRING) {
- if (!IS_REPEAT_INFINITE(qn->lower) && qn->lower == qn->upper &&
+ if (!IS_INFINITE_REPEAT(qn->lower) && qn->lower == qn->upper &&
qn->lower > 1 && qn->lower <= EXPAND_STRING_MAX_LENGTH) {
int len = NODE_STRING_LEN(body);
StrNode* sn = STR_(body);
@@ -4393,8 +4683,7 @@ setup_quant(Node* node, regex_t* reg, int state, ScanEnv* env)
}
}
-#ifdef USE_OP_PUSH_OR_JUMP_EXACT
- if (qn->greedy && (qn->body_empty_info != QUANT_BODY_IS_NOT_EMPTY)) {
+ if (qn->greedy && (qn->emptiness == BODY_IS_NOT_EMPTY)) {
if (NODE_TYPE(body) == NODE_QUANT) {
QuantNode* tqn = QUANT_(body);
if (IS_NOT_NULL(tqn->head_exact)) {
@@ -4406,13 +4695,12 @@ setup_quant(Node* node, regex_t* reg, int state, ScanEnv* env)
qn->head_exact = get_head_value_node(NODE_BODY(node), 1, reg);
}
}
-#endif
return r;
}
/* setup_tree does the following work.
- 1. check empty loop. (set qn->body_empty_info)
+ 1. check empty loop. (set qn->emptiness)
2. expand ignore-case in char class.
3. set memory status bit flags. (reg->mem_stats)
4. set qn->head_exact for [push, exact] -> [push_or_jump_exact1, exact].
@@ -4446,7 +4734,7 @@ setup_tree(Node* node, regex_t* reg, int state, ScanEnv* env)
case NODE_STRING:
if (IS_IGNORECASE(reg->options) && !NODE_STRING_IS_RAW(node)) {
- r = expand_case_fold_string(node, reg);
+ r = expand_case_fold_string(node, reg, state);
}
break;
@@ -4469,21 +4757,21 @@ setup_tree(Node* node, regex_t* reg, int state, ScanEnv* env)
}
break;
- case NODE_ENCLOSURE:
+ case NODE_BAG:
{
- EnclosureNode* en = ENCLOSURE_(node);
+ BagNode* en = BAG_(node);
switch (en->type) {
- case ENCLOSURE_OPTION:
+ case BAG_OPTION:
{
OnigOptionType options = reg->options;
- reg->options = ENCLOSURE_(node)->o.options;
+ reg->options = BAG_(node)->o.options;
r = setup_tree(NODE_BODY(node), reg, state, env);
reg->options = options;
}
break;
- case ENCLOSURE_MEMORY:
+ case BAG_MEMORY:
#ifdef USE_CALL
state |= en->m.called_state;
#endif
@@ -4495,22 +4783,22 @@ setup_tree(Node* node, regex_t* reg, int state, ScanEnv* env)
r = setup_tree(NODE_BODY(node), reg, state, env);
break;
- case ENCLOSURE_STOP_BACKTRACK:
+ case BAG_STOP_BACKTRACK:
{
Node* target = NODE_BODY(node);
r = setup_tree(target, reg, state, env);
if (NODE_TYPE(target) == NODE_QUANT) {
QuantNode* tqn = QUANT_(target);
- if (IS_REPEAT_INFINITE(tqn->upper) && tqn->lower <= 1 &&
+ if (IS_INFINITE_REPEAT(tqn->upper) && tqn->lower <= 1 &&
tqn->greedy != 0) { /* (?>a*), a*+ etc... */
- if (NODE_IS_SIMPLE_TYPE(NODE_BODY(target)))
- NODE_STATUS_ADD(node, STOP_BT_SIMPLE_REPEAT);
+ if (is_strict_real_node(NODE_BODY(target)))
+ NODE_STATUS_ADD(node, STRICT_REAL_REPEAT);
}
}
}
break;
- case ENCLOSURE_IF_ELSE:
+ case BAG_IF_ELSE:
r = setup_tree(NODE_BODY(node), reg, (state | IN_ALT), env);
if (r != 0) return r;
if (IS_NOT_NULL(en->te.Then)) {
@@ -4545,35 +4833,83 @@ setup_tree(Node* node, regex_t* reg, int state, ScanEnv* env)
return r;
}
-/* set skip map for Boyer-Moore search */
static int
-set_bm_skip(UChar* s, UChar* end, OnigEncoding enc ARG_UNUSED,
- UChar skip[], int** int_skip)
+set_sunday_quick_search_or_bmh_skip_table(regex_t* reg, int case_expand,
+ UChar* s, UChar* end,
+ UChar skip[], int* roffset)
{
- int i, len;
+ int i, j, k, len, offset;
+ int n, clen;
+ UChar* p;
+ OnigEncoding enc;
+ OnigCaseFoldCodeItem items[ONIGENC_GET_CASE_FOLD_CODES_MAX_NUM];
+ UChar buf[ONIGENC_MBC_CASE_FOLD_MAXLEN];
+
+ enc = reg->enc;
+ offset = ENC_GET_SKIP_OFFSET(enc);
+ if (offset == ENC_SKIP_OFFSET_1_OR_0) {
+ UChar* p = s;
+ while (1) {
+ len = enclen(enc, p);
+ if (p + len >= end) {
+ if (len == 1) offset = 1;
+ else offset = 0;
+ break;
+ }
+ p += len;
+ }
+ }
len = (int )(end - s);
- if (len < ONIG_CHAR_TABLE_SIZE) {
- for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) skip[i] = len;
+ if (len + offset >= 255)
+ return ONIGERR_PARSER_BUG;
- for (i = 0; i < len - 1; i++)
- skip[s[i]] = len - 1 - i;
+ *roffset = offset;
+
+ for (i = 0; i < CHAR_MAP_SIZE; i++) {
+ skip[i] = (UChar )(len + offset);
}
- else {
- if (IS_NULL(*int_skip)) {
- *int_skip = (int* )xmalloc(sizeof(int) * ONIG_CHAR_TABLE_SIZE);
- if (IS_NULL(*int_skip)) return ONIGERR_MEMORY;
+
+ for (p = s; p < end; ) {
+ int z;
+
+ clen = enclen(enc, p);
+ if (p + clen > end) clen = (int )(end - p);
+
+ len = (int )(end - p);
+ for (j = 0; j < clen; j++) {
+ z = len - j + (offset - 1);
+ if (z <= 0) break;
+ skip[p[j]] = z;
+ }
+
+ if (case_expand != 0) {
+ n = ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc, reg->case_fold_flag,
+ p, end, items);
+ for (k = 0; k < n; k++) {
+ ONIGENC_CODE_TO_MBC(enc, items[k].code[0], buf);
+ for (j = 0; j < clen; j++) {
+ z = len - j + (offset - 1);
+ if (z <= 0) break;
+ if (skip[buf[j]] > z)
+ skip[buf[j]] = z;
+ }
+ }
}
- for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) (*int_skip)[i] = len;
- for (i = 0; i < len - 1; i++)
- (*int_skip)[s[i]] = len - 1 - i;
+ p += clen;
}
+
return 0;
}
+
#define OPT_EXACT_MAXLEN 24
+#if OPT_EXACT_MAXLEN >= 255
+#error Too big OPT_EXACT_MAXLEN
+#endif
+
typedef struct {
OnigLen min; /* min byte length */
OnigLen max; /* max byte length */
@@ -4596,26 +4932,27 @@ typedef struct {
MinMax mmd; /* position */
OptAnc anc;
int reach_end;
- int ignore_case;
+ int case_fold;
+ int good_case_fold;
int len;
UChar s[OPT_EXACT_MAXLEN];
-} OptExact;
+} OptStr;
typedef struct {
MinMax mmd; /* position */
OptAnc anc;
int value; /* weighted value */
- UChar map[ONIG_CHAR_TABLE_SIZE];
+ UChar map[CHAR_MAP_SIZE];
} OptMap;
typedef struct {
- MinMax len;
- OptAnc anc;
- OptExact exb; /* boundary */
- OptExact exm; /* middle */
- OptExact expr; /* prec read (?=...) */
- OptMap map; /* boundary */
-} NodeOpt;
+ MinMax len;
+ OptAnc anc;
+ OptStr sb; /* boundary */
+ OptStr sm; /* middle */
+ OptStr spr; /* prec read (?=...) */
+ OptMap map; /* boundary */
+} OptNode;
static int
@@ -4647,15 +4984,15 @@ distance_value(MinMax* mm)
{
/* 1000 / (min-max-dist + 1) */
static const short int dist_vals[] = {
- 1000, 500, 333, 250, 200, 167, 143, 125, 111, 100,
- 91, 83, 77, 71, 67, 63, 59, 56, 53, 50,
- 48, 45, 43, 42, 40, 38, 37, 36, 34, 33,
- 32, 31, 30, 29, 29, 28, 27, 26, 26, 25,
- 24, 24, 23, 23, 22, 22, 21, 21, 20, 20,
- 20, 19, 19, 19, 18, 18, 18, 17, 17, 17,
- 16, 16, 16, 16, 15, 15, 15, 15, 14, 14,
- 14, 14, 14, 14, 13, 13, 13, 13, 13, 13,
- 12, 12, 12, 12, 12, 12, 11, 11, 11, 11,
+ 1000, 500, 333, 250, 200, 167, 143, 125, 111, 100,
+ 91, 83, 77, 71, 67, 63, 59, 56, 53, 50,
+ 48, 45, 43, 42, 40, 38, 37, 36, 34, 33,
+ 32, 31, 30, 29, 29, 28, 27, 26, 26, 25,
+ 24, 24, 23, 23, 22, 22, 21, 21, 20, 20,
+ 20, 19, 19, 19, 18, 18, 18, 17, 17, 17,
+ 16, 16, 16, 16, 15, 15, 15, 15, 14, 14,
+ 14, 14, 14, 14, 13, 13, 13, 13, 13, 13,
+ 12, 12, 12, 12, 12, 12, 11, 11, 11, 11,
11, 11, 11, 11, 11, 10, 10, 10, 10, 10
};
@@ -4691,7 +5028,7 @@ comp_distance_value(MinMax* d1, MinMax* d2, int v1, int v2)
static int
is_equal_mml(MinMax* a, MinMax* b)
{
- return (a->min == b->min && a->max == b->max) ? 1 : 0;
+ return a->min == b->min && a->max == b->max;
}
static void
@@ -4763,15 +5100,15 @@ concat_opt_anc_info(OptAnc* to, OptAnc* left, OptAnc* right,
to->right |= left->right;
}
else {
- to->right |= (left->right & ANCHOR_PREC_READ_NOT);
+ to->right |= (left->right & ANCR_PREC_READ_NOT);
}
}
static int
is_left(int a)
{
- if (a == ANCHOR_END_BUF || a == ANCHOR_SEMI_END_BUF ||
- a == ANCHOR_END_LINE || a == ANCHOR_PREC_READ || a == ANCHOR_PREC_READ_NOT)
+ if (a == ANCR_END_BUF || a == ANCR_SEMI_END_BUF ||
+ a == ANCR_END_LINE || a == ANCR_PREC_READ || a == ANCR_PREC_READ_NOT)
return 0;
return 1;
@@ -4811,39 +5148,47 @@ alt_merge_opt_anc_info(OptAnc* to, OptAnc* add)
}
static int
-is_full_opt_exact(OptExact* e)
+is_full_opt_exact(OptStr* e)
{
- return (e->len >= OPT_EXACT_MAXLEN ? 1 : 0);
+ return e->len >= OPT_EXACT_MAXLEN;
}
static void
-clear_opt_exact(OptExact* e)
+clear_opt_exact(OptStr* e)
{
clear_mml(&e->mmd);
clear_opt_anc_info(&e->anc);
- e->reach_end = 0;
- e->ignore_case = 0;
- e->len = 0;
- e->s[0] = '\0';
+ e->reach_end = 0;
+ e->case_fold = 0;
+ e->good_case_fold = 0;
+ e->len = 0;
+ e->s[0] = '\0';
}
static void
-copy_opt_exact(OptExact* to, OptExact* from)
+copy_opt_exact(OptStr* to, OptStr* from)
{
*to = *from;
}
static int
-concat_opt_exact(OptExact* to, OptExact* add, OnigEncoding enc)
+concat_opt_exact(OptStr* to, OptStr* add, OnigEncoding enc)
{
int i, j, len, r;
UChar *p, *end;
OptAnc tanc;
- if (! to->ignore_case && add->ignore_case) {
- if (to->len >= add->len) return 0; /* avoid */
+ if (add->case_fold != 0) {
+ if (! to->case_fold) {
+ if (to->len > 1 || to->len >= add->len) return 0; /* avoid */
- to->ignore_case = 1;
+ to->case_fold = 1;
+ }
+ else {
+ if (to->good_case_fold != 0) {
+ if (add->good_case_fold == 0) return 0;
+ }
+ }
}
r = 0;
@@ -4870,7 +5215,7 @@ concat_opt_exact(OptExact* to, OptExact* add, OnigEncoding enc)
}
static void
-concat_opt_exact_str(OptExact* to, UChar* s, UChar* end, OnigEncoding enc)
+concat_opt_exact_str(OptStr* to, UChar* s, UChar* end, OnigEncoding enc)
{
int i, j, len;
UChar *p;
@@ -4883,10 +5228,13 @@ concat_opt_exact_str(OptExact* to, UChar* s, UChar* end, OnigEncoding enc)
}
to->len = i;
+
+ if (p >= end && to->len == (int )(end - s))
+ to->reach_end = 1;
}
static void
-alt_merge_opt_exact(OptExact* to, OptExact* add, OptEnv* env)
+alt_merge_opt_exact(OptStr* to, OptStr* add, OptEnv* env)
{
int i, j, len;
@@ -4915,14 +5263,17 @@ alt_merge_opt_exact(OptExact* to, OptExact* add, OptEnv* env)
to->reach_end = 0;
}
to->len = i;
- to->ignore_case |= add->ignore_case;
+ if (add->case_fold != 0)
+ to->case_fold = 1;
+ if (add->good_case_fold == 0)
+ to->good_case_fold = 0;
alt_merge_opt_anc_info(&to->anc, &add->anc);
if (! to->reach_end) to->anc.right = 0;
}
static void
-select_opt_exact(OnigEncoding enc, OptExact* now, OptExact* alt)
+select_opt_exact(OnigEncoding enc, OptStr* now, OptStr* alt)
{
int vn, va;
@@ -4945,8 +5296,11 @@ select_opt_exact(OnigEncoding enc, OptExact* now, OptExact* alt)
if (alt->len > 1) va += 5;
}
- if (now->ignore_case == 0) vn *= 2;
- if (alt->ignore_case == 0) va *= 2;
+ if (now->case_fold == 0) vn *= 2;
+ if (alt->case_fold == 0) va *= 2;
+
+ if (now->good_case_fold != 0) vn *= 4;
+ if (alt->good_case_fold != 0) va *= 4;
if (comp_distance_value(&now->mmd, &alt->mmd, vn, va) > 0)
copy_opt_exact(now, alt);
@@ -5037,14 +5391,24 @@ select_opt_map(OptMap* now, OptMap* alt)
}
static int
-comp_opt_exact_or_map(OptExact* e, OptMap* m)
+comp_opt_exact_or_map(OptStr* e, OptMap* m)
{
#define COMP_EM_BASE 20
int ae, am;
+ int case_value;
if (m->value <= 0) return -1;
- ae = COMP_EM_BASE * e->len * (e->ignore_case ? 1 : 2);
+ if (e->case_fold != 0) {
+ if (e->good_case_fold != 0)
+ case_value = 2;
+ else
+ case_value = 1;
+ }
+ else
+ case_value = 3;
+
+ ae = COMP_EM_BASE * e->len * case_value;
am = COMP_EM_BASE * 5 * 2 / m->value;
return comp_distance_value(&e->mmd, &m->mmd, ae, am);
}
@@ -5064,7 +5428,7 @@ alt_merge_opt_map(OnigEncoding enc, OptMap* to, OptMap* add)
alt_merge_mml(&to->mmd, &add->mmd);
val = 0;
- for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) {
+ for (i = 0; i < CHAR_MAP_SIZE; i++) {
if (add->map[i])
to->map[i] = 1;
@@ -5077,42 +5441,42 @@ alt_merge_opt_map(OnigEncoding enc, OptMap* to, OptMap* add)
}
static void
-set_bound_node_opt_info(NodeOpt* opt, MinMax* plen)
+set_bound_node_opt_info(OptNode* opt, MinMax* plen)
{
- copy_mml(&(opt->exb.mmd), plen);
- copy_mml(&(opt->expr.mmd), plen);
- copy_mml(&(opt->map.mmd), plen);
+ copy_mml(&(opt->sb.mmd), plen);
+ copy_mml(&(opt->spr.mmd), plen);
+ copy_mml(&(opt->map.mmd), plen);
}
static void
-clear_node_opt_info(NodeOpt* opt)
+clear_node_opt_info(OptNode* opt)
{
clear_mml(&opt->len);
clear_opt_anc_info(&opt->anc);
- clear_opt_exact(&opt->exb);
- clear_opt_exact(&opt->exm);
- clear_opt_exact(&opt->expr);
+ clear_opt_exact(&opt->sb);
+ clear_opt_exact(&opt->sm);
+ clear_opt_exact(&opt->spr);
clear_opt_map(&opt->map);
}
static void
-copy_node_opt_info(NodeOpt* to, NodeOpt* from)
+copy_node_opt_info(OptNode* to, OptNode* from)
{
- xmemcpy(to,from,sizeof(NodeOpt));
+ xmemcpy(to,from,sizeof(OptNode));
}
static void
-concat_left_node_opt_info(OnigEncoding enc, NodeOpt* to, NodeOpt* add)
+concat_left_node_opt_info(OnigEncoding enc, OptNode* to, OptNode* add)
{
- int exb_reach, exm_reach;
+ int sb_reach, sm_reach;
OptAnc tanc;
concat_opt_anc_info(&tanc, &to->anc, &add->anc, to->len.max, add->len.max);
copy_opt_anc_info(&to->anc, &tanc);
- if (add->exb.len > 0 && to->len.max == 0) {
- concat_opt_anc_info(&tanc, &to->anc, &add->exb.anc, to->len.max, add->len.max);
- copy_opt_anc_info(&add->exb.anc, &tanc);
+ if (add->sb.len > 0 && to->len.max == 0) {
+ concat_opt_anc_info(&tanc, &to->anc, &add->sb.anc, to->len.max, add->len.max);
+ copy_opt_anc_info(&add->sb.anc, &tanc);
}
if (add->map.value > 0 && to->len.max == 0) {
@@ -5120,38 +5484,38 @@ concat_left_node_opt_info(OnigEncoding enc, NodeOpt* to, NodeOpt* add)
add->map.anc.left |= to->anc.left;
}
- exb_reach = to->exb.reach_end;
- exm_reach = to->exm.reach_end;
+ sb_reach = to->sb.reach_end;
+ sm_reach = to->sm.reach_end;
if (add->len.max != 0)
- to->exb.reach_end = to->exm.reach_end = 0;
+ to->sb.reach_end = to->sm.reach_end = 0;
- if (add->exb.len > 0) {
- if (exb_reach) {
- concat_opt_exact(&to->exb, &add->exb, enc);
- clear_opt_exact(&add->exb);
+ if (add->sb.len > 0) {
+ if (sb_reach) {
+ concat_opt_exact(&to->sb, &add->sb, enc);
+ clear_opt_exact(&add->sb);
}
- else if (exm_reach) {
- concat_opt_exact(&to->exm, &add->exb, enc);
- clear_opt_exact(&add->exb);
+ else if (sm_reach) {
+ concat_opt_exact(&to->sm, &add->sb, enc);
+ clear_opt_exact(&add->sb);
}
}
- select_opt_exact(enc, &to->exm, &add->exb);
- select_opt_exact(enc, &to->exm, &add->exm);
+ select_opt_exact(enc, &to->sm, &add->sb);
+ select_opt_exact(enc, &to->sm, &add->sm);
- if (to->expr.len > 0) {
+ if (to->spr.len > 0) {
if (add->len.max > 0) {
- if (to->expr.len > (int )add->len.max)
- to->expr.len = add->len.max;
+ if (to->spr.len > (int )add->len.max)
+ to->spr.len = add->len.max;
- if (to->expr.mmd.max == 0)
- select_opt_exact(enc, &to->exb, &to->expr);
+ if (to->spr.mmd.max == 0)
+ select_opt_exact(enc, &to->sb, &to->spr);
else
- select_opt_exact(enc, &to->exm, &to->expr);
+ select_opt_exact(enc, &to->sm, &to->spr);
}
}
- else if (add->expr.len > 0) {
- copy_opt_exact(&to->expr, &add->expr);
+ else if (add->spr.len > 0) {
+ copy_opt_exact(&to->spr, &add->spr);
}
select_opt_map(&to->map, &add->map);
@@ -5159,12 +5523,12 @@ concat_left_node_opt_info(OnigEncoding enc, NodeOpt* to, NodeOpt* add)
}
static void
-alt_merge_node_opt_info(NodeOpt* to, NodeOpt* add, OptEnv* env)
+alt_merge_node_opt_info(OptNode* to, OptNode* add, OptEnv* env)
{
alt_merge_opt_anc_info(&to->anc, &add->anc);
- alt_merge_opt_exact(&to->exb, &add->exb, env);
- alt_merge_opt_exact(&to->exm, &add->exm, env);
- alt_merge_opt_exact(&to->expr, &add->expr, env);
+ alt_merge_opt_exact(&to->sb, &add->sb, env);
+ alt_merge_opt_exact(&to->sm, &add->sm, env);
+ alt_merge_opt_exact(&to->spr, &add->spr, env);
alt_merge_opt_map(env->enc, &to->map, &add->map);
alt_merge_mml(&to->len, &add->len);
@@ -5174,11 +5538,11 @@ alt_merge_node_opt_info(NodeOpt* to, NodeOpt* add, OptEnv* env)
#define MAX_NODE_OPT_INFO_REF_COUNT 5
static int
-optimize_nodes(Node* node, NodeOpt* opt, OptEnv* env)
+optimize_nodes(Node* node, OptNode* opt, OptEnv* env)
{
int i;
int r;
- NodeOpt xo;
+ OptNode xo;
OnigEncoding enc;
r = 0;
@@ -5224,7 +5588,7 @@ optimize_nodes(Node* node, NodeOpt* opt, OptEnv* env)
/* int is_raw = NODE_STRING_IS_RAW(node); */
if (! NODE_STRING_IS_AMBIG(node)) {
- concat_opt_exact_str(&opt->exb, sn->s, sn->end, enc);
+ concat_opt_exact_str(&opt->sb, sn->s, sn->end, enc);
if (slen > 0) {
add_char_opt_map(&opt->map, *(sn->s), enc);
}
@@ -5238,8 +5602,10 @@ optimize_nodes(Node* node, NodeOpt* opt, OptEnv* env)
max = ONIGENC_MBC_MAXLEN_DIST(enc) * n;
}
else {
- concat_opt_exact_str(&opt->exb, sn->s, sn->end, enc);
- opt->exb.ignore_case = 1;
+ concat_opt_exact_str(&opt->sb, sn->s, sn->end, enc);
+ opt->sb.case_fold = 1;
+ if (NODE_STRING_IS_GOOD_AMBIG(node))
+ opt->sb.good_case_fold = 1;
if (slen > 0) {
r = add_char_amb_opt_map(&opt->map, sn->s, sn->end,
@@ -5252,9 +5618,6 @@ optimize_nodes(Node* node, NodeOpt* opt, OptEnv* env)
set_mml(&opt->len, slen, max);
}
-
- if (opt->exb.len == slen)
- opt->exb.reach_end = 1;
}
break;
@@ -5328,27 +5691,27 @@ optimize_nodes(Node* node, NodeOpt* opt, OptEnv* env)
case NODE_ANCHOR:
switch (ANCHOR_(node)->type) {
- case ANCHOR_BEGIN_BUF:
- case ANCHOR_BEGIN_POSITION:
- case ANCHOR_BEGIN_LINE:
- case ANCHOR_END_BUF:
- case ANCHOR_SEMI_END_BUF:
- case ANCHOR_END_LINE:
- case ANCHOR_PREC_READ_NOT:
- case ANCHOR_LOOK_BEHIND:
+ case ANCR_BEGIN_BUF:
+ case ANCR_BEGIN_POSITION:
+ case ANCR_BEGIN_LINE:
+ case ANCR_END_BUF:
+ case ANCR_SEMI_END_BUF:
+ case ANCR_END_LINE:
+ case ANCR_PREC_READ_NOT:
+ case ANCR_LOOK_BEHIND:
add_opt_anc_info(&opt->anc, ANCHOR_(node)->type);
break;
- case ANCHOR_PREC_READ:
+ case ANCR_PREC_READ:
{
r = optimize_nodes(NODE_BODY(node), &xo, env);
if (r == 0) {
- if (xo.exb.len > 0)
- copy_opt_exact(&opt->expr, &xo.exb);
- else if (xo.exm.len > 0)
- copy_opt_exact(&opt->expr, &xo.exm);
+ if (xo.sb.len > 0)
+ copy_opt_exact(&opt->spr, &xo.sb);
+ else if (xo.sm.len > 0)
+ copy_opt_exact(&opt->spr, &xo.sm);
- opt->expr.reach_end = 0;
+ opt->spr.reach_end = 0;
if (xo.map.value > 0)
copy_opt_map(&opt->map, &xo.map);
@@ -5356,7 +5719,7 @@ optimize_nodes(Node* node, NodeOpt* opt, OptEnv* env)
}
break;
- case ANCHOR_LOOK_BEHIND_NOT:
+ case ANCR_LOOK_BEHIND_NOT:
break;
}
break;
@@ -5391,7 +5754,7 @@ optimize_nodes(Node* node, NodeOpt* opt, OptEnv* env)
set_mml(&opt->len, 0, INFINITE_LEN);
else {
OnigOptionType save = env->options;
- env->options = ENCLOSURE_(NODE_BODY(node))->o.options;
+ env->options = BAG_(NODE_BODY(node))->o.options;
r = optimize_nodes(NODE_BODY(node), opt, env);
env->options = save;
}
@@ -5408,31 +5771,31 @@ optimize_nodes(Node* node, NodeOpt* opt, OptEnv* env)
if (qn->lower > 0) {
copy_node_opt_info(opt, &xo);
- if (xo.exb.len > 0) {
- if (xo.exb.reach_end) {
- for (i = 2; i <= qn->lower && ! is_full_opt_exact(&opt->exb); i++) {
- int rc = concat_opt_exact(&opt->exb, &xo.exb, enc);
+ if (xo.sb.len > 0) {
+ if (xo.sb.reach_end) {
+ for (i = 2; i <= qn->lower && ! is_full_opt_exact(&opt->sb); i++) {
+ int rc = concat_opt_exact(&opt->sb, &xo.sb, enc);
if (rc > 0) break;
}
- if (i < qn->lower) opt->exb.reach_end = 0;
+ if (i < qn->lower) opt->sb.reach_end = 0;
}
}
if (qn->lower != qn->upper) {
- opt->exb.reach_end = 0;
- opt->exm.reach_end = 0;
+ opt->sb.reach_end = 0;
+ opt->sm.reach_end = 0;
}
if (qn->lower > 1)
- opt->exm.reach_end = 0;
+ opt->sm.reach_end = 0;
}
- if (IS_REPEAT_INFINITE(qn->upper)) {
+ if (IS_INFINITE_REPEAT(qn->upper)) {
if (env->mmd.max == 0 &&
NODE_IS_ANYCHAR(NODE_BODY(node)) && qn->greedy != 0) {
if (IS_MULTILINE(CTYPE_OPTION(NODE_QUANT_BODY(qn), env)))
- add_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_INF_ML);
+ add_opt_anc_info(&opt->anc, ANCR_ANYCHAR_INF_ML);
else
- add_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_INF);
+ add_opt_anc_info(&opt->anc, ANCR_ANYCHAR_INF);
}
max = (xo.len.max > 0 ? INFINITE_LEN : 0);
@@ -5446,12 +5809,12 @@ optimize_nodes(Node* node, NodeOpt* opt, OptEnv* env)
}
break;
- case NODE_ENCLOSURE:
+ case NODE_BAG:
{
- EnclosureNode* en = ENCLOSURE_(node);
+ BagNode* en = BAG_(node);
switch (en->type) {
- case ENCLOSURE_OPTION:
+ case BAG_OPTION:
{
OnigOptionType save = env->options;
@@ -5461,7 +5824,7 @@ optimize_nodes(Node* node, NodeOpt* opt, OptEnv* env)
}
break;
- case ENCLOSURE_MEMORY:
+ case BAG_MEMORY:
#ifdef USE_CALL
en->opt_count++;
if (en->opt_count > MAX_NODE_OPT_INFO_REF_COUNT) {
@@ -5477,23 +5840,23 @@ optimize_nodes(Node* node, NodeOpt* opt, OptEnv* env)
#endif
{
r = optimize_nodes(NODE_BODY(node), opt, env);
- if (is_set_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_INF_MASK)) {
+ if (is_set_opt_anc_info(&opt->anc, ANCR_ANYCHAR_INF_MASK)) {
if (MEM_STATUS_AT0(env->scan_env->backrefed_mem, en->m.regnum))
- remove_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_INF_MASK);
+ remove_opt_anc_info(&opt->anc, ANCR_ANYCHAR_INF_MASK);
}
}
break;
- case ENCLOSURE_STOP_BACKTRACK:
+ case BAG_STOP_BACKTRACK:
r = optimize_nodes(NODE_BODY(node), opt, env);
break;
- case ENCLOSURE_IF_ELSE:
+ case BAG_IF_ELSE:
{
OptEnv nenv;
copy_opt_env(&nenv, env);
- r = optimize_nodes(NODE_ENCLOSURE_BODY(en), &xo, &nenv);
+ r = optimize_nodes(NODE_BAG_BODY(en), &xo, &nenv);
if (r == 0) {
add_mml(&nenv.mmd, &xo.len);
concat_left_node_opt_info(enc, opt, &xo);
@@ -5531,39 +5894,47 @@ optimize_nodes(Node* node, NodeOpt* opt, OptEnv* env)
}
static int
-set_optimize_exact(regex_t* reg, OptExact* e)
+set_optimize_exact(regex_t* reg, OptStr* e)
{
int r;
if (e->len == 0) return 0;
- if (e->ignore_case) {
- reg->exact = (UChar* )xmalloc(e->len);
- CHECK_NULL_RETURN_MEMERR(reg->exact);
- xmemcpy(reg->exact, e->s, e->len);
- reg->exact_end = reg->exact + e->len;
- reg->optimize = OPTIMIZE_EXACT_IC;
+ reg->exact = (UChar* )xmalloc(e->len);
+ CHECK_NULL_RETURN_MEMERR(reg->exact);
+ xmemcpy(reg->exact, e->s, e->len);
+ reg->exact_end = reg->exact + e->len;
+
+ if (e->case_fold) {
+ reg->optimize = OPTIMIZE_STR_CASE_FOLD;
+ if (e->good_case_fold != 0) {
+ if (e->len >= 2) {
+ r = set_sunday_quick_search_or_bmh_skip_table(reg, 1,
+ reg->exact, reg->exact_end,
+ reg->map, &(reg->map_offset));
+ if (r != 0) return r;
+ reg->optimize = OPTIMIZE_STR_CASE_FOLD_FAST;
+ }
+ }
}
else {
int allow_reverse;
- reg->exact = onigenc_strdup(reg->enc, e->s, e->s + e->len);
- CHECK_NULL_RETURN_MEMERR(reg->exact);
- reg->exact_end = reg->exact + e->len;
-
allow_reverse =
ONIGENC_IS_ALLOWED_REVERSE_MATCH(reg->enc, reg->exact, reg->exact_end);
- if (e->len >= 3 || (e->len >= 2 && allow_reverse)) {
- r = set_bm_skip(reg->exact, reg->exact_end, reg->enc,
- reg->map, &(reg->int_map));
+ if (e->len >= 2 || (e->len >= 1 && allow_reverse)) {
+ r = set_sunday_quick_search_or_bmh_skip_table(reg, 0,
+ reg->exact, reg->exact_end,
+ reg->map, &(reg->map_offset));
if (r != 0) return r;
reg->optimize = (allow_reverse != 0
- ? OPTIMIZE_EXACT_BM : OPTIMIZE_EXACT_BM_NO_REV);
+ ? OPTIMIZE_STR_FAST
+ : OPTIMIZE_STR_FAST_STEP_FORWARD);
}
else {
- reg->optimize = OPTIMIZE_EXACT;
+ reg->optimize = OPTIMIZE_STR;
}
}
@@ -5582,7 +5953,7 @@ set_optimize_map(regex_t* reg, OptMap* m)
{
int i;
- for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++)
+ for (i = 0; i < CHAR_MAP_SIZE; i++)
reg->map[i] = m->map[i];
reg->optimize = OPTIMIZE_MAP;
@@ -5597,8 +5968,8 @@ set_optimize_map(regex_t* reg, OptMap* m)
static void
set_sub_anchor(regex_t* reg, OptAnc* anc)
{
- reg->sub_anchor |= anc->left & ANCHOR_BEGIN_LINE;
- reg->sub_anchor |= anc->right & ANCHOR_END_LINE;
+ reg->sub_anchor |= anc->left & ANCR_BEGIN_LINE;
+ reg->sub_anchor |= anc->right & ANCR_END_LINE;
}
#if defined(ONIG_DEBUG_COMPILE) || defined(ONIG_DEBUG_MATCH)
@@ -5609,7 +5980,7 @@ static int
set_optimize_info_from_tree(Node* node, regex_t* reg, ScanEnv* scan_env)
{
int r;
- NodeOpt opt;
+ OptNode opt;
OptEnv env;
env.enc = reg->enc;
@@ -5621,29 +5992,29 @@ set_optimize_info_from_tree(Node* node, regex_t* reg, ScanEnv* scan_env)
r = optimize_nodes(node, &opt, &env);
if (r != 0) return r;
- reg->anchor = opt.anc.left & (ANCHOR_BEGIN_BUF |
- ANCHOR_BEGIN_POSITION | ANCHOR_ANYCHAR_INF | ANCHOR_ANYCHAR_INF_ML |
- ANCHOR_LOOK_BEHIND);
+ reg->anchor = opt.anc.left & (ANCR_BEGIN_BUF |
+ ANCR_BEGIN_POSITION | ANCR_ANYCHAR_INF | ANCR_ANYCHAR_INF_ML |
+ ANCR_LOOK_BEHIND);
- if ((opt.anc.left & (ANCHOR_LOOK_BEHIND | ANCHOR_PREC_READ_NOT)) != 0)
- reg->anchor &= ~ANCHOR_ANYCHAR_INF_ML;
+ if ((opt.anc.left & (ANCR_LOOK_BEHIND | ANCR_PREC_READ_NOT)) != 0)
+ reg->anchor &= ~ANCR_ANYCHAR_INF_ML;
- reg->anchor |= opt.anc.right & (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF |
- ANCHOR_PREC_READ_NOT);
+ reg->anchor |= opt.anc.right & (ANCR_END_BUF | ANCR_SEMI_END_BUF |
+ ANCR_PREC_READ_NOT);
- if (reg->anchor & (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF)) {
+ if (reg->anchor & (ANCR_END_BUF | ANCR_SEMI_END_BUF)) {
reg->anchor_dmin = opt.len.min;
reg->anchor_dmax = opt.len.max;
}
- if (opt.exb.len > 0 || opt.exm.len > 0) {
- select_opt_exact(reg->enc, &opt.exb, &opt.exm);
- if (opt.map.value > 0 && comp_opt_exact_or_map(&opt.exb, &opt.map) > 0) {
+ if (opt.sb.len > 0 || opt.sm.len > 0) {
+ select_opt_exact(reg->enc, &opt.sb, &opt.sm);
+ if (opt.map.value > 0 && comp_opt_exact_or_map(&opt.sb, &opt.map) > 0) {
goto set_map;
}
else {
- r = set_optimize_exact(reg, &opt.exb);
- set_sub_anchor(reg, &opt.exb.anc);
+ r = set_optimize_exact(reg, &opt.sb);
+ set_sub_anchor(reg, &opt.sb.anc);
}
}
else if (opt.map.value > 0) {
@@ -5652,9 +6023,9 @@ set_optimize_info_from_tree(Node* node, regex_t* reg, ScanEnv* scan_env)
set_sub_anchor(reg, &opt.map.anc);
}
else {
- reg->sub_anchor |= opt.anc.left & ANCHOR_BEGIN_LINE;
+ reg->sub_anchor |= opt.anc.left & ANCR_BEGIN_LINE;
if (opt.len.max == 0)
- reg->sub_anchor |= opt.anc.right & ANCHOR_END_LINE;
+ reg->sub_anchor |= opt.anc.right & ANCR_END_LINE;
}
#if defined(ONIG_DEBUG_COMPILE) || defined(ONIG_DEBUG_MATCH)
@@ -5672,6 +6043,7 @@ clear_optimize_info(regex_t* reg)
reg->anchor_dmax = 0;
reg->sub_anchor = 0;
reg->exact_end = (UChar* )NULL;
+ reg->map_offset = 0;
reg->threshold_len = 0;
if (IS_NOT_NULL(reg->exact)) {
xfree(reg->exact);
@@ -5740,41 +6112,41 @@ print_anchor(FILE* f, int anchor)
fprintf(f, "[");
- if (anchor & ANCHOR_BEGIN_BUF) {
+ if (anchor & ANCR_BEGIN_BUF) {
fprintf(f, "begin-buf");
q = 1;
}
- if (anchor & ANCHOR_BEGIN_LINE) {
+ if (anchor & ANCR_BEGIN_LINE) {
if (q) fprintf(f, ", ");
q = 1;
fprintf(f, "begin-line");
}
- if (anchor & ANCHOR_BEGIN_POSITION) {
+ if (anchor & ANCR_BEGIN_POSITION) {
if (q) fprintf(f, ", ");
q = 1;
fprintf(f, "begin-pos");
}
- if (anchor & ANCHOR_END_BUF) {
+ if (anchor & ANCR_END_BUF) {
if (q) fprintf(f, ", ");
q = 1;
fprintf(f, "end-buf");
}
- if (anchor & ANCHOR_SEMI_END_BUF) {
+ if (anchor & ANCR_SEMI_END_BUF) {
if (q) fprintf(f, ", ");
q = 1;
fprintf(f, "semi-end-buf");
}
- if (anchor & ANCHOR_END_LINE) {
+ if (anchor & ANCR_END_LINE) {
if (q) fprintf(f, ", ");
q = 1;
fprintf(f, "end-line");
}
- if (anchor & ANCHOR_ANYCHAR_INF) {
+ if (anchor & ANCR_ANYCHAR_INF) {
if (q) fprintf(f, ", ");
q = 1;
fprintf(f, "anychar-inf");
}
- if (anchor & ANCHOR_ANYCHAR_INF_ML) {
+ if (anchor & ANCR_ANYCHAR_INF_ML) {
if (q) fprintf(f, ", ");
fprintf(f, "anychar-inf-ml");
}
@@ -5785,12 +6157,13 @@ print_anchor(FILE* f, int anchor)
static void
print_optimize_info(FILE* f, regex_t* reg)
{
- static const char* on[] = { "NONE", "EXACT", "EXACT_BM", "EXACT_BM_NOT_REV",
- "EXACT_IC", "MAP" };
+ static const char* on[] = { "NONE", "STR",
+ "STR_FAST", "STR_FAST_STEP_FORWARD",
+ "STR_CASE_FOLD_FAST", "STR_CASE_FOLD", "MAP" };
fprintf(f, "optimize: %s\n", on[reg->optimize]);
fprintf(f, " anchor: "); print_anchor(f, reg->anchor);
- if ((reg->anchor & ANCHOR_END_BUF_MASK) != 0)
+ if ((reg->anchor & ANCR_END_BUF_MASK) != 0)
print_distance_range(f, reg->anchor_dmin, reg->anchor_dmax);
fprintf(f, "\n");
@@ -5811,14 +6184,14 @@ print_optimize_info(FILE* f, regex_t* reg)
else if (reg->optimize & OPTIMIZE_MAP) {
int c, i, n = 0;
- for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++)
+ for (i = 0; i < CHAR_MAP_SIZE; i++)
if (reg->map[i]) n++;
fprintf(f, "map: n=%d\n", n);
if (n > 0) {
c = 0;
fputc('[', f);
- for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) {
+ for (i = 0; i < CHAR_MAP_SIZE; i++) {
if (reg->map[i] != 0) {
if (c > 0) fputs(", ", f);
c++;
@@ -5839,7 +6212,7 @@ print_optimize_info(FILE* f, regex_t* reg)
extern RegexExt*
onig_get_regex_ext(regex_t* reg)
{
- if (IS_NULL(REG_EXTP(reg))) {
+ if (IS_NULL(reg->extp)) {
RegexExt* ext = (RegexExt* )xmalloc(sizeof(*ext));
if (IS_NULL(ext)) return 0;
@@ -5852,10 +6225,10 @@ onig_get_regex_ext(regex_t* reg)
ext->callout_list = 0;
#endif
- REG_EXTPL(reg) = (void* )ext;
+ reg->extp = ext;
}
- return REG_EXTP(reg);
+ return reg->extp;
}
static void
@@ -5895,19 +6268,20 @@ onig_ext_set_pattern(regex_t* reg, const UChar* pattern, const UChar* pattern_en
return ONIG_NORMAL;
}
-
extern void
onig_free_body(regex_t* reg)
{
if (IS_NOT_NULL(reg)) {
- if (IS_NOT_NULL(reg->p)) xfree(reg->p);
+ ops_free(reg);
+ if (IS_NOT_NULL(reg->string_pool)) {
+ xfree(reg->string_pool);
+ reg->string_pool_end = reg->string_pool = 0;
+ }
if (IS_NOT_NULL(reg->exact)) xfree(reg->exact);
- if (IS_NOT_NULL(reg->int_map)) xfree(reg->int_map);
- if (IS_NOT_NULL(reg->int_map_backward)) xfree(reg->int_map_backward);
if (IS_NOT_NULL(reg->repeat_range)) xfree(reg->repeat_range);
- if (IS_NOT_NULL(REG_EXTP(reg))) {
- free_regex_ext(REG_EXTP(reg));
- REG_EXTPL(reg) = 0;
+ if (IS_NOT_NULL(reg->extp)) {
+ free_regex_ext(reg->extp);
+ reg->extp = 0;
}
onig_names_free(reg);
@@ -5923,30 +6297,18 @@ onig_free(regex_t* reg)
}
}
-#define REGEX_TRANSFER(to,from) do {\
- onig_free_body(to);\
- xmemcpy(to, from, sizeof(regex_t));\
- xfree(from);\
-} while (0)
-
-extern void
-onig_transfer(regex_t* to, regex_t* from)
-{
- REGEX_TRANSFER(to, from);
-}
-
#ifdef ONIG_DEBUG_PARSE
static void print_tree P_((FILE* f, Node* node));
#endif
+extern int onig_init_for_match_at(regex_t* reg);
+
extern int
onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,
OnigErrorInfo* einfo)
{
-#define COMPILE_INIT_SIZE 20
-
- int r, init_size;
+ int r;
Node* root;
ScanEnv scan_env;
#ifdef USE_CALL
@@ -5963,15 +6325,15 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,
print_enc_string(stderr, reg->enc, pattern, pattern_end);
#endif
- if (reg->alloc == 0) {
- init_size = (int )(pattern_end - pattern) * 2;
- if (init_size <= 0) init_size = COMPILE_INIT_SIZE;
- r = BB_INIT(reg, init_size);
+ if (reg->ops_alloc == 0) {
+ r = ops_init(reg, OPS_INIT_SIZE);
if (r != 0) goto end;
}
else
- reg->used = 0;
+ reg->ops_used = 0;
+ reg->string_pool = 0;
+ reg->string_pool_end = 0;
reg->num_mem = 0;
reg->num_repeat = 0;
reg->num_null_check = 0;
@@ -6048,15 +6410,16 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,
r = compile_tree(root, reg, &scan_env);
if (r == 0) {
if (scan_env.keep_num > 0) {
- r = add_opcode(reg, OP_UPDATE_VAR);
- if (r != 0) goto err;
- r = add_update_var_type(reg, UPDATE_VAR_KEEP_FROM_STACK_LAST);
- if (r != 0) goto err;
- r = add_mem_num(reg, 0 /* not used */);
+ r = add_op(reg, OP_UPDATE_VAR);
if (r != 0) goto err;
+
+ COP(reg)->update_var.type = UPDATE_VAR_KEEP_FROM_STACK_LAST;
+ COP(reg)->update_var.id = 0; /* not used */
}
- r = add_opcode(reg, OP_END);
+ r = add_op(reg, OP_END);
+ if (r != 0) goto err;
+
#ifdef USE_CALL
if (scan_env.num_call > 0) {
r = fix_unset_addr_list(&uslist, reg);
@@ -6067,7 +6430,7 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,
if ((reg->num_repeat != 0) || (reg->bt_mem_end != 0)
#ifdef USE_CALLOUT
- || (IS_NOT_NULL(REG_EXTP(reg)) && REG_EXTP(reg)->callout_num != 0)
+ || (IS_NOT_NULL(reg->extp) && reg->extp->callout_num != 0)
#endif
)
reg->stack_pop_level = STACK_POP_LEVEL_ALL;
@@ -6077,6 +6440,9 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,
else
reg->stack_pop_level = STACK_POP_LEVEL_FREE;
}
+
+ r = ops_make_string_pool(reg);
+ if (r != 0) goto err;
}
#ifdef USE_CALL
else if (scan_env.num_call > 0) {
@@ -6090,6 +6456,11 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,
onig_print_compiled_byte_code_list(stderr, reg);
#endif
+#ifdef USE_DIRECT_THREADED_CODE
+ /* opcode -> opaddr */
+ onig_init_for_match_at(reg);
+#endif
+
end:
return r;
@@ -6159,13 +6530,12 @@ onig_reg_init(regex_t* reg, OnigOptionType option, OnigCaseFoldType case_fold_fl
(reg)->syntax = syntax;
(reg)->optimize = 0;
(reg)->exact = (UChar* )NULL;
- (reg)->int_map = (int* )NULL;
- (reg)->int_map_backward = (int* )NULL;
- REG_EXTPL(reg) = NULL;
+ (reg)->extp = (RegexExt* )NULL;
- (reg)->p = (UChar* )NULL;
- (reg)->alloc = 0;
- (reg)->used = 0;
+ (reg)->ops = (Operation* )NULL;
+ (reg)->ops_curr = (Operation* )NULL;
+ (reg)->ops_used = 0;
+ (reg)->ops_alloc = 0;
(reg)->name_table = (void* )NULL;
(reg)->case_fold_flag = case_fold_flag;
@@ -6316,11 +6686,11 @@ onig_is_code_in_cc_len(int elen, OnigCodePoint code, /* CClassNode* */ void* cc_
found = 0;
}
else {
- found = (onig_is_in_code_range(cc->mbuf->p, code) != 0 ? 1 : 0);
+ found = onig_is_in_code_range(cc->mbuf->p, code) != 0;
}
}
else {
- found = (BITSET_AT(cc->bs, code) == 0 ? 0 : 1);
+ found = BITSET_AT(cc->bs, code) != 0;
}
if (IS_NCCLASS_NOT(cc))
@@ -6339,6 +6709,7 @@ onig_is_code_in_cc(OnigEncoding enc, OnigCodePoint code, CClassNode* cc)
}
else {
len = ONIGENC_CODE_TO_MBCLEN(enc, code);
+ if (len < 0) return 0;
}
return onig_is_code_in_cc_len(len, code, cc);
}
@@ -6394,12 +6765,35 @@ print_indent_tree(FILE* f, Node* node, int indent)
break;
case NODE_STRING:
- fprintf(f, "<string%s:%p>", (NODE_STRING_IS_RAW(node) ? "-raw" : ""), node);
- for (p = STR_(node)->s; p < STR_(node)->end; p++) {
- if (*p >= 0x20 && *p < 0x7f)
- fputc(*p, f);
- else {
- fprintf(f, " 0x%02x", *p);
+ {
+ char* mode;
+ char* dont;
+ char* good;
+
+ if (NODE_STRING_IS_RAW(node))
+ mode = "-raw";
+ else if (NODE_STRING_IS_AMBIG(node))
+ mode = "-ambig";
+ else
+ mode = "";
+
+ if (NODE_STRING_IS_GOOD_AMBIG(node))
+ good = "-good";
+ else
+ good = "";
+
+ if (NODE_STRING_IS_DONT_GET_OPT_INFO(node))
+ dont = " (dont-opt)";
+ else
+ dont = "";
+
+ fprintf(f, "<string%s%s%s:%p>", mode, good, dont, node);
+ for (p = STR_(node)->s; p < STR_(node)->end; p++) {
+ if (*p >= 0x20 && *p < 0x7f)
+ fputc(*p, f);
+ else {
+ fprintf(f, " 0x%02x", *p);
+ }
}
}
break;
@@ -6443,36 +6837,36 @@ print_indent_tree(FILE* f, Node* node, int indent)
case NODE_ANCHOR:
fprintf(f, "<anchor:%p> ", node);
switch (ANCHOR_(node)->type) {
- case ANCHOR_BEGIN_BUF: fputs("begin buf", f); break;
- case ANCHOR_END_BUF: fputs("end buf", f); break;
- case ANCHOR_BEGIN_LINE: fputs("begin line", f); break;
- case ANCHOR_END_LINE: fputs("end line", f); break;
- case ANCHOR_SEMI_END_BUF: fputs("semi end buf", f); break;
- case ANCHOR_BEGIN_POSITION: fputs("begin position", f); break;
-
- case ANCHOR_WORD_BOUNDARY: fputs("word boundary", f); break;
- case ANCHOR_NO_WORD_BOUNDARY: fputs("not word boundary", f); break;
+ case ANCR_BEGIN_BUF: fputs("begin buf", f); break;
+ case ANCR_END_BUF: fputs("end buf", f); break;
+ case ANCR_BEGIN_LINE: fputs("begin line", f); break;
+ case ANCR_END_LINE: fputs("end line", f); break;
+ case ANCR_SEMI_END_BUF: fputs("semi end buf", f); break;
+ case ANCR_BEGIN_POSITION: fputs("begin position", f); break;
+
+ case ANCR_WORD_BOUNDARY: fputs("word boundary", f); break;
+ case ANCR_NO_WORD_BOUNDARY: fputs("not word boundary", f); break;
#ifdef USE_WORD_BEGIN_END
- case ANCHOR_WORD_BEGIN: fputs("word begin", f); break;
- case ANCHOR_WORD_END: fputs("word end", f); break;
+ case ANCR_WORD_BEGIN: fputs("word begin", f); break;
+ case ANCR_WORD_END: fputs("word end", f); break;
#endif
- case ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY:
- fputs("extended-grapheme-cluster boundary", f); break;
- case ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY:
- fputs("no-extended-grapheme-cluster boundary", f); break;
- case ANCHOR_PREC_READ:
+ case ANCR_TEXT_SEGMENT_BOUNDARY:
+ fputs("text-segment boundary", f); break;
+ case ANCR_NO_TEXT_SEGMENT_BOUNDARY:
+ fputs("no text-segment boundary", f); break;
+ case ANCR_PREC_READ:
fprintf(f, "prec read\n");
print_indent_tree(f, NODE_BODY(node), indent + add);
break;
- case ANCHOR_PREC_READ_NOT:
+ case ANCR_PREC_READ_NOT:
fprintf(f, "prec read not\n");
print_indent_tree(f, NODE_BODY(node), indent + add);
break;
- case ANCHOR_LOOK_BEHIND:
+ case ANCR_LOOK_BEHIND:
fprintf(f, "look behind\n");
print_indent_tree(f, NODE_BODY(node), indent + add);
break;
- case ANCHOR_LOOK_BEHIND_NOT:
+ case ANCR_LOOK_BEHIND_NOT:
fprintf(f, "look behind not\n");
print_indent_tree(f, NODE_BODY(node), indent + add);
break;
@@ -6513,20 +6907,20 @@ print_indent_tree(FILE* f, Node* node, int indent)
print_indent_tree(f, NODE_BODY(node), indent + add);
break;
- case NODE_ENCLOSURE:
- fprintf(f, "<enclosure:%p> ", node);
- switch (ENCLOSURE_(node)->type) {
- case ENCLOSURE_OPTION:
- fprintf(f, "option:%d", ENCLOSURE_(node)->o.options);
+ case NODE_BAG:
+ fprintf(f, "<bag:%p> ", node);
+ switch (BAG_(node)->type) {
+ case BAG_OPTION:
+ fprintf(f, "option:%d", BAG_(node)->o.options);
break;
- case ENCLOSURE_MEMORY:
- fprintf(f, "memory:%d", ENCLOSURE_(node)->m.regnum);
+ case BAG_MEMORY:
+ fprintf(f, "memory:%d", BAG_(node)->m.regnum);
break;
- case ENCLOSURE_STOP_BACKTRACK:
+ case BAG_STOP_BACKTRACK:
fprintf(f, "stop-bt");
break;
-
- default:
+ case BAG_IF_ELSE:
+ fprintf(f, "if-else");
break;
}
fprintf(f, "\n");
@@ -6539,9 +6933,6 @@ print_indent_tree(FILE* f, Node* node, int indent)
case GIMMICK_FAIL:
fprintf(f, "fail");
break;
- case GIMMICK_KEEP:
- fprintf(f, "keep:%d", GIMMICK_(node)->id);
- break;
case GIMMICK_SAVE:
fprintf(f, "save:%d:%d", GIMMICK_(node)->detail_type, GIMMICK_(node)->id);
break;
@@ -6568,7 +6959,7 @@ print_indent_tree(FILE* f, Node* node, int indent)
}
if (type != NODE_LIST && type != NODE_ALT && type != NODE_QUANT &&
- type != NODE_ENCLOSURE)
+ type != NODE_BAG)
fprintf(f, "\n");
fflush(f);
}
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regenc.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regenc.c
index 90547d359e..079cd01f29 100644
--- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regenc.c
+++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regenc.c
@@ -2,7 +2,7 @@
regenc.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2019 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -77,6 +77,17 @@ enc_is_inited(OnigEncoding enc)
return 0;
}
+static int OnigEncInited;
+
+extern int
+onigenc_init(void)
+{
+ if (OnigEncInited != 0) return 0;
+
+ OnigEncInited = 1;
+ return 0;
+}
+
extern int
onigenc_end(void)
{
@@ -86,15 +97,10 @@ onigenc_end(void)
InitedList[i].enc = 0;
InitedList[i].inited = 0;
}
-
InitedListNum = 0;
- return ONIG_NORMAL;
-}
-extern int
-onigenc_init(void)
-{
- return 0;
+ OnigEncInited = 0;
+ return ONIG_NORMAL;
}
extern int
@@ -167,7 +173,7 @@ onigenc_get_right_adjust_char_head(OnigEncoding enc, const UChar* start, const U
extern UChar*
onigenc_get_right_adjust_char_head_with_prev(OnigEncoding enc,
- const UChar* start, const UChar* s, const UChar** prev)
+ const UChar* start, const UChar* s, const UChar** prev)
{
UChar* p = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s);
@@ -231,7 +237,7 @@ onigenc_strlen(OnigEncoding enc, const UChar* p, const UChar* end)
{
int n = 0;
UChar* q = (UChar* )p;
-
+
while (q < end) {
q += ONIGENC_MBC_ENC_LEN(enc, q);
n++;
@@ -244,7 +250,7 @@ onigenc_strlen_null(OnigEncoding enc, const UChar* s)
{
int n = 0;
UChar* p = (UChar* )s;
-
+
while (1) {
if (*p == '\0') {
UChar* q;
@@ -511,7 +517,7 @@ const OnigPairCaseFoldCodes OnigAsciiLowerMap[] = {
extern int
onigenc_ascii_apply_all_case_fold(OnigCaseFoldType flag ARG_UNUSED,
- OnigApplyAllCaseFoldFunc f, void* arg)
+ OnigApplyAllCaseFoldFunc f, void* arg)
{
OnigCodePoint code;
int i, r;
@@ -533,8 +539,8 @@ onigenc_ascii_apply_all_case_fold(OnigCaseFoldType flag ARG_UNUSED,
extern int
onigenc_ascii_get_case_fold_codes_by_str(OnigCaseFoldType flag ARG_UNUSED,
- const OnigUChar* p, const OnigUChar* end ARG_UNUSED,
- OnigCaseFoldCodeItem items[])
+ const OnigUChar* p, const OnigUChar* end ARG_UNUSED,
+ OnigCaseFoldCodeItem items[])
{
if (0x41 <= *p && *p <= 0x5a) {
items[0].byte_len = 1;
@@ -554,7 +560,7 @@ onigenc_ascii_get_case_fold_codes_by_str(OnigCaseFoldType flag ARG_UNUSED,
static int
ss_apply_all_case_fold(OnigCaseFoldType flag ARG_UNUSED,
- OnigApplyAllCaseFoldFunc f, void* arg)
+ OnigApplyAllCaseFoldFunc f, void* arg)
{
static OnigCodePoint ss[] = { 0x73, 0x73 };
@@ -600,7 +606,7 @@ onigenc_get_case_fold_codes_by_str_with_map(int map_size,
items[0].code_len = 1;
items[0].code[0] = (OnigCodePoint )(*p + 0x20);
if (*p == 0x53 && ess_tsett_flag != 0 && end > p + 1
- && (*(p+1) == 0x53 || *(p+1) == 0x73)) {
+ && (*(p+1) == 0x53 || *(p+1) == 0x73)) {
/* SS */
items[1].byte_len = 2;
items[1].code_len = 1;
@@ -615,7 +621,7 @@ onigenc_get_case_fold_codes_by_str_with_map(int map_size,
items[0].code_len = 1;
items[0].code[0] = (OnigCodePoint )(*p - 0x20);
if (*p == 0x73 && ess_tsett_flag != 0 && end > p + 1
- && (*(p+1) == 0x73 || *(p+1) == 0x53)) {
+ && (*(p+1) == 0x73 || *(p+1) == 0x53)) {
/* ss */
items[1].byte_len = 2;
items[1].code_len = 1;
@@ -653,16 +659,16 @@ onigenc_get_case_fold_codes_by_str_with_map(int map_size,
for (i = 0; i < map_size; i++) {
if (*p == map[i].from) {
- items[0].byte_len = 1;
- items[0].code_len = 1;
- items[0].code[0] = map[i].to;
- return 1;
+ items[0].byte_len = 1;
+ items[0].code_len = 1;
+ items[0].code[0] = map[i].to;
+ return 1;
}
else if (*p == map[i].to) {
- items[0].byte_len = 1;
- items[0].code_len = 1;
- items[0].code[0] = map[i].from;
- return 1;
+ items[0].byte_len = 1;
+ items[0].code_len = 1;
+ items[0].code[0] = map[i].from;
+ return 1;
}
}
}
@@ -673,8 +679,8 @@ onigenc_get_case_fold_codes_by_str_with_map(int map_size,
extern int
onigenc_not_support_get_ctype_code_range(OnigCtype ctype ARG_UNUSED,
- OnigCodePoint* sb_out ARG_UNUSED,
- const OnigCodePoint* ranges[] ARG_UNUSED)
+ OnigCodePoint* sb_out ARG_UNUSED,
+ const OnigCodePoint* ranges[] ARG_UNUSED)
{
return ONIG_NO_SUPPORT_CONFIG;
}
@@ -691,7 +697,7 @@ onigenc_is_mbc_newline_0x0a(const UChar* p, const UChar* end)
/* for single byte encodings */
extern int
onigenc_ascii_mbc_case_fold(OnigCaseFoldType flag ARG_UNUSED, const UChar** p,
- const UChar*end ARG_UNUSED, UChar* lower)
+ const UChar*end ARG_UNUSED, UChar* lower)
{
*lower = ONIGENC_ASCII_CODE_TO_LOWER_CASE(**p);
@@ -702,7 +708,7 @@ onigenc_ascii_mbc_case_fold(OnigCaseFoldType flag ARG_UNUSED, const UChar** p,
#if 0
extern int
onigenc_ascii_is_mbc_ambiguous(OnigCaseFoldType flag,
- const UChar** pp, const UChar* end)
+ const UChar** pp, const UChar* end)
{
const UChar* p = *pp;
@@ -738,35 +744,35 @@ onigenc_single_byte_code_to_mbc(OnigCodePoint code, UChar *buf)
extern UChar*
onigenc_single_byte_left_adjust_char_head(const UChar* start ARG_UNUSED,
- const UChar* s)
+ const UChar* s)
{
return (UChar* )s;
}
extern int
onigenc_always_true_is_allowed_reverse_match(const UChar* s ARG_UNUSED,
- const UChar* end ARG_UNUSED)
+ const UChar* end ARG_UNUSED)
{
return TRUE;
}
extern int
onigenc_always_false_is_allowed_reverse_match(const UChar* s ARG_UNUSED,
- const UChar* end ARG_UNUSED)
+ const UChar* end ARG_UNUSED)
{
return FALSE;
}
extern int
onigenc_always_true_is_valid_mbc_string(const UChar* s ARG_UNUSED,
- const UChar* end ARG_UNUSED)
+ const UChar* end ARG_UNUSED)
{
return TRUE;
}
extern int
onigenc_length_check_is_valid_mbc_string(OnigEncoding enc,
- const UChar* p, const UChar* end)
+ const UChar* p, const UChar* end)
{
while (p < end) {
p += enclen(enc, p);
@@ -805,7 +811,7 @@ onigenc_mbn_mbc_to_code(OnigEncoding enc, const UChar* p, const UChar* end)
extern int
onigenc_mbn_mbc_case_fold(OnigEncoding enc, OnigCaseFoldType flag ARG_UNUSED,
const UChar** pp, const UChar* end ARG_UNUSED,
- UChar* lower)
+ UChar* lower)
{
int len;
const UChar *p = *pp;
@@ -847,6 +853,8 @@ onigenc_mbn_is_mbc_ambiguous(OnigEncoding enc, OnigCaseFoldType flag,
extern int
onigenc_mb2_code_to_mbclen(OnigCodePoint code)
{
+ if ((code & (~0xffff)) != 0) return ONIGERR_INVALID_CODE_POINT_VALUE;
+
if ((code & 0xff00) != 0) return 2;
else return 1;
}
@@ -946,7 +954,7 @@ onigenc_is_mbc_word_ascii(OnigEncoding enc, UChar* s, const UChar* end)
extern int
onigenc_mb2_is_code_ctype(OnigEncoding enc, OnigCodePoint code,
- unsigned int ctype)
+ unsigned int ctype)
{
if (code < 128)
return ONIGENC_IS_ASCII_CODE_CTYPE(code, ctype);
@@ -961,7 +969,7 @@ onigenc_mb2_is_code_ctype(OnigEncoding enc, OnigCodePoint code,
extern int
onigenc_mb4_is_code_ctype(OnigEncoding enc, OnigCodePoint code,
- unsigned int ctype)
+ unsigned int ctype)
{
if (code < 128)
return ONIGENC_IS_ASCII_CODE_CTYPE(code, ctype);
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regerror.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regerror.c
index d92b61e229..0dca34a8ad 100644
--- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regerror.c
+++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regerror.c
@@ -2,7 +2,7 @@
regerror.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2019 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -31,13 +31,7 @@
#if 0
#include <stdio.h> /* for vsnprintf() */
-#ifdef HAVE_STDARG_PROTOTYPES
#include <stdarg.h>
-#define va_init_list(a,b) va_start(a,b)
-#else
-#include <varargs.h>
-#define va_init_list(a,b) va_start(a)
-#endif
#endif
extern UChar*
@@ -213,13 +207,17 @@ static void sprint_byte_with_x(char* s, unsigned int v)
}
static int to_ascii(OnigEncoding enc, UChar *s, UChar *end,
- UChar buf[], int buf_size, int *is_over)
+ UChar buf[], int buf_size, int *is_over)
{
int len;
UChar *p;
OnigCodePoint code;
- if (ONIGENC_MBC_MINLEN(enc) > 1) {
+ if (!s) {
+ len = 0;
+ *is_over = 0;
+ }
+ else if (ONIGENC_MBC_MINLEN(enc) > 1) {
p = s;
len = 0;
while (p < end) {
@@ -249,7 +247,7 @@ static int to_ascii(OnigEncoding enc, UChar *s, UChar *end,
if (len >= buf_size) break;
}
- *is_over = ((p < end) ? 1 : 0);
+ *is_over = p < end;
}
else {
len = MIN((int )(end - s), buf_size);
@@ -261,19 +259,27 @@ static int to_ascii(OnigEncoding enc, UChar *s, UChar *end,
}
+extern int
+onig_is_error_code_needs_param(int code)
+{
+ switch (code) {
+ case ONIGERR_UNDEFINED_NAME_REFERENCE:
+ case ONIGERR_UNDEFINED_GROUP_REFERENCE:
+ case ONIGERR_MULTIPLEX_DEFINED_NAME:
+ case ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL:
+ case ONIGERR_INVALID_GROUP_NAME:
+ case ONIGERR_INVALID_CHAR_IN_GROUP_NAME:
+ case ONIGERR_INVALID_CHAR_PROPERTY_NAME:
+ return 1;
+ default:
+ return 0;
+ }
+}
+
/* for ONIG_MAX_ERROR_MESSAGE_LEN */
#define MAX_ERROR_PAR_LEN 30
-extern int
-EFIAPI
-#ifdef HAVE_STDARG_PROTOTYPES
-onig_error_code_to_str(UChar* s, int code, ...)
-#else
-onig_error_code_to_str(s, code, va_alist)
- UChar* s;
- int code;
- va_dcl
-#endif
+extern int EFIAPI onig_error_code_to_str(UChar* s, int code, ...)
{
UChar *p, *q;
OnigErrorInfo* einfo;
@@ -333,21 +339,8 @@ onig_error_code_to_str(s, code, va_alist)
}
-void
-EFIAPI
-#ifdef HAVE_STDARG_PROTOTYPES
-onig_snprintf_with_pattern(UChar buf[], int bufsize, OnigEncoding enc,
- UChar* pat, UChar* pat_end, const UChar *fmt, ...)
-#else
-onig_snprintf_with_pattern(buf, bufsize, enc, pat, pat_end, fmt, va_alist)
- UChar buf[];
- int bufsize;
- OnigEncoding enc;
- UChar* pat;
- UChar* pat_end;
- const UChar *fmt;
- va_dcl
-#endif
+void EFIAPI onig_snprintf_with_pattern(UChar buf[], int bufsize, OnigEncoding enc,
+ UChar* pat, UChar* pat_end, const UChar *fmt, ...)
{
int n, need, len;
UChar *p, *s, *bp;
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regexec.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regexec.c
index 6a55045d64..5ce859b39b 100644
--- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regexec.c
+++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regexec.c
@@ -2,7 +2,7 @@
regexec.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2019 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -112,7 +112,6 @@ onig_set_callout_user_data_of_match_param(OnigMatchParam* param, void* user_data
}
-
typedef struct {
void* stack_p;
int stack_n;
@@ -134,120 +133,118 @@ typedef struct {
/* arguments type */
typedef enum {
- ARG_SPECIAL = -1,
- ARG_NON = 0,
- ARG_RELADDR = 1,
- ARG_ABSADDR = 2,
- ARG_LENGTH = 3,
- ARG_MEMNUM = 4,
- ARG_OPTION = 5,
- ARG_MODE = 6
+ ARG_SPECIAL = -1,
+ ARG_NON = 0,
+ ARG_RELADDR = 1,
+ ARG_ABSADDR = 2,
+ ARG_LENGTH = 3,
+ ARG_MEMNUM = 4,
+ ARG_OPTION = 5,
+ ARG_MODE = 6
} OpArgType;
typedef struct {
short int opcode;
char* name;
- OpArgType arg_type;
} OpInfoType;
static OpInfoType OpInfo[] = {
- { OP_FINISH, "finish", ARG_NON },
- { OP_END, "end", ARG_NON },
- { OP_EXACT1, "exact1", ARG_SPECIAL },
- { OP_EXACT2, "exact2", ARG_SPECIAL },
- { OP_EXACT3, "exact3", ARG_SPECIAL },
- { OP_EXACT4, "exact4", ARG_SPECIAL },
- { OP_EXACT5, "exact5", ARG_SPECIAL },
- { OP_EXACTN, "exactn", ARG_SPECIAL },
- { OP_EXACTMB2N1, "exactmb2-n1", ARG_SPECIAL },
- { OP_EXACTMB2N2, "exactmb2-n2", ARG_SPECIAL },
- { OP_EXACTMB2N3, "exactmb2-n3", ARG_SPECIAL },
- { OP_EXACTMB2N, "exactmb2-n", ARG_SPECIAL },
- { OP_EXACTMB3N, "exactmb3n" , ARG_SPECIAL },
- { OP_EXACTMBN, "exactmbn", ARG_SPECIAL },
- { OP_EXACT1_IC, "exact1-ic", ARG_SPECIAL },
- { OP_EXACTN_IC, "exactn-ic", ARG_SPECIAL },
- { OP_CCLASS, "cclass", ARG_SPECIAL },
- { OP_CCLASS_MB, "cclass-mb", ARG_SPECIAL },
- { OP_CCLASS_MIX, "cclass-mix", ARG_SPECIAL },
- { OP_CCLASS_NOT, "cclass-not", ARG_SPECIAL },
- { OP_CCLASS_MB_NOT, "cclass-mb-not", ARG_SPECIAL },
- { OP_CCLASS_MIX_NOT, "cclass-mix-not", ARG_SPECIAL },
-#ifdef USE_OP_CCLASS_NODE
- { OP_CCLASS_NODE, "cclass-node", ARG_SPECIAL },
+ { OP_FINISH, "finish" },
+ { OP_END, "end" },
+ { OP_EXACT1, "exact1" },
+ { OP_EXACT2, "exact2" },
+ { OP_EXACT3, "exact3" },
+ { OP_EXACT4, "exact4" },
+ { OP_EXACT5, "exact5" },
+ { OP_EXACTN, "exactn" },
+ { OP_EXACTMB2N1, "exactmb2-n1" },
+ { OP_EXACTMB2N2, "exactmb2-n2" },
+ { OP_EXACTMB2N3, "exactmb2-n3" },
+ { OP_EXACTMB2N, "exactmb2-n" },
+ { OP_EXACTMB3N, "exactmb3n" },
+ { OP_EXACTMBN, "exactmbn" },
+ { OP_EXACT1_IC, "exact1-ic" },
+ { OP_EXACTN_IC, "exactn-ic" },
+ { OP_CCLASS, "cclass" },
+ { OP_CCLASS_MB, "cclass-mb" },
+ { OP_CCLASS_MIX, "cclass-mix" },
+ { OP_CCLASS_NOT, "cclass-not" },
+ { OP_CCLASS_MB_NOT, "cclass-mb-not" },
+ { OP_CCLASS_MIX_NOT, "cclass-mix-not" },
+ { OP_ANYCHAR, "anychar" },
+ { OP_ANYCHAR_ML, "anychar-ml" },
+ { OP_ANYCHAR_STAR, "anychar*" },
+ { OP_ANYCHAR_ML_STAR, "anychar-ml*" },
+ { OP_ANYCHAR_STAR_PEEK_NEXT, "anychar*-peek-next" },
+ { OP_ANYCHAR_ML_STAR_PEEK_NEXT, "anychar-ml*-peek-next" },
+ { OP_WORD, "word" },
+ { OP_WORD_ASCII, "word-ascii" },
+ { OP_NO_WORD, "not-word" },
+ { OP_NO_WORD_ASCII, "not-word-ascii" },
+ { OP_WORD_BOUNDARY, "word-boundary" },
+ { OP_NO_WORD_BOUNDARY, "not-word-boundary" },
+ { OP_WORD_BEGIN, "word-begin" },
+ { OP_WORD_END, "word-end" },
+ { OP_TEXT_SEGMENT_BOUNDARY, "text-segment-boundary" },
+ { OP_BEGIN_BUF, "begin-buf" },
+ { OP_END_BUF, "end-buf" },
+ { OP_BEGIN_LINE, "begin-line" },
+ { OP_END_LINE, "end-line" },
+ { OP_SEMI_END_BUF, "semi-end-buf" },
+ { OP_BEGIN_POSITION, "begin-position" },
+ { OP_BACKREF1, "backref1" },
+ { OP_BACKREF2, "backref2" },
+ { OP_BACKREF_N, "backref-n" },
+ { OP_BACKREF_N_IC, "backref-n-ic" },
+ { OP_BACKREF_MULTI, "backref_multi" },
+ { OP_BACKREF_MULTI_IC, "backref_multi-ic" },
+ { OP_BACKREF_WITH_LEVEL, "backref_with_level" },
+ { OP_BACKREF_WITH_LEVEL_IC, "backref_with_level-c" },
+ { OP_BACKREF_CHECK, "backref_check" },
+ { OP_BACKREF_CHECK_WITH_LEVEL, "backref_check_with_level" },
+ { OP_MEMORY_START_PUSH, "mem-start-push" },
+ { OP_MEMORY_START, "mem-start" },
+ { OP_MEMORY_END_PUSH, "mem-end-push" },
+ { OP_MEMORY_END_PUSH_REC, "mem-end-push-rec" },
+ { OP_MEMORY_END, "mem-end" },
+ { OP_MEMORY_END_REC, "mem-end-rec" },
+ { OP_FAIL, "fail" },
+ { OP_JUMP, "jump" },
+ { OP_PUSH, "push" },
+ { OP_PUSH_SUPER, "push-super" },
+ { OP_POP_OUT, "pop-out" },
+#ifdef USE_OP_PUSH_OR_JUMP_EXACT
+ { OP_PUSH_OR_JUMP_EXACT1, "push-or-jump-e1" },
#endif
- { OP_ANYCHAR, "anychar", ARG_NON },
- { OP_ANYCHAR_ML, "anychar-ml", ARG_NON },
- { OP_ANYCHAR_STAR, "anychar*", ARG_NON },
- { OP_ANYCHAR_ML_STAR, "anychar-ml*", ARG_NON },
- { OP_ANYCHAR_STAR_PEEK_NEXT, "anychar*-peek-next", ARG_SPECIAL },
- { OP_ANYCHAR_ML_STAR_PEEK_NEXT, "anychar-ml*-peek-next", ARG_SPECIAL },
- { OP_WORD, "word", ARG_NON },
- { OP_WORD_ASCII, "word-ascii", ARG_NON },
- { OP_NO_WORD, "not-word", ARG_NON },
- { OP_NO_WORD_ASCII, "not-word-ascii", ARG_NON },
- { OP_WORD_BOUNDARY, "word-boundary", ARG_MODE },
- { OP_NO_WORD_BOUNDARY, "not-word-boundary", ARG_MODE },
- { OP_WORD_BEGIN, "word-begin", ARG_MODE },
- { OP_WORD_END, "word-end", ARG_MODE },
- { OP_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY, "extended-grapheme-cluster-boundary", ARG_NON },
- { OP_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY, "no-extended-grapheme-cluster-boundary", ARG_NON },
- { OP_BEGIN_BUF, "begin-buf", ARG_NON },
- { OP_END_BUF, "end-buf", ARG_NON },
- { OP_BEGIN_LINE, "begin-line", ARG_NON },
- { OP_END_LINE, "end-line", ARG_NON },
- { OP_SEMI_END_BUF, "semi-end-buf", ARG_NON },
- { OP_BEGIN_POSITION, "begin-position", ARG_NON },
- { OP_BACKREF1, "backref1", ARG_NON },
- { OP_BACKREF2, "backref2", ARG_NON },
- { OP_BACKREF_N, "backref-n", ARG_MEMNUM },
- { OP_BACKREF_N_IC, "backref-n-ic", ARG_SPECIAL },
- { OP_BACKREF_MULTI, "backref_multi", ARG_SPECIAL },
- { OP_BACKREF_MULTI_IC, "backref_multi-ic", ARG_SPECIAL },
- { OP_BACKREF_WITH_LEVEL, "backref_with_level", ARG_SPECIAL },
- { OP_BACKREF_CHECK, "backref_check", ARG_SPECIAL },
- { OP_BACKREF_CHECK_WITH_LEVEL, "backref_check_with_level", ARG_SPECIAL },
- { OP_MEMORY_START_PUSH, "mem-start-push", ARG_MEMNUM },
- { OP_MEMORY_START, "mem-start", ARG_MEMNUM },
- { OP_MEMORY_END_PUSH, "mem-end-push", ARG_MEMNUM },
- { OP_MEMORY_END_PUSH_REC, "mem-end-push-rec", ARG_MEMNUM },
- { OP_MEMORY_END, "mem-end", ARG_MEMNUM },
- { OP_MEMORY_END_REC, "mem-end-rec", ARG_MEMNUM },
- { OP_FAIL, "fail", ARG_NON },
- { OP_JUMP, "jump", ARG_RELADDR },
- { OP_PUSH, "push", ARG_RELADDR },
- { OP_PUSH_SUPER, "push-super", ARG_RELADDR },
- { OP_POP_OUT, "pop-out", ARG_NON },
- { OP_PUSH_OR_JUMP_EXACT1, "push-or-jump-e1", ARG_SPECIAL },
- { OP_PUSH_IF_PEEK_NEXT, "push-if-peek-next", ARG_SPECIAL },
- { OP_REPEAT, "repeat", ARG_SPECIAL },
- { OP_REPEAT_NG, "repeat-ng", ARG_SPECIAL },
- { OP_REPEAT_INC, "repeat-inc", ARG_MEMNUM },
- { OP_REPEAT_INC_NG, "repeat-inc-ng", ARG_MEMNUM },
- { OP_REPEAT_INC_SG, "repeat-inc-sg", ARG_MEMNUM },
- { OP_REPEAT_INC_NG_SG, "repeat-inc-ng-sg", ARG_MEMNUM },
- { OP_EMPTY_CHECK_START, "empty-check-start", ARG_MEMNUM },
- { OP_EMPTY_CHECK_END, "empty-check-end", ARG_MEMNUM },
- { OP_EMPTY_CHECK_END_MEMST,"empty-check-end-memst", ARG_MEMNUM },
- { OP_EMPTY_CHECK_END_MEMST_PUSH,"empty-check-end-memst-push", ARG_MEMNUM },
- { OP_PREC_READ_START, "push-pos", ARG_NON },
- { OP_PREC_READ_END, "pop-pos", ARG_NON },
- { OP_PREC_READ_NOT_START, "prec-read-not-start", ARG_RELADDR },
- { OP_PREC_READ_NOT_END, "prec-read-not-end", ARG_NON },
- { OP_ATOMIC_START, "atomic-start", ARG_NON },
- { OP_ATOMIC_END, "atomic-end", ARG_NON },
- { OP_LOOK_BEHIND, "look-behind", ARG_SPECIAL },
- { OP_LOOK_BEHIND_NOT_START, "look-behind-not-start", ARG_SPECIAL },
- { OP_LOOK_BEHIND_NOT_END, "look-behind-not-end", ARG_NON },
- { OP_CALL, "call", ARG_ABSADDR },
- { OP_RETURN, "return", ARG_NON },
- { OP_PUSH_SAVE_VAL, "push-save-val", ARG_SPECIAL },
- { OP_UPDATE_VAR, "update-var", ARG_SPECIAL },
+ { OP_PUSH_IF_PEEK_NEXT, "push-if-peek-next" },
+ { OP_REPEAT, "repeat" },
+ { OP_REPEAT_NG, "repeat-ng" },
+ { OP_REPEAT_INC, "repeat-inc" },
+ { OP_REPEAT_INC_NG, "repeat-inc-ng" },
+ { OP_REPEAT_INC_SG, "repeat-inc-sg" },
+ { OP_REPEAT_INC_NG_SG, "repeat-inc-ng-sg" },
+ { OP_EMPTY_CHECK_START, "empty-check-start" },
+ { OP_EMPTY_CHECK_END, "empty-check-end" },
+ { OP_EMPTY_CHECK_END_MEMST, "empty-check-end-memst" },
+ { OP_EMPTY_CHECK_END_MEMST_PUSH,"empty-check-end-memst-push" },
+ { OP_PREC_READ_START, "push-pos" },
+ { OP_PREC_READ_END, "pop-pos" },
+ { OP_PREC_READ_NOT_START, "prec-read-not-start" },
+ { OP_PREC_READ_NOT_END, "prec-read-not-end" },
+ { OP_ATOMIC_START, "atomic-start" },
+ { OP_ATOMIC_END, "atomic-end" },
+ { OP_LOOK_BEHIND, "look-behind" },
+ { OP_LOOK_BEHIND_NOT_START, "look-behind-not-start" },
+ { OP_LOOK_BEHIND_NOT_END, "look-behind-not-end" },
+ { OP_CALL, "call" },
+ { OP_RETURN, "return" },
+ { OP_PUSH_SAVE_VAL, "push-save-val" },
+ { OP_UPDATE_VAR, "update-var" },
#ifdef USE_CALLOUT
- { OP_CALLOUT_CONTENTS, "callout-contents", ARG_SPECIAL },
- { OP_CALLOUT_NAME, "callout-name", ARG_SPECIAL },
+ { OP_CALLOUT_CONTENTS, "callout-contents" },
+ { OP_CALLOUT_NAME, "callout-name" },
#endif
- { -1, "", ARG_NON }
+ { -1, "" }
};
static char*
@@ -256,22 +253,10 @@ op2name(int opcode)
int i;
for (i = 0; OpInfo[i].opcode >= 0; i++) {
- if (opcode == OpInfo[i].opcode)
- return OpInfo[i].name;
+ if (opcode == OpInfo[i].opcode) return OpInfo[i].name;
}
- return "";
-}
-
-static int
-op2arg_type(int opcode)
-{
- int i;
- for (i = 0; OpInfo[i].opcode >= 0; i++) {
- if (opcode == OpInfo[i].opcode)
- return OpInfo[i].arg_type;
- }
- return ARG_SPECIAL;
+ return "";
}
static void
@@ -291,7 +276,7 @@ p_len_string(FILE* f, LengthType len, int mb_len, UChar* s)
}
static void
-p_rel_addr(FILE* f, RelAddrType rel_addr, UChar* p, UChar* start)
+p_rel_addr(FILE* f, RelAddrType rel_addr, Operation* p, Operation* start)
{
RelAddrType curr = (RelAddrType )(p - start);
@@ -307,288 +292,328 @@ bitset_on_num(BitSetRef bs)
for (i = 0; i < SINGLE_BYTE_SIZE; i++) {
if (BITSET_AT(bs, i)) n++;
}
+
return n;
}
-extern void
-onig_print_compiled_byte_code(FILE* f, UChar* bp, UChar** nextp, UChar* start,
- OnigEncoding enc)
+static void
+print_compiled_byte_code(FILE* f, regex_t* reg, int index,
+ Operation* start, OnigEncoding enc)
{
int i, n;
- OpArgType arg_type;
RelAddrType addr;
LengthType len;
MemNumType mem;
- OnigCodePoint code;
- OnigOptionType option;
+ OnigCodePoint code;
ModeType mode;
UChar *q;
+ Operation* p;
+ enum OpCode opcode;
- fprintf(f, "%s", op2name(*bp));
- arg_type = op2arg_type(*bp);
- if (arg_type != ARG_SPECIAL) {
- bp++;
- switch (arg_type) {
- case ARG_NON:
- break;
- case ARG_RELADDR:
- GET_RELADDR_INC(addr, bp);
- fputc(':', f);
- p_rel_addr(f, addr, bp, start);
- break;
- case ARG_ABSADDR:
- GET_ABSADDR_INC(addr, bp);
- fprintf(f, ":{/%d}", addr);
- break;
- case ARG_LENGTH:
- GET_LENGTH_INC(len, bp);
- fprintf(f, ":%d", len);
- break;
- case ARG_MEMNUM:
- mem = *((MemNumType* )bp);
- bp += SIZE_MEMNUM;
- fprintf(f, ":%d", mem);
- break;
- case ARG_OPTION:
- {
- OnigOptionType option = *((OnigOptionType* )bp);
- bp += SIZE_OPTION;
- fprintf(f, ":%d", option);
- }
- break;
- case ARG_MODE:
- mode = *((ModeType* )bp);
- bp += SIZE_MODE;
- fprintf(f, ":%d", mode);
- break;
- default:
- break;
- }
- }
- else {
- switch (*bp++) {
- case OP_EXACT1:
- case OP_ANYCHAR_STAR_PEEK_NEXT:
- case OP_ANYCHAR_ML_STAR_PEEK_NEXT:
- p_string(f, 1, bp++); break;
- case OP_EXACT2:
- p_string(f, 2, bp); bp += 2; break;
- case OP_EXACT3:
- p_string(f, 3, bp); bp += 3; break;
- case OP_EXACT4:
- p_string(f, 4, bp); bp += 4; break;
- case OP_EXACT5:
- p_string(f, 5, bp); bp += 5; break;
- case OP_EXACTN:
- GET_LENGTH_INC(len, bp);
- p_len_string(f, len, 1, bp);
- bp += len;
- break;
-
- case OP_EXACTMB2N1:
- p_string(f, 2, bp); bp += 2; break;
- case OP_EXACTMB2N2:
- p_string(f, 4, bp); bp += 4; break;
- case OP_EXACTMB2N3:
- p_string(f, 6, bp); bp += 6; break;
- case OP_EXACTMB2N:
- GET_LENGTH_INC(len, bp);
- p_len_string(f, len, 2, bp);
- bp += len * 2;
- break;
- case OP_EXACTMB3N:
- GET_LENGTH_INC(len, bp);
- p_len_string(f, len, 3, bp);
- bp += len * 3;
- break;
- case OP_EXACTMBN:
- {
- int mb_len;
-
- GET_LENGTH_INC(mb_len, bp);
- GET_LENGTH_INC(len, bp);
- fprintf(f, ":%d:%d:", mb_len, len);
- n = len * mb_len;
- while (n-- > 0) { fputc(*bp++, f); }
- }
- break;
+ p = reg->ops + index;
- case OP_EXACT1_IC:
- len = enclen(enc, bp);
- p_string(f, len, bp);
- bp += len;
- break;
- case OP_EXACTN_IC:
- GET_LENGTH_INC(len, bp);
- p_len_string(f, len, 1, bp);
- bp += len;
- break;
+#ifdef USE_DIRECT_THREADED_CODE
+ opcode = reg->ocs[index];
+#else
+ opcode = p->opcode;
+#endif
- case OP_CCLASS:
- n = bitset_on_num((BitSetRef )bp);
- bp += SIZE_BITSET;
- fprintf(f, ":%d", n);
- break;
+ fprintf(f, "%s", op2name(opcode));
+ switch (opcode) {
+ case OP_EXACT1:
+ p_string(f, 1, p->exact.s); break;
+ case OP_EXACT2:
+ p_string(f, 2, p->exact.s); break;
+ case OP_EXACT3:
+ p_string(f, 3, p->exact.s); break;
+ case OP_EXACT4:
+ p_string(f, 4, p->exact.s); break;
+ case OP_EXACT5:
+ p_string(f, 5, p->exact.s); break;
+ case OP_EXACTN:
+ len = p->exact_n.n;
+ p_string(f, len, p->exact_n.s); break;
+ case OP_EXACTMB2N1:
+ p_string(f, 2, p->exact.s); break;
+ case OP_EXACTMB2N2:
+ p_string(f, 4, p->exact.s); break;
+ case OP_EXACTMB2N3:
+ p_string(f, 3, p->exact.s); break;
+ case OP_EXACTMB2N:
+ len = p->exact_n.n;
+ p_len_string(f, len, 2, p->exact_n.s); break;
+ case OP_EXACTMB3N:
+ len = p->exact_n.n;
+ p_len_string(f, len, 3, p->exact_n.s); break;
+ case OP_EXACTMBN:
+ {
+ int mb_len;
+
+ mb_len = p->exact_len_n.len;
+ len = p->exact_len_n.n;
+ q = p->exact_len_n.s;
+ fprintf(f, ":%d:%d:", mb_len, len);
+ n = len * mb_len;
+ while (n-- > 0) { fputc(*q++, f); }
+ }
+ break;
+ case OP_EXACT1_IC:
+ len = enclen(enc, p->exact.s);
+ p_string(f, len, p->exact.s);
+ break;
+ case OP_EXACTN_IC:
+ len = p->exact_n.n;
+ p_len_string(f, len, 1, p->exact_n.s);
+ break;
- case OP_CCLASS_NOT:
- n = bitset_on_num((BitSetRef )bp);
- bp += SIZE_BITSET;
- fprintf(f, ":%d", n);
- break;
+ case OP_CCLASS:
+ case OP_CCLASS_NOT:
+ n = bitset_on_num(p->cclass.bsp);
+ fprintf(f, ":%d", n);
+ break;
+ case OP_CCLASS_MB:
+ case OP_CCLASS_MB_NOT:
+ {
+ OnigCodePoint ncode;
+ OnigCodePoint* codes;
+
+ codes = (OnigCodePoint* )p->cclass_mb.mb;
+ GET_CODE_POINT(ncode, codes);
+ codes++;
+ GET_CODE_POINT(code, codes);
+ fprintf(f, ":%u:%u", code, ncode);
+ }
+ break;
+ case OP_CCLASS_MIX:
+ case OP_CCLASS_MIX_NOT:
+ {
+ OnigCodePoint ncode;
+ OnigCodePoint* codes;
- case OP_CCLASS_MB:
- case OP_CCLASS_MB_NOT:
- GET_LENGTH_INC(len, bp);
- q = bp;
-#ifndef PLATFORM_UNALIGNED_WORD_ACCESS
- ALIGNMENT_RIGHT(q);
-#endif
- GET_CODE_POINT(code, q);
- bp += len;
- fprintf(f, ":%d:%d", (int )code, len);
- break;
+ codes = (OnigCodePoint* )p->cclass_mix.mb;
+ n = bitset_on_num(p->cclass_mix.bsp);
- case OP_CCLASS_MIX:
- case OP_CCLASS_MIX_NOT:
- n = bitset_on_num((BitSetRef )bp);
- bp += SIZE_BITSET;
- GET_LENGTH_INC(len, bp);
- q = bp;
-#ifndef PLATFORM_UNALIGNED_WORD_ACCESS
- ALIGNMENT_RIGHT(q);
-#endif
- GET_CODE_POINT(code, q);
- bp += len;
- fprintf(f, ":%d:%d:%d", n, (int )code, len);
- break;
+ GET_CODE_POINT(ncode, codes);
+ codes++;
+ GET_CODE_POINT(code, codes);
+ fprintf(f, ":%d:%u:%u", n, code, ncode);
+ }
+ break;
-#ifdef USE_OP_CCLASS_NODE
- case OP_CCLASS_NODE:
- {
- CClassNode *cc;
+ case OP_ANYCHAR_STAR_PEEK_NEXT:
+ case OP_ANYCHAR_ML_STAR_PEEK_NEXT:
+ p_string(f, 1, &(p->anychar_star_peek_next.c));
+ break;
- GET_POINTER_INC(cc, bp);
- n = bitset_on_num(cc->bs);
- fprintf(f, ":%p:%d", cc, n);
- }
- break;
-#endif
+ case OP_WORD_BOUNDARY:
+ case OP_NO_WORD_BOUNDARY:
+ case OP_WORD_BEGIN:
+ case OP_WORD_END:
+ mode = p->word_boundary.mode;
+ fprintf(f, ":%d", mode);
+ break;
- case OP_BACKREF_N_IC:
- mem = *((MemNumType* )bp);
- bp += SIZE_MEMNUM;
- fprintf(f, ":%d", mem);
- break;
+ case OP_BACKREF_N:
+ case OP_BACKREF_N_IC:
+ mem = p->backref_n.n1;
+ fprintf(f, ":%d", mem);
+ break;
+ case OP_BACKREF_MULTI_IC:
+ case OP_BACKREF_MULTI:
+ case OP_BACKREF_CHECK:
+ fputs(" ", f);
+ n = p->backref_general.num;
+ for (i = 0; i < n; i++) {
+ mem = (n == 1) ? p->backref_general.n1 : p->backref_general.ns[i];
+ if (i > 0) fputs(", ", f);
+ fprintf(f, "%d", mem);
+ }
+ break;
+ case OP_BACKREF_WITH_LEVEL:
+ case OP_BACKREF_WITH_LEVEL_IC:
+ case OP_BACKREF_CHECK_WITH_LEVEL:
+ {
+ LengthType level;
- case OP_BACKREF_MULTI_IC:
- case OP_BACKREF_MULTI:
- case OP_BACKREF_CHECK:
+ level = p->backref_general.nest_level;
+ fprintf(f, ":%d", level);
fputs(" ", f);
- GET_LENGTH_INC(len, bp);
- for (i = 0; i < len; i++) {
- GET_MEMNUM_INC(mem, bp);
+ n = p->backref_general.num;
+ for (i = 0; i < n; i++) {
+ mem = (n == 1) ? p->backref_general.n1 : p->backref_general.ns[i];
if (i > 0) fputs(", ", f);
fprintf(f, "%d", mem);
}
- break;
+ }
+ break;
- case OP_BACKREF_WITH_LEVEL:
- GET_OPTION_INC(option, bp);
- fprintf(f, ":%d", option);
- /* fall */
- case OP_BACKREF_CHECK_WITH_LEVEL:
- {
- LengthType level;
+ case OP_MEMORY_START:
+ case OP_MEMORY_START_PUSH:
+ mem = p->memory_start.num;
+ fprintf(f, ":%d", mem);
+ break;
+ case OP_MEMORY_END_PUSH:
+ case OP_MEMORY_END_PUSH_REC:
+ case OP_MEMORY_END:
+ case OP_MEMORY_END_REC:
+ mem = p->memory_end.num;
+ fprintf(f, ":%d", mem);
+ break;
- GET_LENGTH_INC(level, bp);
- fprintf(f, ":%d", level);
+ case OP_JUMP:
+ addr = p->jump.addr;
+ fputc(':', f);
+ p_rel_addr(f, addr, p, start);
+ break;
- fputs(" ", f);
- GET_LENGTH_INC(len, bp);
- for (i = 0; i < len; i++) {
- GET_MEMNUM_INC(mem, bp);
- if (i > 0) fputs(", ", f);
- fprintf(f, "%d", mem);
- }
- }
- break;
+ case OP_PUSH:
+ case OP_PUSH_SUPER:
+ addr = p->push.addr;
+ fputc(':', f);
+ p_rel_addr(f, addr, p, start);
+ break;
- case OP_REPEAT:
- case OP_REPEAT_NG:
- {
- mem = *((MemNumType* )bp);
- bp += SIZE_MEMNUM;
- addr = *((RelAddrType* )bp);
- bp += SIZE_RELADDR;
- fprintf(f, ":%d:%d", mem, addr);
- }
- break;
+#ifdef USE_OP_PUSH_OR_JUMP_EXACT
+ case OP_PUSH_OR_JUMP_EXACT1:
+ addr = p->push_or_jump_exact1.addr;
+ fputc(':', f);
+ p_rel_addr(f, addr, p, start);
+ p_string(f, 1, &(p->push_or_jump_exact1.c));
+ break;
+#endif
- case OP_PUSH_OR_JUMP_EXACT1:
- case OP_PUSH_IF_PEEK_NEXT:
- addr = *((RelAddrType* )bp);
- bp += SIZE_RELADDR;
- fputc(':', f);
- p_rel_addr(f, addr, bp, start);
- p_string(f, 1, bp);
- bp += 1;
- break;
+ case OP_PUSH_IF_PEEK_NEXT:
+ addr = p->push_if_peek_next.addr;
+ fputc(':', f);
+ p_rel_addr(f, addr, p, start);
+ p_string(f, 1, &(p->push_if_peek_next.c));
+ break;
- case OP_LOOK_BEHIND:
- GET_LENGTH_INC(len, bp);
- fprintf(f, ":%d", len);
- break;
+ case OP_REPEAT:
+ case OP_REPEAT_NG:
+ mem = p->repeat.id;
+ addr = p->repeat.addr;
+ fprintf(f, ":%d:", mem);
+ p_rel_addr(f, addr, p, start);
+ break;
- case OP_LOOK_BEHIND_NOT_START:
- GET_RELADDR_INC(addr, bp);
- GET_LENGTH_INC(len, bp);
- fprintf(f, ":%d:", len);
- p_rel_addr(f, addr, bp, start);
- break;
+ case OP_REPEAT_INC:
+ case OP_REPEAT_INC_NG:
+ case OP_REPEAT_INC_SG:
+ case OP_REPEAT_INC_NG_SG:
+ mem = p->repeat.id;
+ fprintf(f, ":%d", mem);
+ break;
- case OP_PUSH_SAVE_VAL:
- {
- SaveType type;
- GET_SAVE_TYPE_INC(type, bp);
- GET_MEMNUM_INC(mem, bp);
- fprintf(f, ":%d:%d", type, mem);
- }
- break;
+ case OP_EMPTY_CHECK_START:
+ mem = p->empty_check_start.mem;
+ fprintf(f, ":%d", mem);
+ break;
+ case OP_EMPTY_CHECK_END:
+ case OP_EMPTY_CHECK_END_MEMST:
+ case OP_EMPTY_CHECK_END_MEMST_PUSH:
+ mem = p->empty_check_end.mem;
+ fprintf(f, ":%d", mem);
+ break;
- case OP_UPDATE_VAR:
- {
- UpdateVarType type;
- GET_UPDATE_VAR_TYPE_INC(type, bp);
- GET_MEMNUM_INC(mem, bp);
- fprintf(f, ":%d:%d", type, mem);
- }
- break;
+ case OP_PREC_READ_NOT_START:
+ addr = p->prec_read_not_start.addr;
+ fputc(':', f);
+ p_rel_addr(f, addr, p, start);
+ break;
-#ifdef USE_CALLOUT
- case OP_CALLOUT_CONTENTS:
- {
- GET_MEMNUM_INC(mem, bp); /* number */
- fprintf(f, ":%d", mem);
- }
- break;
+ case OP_LOOK_BEHIND:
+ len = p->look_behind.len;
+ fprintf(f, ":%d", len);
+ break;
- case OP_CALLOUT_NAME:
- {
- int id;
+ case OP_LOOK_BEHIND_NOT_START:
+ addr = p->look_behind_not_start.addr;
+ len = p->look_behind_not_start.len;
+ fprintf(f, ":%d:", len);
+ p_rel_addr(f, addr, p, start);
+ break;
+
+ case OP_CALL:
+ addr = p->call.addr;
+ fprintf(f, ":{/%d}", addr);
+ break;
- GET_MEMNUM_INC(id, bp); /* id */
- GET_MEMNUM_INC(mem, bp); /* number */
+ case OP_PUSH_SAVE_VAL:
+ {
+ SaveType type;
- fprintf(f, ":%d:%d", id, mem);
- }
- break;
-#endif
+ type = p->push_save_val.type;
+ mem = p->push_save_val.id;
+ fprintf(f, ":%d:%d", type, mem);
+ }
+ break;
- default:
- fprintf(stderr, "onig_print_compiled_byte_code: undefined code %d\n", *--bp);
+ case OP_UPDATE_VAR:
+ {
+ UpdateVarType type;
+
+ type = p->update_var.type;
+ mem = p->update_var.id;
+ fprintf(f, ":%d:%d", type, mem);
+ }
+ break;
+
+#ifdef USE_CALLOUT
+ case OP_CALLOUT_CONTENTS:
+ mem = p->callout_contents.num;
+ fprintf(f, ":%d", mem);
+ break;
+
+ case OP_CALLOUT_NAME:
+ {
+ int id;
+
+ id = p->callout_name.id;
+ mem = p->callout_name.num;
+ fprintf(f, ":%d:%d", id, mem);
}
+ break;
+#endif
+
+ case OP_TEXT_SEGMENT_BOUNDARY:
+ if (p->text_segment_boundary.not != 0)
+ fprintf(f, ":not");
+ break;
+
+ case OP_FINISH:
+ case OP_END:
+ case OP_ANYCHAR:
+ case OP_ANYCHAR_ML:
+ case OP_ANYCHAR_STAR:
+ case OP_ANYCHAR_ML_STAR:
+ case OP_WORD:
+ case OP_WORD_ASCII:
+ case OP_NO_WORD:
+ case OP_NO_WORD_ASCII:
+ case OP_BEGIN_BUF:
+ case OP_END_BUF:
+ case OP_BEGIN_LINE:
+ case OP_END_LINE:
+ case OP_SEMI_END_BUF:
+ case OP_BEGIN_POSITION:
+ case OP_BACKREF1:
+ case OP_BACKREF2:
+ case OP_FAIL:
+ case OP_POP_OUT:
+ case OP_PREC_READ_START:
+ case OP_PREC_READ_END:
+ case OP_PREC_READ_NOT_END:
+ case OP_ATOMIC_START:
+ case OP_ATOMIC_END:
+ case OP_LOOK_BEHIND_NOT_END:
+ case OP_RETURN:
+ break;
+
+ default:
+ fprintf(stderr, "print_compiled_byte_code: undefined code %d\n", opcode);
+ break;
}
- if (nextp) *nextp = bp;
}
#endif /* ONIG_DEBUG */
@@ -596,21 +621,22 @@ onig_print_compiled_byte_code(FILE* f, UChar* bp, UChar** nextp, UChar* start,
extern void
onig_print_compiled_byte_code_list(FILE* f, regex_t* reg)
{
- UChar* bp;
- UChar* start = reg->p;
- UChar* end = reg->p + reg->used;
+ Operation* bp;
+ Operation* start = reg->ops;
+ Operation* end = reg->ops + reg->ops_used;
fprintf(f, "bt_mem_start: 0x%x, bt_mem_end: 0x%x\n",
reg->bt_mem_start, reg->bt_mem_end);
- fprintf(f, "code-length: %d\n", reg->used);
+ fprintf(f, "code-length: %d\n", reg->ops_used);
bp = start;
while (bp < end) {
int pos = bp - start;
fprintf(f, "%4d: ", pos);
- onig_print_compiled_byte_code(f, bp, &bp, start, reg->enc);
+ print_compiled_byte_code(f, reg, pos, start, reg->enc);
fprintf(f, "\n");
+ bp++;
}
fprintf(f, "\n");
}
@@ -625,36 +651,38 @@ history_tree_clear(OnigCaptureTreeNode* node)
{
int i;
- if (IS_NOT_NULL(node)) {
- for (i = 0; i < node->num_childs; i++) {
- if (IS_NOT_NULL(node->childs[i])) {
- history_tree_free(node->childs[i]);
- }
- }
- for (i = 0; i < node->allocated; i++) {
- node->childs[i] = (OnigCaptureTreeNode* )0;
+ if (IS_NULL(node)) return ;
+
+ for (i = 0; i < node->num_childs; i++) {
+ if (IS_NOT_NULL(node->childs[i])) {
+ history_tree_free(node->childs[i]);
}
- node->num_childs = 0;
- node->beg = ONIG_REGION_NOTPOS;
- node->end = ONIG_REGION_NOTPOS;
- node->group = -1;
}
+ for (i = 0; i < node->allocated; i++) {
+ node->childs[i] = (OnigCaptureTreeNode* )0;
+ }
+ node->num_childs = 0;
+ node->beg = ONIG_REGION_NOTPOS;
+ node->end = ONIG_REGION_NOTPOS;
+ node->group = -1;
}
static void
history_tree_free(OnigCaptureTreeNode* node)
{
history_tree_clear(node);
+ if (IS_NOT_NULL(node->childs)) xfree(node->childs);
+
xfree(node);
}
static void
history_root_free(OnigRegion* r)
{
- if (IS_NOT_NULL(r->history_root)) {
- history_tree_free(r->history_root);
- r->history_root = (OnigCaptureTreeNode* )0;
- }
+ if (IS_NULL(r->history_root)) return ;
+
+ history_tree_free(r->history_root);
+ r->history_root = (OnigCaptureTreeNode* )0;
}
static OnigCaptureTreeNode*
@@ -664,9 +692,10 @@ history_node_new(void)
node = (OnigCaptureTreeNode* )xmalloc(sizeof(OnigCaptureTreeNode));
CHECK_NULL_RETURN(node);
+
node->childs = (OnigCaptureTreeNode** )0;
- node->allocated = 0;
- node->num_childs = 0;
+ node->allocated = 0;
+ node->num_childs = 0;
node->group = -1;
node->beg = ONIG_REGION_NOTPOS;
node->end = ONIG_REGION_NOTPOS;
@@ -685,14 +714,14 @@ history_tree_add_child(OnigCaptureTreeNode* parent, OnigCaptureTreeNode* child)
if (IS_NULL(parent->childs)) {
n = HISTORY_TREE_INIT_ALLOC_SIZE;
parent->childs =
- (OnigCaptureTreeNode** )xmalloc(sizeof(OnigCaptureTreeNode*) * n);
+ (OnigCaptureTreeNode** )xmalloc(sizeof(parent->childs[0]) * n);
}
else {
n = parent->allocated * 2;
parent->childs =
(OnigCaptureTreeNode** )xrealloc(parent->childs,
- sizeof(OnigCaptureTreeNode*) * n,
- sizeof(OnigCaptureTreeNode*) * parent->allocated);
+ sizeof(parent->childs[0]) * n,
+ sizeof(parent->childs[0]) * parent->allocated);
}
CHECK_NULL_RETURN_MEMERR(parent->childs);
for (i = parent->allocated; i < n; i++) {
@@ -783,13 +812,13 @@ static int
onig_region_resize_clear(OnigRegion* region, int n)
{
int r;
-
+
r = onig_region_resize(region, n);
if (r != 0) return r;
onig_region_clear(region);
return 0;
}
-
+
extern int
onig_region_set(OnigRegion* region, int at, int beg, int end)
{
@@ -799,7 +828,7 @@ onig_region_set(OnigRegion* region, int at, int beg, int end)
int r = onig_region_resize(region, at + 1);
if (r < 0) return r;
}
-
+
region->beg[at] = beg;
region->end[at] = end;
return 0;
@@ -952,6 +981,8 @@ onig_region_copy(OnigRegion* to, OnigRegion* from)
#define STK_CALL_FRAME 0x0400
#define STK_RETURN 0x0500
#define STK_SAVE_VAL 0x0600
+#define STK_PREC_READ_START 0x0700
+#define STK_PREC_READ_END 0x0800
/* stack type check mask */
#define STK_MASK_POP_USED STK_ALT_FLAG
@@ -967,13 +998,13 @@ typedef struct _StackType {
int zid;
union {
struct {
- UChar *pcode; /* byte code position */
- UChar *pstr; /* string position */
- UChar *pstr_prev; /* previous char position of pstr */
+ Operation* pcode; /* byte code position */
+ UChar* pstr; /* string position */
+ UChar* pstr_prev; /* previous char position of pstr */
} state;
struct {
- int count; /* for OP_REPEAT_INC, OP_REPEAT_INC_NG */
- UChar *pcode; /* byte code position (head of repeated target) */
+ int count; /* for OP_REPEAT_INC, OP_REPEAT_INC_NG */
+ Operation* pcode; /* byte code position (head of repeated target) */
} repeat;
struct {
StackIndex si; /* index of stack */
@@ -989,8 +1020,8 @@ typedef struct _StackType {
} empty_check;
#ifdef USE_CALL
struct {
- UChar *ret_addr; /* byte code position */
- UChar *pstr; /* string position */
+ Operation *ret_addr; /* byte code position */
+ UChar *pstr; /* string position */
} call_frame;
#endif
struct {
@@ -1165,8 +1196,10 @@ onig_set_retry_limit_in_match(unsigned long size)
#endif
}
+#ifdef USE_CALLOUT
static OnigCalloutFunc DefaultProgressCallout;
static OnigCalloutFunc DefaultRetractionCallout;
+#endif
extern OnigMatchParam*
onig_new_match_param(void)
@@ -1208,10 +1241,10 @@ onig_initialize_match_param(OnigMatchParam* mp)
#ifdef USE_RETRY_LIMIT_IN_MATCH
mp->retry_limit_in_match = RetryLimitInMatch;
#endif
- mp->progress_callout_of_contents = DefaultProgressCallout;
- mp->retraction_callout_of_contents = DefaultRetractionCallout;
#ifdef USE_CALLOUT
+ mp->progress_callout_of_contents = DefaultProgressCallout;
+ mp->retraction_callout_of_contents = DefaultRetractionCallout;
mp->match_at_call_counter = 0;
mp->callout_user_data = 0;
mp->callout_data = 0;
@@ -1226,7 +1259,7 @@ onig_initialize_match_param(OnigMatchParam* mp)
static int
adjust_match_param(regex_t* reg, OnigMatchParam* mp)
{
- RegexExt* ext = REG_EXTP(reg);
+ RegexExt* ext = reg->extp;
mp->match_at_call_counter = 0;
@@ -1514,8 +1547,8 @@ stack_double(int is_alloca, char** arg_alloc_base,
#define STACK_PUSH_ALT(pat,s,sprev) STACK_PUSH(STK_ALT,pat,s,sprev)
#define STACK_PUSH_SUPER_ALT(pat,s,sprev) STACK_PUSH(STK_SUPER_ALT,pat,s,sprev)
-#define STACK_PUSH_POS(s,sprev) \
- STACK_PUSH(STK_TO_VOID_START,NULL_UCHARP,s,sprev)
+#define STACK_PUSH_PREC_READ_START(s,sprev) \
+ STACK_PUSH(STK_PREC_READ_START,(Operation* )0,s,sprev)
#define STACK_PUSH_ALT_PREC_READ_NOT(pat,s,sprev) \
STACK_PUSH(STK_ALT_PREC_READ_NOT,pat,s,sprev)
#define STACK_PUSH_TO_VOID_START STACK_PUSH_TYPE(STK_TO_VOID_START)
@@ -1857,6 +1890,27 @@ stack_double(int is_alloca, char** arg_alloc_base,
}\
} while(0)
+#define STACK_GET_PREC_READ_START(k) do {\
+ int level = 0;\
+ k = stk;\
+ while (1) {\
+ k--;\
+ STACK_BASE_CHECK(k, "STACK_GET_PREC_READ_START");\
+ if (IS_TO_VOID_TARGET(k)) {\
+ k->type = STK_VOID;\
+ }\
+ else if (k->type == STK_PREC_READ_START) {\
+ if (level == 0) {\
+ break;\
+ }\
+ level--;\
+ }\
+ else if (k->type == STK_PREC_READ_END) {\
+ level++;\
+ }\
+ }\
+} while(0)
+
#define STACK_EMPTY_CHECK(isnull,sid,s) do {\
StackType* k = stk;\
while (1) {\
@@ -1883,7 +1937,7 @@ stack_double(int is_alloca, char** arg_alloc_base,
}\
} while (0)
-#ifdef USE_INSISTENT_CHECK_CAPTURES_IN_EMPTY_REPEAT
+#ifdef USE_STUBBORN_CHECK_CAPTURES_IN_EMPTY_REPEAT
#define STACK_EMPTY_CHECK_MEM(isnull,sid,s,reg) do {\
StackType* k = stk;\
while (1) {\
@@ -1897,9 +1951,10 @@ stack_double(int is_alloca, char** arg_alloc_base,
}\
else {\
UChar* endp;\
+ int level = 0;\
(isnull) = 1;\
while (k < stk) {\
- if (k->type == STK_MEM_START) {\
+ if (k->type == STK_MEM_START && level == 0) {\
STACK_MEM_START_GET_PREV_END_ADDR(k, reg, endp);\
if (endp == 0) {\
(isnull) = 0; break;\
@@ -1911,6 +1966,12 @@ stack_double(int is_alloca, char** arg_alloc_base,
(isnull) = -1; /* empty, but position changed */ \
}\
}\
+ else if (k->type == STK_PREC_READ_START) {\
+ level++;\
+ }\
+ else if (k->type == STK_PREC_READ_END) {\
+ level--;\
+ }\
k++;\
}\
break;\
@@ -1935,10 +1996,11 @@ stack_double(int is_alloca, char** arg_alloc_base,
}\
else {\
UChar* endp;\
+ int prec_level = 0;\
(isnull) = 1;\
while (k < stk) {\
if (k->type == STK_MEM_START) {\
- if (level == 0) {\
+ if (level == 0 && prec_level == 0) {\
STACK_MEM_START_GET_PREV_END_ADDR(k, reg, endp);\
if (endp == 0) {\
(isnull) = 0; break;\
@@ -1957,6 +2019,12 @@ stack_double(int is_alloca, char** arg_alloc_base,
else if (k->type == STK_EMPTY_CHECK_END) {\
if (k->zid == (sid)) level--;\
}\
+ else if (k->type == STK_PREC_READ_START) {\
+ prec_level++;\
+ }\
+ else if (k->type == STK_PREC_READ_END) {\
+ prec_level--;\
+ }\
k++;\
}\
break;\
@@ -1993,7 +2061,7 @@ stack_double(int is_alloca, char** arg_alloc_base,
}\
}\
} while(0)
-#endif /* USE_INSISTENT_CHECK_CAPTURES_IN_EMPTY_REPEAT */
+#endif /* USE_STUBBORN_CHECK_CAPTURES_IN_EMPTY_REPEAT */
#define STACK_GET_REPEAT(sid, k) do {\
int level = 0;\
@@ -2140,14 +2208,12 @@ make_capture_history_tree(OnigCaptureTreeNode* node, StackType** kp,
#endif
#ifdef USE_BACKREF_WITH_LEVEL
-static int mem_is_in_memp(int mem, int num, UChar* memp)
+static int mem_is_in_memp(int mem, int num, MemNumType* memp)
{
int i;
- MemNumType m;
for (i = 0; i < num; i++) {
- GET_MEMNUM_INC(m, memp);
- if (mem == (int )m) return 1;
+ if (mem == (int )memp[i]) return 1;
}
return 0;
}
@@ -2156,7 +2222,7 @@ static int
backref_match_at_nested_level(regex_t* reg,
StackType* top, StackType* stk_base,
int ignore_case, int case_fold_flag,
- int nest, int mem_num, UChar* memp,
+ int nest, int mem_num, MemNumType* memp,
UChar** s, const UChar* send)
{
UChar *ss, *p, *pstart, *pend = NULL_UCHARP;
@@ -2213,7 +2279,7 @@ backref_match_at_nested_level(regex_t* reg,
static int
backref_check_at_nested_level(regex_t* reg,
StackType* top, StackType* stk_base,
- int nest, int mem_num, UChar* memp)
+ int nest, int mem_num, MemNumType* memp)
{
int level;
StackType* k;
@@ -2338,6 +2404,85 @@ typedef struct {
regoff_t rm_eo;
} posix_regmatch_t;
+
+
+#ifdef USE_THREADED_CODE
+
+#define BYTECODE_INTERPRETER_START GOTO_OP;
+#define BYTECODE_INTERPRETER_END
+#define CASE_OP(x) L_##x: SOP_IN(OP_##x); sbegin = s; MATCH_DEBUG_OUT(0)
+#define DEFAULT_OP /* L_DEFAULT: */
+#define NEXT_OP sprev = sbegin; JUMP_OP
+#define JUMP_OP GOTO_OP
+#ifdef USE_DIRECT_THREADED_CODE
+#define GOTO_OP goto *(p->opaddr)
+#else
+#define GOTO_OP goto *opcode_to_label[p->opcode]
+#endif
+#define BREAK_OP /* Nothing */
+
+#else
+
+#define BYTECODE_INTERPRETER_START \
+ while (1) {\
+ MATCH_DEBUG_OUT(0)\
+ sbegin = s;\
+ switch (p->opcode) {
+#define BYTECODE_INTERPRETER_END } sprev = sbegin; }
+#define CASE_OP(x) case OP_##x: SOP_IN(OP_##x);
+#define DEFAULT_OP default:
+#define NEXT_OP break
+#define JUMP_OP GOTO_OP
+#define GOTO_OP continue; break
+#define BREAK_OP break
+
+#endif /* USE_THREADED_CODE */
+
+#define INC_OP p++
+#define NEXT_OUT SOP_OUT; NEXT_OP
+#define JUMP_OUT SOP_OUT; JUMP_OP
+#define BREAK_OUT SOP_OUT; BREAK_OP
+#define CHECK_INTERRUPT_JUMP_OUT SOP_OUT; CHECK_INTERRUPT_IN_MATCH; JUMP_OP
+
+
+#ifdef ONIG_DEBUG_MATCH
+#define MATCH_DEBUG_OUT(offset) do {\
+ Operation *xp;\
+ UChar *q, *bp, buf[50];\
+ int len, spos;\
+ spos = IS_NOT_NULL(s) ? (int )(s - str) : -1;\
+ xp = p - (offset);\
+ fprintf(stderr, "%7u: %7ld: %4d> \"",\
+ counter, GET_STACK_INDEX(stk), spos);\
+ counter++;\
+ bp = buf;\
+ if (IS_NOT_NULL(s)) {\
+ for (i = 0, q = s; i < 7 && q < end; i++) {\
+ len = enclen(encode, q);\
+ while (len-- > 0) *bp++ = *q++;\
+ }\
+ if (q < end) { xmemcpy(bp, "...\"", 4); bp += 4; }\
+ else { xmemcpy(bp, "\"", 1); bp += 1; }\
+ }\
+ else {\
+ xmemcpy(bp, "\"", 1); bp += 1;\
+ }\
+ *bp = 0;\
+ fputs((char* )buf, stderr);\
+ for (i = 0; i < 20 - (bp - buf); i++) fputc(' ', stderr);\
+ if (xp == FinishCode)\
+ fprintf(stderr, "----: finish");\
+ else {\
+ fprintf(stderr, "%4d: ", (int )(xp - reg->ops));\
+ print_compiled_byte_code(stderr, reg, (int )(xp - reg->ops), reg->ops, encode);\
+ }\
+ fprintf(stderr, "\n");\
+ } while(0);
+#else
+#define MATCH_DEBUG_OUT(offset)
+#endif
+
+
/* match data(str - end) from position (sstart). */
/* if sstart == str then set sprev to NULL. */
static int
@@ -2345,13 +2490,118 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
const UChar* in_right_range, const UChar* sstart, UChar* sprev,
MatchArg* msa)
{
- static UChar FinishCode[] = { OP_FINISH };
+
+#if defined(USE_DIRECT_THREADED_CODE)
+ static Operation FinishCode[] = { { .opaddr=&&L_FINISH } };
+#else
+ static Operation FinishCode[] = { { OP_FINISH } };
+#endif
+
+#ifdef USE_THREADED_CODE
+ static const void *opcode_to_label[] = {
+ &&L_FINISH,
+ &&L_END,
+ &&L_EXACT1,
+ &&L_EXACT2,
+ &&L_EXACT3,
+ &&L_EXACT4,
+ &&L_EXACT5,
+ &&L_EXACTN,
+ &&L_EXACTMB2N1,
+ &&L_EXACTMB2N2,
+ &&L_EXACTMB2N3,
+ &&L_EXACTMB2N,
+ &&L_EXACTMB3N,
+ &&L_EXACTMBN,
+ &&L_EXACT1_IC,
+ &&L_EXACTN_IC,
+ &&L_CCLASS,
+ &&L_CCLASS_MB,
+ &&L_CCLASS_MIX,
+ &&L_CCLASS_NOT,
+ &&L_CCLASS_MB_NOT,
+ &&L_CCLASS_MIX_NOT,
+ &&L_ANYCHAR,
+ &&L_ANYCHAR_ML,
+ &&L_ANYCHAR_STAR,
+ &&L_ANYCHAR_ML_STAR,
+ &&L_ANYCHAR_STAR_PEEK_NEXT,
+ &&L_ANYCHAR_ML_STAR_PEEK_NEXT,
+ &&L_WORD,
+ &&L_WORD_ASCII,
+ &&L_NO_WORD,
+ &&L_NO_WORD_ASCII,
+ &&L_WORD_BOUNDARY,
+ &&L_NO_WORD_BOUNDARY,
+ &&L_WORD_BEGIN,
+ &&L_WORD_END,
+ &&L_TEXT_SEGMENT_BOUNDARY,
+ &&L_BEGIN_BUF,
+ &&L_END_BUF,
+ &&L_BEGIN_LINE,
+ &&L_END_LINE,
+ &&L_SEMI_END_BUF,
+ &&L_BEGIN_POSITION,
+ &&L_BACKREF1,
+ &&L_BACKREF2,
+ &&L_BACKREF_N,
+ &&L_BACKREF_N_IC,
+ &&L_BACKREF_MULTI,
+ &&L_BACKREF_MULTI_IC,
+ &&L_BACKREF_WITH_LEVEL,
+ &&L_BACKREF_WITH_LEVEL_IC,
+ &&L_BACKREF_CHECK,
+ &&L_BACKREF_CHECK_WITH_LEVEL,
+ &&L_MEMORY_START,
+ &&L_MEMORY_START_PUSH,
+ &&L_MEMORY_END_PUSH,
+ &&L_MEMORY_END_PUSH_REC,
+ &&L_MEMORY_END,
+ &&L_MEMORY_END_REC,
+ &&L_FAIL,
+ &&L_JUMP,
+ &&L_PUSH,
+ &&L_PUSH_SUPER,
+ &&L_POP_OUT,
+#ifdef USE_OP_PUSH_OR_JUMP_EXACT
+ &&L_PUSH_OR_JUMP_EXACT1,
+#endif
+ &&L_PUSH_IF_PEEK_NEXT,
+ &&L_REPEAT,
+ &&L_REPEAT_NG,
+ &&L_REPEAT_INC,
+ &&L_REPEAT_INC_NG,
+ &&L_REPEAT_INC_SG,
+ &&L_REPEAT_INC_NG_SG,
+ &&L_EMPTY_CHECK_START,
+ &&L_EMPTY_CHECK_END,
+ &&L_EMPTY_CHECK_END_MEMST,
+ &&L_EMPTY_CHECK_END_MEMST_PUSH,
+ &&L_PREC_READ_START,
+ &&L_PREC_READ_END,
+ &&L_PREC_READ_NOT_START,
+ &&L_PREC_READ_NOT_END,
+ &&L_ATOMIC_START,
+ &&L_ATOMIC_END,
+ &&L_LOOK_BEHIND,
+ &&L_LOOK_BEHIND_NOT_START,
+ &&L_LOOK_BEHIND_NOT_END,
+ &&L_CALL,
+ &&L_RETURN,
+ &&L_PUSH_SAVE_VAL,
+ &&L_UPDATE_VAR,
+#ifdef USE_CALLOUT
+ &&L_CALLOUT_CONTENTS,
+ &&L_CALLOUT_NAME,
+#endif
+ };
+#endif
int i, n, num_mem, best_len, pop_level;
LengthType tlen, tlen2;
MemNumType mem;
RelAddrType addr;
- UChar *s, *q, *sbegin;
+ UChar *s, *q, *ps, *sbegin;
UChar *right_range;
int is_alloca;
char *alloc_base;
@@ -2370,11 +2620,27 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
int of;
#endif
- UChar *p = reg->p;
+ Operation* p = reg->ops;
OnigOptionType option = reg->options;
OnigEncoding encode = reg->enc;
OnigCaseFoldType case_fold_flag = reg->case_fold_flag;
+#ifdef ONIG_DEBUG_MATCH
+ static unsigned int counter = 1;
+#endif
+
+#ifdef USE_DIRECT_THREADED_CODE
+ if (IS_NULL(msa)) {
+ for (i = 0; i < reg->ops_used; i++) {
+ const void* addr;
+ addr = opcode_to_label[reg->ocs[i]];
+ p->opaddr = addr;
+ p++;
+ }
+ return ONIG_NORMAL;
+ }
+#endif
+
#ifdef USE_CALLOUT
msa->mp->match_at_call_counter++;
#endif
@@ -2407,40 +2673,8 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
retry_in_match_counter = 0;
#endif
- while (1) {
-#ifdef ONIG_DEBUG_MATCH
- {
- static unsigned int counter = 1;
-
- UChar *q, *bp, buf[50];
- int len;
- fprintf(stderr, "%7u: %7ld: %4d> \"",
- counter, GET_STACK_INDEX(stk), (int )(s - str));
- counter++;
-
- bp = buf;
- for (i = 0, q = s; i < 7 && q < end; i++) {
- len = enclen(encode, q);
- while (len-- > 0) *bp++ = *q++;
- }
- if (q < end) { xmemcpy(bp, "...\"", 4); bp += 4; }
- else { xmemcpy(bp, "\"", 1); bp += 1; }
- *bp = 0;
- fputs((char* )buf, stderr);
-
- for (i = 0; i < 20 - (bp - buf); i++) fputc(' ', stderr);
- if (p == FinishCode)
- fprintf(stderr, "----: ");
- else
- fprintf(stderr, "%4d: ", (int )(p - reg->p));
- onig_print_compiled_byte_code(stderr, p, NULL, reg->p, encode);
- fprintf(stderr, "\n");
- }
-#endif
-
- sbegin = s;
- switch (*p++) {
- case OP_END: SOP_IN(OP_END);
+ BYTECODE_INTERPRETER_START {
+ CASE_OP(END)
n = (int )(s - sstart);
if (n > best_len) {
OnigRegion* region;
@@ -2552,16 +2786,16 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
/* default behavior: return first-matching result. */
goto finish;
- break;
- case OP_EXACT1: SOP_IN(OP_EXACT1);
+ CASE_OP(EXACT1)
DATA_ENSURE(1);
- if (*p != *s) goto fail;
- p++; s++;
- SOP_OUT;
- break;
+ ps = p->exact.s;
+ if (*ps != *s) goto fail;
+ s++;
+ INC_OP;
+ NEXT_OUT;
- case OP_EXACT1_IC: SOP_IN(OP_EXACT1_IC);
+ CASE_OP(EXACT1_IC)
{
int len;
UChar *q, lowbuf[ONIGENC_MBC_CASE_FOLD_MAXLEN];
@@ -2573,92 +2807,91 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
&s, end, lowbuf);
DATA_ENSURE(0);
q = lowbuf;
+ ps = p->exact.s;
while (len-- > 0) {
- if (*p != *q) {
- goto fail;
- }
- p++; q++;
+ if (*ps != *q) goto fail;
+ ps++; q++;
}
}
- SOP_OUT;
- break;
+ INC_OP;
+ NEXT_OUT;
- case OP_EXACT2: SOP_IN(OP_EXACT2);
+ CASE_OP(EXACT2)
DATA_ENSURE(2);
- if (*p != *s) goto fail;
- p++; s++;
- if (*p != *s) goto fail;
+ ps = p->exact.s;
+ if (*ps != *s) goto fail;
+ ps++; s++;
+ if (*ps != *s) goto fail;
sprev = s;
- p++; s++;
- SOP_OUT;
- continue;
- break;
+ s++;
+ INC_OP;
+ JUMP_OUT;
- case OP_EXACT3: SOP_IN(OP_EXACT3);
+ CASE_OP(EXACT3)
DATA_ENSURE(3);
- if (*p != *s) goto fail;
- p++; s++;
- if (*p != *s) goto fail;
- p++; s++;
- if (*p != *s) goto fail;
+ ps = p->exact.s;
+ if (*ps != *s) goto fail;
+ ps++; s++;
+ if (*ps != *s) goto fail;
+ ps++; s++;
+ if (*ps != *s) goto fail;
sprev = s;
- p++; s++;
- SOP_OUT;
- continue;
- break;
+ s++;
+ INC_OP;
+ JUMP_OUT;
- case OP_EXACT4: SOP_IN(OP_EXACT4);
+ CASE_OP(EXACT4)
DATA_ENSURE(4);
- if (*p != *s) goto fail;
- p++; s++;
- if (*p != *s) goto fail;
- p++; s++;
- if (*p != *s) goto fail;
- p++; s++;
- if (*p != *s) goto fail;
+ ps = p->exact.s;
+ if (*ps != *s) goto fail;
+ ps++; s++;
+ if (*ps != *s) goto fail;
+ ps++; s++;
+ if (*ps != *s) goto fail;
+ ps++; s++;
+ if (*ps != *s) goto fail;
sprev = s;
- p++; s++;
- SOP_OUT;
- continue;
- break;
+ s++;
+ INC_OP;
+ JUMP_OUT;
- case OP_EXACT5: SOP_IN(OP_EXACT5);
+ CASE_OP(EXACT5)
DATA_ENSURE(5);
- if (*p != *s) goto fail;
- p++; s++;
- if (*p != *s) goto fail;
- p++; s++;
- if (*p != *s) goto fail;
- p++; s++;
- if (*p != *s) goto fail;
- p++; s++;
- if (*p != *s) goto fail;
+ ps = p->exact.s;
+ if (*ps != *s) goto fail;
+ ps++; s++;
+ if (*ps != *s) goto fail;
+ ps++; s++;
+ if (*ps != *s) goto fail;
+ ps++; s++;
+ if (*ps != *s) goto fail;
+ ps++; s++;
+ if (*ps != *s) goto fail;
sprev = s;
- p++; s++;
- SOP_OUT;
- continue;
- break;
+ s++;
+ INC_OP;
+ JUMP_OUT;
- case OP_EXACTN: SOP_IN(OP_EXACTN);
- GET_LENGTH_INC(tlen, p);
+ CASE_OP(EXACTN)
+ tlen = p->exact_n.n;
DATA_ENSURE(tlen);
+ ps = p->exact_n.s;
while (tlen-- > 0) {
- if (*p++ != *s++) goto fail;
+ if (*ps++ != *s++) goto fail;
}
sprev = s - 1;
- SOP_OUT;
- continue;
- break;
+ INC_OP;
+ JUMP_OUT;
- case OP_EXACTN_IC: SOP_IN(OP_EXACTN_IC);
+ CASE_OP(EXACTN_IC)
{
int len;
UChar *q, *endp, lowbuf[ONIGENC_MBC_CASE_FOLD_MAXLEN];
- GET_LENGTH_INC(tlen, p);
- endp = p + tlen;
-
- while (p < endp) {
+ tlen = p->exact_n.n;
+ ps = p->exact_n.s;
+ endp = ps + tlen;
+ while (ps < endp) {
sprev = s;
DATA_ENSURE(1);
len = ONIGENC_MBC_CASE_FOLD(encode,
@@ -2668,116 +2901,115 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
DATA_ENSURE(0);
q = lowbuf;
while (len-- > 0) {
- if (*p != *q) goto fail;
- p++; q++;
+ if (*ps != *q) goto fail;
+ ps++; q++;
}
}
}
- SOP_OUT;
- continue;
- break;
+ INC_OP;
+ JUMP_OUT;
- case OP_EXACTMB2N1: SOP_IN(OP_EXACTMB2N1);
+ CASE_OP(EXACTMB2N1)
DATA_ENSURE(2);
- if (*p != *s) goto fail;
- p++; s++;
- if (*p != *s) goto fail;
- p++; s++;
- SOP_OUT;
- break;
-
- case OP_EXACTMB2N2: SOP_IN(OP_EXACTMB2N2);
+ ps = p->exact.s;
+ if (*ps != *s) goto fail;
+ ps++; s++;
+ if (*ps != *s) goto fail;
+ s++;
+ INC_OP;
+ NEXT_OUT;
+
+ CASE_OP(EXACTMB2N2)
DATA_ENSURE(4);
- if (*p != *s) goto fail;
- p++; s++;
- if (*p != *s) goto fail;
- p++; s++;
+ ps = p->exact.s;
+ if (*ps != *s) goto fail;
+ ps++; s++;
+ if (*ps != *s) goto fail;
+ ps++; s++;
sprev = s;
- if (*p != *s) goto fail;
- p++; s++;
- if (*p != *s) goto fail;
- p++; s++;
- SOP_OUT;
- continue;
- break;
-
- case OP_EXACTMB2N3: SOP_IN(OP_EXACTMB2N3);
+ if (*ps != *s) goto fail;
+ ps++; s++;
+ if (*ps != *s) goto fail;
+ s++;
+ INC_OP;
+ JUMP_OUT;
+
+ CASE_OP(EXACTMB2N3)
DATA_ENSURE(6);
- if (*p != *s) goto fail;
- p++; s++;
- if (*p != *s) goto fail;
- p++; s++;
- if (*p != *s) goto fail;
- p++; s++;
- if (*p != *s) goto fail;
- p++; s++;
+ ps = p->exact.s;
+ if (*ps != *s) goto fail;
+ ps++; s++;
+ if (*ps != *s) goto fail;
+ ps++; s++;
+ if (*ps != *s) goto fail;
+ ps++; s++;
+ if (*ps != *s) goto fail;
+ ps++; s++;
sprev = s;
- if (*p != *s) goto fail;
- p++; s++;
- if (*p != *s) goto fail;
- p++; s++;
- SOP_OUT;
- continue;
- break;
-
- case OP_EXACTMB2N: SOP_IN(OP_EXACTMB2N);
- GET_LENGTH_INC(tlen, p);
+ if (*ps != *s) goto fail;
+ ps++; s++;
+ if (*ps != *s) goto fail;
+ ps++; s++;
+ INC_OP;
+ JUMP_OUT;
+
+ CASE_OP(EXACTMB2N)
+ tlen = p->exact_n.n;
DATA_ENSURE(tlen * 2);
+ ps = p->exact_n.s;
while (tlen-- > 0) {
- if (*p != *s) goto fail;
- p++; s++;
- if (*p != *s) goto fail;
- p++; s++;
+ if (*ps != *s) goto fail;
+ ps++; s++;
+ if (*ps != *s) goto fail;
+ ps++; s++;
}
sprev = s - 2;
- SOP_OUT;
- continue;
- break;
+ INC_OP;
+ JUMP_OUT;
- case OP_EXACTMB3N: SOP_IN(OP_EXACTMB3N);
- GET_LENGTH_INC(tlen, p);
+ CASE_OP(EXACTMB3N)
+ tlen = p->exact_n.n;
DATA_ENSURE(tlen * 3);
+ ps = p->exact_n.s;
while (tlen-- > 0) {
- if (*p != *s) goto fail;
- p++; s++;
- if (*p != *s) goto fail;
- p++; s++;
- if (*p != *s) goto fail;
- p++; s++;
+ if (*ps != *s) goto fail;
+ ps++; s++;
+ if (*ps != *s) goto fail;
+ ps++; s++;
+ if (*ps != *s) goto fail;
+ ps++; s++;
}
sprev = s - 3;
- SOP_OUT;
- continue;
- break;
+ INC_OP;
+ JUMP_OUT;
- case OP_EXACTMBN: SOP_IN(OP_EXACTMBN);
- GET_LENGTH_INC(tlen, p); /* mb-len */
- GET_LENGTH_INC(tlen2, p); /* string len */
+ CASE_OP(EXACTMBN)
+ tlen = p->exact_len_n.len; /* mb byte len */
+ tlen2 = p->exact_len_n.n; /* number of chars */
tlen2 *= tlen;
DATA_ENSURE(tlen2);
+ ps = p->exact_len_n.s;
while (tlen2-- > 0) {
- if (*p != *s) goto fail;
- p++; s++;
+ if (*ps != *s) goto fail;
+ ps++; s++;
}
sprev = s - tlen;
- SOP_OUT;
- continue;
- break;
+ INC_OP;
+ JUMP_OUT;
- case OP_CCLASS: SOP_IN(OP_CCLASS);
+ CASE_OP(CCLASS)
DATA_ENSURE(1);
- if (BITSET_AT(((BitSetRef )p), *s) == 0) goto fail;
- p += SIZE_BITSET;
- s += enclen(encode, s); /* OP_CCLASS can match mb-code. \D, \S */
- SOP_OUT;
- break;
+ if (BITSET_AT(p->cclass.bsp, *s) == 0) goto fail;
+ s++;
+ INC_OP;
+ NEXT_OUT;
- case OP_CCLASS_MB: SOP_IN(OP_CCLASS_MB);
+ CASE_OP(CCLASS_MB)
+ DATA_ENSURE(1);
if (! ONIGENC_IS_MBC_HEAD(encode, s)) goto fail;
cclass_mb:
- GET_LENGTH_INC(tlen, p);
{
OnigCodePoint code;
UChar *ss;
@@ -2789,56 +3021,40 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
ss = s;
s += mb_len;
code = ONIGENC_MBC_TO_CODE(encode, ss, s);
-
-#ifdef PLATFORM_UNALIGNED_WORD_ACCESS
- if (! onig_is_in_code_range(p, code)) goto fail;
-#else
- q = p;
- ALIGNMENT_RIGHT(q);
- if (! onig_is_in_code_range(q, code)) goto fail;
-#endif
+ if (! onig_is_in_code_range(p->cclass_mb.mb, code)) goto fail;
}
- p += tlen;
- SOP_OUT;
- break;
+ INC_OP;
+ NEXT_OUT;
- case OP_CCLASS_MIX: SOP_IN(OP_CCLASS_MIX);
+ CASE_OP(CCLASS_MIX)
DATA_ENSURE(1);
if (ONIGENC_IS_MBC_HEAD(encode, s)) {
- p += SIZE_BITSET;
goto cclass_mb;
}
else {
- if (BITSET_AT(((BitSetRef )p), *s) == 0)
+ if (BITSET_AT(p->cclass_mix.bsp, *s) == 0)
goto fail;
- p += SIZE_BITSET;
- GET_LENGTH_INC(tlen, p);
- p += tlen;
s++;
}
- SOP_OUT;
- break;
+ INC_OP;
+ NEXT_OUT;
- case OP_CCLASS_NOT: SOP_IN(OP_CCLASS_NOT);
+ CASE_OP(CCLASS_NOT)
DATA_ENSURE(1);
- if (BITSET_AT(((BitSetRef )p), *s) != 0) goto fail;
- p += SIZE_BITSET;
+ if (BITSET_AT(p->cclass.bsp, *s) != 0) goto fail;
s += enclen(encode, s);
- SOP_OUT;
- break;
+ INC_OP;
+ NEXT_OUT;
- case OP_CCLASS_MB_NOT: SOP_IN(OP_CCLASS_MB_NOT);
+ CASE_OP(CCLASS_MB_NOT)
DATA_ENSURE(1);
if (! ONIGENC_IS_MBC_HEAD(encode, s)) {
s++;
- GET_LENGTH_INC(tlen, p);
- p += tlen;
goto cc_mb_not_success;
}
cclass_mb_not:
- GET_LENGTH_INC(tlen, p);
{
OnigCodePoint code;
UChar *ss;
@@ -2847,85 +3063,52 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
if (! DATA_ENSURE_CHECK(mb_len)) {
DATA_ENSURE(1);
s = (UChar* )end;
- p += tlen;
goto cc_mb_not_success;
}
ss = s;
s += mb_len;
code = ONIGENC_MBC_TO_CODE(encode, ss, s);
-
-#ifdef PLATFORM_UNALIGNED_WORD_ACCESS
- if (onig_is_in_code_range(p, code)) goto fail;
-#else
- q = p;
- ALIGNMENT_RIGHT(q);
- if (onig_is_in_code_range(q, code)) goto fail;
-#endif
+ if (onig_is_in_code_range(p->cclass_mb.mb, code)) goto fail;
}
- p += tlen;
cc_mb_not_success:
- SOP_OUT;
- break;
+ INC_OP;
+ NEXT_OUT;
- case OP_CCLASS_MIX_NOT: SOP_IN(OP_CCLASS_MIX_NOT);
+ CASE_OP(CCLASS_MIX_NOT)
DATA_ENSURE(1);
if (ONIGENC_IS_MBC_HEAD(encode, s)) {
- p += SIZE_BITSET;
goto cclass_mb_not;
}
else {
- if (BITSET_AT(((BitSetRef )p), *s) != 0)
+ if (BITSET_AT(p->cclass_mix.bsp, *s) != 0)
goto fail;
- p += SIZE_BITSET;
- GET_LENGTH_INC(tlen, p);
- p += tlen;
s++;
}
- SOP_OUT;
- break;
-
-#ifdef USE_OP_CCLASS_NODE
- case OP_CCLASS_NODE: SOP_IN(OP_CCLASS_NODE);
- {
- OnigCodePoint code;
- void *node;
- int mb_len;
- UChar *ss;
-
- DATA_ENSURE(1);
- GET_POINTER_INC(node, p);
- mb_len = enclen(encode, s);
- ss = s;
- s += mb_len;
- DATA_ENSURE(0);
- code = ONIGENC_MBC_TO_CODE(encode, ss, s);
- if (onig_is_code_in_cc_len(mb_len, code, node) == 0) goto fail;
- }
- SOP_OUT;
- break;
-#endif
+ INC_OP;
+ NEXT_OUT;
- case OP_ANYCHAR: SOP_IN(OP_ANYCHAR);
+ CASE_OP(ANYCHAR)
DATA_ENSURE(1);
n = enclen(encode, s);
DATA_ENSURE(n);
if (ONIGENC_IS_MBC_NEWLINE(encode, s, end)) goto fail;
s += n;
- SOP_OUT;
- break;
+ INC_OP;
+ NEXT_OUT;
- case OP_ANYCHAR_ML: SOP_IN(OP_ANYCHAR_ML);
+ CASE_OP(ANYCHAR_ML)
DATA_ENSURE(1);
n = enclen(encode, s);
DATA_ENSURE(n);
s += n;
- SOP_OUT;
- break;
+ INC_OP;
+ NEXT_OUT;
- case OP_ANYCHAR_STAR: SOP_IN(OP_ANYCHAR_STAR);
+ CASE_OP(ANYCHAR_STAR)
+ INC_OP;
while (DATA_ENSURE_CHECK1) {
STACK_PUSH_ALT(p, s, sprev);
n = enclen(encode, s);
@@ -2934,11 +3117,10 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
sprev = s;
s += n;
}
- SOP_OUT;
- continue;
- break;
+ JUMP_OUT;
- case OP_ANYCHAR_ML_STAR: SOP_IN(OP_ANYCHAR_ML_STAR);
+ CASE_OP(ANYCHAR_ML_STAR)
+ INC_OP;
while (DATA_ENSURE_CHECK1) {
STACK_PUSH_ALT(p, s, sprev);
n = enclen(encode, s);
@@ -2952,86 +3134,92 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
s++;
}
}
- SOP_OUT;
- continue;
- break;
+ JUMP_OUT;
- case OP_ANYCHAR_STAR_PEEK_NEXT: SOP_IN(OP_ANYCHAR_STAR_PEEK_NEXT);
- while (DATA_ENSURE_CHECK1) {
- if (*p == *s) {
- STACK_PUSH_ALT(p + 1, s, sprev);
- }
- n = enclen(encode, s);
- DATA_ENSURE(n);
- if (ONIGENC_IS_MBC_NEWLINE(encode, s, end)) goto fail;
- sprev = s;
- s += n;
- }
- p++;
- SOP_OUT;
- break;
+ CASE_OP(ANYCHAR_STAR_PEEK_NEXT)
+ {
+ UChar c;
- case OP_ANYCHAR_ML_STAR_PEEK_NEXT:SOP_IN(OP_ANYCHAR_ML_STAR_PEEK_NEXT);
- while (DATA_ENSURE_CHECK1) {
- if (*p == *s) {
- STACK_PUSH_ALT(p + 1, s, sprev);
- }
- n = enclen(encode, s);
- if (n > 1) {
+ c = p->anychar_star_peek_next.c;
+ INC_OP;
+ while (DATA_ENSURE_CHECK1) {
+ if (c == *s) {
+ STACK_PUSH_ALT(p, s, sprev);
+ }
+ n = enclen(encode, s);
DATA_ENSURE(n);
+ if (ONIGENC_IS_MBC_NEWLINE(encode, s, end)) goto fail;
sprev = s;
s += n;
}
- else {
- sprev = s;
- s++;
+ }
+ NEXT_OUT;
+
+ CASE_OP(ANYCHAR_ML_STAR_PEEK_NEXT)
+ {
+ UChar c;
+
+ c = p->anychar_star_peek_next.c;
+ INC_OP;
+ while (DATA_ENSURE_CHECK1) {
+ if (c == *s) {
+ STACK_PUSH_ALT(p, s, sprev);
+ }
+ n = enclen(encode, s);
+ if (n > 1) {
+ DATA_ENSURE(n);
+ sprev = s;
+ s += n;
+ }
+ else {
+ sprev = s;
+ s++;
+ }
}
}
- p++;
- SOP_OUT;
- break;
+ NEXT_OUT;
- case OP_WORD: SOP_IN(OP_WORD);
+ CASE_OP(WORD)
DATA_ENSURE(1);
if (! ONIGENC_IS_MBC_WORD(encode, s, end))
goto fail;
s += enclen(encode, s);
- SOP_OUT;
- break;
+ INC_OP;
+ NEXT_OUT;
- case OP_WORD_ASCII: SOP_IN(OP_WORD_ASCII);
+ CASE_OP(WORD_ASCII)
DATA_ENSURE(1);
if (! ONIGENC_IS_MBC_WORD_ASCII(encode, s, end))
goto fail;
s += enclen(encode, s);
- SOP_OUT;
- break;
+ INC_OP;
+ NEXT_OUT;
- case OP_NO_WORD: SOP_IN(OP_NO_WORD);
+ CASE_OP(NO_WORD)
DATA_ENSURE(1);
if (ONIGENC_IS_MBC_WORD(encode, s, end))
goto fail;
s += enclen(encode, s);
- SOP_OUT;
- break;
+ INC_OP;
+ NEXT_OUT;
- case OP_NO_WORD_ASCII: SOP_IN(OP_NO_WORD_ASCII);
+ CASE_OP(NO_WORD_ASCII)
DATA_ENSURE(1);
if (ONIGENC_IS_MBC_WORD_ASCII(encode, s, end))
goto fail;
s += enclen(encode, s);
- SOP_OUT;
- break;
+ INC_OP;
+ NEXT_OUT;
- case OP_WORD_BOUNDARY: SOP_IN(OP_WORD_BOUNDARY);
+ CASE_OP(WORD_BOUNDARY)
{
ModeType mode;
- GET_MODE_INC(mode, p); /* ascii_mode */
+ mode = p->word_boundary.mode;
if (ON_STR_BEGIN(s)) {
DATA_ENSURE(1);
if (! IS_MBC_WORD_ASCII_MODE(encode, s, end, mode))
@@ -3047,15 +3235,14 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
goto fail;
}
}
- SOP_OUT;
- continue;
- break;
+ INC_OP;
+ JUMP_OUT;
- case OP_NO_WORD_BOUNDARY: SOP_IN(OP_NO_WORD_BOUNDARY);
+ CASE_OP(NO_WORD_BOUNDARY)
{
ModeType mode;
- GET_MODE_INC(mode, p); /* ascii_mode */
+ mode = p->word_boundary.mode;
if (ON_STR_BEGIN(s)) {
if (DATA_ENSURE_CHECK1 && IS_MBC_WORD_ASCII_MODE(encode, s, end, mode))
goto fail;
@@ -3070,190 +3257,189 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
goto fail;
}
}
- SOP_OUT;
- continue;
- break;
+ INC_OP;
+ JUMP_OUT;
#ifdef USE_WORD_BEGIN_END
- case OP_WORD_BEGIN: SOP_IN(OP_WORD_BEGIN);
+ CASE_OP(WORD_BEGIN)
{
ModeType mode;
- GET_MODE_INC(mode, p); /* ascii_mode */
+ mode = p->word_boundary.mode;
if (DATA_ENSURE_CHECK1 && IS_MBC_WORD_ASCII_MODE(encode, s, end, mode)) {
if (ON_STR_BEGIN(s) || !IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode)) {
- SOP_OUT;
- continue;
+ INC_OP;
+ JUMP_OUT;
}
}
}
goto fail;
- break;
- case OP_WORD_END: SOP_IN(OP_WORD_END);
+ CASE_OP(WORD_END)
{
ModeType mode;
- GET_MODE_INC(mode, p); /* ascii_mode */
+ mode = p->word_boundary.mode;
if (!ON_STR_BEGIN(s) && IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode)) {
if (ON_STR_END(s) || ! IS_MBC_WORD_ASCII_MODE(encode, s, end, mode)) {
- SOP_OUT;
- continue;
+ INC_OP;
+ JUMP_OUT;
}
}
}
goto fail;
- break;
#endif
- case OP_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY:
- SOP_IN(OP_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY);
- if (onigenc_egcb_is_break_position(encode, s, sprev, str, end)) {
- SOP_OUT;
- continue;
- }
- goto fail;
- break;
+ CASE_OP(TEXT_SEGMENT_BOUNDARY)
+ {
+ int is_break;
- case OP_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY:
- SOP_IN(OP_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY);
- if (onigenc_egcb_is_break_position(encode, s, sprev, str, end))
- goto fail;
+ switch (p->text_segment_boundary.type) {
+ case EXTENDED_GRAPHEME_CLUSTER_BOUNDARY:
+ is_break = onigenc_egcb_is_break_position(encode, s, sprev, str, end);
+ break;
+#ifdef USE_UNICODE_WORD_BREAK
+ case WORD_BOUNDARY:
+ is_break = onigenc_wb_is_break_position(encode, s, sprev, str, end);
+ break;
+#endif
+ default:
+ goto bytecode_error;
+ break;
+ }
- SOP_OUT;
- continue;
- break;
+ if (p->text_segment_boundary.not != 0)
+ is_break = ! is_break;
- case OP_BEGIN_BUF: SOP_IN(OP_BEGIN_BUF);
+ if (is_break != 0) {
+ INC_OP;
+ JUMP_OUT;
+ }
+ else {
+ goto fail;
+ }
+ }
+
+ CASE_OP(BEGIN_BUF)
if (! ON_STR_BEGIN(s)) goto fail;
- SOP_OUT;
- continue;
- break;
+ INC_OP;
+ JUMP_OUT;
- case OP_END_BUF: SOP_IN(OP_END_BUF);
+ CASE_OP(END_BUF)
if (! ON_STR_END(s)) goto fail;
- SOP_OUT;
- continue;
- break;
+ INC_OP;
+ JUMP_OUT;
- case OP_BEGIN_LINE: SOP_IN(OP_BEGIN_LINE);
+ CASE_OP(BEGIN_LINE)
if (ON_STR_BEGIN(s)) {
if (IS_NOTBOL(msa->options)) goto fail;
- SOP_OUT;
- continue;
+ INC_OP;
+ JUMP_OUT;
}
else if (ONIGENC_IS_MBC_NEWLINE(encode, sprev, end) && !ON_STR_END(s)) {
- SOP_OUT;
- continue;
+ INC_OP;
+ JUMP_OUT;
}
goto fail;
- break;
- case OP_END_LINE: SOP_IN(OP_END_LINE);
+ CASE_OP(END_LINE)
if (ON_STR_END(s)) {
#ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE
if (IS_EMPTY_STR || !ONIGENC_IS_MBC_NEWLINE(encode, sprev, end)) {
#endif
if (IS_NOTEOL(msa->options)) goto fail;
- SOP_OUT;
- continue;
+ INC_OP;
+ JUMP_OUT;
#ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE
}
#endif
}
else if (ONIGENC_IS_MBC_NEWLINE(encode, s, end)) {
- SOP_OUT;
- continue;
+ INC_OP;
+ JUMP_OUT;
}
#ifdef USE_CRNL_AS_LINE_TERMINATOR
else if (ONIGENC_IS_MBC_CRNL(encode, s, end)) {
- SOP_OUT;
- continue;
+ INC_OP;
+ JUMP_OUT;
}
#endif
goto fail;
- break;
- case OP_SEMI_END_BUF: SOP_IN(OP_SEMI_END_BUF);
+ CASE_OP(SEMI_END_BUF)
if (ON_STR_END(s)) {
#ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE
if (IS_EMPTY_STR || !ONIGENC_IS_MBC_NEWLINE(encode, sprev, end)) {
#endif
if (IS_NOTEOL(msa->options)) goto fail;
- SOP_OUT;
- continue;
+ INC_OP;
+ JUMP_OUT;
#ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE
}
#endif
}
else if (ONIGENC_IS_MBC_NEWLINE(encode, s, end) &&
ON_STR_END(s + enclen(encode, s))) {
- SOP_OUT;
- continue;
+ INC_OP;
+ JUMP_OUT;
}
#ifdef USE_CRNL_AS_LINE_TERMINATOR
else if (ONIGENC_IS_MBC_CRNL(encode, s, end)) {
UChar* ss = s + enclen(encode, s);
ss += enclen(encode, ss);
if (ON_STR_END(ss)) {
- SOP_OUT;
- continue;
+ INC_OP;
+ JUMP_OUT;
}
}
#endif
goto fail;
- break;
- case OP_BEGIN_POSITION: SOP_IN(OP_BEGIN_POSITION);
+ CASE_OP(BEGIN_POSITION)
if (s != msa->start)
goto fail;
- SOP_OUT;
- continue;
- break;
+ INC_OP;
+ JUMP_OUT;
- case OP_MEMORY_START_PUSH: SOP_IN(OP_MEMORY_START_PUSH);
- GET_MEMNUM_INC(mem, p);
+ CASE_OP(MEMORY_START_PUSH)
+ mem = p->memory_start.num;
STACK_PUSH_MEM_START(mem, s);
- SOP_OUT;
- continue;
- break;
+ INC_OP;
+ JUMP_OUT;
- case OP_MEMORY_START: SOP_IN(OP_MEMORY_START);
- GET_MEMNUM_INC(mem, p);
+ CASE_OP(MEMORY_START)
+ mem = p->memory_start.num;
mem_start_stk[mem] = (StackIndex )((void* )s);
- SOP_OUT;
- continue;
- break;
+ INC_OP;
+ JUMP_OUT;
- case OP_MEMORY_END_PUSH: SOP_IN(OP_MEMORY_END_PUSH);
- GET_MEMNUM_INC(mem, p);
+ CASE_OP(MEMORY_END_PUSH)
+ mem = p->memory_end.num;
STACK_PUSH_MEM_END(mem, s);
- SOP_OUT;
- continue;
- break;
+ INC_OP;
+ JUMP_OUT;
- case OP_MEMORY_END: SOP_IN(OP_MEMORY_END);
- GET_MEMNUM_INC(mem, p);
+ CASE_OP(MEMORY_END)
+ mem = p->memory_end.num;
mem_end_stk[mem] = (StackIndex )((void* )s);
- SOP_OUT;
- continue;
- break;
+ INC_OP;
+ JUMP_OUT;
#ifdef USE_CALL
- case OP_MEMORY_END_PUSH_REC: SOP_IN(OP_MEMORY_END_PUSH_REC);
- GET_MEMNUM_INC(mem, p);
+ CASE_OP(MEMORY_END_PUSH_REC)
+ mem = p->memory_end.num;
STACK_GET_MEM_START(mem, stkp); /* should be before push mem-end. */
+ si = GET_STACK_INDEX(stkp);
STACK_PUSH_MEM_END(mem, s);
- mem_start_stk[mem] = GET_STACK_INDEX(stkp);
- SOP_OUT;
- continue;
- break;
+ mem_start_stk[mem] = si;
+ INC_OP;
+ JUMP_OUT;
- case OP_MEMORY_END_REC: SOP_IN(OP_MEMORY_END_REC);
- GET_MEMNUM_INC(mem, p);
+ CASE_OP(MEMORY_END_REC)
+ mem = p->memory_end.num;
mem_end_stk[mem] = (StackIndex )((void* )s);
STACK_GET_MEM_START(mem, stkp);
@@ -3263,23 +3449,20 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
mem_start_stk[mem] = (StackIndex )((void* )stkp->u.mem.pstr);
STACK_PUSH_MEM_END_MARK(mem);
- SOP_OUT;
- continue;
- break;
+ INC_OP;
+ JUMP_OUT;
#endif
- case OP_BACKREF1: SOP_IN(OP_BACKREF1);
+ CASE_OP(BACKREF1)
mem = 1;
goto backref;
- break;
- case OP_BACKREF2: SOP_IN(OP_BACKREF2);
+ CASE_OP(BACKREF2)
mem = 2;
goto backref;
- break;
- case OP_BACKREF_N: SOP_IN(OP_BACKREF_N);
- GET_MEMNUM_INC(mem, p);
+ CASE_OP(BACKREF_N)
+ mem = p->backref_n.n1;
backref:
{
int len;
@@ -3297,19 +3480,19 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
? STACK_AT(mem_end_stk[mem])->u.mem.pstr
: (UChar* )((void* )mem_end_stk[mem]));
n = (int )(pend - pstart);
- DATA_ENSURE(n);
- sprev = s;
- STRING_CMP(pstart, s, n);
- while (sprev + (len = enclen(encode, sprev)) < s)
- sprev += len;
-
- SOP_OUT;
- continue;
+ if (n != 0) {
+ DATA_ENSURE(n);
+ sprev = s;
+ STRING_CMP(s, pstart, n);
+ while (sprev + (len = enclen(encode, sprev)) < s)
+ sprev += len;
+ }
}
- break;
+ INC_OP;
+ JUMP_OUT;
- case OP_BACKREF_N_IC: SOP_IN(OP_BACKREF_N_IC);
- GET_MEMNUM_INC(mem, p);
+ CASE_OP(BACKREF_N_IC)
+ mem = p->backref_n.n1;
{
int len;
UChar *pstart, *pend;
@@ -3326,25 +3509,25 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
? STACK_AT(mem_end_stk[mem])->u.mem.pstr
: (UChar* )((void* )mem_end_stk[mem]));
n = (int )(pend - pstart);
- DATA_ENSURE(n);
- sprev = s;
- STRING_CMP_IC(case_fold_flag, pstart, &s, n);
- while (sprev + (len = enclen(encode, sprev)) < s)
- sprev += len;
-
- SOP_OUT;
- continue;
+ if (n != 0) {
+ DATA_ENSURE(n);
+ sprev = s;
+ STRING_CMP_IC(case_fold_flag, pstart, &s, n);
+ while (sprev + (len = enclen(encode, sprev)) < s)
+ sprev += len;
+ }
}
- break;
+ INC_OP;
+ JUMP_OUT;
- case OP_BACKREF_MULTI: SOP_IN(OP_BACKREF_MULTI);
+ CASE_OP(BACKREF_MULTI)
{
int len, is_fail;
UChar *pstart, *pend, *swork;
- GET_LENGTH_INC(tlen, p);
+ tlen = p->backref_general.num;
for (i = 0; i < tlen; i++) {
- GET_MEMNUM_INC(mem, p);
+ mem = tlen == 1 ? p->backref_general.n1 : p->backref_general.ns[i];
if (mem_end_stk[mem] == INVALID_STACK_INDEX) continue;
if (mem_start_stk[mem] == INVALID_STACK_INDEX) continue;
@@ -3358,32 +3541,31 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
? STACK_AT(mem_end_stk[mem])->u.mem.pstr
: (UChar* )((void* )mem_end_stk[mem]));
n = (int )(pend - pstart);
- DATA_ENSURE(n);
- sprev = s;
- swork = s;
- STRING_CMP_VALUE(pstart, swork, n, is_fail);
- if (is_fail) continue;
- s = swork;
- while (sprev + (len = enclen(encode, sprev)) < s)
- sprev += len;
-
- p += (SIZE_MEMNUM * (tlen - i - 1));
+ if (n != 0) {
+ DATA_ENSURE(n);
+ sprev = s;
+ swork = s;
+ STRING_CMP_VALUE(swork, pstart, n, is_fail);
+ if (is_fail) continue;
+ s = swork;
+ while (sprev + (len = enclen(encode, sprev)) < s)
+ sprev += len;
+ }
break; /* success */
}
if (i == tlen) goto fail;
- SOP_OUT;
- continue;
}
- break;
+ INC_OP;
+ JUMP_OUT;
- case OP_BACKREF_MULTI_IC: SOP_IN(OP_BACKREF_MULTI_IC);
+ CASE_OP(BACKREF_MULTI_IC)
{
int len, is_fail;
UChar *pstart, *pend, *swork;
- GET_LENGTH_INC(tlen, p);
+ tlen = p->backref_general.num;
for (i = 0; i < tlen; i++) {
- GET_MEMNUM_INC(mem, p);
+ mem = tlen == 1 ? p->backref_general.n1 : p->backref_general.ns[i];
if (mem_end_stk[mem] == INVALID_STACK_INDEX) continue;
if (mem_start_stk[mem] == INVALID_STACK_INDEX) continue;
@@ -3397,139 +3579,140 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
? STACK_AT(mem_end_stk[mem])->u.mem.pstr
: (UChar* )((void* )mem_end_stk[mem]));
n = (int )(pend - pstart);
- DATA_ENSURE(n);
- sprev = s;
- swork = s;
- STRING_CMP_VALUE_IC(case_fold_flag, pstart, &swork, n, is_fail);
- if (is_fail) continue;
- s = swork;
- while (sprev + (len = enclen(encode, sprev)) < s)
- sprev += len;
-
- p += (SIZE_MEMNUM * (tlen - i - 1));
+ if (n != 0) {
+ DATA_ENSURE(n);
+ sprev = s;
+ swork = s;
+ STRING_CMP_VALUE_IC(case_fold_flag, pstart, &swork, n, is_fail);
+ if (is_fail) continue;
+ s = swork;
+ while (sprev + (len = enclen(encode, sprev)) < s)
+ sprev += len;
+ }
break; /* success */
}
if (i == tlen) goto fail;
- SOP_OUT;
- continue;
}
- break;
+ INC_OP;
+ JUMP_OUT;
#ifdef USE_BACKREF_WITH_LEVEL
- case OP_BACKREF_WITH_LEVEL:
+ CASE_OP(BACKREF_WITH_LEVEL_IC)
+ n = 1; /* ignore case */
+ goto backref_with_level;
+ CASE_OP(BACKREF_WITH_LEVEL)
{
int len;
- OnigOptionType ic;
- LengthType level;
-
- GET_OPTION_INC(ic, p);
- GET_LENGTH_INC(level, p);
- GET_LENGTH_INC(tlen, p);
-
- sprev = s;
- if (backref_match_at_nested_level(reg, stk, stk_base, ic
- , case_fold_flag, (int )level, (int )tlen, p, &s, end)) {
- if (sprev < end) {
+ int level;
+ MemNumType* mems;
+ UChar* ssave;
+
+ n = 0;
+ backref_with_level:
+ level = p->backref_general.nest_level;
+ tlen = p->backref_general.num;
+ mems = tlen == 1 ? &(p->backref_general.n1) : p->backref_general.ns;
+
+ ssave = s;
+ if (backref_match_at_nested_level(reg, stk, stk_base, n,
+ case_fold_flag, level, (int )tlen, mems, &s, end)) {
+ if (ssave != s) {
+ sprev = ssave;
while (sprev + (len = enclen(encode, sprev)) < s)
sprev += len;
}
- p += (SIZE_MEMNUM * tlen);
}
else
goto fail;
-
- SOP_OUT;
- continue;
}
- break;
+ INC_OP;
+ JUMP_OUT;
#endif
- case OP_BACKREF_CHECK: SOP_IN(OP_BACKREF_CHECK);
+ CASE_OP(BACKREF_CHECK)
{
- GET_LENGTH_INC(tlen, p);
- for (i = 0; i < tlen; i++) {
- GET_MEMNUM_INC(mem, p);
+ MemNumType* mems;
+
+ tlen = p->backref_general.num;
+ mems = tlen == 1 ? &(p->backref_general.n1) : p->backref_general.ns;
+ for (i = 0; i < tlen; i++) {
+ mem = mems[i];
if (mem_end_stk[mem] == INVALID_STACK_INDEX) continue;
if (mem_start_stk[mem] == INVALID_STACK_INDEX) continue;
-
- p += (SIZE_MEMNUM * (tlen - i - 1));
break; /* success */
}
if (i == tlen) goto fail;
- SOP_OUT;
- continue;
}
- break;
+ INC_OP;
+ JUMP_OUT;
#ifdef USE_BACKREF_WITH_LEVEL
- case OP_BACKREF_CHECK_WITH_LEVEL:
+ CASE_OP(BACKREF_CHECK_WITH_LEVEL)
{
LengthType level;
+ MemNumType* mems;
- GET_LENGTH_INC(level, p);
- GET_LENGTH_INC(tlen, p);
+ level = p->backref_general.nest_level;
+ tlen = p->backref_general.num;
+ mems = tlen == 1 ? &(p->backref_general.n1) : p->backref_general.ns;
if (backref_check_at_nested_level(reg, stk, stk_base,
- (int )level, (int )tlen, p) != 0) {
- p += (SIZE_MEMNUM * tlen);
- }
- else
+ (int )level, (int )tlen, mems) == 0)
goto fail;
-
- SOP_OUT;
- continue;
}
- break;
+ INC_OP;
+ JUMP_OUT;
#endif
- case OP_EMPTY_CHECK_START: SOP_IN(OP_EMPTY_CHECK_START);
- GET_MEMNUM_INC(mem, p); /* mem: null check id */
+ CASE_OP(EMPTY_CHECK_START)
+ mem = p->empty_check_start.mem; /* mem: null check id */
STACK_PUSH_EMPTY_CHECK_START(mem, s);
- SOP_OUT;
- continue;
- break;
+ INC_OP;
+ JUMP_OUT;
- case OP_EMPTY_CHECK_END: SOP_IN(OP_EMPTY_CHECK_END);
+ CASE_OP(EMPTY_CHECK_END)
{
int is_empty;
- GET_MEMNUM_INC(mem, p); /* mem: null check id */
+ mem = p->empty_check_end.mem; /* mem: null check id */
STACK_EMPTY_CHECK(is_empty, mem, s);
+ INC_OP;
if (is_empty) {
#ifdef ONIG_DEBUG_MATCH
fprintf(stderr, "EMPTY_CHECK_END: skip id:%d, s:%p\n", (int )mem, s);
#endif
empty_check_found:
/* empty loop founded, skip next instruction */
- switch (*p++) {
+#if defined(ONIG_DEBUG) && !defined(USE_DIRECT_THREADED_CODE)
+ switch (p->opcode) {
case OP_JUMP:
case OP_PUSH:
- p += SIZE_RELADDR;
- break;
case OP_REPEAT_INC:
case OP_REPEAT_INC_NG:
case OP_REPEAT_INC_SG:
case OP_REPEAT_INC_NG_SG:
- p += SIZE_MEMNUM;
+ INC_OP;
break;
default:
goto unexpected_bytecode_error;
break;
}
+#else
+ INC_OP;
+#endif
}
}
- SOP_OUT;
- continue;
- break;
+ JUMP_OUT;
-#ifdef USE_INSISTENT_CHECK_CAPTURES_IN_EMPTY_REPEAT
- case OP_EMPTY_CHECK_END_MEMST: SOP_IN(OP_EMPTY_CHECK_END_MEMST);
+#ifdef USE_STUBBORN_CHECK_CAPTURES_IN_EMPTY_REPEAT
+ CASE_OP(EMPTY_CHECK_END_MEMST)
{
int is_empty;
- GET_MEMNUM_INC(mem, p); /* mem: null check id */
+ mem = p->empty_check_end.mem; /* mem: null check id */
STACK_EMPTY_CHECK_MEM(is_empty, mem, s, reg);
+ INC_OP;
if (is_empty) {
#ifdef ONIG_DEBUG_MATCH
fprintf(stderr, "EMPTY_CHECK_END_MEM: skip id:%d, s:%p\n", (int)mem, s);
@@ -3538,23 +3721,21 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
goto empty_check_found;
}
}
- SOP_OUT;
- continue;
- break;
+ JUMP_OUT;
#endif
#ifdef USE_CALL
- case OP_EMPTY_CHECK_END_MEMST_PUSH:
- SOP_IN(OP_EMPTY_CHECK_END_MEMST_PUSH);
+ CASE_OP(EMPTY_CHECK_END_MEMST_PUSH)
{
int is_empty;
- GET_MEMNUM_INC(mem, p); /* mem: null check id */
-#ifdef USE_INSISTENT_CHECK_CAPTURES_IN_EMPTY_REPEAT
+ mem = p->empty_check_end.mem; /* mem: null check id */
+#ifdef USE_STUBBORN_CHECK_CAPTURES_IN_EMPTY_REPEAT
STACK_EMPTY_CHECK_MEM_REC(is_empty, mem, s, reg);
#else
STACK_EMPTY_CHECK_REC(is_empty, mem, s);
#endif
+ INC_OP;
if (is_empty) {
#ifdef ONIG_DEBUG_MATCH
fprintf(stderr, "EMPTY_CHECK_END_MEM_PUSH: skip id:%d, s:%p\n",
@@ -3567,113 +3748,108 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
STACK_PUSH_EMPTY_CHECK_END(mem);
}
}
- SOP_OUT;
- continue;
- break;
+ JUMP_OUT;
#endif
- case OP_JUMP: SOP_IN(OP_JUMP);
- GET_RELADDR_INC(addr, p);
+ CASE_OP(JUMP)
+ addr = p->jump.addr;
p += addr;
- SOP_OUT;
- CHECK_INTERRUPT_IN_MATCH;
- continue;
- break;
+ CHECK_INTERRUPT_JUMP_OUT;
- case OP_PUSH: SOP_IN(OP_PUSH);
- GET_RELADDR_INC(addr, p);
+ CASE_OP(PUSH)
+ addr = p->push.addr;
STACK_PUSH_ALT(p + addr, s, sprev);
- SOP_OUT;
- continue;
- break;
+ INC_OP;
+ JUMP_OUT;
- case OP_PUSH_SUPER: SOP_IN(OP_PUSH_SUPER);
- GET_RELADDR_INC(addr, p);
+ CASE_OP(PUSH_SUPER)
+ addr = p->push.addr;
STACK_PUSH_SUPER_ALT(p + addr, s, sprev);
- SOP_OUT;
- continue;
- break;
+ INC_OP;
+ JUMP_OUT;
- case OP_POP_OUT: SOP_IN(OP_POP_OUT);
+ CASE_OP(POP_OUT)
STACK_POP_ONE;
/* for stop backtrack */
/* CHECK_RETRY_LIMIT_IN_MATCH; */
- SOP_OUT;
- continue;
- break;
+ INC_OP;
+ JUMP_OUT;
- case OP_PUSH_OR_JUMP_EXACT1: SOP_IN(OP_PUSH_OR_JUMP_EXACT1);
- GET_RELADDR_INC(addr, p);
- if (*p == *s && DATA_ENSURE_CHECK1) {
- p++;
- STACK_PUSH_ALT(p + addr, s, sprev);
- SOP_OUT;
- continue;
- }
- p += (addr + 1);
- SOP_OUT;
- continue;
- break;
+ #ifdef USE_OP_PUSH_OR_JUMP_EXACT
+ CASE_OP(PUSH_OR_JUMP_EXACT1)
+ {
+ UChar c;
- case OP_PUSH_IF_PEEK_NEXT: SOP_IN(OP_PUSH_IF_PEEK_NEXT);
- GET_RELADDR_INC(addr, p);
- if (*p == *s) {
- p++;
- STACK_PUSH_ALT(p + addr, s, sprev);
- SOP_OUT;
- continue;
+ addr = p->push_or_jump_exact1.addr;
+ c = p->push_or_jump_exact1.c;
+ if (DATA_ENSURE_CHECK1 && c == *s) {
+ STACK_PUSH_ALT(p + addr, s, sprev);
+ INC_OP;
+ JUMP_OUT;
+ }
}
- p++;
- SOP_OUT;
- continue;
- break;
+ p += addr;
+ JUMP_OUT;
+#endif
- case OP_REPEAT: SOP_IN(OP_REPEAT);
+ CASE_OP(PUSH_IF_PEEK_NEXT)
{
- GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */
- GET_RELADDR_INC(addr, p);
-
- STACK_ENSURE(1);
- repeat_stk[mem] = GET_STACK_INDEX(stk);
- STACK_PUSH_REPEAT(mem, p);
+ UChar c;
- if (reg->repeat_range[mem].lower == 0) {
+ addr = p->push_if_peek_next.addr;
+ c = p->push_if_peek_next.c;
+ if (c == *s) {
STACK_PUSH_ALT(p + addr, s, sprev);
+ INC_OP;
+ JUMP_OUT;
}
}
- SOP_OUT;
- continue;
- break;
+ INC_OP;
+ JUMP_OUT;
- case OP_REPEAT_NG: SOP_IN(OP_REPEAT_NG);
- {
- GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */
- GET_RELADDR_INC(addr, p);
+ CASE_OP(REPEAT)
+ mem = p->repeat.id; /* mem: OP_REPEAT ID */
+ addr = p->repeat.addr;
- STACK_ENSURE(1);
- repeat_stk[mem] = GET_STACK_INDEX(stk);
- STACK_PUSH_REPEAT(mem, p);
+ STACK_ENSURE(1);
+ repeat_stk[mem] = GET_STACK_INDEX(stk);
+ STACK_PUSH_REPEAT(mem, p + 1);
- if (reg->repeat_range[mem].lower == 0) {
- STACK_PUSH_ALT(p, s, sprev);
- p += addr;
- }
+ if (reg->repeat_range[mem].lower == 0) {
+ STACK_PUSH_ALT(p + addr, s, sprev);
}
- SOP_OUT;
- continue;
- break;
+ INC_OP;
+ JUMP_OUT;
- case OP_REPEAT_INC: SOP_IN(OP_REPEAT_INC);
- GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */
- si = repeat_stk[mem];
+ CASE_OP(REPEAT_NG)
+ mem = p->repeat.id; /* mem: OP_REPEAT ID */
+ addr = p->repeat.addr;
+
+ STACK_ENSURE(1);
+ repeat_stk[mem] = GET_STACK_INDEX(stk);
+ STACK_PUSH_REPEAT(mem, p + 1);
+
+ if (reg->repeat_range[mem].lower == 0) {
+ STACK_PUSH_ALT(p + 1, s, sprev);
+ p += addr;
+ }
+ else
+ INC_OP;
+ JUMP_OUT;
+
+ CASE_OP(REPEAT_INC)
+ mem = p->repeat_inc.id; /* mem: OP_REPEAT ID */
+ si = repeat_stk[mem];
stkp = STACK_AT(si);
repeat_inc:
stkp->u.repeat.count++;
if (stkp->u.repeat.count >= reg->repeat_range[mem].upper) {
/* end of repeat. Nothing to do. */
+ INC_OP;
}
else if (stkp->u.repeat.count >= reg->repeat_range[mem].lower) {
+ INC_OP;
STACK_PUSH_ALT(p, s, sprev);
p = STACK_AT(si)->u.repeat.pcode; /* Don't use stkp after PUSH. */
}
@@ -3681,20 +3857,16 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
p = stkp->u.repeat.pcode;
}
STACK_PUSH_REPEAT_INC(si);
- SOP_OUT;
- CHECK_INTERRUPT_IN_MATCH;
- continue;
- break;
+ CHECK_INTERRUPT_JUMP_OUT;
- case OP_REPEAT_INC_SG: SOP_IN(OP_REPEAT_INC_SG);
- GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */
+ CASE_OP(REPEAT_INC_SG)
+ mem = p->repeat_inc.id; /* mem: OP_REPEAT ID */
STACK_GET_REPEAT(mem, stkp);
si = GET_STACK_INDEX(stkp);
goto repeat_inc;
- break;
- case OP_REPEAT_INC_NG: SOP_IN(OP_REPEAT_INC_NG);
- GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */
+ CASE_OP(REPEAT_INC_NG)
+ mem = p->repeat_inc.id; /* mem: OP_REPEAT ID */
si = repeat_stk[mem];
stkp = STACK_AT(si);
@@ -3702,10 +3874,11 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
stkp->u.repeat.count++;
if (stkp->u.repeat.count < reg->repeat_range[mem].upper) {
if (stkp->u.repeat.count >= reg->repeat_range[mem].lower) {
- UChar* pcode = stkp->u.repeat.pcode;
+ Operation* pcode = stkp->u.repeat.pcode;
STACK_PUSH_REPEAT_INC(si);
STACK_PUSH_ALT(pcode, s, sprev);
+ INC_OP;
}
else {
p = stkp->u.repeat.pcode;
@@ -3714,71 +3887,60 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
}
else if (stkp->u.repeat.count == reg->repeat_range[mem].upper) {
STACK_PUSH_REPEAT_INC(si);
+ INC_OP;
}
- SOP_OUT;
- CHECK_INTERRUPT_IN_MATCH;
- continue;
- break;
+ CHECK_INTERRUPT_JUMP_OUT;
- case OP_REPEAT_INC_NG_SG: SOP_IN(OP_REPEAT_INC_NG_SG);
- GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */
+ CASE_OP(REPEAT_INC_NG_SG)
+ mem = p->repeat_inc.id; /* mem: OP_REPEAT ID */
STACK_GET_REPEAT(mem, stkp);
si = GET_STACK_INDEX(stkp);
goto repeat_inc_ng;
- break;
-
- case OP_PREC_READ_START: SOP_IN(OP_PREC_READ_START);
- STACK_PUSH_POS(s, sprev);
- SOP_OUT;
- continue;
- break;
- case OP_PREC_READ_END: SOP_IN(OP_PREC_READ_END);
- {
- STACK_EXEC_TO_VOID(stkp);
- s = stkp->u.state.pstr;
- sprev = stkp->u.state.pstr_prev;
- }
- SOP_OUT;
- continue;
- break;
-
- case OP_PREC_READ_NOT_START: SOP_IN(OP_PREC_READ_NOT_START);
- GET_RELADDR_INC(addr, p);
+ CASE_OP(PREC_READ_START)
+ STACK_PUSH_PREC_READ_START(s, sprev);
+ INC_OP;
+ JUMP_OUT;
+
+ CASE_OP(PREC_READ_END)
+ STACK_GET_PREC_READ_START(stkp);
+ s = stkp->u.state.pstr;
+ sprev = stkp->u.state.pstr_prev;
+ STACK_PUSH(STK_PREC_READ_END,0,0,0);
+ INC_OP;
+ JUMP_OUT;
+
+ CASE_OP(PREC_READ_NOT_START)
+ addr = p->prec_read_not_start.addr;
STACK_PUSH_ALT_PREC_READ_NOT(p + addr, s, sprev);
- SOP_OUT;
- continue;
- break;
+ INC_OP;
+ JUMP_OUT;
- case OP_PREC_READ_NOT_END: SOP_IN(OP_PREC_READ_NOT_END);
+ CASE_OP(PREC_READ_NOT_END)
STACK_POP_TIL_ALT_PREC_READ_NOT;
goto fail;
- break;
- case OP_ATOMIC_START: SOP_IN(OP_ATOMIC_START);
+ CASE_OP(ATOMIC_START)
STACK_PUSH_TO_VOID_START;
- SOP_OUT;
- continue;
- break;
+ INC_OP;
+ JUMP_OUT;
- case OP_ATOMIC_END: SOP_IN(OP_ATOMIC_END);
+ CASE_OP(ATOMIC_END)
STACK_EXEC_TO_VOID(stkp);
- SOP_OUT;
- continue;
- break;
+ INC_OP;
+ JUMP_OUT;
- case OP_LOOK_BEHIND: SOP_IN(OP_LOOK_BEHIND);
- GET_LENGTH_INC(tlen, p);
+ CASE_OP(LOOK_BEHIND)
+ tlen = p->look_behind.len;
s = (UChar* )ONIGENC_STEP_BACK(encode, str, s, (int )tlen);
if (IS_NULL(s)) goto fail;
sprev = (UChar* )onigenc_get_prev_char_head(encode, str, s);
- SOP_OUT;
- continue;
- break;
+ INC_OP;
+ JUMP_OUT;
- case OP_LOOK_BEHIND_NOT_START: SOP_IN(OP_LOOK_BEHIND_NOT_START);
- GET_RELADDR_INC(addr, p);
- GET_LENGTH_INC(tlen, p);
+ CASE_OP(LOOK_BEHIND_NOT_START)
+ addr = p->look_behind_not_start.addr;
+ tlen = p->look_behind_not_start.len;
q = (UChar* )ONIGENC_STEP_BACK(encode, str, s, (int )tlen);
if (IS_NULL(q)) {
/* too short case -> success. ex. /(?<!XXX)a/.match("a")
@@ -3790,38 +3952,34 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
STACK_PUSH_ALT_LOOK_BEHIND_NOT(p + addr, s, sprev);
s = q;
sprev = (UChar* )onigenc_get_prev_char_head(encode, str, s);
+ INC_OP;
}
- SOP_OUT;
- continue;
- break;
+ JUMP_OUT;
- case OP_LOOK_BEHIND_NOT_END: SOP_IN(OP_LOOK_BEHIND_NOT_END);
+ CASE_OP(LOOK_BEHIND_NOT_END)
STACK_POP_TIL_ALT_LOOK_BEHIND_NOT;
+ INC_OP;
goto fail;
- break;
#ifdef USE_CALL
- case OP_CALL: SOP_IN(OP_CALL);
- GET_ABSADDR_INC(addr, p);
- STACK_PUSH_CALL_FRAME(p);
- p = reg->p + addr;
- SOP_OUT;
- continue;
- break;
+ CASE_OP(CALL)
+ addr = p->call.addr;
+ INC_OP; STACK_PUSH_CALL_FRAME(p);
+ p = reg->ops + addr;
+ JUMP_OUT;
- case OP_RETURN: SOP_IN(OP_RETURN);
+ CASE_OP(RETURN)
STACK_RETURN(p);
STACK_PUSH_RETURN;
- SOP_OUT;
- continue;
- break;
+ JUMP_OUT;
#endif
- case OP_PUSH_SAVE_VAL: SOP_IN(OP_PUSH_SAVE_VAL);
+ CASE_OP(PUSH_SAVE_VAL)
{
SaveType type;
- GET_SAVE_TYPE_INC(type, p);
- GET_MEMNUM_INC(mem, p); /* mem: save id */
+
+ type = p->push_save_val.type;
+ mem = p->push_save_val.id; /* mem: save id */
switch ((enum SaveType )type) {
case SAVE_KEEP:
STACK_PUSH_SAVE_VAL(mem, type, s);
@@ -3836,17 +3994,17 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
break;
}
}
- SOP_OUT;
- continue;
- break;
+ INC_OP;
+ JUMP_OUT;
- case OP_UPDATE_VAR: SOP_IN(OP_UPDATE_VAR);
+ CASE_OP(UPDATE_VAR)
{
UpdateVarType type;
enum SaveType save_type;
- GET_UPDATE_VAR_TYPE_INC(type, p);
- GET_MEMNUM_INC(mem, p); /* mem: save id */
+ type = p->update_var.type;
+ mem = p->update_var.id; /* mem: save id */
+
switch ((enum UpdateVarType )type) {
case UPDATE_VAR_KEEP_FROM_STACK_LAST:
STACK_GET_SAVE_VAL_TYPE_LAST(SAVE_KEEP, keep);
@@ -3868,38 +4026,34 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
break;
}
}
- SOP_OUT;
- continue;
- break;
+ INC_OP;
+ JUMP_OUT;
#ifdef USE_CALLOUT
- case OP_CALLOUT_CONTENTS: SOP_IN(OP_CALLOUT_CONTENTS);
+ CASE_OP(CALLOUT_CONTENTS)
of = ONIG_CALLOUT_OF_CONTENTS;
+ mem = p->callout_contents.num;
goto callout_common_entry;
+ BREAK_OUT;
- SOP_OUT;
- continue;
- break;
-
- case OP_CALLOUT_NAME: SOP_IN(OP_CALLOUT_NAME);
+ CASE_OP(CALLOUT_NAME)
{
int call_result;
int name_id;
- int num;
int in;
CalloutListEntry* e;
OnigCalloutFunc func;
OnigCalloutArgs args;
of = ONIG_CALLOUT_OF_NAME;
- GET_MEMNUM_INC(name_id, p);
+ name_id = p->callout_name.id;
+ mem = p->callout_name.num;
callout_common_entry:
- GET_MEMNUM_INC(num, p);
- e = onig_reg_callout_list_at(reg, num);
+ e = onig_reg_callout_list_at(reg, mem);
in = e->in;
if (of == ONIG_CALLOUT_OF_NAME) {
- func = onig_get_callout_start_func(reg, num);
+ func = onig_get_callout_start_func(reg, mem);
}
else {
name_id = ONIG_NON_NAME_ID;
@@ -3908,7 +4062,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
if (IS_NOT_NULL(func) && (in & ONIG_CALLOUT_IN_PROGRESS) != 0) {
CALLOUT_BODY(func, ONIG_CALLOUT_IN_PROGRESS, name_id,
- num, msa->mp->callout_user_data, args, call_result);
+ (int )mem, msa->mp->callout_user_data, args, call_result);
switch (call_result) {
case ONIG_CALLOUT_FAIL:
goto fail;
@@ -3930,46 +4084,47 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
if ((in & ONIG_CALLOUT_IN_RETRACTION) != 0) {
if (of == ONIG_CALLOUT_OF_NAME) {
if (IS_NOT_NULL(func)) {
- STACK_PUSH_CALLOUT_NAME(name_id, num, func);
+ STACK_PUSH_CALLOUT_NAME(name_id, mem, func);
}
}
else {
func = msa->mp->retraction_callout_of_contents;
if (IS_NOT_NULL(func)) {
- STACK_PUSH_CALLOUT_CONTENTS(num, func);
+ STACK_PUSH_CALLOUT_CONTENTS(mem, func);
}
}
}
}
}
- SOP_OUT;
- continue;
- break;
+ INC_OP;
+ JUMP_OUT;
#endif
- case OP_FINISH:
+ CASE_OP(FINISH)
goto finish;
- break;
+#ifdef ONIG_DEBUG_STATISTICS
fail:
SOP_OUT;
- /* fall */
- case OP_FAIL: SOP_IN(OP_FAIL);
+ goto fail2;
+#endif
+ CASE_OP(FAIL)
+#ifdef ONIG_DEBUG_STATISTICS
+ fail2:
+#else
+ fail:
+#endif
STACK_POP;
p = stk->u.state.pcode;
s = stk->u.state.pstr;
sprev = stk->u.state.pstr_prev;
CHECK_RETRY_LIMIT_IN_MATCH;
- SOP_OUT;
- continue;
- break;
+ JUMP_OUT;
- default:
+ DEFAULT_OP
goto bytecode_error;
- } /* end of switch */
- sprev = sbegin;
- } /* end of while(1) */
+ } BYTECODE_INTERPRETER_END;
finish:
STACK_SAVE;
@@ -3985,9 +4140,11 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
STACK_SAVE;
return ONIGERR_UNDEFINED_BYTECODE;
+#if defined(ONIG_DEBUG) && !defined(USE_DIRECT_THREADED_CODE)
unexpected_bytecode_error:
STACK_SAVE;
return ONIGERR_UNEXPECTED_BYTECODE;
+#endif
#ifdef USE_RETRY_LIMIT_IN_MATCH
retry_limit_in_match_over:
@@ -4136,150 +4293,143 @@ slow_search_backward_ic(OnigEncoding enc, int case_fold_flag,
return (UChar* )NULL;
}
+
static UChar*
-bm_search_notrev(regex_t* reg, const UChar* target, const UChar* target_end,
- const UChar* text, const UChar* text_end,
- const UChar* text_range)
+sunday_quick_search_step_forward(regex_t* reg,
+ const UChar* target, const UChar* target_end,
+ const UChar* text, const UChar* text_end,
+ const UChar* text_range)
{
const UChar *s, *se, *t, *p, *end;
const UChar *tail;
int skip, tlen1;
+ int map_offset;
+ OnigEncoding enc;
#ifdef ONIG_DEBUG_SEARCH
- fprintf(stderr, "bm_search_notrev: text: %p, text_end: %p, text_range: %p\n",
- text, text_end, text_range);
+ fprintf(stderr,
+ "sunday_quick_search_step_forward: text: %p, text_end: %p, text_range: %p\n", text, text_end, text_range);
#endif
+ enc = reg->enc;
+
tail = target_end - 1;
tlen1 = (int )(tail - target);
end = text_range;
if (end + tlen1 > text_end)
end = text_end - tlen1;
+ map_offset = reg->map_offset;
s = text;
- if (IS_NULL(reg->int_map)) {
- while (s < end) {
- p = se = s + tlen1;
- t = tail;
- while (*p == *t) {
- if (t == target) return (UChar* )s;
- p--; t--;
- }
- skip = reg->map[*se];
- t = s;
- do {
- s += enclen(reg->enc, s);
- } while ((s - t) < skip && s < end);
- }
- }
- else {
- while (s < end) {
- p = se = s + tlen1;
- t = tail;
- while (*p == *t) {
- if (t == target) return (UChar* )s;
- p--; t--;
- }
- skip = reg->int_map[*se];
- t = s;
- do {
- s += enclen(reg->enc, s);
- } while ((s - t) < skip && s < end);
+ while (s < end) {
+ p = se = s + tlen1;
+ t = tail;
+ while (*p == *t) {
+ if (t == target) return (UChar* )s;
+ p--; t--;
}
+ if (se + map_offset >= text_end) break;
+ skip = reg->map[*(se + map_offset)];
+#if 0
+ t = s;
+ do {
+ s += enclen(enc, s);
+ } while ((s - t) < skip && s < end);
+#else
+ s += skip;
+ if (s < end)
+ s = onigenc_get_right_adjust_char_head(enc, text, s);
+#endif
}
return (UChar* )NULL;
}
static UChar*
-bm_search(regex_t* reg, const UChar* target, const UChar* target_end,
- const UChar* text, const UChar* text_end, const UChar* text_range)
+sunday_quick_search(regex_t* reg, const UChar* target, const UChar* target_end,
+ const UChar* text, const UChar* text_end,
+ const UChar* text_range)
{
const UChar *s, *t, *p, *end;
const UChar *tail;
+ int map_offset;
- end = text_range + (target_end - target) - 1;
+ end = text_range + (target_end - target);
if (end > text_end)
end = text_end;
+ map_offset = reg->map_offset;
tail = target_end - 1;
- s = text + (target_end - target) - 1;
- if (IS_NULL(reg->int_map)) {
- while (s < end) {
- p = s;
- t = tail;
- while (*p == *t) {
- if (t == target) return (UChar* )p;
- p--; t--;
- }
- s += reg->map[*s];
- }
- }
- else { /* see int_map[] */
- while (s < end) {
- p = s;
- t = tail;
- while (*p == *t) {
- if (t == target) return (UChar* )p;
- p--; t--;
- }
- s += reg->int_map[*s];
+ s = text + (tail - target);
+
+ while (s < end) {
+ p = s;
+ t = tail;
+ while (*p == *t) {
+ if (t == target) return (UChar* )p;
+ p--; t--;
}
+ if (s + map_offset >= text_end) break;
+ s += reg->map[*(s + map_offset)];
}
+
return (UChar* )NULL;
}
-#ifdef USE_INT_MAP_BACKWARD
-static int
-set_bm_backward_skip(UChar* s, UChar* end, OnigEncoding enc ARG_UNUSED, int** skip)
+static UChar*
+sunday_quick_search_case_fold(regex_t* reg,
+ const UChar* target, const UChar* target_end,
+ const UChar* text, const UChar* text_end,
+ const UChar* text_range)
{
- int i, len;
-
- if (IS_NULL(*skip)) {
- *skip = (int* )xmalloc(sizeof(int) * ONIG_CHAR_TABLE_SIZE);
- if (IS_NULL(*skip)) return ONIGERR_MEMORY;
- }
-
- len = end - s;
- for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++)
- (*skip)[i] = len;
+ const UChar *s, *se, *end;
+ const UChar *tail;
+ int skip, tlen1;
+ int map_offset;
+ int case_fold_flag;
+ OnigEncoding enc;
- for (i = len - 1; i > 0; i--)
- (*skip)[s[i]] = i;
+#ifdef ONIG_DEBUG_SEARCH
+ fprintf(stderr,
+ "sunday_quick_search_case_fold: text: %p, text_end: %p, text_range: %p\n", text, text_end, text_range);
+#endif
- return 0;
-}
+ enc = reg->enc;
+ case_fold_flag = reg->case_fold_flag;
-static UChar*
-bm_search_backward(regex_t* reg, const UChar* target, const UChar* target_end,
- const UChar* text, const UChar* adjust_text,
- const UChar* text_end, const UChar* text_start)
-{
- const UChar *s, *t, *p;
+ tail = target_end - 1;
+ tlen1 = (int )(tail - target);
+ end = text_range;
+ if (end + tlen1 > text_end)
+ end = text_end - tlen1;
- s = text_end - (target_end - target);
- if (text_start < s)
- s = text_start;
- else
- s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, adjust_text, s);
+ map_offset = reg->map_offset;
+ s = text;
- while (s >= text) {
- p = s;
- t = target;
- while (t < target_end && *p == *t) {
- p++; t++;
- }
- if (t == target_end)
+ while (s < end) {
+ if (str_lower_case_match(enc, case_fold_flag, target, target_end,
+ s, text_end))
return (UChar* )s;
- s -= reg->int_map_backward[*s];
- s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, adjust_text, s);
+ se = s + tlen1;
+ if (se + map_offset >= text_end) break;
+ skip = reg->map[*(se + map_offset)];
+#if 0
+ p = s;
+ do {
+ s += enclen(enc, s);
+ } while ((s - p) < skip && s < end);
+#else
+ /* This is faster than prev code for long text. ex: /(?i)Twain/ */
+ s += skip;
+ if (s < end)
+ s = onigenc_get_right_adjust_char_head(enc, text, s);
+#endif
}
return (UChar* )NULL;
}
-#endif
static UChar*
map_search(OnigEncoding enc, UChar map[],
@@ -4391,20 +4541,26 @@ forward_search_range(regex_t* reg, const UChar* str, const UChar* end, UChar* s,
retry:
switch (reg->optimize) {
- case OPTIMIZE_EXACT:
+ case OPTIMIZE_STR:
p = slow_search(reg->enc, reg->exact, reg->exact_end, p, end, range);
break;
- case OPTIMIZE_EXACT_IC:
+ case OPTIMIZE_STR_CASE_FOLD:
p = slow_search_ic(reg->enc, reg->case_fold_flag,
reg->exact, reg->exact_end, p, end, range);
break;
- case OPTIMIZE_EXACT_BM:
- p = bm_search(reg, reg->exact, reg->exact_end, p, end, range);
+ case OPTIMIZE_STR_CASE_FOLD_FAST:
+ p = sunday_quick_search_case_fold(reg, reg->exact, reg->exact_end, p, end,
+ range);
break;
- case OPTIMIZE_EXACT_BM_NO_REV:
- p = bm_search_notrev(reg, reg->exact, reg->exact_end, p, end, range);
+ case OPTIMIZE_STR_FAST:
+ p = sunday_quick_search(reg, reg->exact, reg->exact_end, p, end, range);
+ break;
+
+ case OPTIMIZE_STR_FAST_STEP_FORWARD:
+ p = sunday_quick_search_step_forward(reg, reg->exact, reg->exact_end,
+ p, end, range);
break;
case OPTIMIZE_MAP:
@@ -4424,7 +4580,7 @@ forward_search_range(regex_t* reg, const UChar* str, const UChar* end, UChar* s,
UChar* prev;
switch (reg->sub_anchor) {
- case ANCHOR_BEGIN_LINE:
+ case ANCR_BEGIN_LINE:
if (!ON_STR_BEGIN(p)) {
prev = onigenc_get_prev_char_head(reg->enc,
(pprev ? pprev : str), p);
@@ -4433,7 +4589,7 @@ forward_search_range(regex_t* reg, const UChar* str, const UChar* end, UChar* s,
}
break;
- case ANCHOR_END_LINE:
+ case ANCR_END_LINE:
if (ON_STR_END(p)) {
#ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE
prev = (UChar* )onigenc_get_prev_char_head(reg->enc,
@@ -4501,50 +4657,36 @@ forward_search_range(regex_t* reg, const UChar* str, const UChar* end, UChar* s,
}
-#define BM_BACKWARD_SEARCH_LENGTH_THRESHOLD 100
-
static int
backward_search_range(regex_t* reg, const UChar* str, const UChar* end,
UChar* s, const UChar* range, UChar* adjrange,
UChar** low, UChar** high)
{
UChar *p;
+
if (range == 0) goto fail;
+
range += reg->dmin;
p = s;
retry:
switch (reg->optimize) {
- case OPTIMIZE_EXACT:
+ case OPTIMIZE_STR:
exact_method:
p = slow_search_backward(reg->enc, reg->exact, reg->exact_end,
range, adjrange, end, p);
break;
- case OPTIMIZE_EXACT_IC:
+ case OPTIMIZE_STR_CASE_FOLD:
+ case OPTIMIZE_STR_CASE_FOLD_FAST:
p = slow_search_backward_ic(reg->enc, reg->case_fold_flag,
reg->exact, reg->exact_end,
range, adjrange, end, p);
break;
- case OPTIMIZE_EXACT_BM:
- case OPTIMIZE_EXACT_BM_NO_REV:
-#ifdef USE_INT_MAP_BACKWARD
- if (IS_NULL(reg->int_map_backward)) {
- int r;
-
- if (s - range < BM_BACKWARD_SEARCH_LENGTH_THRESHOLD)
- goto exact_method;
-
- r = set_bm_backward_skip(reg->exact, reg->exact_end, reg->enc,
- &(reg->int_map_backward));
- if (r != 0) return r;
- }
- p = bm_search_backward(reg, reg->exact, reg->exact_end, range, adjrange,
- end, p);
-#else
+ case OPTIMIZE_STR_FAST:
+ case OPTIMIZE_STR_FAST_STEP_FORWARD:
goto exact_method;
-#endif
break;
case OPTIMIZE_MAP:
@@ -4557,7 +4699,7 @@ backward_search_range(regex_t* reg, const UChar* str, const UChar* end,
UChar* prev;
switch (reg->sub_anchor) {
- case ANCHOR_BEGIN_LINE:
+ case ANCR_BEGIN_LINE:
if (!ON_STR_BEGIN(p)) {
prev = onigenc_get_prev_char_head(reg->enc, str, p);
if (IS_NOT_NULL(prev) && !ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end)) {
@@ -4567,7 +4709,7 @@ backward_search_range(regex_t* reg, const UChar* str, const UChar* end,
}
break;
- case ANCHOR_END_LINE:
+ case ANCR_END_LINE:
if (ON_STR_END(p)) {
#ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE
prev = onigenc_get_prev_char_head(reg->enc, adjrange, p);
@@ -4693,7 +4835,7 @@ onig_search_with_param(regex_t* reg, const UChar* str, const UChar* end,
if (reg->anchor != 0 && str < end) {
UChar *min_semi_end, *max_semi_end;
- if (reg->anchor & ANCHOR_BEGIN_POSITION) {
+ if (reg->anchor & ANCR_BEGIN_POSITION) {
/* search start-position only */
begin_position:
if (range > start)
@@ -4701,7 +4843,7 @@ onig_search_with_param(regex_t* reg, const UChar* str, const UChar* end,
else
range = start;
}
- else if (reg->anchor & ANCHOR_BEGIN_BUF) {
+ else if (reg->anchor & ANCR_BEGIN_BUF) {
/* search str-position only */
if (range > start) {
if (start != str) goto mismatch_no_msa;
@@ -4716,7 +4858,7 @@ onig_search_with_param(regex_t* reg, const UChar* str, const UChar* end,
goto mismatch_no_msa;
}
}
- else if (reg->anchor & ANCHOR_END_BUF) {
+ else if (reg->anchor & ANCR_END_BUF) {
min_semi_end = max_semi_end = (UChar* )end;
end_buf:
@@ -4748,8 +4890,7 @@ onig_search_with_param(regex_t* reg, const UChar* str, const UChar* end,
if (range > start) goto mismatch_no_msa;
}
}
- else if (reg->anchor & ANCHOR_SEMI_END_BUF) {
-
+ else if (reg->anchor & ANCR_SEMI_END_BUF) {
UChar* pre_end = ONIGENC_STEP_BACK(reg->enc, str, end, 1);
max_semi_end = (UChar* )end;
@@ -4776,7 +4917,7 @@ onig_search_with_param(regex_t* reg, const UChar* str, const UChar* end,
goto end_buf;
}
}
- else if ((reg->anchor & ANCHOR_ANYCHAR_INF_ML)) {
+ else if ((reg->anchor & ANCR_ANYCHAR_INF_ML)) {
goto begin_position;
}
}
@@ -4849,13 +4990,13 @@ onig_search_with_param(regex_t* reg, const UChar* str, const UChar* end,
if (! forward_search_range(reg, str, end, s, sch_range,
&low, &high, (UChar** )NULL)) goto mismatch;
- if ((reg->anchor & ANCHOR_ANYCHAR_INF) != 0) {
+ if ((reg->anchor & ANCR_ANYCHAR_INF) != 0) {
do {
MATCH_AND_RETURN_CHECK(orig_range);
prev = s;
s += enclen(reg->enc, s);
- if ((reg->anchor & (ANCHOR_LOOK_BEHIND | ANCHOR_PREC_READ_NOT)) == 0) {
+ if ((reg->anchor & (ANCR_LOOK_BEHIND | ANCR_PREC_READ_NOT)) == 0) {
while (!ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end) && s < range) {
prev = s;
s += enclen(reg->enc, s);
@@ -4878,6 +5019,8 @@ onig_search_with_param(regex_t* reg, const UChar* str, const UChar* end,
}
}
else { /* backward search */
+ if (range < str) goto mismatch;
+
if (orig_start < end)
orig_start += enclen(reg->enc, orig_start); /* is upper range */
@@ -5092,6 +5235,16 @@ onig_copy_encoding(OnigEncoding to, OnigEncoding from)
*to = *from;
}
+#ifdef USE_DIRECT_THREADED_CODE
+extern int
+onig_init_for_match_at(regex_t* reg)
+{
+ return match_at(reg, (const UChar* )NULL, (const UChar* )NULL,
+ (const UChar* )NULL, (const UChar* )NULL, (UChar* )NULL,
+ (MatchArg* )NULL);
+}
+#endif
+
/* for callout functions */
@@ -5362,6 +5515,9 @@ onig_builtin_error(OnigCalloutArgs* args, void* user_data ARG_UNUSED)
if (n >= 0) {
n = ONIGERR_INVALID_CALLOUT_BODY;
}
+ else if (onig_is_error_code_needs_param(n)) {
+ n = ONIGERR_INVALID_CALLOUT_BODY;
+ }
return n;
}
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/reggnu.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/reggnu.c
index fb1537eccb..25bcbc2a2f 100644
--- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/reggnu.c
+++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/reggnu.c
@@ -2,7 +2,7 @@
reggnu.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2019 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -39,7 +39,7 @@ re_free_registers(OnigRegion* r)
extern int
re_adjust_startpos(regex_t* reg, const char* string, int size,
- int startpos, int range)
+ int startpos, int range)
{
if (startpos > 0 && ONIGENC_MBC_MAXLEN(reg->enc) != 1 && startpos < size) {
UChar *p;
@@ -59,20 +59,20 @@ re_adjust_startpos(regex_t* reg, const char* string, int size,
extern int
re_match(regex_t* reg, const char* str, int size, int pos,
- struct re_registers* regs)
+ struct re_registers* regs)
{
return onig_match(reg, (UChar* )str, (UChar* )(str + size),
- (UChar* )(str + pos), regs, ONIG_OPTION_NONE);
+ (UChar* )(str + pos), regs, ONIG_OPTION_NONE);
}
extern int
re_search(regex_t* bufp, const char* string, int size, int startpos, int range,
- struct re_registers* regs)
+ struct re_registers* regs)
{
return onig_search(bufp, (UChar* )string, (UChar* )(string + size),
- (UChar* )(string + startpos),
- (UChar* )(string + startpos + range),
- regs, ONIG_OPTION_NONE);
+ (UChar* )(string + startpos),
+ (UChar* )(string + startpos + range),
+ regs, ONIG_OPTION_NONE);
}
extern int
@@ -103,9 +103,9 @@ re_alloc_pattern(regex_t** reg)
if (IS_NULL(*reg)) return ONIGERR_MEMORY;
return onig_reg_init(*reg, ONIG_OPTION_DEFAULT,
- ONIGENC_CASE_FOLD_DEFAULT,
- OnigEncDefaultCharEncoding,
- OnigDefaultSyntax);
+ ONIGENC_CASE_FOLD_DEFAULT,
+ OnigEncDefaultCharEncoding,
+ OnigDefaultSyntax);
}
extern void
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.c
index 0a2d6f89e5..4605d40bd1 100644
--- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.c
+++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.c
@@ -2,7 +2,7 @@
regparse.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2019 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -54,13 +54,13 @@ OnigSyntaxType OnigSyntaxOniguruma = {
ONIG_SYN_OP_ESC_C_CONTROL )
& ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END )
, ( ONIG_SYN_OP2_QMARK_GROUP_EFFECT |
- ONIG_SYN_OP2_OPTION_RUBY |
+ ONIG_SYN_OP2_OPTION_ONIGURUMA |
ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP | ONIG_SYN_OP2_ESC_K_NAMED_BACKREF |
ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE |
ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP |
ONIG_SYN_OP2_QMARK_BRACE_CALLOUT_CONTENTS |
ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME |
- ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER |
+ ONIG_SYN_OP2_ESC_X_Y_TEXT_SEGMENT |
ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE |
ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT |
ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP |
@@ -71,12 +71,13 @@ OnigSyntaxType OnigSyntaxOniguruma = {
ONIG_SYN_OP2_CCLASS_SET_OP | ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL |
ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META | ONIG_SYN_OP2_ESC_V_VTAB |
ONIG_SYN_OP2_ESC_H_XDIGIT | ONIG_SYN_OP2_ESC_U_HEX4 )
- , ( SYN_GNU_REGEX_BV |
+ , ( SYN_GNU_REGEX_BV |
ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV |
ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND |
ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP |
ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME |
ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY |
+ ONIG_SYN_ALLOW_INVALID_CODE_END_OF_RANGE_IN_CC |
ONIG_SYN_WARN_CC_OP_NOT_ESCAPED |
ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT )
, ONIG_OPTION_NONE
@@ -103,7 +104,7 @@ OnigSyntaxType OnigSyntaxRuby = {
ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP | ONIG_SYN_OP2_ESC_K_NAMED_BACKREF |
ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE |
ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP |
- ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER |
+ ONIG_SYN_OP2_ESC_X_Y_TEXT_SEGMENT |
ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE |
ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP |
ONIG_SYN_OP2_ESC_G_SUBEXP_CALL |
@@ -113,7 +114,7 @@ OnigSyntaxType OnigSyntaxRuby = {
ONIG_SYN_OP2_CCLASS_SET_OP | ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL |
ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META | ONIG_SYN_OP2_ESC_V_VTAB |
ONIG_SYN_OP2_ESC_H_XDIGIT | ONIG_SYN_OP2_ESC_U_HEX4 )
- , ( SYN_GNU_REGEX_BV |
+ , ( SYN_GNU_REGEX_BV |
ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV |
ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND |
ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP |
@@ -199,14 +200,20 @@ onig_set_parse_depth_limit(unsigned int depth)
}
static int
-positive_int_multiply(int x, int y)
+bbuf_init(BBuf* buf, int size)
{
- if (x == 0 || y == 0) return 0;
+ if (size <= 0) {
+ size = 0;
+ buf->p = NULL;
+ }
+ else {
+ buf->p = (UChar* )xmalloc(size);
+ if (IS_NULL(buf->p)) return(ONIGERR_MEMORY);
+ }
- if (x < INT_MAX / y)
- return x * y;
- else
- return -1;
+ buf->alloc = size;
+ buf->used = 0;
+ return 0;
}
static void
@@ -523,6 +530,8 @@ onig_st_insert_strend(hash_table_type* table, const UChar* str_key,
}
+#ifdef USE_CALLOUT
+
typedef struct {
OnigEncoding enc;
int type; /* callout type: single or not */
@@ -621,6 +630,7 @@ st_insert_callout_name_table(hash_table_type* table,
}
return result;
}
+#endif
#endif /* USE_ST_LIBRARY */
@@ -1084,6 +1094,35 @@ onig_name_to_group_numbers(regex_t* reg, const UChar* name,
return e->back_num;
}
+static int
+name_to_group_numbers(ScanEnv* env, const UChar* name, const UChar* name_end,
+ int** nums)
+{
+ regex_t* reg;
+ NameEntry* e;
+
+ reg = env->reg;
+ e = name_find(reg, name, name_end);
+
+ if (IS_NULL(e)) {
+ onig_scan_env_set_error_string(env, ONIGERR_UNDEFINED_NAME_REFERENCE,
+ (UChar* )name, (UChar* )name_end);
+ return ONIGERR_UNDEFINED_NAME_REFERENCE;
+ }
+
+ switch (e->back_num) {
+ case 0:
+ break;
+ case 1:
+ *nums = &(e->back_ref1);
+ break;
+ default:
+ *nums = e->back_refs;
+ break;
+ }
+ return e->back_num;
+}
+
extern int
onig_name_to_backref_number(regex_t* reg, const UChar* name,
const UChar* name_end, OnigRegion *region)
@@ -1574,8 +1613,13 @@ onig_set_callout_of_name(OnigEncoding enc, OnigCalloutType callout_type,
for (i = arg_num - opt_arg_num, j = 0; i < arg_num; i++, j++) {
if(IS_NULL(opt_defaults))return ONIGERR_INVALID_ARGUMENT;
if (fe->arg_types[i] == ONIG_TYPE_STRING) {
- OnigValue* val = opt_defaults + j;
- UChar* ds = onigenc_strdup(enc, val->s.start, val->s.end);
+ OnigValue* val;
+ UChar* ds;
+
+ if (IS_NULL(opt_defaults)) return ONIGERR_INVALID_ARGUMENT;
+
+ val = opt_defaults + j;
+ ds = onigenc_strdup(enc, val->s.start, val->s.end);
CHECK_NULL_RETURN_MEMERR(ds);
fe->opt_defaults[i].s.start = ds;
@@ -1742,7 +1786,7 @@ setup_ext_callout_list_values(regex_t* reg)
int i, j;
RegexExt* ext;
- ext = REG_EXTP(reg);
+ ext = reg->extp;
if (IS_NOT_NULL(ext->tag_table)) {
onig_st_foreach((CalloutTagTable *)ext->tag_table, i_callout_callout_list_set,
(st_data_t )ext);
@@ -1772,13 +1816,13 @@ setup_ext_callout_list_values(regex_t* reg)
extern int
onig_callout_tag_is_exist_at_callout_num(regex_t* reg, int callout_num)
{
- RegexExt* ext = REG_EXTP(reg);
+ RegexExt* ext = reg->extp;
if (IS_NULL(ext) || IS_NULL(ext->callout_list)) return 0;
if (callout_num > ext->callout_num) return 0;
return (ext->callout_list[callout_num].flag &
- CALLOUT_TAG_LIST_FLAG_TAG_EXIST) != 0 ? 1 : 0;
+ CALLOUT_TAG_LIST_FLAG_TAG_EXIST) != 0;
}
static int
@@ -1820,7 +1864,7 @@ onig_get_callout_num_by_tag(regex_t* reg,
RegexExt* ext;
CalloutTagVal e;
- ext = REG_EXTP(reg);
+ ext = reg->extp;
if (IS_NULL(ext) || IS_NULL(ext->tag_table))
return ONIGERR_INVALID_CALLOUT_TAG_NAME;
@@ -1856,8 +1900,8 @@ callout_tag_table_new(CalloutTagTable** rt)
}
static int
-callout_tag_entry_raw(CalloutTagTable* t, UChar* name, UChar* name_end,
- CalloutTagVal entry_val)
+callout_tag_entry_raw(ScanEnv* env, CalloutTagTable* t, UChar* name,
+ UChar* name_end, CalloutTagVal entry_val)
{
int r;
CalloutTagVal val;
@@ -1866,8 +1910,11 @@ callout_tag_entry_raw(CalloutTagTable* t, UChar* name, UChar* name_end,
return ONIGERR_INVALID_CALLOUT_TAG_NAME;
val = callout_tag_find(t, name, name_end);
- if (val >= 0)
+ if (val >= 0) {
+ onig_scan_env_set_error_string(env, ONIGERR_MULTIPLEX_DEFINED_NAME,
+ name, name_end);
return ONIGERR_MULTIPLEX_DEFINED_NAME;
+ }
r = onig_st_insert_strend(t, name, name_end, (HashDataType )entry_val);
if (r < 0) return r;
@@ -1896,7 +1943,7 @@ ext_ensure_tag_table(regex_t* reg)
}
static int
-callout_tag_entry(regex_t* reg, UChar* name, UChar* name_end,
+callout_tag_entry(ScanEnv* env, regex_t* reg, UChar* name, UChar* name_end,
CalloutTagVal entry_val)
{
int r;
@@ -1908,7 +1955,7 @@ callout_tag_entry(regex_t* reg, UChar* name, UChar* name_end,
ext = onig_get_regex_ext(reg);
CHECK_NULL_RETURN_MEMERR(ext);
- r = callout_tag_entry_raw(ext->tag_table, name, name_end, entry_val);
+ r = callout_tag_entry_raw(env, ext->tag_table, name, name_end, entry_val);
e = onig_reg_callout_list_at(reg, (int )entry_val);
CHECK_NULL_RETURN_MEMERR(e);
@@ -2016,7 +2063,7 @@ onig_node_free(Node* node)
switch (NODE_TYPE(node)) {
case NODE_STRING:
- if (STR_(node)->capa != 0 &&
+ if (STR_(node)->capacity != 0 &&
IS_NOT_NULL(STR_(node)->s) && STR_(node)->s != STR_(node)->buf) {
xfree(STR_(node)->s);
}
@@ -2048,13 +2095,13 @@ onig_node_free(Node* node)
xfree(BACKREF_(node)->back_dynamic);
break;
- case NODE_ENCLOSURE:
+ case NODE_BAG:
if (NODE_BODY(node))
onig_node_free(NODE_BODY(node));
{
- EnclosureNode* en = ENCLOSURE_(node);
- if (en->type == ENCLOSURE_IF_ELSE) {
+ BagNode* en = BAG_(node);
+ if (en->type == BAG_IF_ELSE) {
onig_node_free(en->te.Then);
onig_node_free(en->te.Else);
}
@@ -2378,10 +2425,10 @@ node_new_quantifier(int lower, int upper, int by_number)
CHECK_NULL_RETURN(node);
NODE_SET_TYPE(node, NODE_QUANT);
- QUANT_(node)->lower = lower;
- QUANT_(node)->upper = upper;
- QUANT_(node)->greedy = 1;
- QUANT_(node)->body_empty_info = QUANT_BODY_IS_NOT_EMPTY;
+ QUANT_(node)->lower = lower;
+ QUANT_(node)->upper = upper;
+ QUANT_(node)->greedy = 1;
+ QUANT_(node)->emptiness = BODY_IS_NOT_EMPTY;
QUANT_(node)->head_exact = NULL_NODE;
QUANT_(node)->next_head_exact = NULL_NODE;
QUANT_(node)->is_refered = 0;
@@ -2392,62 +2439,62 @@ node_new_quantifier(int lower, int upper, int by_number)
}
static Node*
-node_new_enclosure(enum EnclosureType type)
+node_new_bag(enum BagType type)
{
Node* node = node_new();
CHECK_NULL_RETURN(node);
- NODE_SET_TYPE(node, NODE_ENCLOSURE);
- ENCLOSURE_(node)->type = type;
+ NODE_SET_TYPE(node, NODE_BAG);
+ BAG_(node)->type = type;
switch (type) {
- case ENCLOSURE_MEMORY:
- ENCLOSURE_(node)->m.regnum = 0;
- ENCLOSURE_(node)->m.called_addr = -1;
- ENCLOSURE_(node)->m.entry_count = 1;
- ENCLOSURE_(node)->m.called_state = 0;
+ case BAG_MEMORY:
+ BAG_(node)->m.regnum = 0;
+ BAG_(node)->m.called_addr = -1;
+ BAG_(node)->m.entry_count = 1;
+ BAG_(node)->m.called_state = 0;
break;
- case ENCLOSURE_OPTION:
- ENCLOSURE_(node)->o.options = 0;
+ case BAG_OPTION:
+ BAG_(node)->o.options = 0;
break;
- case ENCLOSURE_STOP_BACKTRACK:
+ case BAG_STOP_BACKTRACK:
break;
- case ENCLOSURE_IF_ELSE:
- ENCLOSURE_(node)->te.Then = 0;
- ENCLOSURE_(node)->te.Else = 0;
+ case BAG_IF_ELSE:
+ BAG_(node)->te.Then = 0;
+ BAG_(node)->te.Else = 0;
break;
}
- ENCLOSURE_(node)->opt_count = 0;
+ BAG_(node)->opt_count = 0;
return node;
}
extern Node*
-onig_node_new_enclosure(int type)
+onig_node_new_bag(enum BagType type)
{
- return node_new_enclosure(type);
+ return node_new_bag(type);
}
static Node*
-node_new_enclosure_if_else(Node* cond, Node* Then, Node* Else)
+node_new_bag_if_else(Node* cond, Node* Then, Node* Else)
{
Node* n;
- n = node_new_enclosure(ENCLOSURE_IF_ELSE);
+ n = node_new_bag(BAG_IF_ELSE);
CHECK_NULL_RETURN(n);
NODE_BODY(n) = cond;
- ENCLOSURE_(n)->te.Then = Then;
- ENCLOSURE_(n)->te.Else = Else;
+ BAG_(n)->te.Then = Then;
+ BAG_(n)->te.Else = Else;
return n;
}
static Node*
node_new_memory(int is_named)
{
- Node* node = node_new_enclosure(ENCLOSURE_MEMORY);
+ Node* node = node_new_bag(BAG_MEMORY);
CHECK_NULL_RETURN(node);
if (is_named != 0)
NODE_STATUS_ADD(node, NAMED_GROUP);
@@ -2458,12 +2505,37 @@ node_new_memory(int is_named)
static Node*
node_new_option(OnigOptionType option)
{
- Node* node = node_new_enclosure(ENCLOSURE_OPTION);
+ Node* node = node_new_bag(BAG_OPTION);
+ CHECK_NULL_RETURN(node);
+ BAG_(node)->o.options = option;
+ return node;
+}
+
+static Node*
+node_new_group(Node* content)
+{
+ Node* node;
+
+ node = node_new();
CHECK_NULL_RETURN(node);
- ENCLOSURE_(node)->o.options = option;
+ NODE_SET_TYPE(node, NODE_LIST);
+ NODE_CAR(node) = content;
+ NODE_CDR(node) = NULL_NODE;
+
return node;
}
+static Node*
+node_drop_group(Node* group)
+{
+ Node* content;
+
+ content = NODE_CAR(group);
+ NODE_CAR(group) = NULL_NODE;
+ onig_node_free(group);
+ return content;
+}
+
static int
node_new_fail(Node** node, ScanEnv* env)
{
@@ -2554,7 +2626,7 @@ onig_free_reg_callout_list(int n, CalloutListEntry* list)
extern CalloutListEntry*
onig_reg_callout_list_at(regex_t* reg, int num)
{
- RegexExt* ext = REG_EXTP(reg);
+ RegexExt* ext = reg->extp;
CHECK_NULL_RETURN(ext);
if (num <= 0 || num > ext->callout_num)
@@ -2634,7 +2706,7 @@ node_new_callout(Node** node, OnigCalloutOf callout_of, int num, int id,
#endif
static int
-make_extended_grapheme_cluster(Node** node, ScanEnv* env)
+make_text_segment(Node** node, ScanEnv* env)
{
int r;
int i;
@@ -2646,7 +2718,7 @@ make_extended_grapheme_cluster(Node** node, ScanEnv* env)
ns[1] = NULL_NODE;
r = ONIGERR_MEMORY;
- ns[0] = onig_node_new_anchor(ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY, 0);
+ ns[0] = onig_node_new_anchor(ANCR_NO_TEXT_SEGMENT_BOUNDARY, 0);
if (IS_NULL(ns[0])) goto err;
r = node_new_true_anychar(&ns[1], env);
@@ -2657,7 +2729,7 @@ make_extended_grapheme_cluster(Node** node, ScanEnv* env)
ns[0] = x;
ns[1] = NULL_NODE;
- x = node_new_quantifier(0, REPEAT_INFINITE, 1);
+ x = node_new_quantifier(0, INFINITE_REPEAT, 1);
if (IS_NULL(x)) goto err;
NODE_BODY(x) = ns[0];
@@ -2673,7 +2745,7 @@ make_extended_grapheme_cluster(Node** node, ScanEnv* env)
ns[0] = x;
ns[1] = NULL_NODE;
- x = node_new_enclosure(ENCLOSURE_STOP_BACKTRACK);
+ x = node_new_bag(BAG_STOP_BACKTRACK);
if (IS_NULL(x)) goto err;
NODE_BODY(x) = ns[0];
@@ -2733,7 +2805,7 @@ make_absent_engine(Node** node, int pre_save_right_id, Node* absent,
ns[0] = x;
if (possessive != 0) {
- x = node_new_enclosure(ENCLOSURE_STOP_BACKTRACK);
+ x = node_new_bag(BAG_STOP_BACKTRACK);
if (IS_NULL(x)) goto err0;
NODE_BODY(x) = ns[0];
@@ -2885,11 +2957,11 @@ is_simple_one_char_repeat(Node* node, Node** rquant, Node** rbody,
quant = node;
}
else {
- if (NODE_TYPE(node) == NODE_ENCLOSURE) {
- EnclosureNode* en = ENCLOSURE_(node);
- if (en->type == ENCLOSURE_STOP_BACKTRACK) {
+ if (NODE_TYPE(node) == NODE_BAG) {
+ BagNode* en = BAG_(node);
+ if (en->type == BAG_STOP_BACKTRACK) {
*is_possessive = 1;
- quant = NODE_ENCLOSURE_BODY(en);
+ quant = NODE_BAG_BODY(en);
if (NODE_TYPE(quant) != NODE_QUANT)
return 0;
}
@@ -3007,7 +3079,7 @@ make_absent_tree(Node** node, Node* absent, Node* expr, int is_range_cutter,
if (expr == NULL_NODE) {
/* default expr \O* */
- quant = node_new_quantifier(0, REPEAT_INFINITE, 0);
+ quant = node_new_quantifier(0, INFINITE_REPEAT, 0);
if (IS_NULL(quant)) goto err0;
r = node_new_true_anychar(&body, env);
@@ -3049,7 +3121,7 @@ make_absent_tree(Node** node, Node* absent, Node* expr, int is_range_cutter,
if (r != 0) goto err;
possessive = 1;
- r = make_absent_engine(&ns[2], id1, absent, ns[3], 0, REPEAT_INFINITE,
+ r = make_absent_engine(&ns[2], id1, absent, ns[3], 0, INFINITE_REPEAT,
possessive, is_range_cutter, env);
if (r != 0) goto err;
@@ -3066,7 +3138,7 @@ make_absent_tree(Node** node, Node* absent, Node* expr, int is_range_cutter,
else {
r = make_absent_tail(&ns[5], &ns[6], id1, env);
if (r != 0) goto err;
-
+
x = make_list(7, ns);
if (IS_NULL(x)) goto err0;
}
@@ -3078,7 +3150,7 @@ make_absent_tree(Node** node, Node* absent, Node* expr, int is_range_cutter,
r = ONIGERR_MEMORY;
err:
for (i = 0; i < 7; i++) onig_node_free(ns[i]);
- return r;
+ return r;
}
extern int
@@ -3089,11 +3161,11 @@ onig_node_str_cat(Node* node, const UChar* s, const UChar* end)
if (addlen > 0) {
int len = (int )(STR_(node)->end - STR_(node)->s);
- if (STR_(node)->capa > 0 || (len + addlen > NODE_STRING_BUF_SIZE - 1)) {
+ if (STR_(node)->capacity > 0 || (len + addlen > NODE_STRING_BUF_SIZE - 1)) {
UChar* p;
int capa = len + addlen + NODE_STRING_MARGIN;
- if (capa <= STR_(node)->capa) {
+ if (capa <= STR_(node)->capacity) {
onig_strcpy(STR_(node)->s + len, s, end);
}
else {
@@ -3101,11 +3173,11 @@ onig_node_str_cat(Node* node, const UChar* s, const UChar* end)
p = strcat_capa_from_static(STR_(node)->s, STR_(node)->end,
s, end, capa);
else
- p = strcat_capa(STR_(node)->s, STR_(node)->end, s, end, capa, STR_(node)->capa);
+ p = strcat_capa(STR_(node)->s, STR_(node)->end, s, end, capa, STR_(node)->capacity);
CHECK_NULL_RETURN_MEMERR(p);
- STR_(node)->s = p;
- STR_(node)->capa = capa;
+ STR_(node)->s = p;
+ STR_(node)->capacity = capa;
}
}
else {
@@ -3137,24 +3209,24 @@ extern void
onig_node_conv_to_str_node(Node* node, int flag)
{
NODE_SET_TYPE(node, NODE_STRING);
- STR_(node)->flag = flag;
- STR_(node)->capa = 0;
- STR_(node)->s = STR_(node)->buf;
- STR_(node)->end = STR_(node)->buf;
+ STR_(node)->flag = flag;
+ STR_(node)->capacity = 0;
+ STR_(node)->s = STR_(node)->buf;
+ STR_(node)->end = STR_(node)->buf;
}
extern void
onig_node_str_clear(Node* node)
{
- if (STR_(node)->capa != 0 &&
+ if (STR_(node)->capacity != 0 &&
IS_NOT_NULL(STR_(node)->s) && STR_(node)->s != STR_(node)->buf) {
xfree(STR_(node)->s);
}
- STR_(node)->capa = 0;
- STR_(node)->flag = 0;
- STR_(node)->s = STR_(node)->buf;
- STR_(node)->end = STR_(node)->buf;
+ STR_(node)->capacity = 0;
+ STR_(node)->flag = 0;
+ STR_(node)->s = STR_(node)->buf;
+ STR_(node)->end = STR_(node)->buf;
}
static Node*
@@ -3164,10 +3236,10 @@ node_new_str(const UChar* s, const UChar* end)
CHECK_NULL_RETURN(node);
NODE_SET_TYPE(node, NODE_STRING);
- STR_(node)->capa = 0;
- STR_(node)->flag = 0;
- STR_(node)->s = STR_(node)->buf;
- STR_(node)->end = STR_(node)->buf;
+ STR_(node)->capacity = 0;
+ STR_(node)->flag = 0;
+ STR_(node)->s = STR_(node)->buf;
+ STR_(node)->end = STR_(node)->buf;
if (onig_node_str_cat(node, s, end)) {
onig_node_free(node);
return NULL;
@@ -3199,10 +3271,18 @@ node_new_empty(void)
static Node*
node_new_str_raw_char(UChar c)
{
+ int i;
UChar p[1];
+ Node* node;
p[0] = c;
- return node_new_str_raw(p, p + 1);
+ node = node_new_str_raw(p, p + 1);
+
+ /* clear buf tail */
+ for (i = 1; i < NODE_STRING_BUF_SIZE; i++)
+ STR_(node)->buf[i] = '\0';
+
+ return node;
}
static Node*
@@ -3238,24 +3318,6 @@ str_node_can_be_split(Node* node, OnigEncoding enc)
return 0;
}
-#ifdef USE_PAD_TO_SHORT_BYTE_CHAR
-static int
-node_str_head_pad(StrNode* sn, int num, UChar val)
-{
- UChar buf[NODE_STRING_BUF_SIZE];
- int i, len;
-
- len = sn->end - sn->s;
- onig_strcpy(buf, sn->s, sn->end);
- onig_strcpy(&(sn->s[num]), buf, buf + len);
- sn->end += num;
-
- for (i = 0; i < num; i++) {
- sn->s[i] = val;
- }
-}
-#endif
-
extern int
onig_scan_unsigned_number(UChar** src, const UChar* end, OnigEncoding enc)
{
@@ -3809,7 +3871,7 @@ is_invalid_quantifier_target(Node* node)
return 1;
break;
- case NODE_ENCLOSURE:
+ case NODE_BAG:
/* allow enclosed elements */
/* return is_invalid_quantifier_target(NODE_BODY(node)); */
break;
@@ -3840,19 +3902,19 @@ quantifier_type_num(QuantNode* q)
if (q->greedy) {
if (q->lower == 0) {
if (q->upper == 1) return 0;
- else if (IS_REPEAT_INFINITE(q->upper)) return 1;
+ else if (IS_INFINITE_REPEAT(q->upper)) return 1;
}
else if (q->lower == 1) {
- if (IS_REPEAT_INFINITE(q->upper)) return 2;
+ if (IS_INFINITE_REPEAT(q->upper)) return 2;
}
}
else {
if (q->lower == 0) {
if (q->upper == 1) return 3;
- else if (IS_REPEAT_INFINITE(q->upper)) return 4;
+ else if (IS_INFINITE_REPEAT(q->upper)) return 4;
}
else if (q->lower == 1) {
- if (IS_REPEAT_INFINITE(q->upper)) return 5;
+ if (IS_INFINITE_REPEAT(q->upper)) return 5;
}
}
return -1;
@@ -3889,9 +3951,9 @@ onig_reduce_nested_quantifier(Node* pnode, Node* cnode)
pnum = quantifier_type_num(p);
cnum = quantifier_type_num(c);
if (pnum < 0 || cnum < 0) {
- if ((p->lower == p->upper) && ! IS_REPEAT_INFINITE(p->upper)) {
- if ((c->lower == c->upper) && ! IS_REPEAT_INFINITE(c->upper)) {
- int n = positive_int_multiply(p->lower, c->lower);
+ if ((p->lower == p->upper) && ! IS_INFINITE_REPEAT(p->upper)) {
+ if ((c->lower == c->upper) && ! IS_INFINITE_REPEAT(c->upper)) {
+ int n = onig_positive_int_multiply(p->lower, c->lower);
if (n >= 0) {
p->lower = p->upper = n;
NODE_BODY(pnode) = NODE_BODY(cnode);
@@ -3909,11 +3971,11 @@ onig_reduce_nested_quantifier(Node* pnode, Node* cnode)
break;
case RQ_A:
NODE_BODY(pnode) = NODE_BODY(cnode);
- p->lower = 0; p->upper = REPEAT_INFINITE; p->greedy = 1;
+ p->lower = 0; p->upper = INFINITE_REPEAT; p->greedy = 1;
break;
case RQ_AQ:
NODE_BODY(pnode) = NODE_BODY(cnode);
- p->lower = 0; p->upper = REPEAT_INFINITE; p->greedy = 0;
+ p->lower = 0; p->upper = INFINITE_REPEAT; p->greedy = 0;
break;
case RQ_QQ:
NODE_BODY(pnode) = NODE_BODY(cnode);
@@ -3922,13 +3984,13 @@ onig_reduce_nested_quantifier(Node* pnode, Node* cnode)
case RQ_P_QQ:
NODE_BODY(pnode) = cnode;
p->lower = 0; p->upper = 1; p->greedy = 0;
- c->lower = 1; c->upper = REPEAT_INFINITE; c->greedy = 1;
+ c->lower = 1; c->upper = INFINITE_REPEAT; c->greedy = 1;
return ;
break;
case RQ_PQ_Q:
NODE_BODY(pnode) = cnode;
p->lower = 0; p->upper = 1; p->greedy = 1;
- c->lower = 1; c->upper = REPEAT_INFINITE; c->greedy = 0;
+ c->lower = 1; c->upper = INFINITE_REPEAT; c->greedy = 0;
return ;
break;
case RQ_ASIS:
@@ -3986,7 +4048,7 @@ node_new_general_newline(Node** node, ScanEnv* env)
if (r != 0) goto err1;
}
- x = node_new_enclosure_if_else(crnl, 0, ncc);
+ x = node_new_bag_if_else(crnl, 0, ncc);
if (IS_NULL(x)) goto err1;
*node = x;
@@ -4004,7 +4066,7 @@ enum TokenSyms {
TK_BACKREF,
TK_CALL,
TK_ANCHOR,
- TK_OP_REPEAT,
+ TK_REPEAT,
TK_INTERVAL,
TK_ANYCHAR_ANYTIME, /* SQL '%' == .* */
TK_ALT,
@@ -4017,7 +4079,7 @@ enum TokenSyms {
TK_GENERAL_NEWLINE, /* \R */
TK_NO_NEWLINE, /* \N */
TK_TRUE_ANYCHAR, /* \O */
- TK_EXTENDED_GRAPHEME_CLUSTER, /* \X */
+ TK_TEXT_SEGMENT, /* \X */
/* in cc */
TK_CC_CLOSE,
@@ -4065,11 +4127,11 @@ typedef struct {
int not;
} prop;
} u;
-} OnigToken;
+} PToken;
static int
-fetch_range_quantifier(UChar** src, UChar* end, OnigToken* tok, ScanEnv* env)
+fetch_interval_quantifier(UChar** src, UChar* end, PToken* tok, ScanEnv* env)
{
int low, up, syn_allow, non_low = 0;
int r = 0;
@@ -4121,7 +4183,7 @@ fetch_range_quantifier(UChar** src, UChar* end, OnigToken* tok, ScanEnv* env)
if (p == prev) {
if (non_low != 0)
goto invalid;
- up = REPEAT_INFINITE; /* {n,} : {n,infinite} */
+ up = INFINITE_REPEAT; /* {n,} : {n,infinite} */
}
}
else {
@@ -4141,9 +4203,19 @@ fetch_range_quantifier(UChar** src, UChar* end, OnigToken* tok, ScanEnv* env)
}
if (c != '}') goto invalid;
- if (!IS_REPEAT_INFINITE(up) && low > up) {
- return ONIGERR_UPPER_SMALLER_THAN_LOWER_IN_REPEAT_RANGE;
+ if (!IS_INFINITE_REPEAT(up) && low > up) {
+ /* {n,m}+ supported case */
+ if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL))
+ return ONIGERR_UPPER_SMALLER_THAN_LOWER_IN_REPEAT_RANGE;
+
+ tok->u.repeat.possessive = 1;
+ {
+ int tmp;
+ tmp = low; low = up; up = tmp;
+ }
}
+ else
+ tok->u.repeat.possessive = 0;
tok->type = TK_INTERVAL;
tok->u.repeat.lower = low;
@@ -4232,7 +4304,7 @@ fetch_escaped_value(UChar** src, UChar* end, ScanEnv* env, OnigCodePoint* val)
return 0;
}
-static int fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env);
+static int fetch_token(PToken* tok, UChar** src, UChar* end, ScanEnv* env);
static OnigCodePoint
get_name_end_code_point(OnigCodePoint start)
@@ -4566,7 +4638,7 @@ find_str_position(OnigCodePoint s[], int n, UChar* from, UChar* to,
OnigCodePoint x;
UChar *q;
UChar *p = from;
-
+
while (p < to) {
x = ONIGENC_MBC_TO_CODE(enc, p, to);
q = p + enclen(enc, p);
@@ -4626,7 +4698,7 @@ str_exist_check_with_esc(OnigCodePoint s[], int n, UChar* from, UChar* to,
}
static int
-fetch_token_in_cc(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
+fetch_token_in_cc(PToken* tok, UChar** src, UChar* end, ScanEnv* env)
{
int num;
OnigCodePoint c, c2;
@@ -4715,12 +4787,12 @@ fetch_token_in_cc(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY)) {
PINC;
tok->type = TK_CHAR_PROPERTY;
- tok->u.prop.not = (c == 'P' ? 1 : 0);
+ tok->u.prop.not = c == 'P';
if (!PEND && IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT)) {
PFETCH(c2);
if (c2 == '^') {
- tok->u.prop.not = (tok->u.prop.not == 0 ? 1 : 0);
+ tok->u.prop.not = tok->u.prop.not == 0;
}
else
PUNFETCH;
@@ -4878,7 +4950,7 @@ fetch_token_in_cc(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
}
static int
-fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
+fetch_token(PToken* tok, UChar** src, UChar* end, ScanEnv* env)
{
int r, num;
OnigCodePoint c;
@@ -4910,60 +4982,60 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
switch (c) {
case '*':
if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_ASTERISK_ZERO_INF)) break;
- tok->type = TK_OP_REPEAT;
+ tok->type = TK_REPEAT;
tok->u.repeat.lower = 0;
- tok->u.repeat.upper = REPEAT_INFINITE;
+ tok->u.repeat.upper = INFINITE_REPEAT;
goto greedy_check;
break;
case '+':
if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_PLUS_ONE_INF)) break;
- tok->type = TK_OP_REPEAT;
+ tok->type = TK_REPEAT;
tok->u.repeat.lower = 1;
- tok->u.repeat.upper = REPEAT_INFINITE;
+ tok->u.repeat.upper = INFINITE_REPEAT;
goto greedy_check;
break;
case '?':
if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_QMARK_ZERO_ONE)) break;
- tok->type = TK_OP_REPEAT;
+ tok->type = TK_REPEAT;
tok->u.repeat.lower = 0;
tok->u.repeat.upper = 1;
greedy_check:
+ tok->u.repeat.possessive = 0;
+ greedy_check2:
if (!PEND && PPEEK_IS('?') &&
- IS_SYNTAX_OP(syn, ONIG_SYN_OP_QMARK_NON_GREEDY)) {
+ IS_SYNTAX_OP(syn, ONIG_SYN_OP_QMARK_NON_GREEDY) &&
+ tok->u.repeat.possessive == 0) {
PFETCH(c);
- tok->u.repeat.greedy = 0;
+ tok->u.repeat.greedy = 0;
tok->u.repeat.possessive = 0;
}
else {
possessive_check:
+ tok->u.repeat.greedy = 1;
if (!PEND && PPEEK_IS('+') &&
((IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT) &&
tok->type != TK_INTERVAL) ||
(IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL) &&
- tok->type == TK_INTERVAL))) {
+ tok->type == TK_INTERVAL)) &&
+ tok->u.repeat.possessive == 0) {
PFETCH(c);
- tok->u.repeat.greedy = 1;
tok->u.repeat.possessive = 1;
}
- else {
- tok->u.repeat.greedy = 1;
- tok->u.repeat.possessive = 0;
- }
}
break;
case '{':
if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_BRACE_INTERVAL)) break;
- r = fetch_range_quantifier(&p, end, tok, env);
+ r = fetch_interval_quantifier(&p, end, tok, env);
if (r < 0) return r; /* error */
- if (r == 0) goto greedy_check;
+ if (r == 0) goto greedy_check2;
else if (r == 2) { /* {n} */
if (IS_SYNTAX_BV(syn, ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY))
goto possessive_check;
- goto greedy_check;
+ goto greedy_check2;
}
/* r == 1 : normal char */
break;
@@ -5000,38 +5072,38 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
case 'b':
if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_B_WORD_BOUND)) break;
tok->type = TK_ANCHOR;
- tok->u.anchor = ANCHOR_WORD_BOUNDARY;
+ tok->u.anchor = ANCR_WORD_BOUNDARY;
break;
case 'B':
if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_B_WORD_BOUND)) break;
tok->type = TK_ANCHOR;
- tok->u.anchor = ANCHOR_NO_WORD_BOUNDARY;
+ tok->u.anchor = ANCR_NO_WORD_BOUNDARY;
break;
case 'y':
- if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER)) break;
+ if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP2_ESC_X_Y_TEXT_SEGMENT)) break;
tok->type = TK_ANCHOR;
- tok->u.anchor = ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY;
+ tok->u.anchor = ANCR_TEXT_SEGMENT_BOUNDARY;
break;
case 'Y':
- if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER)) break;
+ if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP2_ESC_X_Y_TEXT_SEGMENT)) break;
tok->type = TK_ANCHOR;
- tok->u.anchor = ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY;
+ tok->u.anchor = ANCR_NO_TEXT_SEGMENT_BOUNDARY;
break;
#ifdef USE_WORD_BEGIN_END
case '<':
if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END)) break;
tok->type = TK_ANCHOR;
- tok->u.anchor = ANCHOR_WORD_BEGIN;
+ tok->u.anchor = ANCR_WORD_BEGIN;
break;
case '>':
if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END)) break;
tok->type = TK_ANCHOR;
- tok->u.anchor = ANCHOR_WORD_END;
+ tok->u.anchor = ANCR_WORD_END;
break;
#endif
@@ -5098,34 +5170,34 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
break;
case 'X':
- if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER)) break;
- tok->type = TK_EXTENDED_GRAPHEME_CLUSTER;
+ if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_X_Y_TEXT_SEGMENT)) break;
+ tok->type = TK_TEXT_SEGMENT;
break;
case 'A':
if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR)) break;
begin_buf:
tok->type = TK_ANCHOR;
- tok->u.subtype = ANCHOR_BEGIN_BUF;
+ tok->u.subtype = ANCR_BEGIN_BUF;
break;
case 'Z':
if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR)) break;
tok->type = TK_ANCHOR;
- tok->u.subtype = ANCHOR_SEMI_END_BUF;
+ tok->u.subtype = ANCR_SEMI_END_BUF;
break;
case 'z':
if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR)) break;
end_buf:
tok->type = TK_ANCHOR;
- tok->u.subtype = ANCHOR_END_BUF;
+ tok->u.subtype = ANCR_END_BUF;
break;
case 'G':
if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_CAPITAL_G_BEGIN_ANCHOR)) break;
tok->type = TK_ANCHOR;
- tok->u.subtype = ANCHOR_BEGIN_POSITION;
+ tok->u.subtype = ANCR_BEGIN_POSITION;
break;
case '`':
@@ -5228,7 +5300,7 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
goto skip_backref;
}
- if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_DECIMAL_BACKREF) &&
+ if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_DECIMAL_BACKREF) &&
(num <= env->num_mem || num <= 9)) { /* This spec. from GNU regex */
if (IS_SYNTAX_BV(syn, ONIG_SYN_STRICT_CHECK_BACKREF)) {
if (num > env->num_mem || IS_NULL(SCANENV_MEMENV(env)[num].node))
@@ -5311,10 +5383,8 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
tok->u.backref.ref1 = back_num;
}
else {
- num = onig_name_to_group_numbers(env->reg, prev, name_end, &backs);
+ num = name_to_group_numbers(env, prev, name_end, &backs);
if (num <= 0) {
- onig_scan_env_set_error_string(env,
- ONIGERR_UNDEFINED_NAME_REFERENCE, prev, name_end);
return ONIGERR_UNDEFINED_NAME_REFERENCE;
}
if (IS_SYNTAX_BV(syn, ONIG_SYN_STRICT_CHECK_BACKREF)) {
@@ -5396,13 +5466,13 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY)) {
PINC;
tok->type = TK_CHAR_PROPERTY;
- tok->u.prop.not = (c == 'P' ? 1 : 0);
+ tok->u.prop.not = c == 'P';
if (!PEND &&
IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT)) {
PFETCH(c);
if (c == '^') {
- tok->u.prop.not = (tok->u.prop.not == 0 ? 1 : 0);
+ tok->u.prop.not = tok->u.prop.not == 0;
}
else
PUNFETCH;
@@ -5465,9 +5535,9 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
#ifdef USE_VARIABLE_META_CHARS
anytime:
#endif
- tok->type = TK_OP_REPEAT;
+ tok->type = TK_REPEAT;
tok->u.repeat.lower = 0;
- tok->u.repeat.upper = REPEAT_INFINITE;
+ tok->u.repeat.upper = INFINITE_REPEAT;
goto greedy_check;
break;
@@ -5476,9 +5546,9 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
#ifdef USE_VARIABLE_META_CHARS
one_or_more_time:
#endif
- tok->type = TK_OP_REPEAT;
+ tok->type = TK_REPEAT;
tok->u.repeat.lower = 1;
- tok->u.repeat.upper = REPEAT_INFINITE;
+ tok->u.repeat.upper = INFINITE_REPEAT;
goto greedy_check;
break;
@@ -5487,7 +5557,7 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
#ifdef USE_VARIABLE_META_CHARS
zero_or_one_time:
#endif
- tok->type = TK_OP_REPEAT;
+ tok->type = TK_REPEAT;
tok->u.repeat.lower = 0;
tok->u.repeat.upper = 1;
goto greedy_check;
@@ -5495,14 +5565,14 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
case '{':
if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_BRACE_INTERVAL)) break;
- r = fetch_range_quantifier(&p, end, tok, env);
+ r = fetch_interval_quantifier(&p, end, tok, env);
if (r < 0) return r; /* error */
- if (r == 0) goto greedy_check;
+ if (r == 0) goto greedy_check2;
else if (r == 2) { /* {n} */
if (IS_SYNTAX_BV(syn, ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY))
goto possessive_check;
- goto greedy_check;
+ goto greedy_check2;
}
/* r == 1 : normal char */
break;
@@ -5561,7 +5631,7 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
tok->u.call.gnum = 0;
tok->u.call.name = p;
PINC;
- if (! PPEEK_IS(')')) return ONIGERR_INVALID_GROUP_NAME;
+ if (! PPEEK_IS(')')) return ONIGERR_UNDEFINED_GROUP_OPTION;
tok->u.call.name_end = p;
break;
@@ -5620,14 +5690,14 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_LINE_ANCHOR)) break;
tok->type = TK_ANCHOR;
tok->u.subtype = (IS_SINGLELINE(env->options)
- ? ANCHOR_BEGIN_BUF : ANCHOR_BEGIN_LINE);
+ ? ANCR_BEGIN_BUF : ANCR_BEGIN_LINE);
break;
case '$':
if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_LINE_ANCHOR)) break;
tok->type = TK_ANCHOR;
tok->u.subtype = (IS_SINGLELINE(env->options)
- ? ANCHOR_SEMI_END_BUF : ANCHOR_END_LINE);
+ ? ANCR_SEMI_END_BUF : ANCR_END_LINE);
break;
case '[':
@@ -6035,7 +6105,7 @@ fetch_char_property_to_ctype(UChar** src, UChar* end, ScanEnv* env)
}
static int
-parse_char_property(Node** np, OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
+parse_char_property(Node** np, PToken* tok, UChar** src, UChar* end, ScanEnv* env)
{
int r, ctype;
CClassNode* cc;
@@ -6185,7 +6255,7 @@ code_exist_check(OnigCodePoint c, UChar* from, UChar* end, int ignore_escaped,
}
static int
-parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
+parse_char_class(Node** np, PToken* tok, UChar** src, UChar* end, ScanEnv* env)
{
int r, neg, len, fetched, and_start;
OnigCodePoint v, vs;
@@ -6202,6 +6272,7 @@ parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end, ScanEnv* en
env->parse_depth++;
if (env->parse_depth > ParseDepthLimit)
return ONIGERR_PARSE_DEPTH_LIMIT_OVER;
+
prev_cc = (CClassNode* )NULL;
r = fetch_token_in_cc(tok, src, end, env);
if (r == TK_CHAR && tok->u.c == '^' && tok->escaped == 0) {
@@ -6254,10 +6325,11 @@ parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end, ScanEnv* en
case TK_RAW_BYTE:
/* tok->base != 0 : octal or hexadec. */
if (! ONIGENC_IS_SINGLEBYTE(env->enc) && tok->base != 0) {
+ int i, j;
UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN];
UChar* bufe = buf + ONIGENC_CODE_TO_MBC_MAXLEN;
UChar* psave = p;
- int i, base = tok->base;
+ int base = tok->base;
buf[0] = tok->u.c;
for (i = 1; i < ONIGENC_MBC_MAXLEN(env->enc); i++) {
@@ -6275,6 +6347,9 @@ parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end, ScanEnv* en
goto err;
}
+ /* clear buf tail */
+ for (j = i; j < ONIGENC_CODE_TO_MBC_MAXLEN; j++) buf[j] = '\0';
+
len = enclen(env->enc, buf);
if (i < len) {
r = ONIGERR_TOO_SHORT_MULTI_BYTE_STRING;
@@ -6312,8 +6387,13 @@ parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end, ScanEnv* en
val_entry:
len = ONIGENC_CODE_TO_MBCLEN(env->enc, v);
if (len < 0) {
- r = len;
- goto err;
+ if (state != CCS_RANGE ||
+ ! IS_SYNTAX_BV(env->syntax,
+ ONIG_SYN_ALLOW_INVALID_CODE_END_OF_RANGE_IN_CC) ||
+ v < 0x100 || ONIGENC_MBC_MAXLEN(env->enc) == 1) {
+ r = len;
+ goto err;
+ }
}
in_type = (len == 1 ? CCV_SB : CCV_CODE_POINT);
val_entry2:
@@ -6522,8 +6602,8 @@ parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end, ScanEnv* en
return r;
}
-static int parse_subexp(Node** top, OnigToken* tok, int term,
- UChar** src, UChar* end, ScanEnv* env);
+static int parse_subexp(Node** top, PToken* tok, int term,
+ UChar** src, UChar* end, ScanEnv* env, int group_head);
#ifdef USE_CALLOUT
@@ -6580,7 +6660,7 @@ parse_callout_of_contents(Node** np, int cterm, UChar** src, UChar* end, ScanEnv
PFETCH_S(c);
if (c == '[') {
if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
- tag_start = p;
+ tag_end = tag_start = p;
while (! PEND) {
if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
tag_end = p;
@@ -6626,7 +6706,7 @@ parse_callout_of_contents(Node** np, int cterm, UChar** src, UChar* end, ScanEnv
}
if (tag_start != tag_end) {
- r = callout_tag_entry(env->reg, tag_start, tag_end, num);
+ r = callout_tag_entry(env, env->reg, tag_start, tag_end, num);
if (r != ONIG_NORMAL) return r;
}
@@ -6870,7 +6950,7 @@ parse_callout_of_name(Node** np, int cterm, UChar** src, UChar* end, ScanEnv* en
if (c == '[') {
if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
- tag_start = p;
+ tag_end = tag_start = p;
while (! PEND) {
if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
tag_end = p;
@@ -6947,7 +7027,7 @@ parse_callout_of_name(Node** np, int cterm, UChar** src, UChar* end, ScanEnv* en
}
if (tag_start != tag_end) {
- r = callout_tag_entry(env->reg, tag_start, tag_end, num);
+ r = callout_tag_entry(env, env->reg, tag_start, tag_end, num);
if (r != ONIG_NORMAL) return r;
}
@@ -6980,8 +7060,8 @@ parse_callout_of_name(Node** np, int cterm, UChar** src, UChar* end, ScanEnv* en
#endif
static int
-parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
- ScanEnv* env)
+parse_bag(Node** np, PToken* tok, int term, UChar** src, UChar* end,
+ ScanEnv* env)
{
int r, num;
Node *target;
@@ -7008,20 +7088,20 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
group:
r = fetch_token(tok, &p, end, env);
if (r < 0) return r;
- r = parse_subexp(np, tok, term, &p, end, env);
+ r = parse_subexp(np, tok, term, &p, end, env, 0);
if (r < 0) return r;
*src = p;
return 1; /* group */
break;
case '=':
- *np = onig_node_new_anchor(ANCHOR_PREC_READ, 0);
+ *np = onig_node_new_anchor(ANCR_PREC_READ, 0);
break;
case '!': /* preceding read */
- *np = onig_node_new_anchor(ANCHOR_PREC_READ_NOT, 0);
+ *np = onig_node_new_anchor(ANCR_PREC_READ_NOT, 0);
break;
case '>': /* (?>...) stop backtrack */
- *np = node_new_enclosure(ENCLOSURE_STOP_BACKTRACK);
+ *np = node_new_bag(BAG_STOP_BACKTRACK);
break;
case '\'':
@@ -7036,9 +7116,9 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
if (PEND) return ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS;
PFETCH(c);
if (c == '=')
- *np = onig_node_new_anchor(ANCHOR_LOOK_BEHIND, 0);
+ *np = onig_node_new_anchor(ANCR_LOOK_BEHIND, 0);
else if (c == '!')
- *np = onig_node_new_anchor(ANCHOR_LOOK_BEHIND_NOT, 0);
+ *np = onig_node_new_anchor(ANCR_LOOK_BEHIND_NOT, 0);
else {
if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) {
UChar *name;
@@ -7066,7 +7146,7 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
if (r != 0) return r;
*np = node_new_memory(1);
CHECK_NULL_RETURN_MEMERR(*np);
- ENCLOSURE_(*np)->m.regnum = num;
+ BAG_(*np)->m.regnum = num;
if (list_capture != 0)
MEM_STATUS_ON_SIMPLE(env->capture_history, num);
env->num_named++;
@@ -7103,7 +7183,7 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
r = fetch_token(tok, &p, end, env);
if (r < 0) return r;
- r = parse_subexp(&absent, tok, term, &p, end, env);
+ r = parse_subexp(&absent, tok, term, &p, end, env, 1);
if (r < 0) {
onig_node_free(absent);
return r;
@@ -7224,10 +7304,8 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
int num;
int* backs;
- num = onig_name_to_group_numbers(env->reg, prev, name_end, &backs);
+ num = name_to_group_numbers(env, prev, name_end, &backs);
if (num <= 0) {
- onig_scan_env_set_error_string(env,
- ONIGERR_UNDEFINED_NAME_REFERENCE, prev, name_end);
return ONIGERR_UNDEFINED_NAME_REFERENCE;
}
if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_STRICT_CHECK_BACKREF)) {
@@ -7281,14 +7359,16 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
condition_is_checker = 0;
r = fetch_token(tok, &p, end, env);
if (r < 0) return r;
- r = parse_subexp(&condition, tok, term, &p, end, env);
+ r = parse_subexp(&condition, tok, term, &p, end, env, 0);
if (r < 0) {
onig_node_free(condition);
return r;
}
}
+#ifdef USE_CALLOUT
end_condition:
+#endif
CHECK_NULL_RETURN_MEMERR(condition);
if (PEND) {
@@ -7309,9 +7389,9 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
int then_is_empty;
Node *Then, *Else;
+ Then = 0;
if (PPEEK_IS('|')) {
PFETCH(c);
- Then = 0;
then_is_empty = 1;
}
else
@@ -7322,7 +7402,7 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
onig_node_free(condition);
return r;
}
- r = parse_subexp(&target, tok, term, &p, end, env);
+ r = parse_subexp(&target, tok, term, &p, end, env, 1);
if (r < 0) {
onig_node_free(condition);
onig_node_free(target);
@@ -7350,7 +7430,7 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
}
}
- *np = node_new_enclosure_if_else(condition, Then, Else);
+ *np = node_new_bag_if_else(condition, Then, Else);
if (IS_NULL(*np)) {
onig_node_free(condition);
onig_node_free(Then);
@@ -7365,6 +7445,7 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
}
break;
+#ifdef USE_CAPTURE_HISTORY
case '@':
if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY)) {
if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) {
@@ -7385,19 +7466,21 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
else if (num >= (int )MEM_STATUS_BITS_NUM) {
return ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY;
}
- ENCLOSURE_(*np)->m.regnum = num;
+ BAG_(*np)->m.regnum = num;
MEM_STATUS_ON_SIMPLE(env->capture_history, num);
}
else {
return ONIGERR_UNDEFINED_GROUP_OPTION;
}
break;
+#endif
#ifdef USE_POSIXLINE_OPTION
case 'p':
#endif
case '-': case 'i': case 'm': case 's': case 'x':
case 'W': case 'D': case 'S': case 'P':
+ case 'y':
{
int neg = 0;
@@ -7422,7 +7505,8 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_PERL)) {
OPTION_NEGATE(option, ONIG_OPTION_SINGLELINE, (neg == 0 ? 1 : 0));
}
- else if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_RUBY)) {
+ else if (IS_SYNTAX_OP2(env->syntax,
+ ONIG_SYN_OP2_OPTION_ONIGURUMA|ONIG_SYN_OP2_OPTION_RUBY)) {
OPTION_NEGATE(option, ONIG_OPTION_MULTILINE, neg);
}
else
@@ -7438,6 +7522,46 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
case 'S': OPTION_NEGATE(option, ONIG_OPTION_SPACE_IS_ASCII, neg); break;
case 'P': OPTION_NEGATE(option, ONIG_OPTION_POSIX_IS_ASCII, neg); break;
+ case 'y': /* y{g}, y{w} */
+ {
+ if (! IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_ONIGURUMA))
+ return ONIGERR_UNDEFINED_GROUP_OPTION;
+
+ if (neg != 0) return ONIGERR_UNDEFINED_GROUP_OPTION;
+
+ if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
+ if (! PPEEK_IS('{')) return ONIGERR_UNDEFINED_GROUP_OPTION;
+ PFETCH(c);
+ if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
+ PFETCH(c);
+ switch (c) {
+ case 'g':
+ if (! ONIGENC_IS_UNICODE_ENCODING(enc))
+ return ONIGERR_UNDEFINED_GROUP_OPTION;
+
+ OPTION_NEGATE(option, ONIG_OPTION_TEXT_SEGMENT_EXTENDED_GRAPHEME_CLUSTER, 0);
+ OPTION_NEGATE(option, ONIG_OPTION_TEXT_SEGMENT_WORD, 1);
+ break;
+#ifdef USE_UNICODE_WORD_BREAK
+ case 'w':
+ if (! ONIGENC_IS_UNICODE_ENCODING(enc))
+ return ONIGERR_UNDEFINED_GROUP_OPTION;
+
+ OPTION_NEGATE(option, ONIG_OPTION_TEXT_SEGMENT_WORD, 0);
+ OPTION_NEGATE(option, ONIG_OPTION_TEXT_SEGMENT_EXTENDED_GRAPHEME_CLUSTER, 1);
+ break;
+#endif
+ default:
+ return ONIGERR_UNDEFINED_GROUP_OPTION;
+ break;
+ }
+ if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
+ PFETCH(c);
+ if (c != '}')
+ return ONIGERR_UNDEFINED_GROUP_OPTION;
+ break;
+ } /* case 'y' */
+
default:
return ONIGERR_UNDEFINED_GROUP_OPTION;
}
@@ -7454,7 +7578,7 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
env->options = option;
r = fetch_token(tok, &p, end, env);
if (r < 0) return r;
- r = parse_subexp(&target, tok, term, &p, end, env);
+ r = parse_subexp(&target, tok, term, &p, end, env, 0);
env->options = prev;
if (r < 0) {
onig_node_free(target);
@@ -7469,7 +7593,7 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
PFETCH(c);
- }
+ } /* while (1) */
}
break;
@@ -7495,13 +7619,13 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
CHECK_NULL_RETURN_MEMERR(*np);
num = scan_env_add_mem_entry(env);
if (num < 0) return num;
- ENCLOSURE_(*np)->m.regnum = num;
+ BAG_(*np)->m.regnum = num;
}
CHECK_NULL_RETURN_MEMERR(*np);
r = fetch_token(tok, &p, end, env);
if (r < 0) return r;
- r = parse_subexp(&target, tok, term, &p, end, env);
+ r = parse_subexp(&target, tok, term, &p, end, env, 0);
if (r < 0) {
onig_node_free(target);
return r;
@@ -7509,10 +7633,10 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
NODE_BODY(*np) = target;
- if (NODE_TYPE(*np) == NODE_ENCLOSURE) {
- if (ENCLOSURE_(*np)->type == ENCLOSURE_MEMORY) {
+ if (NODE_TYPE(*np) == NODE_BAG) {
+ if (BAG_(*np)->type == BAG_MEMORY) {
/* Don't move this to previous of parse_subexp() */
- r = scan_env_set_mem_node(env, ENCLOSURE_(*np)->m.regnum, *np);
+ r = scan_env_set_mem_node(env, BAG_(*np)->m.regnum, *np);
if (r != 0) return r;
}
}
@@ -7541,7 +7665,7 @@ set_quantifier(Node* qnode, Node* target, int group, ScanEnv* env)
switch (NODE_TYPE(target)) {
case NODE_STRING:
- if (! group) {
+ if (group == 0) {
if (str_node_can_be_split(target, env->enc)) {
Node* n = str_node_split_last_char(target, env->enc);
if (IS_NOT_NULL(n)) {
@@ -7597,7 +7721,7 @@ set_quantifier(Node* qnode, Node* target, int group, ScanEnv* env)
if (targetq_num >= 0 && nestq_num < 0) {
if (targetq_num == 1 || targetq_num == 2) { /* * or + */
/* (?:a*){n,m}, (?:a+){n,m} => (?:a*){n,n}, (?:a+){n,n} */
- if (! IS_REPEAT_INFINITE(qn->upper) && qn->upper > 1 && qn->greedy) {
+ if (! IS_INFINITE_REPEAT(qn->upper) && qn->upper > 1 && qn->greedy) {
qn->upper = (qn->lower == 0 ? 1 : qn->lower);
}
}
@@ -7732,17 +7856,21 @@ i_apply_case_fold(OnigCodePoint from, OnigCodePoint to[], int to_len, void* arg)
}
static int
-parse_exp(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
- ScanEnv* env)
+parse_exp(Node** np, PToken* tok, int term, UChar** src, UChar* end,
+ ScanEnv* env, int group_head)
{
- int r, len, group = 0;
+ int r, len, group;
Node* qn;
- Node** targetp;
+ Node** tp;
+ unsigned int parse_depth;
+ group = 0;
*np = NULL;
if (tok->type == (enum TokenSyms )term)
goto end_of_token;
+ parse_depth = env->parse_depth;
+
switch (tok->type) {
case TK_ALT:
case TK_EOT:
@@ -7753,17 +7881,29 @@ parse_exp(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
break;
case TK_SUBEXP_OPEN:
- r = parse_enclosure(np, tok, TK_SUBEXP_CLOSE, src, end, env);
+ r = parse_bag(np, tok, TK_SUBEXP_CLOSE, src, end, env);
if (r < 0) return r;
- if (r == 1) group = 1;
+ if (r == 1) { /* group */
+ if (group_head == 0)
+ group = 1;
+ else {
+ Node* target = *np;
+ *np = node_new_group(target);
+ if (IS_NULL(*np)) {
+ onig_node_free(target);
+ return ONIGERR_MEMORY;
+ }
+ group = 2;
+ }
+ }
else if (r == 2) { /* option only */
Node* target;
OnigOptionType prev = env->options;
- env->options = ENCLOSURE_(*np)->o.options;
+ env->options = BAG_(*np)->o.options;
r = fetch_token(tok, src, end, env);
if (r < 0) return r;
- r = parse_subexp(&target, tok, term, src, end, env);
+ r = parse_subexp(&target, tok, term, src, end, env, 0);
env->options = prev;
if (r < 0) {
onig_node_free(target);
@@ -7798,7 +7938,7 @@ parse_exp(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
}
string_end:
- targetp = np;
+ tp = np;
goto repeat;
}
break;
@@ -7811,48 +7951,41 @@ parse_exp(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
len = 1;
while (1) {
if (len >= ONIGENC_MBC_MINLEN(env->enc)) {
- if (len == enclen(env->enc, STR_(*np)->s)) {/* should not enclen_end() */
+ if (len == enclen(env->enc, STR_(*np)->s)) {
r = fetch_token(tok, src, end, env);
- NODE_STRING_CLEAR_RAW(*np);
- goto string_end;
+ goto tk_raw_byte_end;
}
}
r = fetch_token(tok, src, end, env);
if (r < 0) return r;
- if (r != TK_RAW_BYTE) {
- /* Don't use this, it is wrong for little endian encodings. */
-#ifdef USE_PAD_TO_SHORT_BYTE_CHAR
- int rem;
- if (len < ONIGENC_MBC_MINLEN(env->enc)) {
- rem = ONIGENC_MBC_MINLEN(env->enc) - len;
- (void )node_str_head_pad(STR_(*np), rem, (UChar )0);
- if (len + rem == enclen(env->enc, STR_(*np)->s)) {
- NODE_STRING_CLEAR_RAW(*np);
- goto string_end;
- }
- }
-#endif
+ if (r != TK_RAW_BYTE)
return ONIGERR_TOO_SHORT_MULTI_BYTE_STRING;
- }
r = node_str_cat_char(*np, (UChar )tok->u.c);
if (r < 0) return r;
len++;
}
+
+ tk_raw_byte_end:
+ if (! ONIGENC_IS_VALID_MBC_STRING(env->enc, STR_(*np)->s, STR_(*np)->end))
+ return ONIGERR_INVALID_WIDE_CHAR_VALUE;
+
+ NODE_STRING_CLEAR_RAW(*np);
+ goto string_end;
}
break;
case TK_CODE_POINT:
{
UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN];
- int num = ONIGENC_CODE_TO_MBC(env->enc, tok->u.code, buf);
- if (num < 0) return num;
+ len = ONIGENC_CODE_TO_MBC(env->enc, tok->u.code, buf);
+ if (len < 0) return len;
#ifdef NUMBERED_CHAR_IS_NOT_CASE_AMBIG
- *np = node_new_str_raw(buf, buf + num);
+ *np = node_new_str_raw(buf, buf + len);
#else
- *np = node_new_str(buf, buf + num);
+ *np = node_new_str(buf, buf + len);
#endif
CHECK_NULL_RETURN_MEMERR(*np);
}
@@ -7952,7 +8085,7 @@ parse_exp(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
case TK_ANYCHAR_ANYTIME:
*np = node_new_anychar();
CHECK_NULL_RETURN_MEMERR(*np);
- qn = node_new_quantifier(0, REPEAT_INFINITE, 0);
+ qn = node_new_quantifier(0, INFINITE_REPEAT, 0);
CHECK_NULL_RETURN_MEMERR(qn);
NODE_BODY(qn) = *np;
*np = qn;
@@ -7992,11 +8125,11 @@ parse_exp(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
int ascii_mode =
IS_WORD_ASCII(env->options) && IS_WORD_ANCHOR_TYPE(tok->u.anchor) ? 1 : 0;
*np = onig_node_new_anchor(tok->u.anchor, ascii_mode);
- CHECK_NULL_RETURN_MEMERR(*np);
+ CHECK_NULL_RETURN_MEMERR(*np);
}
break;
- case TK_OP_REPEAT:
+ case TK_REPEAT:
case TK_INTERVAL:
if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS)) {
if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS))
@@ -8031,8 +8164,8 @@ parse_exp(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
if (r < 0) return r;
break;
- case TK_EXTENDED_GRAPHEME_CLUSTER:
- r = make_extended_grapheme_cluster(np, env);
+ case TK_TEXT_SEGMENT:
+ r = make_text_segment(np, env);
if (r < 0) return r;
break;
@@ -8042,22 +8175,35 @@ parse_exp(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
}
{
- targetp = np;
+ tp = np;
re_entry:
r = fetch_token(tok, src, end, env);
if (r < 0) return r;
repeat:
- if (r == TK_OP_REPEAT || r == TK_INTERVAL) {
- if (is_invalid_quantifier_target(*targetp))
+ if (r == TK_REPEAT || r == TK_INTERVAL) {
+ Node* target;
+
+ if (is_invalid_quantifier_target(*tp))
return ONIGERR_TARGET_OF_REPEAT_OPERATOR_INVALID;
+ parse_depth++;
+ if (parse_depth > ParseDepthLimit)
+ return ONIGERR_PARSE_DEPTH_LIMIT_OVER;
+
qn = node_new_quantifier(tok->u.repeat.lower, tok->u.repeat.upper,
- (r == TK_INTERVAL ? 1 : 0));
+ r == TK_INTERVAL);
CHECK_NULL_RETURN_MEMERR(qn);
QUANT_(qn)->greedy = tok->u.repeat.greedy;
- r = set_quantifier(qn, *targetp, group, env);
+ if (group == 2) {
+ target = node_drop_group(*tp);
+ *tp = NULL_NODE;
+ }
+ else {
+ target = *tp;
+ }
+ r = set_quantifier(qn, target, group, env);
if (r < 0) {
onig_node_free(qn);
return r;
@@ -8065,7 +8211,7 @@ parse_exp(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
if (tok->u.repeat.possessive != 0) {
Node* en;
- en = node_new_enclosure(ENCLOSURE_STOP_BACKTRACK);
+ en = node_new_bag(BAG_STOP_BACKTRACK);
if (IS_NULL(en)) {
onig_node_free(qn);
return ONIGERR_MEMORY;
@@ -8075,26 +8221,28 @@ parse_exp(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
}
if (r == 0) {
- *targetp = qn;
+ *tp = qn;
}
- else if (r == 1) {
+ else if (r == 1) { /* x{1,1} ==> x */
onig_node_free(qn);
+ *tp = target;
}
else if (r == 2) { /* split case: /abc+/ */
Node *tmp;
- *targetp = node_new_list(*targetp, NULL);
- if (IS_NULL(*targetp)) {
+ *tp = node_new_list(*tp, NULL);
+ if (IS_NULL(*tp)) {
onig_node_free(qn);
return ONIGERR_MEMORY;
}
- tmp = NODE_CDR(*targetp) = node_new_list(qn, NULL);
+ tmp = NODE_CDR(*tp) = node_new_list(qn, NULL);
if (IS_NULL(tmp)) {
onig_node_free(qn);
return ONIGERR_MEMORY;
}
- targetp = &(NODE_CAR(tmp));
+ tp = &(NODE_CAR(tmp));
}
+ group = 0;
goto re_entry;
}
}
@@ -8103,14 +8251,14 @@ parse_exp(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
}
static int
-parse_branch(Node** top, OnigToken* tok, int term, UChar** src, UChar* end,
- ScanEnv* env)
+parse_branch(Node** top, PToken* tok, int term, UChar** src, UChar* end,
+ ScanEnv* env, int group_head)
{
int r;
Node *node, **headp;
*top = NULL;
- r = parse_exp(&node, tok, term, src, end, env);
+ r = parse_exp(&node, tok, term, src, end, env, group_head);
if (r < 0) {
onig_node_free(node);
return r;
@@ -8128,7 +8276,7 @@ parse_branch(Node** top, OnigToken* tok, int term, UChar** src, UChar* end,
headp = &(NODE_CDR(*top));
while (r != TK_EOT && r != term && r != TK_ALT) {
- r = parse_exp(&node, tok, term, src, end, env);
+ r = parse_exp(&node, tok, term, src, end, env, 0);
if (r < 0) {
onig_node_free(node);
return r;
@@ -8151,8 +8299,8 @@ parse_branch(Node** top, OnigToken* tok, int term, UChar** src, UChar* end,
/* term_tok: TK_EOT or TK_SUBEXP_CLOSE */
static int
-parse_subexp(Node** top, OnigToken* tok, int term, UChar** src, UChar* end,
- ScanEnv* env)
+parse_subexp(Node** top, PToken* tok, int term, UChar** src, UChar* end,
+ ScanEnv* env, int group_head)
{
int r;
Node *node, **headp;
@@ -8162,7 +8310,7 @@ parse_subexp(Node** top, OnigToken* tok, int term, UChar** src, UChar* end,
if (env->parse_depth > ParseDepthLimit)
return ONIGERR_PARSE_DEPTH_LIMIT_OVER;
- r = parse_branch(&node, tok, term, src, end, env);
+ r = parse_branch(&node, tok, term, src, end, env, group_head);
if (r < 0) {
onig_node_free(node);
return r;
@@ -8182,7 +8330,7 @@ parse_subexp(Node** top, OnigToken* tok, int term, UChar** src, UChar* end,
while (r == TK_ALT) {
r = fetch_token(tok, src, end, env);
if (r < 0) return r;
- r = parse_branch(&node, tok, term, src, end, env);
+ r = parse_branch(&node, tok, term, src, end, env, 0);
if (r < 0) {
onig_node_free(node);
return r;
@@ -8217,11 +8365,11 @@ static int
parse_regexp(Node** top, UChar** src, UChar* end, ScanEnv* env)
{
int r;
- OnigToken tok;
+ PToken tok;
r = fetch_token(&tok, src, end, env);
if (r < 0) return r;
- r = parse_subexp(top, &tok, TK_EOT, src, end, env);
+ r = parse_subexp(top, &tok, TK_EOT, src, end, env, 0);
if (r < 0) return r;
return 0;
@@ -8237,7 +8385,7 @@ make_call_zero_body(Node* node, ScanEnv* env, Node** rnode)
CHECK_NULL_RETURN_MEMERR(x);
NODE_BODY(x) = node;
- ENCLOSURE_(x)->m.regnum = 0;
+ BAG_(x)->m.regnum = 0;
r = scan_env_set_mem_node(env, 0, x);
if (r != 0) {
onig_node_free(x);
@@ -8293,7 +8441,7 @@ onig_parse_tree(Node** root, const UChar* pattern, const UChar* end,
reg->num_mem = env->num_mem;
#ifdef USE_CALLOUT
- ext = REG_EXTP(reg);
+ ext = reg->extp;
if (IS_NOT_NULL(ext) && ext->callout_num > 0) {
r = setup_ext_callout_list_values(reg);
}
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposerr.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposerr.c
index a396df2acf..55b01fba4b 100644
--- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposerr.c
+++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposerr.c
@@ -2,7 +2,7 @@
regposerr.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2019 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -37,13 +37,7 @@
//#include "config.h"
#include "onigposix.h"
-#if 0
-#ifdef HAVE_STRING_H
-# include <string.h>
-#else
-# include <strings.h>
-#endif
-#endif
+//#include <string.h>
#if defined(__GNUC__)
# define ARG_UNUSED __attribute__ ((unused))
@@ -86,7 +80,7 @@ static char* ESTRING[] = {
extern size_t
regerror(int posix_ecode, const regex_t* reg ARG_UNUSED, char* buf,
- size_t size)
+ size_t size)
{
char* s;
char tbuf[35];
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposix.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposix.c
index 54d456424d..2bfe073ad0 100644
--- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposix.c
+++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposix.c
@@ -2,7 +2,7 @@
regposix.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2019 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -30,6 +30,7 @@
#define regex_t onig_regex_t
#include "regint.h"
#undef regex_t
+
#include "onigposix.h"
#define ONIG_C(reg) ((onig_regex_t* )((reg)->onig))
@@ -148,6 +149,8 @@ regcomp(regex_t* reg, const char* pattern, int posix_options)
OnigSyntaxType* syntax = OnigDefaultSyntax;
OnigOptionType options;
+ reg->onig = (void* )0;
+
if ((posix_options & REG_EXTENDED) == 0)
syntax = ONIG_SYNTAX_POSIX_BASIC;
@@ -163,8 +166,8 @@ regcomp(regex_t* reg, const char* pattern, int posix_options)
ENC_STRING_LEN(OnigEncDefaultCharEncoding, pattern, len);
r = onig_new(PONIG_C(reg), (UChar* )pattern, (UChar* )(pattern + len),
- options, OnigEncDefaultCharEncoding, syntax,
- (OnigErrorInfo* )NULL);
+ options, OnigEncDefaultCharEncoding, syntax,
+ (OnigErrorInfo* )NULL);
if (r != ONIG_NORMAL) {
return onig2posix_error_code(r);
}
@@ -175,7 +178,7 @@ regcomp(regex_t* reg, const char* pattern, int posix_options)
extern int
regexec(regex_t* reg, const char* str, size_t nmatch,
- regmatch_t pmatch[], int posix_options)
+ regmatch_t pmatch[], int posix_options)
{
int r, i, len;
UChar* end;
@@ -203,7 +206,7 @@ regexec(regex_t* reg, const char* str, size_t nmatch,
ENC_STRING_LEN(ONIG_C(reg)->enc, str, len);
end = (UChar* )(str + len);
r = onig_search(ONIG_C(reg), (UChar* )str, end, (UChar* )str, end,
- (OnigRegion* )pm, options);
+ (OnigRegion* )pm, options);
if (r >= 0) {
r = 0; /* Match */
@@ -235,6 +238,7 @@ extern void
regfree(regex_t* reg)
{
onig_free(ONIG_C(reg));
+ reg->onig = (void* )0;
}
@@ -272,7 +276,7 @@ typedef struct {
static int
i_wrapper(const UChar* name, const UChar* name_end, int ng, int* gs,
- onig_regex_t* reg ARG_UNUSED, void* arg)
+ onig_regex_t* reg ARG_UNUSED, void* arg)
{
i_wrap* warg = (i_wrap* )arg;
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regsyntax.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regsyntax.c
index 95a4434e64..c9506d49bf 100644
--- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regsyntax.c
+++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regsyntax.c
@@ -2,7 +2,7 @@
regsyntax.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2019 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -67,8 +67,8 @@ OnigSyntaxType OnigSyntaxPosixExtended = {
ONIG_SYN_OP_BRACE_INTERVAL |
ONIG_SYN_OP_PLUS_ONE_INF | ONIG_SYN_OP_QMARK_ZERO_ONE | ONIG_SYN_OP_VBAR_ALT )
, 0
- , ( ONIG_SYN_CONTEXT_INDEP_ANCHORS |
- ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS | ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS |
+ , ( ONIG_SYN_CONTEXT_INDEP_ANCHORS |
+ ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS | ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS |
ONIG_SYN_ALLOW_UNMATCHED_CLOSE_SUBEXP |
ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC )
, ( ONIG_OPTION_SINGLELINE | ONIG_OPTION_MULTILINE )
@@ -174,11 +174,12 @@ OnigSyntaxType OnigSyntaxPerl = {
& ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END )
, ( ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE |
ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL |
+ ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT | ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL |
ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE |
ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP |
ONIG_SYN_OP2_QMARK_BRACE_CALLOUT_CONTENTS |
ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME |
- ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER |
+ ONIG_SYN_OP2_ESC_X_Y_TEXT_SEGMENT |
ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY |
ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT |
ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP |
@@ -207,11 +208,12 @@ OnigSyntaxType OnigSyntaxPerl_NG = {
& ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END )
, ( ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE |
ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL |
+ ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT | ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL |
ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE |
ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP |
ONIG_SYN_OP2_QMARK_BRACE_CALLOUT_CONTENTS |
ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME |
- ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER |
+ ONIG_SYN_OP2_ESC_X_Y_TEXT_SEGMENT |
ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY |
ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT |
ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP |
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode.c
index 16c34b62ce..d252090917 100644
--- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode.c
+++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode.c
@@ -2,7 +2,7 @@
unicode.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2019 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -504,6 +504,281 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc,
#endif
+#ifdef USE_UNICODE_WORD_BREAK
+
+enum WB_TYPE {
+ WB_Any = 0,
+ WB_ALetter,
+ WB_CR,
+ WB_Double_Quote,
+ WB_Extend,
+ WB_ExtendNumLet,
+ WB_Format,
+ WB_Hebrew_Letter,
+ WB_Katakana,
+ WB_LF,
+ WB_MidLetter,
+ WB_MidNum,
+ WB_MidNumLet,
+ WB_Newline,
+ WB_Numeric,
+ WB_Regional_Indicator,
+ WB_Single_Quote,
+ WB_WSegSpace,
+ WB_ZWJ,
+};
+
+typedef struct {
+ OnigCodePoint start;
+ OnigCodePoint end;
+ enum WB_TYPE type;
+} WB_RANGE_TYPE;
+
+#include "unicode_wb_data.c"
+
+static enum WB_TYPE
+wb_get_type(OnigCodePoint code)
+{
+ OnigCodePoint low, high, x;
+ enum WB_TYPE type;
+
+ for (low = 0, high = (OnigCodePoint )WB_RANGE_NUM; low < high; ) {
+ x = (low + high) >> 1;
+ if (code > WB_RANGES[x].end)
+ low = x + 1;
+ else
+ high = x;
+ }
+
+ type = (low < (OnigCodePoint )WB_RANGE_NUM &&
+ code >= WB_RANGES[low].start) ?
+ WB_RANGES[low].type : WB_Any;
+
+ return type;
+}
+
+#define IS_WB_IGNORE_TAIL(t) ((t) == WB_Extend || (t) == WB_Format || (t) == WB_ZWJ)
+#define IS_WB_AHLetter(t) ((t) == WB_ALetter || (t) == WB_Hebrew_Letter)
+#define IS_WB_MidNumLetQ(t) ((t) == WB_MidNumLet || (t) == WB_Single_Quote)
+
+static int
+wb_get_next_main_code(OnigEncoding enc, UChar* p, const UChar* end,
+ OnigCodePoint* rcode, enum WB_TYPE* rtype)
+{
+ OnigCodePoint code;
+ enum WB_TYPE type;
+
+ while (TRUE) {
+ p += enclen(enc, p);
+ if (p >= end) break;
+
+ code = ONIGENC_MBC_TO_CODE(enc, p, end);
+ type = wb_get_type(code);
+ if (! IS_WB_IGNORE_TAIL(type)) {
+ *rcode = code;
+ *rtype = type;
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
+extern int
+onigenc_wb_is_break_position(OnigEncoding enc, UChar* p, UChar* prev,
+ const UChar* start, const UChar* end)
+{
+ int r;
+ UChar* pp;
+ OnigCodePoint cfrom;
+ OnigCodePoint cfrom2;
+ OnigCodePoint cto;
+ OnigCodePoint cto2;
+ enum WB_TYPE from;
+ enum WB_TYPE from2;
+ enum WB_TYPE to;
+ enum WB_TYPE to2;
+
+ /* WB1: sot / Any */
+ if (p == start) return TRUE;
+ /* WB2: Any / eot */
+ if (p == end) return TRUE;
+
+ if (IS_NULL(prev)) {
+ prev = onigenc_get_prev_char_head(enc, start, p);
+ if (IS_NULL(prev)) return TRUE;
+ }
+
+ cfrom = ONIGENC_MBC_TO_CODE(enc, prev, end);
+ cto = ONIGENC_MBC_TO_CODE(enc, p, end);
+
+ from = wb_get_type(cfrom);
+ to = wb_get_type(cto);
+
+ /* short cut */
+ if (from == 0 && to == 0) goto WB999;
+
+ /* WB3: CR + LF */
+ if (from == WB_CR && to == WB_LF) return FALSE;
+
+ /* WB3a: (Newline|CR|LF) / */
+ if (from == WB_Newline || from == WB_CR || from == WB_LF) return TRUE;
+ /* WB3b: / (Newline|CR|LF) */
+ if (to == WB_Newline || to == WB_CR || to == WB_LF) return TRUE;
+
+ /* WB3c: ZWJ + {Extended_Pictographic} */
+ if (from == WB_ZWJ) {
+ if (onigenc_unicode_is_code_ctype(cto, PROP_INDEX_EXTENDEDPICTOGRAPHIC))
+ return FALSE;
+ }
+
+ /* WB3d: WSegSpace + WSegSpace */
+ if (from == WB_WSegSpace && to == WB_WSegSpace) return FALSE;
+
+ /* WB4: X (Extend|Format|ZWJ)* -> X */
+ if (IS_WB_IGNORE_TAIL(to)) return FALSE;
+ if (IS_WB_IGNORE_TAIL(from)) {
+ while ((pp = onigenc_get_prev_char_head(enc, start, prev)) != NULL) {
+ prev = pp;
+ cfrom = ONIGENC_MBC_TO_CODE(enc, prev, end);
+ from = wb_get_type(cfrom);
+ if (! IS_WB_IGNORE_TAIL(from))
+ break;
+ }
+ }
+
+ if (IS_WB_AHLetter(from)) {
+ /* WB5: AHLetter + AHLetter */
+ if (IS_WB_AHLetter(to)) return FALSE;
+
+ /* WB6: AHLetter + (MidLetter | MidNumLetQ) AHLetter */
+ if (to == WB_MidLetter || IS_WB_MidNumLetQ(to)) {
+ r = wb_get_next_main_code(enc, p, end, &cto2, &to2);
+ if (r == 1) {
+ if (IS_WB_AHLetter(to2)) return FALSE;
+ }
+ }
+ }
+
+ /* WB7: AHLetter (MidLetter | MidNumLetQ) + AHLetter */
+ if (from == WB_MidLetter || IS_WB_MidNumLetQ(from)) {
+ if (IS_WB_AHLetter(to)) {
+ from2 = WB_Any;
+ while ((pp = onigenc_get_prev_char_head(enc, start, prev)) != NULL) {
+ prev = pp;
+ cfrom2 = ONIGENC_MBC_TO_CODE(enc, prev, end);
+ from2 = wb_get_type(cfrom2);
+ if (! IS_WB_IGNORE_TAIL(from2))
+ break;
+ }
+
+ if (IS_WB_AHLetter(from2)) return FALSE;
+ }
+ }
+
+ if (from == WB_Hebrew_Letter) {
+ /* WB7a: Hebrew_Letter + Single_Quote */
+ if (to == WB_Single_Quote) return FALSE;
+
+ /* WB7b: Hebrew_Letter + Double_Quote Hebrew_Letter */
+ if (to == WB_Double_Quote) {
+ r = wb_get_next_main_code(enc, p, end, &cto2, &to2);
+ if (r == 1) {
+ if (to2 == WB_Hebrew_Letter) return FALSE;
+ }
+ }
+ }
+
+ /* WB7c: Hebrew_Letter Double_Quote + Hebrew_Letter */
+ if (from == WB_Double_Quote) {
+ if (to == WB_Hebrew_Letter) {
+ from2 = WB_Any;
+ while ((pp = onigenc_get_prev_char_head(enc, start, prev)) != NULL) {
+ prev = pp;
+ cfrom2 = ONIGENC_MBC_TO_CODE(enc, prev, end);
+ from2 = wb_get_type(cfrom2);
+ if (! IS_WB_IGNORE_TAIL(from2))
+ break;
+ }
+
+ if (from2 == WB_Hebrew_Letter) return FALSE;
+ }
+ }
+
+ if (to == WB_Numeric) {
+ /* WB8: Numeric + Numeric */
+ if (from == WB_Numeric) return FALSE;
+
+ /* WB9: AHLetter + Numeric */
+ if (IS_WB_AHLetter(from)) return FALSE;
+
+ /* WB11: Numeric (MidNum | MidNumLetQ) + Numeric */
+ if (from == WB_MidNum || IS_WB_MidNumLetQ(from)) {
+ from2 = WB_Any;
+ while ((pp = onigenc_get_prev_char_head(enc, start, prev)) != NULL) {
+ prev = pp;
+ cfrom2 = ONIGENC_MBC_TO_CODE(enc, prev, end);
+ from2 = wb_get_type(cfrom2);
+ if (! IS_WB_IGNORE_TAIL(from2))
+ break;
+ }
+
+ if (from2 == WB_Numeric) return FALSE;
+ }
+ }
+
+ if (from == WB_Numeric) {
+ /* WB10: Numeric + AHLetter */
+ if (IS_WB_AHLetter(to)) return FALSE;
+
+ /* WB12: Numeric + (MidNum | MidNumLetQ) Numeric */
+ if (to == WB_MidNum || IS_WB_MidNumLetQ(to)) {
+ r = wb_get_next_main_code(enc, p, end, &cto2, &to2);
+ if (r == 1) {
+ if (to2 == WB_Numeric) return FALSE;
+ }
+ }
+ }
+
+ /* WB13: Katakana + Katakana */
+ if (from == WB_Katakana && to == WB_Katakana) return FALSE;
+
+ /* WB13a: (AHLetter | Numeric | Katakana | ExtendNumLet) + ExtendNumLet */
+ if (IS_WB_AHLetter(from) || from == WB_Numeric || from == WB_Katakana
+ || from == WB_ExtendNumLet) {
+ if (to == WB_ExtendNumLet) return FALSE;
+ }
+
+ /* WB13b: ExtendNumLet + (AHLetter | Numeric | Katakana) */
+ if (from == WB_ExtendNumLet) {
+ if (IS_WB_AHLetter(to) || to == WB_Numeric || to == WB_Katakana)
+ return FALSE;
+ }
+
+
+ /* WB15: sot (RI RI)* RI + RI */
+ /* WB16: [^RI] (RI RI)* RI + RI */
+ if (from == WB_Regional_Indicator && to == WB_Regional_Indicator) {
+ int n = 0;
+ while ((prev = onigenc_get_prev_char_head(enc, start, prev)) != NULL) {
+ cfrom2 = ONIGENC_MBC_TO_CODE(enc, prev, end);
+ from2 = wb_get_type(cfrom2);
+ if (from2 != WB_Regional_Indicator)
+ break;
+
+ n++;
+ }
+ if ((n % 2) == 0) return FALSE;
+ }
+
+ WB999:
+ /* WB999: Any / Any */
+ return TRUE;
+}
+
+#endif /* USE_UNICODE_WORD_BREAK */
+
+
#ifdef USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER
enum EGCB_BREAK_TYPE {
@@ -657,8 +932,7 @@ onigenc_egcb_is_break_position(OnigEncoding enc, UChar* p, UChar* prev,
#ifdef USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER
if (! ONIGENC_IS_UNICODE_ENCODING(enc)) {
- if (from == 0x000d && to == 0x000a) return 0;
- else return 1;
+ return from != 0x000d || to != 0x000a;
}
btype = unicode_egcb_is_break_2code(from, to);
@@ -701,8 +975,7 @@ onigenc_egcb_is_break_position(OnigEncoding enc, UChar* p, UChar* prev,
return 1;
#else
- if (from == 0x000d && to == 0x000a) return 0;
- else return 1;
+ return from != 0x000d || to != 0x000a;
#endif /* USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER */
}
@@ -729,6 +1002,7 @@ onig_unicode_define_user_property(const char* name, OnigCodePoint* ranges)
int len;
int c;
char* s;
+ UChar* uname;
if (UserDefinedPropertyNum >= USER_DEFINED_PROPERTY_MAX_NUM)
return ONIGERR_TOO_MANY_USER_DEFINED_OBJECTS;
@@ -741,10 +1015,11 @@ onig_unicode_define_user_property(const char* name, OnigCodePoint* ranges)
if (s == 0)
return ONIGERR_MEMORY;
+ uname = (UChar* )name;
n = 0;
for (i = 0; i < len; i++) {
- c = name[i];
- if (c <= 0 || c >= 0x80) {
+ c = uname[i];
+ if (c < 0x20 || c >= 0x80) {
xfree(s);
return ONIGERR_INVALID_CHAR_PROPERTY_NAME;
}
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_egcb_data.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_egcb_data.c
index d1edb1cae2..6a7503a4fd 100644
--- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_egcb_data.c
+++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_egcb_data.c
@@ -25,7 +25,7 @@
* SUCH DAMAGE.
*/
-#define GRAPHEME_BREAK_PROPERTY_VERSION 11_0_0
+#define GRAPHEME_BREAK_PROPERTY_VERSION 12_1_0
/*
CR
@@ -43,7 +43,7 @@ V
ZWJ
*/
-static int EGCB_RANGE_NUM = 1321;
+static int EGCB_RANGE_NUM = 1326;
static EGCB_RANGE_TYPE EGCB_RANGES[] = {
{0x000000, 0x000009, EGCB_Control },
{0x00000a, 0x00000a, EGCB_LF },
@@ -197,8 +197,7 @@ static EGCB_RANGE_TYPE EGCB_RANGES[] = {
{0x000e47, 0x000e4e, EGCB_Extend },
{0x000eb1, 0x000eb1, EGCB_Extend },
{0x000eb3, 0x000eb3, EGCB_SpacingMark },
- {0x000eb4, 0x000eb9, EGCB_Extend },
- {0x000ebb, 0x000ebc, EGCB_Extend },
+ {0x000eb4, 0x000ebc, EGCB_Extend },
{0x000ec8, 0x000ecd, EGCB_Extend },
{0x000f18, 0x000f19, EGCB_Extend },
{0x000f35, 0x000f35, EGCB_Extend },
@@ -271,9 +270,7 @@ static EGCB_RANGE_TYPE EGCB_RANGES[] = {
{0x001ab0, 0x001abe, EGCB_Extend },
{0x001b00, 0x001b03, EGCB_Extend },
{0x001b04, 0x001b04, EGCB_SpacingMark },
- {0x001b34, 0x001b34, EGCB_Extend },
- {0x001b35, 0x001b35, EGCB_SpacingMark },
- {0x001b36, 0x001b3a, EGCB_Extend },
+ {0x001b34, 0x001b3a, EGCB_Extend },
{0x001b3b, 0x001b3b, EGCB_SpacingMark },
{0x001b3c, 0x001b3c, EGCB_Extend },
{0x001b3d, 0x001b41, EGCB_SpacingMark },
@@ -305,7 +302,6 @@ static EGCB_RANGE_TYPE EGCB_RANGES[] = {
{0x001ce1, 0x001ce1, EGCB_SpacingMark },
{0x001ce2, 0x001ce8, EGCB_Extend },
{0x001ced, 0x001ced, EGCB_Extend },
- {0x001cf2, 0x001cf3, EGCB_SpacingMark },
{0x001cf4, 0x001cf4, EGCB_Extend },
{0x001cf7, 0x001cf7, EGCB_SpacingMark },
{0x001cf8, 0x001cf9, EGCB_Extend },
@@ -348,8 +344,8 @@ static EGCB_RANGE_TYPE EGCB_RANGES[] = {
{0x00a9b4, 0x00a9b5, EGCB_SpacingMark },
{0x00a9b6, 0x00a9b9, EGCB_Extend },
{0x00a9ba, 0x00a9bb, EGCB_SpacingMark },
- {0x00a9bc, 0x00a9bc, EGCB_Extend },
- {0x00a9bd, 0x00a9c0, EGCB_SpacingMark },
+ {0x00a9bc, 0x00a9bd, EGCB_Extend },
+ {0x00a9be, 0x00a9c0, EGCB_SpacingMark },
{0x00a9e5, 0x00a9e5, EGCB_Extend },
{0x00aa29, 0x00aa2e, EGCB_Extend },
{0x00aa2f, 0x00aa30, EGCB_SpacingMark },
@@ -1177,7 +1173,6 @@ static EGCB_RANGE_TYPE EGCB_RANGES[] = {
{0x00d789, 0x00d7a3, EGCB_LVT },
{0x00d7b0, 0x00d7c6, EGCB_V },
{0x00d7cb, 0x00d7fb, EGCB_T },
- {0x00d800, 0x00dfff, EGCB_Control },
{0x00fb1e, 0x00fb1e, EGCB_Extend },
{0x00fe00, 0x00fe0f, EGCB_Extend },
{0x00fe20, 0x00fe2f, EGCB_Extend },
@@ -1291,6 +1286,12 @@ static EGCB_RANGE_TYPE EGCB_RANGES[] = {
{0x01182f, 0x011837, EGCB_Extend },
{0x011838, 0x011838, EGCB_SpacingMark },
{0x011839, 0x01183a, EGCB_Extend },
+ {0x0119d1, 0x0119d3, EGCB_SpacingMark },
+ {0x0119d4, 0x0119d7, EGCB_Extend },
+ {0x0119da, 0x0119db, EGCB_Extend },
+ {0x0119dc, 0x0119df, EGCB_SpacingMark },
+ {0x0119e0, 0x0119e0, EGCB_Extend },
+ {0x0119e4, 0x0119e4, EGCB_SpacingMark },
{0x011a01, 0x011a0a, EGCB_Extend },
{0x011a33, 0x011a38, EGCB_Extend },
{0x011a39, 0x011a39, EGCB_SpacingMark },
@@ -1300,7 +1301,7 @@ static EGCB_RANGE_TYPE EGCB_RANGES[] = {
{0x011a51, 0x011a56, EGCB_Extend },
{0x011a57, 0x011a58, EGCB_SpacingMark },
{0x011a59, 0x011a5b, EGCB_Extend },
- {0x011a86, 0x011a89, EGCB_Prepend },
+ {0x011a84, 0x011a89, EGCB_Prepend },
{0x011a8a, 0x011a96, EGCB_Extend },
{0x011a97, 0x011a97, EGCB_SpacingMark },
{0x011a98, 0x011a99, EGCB_Extend },
@@ -1330,9 +1331,11 @@ static EGCB_RANGE_TYPE EGCB_RANGES[] = {
{0x011d97, 0x011d97, EGCB_Extend },
{0x011ef3, 0x011ef4, EGCB_Extend },
{0x011ef5, 0x011ef6, EGCB_SpacingMark },
+ {0x013430, 0x013438, EGCB_Control },
{0x016af0, 0x016af4, EGCB_Extend },
{0x016b30, 0x016b36, EGCB_Extend },
- {0x016f51, 0x016f7e, EGCB_SpacingMark },
+ {0x016f4f, 0x016f4f, EGCB_Extend },
+ {0x016f51, 0x016f87, EGCB_SpacingMark },
{0x016f8f, 0x016f92, EGCB_Extend },
{0x01bc9d, 0x01bc9e, EGCB_Extend },
{0x01bca0, 0x01bca3, EGCB_Control },
@@ -1357,6 +1360,8 @@ static EGCB_RANGE_TYPE EGCB_RANGES[] = {
{0x01e01b, 0x01e021, EGCB_Extend },
{0x01e023, 0x01e024, EGCB_Extend },
{0x01e026, 0x01e02a, EGCB_Extend },
+ {0x01e130, 0x01e136, EGCB_Extend },
+ {0x01e2ec, 0x01e2ef, EGCB_Extend },
{0x01e8d0, 0x01e8d6, EGCB_Extend },
{0x01e944, 0x01e94a, EGCB_Extend },
{0x01f1e6, 0x01f1ff, EGCB_Regional_Indicator },
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold1_key.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold1_key.c
index 553f0e748c..7dbd6a5995 100644
--- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold1_key.c
+++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold1_key.c
@@ -1,7 +1,7 @@
/* This file was converted by gperf_fold_key_conv.py
from gperf output file. */
/* ANSI-C code produced by gperf version 3.1 */
-/* Command-line: /usr/bin/gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1 -N onigenc_unicode_fold1_key unicode_fold1_key.gperf */
+/* Command-line: /usr/local/bin/gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1 -N onigenc_unicode_fold1_key unicode_fold1_key.gperf */
/* Computed positions: -k'1-3' */
@@ -36,12 +36,12 @@
//#include <string.h>
#include "regenc.h"
-#define TOTAL_KEYWORDS 1346
+#define TOTAL_KEYWORDS 1353
#define MIN_WORD_LENGTH 3
#define MAX_WORD_LENGTH 3
#define MIN_HASH_VALUE 3
-#define MAX_HASH_VALUE 1765
-/* maximum key range = 1763, duplicates = 0 */
+#define MAX_HASH_VALUE 1791
+/* maximum key range = 1789, duplicates = 0 */
#ifdef __GNUC__
__inline
@@ -56,32 +56,32 @@ hash(OnigCodePoint codes[])
{
static const unsigned short asso_values[] =
{
- 4, 2, 147, 16, 1, 13, 1233, 682, 1225, 643,
- 1208, 95, 9, 89, 1391, 82, 8, 80, 1383, 6,
- 1201, 638, 1191, 602, 151, 75, 1377, 68, 1374, 464,
- 0, 11, 1369, 3, 1352, 278, 23, 424, 660, 320,
- 640, 20, 635, 34, 5, 29, 860, 27, 630, 0,
- 854, 1352, 870, 1336, 470, 1322, 623, 1319, 610, 230,
- 1184, 1309, 1159, 779, 1042, 980, 836, 844, 456, 597,
- 285, 158, 590, 477, 583, 42, 576, 1442, 447, 1119,
- 440, 922, 426, 1434, 400, 1433, 327, 1428, 567, 1417,
- 386, 1443, 458, 856, 704, 1435, 1010, 66, 232, 413,
- 204, 1417, 226, 1412, 190, 1095, 379, 1253, 198, 1211,
- 175, 209, 561, 362, 528, 1296, 257, 1169, 240, 1291,
- 508, 1163, 484, 1228, 699, 735, 831, 488, 679, 513,
- 420, 639, 1148, 83, 683, 806, 1152, 77, 1170, 537,
- 1213, 3, 1285, 166, 1410, 1766, 1394, 1766, 1206, 460,
- 757, 1766, 367, 1766, 1339, 1766, 908, 57, 1321, 1766,
- 384, 345, 686, 52, 1145, 40, 218, 180, 1135, 33,
- 1292, 276, 1282, 14, 1408, 719, 1128, 701, 1275, 129,
- 1116, 610, 1255, 1343, 1109, 874, 1097, 448, 823, 346,
- 877, 181, 1089, 0, 1077, 786, 1080, 768, 1068, 1180,
- 1060, 1056, 1048, 798, 811, 177, 1045, 1022, 1030, 993,
- 1020, 789, 353, 990, 548, 982, 517, 970, 334, 765,
- 166, 753, 138, 743, 100, 963, 87, 720, 49, 957,
- 75, 951, 62, 411, 126, 945, 113, 1266, 317, 935,
- 304, 925, 293, 1244, 714, 912, 275, 490, 263, 469,
- 395, 1297, 896, 208, 887, 80, 542, 11, 246
+ 4, 2, 147, 16, 1, 13, 1228, 725, 1224, 638,
+ 1204, 95, 9, 82, 1403, 80, 8, 68, 1391, 6,
+ 1203, 602, 1200, 320, 151, 67, 1385, 61, 1384, 158,
+ 0, 11, 1252, 3, 733, 278, 23, 425, 660, 424,
+ 640, 20, 635, 105, 5, 29, 916, 34, 630, 0,
+ 906, 1378, 899, 1377, 470, 1363, 623, 902, 610, 230,
+ 1193, 1358, 1190, 779, 986, 1336, 890, 883, 456, 597,
+ 285, 158, 590, 477, 583, 42, 576, 1447, 447, 1440,
+ 440, 1353, 426, 1429, 400, 1417, 327, 1407, 567, 1389,
+ 386, 1207, 458, 724, 854, 979, 1016, 66, 232, 413,
+ 204, 1431, 226, 1317, 190, 1167, 379, 1319, 198, 1270,
+ 175, 209, 561, 362, 528, 1323, 257, 1099, 240, 1309,
+ 508, 1172, 484, 1306, 699, 865, 850, 488, 679, 755,
+ 420, 639, 1149, 105, 691, 789, 1125, 46, 809, 652,
+ 1293, 3, 1262, 166, 1426, 0, 1424, 1792, 1220, 460,
+ 706, 1, 367, 1792, 1341, 1792, 1151, 56, 1235, 1792,
+ 384, 345, 965, 40, 1168, 33, 218, 180, 1159, 20,
+ 1296, 276, 1243, 14, 1401, 777, 1142, 682, 1284, 129,
+ 1135, 610, 1181, 871, 1123, 858, 1042, 510, 842, 499,
+ 999, 346, 830, 0, 823, 1288, 1115, 768, 732, 1272,
+ 1101, 1098, 1082, 1270, 811, 177, 1078, 1074, 1061, 1058,
+ 1050, 789, 353, 1018, 548, 1006, 517, 988, 334, 765,
+ 166, 753, 138, 743, 100, 969, 87, 720, 49, 975,
+ 75, 965, 62, 411, 126, 955, 113, 1262, 317, 943,
+ 304, 679, 293, 1252, 714, 937, 275, 490, 263, 469,
+ 395, 1345, 931, 208, 921, 80, 542, 11, 246
};
return asso_values[(unsigned char)onig_codes_byte_at(codes, 2)+3] + asso_values[(unsigned char)onig_codes_byte_at(codes, 1)] + asso_values[(unsigned char)onig_codes_byte_at(codes, 0)];
}
@@ -93,549 +93,550 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[])
{
-1, -1, -1,
- 3408,
+ 3429,
- 1900,
+ 1906,
- 1861,
+ 1867,
210,
171,
- 3393,
+ 3414,
- 1921,
+ 1927,
- 1687,
+ 1690,
231,
- 1879,
+ 1885,
- 1873,
+ 1879,
189,
183,
- 2234,
+ 2240,
- 1312,
+ 1315,
- 1273,
+ 1276,
165,
- 789,
+ 792,
- 2255,
+ 2261,
- 1333,
+ 1336,
- 1591,
+ 1594,
- 1627,
+ 1630,
- 1291,
+ 1294,
- 1285,
+ 1288,
- 1909,
+ 1915,
- 2237,
+ 2243,
219,
- 3402,
+ 1618,
- 2231,
+ 2237,
- 3396,
+ 3417,
- 2975,
+ 2981,
- 2897,
+ 2903,
- 2291,
+ 2297,
- 2984,
+ 2990,
- 3390,
+ 3423,
- 2276,
+ 2282,
- 2942,
+ 2948,
- 1321,
+ 1324,
- 2933,
+ 2939,
- 2921,
+ 2927,
- 1615,
+ 1606,
- 2978,
+ 2984,
- 3486,
+ 3507,
- 2900,
+ 2906,
- 971,
+ 974,
273,
- 2894,
+ 2900,
- 1603,
+ 1600,
- 2642,
+ 2648,
- 3537,
+ 3558,
- 2183,
+ 2189,
- 1225,
+ 1228,
459,
- 2993,
+ 2999,
80,
- 2879,
-
- 1792,
+ 2885,
- 3717,
+ 1795,
- 1510,
+ 3738,
- 1597,
+ 1513,
378,
- 2432,
+ 1459,
- 3549,
+ 2438,
- 2189,
+ 3570,
- 1231,
+ 2195,
+
+ 1234,
465,
- 857,
+ 860,
92,
- 1038,
+ 1041,
- 1804,
+ 1807,
- 3729,
+ 3750,
- 1522,
+ 1525,
- 2708,
+ 2714,
- 2543,
+ 2549,
- 2435,
+ 2441,
- 3543,
+ 3564,
- 2186,
+ 2192,
- 1228,
+ 1231,
462,
- 863,
+ 866,
86,
- 2882,
+ 2888,
- 1798,
+ 1801,
- 3723,
+ 3744,
- 1516,
+ 1519,
159,
- 2555,
+ 2561,
- 3531,
+ 3552,
- 2180,
+ 2186,
- 1222,
+ 1225,
456,
- 1456,
-
- 860,
+ 2972,
- 2876,
+ 863,
- 1786,
+ 2882,
- 3711,
+ 1789,
- 1504,
+ 3732,
- 1444,
+ 1507,
2966,
- 2549,
+ 2942,
- 3525,
+ 2555,
- 2177,
+ 3546,
- 1219,
+ 2183,
+
+ 1222,
453,
- 854,
+ 857,
- 2960,
+ 3411,
- 2873,
+ 2879,
- 1780,
+ 1783,
- 3705,
+ 3726,
- 1498,
+ 1501,
2936,
- 2537,
+ 2543,
2930,
- 3561,
+ 3582,
- 2195,
+ 2201,
- 1237,
+ 1240,
471,
- 851,
+ 854,
105,
- 2924,
+ 1447,
- 1816,
+ 1819,
- 3741,
+ 3762,
- 1534,
+ 1537,
- 3333,
+ 3354,
- 2531,
+ 2537,
- 2918,
+ 2924,
- 3555,
+ 3576,
- 2192,
+ 2198,
- 1234,
+ 1237,
468,
- 869,
+ 872,
99,
399,
- 1810,
+ 1813,
- 3735,
+ 3756,
- 1528,
+ 1531,
- 1645,
+ 1648,
- 2567,
+ 2573,
- 3519,
+ 3540,
- 2174,
+ 2180,
- 1216,
+ 1219,
- 2417,
+ 2423,
-1,
- 866,
+ 869,
- 2870,
+ 2876,
- 1774,
+ 1777,
- 3699,
+ 3720,
- 1492,
+ 1495,
541,
502,
- 2561,
+ 2567,
- 694,
+ 697,
- 1891,
+ 1897,
559,
201,
- 848,
+ 851,
520,
514,
- 3474,
- -1,
+ 3495,
- 959,
+ 1864,
+
+ 962,
267,
- 2525,
+ 2531,
- 2270,
+ 2276,
- 2630,
+ 2636,
- 1303,
+ 1306,
- 3513,
+ 3534,
- 2171,
+ 2177,
- 1213,
+ 1216,
366,
- 2333,
+ 2339,
-1,
- 2867,
+ 2873,
- 1768,
+ 1771,
- 3693,
+ 3714,
- 1486,
+ 1489,
- 2021,
+ 2027,
- 1060,
+ 1063,
324,
- 1189,
+ 1192,
27,
- 2957,
- -1,
+ 2963,
- 845,
+ 3276,
- 1723,
+ 848,
- 3648,
+ 1726,
- 3135,
+ 3669,
- 1609,
+ 3141,
- 1681,
+ 1612,
- 1375,
+ 2978,
- 2519,
+ 1378,
+
+ 2525,
- 2012,
+ 2018,
- 1051,
+ 1054,
315,
- 827,
+ 830,
12,
- 2714,
- -1,
-
- 782,
+ 2720,
+ -1, -1,
- 2018,
+ 2024,
- 1057,
+ 1060,
321,
- 2366,
+ 2372,
- 4065,
+ 4086,
- 1357,
+ 1360,
- 2005,
+ 2011,
- 1044,
+ 1047,
309,
- 3612,
+ 3633,
0,
- 2711,
+ 2717,
-1,
- 1369,
+ 1372,
153,
31,
- 2726,
+ 2732,
- 2354,
+ 2360,
- 1585,
+ 1588,
- 1345,
+ 1348,
- 2090,
+ 2096,
- 1132,
+ 1135,
387,
-1,
- 1378,
+ 1381,
- 2786,
+ 2792,
- 1606,
+ 1609,
-1,
- 2009,
+ 2015,
- 1047,
+ 1050,
312,
- 3438,
+ 3459,
6,
- 919,
+ 922,
- 2002,
+ 2008,
- 1041,
+ 1044,
306,
- 2594,
+ 2600,
- 3864,
+ 3885,
- 2360,
+ 2366,
- 3321,
+ 3342,
- 1351,
+ 1354,
- 2033,
+ 2039,
- 1072,
+ 1075,
336,
- 2450,
+ 2456,
52,
- 2729,
+ 2735,
- 2228,
+ 2234,
- 1270,
+ 1273,
499,
- 3858,
+ 3879,
168,
- 2384,
- -1,
+ 2390,
- 1399,
+ 682,
- 1594,
+ 1402,
+
+ 1597,
-1,
- 715,
+ 718,
- 2030,
+ 2036,
- 1069,
+ 1072,
333,
- 2444,
+ 2450,
46,
- 3597,
+ 3618,
- 2213,
+ 2219,
- 1255,
+ 1258,
487,
-1,
141,
- 2378,
+ 2384,
- 1852,
+ 1855,
- 1393,
+ 1396,
- 1570,
+ 1573,
-1,
- 712,
+ 715,
- 3591,
+ 3612,
- 2210,
+ 2216,
- 1252,
+ 1255,
483,
@@ -643,377 +644,376 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[])
135,
- 2891,
+ 2897,
- 1846,
+ 1849,
- 1621,
+ 1624,
- 1564,
+ 1567,
- 3471,
+ 3492,
- 1960,
+ 1966,
- 956,
+ 959,
- 3852,
+ 3873,
-1,
- 2273,
+ 2279,
- 2627,
+ 2633,
- 884,
+ 887,
- 3579,
+ 3600,
- 2204,
+ 2210,
- 1246,
+ 1249,
480,
- 2330,
+ 2336,
123,
532,
- 1834,
+ 1837,
- 3759,
+ 3780,
- 1552,
+ 1555,
-1,
- 3573,
+ 3594,
- 2201,
+ 2207,
- 1243,
+ 1246,
477,
- 2990,
+ 2996,
117,
- 878,
+ 881,
- 1828,
+ 1831,
- 3753,
+ 3774,
- 1546,
+ 1549,
- 700,
+ 703,
-1,
- 3846,
+ 3867,
- 3567,
+ 3588,
- 2198,
+ 2204,
- 1240,
+ 1243,
474,
- 875,
+ 878,
111,
658,
- 1822,
+ 1825,
- 3747,
+ 3768,
- 1540,
+ 1543,
- 3801,
+ 3822,
- 1984,
+ 1990,
- 1005,
+ 1008,
288,
-1,
- 2285,
+ 2273,
- 2675,
+ 2681,
- 872,
+ 875,
- 2168,
+ 2174,
- 1210,
+ 1213,
-1,
643,
- 2342,
+ 2348,
- 2864,
+ 2870,
- 1762,
+ 1765,
- 3687,
+ 3708,
- 1480,
+ 1483,
-1, -1,
652,
- 3261,
+ 3267,
381,
- 3900,
+ 3921,
- 3002,
+ 2960,
- 842,
+ 845,
637,
- 1675,
+ 1684,
- 2159,
+ 2165,
- 1201,
+ 1204,
- 3231,
+ 3237,
661,
- 2513,
+ 2519,
- 2855,
+ 2861,
- 1744,
+ 1747,
- 3669,
+ 3690,
- 1462,
+ 1465,
- 775,
+ 785,
- 3882,
+ 3903,
- 2426,
+ 2432,
- 3318,
+ 3339,
37,
- 2084,
+ 2090,
- 1111,
+ 1114,
372,
- 3222,
+ 3228,
- 3894,
+ 3915,
- 2765,
+ 2771,
640,
-1,
- 1384,
+ 1387,
- 2495,
+ 2501,
- 3870,
+ 3891,
- 3228,
+ 3234,
- 2015,
+ 2021,
- 1054,
+ 1057,
318,
- 3903,
+ 3924,
18,
- 3216,
+ 3222,
- 1123,
+ 1126,
- 1990,
+ 1996,
- 1017,
+ 1020,
294,
- 2777,
+ 2783,
- 2372,
+ 2378,
- 2687,
+ 2693,
- 1363,
+ 1366,
- 3078,
+ 3084,
- 3603,
+ 3624,
- 2216,
+ 2222,
- 1258,
+ 1261,
- 2348,
+ 2354,
- 3288,
+ 3297,
- 3876,
+ 3897,
- 1981,
+ 1987,
- 999,
+ 1002,
285,
- 1576,
+ 1579,
667,
- 2669,
+ 2675,
- 3219,
+ 3225,
- 3366,
+ 3387,
- 3069,
+ 3075,
- 3999,
+ 4020,
- 3552,
+ 3573,
- 2339,
+ 2345,
- 3213,
+ 3219,
- 3924,
+ 3945,
- 3984,
+ 4005,
96,
- 3075,
+ 3081,
- 1807,
+ 1810,
- 3732,
+ 3753,
- 1525,
+ 1528,
- 2051,
+ 2057,
- 1090,
+ 1093,
- 3063,
+ 3069,
- 2486,
+ 2492,
- 2351,
+ 2357,
- 3507,
+ 3528,
- 1978,
+ 1984,
- 993,
+ 996,
282,
- 3975,
+ 3996,
- 3918,
+ 3939,
- 2663,
+ 2669,
-1,
- 1435,
+ 1438,
- 2558,
+ 2564,
- 2279,
+ 2291,
- 3993,
+ 2285,
-1,
- 3987,
+ 4008,
- 3501,
+ 3522,
- 1975,
+ 1981,
- 987,
+ 990,
279,
- 3981,
+ 4014,
- 3066,
+ 3072,
- 2657,
+ 2663,
- 3495,
+ 3516,
- 1972,
+ 1978,
- 981,
+ 984,
276,
- 3060,
+ 3066,
-1,
- 2651,
+ 2657,
- 2996,
+ 3008,
- 1669,
+ 3002,
- 3465,
+ 3486,
- 1957,
+ 1963,
- 947,
+ 950,
- 1993,
+ 1999,
- 1023,
+ 1026,
297,
- 2621,
+ 2627,
369,
- 2693,
-
- 765,
+ 2699,
+ -1,
- 3171,
+ 3177,
- 3378,
+ 3399,
- 2324,
+ 2330,
- 3600,
+ 3621,
- 3423,
+ 3444,
- 1936,
+ 1942,
- 903,
+ 906,
243,
@@ -1021,1923 +1021,1931 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[])
613,
- 2579,
+ 2585,
- 3480,
+ 3501,
- 1573,
+ 1576,
- 965,
+ 968,
270,
- 3360,
+ 3381,
- 2306,
+ 2312,
- 2636,
+ 2642,
- 3840,
+ 3861,
- 2039,
+ 2045,
- 1078,
+ 1081,
342,
- 2462,
+ 2468,
65,
- 3594,
+ 3615,
348,
- 2477,
-
- 709,
+ 2483,
- 2972,
+ 712,
+ -1,
138,
- 2396,
+ 2402,
- 1849,
+ 1852,
- 1411,
+ 1414,
- 1567,
+ 1570,
- 2411,
+ 2417,
- 718,
+ 721,
- 1426,
+ 1429,
- 3822,
+ 3843,
- 3017,
+ 3023,
- 724,
- -1,
+ 727,
- 3354,
+ 1678,
- 3195,
+ 3375,
- 2036,
+ 3201,
- 1075,
+ 2042,
+
+ 1078,
339,
- 2456,
+ 2462,
59,
- -1, -1,
+ -1,
- 351,
+ 4002,
- 2483,
+ 778,
- 2165,
+ 1672,
- 1207,
+ 2171,
- 2390,
+ 1210,
- 3348,
+ 2396,
- 1405,
+ 3369,
- 2861,
+ 1408,
- 1756,
+ 2867,
- 3681,
+ 1759,
- 1474,
+ 3702,
- 1432,
+ 1477,
- 3342,
+ 768,
- 2027,
+ 3363,
- 1066,
+ 2033,
+
+ 1069,
330,
- 706,
+ 709,
40,
622,
-1,
- 3909,
+ 3930,
- 3312,
+ 3333,
-1,
- 3384,
-
- 363,
+ 3405,
+ -1,
- 2507,
+ 2513,
- 1387,
+ 1390,
- 2225,
+ 2231,
- 1267,
+ 1270,
496,
- 3042,
+ 3048,
162,
607,
- 2162,
+ 2168,
- 1204,
+ 1207,
- 1588,
+ 1591,
-1,
- 3888,
+ 3909,
- 2858,
+ 2864,
- 1750,
+ 1753,
- 3675,
+ 3696,
- 1468,
+ 1471,
- 3327,
+ 3348,
-1,
- 3225,
+ 3231,
634,
- 2024,
+ 2030,
- 1063,
+ 1066,
327,
- 3279,
+ 3288,
34,
- 3201,
+ 3207,
- 1987,
+ 1993,
- 1011,
+ 1014,
291,
-1,
- 2501,
+ 2507,
- 2681,
+ 2687,
601,
- 1381,
+ 1384,
- 3489,
+ 3510,
- 1969,
+ 1975,
- 974,
+ 977,
- 2345,
+ 2351,
-1,
- 3192,
+ 3198,
- 2645,
+ 2651,
- 3483,
+ 3504,
- 1966,
+ 1972,
- 968,
+ 971,
- 3114,
+ 3120,
- 3867,
+ 3888,
598,
- 2639,
+ 2645,
- 3477,
+ 3498,
- 1963,
+ 1969,
- 962,
+ 965,
-1,
- 3960,
+ 3981,
595,
- 2633,
+ 2639,
- 3468,
+ 3489,
- 3072,
+ 3078,
- 951,
+ 954,
264,
- 3246,
+ 3252,
- 2336,
+ 2342,
- 2624,
+ 2630,
- 3309,
+ 3330,
- 3048,
+ 3054,
625,
- 3189,
+ 3195,
- 703,
+ 706,
- 2327,
+ 2333,
- 3435,
+ 3456,
- 1942,
+ 1948,
- 916,
+ 919,
249,
2267,
-1,
- 2591,
+ 2597,
- 1651,
+ 1654,
574,
- 3039,
+ 3045,
-1,
- 3186,
+ 3192,
- 2318,
+ 2324,
- 3429,
+ 3450,
- 1939,
+ 1945,
- 910,
+ 913,
246,
- 745,
+ 748,
- 3183,
+ 3189,
- 2585,
+ 2591,
- 3405,
+ 3426,
- 1927,
+ 1933,
2954,
237,
-1,
- 2312,
+ 2318,
- 1918,
+ 1924,
- 3168,
+ 3174,
228,
- 3204,
+ 3210,
- 4029,
+ 4050,
- 1915,
+ 1921,
354,
225,
- 1339,
+ 1342,
- 3036,
+ 3042,
-1,
- 2294,
+ 2300,
- 3372,
+ 3393,
- 1330,
+ 1333,
- 2261,
+ 2255,
- 3147,
+ 3153,
- 2288,
+ 2294,
- 1438,
+ 1441,
- 1327,
+ 1330,
- 2249,
+ 363,
673,
- 3336,
+ 3357,
- 3936,
+ 3957,
- 3033,
+ 3039,
- 3011,
+ 3017,
- 1912,
+ 1918,
- 3951,
+ 3972,
222,
- 3330,
+ 3351,
- 3008,
+ 3014,
- 3029,
+ 3035,
- 3834,
+ 3855,
- 2948,
+ 2918,
- 3243,
+ 3249,
- 3005,
-
- 3324,
+ 3011,
- 2282,
+ 3345,
- 2912,
+ 2288,
+ -1,
- 1324,
+ 1327,
- 3014,
+ 3020,
664,
- 3051,
-
- 3315,
- -1,
+ 3057,
- 2048,
+ 3336,
- 1087,
+ 3597,
- 3930,
+ 2054,
- 2480,
+ 1090,
- 2057,
+ 3951,
- 688,
+ 2486,
- 357,
+ 120,
- 3957,
+ 2894,
- 1126,
+ 1834,
- 2738,
+ 3777,
- 2999,
+ 1552,
- 2414,
+ 1642,
- 2780,
+ 3005,
- 1429,
+ 2420,
- 2243,
+ 2063,
- 4062,
+ 1432,
- 727,
+ 357,
- 1447,
+ 4083,
- 3828,
- -1,
+ 730,
- 2042,
+ 2744,
- 1081,
+ 3849,
- 3912,
+ 739,
- 2468,
+ 2048,
- 71,
+ 1084,
- 1996,
+ 3933,
- 1029,
+ 2474,
- 300,
+ 71,
- 1639,
+ 1450,
+ -1,
- 3237,
+ 2087,
- 2699,
+ 1111,
- 2402,
+ 3243,
+ -1,
- 2906,
+ 2408,
- 1417,
+ 2768,
- 3585,
+ 1420,
- 2207,
+ 3606,
- 1249,
- -1,
+ 2213,
- 736,
+ 1252,
+ -1, -1,
129,
- 3534,
+ 3555,
- 1840,
+ 1843,
- 3765,
+ 3786,
- 1558,
+ 1561,
592,
77,
- 1633,
+ 1029,
- 1789,
+ 1792,
- 3714,
+ 3735,
- 1507,
+ 1510,
- 3969,
+ 2702,
589,
- 2429,
- -1, -1,
+ 2435,
- 3906,
+ 2144,
- 730,
- -1,
+ 1912,
- 345,
+ 3927,
- 2471,
+ 216,
- 74,
+ 2249,
+
+ 2840,
+
+ 1705,
+
+ 3648,
-1,
- 3234,
+ 3240,
- 3522,
+ 3543,
- 2540,
+ 2546,
586,
450,
- 2405,
+ 1321,
- 3198,
+ 3204,
- 1420,
+ 806,
- 1777,
+ 1780,
- 3702,
+ 3723,
- 1495,
+ 1498,
- 3516,
- -1, -1,
+ 3537,
+ -1,
+
+ 2912,
447,
- 3180,
+ 3186,
- 2081,
+ 351,
- 1108,
+ 2489,
- 1771,
+ 1774,
- 3696,
+ 3717,
- 1489,
+ 1492,
- 2762,
+ 2993,
- 3177,
+ 3183,
- 3510,
+ 3531,
-1,
- 2528,
+ 2534,
444,
- -1,
- 1177,
+ 1435,
- 3174,
+ 1180,
- 1765,
+ 3180,
- 3690,
+ 1768,
- 1483,
+ 3711,
- 1699,
+ 1486,
- 3624,
+ 1702,
- 2522,
+ 3645,
+
+ 2528,
565,
- 3450,
+ 3471,
- 3081,
+ 3087,
- 931,
+ 934,
255,
556,
- -1,
- 2606,
+ 1636,
- 3045,
+ 2612,
+
+ 3051,
679,
553,
- 2516,
+ 2522,
-1,
- 3153,
+ 3159,
432,
- 1693,
+ 2495,
- 3618,
+ 733,
- 3026,
+ 3032,
- 1741,
+ 1744,
- 3666,
+ 3687,
- 1459,
+ 1462,
-1,
- 1186,
-
- 2423,
+ 691,
- 3023,
+ 2429,
- 795,
+ 3029,
- 3150,
+ 1453,
- 1717,
+ 3156,
- 3642,
- -1,
+ 3408,
+ -1, -1,
550,
- 3020,
+ 3026,
- 2489,
+ 2069,
- 3141,
+ 3147,
- 2147,
+ 2153,
- 2492,
+ 2498,
421,
- 820,
+ 2750,
- 3132,
+ 3138,
- 2843,
+ 2849,
- 1720,
-
- 3645,
+ 1723,
- 1450,
+ 3666,
+ -1,
- 3129,
+ 3135,
-1, -1,
- 2123,
+ 2138,
- 1165,
+ 1177,
- 408,
+ 414,
676,
- 823,
-
- 2819,
+ 826,
- 1672,
+ 2834,
- 682,
+ 1693,
- 2045,
+ 2135,
- 1084,
+ 1174,
- 3963,
+ 411,
- 2474,
+ 3990,
- 3459,
+ 3984,
- 1954,
+ 2831,
- 941,
- -1,
+ 1687,
- 770,
+ 1861,
- 3126,
+ 685,
- 2615,
+ 795,
- 2408,
+ 3132,
+ -1,
- 3462,
+ 2129,
- 1423,
+ 1168,
- 944,
+ 408,
+ -1,
- 261,
+ 789,
- 721,
- -1,
+ 2825,
- 2618,
+ 1675,
-1,
- 628,
+ 2051,
- 3954,
+ 1087,
- 3411,
+ 3975,
- 1930,
+ 2480,
- 2321,
+ 2002,
- 240,
+ 1032,
- 1026,
- -1,
+ 300,
- 3399,
+ 1858,
- 1924,
+ 773,
- 2696,
+ 2705,
- 234,
+ 405,
- 3252,
+ 2414,
-1,
- 4056,
-
- 3282,
+ 1426,
- 1342,
- -1,
+ 1666,
- 3417,
+ 4077,
- 1933,
+ 724,
- 896,
+ 345,
- 3942,
+ 2477,
- 1336,
+ 74,
-1,
- 2573,
+ 3258,
- 405,
+ 3963,
- 2126,
+ 402,
- 1168,
+ 762,
+ -1,
- 4014,
+ 2411,
- 1663,
+ 1660,
- 2300,
+ 1423,
- 2822,
+ 4035,
- 1678,
+ 547,
- 3207,
+ 3801,
+
+ 3483,
-1,
- 3615,
+ 947,
- 2222,
+ 261,
- 1264,
+ 3273,
- 493,
+ 755,
- 759,
+ 2624,
- 156,
+ 3480,
- 3855,
+ 1960,
+
+ 944,
- 779,
+ 3876,
-1,
- 3609,
+ 2327,
- 2219,
+ 2621,
+ -1, -1,
- 1261,
+ 3438,
- 490,
- -1,
+ 1939,
- 150,
+ 899,
- 3087,
+ 3453,
- 3849,
+ 3870,
- 890,
+ 916,
- 1582,
- -1, -1, -1,
+ 2579,
- 3945,
+ 3432,
- 1117,
+ 1936,
- 375,
+ 2594,
- 3588,
- -1,
+ 240,
- 2771,
+ 3093,
- 3843,
+ 2306,
+ -1,
- 3240,
+ 3327,
- 132,
+ 2321,
- 3777,
+ 3864,
- 1843,
+ 3420,
- 3768,
+ 1930,
- 1561,
+ 3798,
- 3504,
+ 234,
- 3054,
+ 1345,
- 990,
+ 3636,
- 3576,
+ 2228,
- 2438,
+ 1267,
- 577,
+ 493,
- 2660,
+ 3117,
- 881,
+ 156,
- 120,
+ 577,
+ -1,
- 2888,
+ 3978,
- 1831,
+ 1339,
- 3756,
+ 3630,
- 1549,
+ 2225,
- 3570,
+ 1264,
- 3771,
+ 490,
+ -1,
- 3387,
+ 150,
- 3267,
+ 3609,
- 3819,
+ 893,
- 114,
+ 3840,
- 2885,
+ 1585,
+ -1,
- 1825,
+ 132,
- 3750,
+ 3591,
- 1543,
+ 1846,
- 3558,
- -1, -1,
+ 3789,
- 3795,
+ 1564,
-1,
- 102,
+ 114,
- 3546,
+ 2891,
- 1813,
+ 1828,
- 3738,
+ 3771,
- 1531,
+ 1546,
-1,
- 89,
+ 884,
- 3540,
+ 3579,
+ -1,
- 1801,
+ 688,
+ -1, -1,
- 3726,
-
- 1519,
-
- 3798,
-
- 83,
+ 102,
- 3528,
+ 3819,
- 1795,
+ 1816,
- 3720,
+ 3759,
- 1513,
- -1, -1,
+ 1534,
- 2564,
+ 3567,
+ -1,
- 1783,
+ 1129,
+ -1,
- 3708,
+ 3549,
- 1501,
+ 89,
- 441,
- -1,
+ 2786,
- 2552,
+ 1804,
- 3111,
+ 3747,
- 1759,
+ 1522,
- 3684,
+ 3561,
- 1477,
+ 1786,
- 3456,
+ 3729,
- 2546,
+ 1504,
- 937,
+ 2570,
- 258,
+ 83,
- 580,
+ 1035,
- 438,
+ 1798,
- 2612,
+ 3741,
- 2534,
- -1,
+ 1516,
- 1753,
+ 2708,
- 3678,
+ 3474,
- 1471,
+ 1957,
- 583,
+ 937,
- 435,
+ 2558,
- 2510,
+ 3264,
- 1195,
+ 441,
- 429,
+ 2615,
- 1747,
+ 2540,
+ -1,
- 3672,
+ 1762,
- 1465,
+ 3705,
- 1735,
+ 1480,
+ -1,
- 3660,
+ 2552,
- 568,
+ 2132,
- 3351,
+ 1171,
- 3306,
+ 628,
+ -1,
- 3948,
+ 3324,
- 2504,
+ 2828,
- 4059,
+ 1681,
- 562,
+ 4080,
-1,
- 839,
+ 438,
+ -1,
- 1999,
+ 3321,
- 1035,
+ 2516,
- 303,
+ 1756,
- 2498,
- -1,
+ 3699,
- 2705,
+ 1474,
- 3165,
+ 782,
- 571,
- -1,
+ 2005,
- 4026,
+ 1038,
- 2156,
+ 303,
- 1198,
- -1,
+ 4047,
- 1192,
+ 435,
- 425,
+ 2711,
- 2852,
+ 3315,
- 1738,
+ 3969,
- 3663,
+ 1750,
- 1729,
+ 3693,
- 3654,
+ 1468,
- 2153,
+ 3099,
-1,
- 4020,
+ 2510,
+
+ 583,
-1,
- 3144,
+ 4041,
+ -1,
- 2849,
+ 3213,
+ -1, -1,
- 1732,
+ 580,
- 3657,
+ 3966,
- 833,
+ 4017,
+ -1,
- 3996,
+ 2504,
- 3138,
+ 2126,
- 3453,
+ 1165,
- 1951,
+ 3999,
- 934,
+ 3246,
- 3978,
+ 571,
- 2150,
+ 2822,
- 836,
+ 1669,
- 2609,
+ 3993,
- 2144,
+ 2162,
- 3972,
+ 1201,
+ -1,
- 2846,
+ 568,
+ -1,
- 1726,
+ 2858,
- 3651,
+ 1741,
- 2840,
+ 3684,
- 1714,
+ 765,
- 3639,
- -1,
+ 1198,
- 1183,
+ 429,
- 417,
+ 2159,
-1,
- 2141,
+ 562,
- 830,
+ 1738,
- 1711,
+ 3681,
- 3636,
+ 2855,
- 817,
+ 1735,
- 2837,
+ 3678,
- 1708,
+ 3987,
- 3633,
+ 3171,
+ -1,
- 2138,
+ 3060,
+ -1,
- 3966,
- -1, -1,
+ 842,
- 813,
+ 1195,
- 2834,
+ 425,
- 1702,
+ 839,
- 3627,
+ 2156,
+ -1,
- 810,
+ 1732,
- 2132,
+ 3675,
- 1174,
+ 2150,
- 414,
+ 2852,
- 2135,
- -1,
+ 1729,
- 2828,
+ 3672,
- 1690,
+ 3150,
- 803,
+ 2846,
- 2831,
+ 1717,
- 1696,
+ 3660,
- 3621,
+ 836,
+ -1, -1, -1,
- 3273,
+ 833,
+ -1,
- 2129,
+ 3144,
+ -1,
- 1171,
+ 820,
- 411,
- -1,
+ 1186,
- 792,
+ 417,
- 2825,
+ 2147,
- 1684,
+ 2453,
+
+ 49,
- 799,
+ 1714,
- 2120,
+ 3657,
- 1162,
+ 2843,
- 15,
+ 1711,
- 2717,
+ 3654,
-1,
- 2816,
+ 2387,
+ -1,
- 1666,
+ 1399,
-1,
- 786,
+ 816,
- 2369,
+ 2141,
-1,
- 1360,
-
- 2117,
+ 813,
- 1159,
+ 3882,
-1,
- 3861,
+ 2837,
- 762,
+ 1699,
- 2813,
+ 3642,
- 1660,
+ 2123,
- 2111,
+ 1162,
- 1153,
+ 2066,
- 3498,
+ 631,
- 3837,
+ 360,
- 984,
+ 2819,
- 2807,
+ 1663,
- 1648,
- -1,
+ 2747,
- 2654,
+ 802,
+ -1, -1, -1,
- 755,
+ 2117,
- 3120,
+ 1156,
- 2420,
+ 3858,
- 2105,
+ 1456,
- 1147,
+ 758,
- 396,
+ 2813,
- 3831,
+ 1651,
- 742,
+ 2111,
- 2801,
+ 1150,
- 1636,
+ 396,
- 2093,
+ 3291,
- 1135,
+ 2426,
- 390,
- -1,
+ 2807,
- 3825,
+ 1639,
- 2789,
+ 2060,
- 1612,
+ 1096,
- 3813,
+ 745,
- 1858,
+ 1120,
- 733,
+ 375,
- 2087,
+ 2741,
- 1129,
+ 3852,
- 384,
+ 2777,
+ -1,
- 2054,
+ 736,
- 1093,
+ 2099,
- 2783,
+ 1138,
- 1600,
+ 390,
- 2060,
+ 1444,
+ -1,
- 2735,
+ 2795,
- 360,
- -1, -1,
+ 1615,
- 2741,
+ 3168,
- 3447,
+ 3846,
- 1948,
+ 2093,
- 928,
+ 1132,
- 1441,
- -1,
+ 384,
- 1855,
+ 15,
- 2603,
+ 2723,
- 1453,
+ 2789,
- 2459,
+ 1603,
+
+ 2465,
62,
- 2732,
+ 2738,
- 3816,
+ 2375,
- 2063,
+ 3318,
- 3807,
+ 1363,
- 2447,
+ 2120,
- 49,
+ 1159,
- 2393,
+ 2399,
+ -1,
- 2744,
+ 1411,
- 1408,
- -1, -1,
+ 2816,
- 3810,
+ 1657,
- 2381,
+ 4062,
- 1180,
+ 3468,
- 1396,
+ 1954,
- 3441,
+ 931,
- 1945,
+ 3462,
- 922,
+ 1951,
- 1705,
+ 925,
- 3630,
+ 2609,
- 4041,
+ 3216,
- 2597,
+ 752,
- 3210,
+ 2603,
- 1888,
+ 3837,
+
+ 1894,
-1,
198,
- 3804,
- -1,
+ 1891,
- 807,
+ 1876,
- 3792,
- -1,
+ 195,
- 3345,
+ 180,
+
+ 3834,
+
+ 1023,
-1,
- 1885,
+ 3831,
+
+ 2270,
+
+ 2696,
+
+ 1303,
2264,
- 195,
+ 2258,
1300,
- 3789,
+ 1285,
+ -1, -1,
- 2078,
+ 2084,
- 1105,
+ 1108,
- 1870,
+ 3312,
- 3786,
+ 3828,
- 180,
+ 1873,
- 2759,
+ 2765,
- 2258,
+ 177,
- 2066,
+ 3825,
- 1297,
+ 1870,
- 24,
+ 2957,
- 2723,
+ 174,
- 3780,
+ 3813,
- 2747,
+ 2951,
+
+ 2921,
+
+ 3063,
2252,
- 2951,
+ 1123,
1282,
-
- 3162,
-1,
- 1372,
+ 2246,
- 1867,
+ 2780,
+
+ 1279,
-1,
- 177,
+ 2105,
- 3057,
+ 1144,
+ -1,
- 3774,
+ 670,
- 2945,
+ 3810,
- 2465,
+ 2801,
- 68,
+ 1627,
- 1864,
- -1,
+ 3807,
- 174,
+ 3603,
- 2246,
+ 1909,
2915,
- 1279,
-
- 2399,
+ 213,
-1,
- 1414,
+ 126,
- 646,
+ 2909,
- 3582,
+ 1840,
- 2240,
+ 3783,
- 4050,
+ 1558,
- 1276,
- -1,
+ 3585,
- 126,
- -1,
+ 2075,
- 1837,
+ 1099,
- 3762,
+ 3795,
- 1555,
+ 1318,
- 4053,
+ 108,
- 2909,
+ 2756,
- 2114,
+ 1822,
- 1156,
+ 3765,
- 21,
+ 1540,
- 2720,
- -1,
+ 1189,
- 2810,
+ 3942,
- 1654,
+ 1183,
- 2903,
+ 24,
- 4002,
- -1,
+ 2729,
- 3564,
+ 1720,
- 1366,
- -1,
+ 3663,
- 3885,
+ 1708,
- 3990,
+ 3651,
+ -1,
- 108,
+ 2987,
+ -1,
- 749,
+ 1375,
- 1819,
+ 2114,
- 3744,
+ 1153,
- 1537,
+ 823,
- 2108,
+ 3402,
- 1150,
+ 810,
- 3303,
+ 2810,
+
+ 1645,
-1,
- 4008,
+ 4074,
- 2804,
+ 2072,
- 1642,
+ 1696,
- 2099,
+ 3639,
- 1141,
- -1,
+ 2102,
- 2069,
+ 1141,
- 1096,
+ 2753,
- 2795,
+ 4071,
- 1624,
+ 742,
- 3300,
+ 2798,
- 2750,
+ 1621,
- 739,
+ 3309,
- 2096,
+ 798,
- 1138,
+ 3261,
+ -1, -1,
- 2453,
+ 4029,
- 56,
+ 2471,
- 3606,
+ 68,
- 2792,
+ 4044,
- 1618,
+ 2459,
- 2441,
+ 56,
- 43,
+ 646,
- 147,
+ 4023,
+ -1,
- 2387,
+ 2405,
-1,
- 1402,
+ 1417,
- 1579,
- -1,
+ 2393,
- 2375,
+ 9,
- 3444,
+ 1405,
- 1390,
+ 21,
- 925,
+ 2726,
- 252,
- -1,
+ 4011,
- 887,
+ 2447,
- 2600,
+ 43,
- 3291,
+ 2369,
- 670,
+ 3255,
- 685,
+ 1357,
- 3432,
+ 3282,
+
+ 1369,
-1,
- 913,
+ 2381,
- 3426,
+ 3477,
- 1120,
+ 1393,
- 906,
+ 940,
- 2588,
+ 258,
- 3285,
+ 3300,
- 2774,
+ 3906,
- 2582,
+ 2618,
- 3249,
+ 1117,
- 3783,
+ 3096,
- 2315,
- -1,
+ 3627,
- 3255,
+ 3954,
- 2309,
- -1,
+ 2774,
- 3420,
+ 529,
- 3933,
+ 3294,
- 899,
+ 147,
- 529,
+ 526,
- 3159,
+ 511,
- 1114,
+ 3525,
- 2576,
+ 1582,
- 3921,
+ 993,
-1,
- 2768,
+ 2444,
- 402,
- -1,
+ 3465,
- 2303,
+ 2666,
- 526,
+ 928,
- 1657,
+ 252,
- 3258,
+ 890,
- 3414,
+ 3447,
- 1906,
+ 2606,
- 893,
+ 909,
+ -1, -1,
- 216,
+ 3090,
- 511,
- -1,
+ 2588,
- 2570,
+ 3126,
- 655,
+ 3165,
- 752,
+ 508,
+ -1,
- 691,
- -1, -1,
+ 3162,
- 2297,
+ 2315,
- 3156,
+ 505,
- 1318,
+ 3441,
- 3084,
- -1, -1,
+ 3435,
- 1903,
+ 902,
- 3090,
+ 896,
+ -1, -1,
- 213,
+ 2582,
- 508,
- -1,
+ 2576,
+
+ 1903,
- 1897,
- -1,
+ 1900,
207,
- 1894,
- -1,
-
204,
- 505,
-
- 2987,
+ 2309,
- 1315,
+ 2303,
- 1882,
+ 1017,
- 3897,
+ 1888,
+ -1,
192,
- 3264,
+ 2690,
+
+ 4065,
+ -1,
+
+ 1312,
1309,
- 3093,
+ 544,
- 4047,
+ 3270,
- 1306,
+ 2108,
- 1876,
- -1,
+ 1147,
- 186,
+ 1882,
- 2075,
+ 1297,
- 1102,
+ 186,
- 1294,
- -1,
+ 2804,
- 2981,
+ 1633,
- 2756,
+ 1011,
- 649,
+ 700,
+ -1, -1,
- 3939,
- -1,
+ 2684,
+
+ 2975,
2969,
- 1288,
- -1,
+ 3285,
- 2963,
- -1,
+ 1291,
- 2102,
+ 655,
- 1144,
+ 1005,
- 2072,
+ 3816,
- 1099,
+ 2945,
- 2939,
+ 3804,
- 2798,
+ 2678,
- 1630,
+ 3306,
- 2753,
+ 2081,
- 9,
- -1,
+ 1105,
- 1014,
+ 2078,
+
+ 1102,
-1,
- 2927,
+ 2762,
- 3,
+ 999,
- 2684,
+ 2759,
- 2363,
+ 2933,
- 3108,
+ 3372,
- 1354,
+ 2672,
- 3891,
+ 3,
-1,
- 2357,
-
- 1008,
+ 3792,
- 1348,
+ 3114,
- 3096,
+ 3519,
- 697,
+ 694,
- 2678,
+ 987,
- 1002,
+ 2363,
- 996,
+ 3918,
- 1032,
- -1,
+ 1351,
- 2672,
+ 2660,
- 2666,
+ 3513,
+ -1,
- 2702,
+ 980,
+ -1, -1, -1,
- 3492,
- -1,
+ 2654,
- 977,
+ 3129,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
- 1020,
+ 649,
-1, -1,
- 2648,
+ 3396,
+ -1, -1, -1, -1, -1, -1,
- 2690,
+ 3303,
-1, -1,
- 4044,
- -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1,
+ 3960,
- 3297,
+ 3105,
-1,
- 3927,
+ 3948,
-1, -1, -1, -1,
- 3915,
+ 3390,
-1, -1,
- 3294,
- -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1,
-
- 3375,
- -1,
-
- 547,
- -1,
-
- 3276,
+ 3900,
-1,
- 3099,
- -1, -1, -1, -1,
+ 3912,
+ -1, -1, -1,
- 3369,
- -1, -1, -1, -1,
+ 3936,
- 3363,
+ 3384,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1,
- 3357,
+ 3378,
-1,
- 544,
+ 3102,
+ -1, -1, -1, -1, -1, -1,
-1, -1,
- 3270,
- -1,
+ 3366,
- 538,
+ 3279,
+ -1, -1, -1, -1, -1,
- 3339,
+ 3360,
+ -1, -1, -1,
- 3381,
+ 538,
535,
- -1, -1, -1, -1, -1,
+ -1, -1, -1,
- 523,
- -1, -1, -1, -1, -1, -1,
+ 619,
-1,
- 517,
-
- 3123,
- -1, -1, -1, -1, -1, -1,
+ 523,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1,
- 3117,
- -1, -1, -1, -1, -1, -1,
-
- 619,
+ 517,
-1, -1, -1,
- 4038,
- -1, -1, -1, -1, -1, -1,
-
616,
-1, -1, -1, -1,
+ 3123,
+ -1, -1, -1, -1,
+
610,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1,
604,
-
- 631,
- -1, -1,
-
- 3879,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1,
- 3873,
+ 4059,
-1, -1,
- 4032,
+ 4053,
+ -1,
+
+ 3894,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
-
- 3105,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
- -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
+ -1,
- 3102,
+ 3111,
+ -1,
+
+ 3108,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
@@ -2952,26 +2960,27 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[])
-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,
- 4035,
+ 4068,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
-1, -1, -1,
- 4023,
- -1, -1,
+ 4056,
+ -1, -1, -1, -1,
- 4017,
+ 4038,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
-1,
- 4011,
- -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1,
- -1, -1, -1,
+ 4032,
- 4005
+ 4026
};
if (0 == 0)
@@ -2988,5 +2997,3 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[])
}
return -1;
}
-
-
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold2_key.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold2_key.c
index 1926b2569f..3d93e2417a 100644
--- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold2_key.c
+++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold2_key.c
@@ -1,7 +1,7 @@
/* This file was converted by gperf_fold_key_conv.py
from gperf output file. */
/* ANSI-C code produced by gperf version 3.1 */
-/* Command-line: /usr/bin/gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1 -N onigenc_unicode_fold2_key unicode_fold2_key.gperf */
+/* Command-line: /usr/local/bin/gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1 -N onigenc_unicode_fold2_key unicode_fold2_key.gperf */
/* Computed positions: -k'3,6' */
@@ -225,5 +225,3 @@ onigenc_unicode_fold2_key(OnigCodePoint codes[])
}
return -1;
}
-
-
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold3_key.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold3_key.c
index 9c4415af59..bdd5667c6a 100644
--- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold3_key.c
+++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold3_key.c
@@ -1,7 +1,7 @@
/* This file was converted by gperf_fold_key_conv.py
from gperf output file. */
/* ANSI-C code produced by gperf version 3.1 */
-/* Command-line: /usr/bin/gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1 -N onigenc_unicode_fold3_key unicode_fold3_key.gperf */
+/* Command-line: /usr/local/bin/gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1 -N onigenc_unicode_fold3_key unicode_fold3_key.gperf */
/* Computed positions: -k'3,6,9' */
@@ -135,5 +135,3 @@ onigenc_unicode_fold3_key(OnigCodePoint codes[])
}
return -1;
}
-
-
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold_data.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold_data.c
index 87d0be7e73..400975b523 100644
--- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold_data.c
+++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold_data.c
@@ -1,7 +1,7 @@
/* This file was generated by make_unicode_fold_data.py. */
#include "regenc.h"
-#define UNICODE_CASEFOLD_VERSION 11_0_0
+#define UNICODE_CASEFOLD_VERSION 12_1_0
OnigCodePoint OnigUnicodeFolds1[] = {
@@ -230,1130 +230,1137 @@ OnigCodePoint OnigUnicodeFolds1[] = {
/* 673*/ 0x0275, 1, 0x019f, /* LATIN CAPITAL LETTER O WITH MIDDL.. */
/* 676*/ 0x027d, 1, 0x2c64, /* LATIN CAPITAL LETTER R WITH TAIL */
/* 679*/ 0x0280, 1, 0x01a6, /* LATIN LETTER YR */
- /* 682*/ 0x0283, 1, 0x01a9, /* LATIN CAPITAL LETTER ESH */
- /* 685*/ 0x0287, 1, 0xa7b1, /* LATIN CAPITAL LETTER TURNED T */
- /* 688*/ 0x0288, 1, 0x01ae, /* LATIN CAPITAL LETTER T WITH RETRO.. */
- /* 691*/ 0x0289, 1, 0x0244, /* LATIN CAPITAL LETTER U BAR */
- /* 694*/ 0x028a, 1, 0x01b1, /* LATIN CAPITAL LETTER UPSILON */
- /* 697*/ 0x028b, 1, 0x01b2, /* LATIN CAPITAL LETTER V WITH HOOK */
- /* 700*/ 0x028c, 1, 0x0245, /* LATIN CAPITAL LETTER TURNED V */
- /* 703*/ 0x0292, 1, 0x01b7, /* LATIN CAPITAL LETTER EZH */
- /* 706*/ 0x029d, 1, 0xa7b2, /* LATIN CAPITAL LETTER J WITH CROSS.. */
- /* 709*/ 0x029e, 1, 0xa7b0, /* LATIN CAPITAL LETTER TURNED K */
- /* 712*/ 0x0371, 1, 0x0370, /* GREEK CAPITAL LETTER HETA */
- /* 715*/ 0x0373, 1, 0x0372, /* GREEK CAPITAL LETTER ARCHAIC SAMPI */
- /* 718*/ 0x0377, 1, 0x0376, /* GREEK CAPITAL LETTER PAMPHYLIAN D.. */
- /* 721*/ 0x037b, 1, 0x03fd, /* GREEK CAPITAL REVERSED LUNATE SIG.. */
- /* 724*/ 0x037c, 1, 0x03fe, /* GREEK CAPITAL DOTTED LUNATE SIGMA.. */
- /* 727*/ 0x037d, 1, 0x03ff, /* GREEK CAPITAL REVERSED DOTTED LUN.. */
- /* 730*/ 0x03ac, 1, 0x0386, /* GREEK CAPITAL LETTER ALPHA WITH T.. */
- /* 733*/ 0x03ad, 1, 0x0388, /* GREEK CAPITAL LETTER EPSILON WITH.. */
- /* 736*/ 0x03ae, 1, 0x0389, /* GREEK CAPITAL LETTER ETA WITH TON.. */
- /* 739*/ 0x03af, 1, 0x038a, /* GREEK CAPITAL LETTER IOTA WITH TO.. */
- /* 742*/ 0x03b1, 1, 0x0391, /* GREEK CAPITAL LETTER ALPHA */
- /* 745*/ 0x03b2, 2, 0x0392, 0x03d0, /* GREEK CAPITAL LETTER BETA */
- /* 749*/ 0x03b3, 1, 0x0393, /* GREEK CAPITAL LETTER GAMMA */
- /* 752*/ 0x03b4, 1, 0x0394, /* GREEK CAPITAL LETTER DELTA */
- /* 755*/ 0x03b5, 2, 0x0395, 0x03f5, /* GREEK CAPITAL LETTER EPSILON */
- /* 759*/ 0x03b6, 1, 0x0396, /* GREEK CAPITAL LETTER ZETA */
- /* 762*/ 0x03b7, 1, 0x0397, /* GREEK CAPITAL LETTER ETA */
- /* 765*/ 0x03b8, 3, 0x0398, 0x03d1, 0x03f4, /* GREEK CAPITAL LETTER THETA */
- /* 770*/ 0x03b9, 3, 0x0345, 0x0399, 0x1fbe, /* COMBINING GREEK YPOGEGRAMMENI */
- /* 775*/ 0x03ba, 2, 0x039a, 0x03f0, /* GREEK CAPITAL LETTER KAPPA */
- /* 779*/ 0x03bb, 1, 0x039b, /* GREEK CAPITAL LETTER LAMDA */
- /* 782*/ 0x03bc, 2, 0x00b5, 0x039c, /* MICRO SIGN */
- /* 786*/ 0x03bd, 1, 0x039d, /* GREEK CAPITAL LETTER NU */
- /* 789*/ 0x03be, 1, 0x039e, /* GREEK CAPITAL LETTER XI */
- /* 792*/ 0x03bf, 1, 0x039f, /* GREEK CAPITAL LETTER OMICRON */
- /* 795*/ 0x03c0, 2, 0x03a0, 0x03d6, /* GREEK CAPITAL LETTER PI */
- /* 799*/ 0x03c1, 2, 0x03a1, 0x03f1, /* GREEK CAPITAL LETTER RHO */
- /* 803*/ 0x03c3, 2, 0x03a3, 0x03c2, /* GREEK CAPITAL LETTER SIGMA */
- /* 807*/ 0x03c4, 1, 0x03a4, /* GREEK CAPITAL LETTER TAU */
- /* 810*/ 0x03c5, 1, 0x03a5, /* GREEK CAPITAL LETTER UPSILON */
- /* 813*/ 0x03c6, 2, 0x03a6, 0x03d5, /* GREEK CAPITAL LETTER PHI */
- /* 817*/ 0x03c7, 1, 0x03a7, /* GREEK CAPITAL LETTER CHI */
- /* 820*/ 0x03c8, 1, 0x03a8, /* GREEK CAPITAL LETTER PSI */
- /* 823*/ 0x03c9, 2, 0x03a9, 0x2126, /* GREEK CAPITAL LETTER OMEGA */
- /* 827*/ 0x03ca, 1, 0x03aa, /* GREEK CAPITAL LETTER IOTA WITH DI.. */
- /* 830*/ 0x03cb, 1, 0x03ab, /* GREEK CAPITAL LETTER UPSILON WITH.. */
- /* 833*/ 0x03cc, 1, 0x038c, /* GREEK CAPITAL LETTER OMICRON WITH.. */
- /* 836*/ 0x03cd, 1, 0x038e, /* GREEK CAPITAL LETTER UPSILON WITH.. */
- /* 839*/ 0x03ce, 1, 0x038f, /* GREEK CAPITAL LETTER OMEGA WITH T.. */
- /* 842*/ 0x03d7, 1, 0x03cf, /* GREEK CAPITAL KAI SYMBOL */
- /* 845*/ 0x03d9, 1, 0x03d8, /* GREEK LETTER ARCHAIC KOPPA */
- /* 848*/ 0x03db, 1, 0x03da, /* GREEK LETTER STIGMA */
- /* 851*/ 0x03dd, 1, 0x03dc, /* GREEK LETTER DIGAMMA */
- /* 854*/ 0x03df, 1, 0x03de, /* GREEK LETTER KOPPA */
- /* 857*/ 0x03e1, 1, 0x03e0, /* GREEK LETTER SAMPI */
- /* 860*/ 0x03e3, 1, 0x03e2, /* COPTIC CAPITAL LETTER SHEI */
- /* 863*/ 0x03e5, 1, 0x03e4, /* COPTIC CAPITAL LETTER FEI */
- /* 866*/ 0x03e7, 1, 0x03e6, /* COPTIC CAPITAL LETTER KHEI */
- /* 869*/ 0x03e9, 1, 0x03e8, /* COPTIC CAPITAL LETTER HORI */
- /* 872*/ 0x03eb, 1, 0x03ea, /* COPTIC CAPITAL LETTER GANGIA */
- /* 875*/ 0x03ed, 1, 0x03ec, /* COPTIC CAPITAL LETTER SHIMA */
- /* 878*/ 0x03ef, 1, 0x03ee, /* COPTIC CAPITAL LETTER DEI */
- /* 881*/ 0x03f2, 1, 0x03f9, /* GREEK CAPITAL LUNATE SIGMA SYMBOL */
- /* 884*/ 0x03f3, 1, 0x037f, /* GREEK CAPITAL LETTER YOT */
- /* 887*/ 0x03f8, 1, 0x03f7, /* GREEK CAPITAL LETTER SHO */
- /* 890*/ 0x03fb, 1, 0x03fa, /* GREEK CAPITAL LETTER SAN */
- /* 893*/ 0x0430, 1, 0x0410, /* CYRILLIC CAPITAL LETTER A */
- /* 896*/ 0x0431, 1, 0x0411, /* CYRILLIC CAPITAL LETTER BE */
- /* 899*/ 0x0432, 2, 0x0412, 0x1c80, /* CYRILLIC CAPITAL LETTER VE */
- /* 903*/ 0x0433, 1, 0x0413, /* CYRILLIC CAPITAL LETTER GHE */
- /* 906*/ 0x0434, 2, 0x0414, 0x1c81, /* CYRILLIC CAPITAL LETTER DE */
- /* 910*/ 0x0435, 1, 0x0415, /* CYRILLIC CAPITAL LETTER IE */
- /* 913*/ 0x0436, 1, 0x0416, /* CYRILLIC CAPITAL LETTER ZHE */
- /* 916*/ 0x0437, 1, 0x0417, /* CYRILLIC CAPITAL LETTER ZE */
- /* 919*/ 0x0438, 1, 0x0418, /* CYRILLIC CAPITAL LETTER I */
- /* 922*/ 0x0439, 1, 0x0419, /* CYRILLIC CAPITAL LETTER SHORT I */
- /* 925*/ 0x043a, 1, 0x041a, /* CYRILLIC CAPITAL LETTER KA */
- /* 928*/ 0x043b, 1, 0x041b, /* CYRILLIC CAPITAL LETTER EL */
- /* 931*/ 0x043c, 1, 0x041c, /* CYRILLIC CAPITAL LETTER EM */
- /* 934*/ 0x043d, 1, 0x041d, /* CYRILLIC CAPITAL LETTER EN */
- /* 937*/ 0x043e, 2, 0x041e, 0x1c82, /* CYRILLIC CAPITAL LETTER O */
- /* 941*/ 0x043f, 1, 0x041f, /* CYRILLIC CAPITAL LETTER PE */
- /* 944*/ 0x0440, 1, 0x0420, /* CYRILLIC CAPITAL LETTER ER */
- /* 947*/ 0x0441, 2, 0x0421, 0x1c83, /* CYRILLIC CAPITAL LETTER ES */
- /* 951*/ 0x0442, 3, 0x0422, 0x1c84, 0x1c85, /* CYRILLIC CAPITAL LETTER TE */
- /* 956*/ 0x0443, 1, 0x0423, /* CYRILLIC CAPITAL LETTER U */
- /* 959*/ 0x0444, 1, 0x0424, /* CYRILLIC CAPITAL LETTER EF */
- /* 962*/ 0x0445, 1, 0x0425, /* CYRILLIC CAPITAL LETTER HA */
- /* 965*/ 0x0446, 1, 0x0426, /* CYRILLIC CAPITAL LETTER TSE */
- /* 968*/ 0x0447, 1, 0x0427, /* CYRILLIC CAPITAL LETTER CHE */
- /* 971*/ 0x0448, 1, 0x0428, /* CYRILLIC CAPITAL LETTER SHA */
- /* 974*/ 0x0449, 1, 0x0429, /* CYRILLIC CAPITAL LETTER SHCHA */
- /* 977*/ 0x044a, 2, 0x042a, 0x1c86, /* CYRILLIC CAPITAL LETTER HARD SIGN */
- /* 981*/ 0x044b, 1, 0x042b, /* CYRILLIC CAPITAL LETTER YERU */
- /* 984*/ 0x044c, 1, 0x042c, /* CYRILLIC CAPITAL LETTER SOFT SIGN */
- /* 987*/ 0x044d, 1, 0x042d, /* CYRILLIC CAPITAL LETTER E */
- /* 990*/ 0x044e, 1, 0x042e, /* CYRILLIC CAPITAL LETTER YU */
- /* 993*/ 0x044f, 1, 0x042f, /* CYRILLIC CAPITAL LETTER YA */
- /* 996*/ 0x0450, 1, 0x0400, /* CYRILLIC CAPITAL LETTER IE WITH G.. */
- /* 999*/ 0x0451, 1, 0x0401, /* CYRILLIC CAPITAL LETTER IO */
- /*1002*/ 0x0452, 1, 0x0402, /* CYRILLIC CAPITAL LETTER DJE */
- /*1005*/ 0x0453, 1, 0x0403, /* CYRILLIC CAPITAL LETTER GJE */
- /*1008*/ 0x0454, 1, 0x0404, /* CYRILLIC CAPITAL LETTER UKRAINIAN.. */
- /*1011*/ 0x0455, 1, 0x0405, /* CYRILLIC CAPITAL LETTER DZE */
- /*1014*/ 0x0456, 1, 0x0406, /* CYRILLIC CAPITAL LETTER BYELORUSS.. */
- /*1017*/ 0x0457, 1, 0x0407, /* CYRILLIC CAPITAL LETTER YI */
- /*1020*/ 0x0458, 1, 0x0408, /* CYRILLIC CAPITAL LETTER JE */
- /*1023*/ 0x0459, 1, 0x0409, /* CYRILLIC CAPITAL LETTER LJE */
- /*1026*/ 0x045a, 1, 0x040a, /* CYRILLIC CAPITAL LETTER NJE */
- /*1029*/ 0x045b, 1, 0x040b, /* CYRILLIC CAPITAL LETTER TSHE */
- /*1032*/ 0x045c, 1, 0x040c, /* CYRILLIC CAPITAL LETTER KJE */
- /*1035*/ 0x045d, 1, 0x040d, /* CYRILLIC CAPITAL LETTER I WITH GR.. */
- /*1038*/ 0x045e, 1, 0x040e, /* CYRILLIC CAPITAL LETTER SHORT U */
- /*1041*/ 0x045f, 1, 0x040f, /* CYRILLIC CAPITAL LETTER DZHE */
- /*1044*/ 0x0461, 1, 0x0460, /* CYRILLIC CAPITAL LETTER OMEGA */
- /*1047*/ 0x0463, 2, 0x0462, 0x1c87, /* CYRILLIC CAPITAL LETTER YAT */
- /*1051*/ 0x0465, 1, 0x0464, /* CYRILLIC CAPITAL LETTER IOTIFIED E */
- /*1054*/ 0x0467, 1, 0x0466, /* CYRILLIC CAPITAL LETTER LITTLE YUS */
- /*1057*/ 0x0469, 1, 0x0468, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */
- /*1060*/ 0x046b, 1, 0x046a, /* CYRILLIC CAPITAL LETTER BIG YUS */
- /*1063*/ 0x046d, 1, 0x046c, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */
- /*1066*/ 0x046f, 1, 0x046e, /* CYRILLIC CAPITAL LETTER KSI */
- /*1069*/ 0x0471, 1, 0x0470, /* CYRILLIC CAPITAL LETTER PSI */
- /*1072*/ 0x0473, 1, 0x0472, /* CYRILLIC CAPITAL LETTER FITA */
- /*1075*/ 0x0475, 1, 0x0474, /* CYRILLIC CAPITAL LETTER IZHITSA */
- /*1078*/ 0x0477, 1, 0x0476, /* CYRILLIC CAPITAL LETTER IZHITSA W.. */
- /*1081*/ 0x0479, 1, 0x0478, /* CYRILLIC CAPITAL LETTER UK */
- /*1084*/ 0x047b, 1, 0x047a, /* CYRILLIC CAPITAL LETTER ROUND OME.. */
- /*1087*/ 0x047d, 1, 0x047c, /* CYRILLIC CAPITAL LETTER OMEGA WIT.. */
- /*1090*/ 0x047f, 1, 0x047e, /* CYRILLIC CAPITAL LETTER OT */
- /*1093*/ 0x0481, 1, 0x0480, /* CYRILLIC CAPITAL LETTER KOPPA */
- /*1096*/ 0x048b, 1, 0x048a, /* CYRILLIC CAPITAL LETTER SHORT I W.. */
- /*1099*/ 0x048d, 1, 0x048c, /* CYRILLIC CAPITAL LETTER SEMISOFT .. */
- /*1102*/ 0x048f, 1, 0x048e, /* CYRILLIC CAPITAL LETTER ER WITH T.. */
- /*1105*/ 0x0491, 1, 0x0490, /* CYRILLIC CAPITAL LETTER GHE WITH .. */
- /*1108*/ 0x0493, 1, 0x0492, /* CYRILLIC CAPITAL LETTER GHE WITH .. */
- /*1111*/ 0x0495, 1, 0x0494, /* CYRILLIC CAPITAL LETTER GHE WITH .. */
- /*1114*/ 0x0497, 1, 0x0496, /* CYRILLIC CAPITAL LETTER ZHE WITH .. */
- /*1117*/ 0x0499, 1, 0x0498, /* CYRILLIC CAPITAL LETTER ZE WITH D.. */
- /*1120*/ 0x049b, 1, 0x049a, /* CYRILLIC CAPITAL LETTER KA WITH D.. */
- /*1123*/ 0x049d, 1, 0x049c, /* CYRILLIC CAPITAL LETTER KA WITH V.. */
- /*1126*/ 0x049f, 1, 0x049e, /* CYRILLIC CAPITAL LETTER KA WITH S.. */
- /*1129*/ 0x04a1, 1, 0x04a0, /* CYRILLIC CAPITAL LETTER BASHKIR KA */
- /*1132*/ 0x04a3, 1, 0x04a2, /* CYRILLIC CAPITAL LETTER EN WITH D.. */
- /*1135*/ 0x04a5, 1, 0x04a4, /* CYRILLIC CAPITAL LIGATURE EN GHE */
- /*1138*/ 0x04a7, 1, 0x04a6, /* CYRILLIC CAPITAL LETTER PE WITH M.. */
- /*1141*/ 0x04a9, 1, 0x04a8, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */
- /*1144*/ 0x04ab, 1, 0x04aa, /* CYRILLIC CAPITAL LETTER ES WITH D.. */
- /*1147*/ 0x04ad, 1, 0x04ac, /* CYRILLIC CAPITAL LETTER TE WITH D.. */
- /*1150*/ 0x04af, 1, 0x04ae, /* CYRILLIC CAPITAL LETTER STRAIGHT U */
- /*1153*/ 0x04b1, 1, 0x04b0, /* CYRILLIC CAPITAL LETTER STRAIGHT .. */
- /*1156*/ 0x04b3, 1, 0x04b2, /* CYRILLIC CAPITAL LETTER HA WITH D.. */
- /*1159*/ 0x04b5, 1, 0x04b4, /* CYRILLIC CAPITAL LIGATURE TE TSE */
- /*1162*/ 0x04b7, 1, 0x04b6, /* CYRILLIC CAPITAL LETTER CHE WITH .. */
- /*1165*/ 0x04b9, 1, 0x04b8, /* CYRILLIC CAPITAL LETTER CHE WITH .. */
- /*1168*/ 0x04bb, 1, 0x04ba, /* CYRILLIC CAPITAL LETTER SHHA */
- /*1171*/ 0x04bd, 1, 0x04bc, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */
- /*1174*/ 0x04bf, 1, 0x04be, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */
- /*1177*/ 0x04c2, 1, 0x04c1, /* CYRILLIC CAPITAL LETTER ZHE WITH .. */
- /*1180*/ 0x04c4, 1, 0x04c3, /* CYRILLIC CAPITAL LETTER KA WITH H.. */
- /*1183*/ 0x04c6, 1, 0x04c5, /* CYRILLIC CAPITAL LETTER EL WITH T.. */
- /*1186*/ 0x04c8, 1, 0x04c7, /* CYRILLIC CAPITAL LETTER EN WITH H.. */
- /*1189*/ 0x04ca, 1, 0x04c9, /* CYRILLIC CAPITAL LETTER EN WITH T.. */
- /*1192*/ 0x04cc, 1, 0x04cb, /* CYRILLIC CAPITAL LETTER KHAKASSIA.. */
- /*1195*/ 0x04ce, 1, 0x04cd, /* CYRILLIC CAPITAL LETTER EM WITH T.. */
- /*1198*/ 0x04cf, 1, 0x04c0, /* CYRILLIC LETTER PALOCHKA */
- /*1201*/ 0x04d1, 1, 0x04d0, /* CYRILLIC CAPITAL LETTER A WITH BR.. */
- /*1204*/ 0x04d3, 1, 0x04d2, /* CYRILLIC CAPITAL LETTER A WITH DI.. */
- /*1207*/ 0x04d5, 1, 0x04d4, /* CYRILLIC CAPITAL LIGATURE A IE */
- /*1210*/ 0x04d7, 1, 0x04d6, /* CYRILLIC CAPITAL LETTER IE WITH B.. */
- /*1213*/ 0x04d9, 1, 0x04d8, /* CYRILLIC CAPITAL LETTER SCHWA */
- /*1216*/ 0x04db, 1, 0x04da, /* CYRILLIC CAPITAL LETTER SCHWA WIT.. */
- /*1219*/ 0x04dd, 1, 0x04dc, /* CYRILLIC CAPITAL LETTER ZHE WITH .. */
- /*1222*/ 0x04df, 1, 0x04de, /* CYRILLIC CAPITAL LETTER ZE WITH D.. */
- /*1225*/ 0x04e1, 1, 0x04e0, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */
- /*1228*/ 0x04e3, 1, 0x04e2, /* CYRILLIC CAPITAL LETTER I WITH MA.. */
- /*1231*/ 0x04e5, 1, 0x04e4, /* CYRILLIC CAPITAL LETTER I WITH DI.. */
- /*1234*/ 0x04e7, 1, 0x04e6, /* CYRILLIC CAPITAL LETTER O WITH DI.. */
- /*1237*/ 0x04e9, 1, 0x04e8, /* CYRILLIC CAPITAL LETTER BARRED O */
- /*1240*/ 0x04eb, 1, 0x04ea, /* CYRILLIC CAPITAL LETTER BARRED O .. */
- /*1243*/ 0x04ed, 1, 0x04ec, /* CYRILLIC CAPITAL LETTER E WITH DI.. */
- /*1246*/ 0x04ef, 1, 0x04ee, /* CYRILLIC CAPITAL LETTER U WITH MA.. */
- /*1249*/ 0x04f1, 1, 0x04f0, /* CYRILLIC CAPITAL LETTER U WITH DI.. */
- /*1252*/ 0x04f3, 1, 0x04f2, /* CYRILLIC CAPITAL LETTER U WITH DO.. */
- /*1255*/ 0x04f5, 1, 0x04f4, /* CYRILLIC CAPITAL LETTER CHE WITH .. */
- /*1258*/ 0x04f7, 1, 0x04f6, /* CYRILLIC CAPITAL LETTER GHE WITH .. */
- /*1261*/ 0x04f9, 1, 0x04f8, /* CYRILLIC CAPITAL LETTER YERU WITH.. */
- /*1264*/ 0x04fb, 1, 0x04fa, /* CYRILLIC CAPITAL LETTER GHE WITH .. */
- /*1267*/ 0x04fd, 1, 0x04fc, /* CYRILLIC CAPITAL LETTER HA WITH H.. */
- /*1270*/ 0x04ff, 1, 0x04fe, /* CYRILLIC CAPITAL LETTER HA WITH S.. */
- /*1273*/ 0x0501, 1, 0x0500, /* CYRILLIC CAPITAL LETTER KOMI DE */
- /*1276*/ 0x0503, 1, 0x0502, /* CYRILLIC CAPITAL LETTER KOMI DJE */
- /*1279*/ 0x0505, 1, 0x0504, /* CYRILLIC CAPITAL LETTER KOMI ZJE */
- /*1282*/ 0x0507, 1, 0x0506, /* CYRILLIC CAPITAL LETTER KOMI DZJE */
- /*1285*/ 0x0509, 1, 0x0508, /* CYRILLIC CAPITAL LETTER KOMI LJE */
- /*1288*/ 0x050b, 1, 0x050a, /* CYRILLIC CAPITAL LETTER KOMI NJE */
- /*1291*/ 0x050d, 1, 0x050c, /* CYRILLIC CAPITAL LETTER KOMI SJE */
- /*1294*/ 0x050f, 1, 0x050e, /* CYRILLIC CAPITAL LETTER KOMI TJE */
- /*1297*/ 0x0511, 1, 0x0510, /* CYRILLIC CAPITAL LETTER REVERSED .. */
- /*1300*/ 0x0513, 1, 0x0512, /* CYRILLIC CAPITAL LETTER EL WITH H.. */
- /*1303*/ 0x0515, 1, 0x0514, /* CYRILLIC CAPITAL LETTER LHA */
- /*1306*/ 0x0517, 1, 0x0516, /* CYRILLIC CAPITAL LETTER RHA */
- /*1309*/ 0x0519, 1, 0x0518, /* CYRILLIC CAPITAL LETTER YAE */
- /*1312*/ 0x051b, 1, 0x051a, /* CYRILLIC CAPITAL LETTER QA */
- /*1315*/ 0x051d, 1, 0x051c, /* CYRILLIC CAPITAL LETTER WE */
- /*1318*/ 0x051f, 1, 0x051e, /* CYRILLIC CAPITAL LETTER ALEUT KA */
- /*1321*/ 0x0521, 1, 0x0520, /* CYRILLIC CAPITAL LETTER EL WITH M.. */
- /*1324*/ 0x0523, 1, 0x0522, /* CYRILLIC CAPITAL LETTER EN WITH M.. */
- /*1327*/ 0x0525, 1, 0x0524, /* CYRILLIC CAPITAL LETTER PE WITH D.. */
- /*1330*/ 0x0527, 1, 0x0526, /* CYRILLIC CAPITAL LETTER SHHA WITH.. */
- /*1333*/ 0x0529, 1, 0x0528, /* CYRILLIC CAPITAL LETTER EN WITH L.. */
- /*1336*/ 0x052b, 1, 0x052a, /* CYRILLIC CAPITAL LETTER DZZHE */
- /*1339*/ 0x052d, 1, 0x052c, /* CYRILLIC CAPITAL LETTER DCHE */
- /*1342*/ 0x052f, 1, 0x052e, /* CYRILLIC CAPITAL LETTER EL WITH D.. */
- /*1345*/ 0x0561, 1, 0x0531, /* ARMENIAN CAPITAL LETTER AYB */
- /*1348*/ 0x0562, 1, 0x0532, /* ARMENIAN CAPITAL LETTER BEN */
- /*1351*/ 0x0563, 1, 0x0533, /* ARMENIAN CAPITAL LETTER GIM */
- /*1354*/ 0x0564, 1, 0x0534, /* ARMENIAN CAPITAL LETTER DA */
- /*1357*/ 0x0565, 1, 0x0535, /* ARMENIAN CAPITAL LETTER ECH */
- /*1360*/ 0x0566, 1, 0x0536, /* ARMENIAN CAPITAL LETTER ZA */
- /*1363*/ 0x0567, 1, 0x0537, /* ARMENIAN CAPITAL LETTER EH */
- /*1366*/ 0x0568, 1, 0x0538, /* ARMENIAN CAPITAL LETTER ET */
- /*1369*/ 0x0569, 1, 0x0539, /* ARMENIAN CAPITAL LETTER TO */
- /*1372*/ 0x056a, 1, 0x053a, /* ARMENIAN CAPITAL LETTER ZHE */
- /*1375*/ 0x056b, 1, 0x053b, /* ARMENIAN CAPITAL LETTER INI */
- /*1378*/ 0x056c, 1, 0x053c, /* ARMENIAN CAPITAL LETTER LIWN */
- /*1381*/ 0x056d, 1, 0x053d, /* ARMENIAN CAPITAL LETTER XEH */
- /*1384*/ 0x056e, 1, 0x053e, /* ARMENIAN CAPITAL LETTER CA */
- /*1387*/ 0x056f, 1, 0x053f, /* ARMENIAN CAPITAL LETTER KEN */
- /*1390*/ 0x0570, 1, 0x0540, /* ARMENIAN CAPITAL LETTER HO */
- /*1393*/ 0x0571, 1, 0x0541, /* ARMENIAN CAPITAL LETTER JA */
- /*1396*/ 0x0572, 1, 0x0542, /* ARMENIAN CAPITAL LETTER GHAD */
- /*1399*/ 0x0573, 1, 0x0543, /* ARMENIAN CAPITAL LETTER CHEH */
- /*1402*/ 0x0574, 1, 0x0544, /* ARMENIAN CAPITAL LETTER MEN */
- /*1405*/ 0x0575, 1, 0x0545, /* ARMENIAN CAPITAL LETTER YI */
- /*1408*/ 0x0576, 1, 0x0546, /* ARMENIAN CAPITAL LETTER NOW */
- /*1411*/ 0x0577, 1, 0x0547, /* ARMENIAN CAPITAL LETTER SHA */
- /*1414*/ 0x0578, 1, 0x0548, /* ARMENIAN CAPITAL LETTER VO */
- /*1417*/ 0x0579, 1, 0x0549, /* ARMENIAN CAPITAL LETTER CHA */
- /*1420*/ 0x057a, 1, 0x054a, /* ARMENIAN CAPITAL LETTER PEH */
- /*1423*/ 0x057b, 1, 0x054b, /* ARMENIAN CAPITAL LETTER JHEH */
- /*1426*/ 0x057c, 1, 0x054c, /* ARMENIAN CAPITAL LETTER RA */
- /*1429*/ 0x057d, 1, 0x054d, /* ARMENIAN CAPITAL LETTER SEH */
- /*1432*/ 0x057e, 1, 0x054e, /* ARMENIAN CAPITAL LETTER VEW */
- /*1435*/ 0x057f, 1, 0x054f, /* ARMENIAN CAPITAL LETTER TIWN */
- /*1438*/ 0x0580, 1, 0x0550, /* ARMENIAN CAPITAL LETTER REH */
- /*1441*/ 0x0581, 1, 0x0551, /* ARMENIAN CAPITAL LETTER CO */
- /*1444*/ 0x0582, 1, 0x0552, /* ARMENIAN CAPITAL LETTER YIWN */
- /*1447*/ 0x0583, 1, 0x0553, /* ARMENIAN CAPITAL LETTER PIWR */
- /*1450*/ 0x0584, 1, 0x0554, /* ARMENIAN CAPITAL LETTER KEH */
- /*1453*/ 0x0585, 1, 0x0555, /* ARMENIAN CAPITAL LETTER OH */
- /*1456*/ 0x0586, 1, 0x0556, /* ARMENIAN CAPITAL LETTER FEH */
- /*1459*/ 0x10d0, 1, 0x1c90, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1462*/ 0x10d1, 1, 0x1c91, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1465*/ 0x10d2, 1, 0x1c92, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1468*/ 0x10d3, 1, 0x1c93, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1471*/ 0x10d4, 1, 0x1c94, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1474*/ 0x10d5, 1, 0x1c95, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1477*/ 0x10d6, 1, 0x1c96, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1480*/ 0x10d7, 1, 0x1c97, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1483*/ 0x10d8, 1, 0x1c98, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1486*/ 0x10d9, 1, 0x1c99, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1489*/ 0x10da, 1, 0x1c9a, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1492*/ 0x10db, 1, 0x1c9b, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1495*/ 0x10dc, 1, 0x1c9c, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1498*/ 0x10dd, 1, 0x1c9d, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1501*/ 0x10de, 1, 0x1c9e, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1504*/ 0x10df, 1, 0x1c9f, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1507*/ 0x10e0, 1, 0x1ca0, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1510*/ 0x10e1, 1, 0x1ca1, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1513*/ 0x10e2, 1, 0x1ca2, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1516*/ 0x10e3, 1, 0x1ca3, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1519*/ 0x10e4, 1, 0x1ca4, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1522*/ 0x10e5, 1, 0x1ca5, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1525*/ 0x10e6, 1, 0x1ca6, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1528*/ 0x10e7, 1, 0x1ca7, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1531*/ 0x10e8, 1, 0x1ca8, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1534*/ 0x10e9, 1, 0x1ca9, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1537*/ 0x10ea, 1, 0x1caa, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1540*/ 0x10eb, 1, 0x1cab, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1543*/ 0x10ec, 1, 0x1cac, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1546*/ 0x10ed, 1, 0x1cad, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1549*/ 0x10ee, 1, 0x1cae, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1552*/ 0x10ef, 1, 0x1caf, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1555*/ 0x10f0, 1, 0x1cb0, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1558*/ 0x10f1, 1, 0x1cb1, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1561*/ 0x10f2, 1, 0x1cb2, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1564*/ 0x10f3, 1, 0x1cb3, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1567*/ 0x10f4, 1, 0x1cb4, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1570*/ 0x10f5, 1, 0x1cb5, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1573*/ 0x10f6, 1, 0x1cb6, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1576*/ 0x10f7, 1, 0x1cb7, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1579*/ 0x10f8, 1, 0x1cb8, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1582*/ 0x10f9, 1, 0x1cb9, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1585*/ 0x10fa, 1, 0x1cba, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1588*/ 0x10fd, 1, 0x1cbd, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1591*/ 0x10fe, 1, 0x1cbe, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1594*/ 0x10ff, 1, 0x1cbf, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
- /*1597*/ 0x13a0, 1, 0xab70, /* CHEROKEE SMALL LETTER A */
- /*1600*/ 0x13a1, 1, 0xab71, /* CHEROKEE SMALL LETTER E */
- /*1603*/ 0x13a2, 1, 0xab72, /* CHEROKEE SMALL LETTER I */
- /*1606*/ 0x13a3, 1, 0xab73, /* CHEROKEE SMALL LETTER O */
- /*1609*/ 0x13a4, 1, 0xab74, /* CHEROKEE SMALL LETTER U */
- /*1612*/ 0x13a5, 1, 0xab75, /* CHEROKEE SMALL LETTER V */
- /*1615*/ 0x13a6, 1, 0xab76, /* CHEROKEE SMALL LETTER GA */
- /*1618*/ 0x13a7, 1, 0xab77, /* CHEROKEE SMALL LETTER KA */
- /*1621*/ 0x13a8, 1, 0xab78, /* CHEROKEE SMALL LETTER GE */
- /*1624*/ 0x13a9, 1, 0xab79, /* CHEROKEE SMALL LETTER GI */
- /*1627*/ 0x13aa, 1, 0xab7a, /* CHEROKEE SMALL LETTER GO */
- /*1630*/ 0x13ab, 1, 0xab7b, /* CHEROKEE SMALL LETTER GU */
- /*1633*/ 0x13ac, 1, 0xab7c, /* CHEROKEE SMALL LETTER GV */
- /*1636*/ 0x13ad, 1, 0xab7d, /* CHEROKEE SMALL LETTER HA */
- /*1639*/ 0x13ae, 1, 0xab7e, /* CHEROKEE SMALL LETTER HE */
- /*1642*/ 0x13af, 1, 0xab7f, /* CHEROKEE SMALL LETTER HI */
- /*1645*/ 0x13b0, 1, 0xab80, /* CHEROKEE SMALL LETTER HO */
- /*1648*/ 0x13b1, 1, 0xab81, /* CHEROKEE SMALL LETTER HU */
- /*1651*/ 0x13b2, 1, 0xab82, /* CHEROKEE SMALL LETTER HV */
- /*1654*/ 0x13b3, 1, 0xab83, /* CHEROKEE SMALL LETTER LA */
- /*1657*/ 0x13b4, 1, 0xab84, /* CHEROKEE SMALL LETTER LE */
- /*1660*/ 0x13b5, 1, 0xab85, /* CHEROKEE SMALL LETTER LI */
- /*1663*/ 0x13b6, 1, 0xab86, /* CHEROKEE SMALL LETTER LO */
- /*1666*/ 0x13b7, 1, 0xab87, /* CHEROKEE SMALL LETTER LU */
- /*1669*/ 0x13b8, 1, 0xab88, /* CHEROKEE SMALL LETTER LV */
- /*1672*/ 0x13b9, 1, 0xab89, /* CHEROKEE SMALL LETTER MA */
- /*1675*/ 0x13ba, 1, 0xab8a, /* CHEROKEE SMALL LETTER ME */
- /*1678*/ 0x13bb, 1, 0xab8b, /* CHEROKEE SMALL LETTER MI */
- /*1681*/ 0x13bc, 1, 0xab8c, /* CHEROKEE SMALL LETTER MO */
- /*1684*/ 0x13bd, 1, 0xab8d, /* CHEROKEE SMALL LETTER MU */
- /*1687*/ 0x13be, 1, 0xab8e, /* CHEROKEE SMALL LETTER NA */
- /*1690*/ 0x13bf, 1, 0xab8f, /* CHEROKEE SMALL LETTER HNA */
- /*1693*/ 0x13c0, 1, 0xab90, /* CHEROKEE SMALL LETTER NAH */
- /*1696*/ 0x13c1, 1, 0xab91, /* CHEROKEE SMALL LETTER NE */
- /*1699*/ 0x13c2, 1, 0xab92, /* CHEROKEE SMALL LETTER NI */
- /*1702*/ 0x13c3, 1, 0xab93, /* CHEROKEE SMALL LETTER NO */
- /*1705*/ 0x13c4, 1, 0xab94, /* CHEROKEE SMALL LETTER NU */
- /*1708*/ 0x13c5, 1, 0xab95, /* CHEROKEE SMALL LETTER NV */
- /*1711*/ 0x13c6, 1, 0xab96, /* CHEROKEE SMALL LETTER QUA */
- /*1714*/ 0x13c7, 1, 0xab97, /* CHEROKEE SMALL LETTER QUE */
- /*1717*/ 0x13c8, 1, 0xab98, /* CHEROKEE SMALL LETTER QUI */
- /*1720*/ 0x13c9, 1, 0xab99, /* CHEROKEE SMALL LETTER QUO */
- /*1723*/ 0x13ca, 1, 0xab9a, /* CHEROKEE SMALL LETTER QUU */
- /*1726*/ 0x13cb, 1, 0xab9b, /* CHEROKEE SMALL LETTER QUV */
- /*1729*/ 0x13cc, 1, 0xab9c, /* CHEROKEE SMALL LETTER SA */
- /*1732*/ 0x13cd, 1, 0xab9d, /* CHEROKEE SMALL LETTER S */
- /*1735*/ 0x13ce, 1, 0xab9e, /* CHEROKEE SMALL LETTER SE */
- /*1738*/ 0x13cf, 1, 0xab9f, /* CHEROKEE SMALL LETTER SI */
- /*1741*/ 0x13d0, 1, 0xaba0, /* CHEROKEE SMALL LETTER SO */
- /*1744*/ 0x13d1, 1, 0xaba1, /* CHEROKEE SMALL LETTER SU */
- /*1747*/ 0x13d2, 1, 0xaba2, /* CHEROKEE SMALL LETTER SV */
- /*1750*/ 0x13d3, 1, 0xaba3, /* CHEROKEE SMALL LETTER DA */
- /*1753*/ 0x13d4, 1, 0xaba4, /* CHEROKEE SMALL LETTER TA */
- /*1756*/ 0x13d5, 1, 0xaba5, /* CHEROKEE SMALL LETTER DE */
- /*1759*/ 0x13d6, 1, 0xaba6, /* CHEROKEE SMALL LETTER TE */
- /*1762*/ 0x13d7, 1, 0xaba7, /* CHEROKEE SMALL LETTER DI */
- /*1765*/ 0x13d8, 1, 0xaba8, /* CHEROKEE SMALL LETTER TI */
- /*1768*/ 0x13d9, 1, 0xaba9, /* CHEROKEE SMALL LETTER DO */
- /*1771*/ 0x13da, 1, 0xabaa, /* CHEROKEE SMALL LETTER DU */
- /*1774*/ 0x13db, 1, 0xabab, /* CHEROKEE SMALL LETTER DV */
- /*1777*/ 0x13dc, 1, 0xabac, /* CHEROKEE SMALL LETTER DLA */
- /*1780*/ 0x13dd, 1, 0xabad, /* CHEROKEE SMALL LETTER TLA */
- /*1783*/ 0x13de, 1, 0xabae, /* CHEROKEE SMALL LETTER TLE */
- /*1786*/ 0x13df, 1, 0xabaf, /* CHEROKEE SMALL LETTER TLI */
- /*1789*/ 0x13e0, 1, 0xabb0, /* CHEROKEE SMALL LETTER TLO */
- /*1792*/ 0x13e1, 1, 0xabb1, /* CHEROKEE SMALL LETTER TLU */
- /*1795*/ 0x13e2, 1, 0xabb2, /* CHEROKEE SMALL LETTER TLV */
- /*1798*/ 0x13e3, 1, 0xabb3, /* CHEROKEE SMALL LETTER TSA */
- /*1801*/ 0x13e4, 1, 0xabb4, /* CHEROKEE SMALL LETTER TSE */
- /*1804*/ 0x13e5, 1, 0xabb5, /* CHEROKEE SMALL LETTER TSI */
- /*1807*/ 0x13e6, 1, 0xabb6, /* CHEROKEE SMALL LETTER TSO */
- /*1810*/ 0x13e7, 1, 0xabb7, /* CHEROKEE SMALL LETTER TSU */
- /*1813*/ 0x13e8, 1, 0xabb8, /* CHEROKEE SMALL LETTER TSV */
- /*1816*/ 0x13e9, 1, 0xabb9, /* CHEROKEE SMALL LETTER WA */
- /*1819*/ 0x13ea, 1, 0xabba, /* CHEROKEE SMALL LETTER WE */
- /*1822*/ 0x13eb, 1, 0xabbb, /* CHEROKEE SMALL LETTER WI */
- /*1825*/ 0x13ec, 1, 0xabbc, /* CHEROKEE SMALL LETTER WO */
- /*1828*/ 0x13ed, 1, 0xabbd, /* CHEROKEE SMALL LETTER WU */
- /*1831*/ 0x13ee, 1, 0xabbe, /* CHEROKEE SMALL LETTER WV */
- /*1834*/ 0x13ef, 1, 0xabbf, /* CHEROKEE SMALL LETTER YA */
- /*1837*/ 0x13f0, 1, 0x13f8, /* CHEROKEE SMALL LETTER YE */
- /*1840*/ 0x13f1, 1, 0x13f9, /* CHEROKEE SMALL LETTER YI */
- /*1843*/ 0x13f2, 1, 0x13fa, /* CHEROKEE SMALL LETTER YO */
- /*1846*/ 0x13f3, 1, 0x13fb, /* CHEROKEE SMALL LETTER YU */
- /*1849*/ 0x13f4, 1, 0x13fc, /* CHEROKEE SMALL LETTER YV */
- /*1852*/ 0x13f5, 1, 0x13fd, /* CHEROKEE SMALL LETTER MV */
- /*1855*/ 0x1d79, 1, 0xa77d, /* LATIN CAPITAL LETTER INSULAR G */
- /*1858*/ 0x1d7d, 1, 0x2c63, /* LATIN CAPITAL LETTER P WITH STROKE */
- /*1861*/ 0x1e01, 1, 0x1e00, /* LATIN CAPITAL LETTER A WITH RING .. */
- /*1864*/ 0x1e03, 1, 0x1e02, /* LATIN CAPITAL LETTER B WITH DOT A.. */
- /*1867*/ 0x1e05, 1, 0x1e04, /* LATIN CAPITAL LETTER B WITH DOT B.. */
- /*1870*/ 0x1e07, 1, 0x1e06, /* LATIN CAPITAL LETTER B WITH LINE .. */
- /*1873*/ 0x1e09, 1, 0x1e08, /* LATIN CAPITAL LETTER C WITH CEDIL.. */
- /*1876*/ 0x1e0b, 1, 0x1e0a, /* LATIN CAPITAL LETTER D WITH DOT A.. */
- /*1879*/ 0x1e0d, 1, 0x1e0c, /* LATIN CAPITAL LETTER D WITH DOT B.. */
- /*1882*/ 0x1e0f, 1, 0x1e0e, /* LATIN CAPITAL LETTER D WITH LINE .. */
- /*1885*/ 0x1e11, 1, 0x1e10, /* LATIN CAPITAL LETTER D WITH CEDIL.. */
- /*1888*/ 0x1e13, 1, 0x1e12, /* LATIN CAPITAL LETTER D WITH CIRCU.. */
- /*1891*/ 0x1e15, 1, 0x1e14, /* LATIN CAPITAL LETTER E WITH MACRO.. */
- /*1894*/ 0x1e17, 1, 0x1e16, /* LATIN CAPITAL LETTER E WITH MACRO.. */
- /*1897*/ 0x1e19, 1, 0x1e18, /* LATIN CAPITAL LETTER E WITH CIRCU.. */
- /*1900*/ 0x1e1b, 1, 0x1e1a, /* LATIN CAPITAL LETTER E WITH TILDE.. */
- /*1903*/ 0x1e1d, 1, 0x1e1c, /* LATIN CAPITAL LETTER E WITH CEDIL.. */
- /*1906*/ 0x1e1f, 1, 0x1e1e, /* LATIN CAPITAL LETTER F WITH DOT A.. */
- /*1909*/ 0x1e21, 1, 0x1e20, /* LATIN CAPITAL LETTER G WITH MACRON */
- /*1912*/ 0x1e23, 1, 0x1e22, /* LATIN CAPITAL LETTER H WITH DOT A.. */
- /*1915*/ 0x1e25, 1, 0x1e24, /* LATIN CAPITAL LETTER H WITH DOT B.. */
- /*1918*/ 0x1e27, 1, 0x1e26, /* LATIN CAPITAL LETTER H WITH DIAER.. */
- /*1921*/ 0x1e29, 1, 0x1e28, /* LATIN CAPITAL LETTER H WITH CEDIL.. */
- /*1924*/ 0x1e2b, 1, 0x1e2a, /* LATIN CAPITAL LETTER H WITH BREVE.. */
- /*1927*/ 0x1e2d, 1, 0x1e2c, /* LATIN CAPITAL LETTER I WITH TILDE.. */
- /*1930*/ 0x1e2f, 1, 0x1e2e, /* LATIN CAPITAL LETTER I WITH DIAER.. */
- /*1933*/ 0x1e31, 1, 0x1e30, /* LATIN CAPITAL LETTER K WITH ACUTE */
- /*1936*/ 0x1e33, 1, 0x1e32, /* LATIN CAPITAL LETTER K WITH DOT B.. */
- /*1939*/ 0x1e35, 1, 0x1e34, /* LATIN CAPITAL LETTER K WITH LINE .. */
- /*1942*/ 0x1e37, 1, 0x1e36, /* LATIN CAPITAL LETTER L WITH DOT B.. */
- /*1945*/ 0x1e39, 1, 0x1e38, /* LATIN CAPITAL LETTER L WITH DOT B.. */
- /*1948*/ 0x1e3b, 1, 0x1e3a, /* LATIN CAPITAL LETTER L WITH LINE .. */
- /*1951*/ 0x1e3d, 1, 0x1e3c, /* LATIN CAPITAL LETTER L WITH CIRCU.. */
- /*1954*/ 0x1e3f, 1, 0x1e3e, /* LATIN CAPITAL LETTER M WITH ACUTE */
- /*1957*/ 0x1e41, 1, 0x1e40, /* LATIN CAPITAL LETTER M WITH DOT A.. */
- /*1960*/ 0x1e43, 1, 0x1e42, /* LATIN CAPITAL LETTER M WITH DOT B.. */
- /*1963*/ 0x1e45, 1, 0x1e44, /* LATIN CAPITAL LETTER N WITH DOT A.. */
- /*1966*/ 0x1e47, 1, 0x1e46, /* LATIN CAPITAL LETTER N WITH DOT B.. */
- /*1969*/ 0x1e49, 1, 0x1e48, /* LATIN CAPITAL LETTER N WITH LINE .. */
- /*1972*/ 0x1e4b, 1, 0x1e4a, /* LATIN CAPITAL LETTER N WITH CIRCU.. */
- /*1975*/ 0x1e4d, 1, 0x1e4c, /* LATIN CAPITAL LETTER O WITH TILDE.. */
- /*1978*/ 0x1e4f, 1, 0x1e4e, /* LATIN CAPITAL LETTER O WITH TILDE.. */
- /*1981*/ 0x1e51, 1, 0x1e50, /* LATIN CAPITAL LETTER O WITH MACRO.. */
- /*1984*/ 0x1e53, 1, 0x1e52, /* LATIN CAPITAL LETTER O WITH MACRO.. */
- /*1987*/ 0x1e55, 1, 0x1e54, /* LATIN CAPITAL LETTER P WITH ACUTE */
- /*1990*/ 0x1e57, 1, 0x1e56, /* LATIN CAPITAL LETTER P WITH DOT A.. */
- /*1993*/ 0x1e59, 1, 0x1e58, /* LATIN CAPITAL LETTER R WITH DOT A.. */
- /*1996*/ 0x1e5b, 1, 0x1e5a, /* LATIN CAPITAL LETTER R WITH DOT B.. */
- /*1999*/ 0x1e5d, 1, 0x1e5c, /* LATIN CAPITAL LETTER R WITH DOT B.. */
- /*2002*/ 0x1e5f, 1, 0x1e5e, /* LATIN CAPITAL LETTER R WITH LINE .. */
- /*2005*/ 0x1e61, 2, 0x1e60, 0x1e9b, /* LATIN CAPITAL LETTER S WITH DOT A.. */
- /*2009*/ 0x1e63, 1, 0x1e62, /* LATIN CAPITAL LETTER S WITH DOT B.. */
- /*2012*/ 0x1e65, 1, 0x1e64, /* LATIN CAPITAL LETTER S WITH ACUTE.. */
- /*2015*/ 0x1e67, 1, 0x1e66, /* LATIN CAPITAL LETTER S WITH CARON.. */
- /*2018*/ 0x1e69, 1, 0x1e68, /* LATIN CAPITAL LETTER S WITH DOT B.. */
- /*2021*/ 0x1e6b, 1, 0x1e6a, /* LATIN CAPITAL LETTER T WITH DOT A.. */
- /*2024*/ 0x1e6d, 1, 0x1e6c, /* LATIN CAPITAL LETTER T WITH DOT B.. */
- /*2027*/ 0x1e6f, 1, 0x1e6e, /* LATIN CAPITAL LETTER T WITH LINE .. */
- /*2030*/ 0x1e71, 1, 0x1e70, /* LATIN CAPITAL LETTER T WITH CIRCU.. */
- /*2033*/ 0x1e73, 1, 0x1e72, /* LATIN CAPITAL LETTER U WITH DIAER.. */
- /*2036*/ 0x1e75, 1, 0x1e74, /* LATIN CAPITAL LETTER U WITH TILDE.. */
- /*2039*/ 0x1e77, 1, 0x1e76, /* LATIN CAPITAL LETTER U WITH CIRCU.. */
- /*2042*/ 0x1e79, 1, 0x1e78, /* LATIN CAPITAL LETTER U WITH TILDE.. */
- /*2045*/ 0x1e7b, 1, 0x1e7a, /* LATIN CAPITAL LETTER U WITH MACRO.. */
- /*2048*/ 0x1e7d, 1, 0x1e7c, /* LATIN CAPITAL LETTER V WITH TILDE */
- /*2051*/ 0x1e7f, 1, 0x1e7e, /* LATIN CAPITAL LETTER V WITH DOT B.. */
- /*2054*/ 0x1e81, 1, 0x1e80, /* LATIN CAPITAL LETTER W WITH GRAVE */
- /*2057*/ 0x1e83, 1, 0x1e82, /* LATIN CAPITAL LETTER W WITH ACUTE */
- /*2060*/ 0x1e85, 1, 0x1e84, /* LATIN CAPITAL LETTER W WITH DIAER.. */
- /*2063*/ 0x1e87, 1, 0x1e86, /* LATIN CAPITAL LETTER W WITH DOT A.. */
- /*2066*/ 0x1e89, 1, 0x1e88, /* LATIN CAPITAL LETTER W WITH DOT B.. */
- /*2069*/ 0x1e8b, 1, 0x1e8a, /* LATIN CAPITAL LETTER X WITH DOT A.. */
- /*2072*/ 0x1e8d, 1, 0x1e8c, /* LATIN CAPITAL LETTER X WITH DIAER.. */
- /*2075*/ 0x1e8f, 1, 0x1e8e, /* LATIN CAPITAL LETTER Y WITH DOT A.. */
- /*2078*/ 0x1e91, 1, 0x1e90, /* LATIN CAPITAL LETTER Z WITH CIRCU.. */
- /*2081*/ 0x1e93, 1, 0x1e92, /* LATIN CAPITAL LETTER Z WITH DOT B.. */
- /*2084*/ 0x1e95, 1, 0x1e94, /* LATIN CAPITAL LETTER Z WITH LINE .. */
- /*2087*/ 0x1ea1, 1, 0x1ea0, /* LATIN CAPITAL LETTER A WITH DOT B.. */
- /*2090*/ 0x1ea3, 1, 0x1ea2, /* LATIN CAPITAL LETTER A WITH HOOK .. */
- /*2093*/ 0x1ea5, 1, 0x1ea4, /* LATIN CAPITAL LETTER A WITH CIRCU.. */
- /*2096*/ 0x1ea7, 1, 0x1ea6, /* LATIN CAPITAL LETTER A WITH CIRCU.. */
- /*2099*/ 0x1ea9, 1, 0x1ea8, /* LATIN CAPITAL LETTER A WITH CIRCU.. */
- /*2102*/ 0x1eab, 1, 0x1eaa, /* LATIN CAPITAL LETTER A WITH CIRCU.. */
- /*2105*/ 0x1ead, 1, 0x1eac, /* LATIN CAPITAL LETTER A WITH CIRCU.. */
- /*2108*/ 0x1eaf, 1, 0x1eae, /* LATIN CAPITAL LETTER A WITH BREVE.. */
- /*2111*/ 0x1eb1, 1, 0x1eb0, /* LATIN CAPITAL LETTER A WITH BREVE.. */
- /*2114*/ 0x1eb3, 1, 0x1eb2, /* LATIN CAPITAL LETTER A WITH BREVE.. */
- /*2117*/ 0x1eb5, 1, 0x1eb4, /* LATIN CAPITAL LETTER A WITH BREVE.. */
- /*2120*/ 0x1eb7, 1, 0x1eb6, /* LATIN CAPITAL LETTER A WITH BREVE.. */
- /*2123*/ 0x1eb9, 1, 0x1eb8, /* LATIN CAPITAL LETTER E WITH DOT B.. */
- /*2126*/ 0x1ebb, 1, 0x1eba, /* LATIN CAPITAL LETTER E WITH HOOK .. */
- /*2129*/ 0x1ebd, 1, 0x1ebc, /* LATIN CAPITAL LETTER E WITH TILDE */
- /*2132*/ 0x1ebf, 1, 0x1ebe, /* LATIN CAPITAL LETTER E WITH CIRCU.. */
- /*2135*/ 0x1ec1, 1, 0x1ec0, /* LATIN CAPITAL LETTER E WITH CIRCU.. */
- /*2138*/ 0x1ec3, 1, 0x1ec2, /* LATIN CAPITAL LETTER E WITH CIRCU.. */
- /*2141*/ 0x1ec5, 1, 0x1ec4, /* LATIN CAPITAL LETTER E WITH CIRCU.. */
- /*2144*/ 0x1ec7, 1, 0x1ec6, /* LATIN CAPITAL LETTER E WITH CIRCU.. */
- /*2147*/ 0x1ec9, 1, 0x1ec8, /* LATIN CAPITAL LETTER I WITH HOOK .. */
- /*2150*/ 0x1ecb, 1, 0x1eca, /* LATIN CAPITAL LETTER I WITH DOT B.. */
- /*2153*/ 0x1ecd, 1, 0x1ecc, /* LATIN CAPITAL LETTER O WITH DOT B.. */
- /*2156*/ 0x1ecf, 1, 0x1ece, /* LATIN CAPITAL LETTER O WITH HOOK .. */
- /*2159*/ 0x1ed1, 1, 0x1ed0, /* LATIN CAPITAL LETTER O WITH CIRCU.. */
- /*2162*/ 0x1ed3, 1, 0x1ed2, /* LATIN CAPITAL LETTER O WITH CIRCU.. */
- /*2165*/ 0x1ed5, 1, 0x1ed4, /* LATIN CAPITAL LETTER O WITH CIRCU.. */
- /*2168*/ 0x1ed7, 1, 0x1ed6, /* LATIN CAPITAL LETTER O WITH CIRCU.. */
- /*2171*/ 0x1ed9, 1, 0x1ed8, /* LATIN CAPITAL LETTER O WITH CIRCU.. */
- /*2174*/ 0x1edb, 1, 0x1eda, /* LATIN CAPITAL LETTER O WITH HORN .. */
- /*2177*/ 0x1edd, 1, 0x1edc, /* LATIN CAPITAL LETTER O WITH HORN .. */
- /*2180*/ 0x1edf, 1, 0x1ede, /* LATIN CAPITAL LETTER O WITH HORN .. */
- /*2183*/ 0x1ee1, 1, 0x1ee0, /* LATIN CAPITAL LETTER O WITH HORN .. */
- /*2186*/ 0x1ee3, 1, 0x1ee2, /* LATIN CAPITAL LETTER O WITH HORN .. */
- /*2189*/ 0x1ee5, 1, 0x1ee4, /* LATIN CAPITAL LETTER U WITH DOT B.. */
- /*2192*/ 0x1ee7, 1, 0x1ee6, /* LATIN CAPITAL LETTER U WITH HOOK .. */
- /*2195*/ 0x1ee9, 1, 0x1ee8, /* LATIN CAPITAL LETTER U WITH HORN .. */
- /*2198*/ 0x1eeb, 1, 0x1eea, /* LATIN CAPITAL LETTER U WITH HORN .. */
- /*2201*/ 0x1eed, 1, 0x1eec, /* LATIN CAPITAL LETTER U WITH HORN .. */
- /*2204*/ 0x1eef, 1, 0x1eee, /* LATIN CAPITAL LETTER U WITH HORN .. */
- /*2207*/ 0x1ef1, 1, 0x1ef0, /* LATIN CAPITAL LETTER U WITH HORN .. */
- /*2210*/ 0x1ef3, 1, 0x1ef2, /* LATIN CAPITAL LETTER Y WITH GRAVE */
- /*2213*/ 0x1ef5, 1, 0x1ef4, /* LATIN CAPITAL LETTER Y WITH DOT B.. */
- /*2216*/ 0x1ef7, 1, 0x1ef6, /* LATIN CAPITAL LETTER Y WITH HOOK .. */
- /*2219*/ 0x1ef9, 1, 0x1ef8, /* LATIN CAPITAL LETTER Y WITH TILDE */
- /*2222*/ 0x1efb, 1, 0x1efa, /* LATIN CAPITAL LETTER MIDDLE-WELSH.. */
- /*2225*/ 0x1efd, 1, 0x1efc, /* LATIN CAPITAL LETTER MIDDLE-WELSH.. */
- /*2228*/ 0x1eff, 1, 0x1efe, /* LATIN CAPITAL LETTER Y WITH LOOP */
- /*2231*/ 0x1f00, 1, 0x1f08, /* GREEK CAPITAL LETTER ALPHA WITH P.. */
- /*2234*/ 0x1f01, 1, 0x1f09, /* GREEK CAPITAL LETTER ALPHA WITH D.. */
- /*2237*/ 0x1f02, 1, 0x1f0a, /* GREEK CAPITAL LETTER ALPHA WITH P.. */
- /*2240*/ 0x1f03, 1, 0x1f0b, /* GREEK CAPITAL LETTER ALPHA WITH D.. */
- /*2243*/ 0x1f04, 1, 0x1f0c, /* GREEK CAPITAL LETTER ALPHA WITH P.. */
- /*2246*/ 0x1f05, 1, 0x1f0d, /* GREEK CAPITAL LETTER ALPHA WITH D.. */
- /*2249*/ 0x1f06, 1, 0x1f0e, /* GREEK CAPITAL LETTER ALPHA WITH P.. */
- /*2252*/ 0x1f07, 1, 0x1f0f, /* GREEK CAPITAL LETTER ALPHA WITH D.. */
- /*2255*/ 0x1f10, 1, 0x1f18, /* GREEK CAPITAL LETTER EPSILON WITH.. */
- /*2258*/ 0x1f11, 1, 0x1f19, /* GREEK CAPITAL LETTER EPSILON WITH.. */
- /*2261*/ 0x1f12, 1, 0x1f1a, /* GREEK CAPITAL LETTER EPSILON WITH.. */
- /*2264*/ 0x1f13, 1, 0x1f1b, /* GREEK CAPITAL LETTER EPSILON WITH.. */
- /*2267*/ 0x1f14, 1, 0x1f1c, /* GREEK CAPITAL LETTER EPSILON WITH.. */
- /*2270*/ 0x1f15, 1, 0x1f1d, /* GREEK CAPITAL LETTER EPSILON WITH.. */
- /*2273*/ 0x1f20, 1, 0x1f28, /* GREEK CAPITAL LETTER ETA WITH PSI.. */
- /*2276*/ 0x1f21, 1, 0x1f29, /* GREEK CAPITAL LETTER ETA WITH DAS.. */
- /*2279*/ 0x1f22, 1, 0x1f2a, /* GREEK CAPITAL LETTER ETA WITH PSI.. */
- /*2282*/ 0x1f23, 1, 0x1f2b, /* GREEK CAPITAL LETTER ETA WITH DAS.. */
- /*2285*/ 0x1f24, 1, 0x1f2c, /* GREEK CAPITAL LETTER ETA WITH PSI.. */
- /*2288*/ 0x1f25, 1, 0x1f2d, /* GREEK CAPITAL LETTER ETA WITH DAS.. */
- /*2291*/ 0x1f26, 1, 0x1f2e, /* GREEK CAPITAL LETTER ETA WITH PSI.. */
- /*2294*/ 0x1f27, 1, 0x1f2f, /* GREEK CAPITAL LETTER ETA WITH DAS.. */
- /*2297*/ 0x1f30, 1, 0x1f38, /* GREEK CAPITAL LETTER IOTA WITH PS.. */
- /*2300*/ 0x1f31, 1, 0x1f39, /* GREEK CAPITAL LETTER IOTA WITH DA.. */
- /*2303*/ 0x1f32, 1, 0x1f3a, /* GREEK CAPITAL LETTER IOTA WITH PS.. */
- /*2306*/ 0x1f33, 1, 0x1f3b, /* GREEK CAPITAL LETTER IOTA WITH DA.. */
- /*2309*/ 0x1f34, 1, 0x1f3c, /* GREEK CAPITAL LETTER IOTA WITH PS.. */
- /*2312*/ 0x1f35, 1, 0x1f3d, /* GREEK CAPITAL LETTER IOTA WITH DA.. */
- /*2315*/ 0x1f36, 1, 0x1f3e, /* GREEK CAPITAL LETTER IOTA WITH PS.. */
- /*2318*/ 0x1f37, 1, 0x1f3f, /* GREEK CAPITAL LETTER IOTA WITH DA.. */
- /*2321*/ 0x1f40, 1, 0x1f48, /* GREEK CAPITAL LETTER OMICRON WITH.. */
- /*2324*/ 0x1f41, 1, 0x1f49, /* GREEK CAPITAL LETTER OMICRON WITH.. */
- /*2327*/ 0x1f42, 1, 0x1f4a, /* GREEK CAPITAL LETTER OMICRON WITH.. */
- /*2330*/ 0x1f43, 1, 0x1f4b, /* GREEK CAPITAL LETTER OMICRON WITH.. */
- /*2333*/ 0x1f44, 1, 0x1f4c, /* GREEK CAPITAL LETTER OMICRON WITH.. */
- /*2336*/ 0x1f45, 1, 0x1f4d, /* GREEK CAPITAL LETTER OMICRON WITH.. */
- /*2339*/ 0x1f51, 1, 0x1f59, /* GREEK CAPITAL LETTER UPSILON WITH.. */
- /*2342*/ 0x1f53, 1, 0x1f5b, /* GREEK CAPITAL LETTER UPSILON WITH.. */
- /*2345*/ 0x1f55, 1, 0x1f5d, /* GREEK CAPITAL LETTER UPSILON WITH.. */
- /*2348*/ 0x1f57, 1, 0x1f5f, /* GREEK CAPITAL LETTER UPSILON WITH.. */
- /*2351*/ 0x1f60, 1, 0x1f68, /* GREEK CAPITAL LETTER OMEGA WITH P.. */
- /*2354*/ 0x1f61, 1, 0x1f69, /* GREEK CAPITAL LETTER OMEGA WITH D.. */
- /*2357*/ 0x1f62, 1, 0x1f6a, /* GREEK CAPITAL LETTER OMEGA WITH P.. */
- /*2360*/ 0x1f63, 1, 0x1f6b, /* GREEK CAPITAL LETTER OMEGA WITH D.. */
- /*2363*/ 0x1f64, 1, 0x1f6c, /* GREEK CAPITAL LETTER OMEGA WITH P.. */
- /*2366*/ 0x1f65, 1, 0x1f6d, /* GREEK CAPITAL LETTER OMEGA WITH D.. */
- /*2369*/ 0x1f66, 1, 0x1f6e, /* GREEK CAPITAL LETTER OMEGA WITH P.. */
- /*2372*/ 0x1f67, 1, 0x1f6f, /* GREEK CAPITAL LETTER OMEGA WITH D.. */
- /*2375*/ 0x1f70, 1, 0x1fba, /* GREEK CAPITAL LETTER ALPHA WITH V.. */
- /*2378*/ 0x1f71, 1, 0x1fbb, /* GREEK CAPITAL LETTER ALPHA WITH O.. */
- /*2381*/ 0x1f72, 1, 0x1fc8, /* GREEK CAPITAL LETTER EPSILON WITH.. */
- /*2384*/ 0x1f73, 1, 0x1fc9, /* GREEK CAPITAL LETTER EPSILON WITH.. */
- /*2387*/ 0x1f74, 1, 0x1fca, /* GREEK CAPITAL LETTER ETA WITH VAR.. */
- /*2390*/ 0x1f75, 1, 0x1fcb, /* GREEK CAPITAL LETTER ETA WITH OXIA */
- /*2393*/ 0x1f76, 1, 0x1fda, /* GREEK CAPITAL LETTER IOTA WITH VA.. */
- /*2396*/ 0x1f77, 1, 0x1fdb, /* GREEK CAPITAL LETTER IOTA WITH OX.. */
- /*2399*/ 0x1f78, 1, 0x1ff8, /* GREEK CAPITAL LETTER OMICRON WITH.. */
- /*2402*/ 0x1f79, 1, 0x1ff9, /* GREEK CAPITAL LETTER OMICRON WITH.. */
- /*2405*/ 0x1f7a, 1, 0x1fea, /* GREEK CAPITAL LETTER UPSILON WITH.. */
- /*2408*/ 0x1f7b, 1, 0x1feb, /* GREEK CAPITAL LETTER UPSILON WITH.. */
- /*2411*/ 0x1f7c, 1, 0x1ffa, /* GREEK CAPITAL LETTER OMEGA WITH V.. */
- /*2414*/ 0x1f7d, 1, 0x1ffb, /* GREEK CAPITAL LETTER OMEGA WITH O.. */
- /*2417*/ 0x1fb0, 1, 0x1fb8, /* GREEK CAPITAL LETTER ALPHA WITH V.. */
- /*2420*/ 0x1fb1, 1, 0x1fb9, /* GREEK CAPITAL LETTER ALPHA WITH M.. */
- /*2423*/ 0x1fd0, 1, 0x1fd8, /* GREEK CAPITAL LETTER IOTA WITH VR.. */
- /*2426*/ 0x1fd1, 1, 0x1fd9, /* GREEK CAPITAL LETTER IOTA WITH MA.. */
- /*2429*/ 0x1fe0, 1, 0x1fe8, /* GREEK CAPITAL LETTER UPSILON WITH.. */
- /*2432*/ 0x1fe1, 1, 0x1fe9, /* GREEK CAPITAL LETTER UPSILON WITH.. */
- /*2435*/ 0x1fe5, 1, 0x1fec, /* GREEK CAPITAL LETTER RHO WITH DAS.. */
- /*2438*/ 0x214e, 1, 0x2132, /* TURNED CAPITAL F */
- /*2441*/ 0x2170, 1, 0x2160, /* ROMAN NUMERAL ONE */
- /*2444*/ 0x2171, 1, 0x2161, /* ROMAN NUMERAL TWO */
- /*2447*/ 0x2172, 1, 0x2162, /* ROMAN NUMERAL THREE */
- /*2450*/ 0x2173, 1, 0x2163, /* ROMAN NUMERAL FOUR */
- /*2453*/ 0x2174, 1, 0x2164, /* ROMAN NUMERAL FIVE */
- /*2456*/ 0x2175, 1, 0x2165, /* ROMAN NUMERAL SIX */
- /*2459*/ 0x2176, 1, 0x2166, /* ROMAN NUMERAL SEVEN */
- /*2462*/ 0x2177, 1, 0x2167, /* ROMAN NUMERAL EIGHT */
- /*2465*/ 0x2178, 1, 0x2168, /* ROMAN NUMERAL NINE */
- /*2468*/ 0x2179, 1, 0x2169, /* ROMAN NUMERAL TEN */
- /*2471*/ 0x217a, 1, 0x216a, /* ROMAN NUMERAL ELEVEN */
- /*2474*/ 0x217b, 1, 0x216b, /* ROMAN NUMERAL TWELVE */
- /*2477*/ 0x217c, 1, 0x216c, /* ROMAN NUMERAL FIFTY */
- /*2480*/ 0x217d, 1, 0x216d, /* ROMAN NUMERAL ONE HUNDRED */
- /*2483*/ 0x217e, 1, 0x216e, /* ROMAN NUMERAL FIVE HUNDRED */
- /*2486*/ 0x217f, 1, 0x216f, /* ROMAN NUMERAL ONE THOUSAND */
- /*2489*/ 0x2184, 1, 0x2183, /* ROMAN NUMERAL REVERSED ONE HUNDRED */
- /*2492*/ 0x24d0, 1, 0x24b6, /* CIRCLED LATIN CAPITAL LETTER A */
- /*2495*/ 0x24d1, 1, 0x24b7, /* CIRCLED LATIN CAPITAL LETTER B */
- /*2498*/ 0x24d2, 1, 0x24b8, /* CIRCLED LATIN CAPITAL LETTER C */
- /*2501*/ 0x24d3, 1, 0x24b9, /* CIRCLED LATIN CAPITAL LETTER D */
- /*2504*/ 0x24d4, 1, 0x24ba, /* CIRCLED LATIN CAPITAL LETTER E */
- /*2507*/ 0x24d5, 1, 0x24bb, /* CIRCLED LATIN CAPITAL LETTER F */
- /*2510*/ 0x24d6, 1, 0x24bc, /* CIRCLED LATIN CAPITAL LETTER G */
- /*2513*/ 0x24d7, 1, 0x24bd, /* CIRCLED LATIN CAPITAL LETTER H */
- /*2516*/ 0x24d8, 1, 0x24be, /* CIRCLED LATIN CAPITAL LETTER I */
- /*2519*/ 0x24d9, 1, 0x24bf, /* CIRCLED LATIN CAPITAL LETTER J */
- /*2522*/ 0x24da, 1, 0x24c0, /* CIRCLED LATIN CAPITAL LETTER K */
- /*2525*/ 0x24db, 1, 0x24c1, /* CIRCLED LATIN CAPITAL LETTER L */
- /*2528*/ 0x24dc, 1, 0x24c2, /* CIRCLED LATIN CAPITAL LETTER M */
- /*2531*/ 0x24dd, 1, 0x24c3, /* CIRCLED LATIN CAPITAL LETTER N */
- /*2534*/ 0x24de, 1, 0x24c4, /* CIRCLED LATIN CAPITAL LETTER O */
- /*2537*/ 0x24df, 1, 0x24c5, /* CIRCLED LATIN CAPITAL LETTER P */
- /*2540*/ 0x24e0, 1, 0x24c6, /* CIRCLED LATIN CAPITAL LETTER Q */
- /*2543*/ 0x24e1, 1, 0x24c7, /* CIRCLED LATIN CAPITAL LETTER R */
- /*2546*/ 0x24e2, 1, 0x24c8, /* CIRCLED LATIN CAPITAL LETTER S */
- /*2549*/ 0x24e3, 1, 0x24c9, /* CIRCLED LATIN CAPITAL LETTER T */
- /*2552*/ 0x24e4, 1, 0x24ca, /* CIRCLED LATIN CAPITAL LETTER U */
- /*2555*/ 0x24e5, 1, 0x24cb, /* CIRCLED LATIN CAPITAL LETTER V */
- /*2558*/ 0x24e6, 1, 0x24cc, /* CIRCLED LATIN CAPITAL LETTER W */
- /*2561*/ 0x24e7, 1, 0x24cd, /* CIRCLED LATIN CAPITAL LETTER X */
- /*2564*/ 0x24e8, 1, 0x24ce, /* CIRCLED LATIN CAPITAL LETTER Y */
- /*2567*/ 0x24e9, 1, 0x24cf, /* CIRCLED LATIN CAPITAL LETTER Z */
- /*2570*/ 0x2c30, 1, 0x2c00, /* GLAGOLITIC CAPITAL LETTER AZU */
- /*2573*/ 0x2c31, 1, 0x2c01, /* GLAGOLITIC CAPITAL LETTER BUKY */
- /*2576*/ 0x2c32, 1, 0x2c02, /* GLAGOLITIC CAPITAL LETTER VEDE */
- /*2579*/ 0x2c33, 1, 0x2c03, /* GLAGOLITIC CAPITAL LETTER GLAGOLI */
- /*2582*/ 0x2c34, 1, 0x2c04, /* GLAGOLITIC CAPITAL LETTER DOBRO */
- /*2585*/ 0x2c35, 1, 0x2c05, /* GLAGOLITIC CAPITAL LETTER YESTU */
- /*2588*/ 0x2c36, 1, 0x2c06, /* GLAGOLITIC CAPITAL LETTER ZHIVETE */
- /*2591*/ 0x2c37, 1, 0x2c07, /* GLAGOLITIC CAPITAL LETTER DZELO */
- /*2594*/ 0x2c38, 1, 0x2c08, /* GLAGOLITIC CAPITAL LETTER ZEMLJA */
- /*2597*/ 0x2c39, 1, 0x2c09, /* GLAGOLITIC CAPITAL LETTER IZHE */
- /*2600*/ 0x2c3a, 1, 0x2c0a, /* GLAGOLITIC CAPITAL LETTER INITIAL.. */
- /*2603*/ 0x2c3b, 1, 0x2c0b, /* GLAGOLITIC CAPITAL LETTER I */
- /*2606*/ 0x2c3c, 1, 0x2c0c, /* GLAGOLITIC CAPITAL LETTER DJERVI */
- /*2609*/ 0x2c3d, 1, 0x2c0d, /* GLAGOLITIC CAPITAL LETTER KAKO */
- /*2612*/ 0x2c3e, 1, 0x2c0e, /* GLAGOLITIC CAPITAL LETTER LJUDIJE */
- /*2615*/ 0x2c3f, 1, 0x2c0f, /* GLAGOLITIC CAPITAL LETTER MYSLITE */
- /*2618*/ 0x2c40, 1, 0x2c10, /* GLAGOLITIC CAPITAL LETTER NASHI */
- /*2621*/ 0x2c41, 1, 0x2c11, /* GLAGOLITIC CAPITAL LETTER ONU */
- /*2624*/ 0x2c42, 1, 0x2c12, /* GLAGOLITIC CAPITAL LETTER POKOJI */
- /*2627*/ 0x2c43, 1, 0x2c13, /* GLAGOLITIC CAPITAL LETTER RITSI */
- /*2630*/ 0x2c44, 1, 0x2c14, /* GLAGOLITIC CAPITAL LETTER SLOVO */
- /*2633*/ 0x2c45, 1, 0x2c15, /* GLAGOLITIC CAPITAL LETTER TVRIDO */
- /*2636*/ 0x2c46, 1, 0x2c16, /* GLAGOLITIC CAPITAL LETTER UKU */
- /*2639*/ 0x2c47, 1, 0x2c17, /* GLAGOLITIC CAPITAL LETTER FRITU */
- /*2642*/ 0x2c48, 1, 0x2c18, /* GLAGOLITIC CAPITAL LETTER HERU */
- /*2645*/ 0x2c49, 1, 0x2c19, /* GLAGOLITIC CAPITAL LETTER OTU */
- /*2648*/ 0x2c4a, 1, 0x2c1a, /* GLAGOLITIC CAPITAL LETTER PE */
- /*2651*/ 0x2c4b, 1, 0x2c1b, /* GLAGOLITIC CAPITAL LETTER SHTA */
- /*2654*/ 0x2c4c, 1, 0x2c1c, /* GLAGOLITIC CAPITAL LETTER TSI */
- /*2657*/ 0x2c4d, 1, 0x2c1d, /* GLAGOLITIC CAPITAL LETTER CHRIVI */
- /*2660*/ 0x2c4e, 1, 0x2c1e, /* GLAGOLITIC CAPITAL LETTER SHA */
- /*2663*/ 0x2c4f, 1, 0x2c1f, /* GLAGOLITIC CAPITAL LETTER YERU */
- /*2666*/ 0x2c50, 1, 0x2c20, /* GLAGOLITIC CAPITAL LETTER YERI */
- /*2669*/ 0x2c51, 1, 0x2c21, /* GLAGOLITIC CAPITAL LETTER YATI */
- /*2672*/ 0x2c52, 1, 0x2c22, /* GLAGOLITIC CAPITAL LETTER SPIDERY.. */
- /*2675*/ 0x2c53, 1, 0x2c23, /* GLAGOLITIC CAPITAL LETTER YU */
- /*2678*/ 0x2c54, 1, 0x2c24, /* GLAGOLITIC CAPITAL LETTER SMALL Y.. */
- /*2681*/ 0x2c55, 1, 0x2c25, /* GLAGOLITIC CAPITAL LETTER SMALL Y.. */
- /*2684*/ 0x2c56, 1, 0x2c26, /* GLAGOLITIC CAPITAL LETTER YO */
- /*2687*/ 0x2c57, 1, 0x2c27, /* GLAGOLITIC CAPITAL LETTER IOTATED.. */
- /*2690*/ 0x2c58, 1, 0x2c28, /* GLAGOLITIC CAPITAL LETTER BIG YUS */
- /*2693*/ 0x2c59, 1, 0x2c29, /* GLAGOLITIC CAPITAL LETTER IOTATED.. */
- /*2696*/ 0x2c5a, 1, 0x2c2a, /* GLAGOLITIC CAPITAL LETTER FITA */
- /*2699*/ 0x2c5b, 1, 0x2c2b, /* GLAGOLITIC CAPITAL LETTER IZHITSA */
- /*2702*/ 0x2c5c, 1, 0x2c2c, /* GLAGOLITIC CAPITAL LETTER SHTAPIC */
- /*2705*/ 0x2c5d, 1, 0x2c2d, /* GLAGOLITIC CAPITAL LETTER TROKUTA.. */
- /*2708*/ 0x2c5e, 1, 0x2c2e, /* GLAGOLITIC CAPITAL LETTER LATINAT.. */
- /*2711*/ 0x2c61, 1, 0x2c60, /* LATIN CAPITAL LETTER L WITH DOUBL.. */
- /*2714*/ 0x2c65, 1, 0x023a, /* LATIN CAPITAL LETTER A WITH STROKE */
- /*2717*/ 0x2c66, 1, 0x023e, /* LATIN CAPITAL LETTER T WITH DIAGO.. */
- /*2720*/ 0x2c68, 1, 0x2c67, /* LATIN CAPITAL LETTER H WITH DESCE.. */
- /*2723*/ 0x2c6a, 1, 0x2c69, /* LATIN CAPITAL LETTER K WITH DESCE.. */
- /*2726*/ 0x2c6c, 1, 0x2c6b, /* LATIN CAPITAL LETTER Z WITH DESCE.. */
- /*2729*/ 0x2c73, 1, 0x2c72, /* LATIN CAPITAL LETTER W WITH HOOK */
- /*2732*/ 0x2c76, 1, 0x2c75, /* LATIN CAPITAL LETTER HALF H */
- /*2735*/ 0x2c81, 1, 0x2c80, /* COPTIC CAPITAL LETTER ALFA */
- /*2738*/ 0x2c83, 1, 0x2c82, /* COPTIC CAPITAL LETTER VIDA */
- /*2741*/ 0x2c85, 1, 0x2c84, /* COPTIC CAPITAL LETTER GAMMA */
- /*2744*/ 0x2c87, 1, 0x2c86, /* COPTIC CAPITAL LETTER DALDA */
- /*2747*/ 0x2c89, 1, 0x2c88, /* COPTIC CAPITAL LETTER EIE */
- /*2750*/ 0x2c8b, 1, 0x2c8a, /* COPTIC CAPITAL LETTER SOU */
- /*2753*/ 0x2c8d, 1, 0x2c8c, /* COPTIC CAPITAL LETTER ZATA */
- /*2756*/ 0x2c8f, 1, 0x2c8e, /* COPTIC CAPITAL LETTER HATE */
- /*2759*/ 0x2c91, 1, 0x2c90, /* COPTIC CAPITAL LETTER THETHE */
- /*2762*/ 0x2c93, 1, 0x2c92, /* COPTIC CAPITAL LETTER IAUDA */
- /*2765*/ 0x2c95, 1, 0x2c94, /* COPTIC CAPITAL LETTER KAPA */
- /*2768*/ 0x2c97, 1, 0x2c96, /* COPTIC CAPITAL LETTER LAULA */
- /*2771*/ 0x2c99, 1, 0x2c98, /* COPTIC CAPITAL LETTER MI */
- /*2774*/ 0x2c9b, 1, 0x2c9a, /* COPTIC CAPITAL LETTER NI */
- /*2777*/ 0x2c9d, 1, 0x2c9c, /* COPTIC CAPITAL LETTER KSI */
- /*2780*/ 0x2c9f, 1, 0x2c9e, /* COPTIC CAPITAL LETTER O */
- /*2783*/ 0x2ca1, 1, 0x2ca0, /* COPTIC CAPITAL LETTER PI */
- /*2786*/ 0x2ca3, 1, 0x2ca2, /* COPTIC CAPITAL LETTER RO */
- /*2789*/ 0x2ca5, 1, 0x2ca4, /* COPTIC CAPITAL LETTER SIMA */
- /*2792*/ 0x2ca7, 1, 0x2ca6, /* COPTIC CAPITAL LETTER TAU */
- /*2795*/ 0x2ca9, 1, 0x2ca8, /* COPTIC CAPITAL LETTER UA */
- /*2798*/ 0x2cab, 1, 0x2caa, /* COPTIC CAPITAL LETTER FI */
- /*2801*/ 0x2cad, 1, 0x2cac, /* COPTIC CAPITAL LETTER KHI */
- /*2804*/ 0x2caf, 1, 0x2cae, /* COPTIC CAPITAL LETTER PSI */
- /*2807*/ 0x2cb1, 1, 0x2cb0, /* COPTIC CAPITAL LETTER OOU */
- /*2810*/ 0x2cb3, 1, 0x2cb2, /* COPTIC CAPITAL LETTER DIALECT-P A.. */
- /*2813*/ 0x2cb5, 1, 0x2cb4, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
- /*2816*/ 0x2cb7, 1, 0x2cb6, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */
- /*2819*/ 0x2cb9, 1, 0x2cb8, /* COPTIC CAPITAL LETTER DIALECT-P K.. */
- /*2822*/ 0x2cbb, 1, 0x2cba, /* COPTIC CAPITAL LETTER DIALECT-P NI */
- /*2825*/ 0x2cbd, 1, 0x2cbc, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */
- /*2828*/ 0x2cbf, 1, 0x2cbe, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
- /*2831*/ 0x2cc1, 1, 0x2cc0, /* COPTIC CAPITAL LETTER SAMPI */
- /*2834*/ 0x2cc3, 1, 0x2cc2, /* COPTIC CAPITAL LETTER CROSSED SHEI */
- /*2837*/ 0x2cc5, 1, 0x2cc4, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
- /*2840*/ 0x2cc7, 1, 0x2cc6, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
- /*2843*/ 0x2cc9, 1, 0x2cc8, /* COPTIC CAPITAL LETTER AKHMIMIC KH.. */
- /*2846*/ 0x2ccb, 1, 0x2cca, /* COPTIC CAPITAL LETTER DIALECT-P H.. */
- /*2849*/ 0x2ccd, 1, 0x2ccc, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
- /*2852*/ 0x2ccf, 1, 0x2cce, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
- /*2855*/ 0x2cd1, 1, 0x2cd0, /* COPTIC CAPITAL LETTER L-SHAPED HA */
- /*2858*/ 0x2cd3, 1, 0x2cd2, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
- /*2861*/ 0x2cd5, 1, 0x2cd4, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
- /*2864*/ 0x2cd7, 1, 0x2cd6, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
- /*2867*/ 0x2cd9, 1, 0x2cd8, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
- /*2870*/ 0x2cdb, 1, 0x2cda, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
- /*2873*/ 0x2cdd, 1, 0x2cdc, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */
- /*2876*/ 0x2cdf, 1, 0x2cde, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */
- /*2879*/ 0x2ce1, 1, 0x2ce0, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */
- /*2882*/ 0x2ce3, 1, 0x2ce2, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */
- /*2885*/ 0x2cec, 1, 0x2ceb, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */
- /*2888*/ 0x2cee, 1, 0x2ced, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */
- /*2891*/ 0x2cf3, 1, 0x2cf2, /* COPTIC CAPITAL LETTER BOHAIRIC KH.. */
- /*2894*/ 0x2d00, 1, 0x10a0, /* GEORGIAN CAPITAL LETTER AN */
- /*2897*/ 0x2d01, 1, 0x10a1, /* GEORGIAN CAPITAL LETTER BAN */
- /*2900*/ 0x2d02, 1, 0x10a2, /* GEORGIAN CAPITAL LETTER GAN */
- /*2903*/ 0x2d03, 1, 0x10a3, /* GEORGIAN CAPITAL LETTER DON */
- /*2906*/ 0x2d04, 1, 0x10a4, /* GEORGIAN CAPITAL LETTER EN */
- /*2909*/ 0x2d05, 1, 0x10a5, /* GEORGIAN CAPITAL LETTER VIN */
- /*2912*/ 0x2d06, 1, 0x10a6, /* GEORGIAN CAPITAL LETTER ZEN */
- /*2915*/ 0x2d07, 1, 0x10a7, /* GEORGIAN CAPITAL LETTER TAN */
- /*2918*/ 0x2d08, 1, 0x10a8, /* GEORGIAN CAPITAL LETTER IN */
- /*2921*/ 0x2d09, 1, 0x10a9, /* GEORGIAN CAPITAL LETTER KAN */
- /*2924*/ 0x2d0a, 1, 0x10aa, /* GEORGIAN CAPITAL LETTER LAS */
- /*2927*/ 0x2d0b, 1, 0x10ab, /* GEORGIAN CAPITAL LETTER MAN */
- /*2930*/ 0x2d0c, 1, 0x10ac, /* GEORGIAN CAPITAL LETTER NAR */
- /*2933*/ 0x2d0d, 1, 0x10ad, /* GEORGIAN CAPITAL LETTER ON */
- /*2936*/ 0x2d0e, 1, 0x10ae, /* GEORGIAN CAPITAL LETTER PAR */
- /*2939*/ 0x2d0f, 1, 0x10af, /* GEORGIAN CAPITAL LETTER ZHAR */
- /*2942*/ 0x2d10, 1, 0x10b0, /* GEORGIAN CAPITAL LETTER RAE */
- /*2945*/ 0x2d11, 1, 0x10b1, /* GEORGIAN CAPITAL LETTER SAN */
- /*2948*/ 0x2d12, 1, 0x10b2, /* GEORGIAN CAPITAL LETTER TAR */
- /*2951*/ 0x2d13, 1, 0x10b3, /* GEORGIAN CAPITAL LETTER UN */
- /*2954*/ 0x2d14, 1, 0x10b4, /* GEORGIAN CAPITAL LETTER PHAR */
- /*2957*/ 0x2d15, 1, 0x10b5, /* GEORGIAN CAPITAL LETTER KHAR */
- /*2960*/ 0x2d16, 1, 0x10b6, /* GEORGIAN CAPITAL LETTER GHAN */
- /*2963*/ 0x2d17, 1, 0x10b7, /* GEORGIAN CAPITAL LETTER QAR */
- /*2966*/ 0x2d18, 1, 0x10b8, /* GEORGIAN CAPITAL LETTER SHIN */
- /*2969*/ 0x2d19, 1, 0x10b9, /* GEORGIAN CAPITAL LETTER CHIN */
- /*2972*/ 0x2d1a, 1, 0x10ba, /* GEORGIAN CAPITAL LETTER CAN */
- /*2975*/ 0x2d1b, 1, 0x10bb, /* GEORGIAN CAPITAL LETTER JIL */
- /*2978*/ 0x2d1c, 1, 0x10bc, /* GEORGIAN CAPITAL LETTER CIL */
- /*2981*/ 0x2d1d, 1, 0x10bd, /* GEORGIAN CAPITAL LETTER CHAR */
- /*2984*/ 0x2d1e, 1, 0x10be, /* GEORGIAN CAPITAL LETTER XAN */
- /*2987*/ 0x2d1f, 1, 0x10bf, /* GEORGIAN CAPITAL LETTER JHAN */
- /*2990*/ 0x2d20, 1, 0x10c0, /* GEORGIAN CAPITAL LETTER HAE */
- /*2993*/ 0x2d21, 1, 0x10c1, /* GEORGIAN CAPITAL LETTER HE */
- /*2996*/ 0x2d22, 1, 0x10c2, /* GEORGIAN CAPITAL LETTER HIE */
- /*2999*/ 0x2d23, 1, 0x10c3, /* GEORGIAN CAPITAL LETTER WE */
- /*3002*/ 0x2d24, 1, 0x10c4, /* GEORGIAN CAPITAL LETTER HAR */
- /*3005*/ 0x2d25, 1, 0x10c5, /* GEORGIAN CAPITAL LETTER HOE */
- /*3008*/ 0x2d27, 1, 0x10c7, /* GEORGIAN CAPITAL LETTER YN */
- /*3011*/ 0x2d2d, 1, 0x10cd, /* GEORGIAN CAPITAL LETTER AEN */
- /*3014*/ 0xa641, 1, 0xa640, /* CYRILLIC CAPITAL LETTER ZEMLYA */
- /*3017*/ 0xa643, 1, 0xa642, /* CYRILLIC CAPITAL LETTER DZELO */
- /*3020*/ 0xa645, 1, 0xa644, /* CYRILLIC CAPITAL LETTER REVERSED .. */
- /*3023*/ 0xa647, 1, 0xa646, /* CYRILLIC CAPITAL LETTER IOTA */
- /*3026*/ 0xa649, 1, 0xa648, /* CYRILLIC CAPITAL LETTER DJERV */
- /*3029*/ 0xa64b, 2, 0x1c88, 0xa64a, /* CYRILLIC SMALL LETTER UNBLENDED UK */
- /*3033*/ 0xa64d, 1, 0xa64c, /* CYRILLIC CAPITAL LETTER BROAD OME.. */
- /*3036*/ 0xa64f, 1, 0xa64e, /* CYRILLIC CAPITAL LETTER NEUTRAL Y.. */
- /*3039*/ 0xa651, 1, 0xa650, /* CYRILLIC CAPITAL LETTER YERU WITH.. */
- /*3042*/ 0xa653, 1, 0xa652, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */
- /*3045*/ 0xa655, 1, 0xa654, /* CYRILLIC CAPITAL LETTER REVERSED .. */
- /*3048*/ 0xa657, 1, 0xa656, /* CYRILLIC CAPITAL LETTER IOTIFIED A */
- /*3051*/ 0xa659, 1, 0xa658, /* CYRILLIC CAPITAL LETTER CLOSED LI.. */
- /*3054*/ 0xa65b, 1, 0xa65a, /* CYRILLIC CAPITAL LETTER BLENDED Y.. */
- /*3057*/ 0xa65d, 1, 0xa65c, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */
- /*3060*/ 0xa65f, 1, 0xa65e, /* CYRILLIC CAPITAL LETTER YN */
- /*3063*/ 0xa661, 1, 0xa660, /* CYRILLIC CAPITAL LETTER REVERSED .. */
- /*3066*/ 0xa663, 1, 0xa662, /* CYRILLIC CAPITAL LETTER SOFT DE */
- /*3069*/ 0xa665, 1, 0xa664, /* CYRILLIC CAPITAL LETTER SOFT EL */
- /*3072*/ 0xa667, 1, 0xa666, /* CYRILLIC CAPITAL LETTER SOFT EM */
- /*3075*/ 0xa669, 1, 0xa668, /* CYRILLIC CAPITAL LETTER MONOCULAR.. */
- /*3078*/ 0xa66b, 1, 0xa66a, /* CYRILLIC CAPITAL LETTER BINOCULAR.. */
- /*3081*/ 0xa66d, 1, 0xa66c, /* CYRILLIC CAPITAL LETTER DOUBLE MO.. */
- /*3084*/ 0xa681, 1, 0xa680, /* CYRILLIC CAPITAL LETTER DWE */
- /*3087*/ 0xa683, 1, 0xa682, /* CYRILLIC CAPITAL LETTER DZWE */
- /*3090*/ 0xa685, 1, 0xa684, /* CYRILLIC CAPITAL LETTER ZHWE */
- /*3093*/ 0xa687, 1, 0xa686, /* CYRILLIC CAPITAL LETTER CCHE */
- /*3096*/ 0xa689, 1, 0xa688, /* CYRILLIC CAPITAL LETTER DZZE */
- /*3099*/ 0xa68b, 1, 0xa68a, /* CYRILLIC CAPITAL LETTER TE WITH M.. */
- /*3102*/ 0xa68d, 1, 0xa68c, /* CYRILLIC CAPITAL LETTER TWE */
- /*3105*/ 0xa68f, 1, 0xa68e, /* CYRILLIC CAPITAL LETTER TSWE */
- /*3108*/ 0xa691, 1, 0xa690, /* CYRILLIC CAPITAL LETTER TSSE */
- /*3111*/ 0xa693, 1, 0xa692, /* CYRILLIC CAPITAL LETTER TCHE */
- /*3114*/ 0xa695, 1, 0xa694, /* CYRILLIC CAPITAL LETTER HWE */
- /*3117*/ 0xa697, 1, 0xa696, /* CYRILLIC CAPITAL LETTER SHWE */
- /*3120*/ 0xa699, 1, 0xa698, /* CYRILLIC CAPITAL LETTER DOUBLE O */
- /*3123*/ 0xa69b, 1, 0xa69a, /* CYRILLIC CAPITAL LETTER CROSSED O */
- /*3126*/ 0xa723, 1, 0xa722, /* LATIN CAPITAL LETTER EGYPTOLOGICA.. */
- /*3129*/ 0xa725, 1, 0xa724, /* LATIN CAPITAL LETTER EGYPTOLOGICA.. */
- /*3132*/ 0xa727, 1, 0xa726, /* LATIN CAPITAL LETTER HENG */
- /*3135*/ 0xa729, 1, 0xa728, /* LATIN CAPITAL LETTER TZ */
- /*3138*/ 0xa72b, 1, 0xa72a, /* LATIN CAPITAL LETTER TRESILLO */
- /*3141*/ 0xa72d, 1, 0xa72c, /* LATIN CAPITAL LETTER CUATRILLO */
- /*3144*/ 0xa72f, 1, 0xa72e, /* LATIN CAPITAL LETTER CUATRILLO WI.. */
- /*3147*/ 0xa733, 1, 0xa732, /* LATIN CAPITAL LETTER AA */
- /*3150*/ 0xa735, 1, 0xa734, /* LATIN CAPITAL LETTER AO */
- /*3153*/ 0xa737, 1, 0xa736, /* LATIN CAPITAL LETTER AU */
- /*3156*/ 0xa739, 1, 0xa738, /* LATIN CAPITAL LETTER AV */
- /*3159*/ 0xa73b, 1, 0xa73a, /* LATIN CAPITAL LETTER AV WITH HORI.. */
- /*3162*/ 0xa73d, 1, 0xa73c, /* LATIN CAPITAL LETTER AY */
- /*3165*/ 0xa73f, 1, 0xa73e, /* LATIN CAPITAL LETTER REVERSED C W.. */
- /*3168*/ 0xa741, 1, 0xa740, /* LATIN CAPITAL LETTER K WITH STROKE */
- /*3171*/ 0xa743, 1, 0xa742, /* LATIN CAPITAL LETTER K WITH DIAGO.. */
- /*3174*/ 0xa745, 1, 0xa744, /* LATIN CAPITAL LETTER K WITH STROK.. */
- /*3177*/ 0xa747, 1, 0xa746, /* LATIN CAPITAL LETTER BROKEN L */
- /*3180*/ 0xa749, 1, 0xa748, /* LATIN CAPITAL LETTER L WITH HIGH .. */
- /*3183*/ 0xa74b, 1, 0xa74a, /* LATIN CAPITAL LETTER O WITH LONG .. */
- /*3186*/ 0xa74d, 1, 0xa74c, /* LATIN CAPITAL LETTER O WITH LOOP */
- /*3189*/ 0xa74f, 1, 0xa74e, /* LATIN CAPITAL LETTER OO */
- /*3192*/ 0xa751, 1, 0xa750, /* LATIN CAPITAL LETTER P WITH STROK.. */
- /*3195*/ 0xa753, 1, 0xa752, /* LATIN CAPITAL LETTER P WITH FLOUR.. */
- /*3198*/ 0xa755, 1, 0xa754, /* LATIN CAPITAL LETTER P WITH SQUIR.. */
- /*3201*/ 0xa757, 1, 0xa756, /* LATIN CAPITAL LETTER Q WITH STROK.. */
- /*3204*/ 0xa759, 1, 0xa758, /* LATIN CAPITAL LETTER Q WITH DIAGO.. */
- /*3207*/ 0xa75b, 1, 0xa75a, /* LATIN CAPITAL LETTER R ROTUNDA */
- /*3210*/ 0xa75d, 1, 0xa75c, /* LATIN CAPITAL LETTER RUM ROTUNDA */
- /*3213*/ 0xa75f, 1, 0xa75e, /* LATIN CAPITAL LETTER V WITH DIAGO.. */
- /*3216*/ 0xa761, 1, 0xa760, /* LATIN CAPITAL LETTER VY */
- /*3219*/ 0xa763, 1, 0xa762, /* LATIN CAPITAL LETTER VISIGOTHIC Z */
- /*3222*/ 0xa765, 1, 0xa764, /* LATIN CAPITAL LETTER THORN WITH S.. */
- /*3225*/ 0xa767, 1, 0xa766, /* LATIN CAPITAL LETTER THORN WITH S.. */
- /*3228*/ 0xa769, 1, 0xa768, /* LATIN CAPITAL LETTER VEND */
- /*3231*/ 0xa76b, 1, 0xa76a, /* LATIN CAPITAL LETTER ET */
- /*3234*/ 0xa76d, 1, 0xa76c, /* LATIN CAPITAL LETTER IS */
- /*3237*/ 0xa76f, 1, 0xa76e, /* LATIN CAPITAL LETTER CON */
- /*3240*/ 0xa77a, 1, 0xa779, /* LATIN CAPITAL LETTER INSULAR D */
- /*3243*/ 0xa77c, 1, 0xa77b, /* LATIN CAPITAL LETTER INSULAR F */
- /*3246*/ 0xa77f, 1, 0xa77e, /* LATIN CAPITAL LETTER TURNED INSUL.. */
- /*3249*/ 0xa781, 1, 0xa780, /* LATIN CAPITAL LETTER TURNED L */
- /*3252*/ 0xa783, 1, 0xa782, /* LATIN CAPITAL LETTER INSULAR R */
- /*3255*/ 0xa785, 1, 0xa784, /* LATIN CAPITAL LETTER INSULAR S */
- /*3258*/ 0xa787, 1, 0xa786, /* LATIN CAPITAL LETTER INSULAR T */
- /*3261*/ 0xa78c, 1, 0xa78b, /* LATIN CAPITAL LETTER SALTILLO */
- /*3264*/ 0xa791, 1, 0xa790, /* LATIN CAPITAL LETTER N WITH DESCE.. */
- /*3267*/ 0xa793, 1, 0xa792, /* LATIN CAPITAL LETTER C WITH BAR */
- /*3270*/ 0xa797, 1, 0xa796, /* LATIN CAPITAL LETTER B WITH FLOUR.. */
- /*3273*/ 0xa799, 1, 0xa798, /* LATIN CAPITAL LETTER F WITH STROKE */
- /*3276*/ 0xa79b, 1, 0xa79a, /* LATIN CAPITAL LETTER VOLAPUK AE */
- /*3279*/ 0xa79d, 1, 0xa79c, /* LATIN CAPITAL LETTER VOLAPUK OE */
- /*3282*/ 0xa79f, 1, 0xa79e, /* LATIN CAPITAL LETTER VOLAPUK UE */
- /*3285*/ 0xa7a1, 1, 0xa7a0, /* LATIN CAPITAL LETTER G WITH OBLIQ.. */
- /*3288*/ 0xa7a3, 1, 0xa7a2, /* LATIN CAPITAL LETTER K WITH OBLIQ.. */
- /*3291*/ 0xa7a5, 1, 0xa7a4, /* LATIN CAPITAL LETTER N WITH OBLIQ.. */
- /*3294*/ 0xa7a7, 1, 0xa7a6, /* LATIN CAPITAL LETTER R WITH OBLIQ.. */
- /*3297*/ 0xa7a9, 1, 0xa7a8, /* LATIN CAPITAL LETTER S WITH OBLIQ.. */
- /*3300*/ 0xa7b5, 1, 0xa7b4, /* LATIN CAPITAL LETTER BETA */
- /*3303*/ 0xa7b7, 1, 0xa7b6, /* LATIN CAPITAL LETTER OMEGA */
- /*3306*/ 0xa7b9, 1, 0xa7b8, /* LATIN CAPITAL LETTER U WITH STROKE */
- /*3309*/ 0xab53, 1, 0xa7b3, /* LATIN CAPITAL LETTER CHI */
- /*3312*/ 0xff41, 1, 0xff21, /* FULLWIDTH LATIN CAPITAL LETTER A */
- /*3315*/ 0xff42, 1, 0xff22, /* FULLWIDTH LATIN CAPITAL LETTER B */
- /*3318*/ 0xff43, 1, 0xff23, /* FULLWIDTH LATIN CAPITAL LETTER C */
- /*3321*/ 0xff44, 1, 0xff24, /* FULLWIDTH LATIN CAPITAL LETTER D */
- /*3324*/ 0xff45, 1, 0xff25, /* FULLWIDTH LATIN CAPITAL LETTER E */
- /*3327*/ 0xff46, 1, 0xff26, /* FULLWIDTH LATIN CAPITAL LETTER F */
- /*3330*/ 0xff47, 1, 0xff27, /* FULLWIDTH LATIN CAPITAL LETTER G */
- /*3333*/ 0xff48, 1, 0xff28, /* FULLWIDTH LATIN CAPITAL LETTER H */
- /*3336*/ 0xff49, 1, 0xff29, /* FULLWIDTH LATIN CAPITAL LETTER I */
- /*3339*/ 0xff4a, 1, 0xff2a, /* FULLWIDTH LATIN CAPITAL LETTER J */
- /*3342*/ 0xff4b, 1, 0xff2b, /* FULLWIDTH LATIN CAPITAL LETTER K */
- /*3345*/ 0xff4c, 1, 0xff2c, /* FULLWIDTH LATIN CAPITAL LETTER L */
- /*3348*/ 0xff4d, 1, 0xff2d, /* FULLWIDTH LATIN CAPITAL LETTER M */
- /*3351*/ 0xff4e, 1, 0xff2e, /* FULLWIDTH LATIN CAPITAL LETTER N */
- /*3354*/ 0xff4f, 1, 0xff2f, /* FULLWIDTH LATIN CAPITAL LETTER O */
- /*3357*/ 0xff50, 1, 0xff30, /* FULLWIDTH LATIN CAPITAL LETTER P */
- /*3360*/ 0xff51, 1, 0xff31, /* FULLWIDTH LATIN CAPITAL LETTER Q */
- /*3363*/ 0xff52, 1, 0xff32, /* FULLWIDTH LATIN CAPITAL LETTER R */
- /*3366*/ 0xff53, 1, 0xff33, /* FULLWIDTH LATIN CAPITAL LETTER S */
- /*3369*/ 0xff54, 1, 0xff34, /* FULLWIDTH LATIN CAPITAL LETTER T */
- /*3372*/ 0xff55, 1, 0xff35, /* FULLWIDTH LATIN CAPITAL LETTER U */
- /*3375*/ 0xff56, 1, 0xff36, /* FULLWIDTH LATIN CAPITAL LETTER V */
- /*3378*/ 0xff57, 1, 0xff37, /* FULLWIDTH LATIN CAPITAL LETTER W */
- /*3381*/ 0xff58, 1, 0xff38, /* FULLWIDTH LATIN CAPITAL LETTER X */
- /*3384*/ 0xff59, 1, 0xff39, /* FULLWIDTH LATIN CAPITAL LETTER Y */
- /*3387*/ 0xff5a, 1, 0xff3a, /* FULLWIDTH LATIN CAPITAL LETTER Z */
- /*3390*/ 0x010428, 1, 0x010400, /* DESERET CAPITAL LETTER LONG I */
- /*3393*/ 0x010429, 1, 0x010401, /* DESERET CAPITAL LETTER LONG E */
- /*3396*/ 0x01042a, 1, 0x010402, /* DESERET CAPITAL LETTER LONG A */
- /*3399*/ 0x01042b, 1, 0x010403, /* DESERET CAPITAL LETTER LONG AH */
- /*3402*/ 0x01042c, 1, 0x010404, /* DESERET CAPITAL LETTER LONG O */
- /*3405*/ 0x01042d, 1, 0x010405, /* DESERET CAPITAL LETTER LONG OO */
- /*3408*/ 0x01042e, 1, 0x010406, /* DESERET CAPITAL LETTER SHORT I */
- /*3411*/ 0x01042f, 1, 0x010407, /* DESERET CAPITAL LETTER SHORT E */
- /*3414*/ 0x010430, 1, 0x010408, /* DESERET CAPITAL LETTER SHORT A */
- /*3417*/ 0x010431, 1, 0x010409, /* DESERET CAPITAL LETTER SHORT AH */
- /*3420*/ 0x010432, 1, 0x01040a, /* DESERET CAPITAL LETTER SHORT O */
- /*3423*/ 0x010433, 1, 0x01040b, /* DESERET CAPITAL LETTER SHORT OO */
- /*3426*/ 0x010434, 1, 0x01040c, /* DESERET CAPITAL LETTER AY */
- /*3429*/ 0x010435, 1, 0x01040d, /* DESERET CAPITAL LETTER OW */
- /*3432*/ 0x010436, 1, 0x01040e, /* DESERET CAPITAL LETTER WU */
- /*3435*/ 0x010437, 1, 0x01040f, /* DESERET CAPITAL LETTER YEE */
- /*3438*/ 0x010438, 1, 0x010410, /* DESERET CAPITAL LETTER H */
- /*3441*/ 0x010439, 1, 0x010411, /* DESERET CAPITAL LETTER PEE */
- /*3444*/ 0x01043a, 1, 0x010412, /* DESERET CAPITAL LETTER BEE */
- /*3447*/ 0x01043b, 1, 0x010413, /* DESERET CAPITAL LETTER TEE */
- /*3450*/ 0x01043c, 1, 0x010414, /* DESERET CAPITAL LETTER DEE */
- /*3453*/ 0x01043d, 1, 0x010415, /* DESERET CAPITAL LETTER CHEE */
- /*3456*/ 0x01043e, 1, 0x010416, /* DESERET CAPITAL LETTER JEE */
- /*3459*/ 0x01043f, 1, 0x010417, /* DESERET CAPITAL LETTER KAY */
- /*3462*/ 0x010440, 1, 0x010418, /* DESERET CAPITAL LETTER GAY */
- /*3465*/ 0x010441, 1, 0x010419, /* DESERET CAPITAL LETTER EF */
- /*3468*/ 0x010442, 1, 0x01041a, /* DESERET CAPITAL LETTER VEE */
- /*3471*/ 0x010443, 1, 0x01041b, /* DESERET CAPITAL LETTER ETH */
- /*3474*/ 0x010444, 1, 0x01041c, /* DESERET CAPITAL LETTER THEE */
- /*3477*/ 0x010445, 1, 0x01041d, /* DESERET CAPITAL LETTER ES */
- /*3480*/ 0x010446, 1, 0x01041e, /* DESERET CAPITAL LETTER ZEE */
- /*3483*/ 0x010447, 1, 0x01041f, /* DESERET CAPITAL LETTER ESH */
- /*3486*/ 0x010448, 1, 0x010420, /* DESERET CAPITAL LETTER ZHEE */
- /*3489*/ 0x010449, 1, 0x010421, /* DESERET CAPITAL LETTER ER */
- /*3492*/ 0x01044a, 1, 0x010422, /* DESERET CAPITAL LETTER EL */
- /*3495*/ 0x01044b, 1, 0x010423, /* DESERET CAPITAL LETTER EM */
- /*3498*/ 0x01044c, 1, 0x010424, /* DESERET CAPITAL LETTER EN */
- /*3501*/ 0x01044d, 1, 0x010425, /* DESERET CAPITAL LETTER ENG */
- /*3504*/ 0x01044e, 1, 0x010426, /* DESERET CAPITAL LETTER OI */
- /*3507*/ 0x01044f, 1, 0x010427, /* DESERET CAPITAL LETTER EW */
- /*3510*/ 0x0104d8, 1, 0x0104b0, /* OSAGE CAPITAL LETTER A */
- /*3513*/ 0x0104d9, 1, 0x0104b1, /* OSAGE CAPITAL LETTER AI */
- /*3516*/ 0x0104da, 1, 0x0104b2, /* OSAGE CAPITAL LETTER AIN */
- /*3519*/ 0x0104db, 1, 0x0104b3, /* OSAGE CAPITAL LETTER AH */
- /*3522*/ 0x0104dc, 1, 0x0104b4, /* OSAGE CAPITAL LETTER BRA */
- /*3525*/ 0x0104dd, 1, 0x0104b5, /* OSAGE CAPITAL LETTER CHA */
- /*3528*/ 0x0104de, 1, 0x0104b6, /* OSAGE CAPITAL LETTER EHCHA */
- /*3531*/ 0x0104df, 1, 0x0104b7, /* OSAGE CAPITAL LETTER E */
- /*3534*/ 0x0104e0, 1, 0x0104b8, /* OSAGE CAPITAL LETTER EIN */
- /*3537*/ 0x0104e1, 1, 0x0104b9, /* OSAGE CAPITAL LETTER HA */
- /*3540*/ 0x0104e2, 1, 0x0104ba, /* OSAGE CAPITAL LETTER HYA */
- /*3543*/ 0x0104e3, 1, 0x0104bb, /* OSAGE CAPITAL LETTER I */
- /*3546*/ 0x0104e4, 1, 0x0104bc, /* OSAGE CAPITAL LETTER KA */
- /*3549*/ 0x0104e5, 1, 0x0104bd, /* OSAGE CAPITAL LETTER EHKA */
- /*3552*/ 0x0104e6, 1, 0x0104be, /* OSAGE CAPITAL LETTER KYA */
- /*3555*/ 0x0104e7, 1, 0x0104bf, /* OSAGE CAPITAL LETTER LA */
- /*3558*/ 0x0104e8, 1, 0x0104c0, /* OSAGE CAPITAL LETTER MA */
- /*3561*/ 0x0104e9, 1, 0x0104c1, /* OSAGE CAPITAL LETTER NA */
- /*3564*/ 0x0104ea, 1, 0x0104c2, /* OSAGE CAPITAL LETTER O */
- /*3567*/ 0x0104eb, 1, 0x0104c3, /* OSAGE CAPITAL LETTER OIN */
- /*3570*/ 0x0104ec, 1, 0x0104c4, /* OSAGE CAPITAL LETTER PA */
- /*3573*/ 0x0104ed, 1, 0x0104c5, /* OSAGE CAPITAL LETTER EHPA */
- /*3576*/ 0x0104ee, 1, 0x0104c6, /* OSAGE CAPITAL LETTER SA */
- /*3579*/ 0x0104ef, 1, 0x0104c7, /* OSAGE CAPITAL LETTER SHA */
- /*3582*/ 0x0104f0, 1, 0x0104c8, /* OSAGE CAPITAL LETTER TA */
- /*3585*/ 0x0104f1, 1, 0x0104c9, /* OSAGE CAPITAL LETTER EHTA */
- /*3588*/ 0x0104f2, 1, 0x0104ca, /* OSAGE CAPITAL LETTER TSA */
- /*3591*/ 0x0104f3, 1, 0x0104cb, /* OSAGE CAPITAL LETTER EHTSA */
- /*3594*/ 0x0104f4, 1, 0x0104cc, /* OSAGE CAPITAL LETTER TSHA */
- /*3597*/ 0x0104f5, 1, 0x0104cd, /* OSAGE CAPITAL LETTER DHA */
- /*3600*/ 0x0104f6, 1, 0x0104ce, /* OSAGE CAPITAL LETTER U */
- /*3603*/ 0x0104f7, 1, 0x0104cf, /* OSAGE CAPITAL LETTER WA */
- /*3606*/ 0x0104f8, 1, 0x0104d0, /* OSAGE CAPITAL LETTER KHA */
- /*3609*/ 0x0104f9, 1, 0x0104d1, /* OSAGE CAPITAL LETTER GHA */
- /*3612*/ 0x0104fa, 1, 0x0104d2, /* OSAGE CAPITAL LETTER ZA */
- /*3615*/ 0x0104fb, 1, 0x0104d3, /* OSAGE CAPITAL LETTER ZHA */
- /*3618*/ 0x010cc0, 1, 0x010c80, /* OLD HUNGARIAN CAPITAL LETTER A */
- /*3621*/ 0x010cc1, 1, 0x010c81, /* OLD HUNGARIAN CAPITAL LETTER AA */
- /*3624*/ 0x010cc2, 1, 0x010c82, /* OLD HUNGARIAN CAPITAL LETTER EB */
- /*3627*/ 0x010cc3, 1, 0x010c83, /* OLD HUNGARIAN CAPITAL LETTER AMB */
- /*3630*/ 0x010cc4, 1, 0x010c84, /* OLD HUNGARIAN CAPITAL LETTER EC */
- /*3633*/ 0x010cc5, 1, 0x010c85, /* OLD HUNGARIAN CAPITAL LETTER ENC */
- /*3636*/ 0x010cc6, 1, 0x010c86, /* OLD HUNGARIAN CAPITAL LETTER ECS */
- /*3639*/ 0x010cc7, 1, 0x010c87, /* OLD HUNGARIAN CAPITAL LETTER ED */
- /*3642*/ 0x010cc8, 1, 0x010c88, /* OLD HUNGARIAN CAPITAL LETTER AND */
- /*3645*/ 0x010cc9, 1, 0x010c89, /* OLD HUNGARIAN CAPITAL LETTER E */
- /*3648*/ 0x010cca, 1, 0x010c8a, /* OLD HUNGARIAN CAPITAL LETTER CLOS.. */
- /*3651*/ 0x010ccb, 1, 0x010c8b, /* OLD HUNGARIAN CAPITAL LETTER EE */
- /*3654*/ 0x010ccc, 1, 0x010c8c, /* OLD HUNGARIAN CAPITAL LETTER EF */
- /*3657*/ 0x010ccd, 1, 0x010c8d, /* OLD HUNGARIAN CAPITAL LETTER EG */
- /*3660*/ 0x010cce, 1, 0x010c8e, /* OLD HUNGARIAN CAPITAL LETTER EGY */
- /*3663*/ 0x010ccf, 1, 0x010c8f, /* OLD HUNGARIAN CAPITAL LETTER EH */
- /*3666*/ 0x010cd0, 1, 0x010c90, /* OLD HUNGARIAN CAPITAL LETTER I */
- /*3669*/ 0x010cd1, 1, 0x010c91, /* OLD HUNGARIAN CAPITAL LETTER II */
- /*3672*/ 0x010cd2, 1, 0x010c92, /* OLD HUNGARIAN CAPITAL LETTER EJ */
- /*3675*/ 0x010cd3, 1, 0x010c93, /* OLD HUNGARIAN CAPITAL LETTER EK */
- /*3678*/ 0x010cd4, 1, 0x010c94, /* OLD HUNGARIAN CAPITAL LETTER AK */
- /*3681*/ 0x010cd5, 1, 0x010c95, /* OLD HUNGARIAN CAPITAL LETTER UNK */
- /*3684*/ 0x010cd6, 1, 0x010c96, /* OLD HUNGARIAN CAPITAL LETTER EL */
- /*3687*/ 0x010cd7, 1, 0x010c97, /* OLD HUNGARIAN CAPITAL LETTER ELY */
- /*3690*/ 0x010cd8, 1, 0x010c98, /* OLD HUNGARIAN CAPITAL LETTER EM */
- /*3693*/ 0x010cd9, 1, 0x010c99, /* OLD HUNGARIAN CAPITAL LETTER EN */
- /*3696*/ 0x010cda, 1, 0x010c9a, /* OLD HUNGARIAN CAPITAL LETTER ENY */
- /*3699*/ 0x010cdb, 1, 0x010c9b, /* OLD HUNGARIAN CAPITAL LETTER O */
- /*3702*/ 0x010cdc, 1, 0x010c9c, /* OLD HUNGARIAN CAPITAL LETTER OO */
- /*3705*/ 0x010cdd, 1, 0x010c9d, /* OLD HUNGARIAN CAPITAL LETTER NIKO.. */
- /*3708*/ 0x010cde, 1, 0x010c9e, /* OLD HUNGARIAN CAPITAL LETTER RUDI.. */
- /*3711*/ 0x010cdf, 1, 0x010c9f, /* OLD HUNGARIAN CAPITAL LETTER OEE */
- /*3714*/ 0x010ce0, 1, 0x010ca0, /* OLD HUNGARIAN CAPITAL LETTER EP */
- /*3717*/ 0x010ce1, 1, 0x010ca1, /* OLD HUNGARIAN CAPITAL LETTER EMP */
- /*3720*/ 0x010ce2, 1, 0x010ca2, /* OLD HUNGARIAN CAPITAL LETTER ER */
- /*3723*/ 0x010ce3, 1, 0x010ca3, /* OLD HUNGARIAN CAPITAL LETTER SHOR.. */
- /*3726*/ 0x010ce4, 1, 0x010ca4, /* OLD HUNGARIAN CAPITAL LETTER ES */
- /*3729*/ 0x010ce5, 1, 0x010ca5, /* OLD HUNGARIAN CAPITAL LETTER ESZ */
- /*3732*/ 0x010ce6, 1, 0x010ca6, /* OLD HUNGARIAN CAPITAL LETTER ET */
- /*3735*/ 0x010ce7, 1, 0x010ca7, /* OLD HUNGARIAN CAPITAL LETTER ENT */
- /*3738*/ 0x010ce8, 1, 0x010ca8, /* OLD HUNGARIAN CAPITAL LETTER ETY */
- /*3741*/ 0x010ce9, 1, 0x010ca9, /* OLD HUNGARIAN CAPITAL LETTER ECH */
- /*3744*/ 0x010cea, 1, 0x010caa, /* OLD HUNGARIAN CAPITAL LETTER U */
- /*3747*/ 0x010ceb, 1, 0x010cab, /* OLD HUNGARIAN CAPITAL LETTER UU */
- /*3750*/ 0x010cec, 1, 0x010cac, /* OLD HUNGARIAN CAPITAL LETTER NIKO.. */
- /*3753*/ 0x010ced, 1, 0x010cad, /* OLD HUNGARIAN CAPITAL LETTER RUDI.. */
- /*3756*/ 0x010cee, 1, 0x010cae, /* OLD HUNGARIAN CAPITAL LETTER EV */
- /*3759*/ 0x010cef, 1, 0x010caf, /* OLD HUNGARIAN CAPITAL LETTER EZ */
- /*3762*/ 0x010cf0, 1, 0x010cb0, /* OLD HUNGARIAN CAPITAL LETTER EZS */
- /*3765*/ 0x010cf1, 1, 0x010cb1, /* OLD HUNGARIAN CAPITAL LETTER ENT-.. */
- /*3768*/ 0x010cf2, 1, 0x010cb2, /* OLD HUNGARIAN CAPITAL LETTER US */
- /*3771*/ 0x0118c0, 1, 0x0118a0, /* WARANG CITI CAPITAL LETTER NGAA */
- /*3774*/ 0x0118c1, 1, 0x0118a1, /* WARANG CITI CAPITAL LETTER A */
- /*3777*/ 0x0118c2, 1, 0x0118a2, /* WARANG CITI CAPITAL LETTER WI */
- /*3780*/ 0x0118c3, 1, 0x0118a3, /* WARANG CITI CAPITAL LETTER YU */
- /*3783*/ 0x0118c4, 1, 0x0118a4, /* WARANG CITI CAPITAL LETTER YA */
- /*3786*/ 0x0118c5, 1, 0x0118a5, /* WARANG CITI CAPITAL LETTER YO */
- /*3789*/ 0x0118c6, 1, 0x0118a6, /* WARANG CITI CAPITAL LETTER II */
- /*3792*/ 0x0118c7, 1, 0x0118a7, /* WARANG CITI CAPITAL LETTER UU */
- /*3795*/ 0x0118c8, 1, 0x0118a8, /* WARANG CITI CAPITAL LETTER E */
- /*3798*/ 0x0118c9, 1, 0x0118a9, /* WARANG CITI CAPITAL LETTER O */
- /*3801*/ 0x0118ca, 1, 0x0118aa, /* WARANG CITI CAPITAL LETTER ANG */
- /*3804*/ 0x0118cb, 1, 0x0118ab, /* WARANG CITI CAPITAL LETTER GA */
- /*3807*/ 0x0118cc, 1, 0x0118ac, /* WARANG CITI CAPITAL LETTER KO */
- /*3810*/ 0x0118cd, 1, 0x0118ad, /* WARANG CITI CAPITAL LETTER ENY */
- /*3813*/ 0x0118ce, 1, 0x0118ae, /* WARANG CITI CAPITAL LETTER YUJ */
- /*3816*/ 0x0118cf, 1, 0x0118af, /* WARANG CITI CAPITAL LETTER UC */
- /*3819*/ 0x0118d0, 1, 0x0118b0, /* WARANG CITI CAPITAL LETTER ENN */
- /*3822*/ 0x0118d1, 1, 0x0118b1, /* WARANG CITI CAPITAL LETTER ODD */
- /*3825*/ 0x0118d2, 1, 0x0118b2, /* WARANG CITI CAPITAL LETTER TTE */
- /*3828*/ 0x0118d3, 1, 0x0118b3, /* WARANG CITI CAPITAL LETTER NUNG */
- /*3831*/ 0x0118d4, 1, 0x0118b4, /* WARANG CITI CAPITAL LETTER DA */
- /*3834*/ 0x0118d5, 1, 0x0118b5, /* WARANG CITI CAPITAL LETTER AT */
- /*3837*/ 0x0118d6, 1, 0x0118b6, /* WARANG CITI CAPITAL LETTER AM */
- /*3840*/ 0x0118d7, 1, 0x0118b7, /* WARANG CITI CAPITAL LETTER BU */
- /*3843*/ 0x0118d8, 1, 0x0118b8, /* WARANG CITI CAPITAL LETTER PU */
- /*3846*/ 0x0118d9, 1, 0x0118b9, /* WARANG CITI CAPITAL LETTER HIYO */
- /*3849*/ 0x0118da, 1, 0x0118ba, /* WARANG CITI CAPITAL LETTER HOLO */
- /*3852*/ 0x0118db, 1, 0x0118bb, /* WARANG CITI CAPITAL LETTER HORR */
- /*3855*/ 0x0118dc, 1, 0x0118bc, /* WARANG CITI CAPITAL LETTER HAR */
- /*3858*/ 0x0118dd, 1, 0x0118bd, /* WARANG CITI CAPITAL LETTER SSUU */
- /*3861*/ 0x0118de, 1, 0x0118be, /* WARANG CITI CAPITAL LETTER SII */
- /*3864*/ 0x0118df, 1, 0x0118bf, /* WARANG CITI CAPITAL LETTER VIYO */
- /*3867*/ 0x016e60, 1, 0x016e40, /* MEDEFAIDRIN CAPITAL LETTER M */
- /*3870*/ 0x016e61, 1, 0x016e41, /* MEDEFAIDRIN CAPITAL LETTER S */
- /*3873*/ 0x016e62, 1, 0x016e42, /* MEDEFAIDRIN CAPITAL LETTER V */
- /*3876*/ 0x016e63, 1, 0x016e43, /* MEDEFAIDRIN CAPITAL LETTER W */
- /*3879*/ 0x016e64, 1, 0x016e44, /* MEDEFAIDRIN CAPITAL LETTER ATIU */
- /*3882*/ 0x016e65, 1, 0x016e45, /* MEDEFAIDRIN CAPITAL LETTER Z */
- /*3885*/ 0x016e66, 1, 0x016e46, /* MEDEFAIDRIN CAPITAL LETTER KP */
- /*3888*/ 0x016e67, 1, 0x016e47, /* MEDEFAIDRIN CAPITAL LETTER P */
- /*3891*/ 0x016e68, 1, 0x016e48, /* MEDEFAIDRIN CAPITAL LETTER T */
- /*3894*/ 0x016e69, 1, 0x016e49, /* MEDEFAIDRIN CAPITAL LETTER G */
- /*3897*/ 0x016e6a, 1, 0x016e4a, /* MEDEFAIDRIN CAPITAL LETTER F */
- /*3900*/ 0x016e6b, 1, 0x016e4b, /* MEDEFAIDRIN CAPITAL LETTER I */
- /*3903*/ 0x016e6c, 1, 0x016e4c, /* MEDEFAIDRIN CAPITAL LETTER K */
- /*3906*/ 0x016e6d, 1, 0x016e4d, /* MEDEFAIDRIN CAPITAL LETTER A */
- /*3909*/ 0x016e6e, 1, 0x016e4e, /* MEDEFAIDRIN CAPITAL LETTER J */
- /*3912*/ 0x016e6f, 1, 0x016e4f, /* MEDEFAIDRIN CAPITAL LETTER E */
- /*3915*/ 0x016e70, 1, 0x016e50, /* MEDEFAIDRIN CAPITAL LETTER B */
- /*3918*/ 0x016e71, 1, 0x016e51, /* MEDEFAIDRIN CAPITAL LETTER C */
- /*3921*/ 0x016e72, 1, 0x016e52, /* MEDEFAIDRIN CAPITAL LETTER U */
- /*3924*/ 0x016e73, 1, 0x016e53, /* MEDEFAIDRIN CAPITAL LETTER YU */
- /*3927*/ 0x016e74, 1, 0x016e54, /* MEDEFAIDRIN CAPITAL LETTER L */
- /*3930*/ 0x016e75, 1, 0x016e55, /* MEDEFAIDRIN CAPITAL LETTER Q */
- /*3933*/ 0x016e76, 1, 0x016e56, /* MEDEFAIDRIN CAPITAL LETTER HP */
- /*3936*/ 0x016e77, 1, 0x016e57, /* MEDEFAIDRIN CAPITAL LETTER NY */
- /*3939*/ 0x016e78, 1, 0x016e58, /* MEDEFAIDRIN CAPITAL LETTER X */
- /*3942*/ 0x016e79, 1, 0x016e59, /* MEDEFAIDRIN CAPITAL LETTER D */
- /*3945*/ 0x016e7a, 1, 0x016e5a, /* MEDEFAIDRIN CAPITAL LETTER OE */
- /*3948*/ 0x016e7b, 1, 0x016e5b, /* MEDEFAIDRIN CAPITAL LETTER N */
- /*3951*/ 0x016e7c, 1, 0x016e5c, /* MEDEFAIDRIN CAPITAL LETTER R */
- /*3954*/ 0x016e7d, 1, 0x016e5d, /* MEDEFAIDRIN CAPITAL LETTER O */
- /*3957*/ 0x016e7e, 1, 0x016e5e, /* MEDEFAIDRIN CAPITAL LETTER AI */
- /*3960*/ 0x016e7f, 1, 0x016e5f, /* MEDEFAIDRIN CAPITAL LETTER Y */
- /*3963*/ 0x01e922, 1, 0x01e900, /* ADLAM CAPITAL LETTER ALIF */
- /*3966*/ 0x01e923, 1, 0x01e901, /* ADLAM CAPITAL LETTER DAALI */
- /*3969*/ 0x01e924, 1, 0x01e902, /* ADLAM CAPITAL LETTER LAAM */
- /*3972*/ 0x01e925, 1, 0x01e903, /* ADLAM CAPITAL LETTER MIIM */
- /*3975*/ 0x01e926, 1, 0x01e904, /* ADLAM CAPITAL LETTER BA */
- /*3978*/ 0x01e927, 1, 0x01e905, /* ADLAM CAPITAL LETTER SINNYIIYHE */
- /*3981*/ 0x01e928, 1, 0x01e906, /* ADLAM CAPITAL LETTER PE */
- /*3984*/ 0x01e929, 1, 0x01e907, /* ADLAM CAPITAL LETTER BHE */
- /*3987*/ 0x01e92a, 1, 0x01e908, /* ADLAM CAPITAL LETTER RA */
- /*3990*/ 0x01e92b, 1, 0x01e909, /* ADLAM CAPITAL LETTER E */
- /*3993*/ 0x01e92c, 1, 0x01e90a, /* ADLAM CAPITAL LETTER FA */
- /*3996*/ 0x01e92d, 1, 0x01e90b, /* ADLAM CAPITAL LETTER I */
- /*3999*/ 0x01e92e, 1, 0x01e90c, /* ADLAM CAPITAL LETTER O */
- /*4002*/ 0x01e92f, 1, 0x01e90d, /* ADLAM CAPITAL LETTER DHA */
- /*4005*/ 0x01e930, 1, 0x01e90e, /* ADLAM CAPITAL LETTER YHE */
- /*4008*/ 0x01e931, 1, 0x01e90f, /* ADLAM CAPITAL LETTER WAW */
- /*4011*/ 0x01e932, 1, 0x01e910, /* ADLAM CAPITAL LETTER NUN */
- /*4014*/ 0x01e933, 1, 0x01e911, /* ADLAM CAPITAL LETTER KAF */
- /*4017*/ 0x01e934, 1, 0x01e912, /* ADLAM CAPITAL LETTER YA */
- /*4020*/ 0x01e935, 1, 0x01e913, /* ADLAM CAPITAL LETTER U */
- /*4023*/ 0x01e936, 1, 0x01e914, /* ADLAM CAPITAL LETTER JIIM */
- /*4026*/ 0x01e937, 1, 0x01e915, /* ADLAM CAPITAL LETTER CHI */
- /*4029*/ 0x01e938, 1, 0x01e916, /* ADLAM CAPITAL LETTER HA */
- /*4032*/ 0x01e939, 1, 0x01e917, /* ADLAM CAPITAL LETTER QAAF */
- /*4035*/ 0x01e93a, 1, 0x01e918, /* ADLAM CAPITAL LETTER GA */
- /*4038*/ 0x01e93b, 1, 0x01e919, /* ADLAM CAPITAL LETTER NYA */
- /*4041*/ 0x01e93c, 1, 0x01e91a, /* ADLAM CAPITAL LETTER TU */
- /*4044*/ 0x01e93d, 1, 0x01e91b, /* ADLAM CAPITAL LETTER NHA */
- /*4047*/ 0x01e93e, 1, 0x01e91c, /* ADLAM CAPITAL LETTER VA */
- /*4050*/ 0x01e93f, 1, 0x01e91d, /* ADLAM CAPITAL LETTER KHA */
- /*4053*/ 0x01e940, 1, 0x01e91e, /* ADLAM CAPITAL LETTER GBE */
- /*4056*/ 0x01e941, 1, 0x01e91f, /* ADLAM CAPITAL LETTER ZAL */
- /*4059*/ 0x01e942, 1, 0x01e920, /* ADLAM CAPITAL LETTER KPO */
- /*4062*/ 0x01e943, 1, 0x01e921, /* ADLAM CAPITAL LETTER SHA */
-#define FOLDS1_NORMAL_END_INDEX 4065
+ /* 682*/ 0x0282, 1, 0xa7c5, /* LATIN CAPITAL LETTER S WITH HOOK */
+ /* 685*/ 0x0283, 1, 0x01a9, /* LATIN CAPITAL LETTER ESH */
+ /* 688*/ 0x0287, 1, 0xa7b1, /* LATIN CAPITAL LETTER TURNED T */
+ /* 691*/ 0x0288, 1, 0x01ae, /* LATIN CAPITAL LETTER T WITH RETRO.. */
+ /* 694*/ 0x0289, 1, 0x0244, /* LATIN CAPITAL LETTER U BAR */
+ /* 697*/ 0x028a, 1, 0x01b1, /* LATIN CAPITAL LETTER UPSILON */
+ /* 700*/ 0x028b, 1, 0x01b2, /* LATIN CAPITAL LETTER V WITH HOOK */
+ /* 703*/ 0x028c, 1, 0x0245, /* LATIN CAPITAL LETTER TURNED V */
+ /* 706*/ 0x0292, 1, 0x01b7, /* LATIN CAPITAL LETTER EZH */
+ /* 709*/ 0x029d, 1, 0xa7b2, /* LATIN CAPITAL LETTER J WITH CROSS.. */
+ /* 712*/ 0x029e, 1, 0xa7b0, /* LATIN CAPITAL LETTER TURNED K */
+ /* 715*/ 0x0371, 1, 0x0370, /* GREEK CAPITAL LETTER HETA */
+ /* 718*/ 0x0373, 1, 0x0372, /* GREEK CAPITAL LETTER ARCHAIC SAMPI */
+ /* 721*/ 0x0377, 1, 0x0376, /* GREEK CAPITAL LETTER PAMPHYLIAN D.. */
+ /* 724*/ 0x037b, 1, 0x03fd, /* GREEK CAPITAL REVERSED LUNATE SIG.. */
+ /* 727*/ 0x037c, 1, 0x03fe, /* GREEK CAPITAL DOTTED LUNATE SIGMA.. */
+ /* 730*/ 0x037d, 1, 0x03ff, /* GREEK CAPITAL REVERSED DOTTED LUN.. */
+ /* 733*/ 0x03ac, 1, 0x0386, /* GREEK CAPITAL LETTER ALPHA WITH T.. */
+ /* 736*/ 0x03ad, 1, 0x0388, /* GREEK CAPITAL LETTER EPSILON WITH.. */
+ /* 739*/ 0x03ae, 1, 0x0389, /* GREEK CAPITAL LETTER ETA WITH TON.. */
+ /* 742*/ 0x03af, 1, 0x038a, /* GREEK CAPITAL LETTER IOTA WITH TO.. */
+ /* 745*/ 0x03b1, 1, 0x0391, /* GREEK CAPITAL LETTER ALPHA */
+ /* 748*/ 0x03b2, 2, 0x0392, 0x03d0, /* GREEK CAPITAL LETTER BETA */
+ /* 752*/ 0x03b3, 1, 0x0393, /* GREEK CAPITAL LETTER GAMMA */
+ /* 755*/ 0x03b4, 1, 0x0394, /* GREEK CAPITAL LETTER DELTA */
+ /* 758*/ 0x03b5, 2, 0x0395, 0x03f5, /* GREEK CAPITAL LETTER EPSILON */
+ /* 762*/ 0x03b6, 1, 0x0396, /* GREEK CAPITAL LETTER ZETA */
+ /* 765*/ 0x03b7, 1, 0x0397, /* GREEK CAPITAL LETTER ETA */
+ /* 768*/ 0x03b8, 3, 0x0398, 0x03d1, 0x03f4, /* GREEK CAPITAL LETTER THETA */
+ /* 773*/ 0x03b9, 3, 0x0345, 0x0399, 0x1fbe, /* COMBINING GREEK YPOGEGRAMMENI */
+ /* 778*/ 0x03ba, 2, 0x039a, 0x03f0, /* GREEK CAPITAL LETTER KAPPA */
+ /* 782*/ 0x03bb, 1, 0x039b, /* GREEK CAPITAL LETTER LAMDA */
+ /* 785*/ 0x03bc, 2, 0x00b5, 0x039c, /* MICRO SIGN */
+ /* 789*/ 0x03bd, 1, 0x039d, /* GREEK CAPITAL LETTER NU */
+ /* 792*/ 0x03be, 1, 0x039e, /* GREEK CAPITAL LETTER XI */
+ /* 795*/ 0x03bf, 1, 0x039f, /* GREEK CAPITAL LETTER OMICRON */
+ /* 798*/ 0x03c0, 2, 0x03a0, 0x03d6, /* GREEK CAPITAL LETTER PI */
+ /* 802*/ 0x03c1, 2, 0x03a1, 0x03f1, /* GREEK CAPITAL LETTER RHO */
+ /* 806*/ 0x03c3, 2, 0x03a3, 0x03c2, /* GREEK CAPITAL LETTER SIGMA */
+ /* 810*/ 0x03c4, 1, 0x03a4, /* GREEK CAPITAL LETTER TAU */
+ /* 813*/ 0x03c5, 1, 0x03a5, /* GREEK CAPITAL LETTER UPSILON */
+ /* 816*/ 0x03c6, 2, 0x03a6, 0x03d5, /* GREEK CAPITAL LETTER PHI */
+ /* 820*/ 0x03c7, 1, 0x03a7, /* GREEK CAPITAL LETTER CHI */
+ /* 823*/ 0x03c8, 1, 0x03a8, /* GREEK CAPITAL LETTER PSI */
+ /* 826*/ 0x03c9, 2, 0x03a9, 0x2126, /* GREEK CAPITAL LETTER OMEGA */
+ /* 830*/ 0x03ca, 1, 0x03aa, /* GREEK CAPITAL LETTER IOTA WITH DI.. */
+ /* 833*/ 0x03cb, 1, 0x03ab, /* GREEK CAPITAL LETTER UPSILON WITH.. */
+ /* 836*/ 0x03cc, 1, 0x038c, /* GREEK CAPITAL LETTER OMICRON WITH.. */
+ /* 839*/ 0x03cd, 1, 0x038e, /* GREEK CAPITAL LETTER UPSILON WITH.. */
+ /* 842*/ 0x03ce, 1, 0x038f, /* GREEK CAPITAL LETTER OMEGA WITH T.. */
+ /* 845*/ 0x03d7, 1, 0x03cf, /* GREEK CAPITAL KAI SYMBOL */
+ /* 848*/ 0x03d9, 1, 0x03d8, /* GREEK LETTER ARCHAIC KOPPA */
+ /* 851*/ 0x03db, 1, 0x03da, /* GREEK LETTER STIGMA */
+ /* 854*/ 0x03dd, 1, 0x03dc, /* GREEK LETTER DIGAMMA */
+ /* 857*/ 0x03df, 1, 0x03de, /* GREEK LETTER KOPPA */
+ /* 860*/ 0x03e1, 1, 0x03e0, /* GREEK LETTER SAMPI */
+ /* 863*/ 0x03e3, 1, 0x03e2, /* COPTIC CAPITAL LETTER SHEI */
+ /* 866*/ 0x03e5, 1, 0x03e4, /* COPTIC CAPITAL LETTER FEI */
+ /* 869*/ 0x03e7, 1, 0x03e6, /* COPTIC CAPITAL LETTER KHEI */
+ /* 872*/ 0x03e9, 1, 0x03e8, /* COPTIC CAPITAL LETTER HORI */
+ /* 875*/ 0x03eb, 1, 0x03ea, /* COPTIC CAPITAL LETTER GANGIA */
+ /* 878*/ 0x03ed, 1, 0x03ec, /* COPTIC CAPITAL LETTER SHIMA */
+ /* 881*/ 0x03ef, 1, 0x03ee, /* COPTIC CAPITAL LETTER DEI */
+ /* 884*/ 0x03f2, 1, 0x03f9, /* GREEK CAPITAL LUNATE SIGMA SYMBOL */
+ /* 887*/ 0x03f3, 1, 0x037f, /* GREEK CAPITAL LETTER YOT */
+ /* 890*/ 0x03f8, 1, 0x03f7, /* GREEK CAPITAL LETTER SHO */
+ /* 893*/ 0x03fb, 1, 0x03fa, /* GREEK CAPITAL LETTER SAN */
+ /* 896*/ 0x0430, 1, 0x0410, /* CYRILLIC CAPITAL LETTER A */
+ /* 899*/ 0x0431, 1, 0x0411, /* CYRILLIC CAPITAL LETTER BE */
+ /* 902*/ 0x0432, 2, 0x0412, 0x1c80, /* CYRILLIC CAPITAL LETTER VE */
+ /* 906*/ 0x0433, 1, 0x0413, /* CYRILLIC CAPITAL LETTER GHE */
+ /* 909*/ 0x0434, 2, 0x0414, 0x1c81, /* CYRILLIC CAPITAL LETTER DE */
+ /* 913*/ 0x0435, 1, 0x0415, /* CYRILLIC CAPITAL LETTER IE */
+ /* 916*/ 0x0436, 1, 0x0416, /* CYRILLIC CAPITAL LETTER ZHE */
+ /* 919*/ 0x0437, 1, 0x0417, /* CYRILLIC CAPITAL LETTER ZE */
+ /* 922*/ 0x0438, 1, 0x0418, /* CYRILLIC CAPITAL LETTER I */
+ /* 925*/ 0x0439, 1, 0x0419, /* CYRILLIC CAPITAL LETTER SHORT I */
+ /* 928*/ 0x043a, 1, 0x041a, /* CYRILLIC CAPITAL LETTER KA */
+ /* 931*/ 0x043b, 1, 0x041b, /* CYRILLIC CAPITAL LETTER EL */
+ /* 934*/ 0x043c, 1, 0x041c, /* CYRILLIC CAPITAL LETTER EM */
+ /* 937*/ 0x043d, 1, 0x041d, /* CYRILLIC CAPITAL LETTER EN */
+ /* 940*/ 0x043e, 2, 0x041e, 0x1c82, /* CYRILLIC CAPITAL LETTER O */
+ /* 944*/ 0x043f, 1, 0x041f, /* CYRILLIC CAPITAL LETTER PE */
+ /* 947*/ 0x0440, 1, 0x0420, /* CYRILLIC CAPITAL LETTER ER */
+ /* 950*/ 0x0441, 2, 0x0421, 0x1c83, /* CYRILLIC CAPITAL LETTER ES */
+ /* 954*/ 0x0442, 3, 0x0422, 0x1c84, 0x1c85, /* CYRILLIC CAPITAL LETTER TE */
+ /* 959*/ 0x0443, 1, 0x0423, /* CYRILLIC CAPITAL LETTER U */
+ /* 962*/ 0x0444, 1, 0x0424, /* CYRILLIC CAPITAL LETTER EF */
+ /* 965*/ 0x0445, 1, 0x0425, /* CYRILLIC CAPITAL LETTER HA */
+ /* 968*/ 0x0446, 1, 0x0426, /* CYRILLIC CAPITAL LETTER TSE */
+ /* 971*/ 0x0447, 1, 0x0427, /* CYRILLIC CAPITAL LETTER CHE */
+ /* 974*/ 0x0448, 1, 0x0428, /* CYRILLIC CAPITAL LETTER SHA */
+ /* 977*/ 0x0449, 1, 0x0429, /* CYRILLIC CAPITAL LETTER SHCHA */
+ /* 980*/ 0x044a, 2, 0x042a, 0x1c86, /* CYRILLIC CAPITAL LETTER HARD SIGN */
+ /* 984*/ 0x044b, 1, 0x042b, /* CYRILLIC CAPITAL LETTER YERU */
+ /* 987*/ 0x044c, 1, 0x042c, /* CYRILLIC CAPITAL LETTER SOFT SIGN */
+ /* 990*/ 0x044d, 1, 0x042d, /* CYRILLIC CAPITAL LETTER E */
+ /* 993*/ 0x044e, 1, 0x042e, /* CYRILLIC CAPITAL LETTER YU */
+ /* 996*/ 0x044f, 1, 0x042f, /* CYRILLIC CAPITAL LETTER YA */
+ /* 999*/ 0x0450, 1, 0x0400, /* CYRILLIC CAPITAL LETTER IE WITH G.. */
+ /*1002*/ 0x0451, 1, 0x0401, /* CYRILLIC CAPITAL LETTER IO */
+ /*1005*/ 0x0452, 1, 0x0402, /* CYRILLIC CAPITAL LETTER DJE */
+ /*1008*/ 0x0453, 1, 0x0403, /* CYRILLIC CAPITAL LETTER GJE */
+ /*1011*/ 0x0454, 1, 0x0404, /* CYRILLIC CAPITAL LETTER UKRAINIAN.. */
+ /*1014*/ 0x0455, 1, 0x0405, /* CYRILLIC CAPITAL LETTER DZE */
+ /*1017*/ 0x0456, 1, 0x0406, /* CYRILLIC CAPITAL LETTER BYELORUSS.. */
+ /*1020*/ 0x0457, 1, 0x0407, /* CYRILLIC CAPITAL LETTER YI */
+ /*1023*/ 0x0458, 1, 0x0408, /* CYRILLIC CAPITAL LETTER JE */
+ /*1026*/ 0x0459, 1, 0x0409, /* CYRILLIC CAPITAL LETTER LJE */
+ /*1029*/ 0x045a, 1, 0x040a, /* CYRILLIC CAPITAL LETTER NJE */
+ /*1032*/ 0x045b, 1, 0x040b, /* CYRILLIC CAPITAL LETTER TSHE */
+ /*1035*/ 0x045c, 1, 0x040c, /* CYRILLIC CAPITAL LETTER KJE */
+ /*1038*/ 0x045d, 1, 0x040d, /* CYRILLIC CAPITAL LETTER I WITH GR.. */
+ /*1041*/ 0x045e, 1, 0x040e, /* CYRILLIC CAPITAL LETTER SHORT U */
+ /*1044*/ 0x045f, 1, 0x040f, /* CYRILLIC CAPITAL LETTER DZHE */
+ /*1047*/ 0x0461, 1, 0x0460, /* CYRILLIC CAPITAL LETTER OMEGA */
+ /*1050*/ 0x0463, 2, 0x0462, 0x1c87, /* CYRILLIC CAPITAL LETTER YAT */
+ /*1054*/ 0x0465, 1, 0x0464, /* CYRILLIC CAPITAL LETTER IOTIFIED E */
+ /*1057*/ 0x0467, 1, 0x0466, /* CYRILLIC CAPITAL LETTER LITTLE YUS */
+ /*1060*/ 0x0469, 1, 0x0468, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */
+ /*1063*/ 0x046b, 1, 0x046a, /* CYRILLIC CAPITAL LETTER BIG YUS */
+ /*1066*/ 0x046d, 1, 0x046c, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */
+ /*1069*/ 0x046f, 1, 0x046e, /* CYRILLIC CAPITAL LETTER KSI */
+ /*1072*/ 0x0471, 1, 0x0470, /* CYRILLIC CAPITAL LETTER PSI */
+ /*1075*/ 0x0473, 1, 0x0472, /* CYRILLIC CAPITAL LETTER FITA */
+ /*1078*/ 0x0475, 1, 0x0474, /* CYRILLIC CAPITAL LETTER IZHITSA */
+ /*1081*/ 0x0477, 1, 0x0476, /* CYRILLIC CAPITAL LETTER IZHITSA W.. */
+ /*1084*/ 0x0479, 1, 0x0478, /* CYRILLIC CAPITAL LETTER UK */
+ /*1087*/ 0x047b, 1, 0x047a, /* CYRILLIC CAPITAL LETTER ROUND OME.. */
+ /*1090*/ 0x047d, 1, 0x047c, /* CYRILLIC CAPITAL LETTER OMEGA WIT.. */
+ /*1093*/ 0x047f, 1, 0x047e, /* CYRILLIC CAPITAL LETTER OT */
+ /*1096*/ 0x0481, 1, 0x0480, /* CYRILLIC CAPITAL LETTER KOPPA */
+ /*1099*/ 0x048b, 1, 0x048a, /* CYRILLIC CAPITAL LETTER SHORT I W.. */
+ /*1102*/ 0x048d, 1, 0x048c, /* CYRILLIC CAPITAL LETTER SEMISOFT .. */
+ /*1105*/ 0x048f, 1, 0x048e, /* CYRILLIC CAPITAL LETTER ER WITH T.. */
+ /*1108*/ 0x0491, 1, 0x0490, /* CYRILLIC CAPITAL LETTER GHE WITH .. */
+ /*1111*/ 0x0493, 1, 0x0492, /* CYRILLIC CAPITAL LETTER GHE WITH .. */
+ /*1114*/ 0x0495, 1, 0x0494, /* CYRILLIC CAPITAL LETTER GHE WITH .. */
+ /*1117*/ 0x0497, 1, 0x0496, /* CYRILLIC CAPITAL LETTER ZHE WITH .. */
+ /*1120*/ 0x0499, 1, 0x0498, /* CYRILLIC CAPITAL LETTER ZE WITH D.. */
+ /*1123*/ 0x049b, 1, 0x049a, /* CYRILLIC CAPITAL LETTER KA WITH D.. */
+ /*1126*/ 0x049d, 1, 0x049c, /* CYRILLIC CAPITAL LETTER KA WITH V.. */
+ /*1129*/ 0x049f, 1, 0x049e, /* CYRILLIC CAPITAL LETTER KA WITH S.. */
+ /*1132*/ 0x04a1, 1, 0x04a0, /* CYRILLIC CAPITAL LETTER BASHKIR KA */
+ /*1135*/ 0x04a3, 1, 0x04a2, /* CYRILLIC CAPITAL LETTER EN WITH D.. */
+ /*1138*/ 0x04a5, 1, 0x04a4, /* CYRILLIC CAPITAL LIGATURE EN GHE */
+ /*1141*/ 0x04a7, 1, 0x04a6, /* CYRILLIC CAPITAL LETTER PE WITH M.. */
+ /*1144*/ 0x04a9, 1, 0x04a8, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */
+ /*1147*/ 0x04ab, 1, 0x04aa, /* CYRILLIC CAPITAL LETTER ES WITH D.. */
+ /*1150*/ 0x04ad, 1, 0x04ac, /* CYRILLIC CAPITAL LETTER TE WITH D.. */
+ /*1153*/ 0x04af, 1, 0x04ae, /* CYRILLIC CAPITAL LETTER STRAIGHT U */
+ /*1156*/ 0x04b1, 1, 0x04b0, /* CYRILLIC CAPITAL LETTER STRAIGHT .. */
+ /*1159*/ 0x04b3, 1, 0x04b2, /* CYRILLIC CAPITAL LETTER HA WITH D.. */
+ /*1162*/ 0x04b5, 1, 0x04b4, /* CYRILLIC CAPITAL LIGATURE TE TSE */
+ /*1165*/ 0x04b7, 1, 0x04b6, /* CYRILLIC CAPITAL LETTER CHE WITH .. */
+ /*1168*/ 0x04b9, 1, 0x04b8, /* CYRILLIC CAPITAL LETTER CHE WITH .. */
+ /*1171*/ 0x04bb, 1, 0x04ba, /* CYRILLIC CAPITAL LETTER SHHA */
+ /*1174*/ 0x04bd, 1, 0x04bc, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */
+ /*1177*/ 0x04bf, 1, 0x04be, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */
+ /*1180*/ 0x04c2, 1, 0x04c1, /* CYRILLIC CAPITAL LETTER ZHE WITH .. */
+ /*1183*/ 0x04c4, 1, 0x04c3, /* CYRILLIC CAPITAL LETTER KA WITH H.. */
+ /*1186*/ 0x04c6, 1, 0x04c5, /* CYRILLIC CAPITAL LETTER EL WITH T.. */
+ /*1189*/ 0x04c8, 1, 0x04c7, /* CYRILLIC CAPITAL LETTER EN WITH H.. */
+ /*1192*/ 0x04ca, 1, 0x04c9, /* CYRILLIC CAPITAL LETTER EN WITH T.. */
+ /*1195*/ 0x04cc, 1, 0x04cb, /* CYRILLIC CAPITAL LETTER KHAKASSIA.. */
+ /*1198*/ 0x04ce, 1, 0x04cd, /* CYRILLIC CAPITAL LETTER EM WITH T.. */
+ /*1201*/ 0x04cf, 1, 0x04c0, /* CYRILLIC LETTER PALOCHKA */
+ /*1204*/ 0x04d1, 1, 0x04d0, /* CYRILLIC CAPITAL LETTER A WITH BR.. */
+ /*1207*/ 0x04d3, 1, 0x04d2, /* CYRILLIC CAPITAL LETTER A WITH DI.. */
+ /*1210*/ 0x04d5, 1, 0x04d4, /* CYRILLIC CAPITAL LIGATURE A IE */
+ /*1213*/ 0x04d7, 1, 0x04d6, /* CYRILLIC CAPITAL LETTER IE WITH B.. */
+ /*1216*/ 0x04d9, 1, 0x04d8, /* CYRILLIC CAPITAL LETTER SCHWA */
+ /*1219*/ 0x04db, 1, 0x04da, /* CYRILLIC CAPITAL LETTER SCHWA WIT.. */
+ /*1222*/ 0x04dd, 1, 0x04dc, /* CYRILLIC CAPITAL LETTER ZHE WITH .. */
+ /*1225*/ 0x04df, 1, 0x04de, /* CYRILLIC CAPITAL LETTER ZE WITH D.. */
+ /*1228*/ 0x04e1, 1, 0x04e0, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */
+ /*1231*/ 0x04e3, 1, 0x04e2, /* CYRILLIC CAPITAL LETTER I WITH MA.. */
+ /*1234*/ 0x04e5, 1, 0x04e4, /* CYRILLIC CAPITAL LETTER I WITH DI.. */
+ /*1237*/ 0x04e7, 1, 0x04e6, /* CYRILLIC CAPITAL LETTER O WITH DI.. */
+ /*1240*/ 0x04e9, 1, 0x04e8, /* CYRILLIC CAPITAL LETTER BARRED O */
+ /*1243*/ 0x04eb, 1, 0x04ea, /* CYRILLIC CAPITAL LETTER BARRED O .. */
+ /*1246*/ 0x04ed, 1, 0x04ec, /* CYRILLIC CAPITAL LETTER E WITH DI.. */
+ /*1249*/ 0x04ef, 1, 0x04ee, /* CYRILLIC CAPITAL LETTER U WITH MA.. */
+ /*1252*/ 0x04f1, 1, 0x04f0, /* CYRILLIC CAPITAL LETTER U WITH DI.. */
+ /*1255*/ 0x04f3, 1, 0x04f2, /* CYRILLIC CAPITAL LETTER U WITH DO.. */
+ /*1258*/ 0x04f5, 1, 0x04f4, /* CYRILLIC CAPITAL LETTER CHE WITH .. */
+ /*1261*/ 0x04f7, 1, 0x04f6, /* CYRILLIC CAPITAL LETTER GHE WITH .. */
+ /*1264*/ 0x04f9, 1, 0x04f8, /* CYRILLIC CAPITAL LETTER YERU WITH.. */
+ /*1267*/ 0x04fb, 1, 0x04fa, /* CYRILLIC CAPITAL LETTER GHE WITH .. */
+ /*1270*/ 0x04fd, 1, 0x04fc, /* CYRILLIC CAPITAL LETTER HA WITH H.. */
+ /*1273*/ 0x04ff, 1, 0x04fe, /* CYRILLIC CAPITAL LETTER HA WITH S.. */
+ /*1276*/ 0x0501, 1, 0x0500, /* CYRILLIC CAPITAL LETTER KOMI DE */
+ /*1279*/ 0x0503, 1, 0x0502, /* CYRILLIC CAPITAL LETTER KOMI DJE */
+ /*1282*/ 0x0505, 1, 0x0504, /* CYRILLIC CAPITAL LETTER KOMI ZJE */
+ /*1285*/ 0x0507, 1, 0x0506, /* CYRILLIC CAPITAL LETTER KOMI DZJE */
+ /*1288*/ 0x0509, 1, 0x0508, /* CYRILLIC CAPITAL LETTER KOMI LJE */
+ /*1291*/ 0x050b, 1, 0x050a, /* CYRILLIC CAPITAL LETTER KOMI NJE */
+ /*1294*/ 0x050d, 1, 0x050c, /* CYRILLIC CAPITAL LETTER KOMI SJE */
+ /*1297*/ 0x050f, 1, 0x050e, /* CYRILLIC CAPITAL LETTER KOMI TJE */
+ /*1300*/ 0x0511, 1, 0x0510, /* CYRILLIC CAPITAL LETTER REVERSED .. */
+ /*1303*/ 0x0513, 1, 0x0512, /* CYRILLIC CAPITAL LETTER EL WITH H.. */
+ /*1306*/ 0x0515, 1, 0x0514, /* CYRILLIC CAPITAL LETTER LHA */
+ /*1309*/ 0x0517, 1, 0x0516, /* CYRILLIC CAPITAL LETTER RHA */
+ /*1312*/ 0x0519, 1, 0x0518, /* CYRILLIC CAPITAL LETTER YAE */
+ /*1315*/ 0x051b, 1, 0x051a, /* CYRILLIC CAPITAL LETTER QA */
+ /*1318*/ 0x051d, 1, 0x051c, /* CYRILLIC CAPITAL LETTER WE */
+ /*1321*/ 0x051f, 1, 0x051e, /* CYRILLIC CAPITAL LETTER ALEUT KA */
+ /*1324*/ 0x0521, 1, 0x0520, /* CYRILLIC CAPITAL LETTER EL WITH M.. */
+ /*1327*/ 0x0523, 1, 0x0522, /* CYRILLIC CAPITAL LETTER EN WITH M.. */
+ /*1330*/ 0x0525, 1, 0x0524, /* CYRILLIC CAPITAL LETTER PE WITH D.. */
+ /*1333*/ 0x0527, 1, 0x0526, /* CYRILLIC CAPITAL LETTER SHHA WITH.. */
+ /*1336*/ 0x0529, 1, 0x0528, /* CYRILLIC CAPITAL LETTER EN WITH L.. */
+ /*1339*/ 0x052b, 1, 0x052a, /* CYRILLIC CAPITAL LETTER DZZHE */
+ /*1342*/ 0x052d, 1, 0x052c, /* CYRILLIC CAPITAL LETTER DCHE */
+ /*1345*/ 0x052f, 1, 0x052e, /* CYRILLIC CAPITAL LETTER EL WITH D.. */
+ /*1348*/ 0x0561, 1, 0x0531, /* ARMENIAN CAPITAL LETTER AYB */
+ /*1351*/ 0x0562, 1, 0x0532, /* ARMENIAN CAPITAL LETTER BEN */
+ /*1354*/ 0x0563, 1, 0x0533, /* ARMENIAN CAPITAL LETTER GIM */
+ /*1357*/ 0x0564, 1, 0x0534, /* ARMENIAN CAPITAL LETTER DA */
+ /*1360*/ 0x0565, 1, 0x0535, /* ARMENIAN CAPITAL LETTER ECH */
+ /*1363*/ 0x0566, 1, 0x0536, /* ARMENIAN CAPITAL LETTER ZA */
+ /*1366*/ 0x0567, 1, 0x0537, /* ARMENIAN CAPITAL LETTER EH */
+ /*1369*/ 0x0568, 1, 0x0538, /* ARMENIAN CAPITAL LETTER ET */
+ /*1372*/ 0x0569, 1, 0x0539, /* ARMENIAN CAPITAL LETTER TO */
+ /*1375*/ 0x056a, 1, 0x053a, /* ARMENIAN CAPITAL LETTER ZHE */
+ /*1378*/ 0x056b, 1, 0x053b, /* ARMENIAN CAPITAL LETTER INI */
+ /*1381*/ 0x056c, 1, 0x053c, /* ARMENIAN CAPITAL LETTER LIWN */
+ /*1384*/ 0x056d, 1, 0x053d, /* ARMENIAN CAPITAL LETTER XEH */
+ /*1387*/ 0x056e, 1, 0x053e, /* ARMENIAN CAPITAL LETTER CA */
+ /*1390*/ 0x056f, 1, 0x053f, /* ARMENIAN CAPITAL LETTER KEN */
+ /*1393*/ 0x0570, 1, 0x0540, /* ARMENIAN CAPITAL LETTER HO */
+ /*1396*/ 0x0571, 1, 0x0541, /* ARMENIAN CAPITAL LETTER JA */
+ /*1399*/ 0x0572, 1, 0x0542, /* ARMENIAN CAPITAL LETTER GHAD */
+ /*1402*/ 0x0573, 1, 0x0543, /* ARMENIAN CAPITAL LETTER CHEH */
+ /*1405*/ 0x0574, 1, 0x0544, /* ARMENIAN CAPITAL LETTER MEN */
+ /*1408*/ 0x0575, 1, 0x0545, /* ARMENIAN CAPITAL LETTER YI */
+ /*1411*/ 0x0576, 1, 0x0546, /* ARMENIAN CAPITAL LETTER NOW */
+ /*1414*/ 0x0577, 1, 0x0547, /* ARMENIAN CAPITAL LETTER SHA */
+ /*1417*/ 0x0578, 1, 0x0548, /* ARMENIAN CAPITAL LETTER VO */
+ /*1420*/ 0x0579, 1, 0x0549, /* ARMENIAN CAPITAL LETTER CHA */
+ /*1423*/ 0x057a, 1, 0x054a, /* ARMENIAN CAPITAL LETTER PEH */
+ /*1426*/ 0x057b, 1, 0x054b, /* ARMENIAN CAPITAL LETTER JHEH */
+ /*1429*/ 0x057c, 1, 0x054c, /* ARMENIAN CAPITAL LETTER RA */
+ /*1432*/ 0x057d, 1, 0x054d, /* ARMENIAN CAPITAL LETTER SEH */
+ /*1435*/ 0x057e, 1, 0x054e, /* ARMENIAN CAPITAL LETTER VEW */
+ /*1438*/ 0x057f, 1, 0x054f, /* ARMENIAN CAPITAL LETTER TIWN */
+ /*1441*/ 0x0580, 1, 0x0550, /* ARMENIAN CAPITAL LETTER REH */
+ /*1444*/ 0x0581, 1, 0x0551, /* ARMENIAN CAPITAL LETTER CO */
+ /*1447*/ 0x0582, 1, 0x0552, /* ARMENIAN CAPITAL LETTER YIWN */
+ /*1450*/ 0x0583, 1, 0x0553, /* ARMENIAN CAPITAL LETTER PIWR */
+ /*1453*/ 0x0584, 1, 0x0554, /* ARMENIAN CAPITAL LETTER KEH */
+ /*1456*/ 0x0585, 1, 0x0555, /* ARMENIAN CAPITAL LETTER OH */
+ /*1459*/ 0x0586, 1, 0x0556, /* ARMENIAN CAPITAL LETTER FEH */
+ /*1462*/ 0x10d0, 1, 0x1c90, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1465*/ 0x10d1, 1, 0x1c91, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1468*/ 0x10d2, 1, 0x1c92, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1471*/ 0x10d3, 1, 0x1c93, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1474*/ 0x10d4, 1, 0x1c94, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1477*/ 0x10d5, 1, 0x1c95, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1480*/ 0x10d6, 1, 0x1c96, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1483*/ 0x10d7, 1, 0x1c97, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1486*/ 0x10d8, 1, 0x1c98, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1489*/ 0x10d9, 1, 0x1c99, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1492*/ 0x10da, 1, 0x1c9a, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1495*/ 0x10db, 1, 0x1c9b, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1498*/ 0x10dc, 1, 0x1c9c, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1501*/ 0x10dd, 1, 0x1c9d, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1504*/ 0x10de, 1, 0x1c9e, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1507*/ 0x10df, 1, 0x1c9f, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1510*/ 0x10e0, 1, 0x1ca0, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1513*/ 0x10e1, 1, 0x1ca1, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1516*/ 0x10e2, 1, 0x1ca2, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1519*/ 0x10e3, 1, 0x1ca3, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1522*/ 0x10e4, 1, 0x1ca4, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1525*/ 0x10e5, 1, 0x1ca5, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1528*/ 0x10e6, 1, 0x1ca6, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1531*/ 0x10e7, 1, 0x1ca7, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1534*/ 0x10e8, 1, 0x1ca8, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1537*/ 0x10e9, 1, 0x1ca9, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1540*/ 0x10ea, 1, 0x1caa, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1543*/ 0x10eb, 1, 0x1cab, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1546*/ 0x10ec, 1, 0x1cac, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1549*/ 0x10ed, 1, 0x1cad, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1552*/ 0x10ee, 1, 0x1cae, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1555*/ 0x10ef, 1, 0x1caf, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1558*/ 0x10f0, 1, 0x1cb0, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1561*/ 0x10f1, 1, 0x1cb1, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1564*/ 0x10f2, 1, 0x1cb2, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1567*/ 0x10f3, 1, 0x1cb3, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1570*/ 0x10f4, 1, 0x1cb4, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1573*/ 0x10f5, 1, 0x1cb5, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1576*/ 0x10f6, 1, 0x1cb6, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1579*/ 0x10f7, 1, 0x1cb7, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1582*/ 0x10f8, 1, 0x1cb8, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1585*/ 0x10f9, 1, 0x1cb9, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1588*/ 0x10fa, 1, 0x1cba, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1591*/ 0x10fd, 1, 0x1cbd, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1594*/ 0x10fe, 1, 0x1cbe, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1597*/ 0x10ff, 1, 0x1cbf, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1600*/ 0x13a0, 1, 0xab70, /* CHEROKEE SMALL LETTER A */
+ /*1603*/ 0x13a1, 1, 0xab71, /* CHEROKEE SMALL LETTER E */
+ /*1606*/ 0x13a2, 1, 0xab72, /* CHEROKEE SMALL LETTER I */
+ /*1609*/ 0x13a3, 1, 0xab73, /* CHEROKEE SMALL LETTER O */
+ /*1612*/ 0x13a4, 1, 0xab74, /* CHEROKEE SMALL LETTER U */
+ /*1615*/ 0x13a5, 1, 0xab75, /* CHEROKEE SMALL LETTER V */
+ /*1618*/ 0x13a6, 1, 0xab76, /* CHEROKEE SMALL LETTER GA */
+ /*1621*/ 0x13a7, 1, 0xab77, /* CHEROKEE SMALL LETTER KA */
+ /*1624*/ 0x13a8, 1, 0xab78, /* CHEROKEE SMALL LETTER GE */
+ /*1627*/ 0x13a9, 1, 0xab79, /* CHEROKEE SMALL LETTER GI */
+ /*1630*/ 0x13aa, 1, 0xab7a, /* CHEROKEE SMALL LETTER GO */
+ /*1633*/ 0x13ab, 1, 0xab7b, /* CHEROKEE SMALL LETTER GU */
+ /*1636*/ 0x13ac, 1, 0xab7c, /* CHEROKEE SMALL LETTER GV */
+ /*1639*/ 0x13ad, 1, 0xab7d, /* CHEROKEE SMALL LETTER HA */
+ /*1642*/ 0x13ae, 1, 0xab7e, /* CHEROKEE SMALL LETTER HE */
+ /*1645*/ 0x13af, 1, 0xab7f, /* CHEROKEE SMALL LETTER HI */
+ /*1648*/ 0x13b0, 1, 0xab80, /* CHEROKEE SMALL LETTER HO */
+ /*1651*/ 0x13b1, 1, 0xab81, /* CHEROKEE SMALL LETTER HU */
+ /*1654*/ 0x13b2, 1, 0xab82, /* CHEROKEE SMALL LETTER HV */
+ /*1657*/ 0x13b3, 1, 0xab83, /* CHEROKEE SMALL LETTER LA */
+ /*1660*/ 0x13b4, 1, 0xab84, /* CHEROKEE SMALL LETTER LE */
+ /*1663*/ 0x13b5, 1, 0xab85, /* CHEROKEE SMALL LETTER LI */
+ /*1666*/ 0x13b6, 1, 0xab86, /* CHEROKEE SMALL LETTER LO */
+ /*1669*/ 0x13b7, 1, 0xab87, /* CHEROKEE SMALL LETTER LU */
+ /*1672*/ 0x13b8, 1, 0xab88, /* CHEROKEE SMALL LETTER LV */
+ /*1675*/ 0x13b9, 1, 0xab89, /* CHEROKEE SMALL LETTER MA */
+ /*1678*/ 0x13ba, 1, 0xab8a, /* CHEROKEE SMALL LETTER ME */
+ /*1681*/ 0x13bb, 1, 0xab8b, /* CHEROKEE SMALL LETTER MI */
+ /*1684*/ 0x13bc, 1, 0xab8c, /* CHEROKEE SMALL LETTER MO */
+ /*1687*/ 0x13bd, 1, 0xab8d, /* CHEROKEE SMALL LETTER MU */
+ /*1690*/ 0x13be, 1, 0xab8e, /* CHEROKEE SMALL LETTER NA */
+ /*1693*/ 0x13bf, 1, 0xab8f, /* CHEROKEE SMALL LETTER HNA */
+ /*1696*/ 0x13c0, 1, 0xab90, /* CHEROKEE SMALL LETTER NAH */
+ /*1699*/ 0x13c1, 1, 0xab91, /* CHEROKEE SMALL LETTER NE */
+ /*1702*/ 0x13c2, 1, 0xab92, /* CHEROKEE SMALL LETTER NI */
+ /*1705*/ 0x13c3, 1, 0xab93, /* CHEROKEE SMALL LETTER NO */
+ /*1708*/ 0x13c4, 1, 0xab94, /* CHEROKEE SMALL LETTER NU */
+ /*1711*/ 0x13c5, 1, 0xab95, /* CHEROKEE SMALL LETTER NV */
+ /*1714*/ 0x13c6, 1, 0xab96, /* CHEROKEE SMALL LETTER QUA */
+ /*1717*/ 0x13c7, 1, 0xab97, /* CHEROKEE SMALL LETTER QUE */
+ /*1720*/ 0x13c8, 1, 0xab98, /* CHEROKEE SMALL LETTER QUI */
+ /*1723*/ 0x13c9, 1, 0xab99, /* CHEROKEE SMALL LETTER QUO */
+ /*1726*/ 0x13ca, 1, 0xab9a, /* CHEROKEE SMALL LETTER QUU */
+ /*1729*/ 0x13cb, 1, 0xab9b, /* CHEROKEE SMALL LETTER QUV */
+ /*1732*/ 0x13cc, 1, 0xab9c, /* CHEROKEE SMALL LETTER SA */
+ /*1735*/ 0x13cd, 1, 0xab9d, /* CHEROKEE SMALL LETTER S */
+ /*1738*/ 0x13ce, 1, 0xab9e, /* CHEROKEE SMALL LETTER SE */
+ /*1741*/ 0x13cf, 1, 0xab9f, /* CHEROKEE SMALL LETTER SI */
+ /*1744*/ 0x13d0, 1, 0xaba0, /* CHEROKEE SMALL LETTER SO */
+ /*1747*/ 0x13d1, 1, 0xaba1, /* CHEROKEE SMALL LETTER SU */
+ /*1750*/ 0x13d2, 1, 0xaba2, /* CHEROKEE SMALL LETTER SV */
+ /*1753*/ 0x13d3, 1, 0xaba3, /* CHEROKEE SMALL LETTER DA */
+ /*1756*/ 0x13d4, 1, 0xaba4, /* CHEROKEE SMALL LETTER TA */
+ /*1759*/ 0x13d5, 1, 0xaba5, /* CHEROKEE SMALL LETTER DE */
+ /*1762*/ 0x13d6, 1, 0xaba6, /* CHEROKEE SMALL LETTER TE */
+ /*1765*/ 0x13d7, 1, 0xaba7, /* CHEROKEE SMALL LETTER DI */
+ /*1768*/ 0x13d8, 1, 0xaba8, /* CHEROKEE SMALL LETTER TI */
+ /*1771*/ 0x13d9, 1, 0xaba9, /* CHEROKEE SMALL LETTER DO */
+ /*1774*/ 0x13da, 1, 0xabaa, /* CHEROKEE SMALL LETTER DU */
+ /*1777*/ 0x13db, 1, 0xabab, /* CHEROKEE SMALL LETTER DV */
+ /*1780*/ 0x13dc, 1, 0xabac, /* CHEROKEE SMALL LETTER DLA */
+ /*1783*/ 0x13dd, 1, 0xabad, /* CHEROKEE SMALL LETTER TLA */
+ /*1786*/ 0x13de, 1, 0xabae, /* CHEROKEE SMALL LETTER TLE */
+ /*1789*/ 0x13df, 1, 0xabaf, /* CHEROKEE SMALL LETTER TLI */
+ /*1792*/ 0x13e0, 1, 0xabb0, /* CHEROKEE SMALL LETTER TLO */
+ /*1795*/ 0x13e1, 1, 0xabb1, /* CHEROKEE SMALL LETTER TLU */
+ /*1798*/ 0x13e2, 1, 0xabb2, /* CHEROKEE SMALL LETTER TLV */
+ /*1801*/ 0x13e3, 1, 0xabb3, /* CHEROKEE SMALL LETTER TSA */
+ /*1804*/ 0x13e4, 1, 0xabb4, /* CHEROKEE SMALL LETTER TSE */
+ /*1807*/ 0x13e5, 1, 0xabb5, /* CHEROKEE SMALL LETTER TSI */
+ /*1810*/ 0x13e6, 1, 0xabb6, /* CHEROKEE SMALL LETTER TSO */
+ /*1813*/ 0x13e7, 1, 0xabb7, /* CHEROKEE SMALL LETTER TSU */
+ /*1816*/ 0x13e8, 1, 0xabb8, /* CHEROKEE SMALL LETTER TSV */
+ /*1819*/ 0x13e9, 1, 0xabb9, /* CHEROKEE SMALL LETTER WA */
+ /*1822*/ 0x13ea, 1, 0xabba, /* CHEROKEE SMALL LETTER WE */
+ /*1825*/ 0x13eb, 1, 0xabbb, /* CHEROKEE SMALL LETTER WI */
+ /*1828*/ 0x13ec, 1, 0xabbc, /* CHEROKEE SMALL LETTER WO */
+ /*1831*/ 0x13ed, 1, 0xabbd, /* CHEROKEE SMALL LETTER WU */
+ /*1834*/ 0x13ee, 1, 0xabbe, /* CHEROKEE SMALL LETTER WV */
+ /*1837*/ 0x13ef, 1, 0xabbf, /* CHEROKEE SMALL LETTER YA */
+ /*1840*/ 0x13f0, 1, 0x13f8, /* CHEROKEE SMALL LETTER YE */
+ /*1843*/ 0x13f1, 1, 0x13f9, /* CHEROKEE SMALL LETTER YI */
+ /*1846*/ 0x13f2, 1, 0x13fa, /* CHEROKEE SMALL LETTER YO */
+ /*1849*/ 0x13f3, 1, 0x13fb, /* CHEROKEE SMALL LETTER YU */
+ /*1852*/ 0x13f4, 1, 0x13fc, /* CHEROKEE SMALL LETTER YV */
+ /*1855*/ 0x13f5, 1, 0x13fd, /* CHEROKEE SMALL LETTER MV */
+ /*1858*/ 0x1d79, 1, 0xa77d, /* LATIN CAPITAL LETTER INSULAR G */
+ /*1861*/ 0x1d7d, 1, 0x2c63, /* LATIN CAPITAL LETTER P WITH STROKE */
+ /*1864*/ 0x1d8e, 1, 0xa7c6, /* LATIN CAPITAL LETTER Z WITH PALAT.. */
+ /*1867*/ 0x1e01, 1, 0x1e00, /* LATIN CAPITAL LETTER A WITH RING .. */
+ /*1870*/ 0x1e03, 1, 0x1e02, /* LATIN CAPITAL LETTER B WITH DOT A.. */
+ /*1873*/ 0x1e05, 1, 0x1e04, /* LATIN CAPITAL LETTER B WITH DOT B.. */
+ /*1876*/ 0x1e07, 1, 0x1e06, /* LATIN CAPITAL LETTER B WITH LINE .. */
+ /*1879*/ 0x1e09, 1, 0x1e08, /* LATIN CAPITAL LETTER C WITH CEDIL.. */
+ /*1882*/ 0x1e0b, 1, 0x1e0a, /* LATIN CAPITAL LETTER D WITH DOT A.. */
+ /*1885*/ 0x1e0d, 1, 0x1e0c, /* LATIN CAPITAL LETTER D WITH DOT B.. */
+ /*1888*/ 0x1e0f, 1, 0x1e0e, /* LATIN CAPITAL LETTER D WITH LINE .. */
+ /*1891*/ 0x1e11, 1, 0x1e10, /* LATIN CAPITAL LETTER D WITH CEDIL.. */
+ /*1894*/ 0x1e13, 1, 0x1e12, /* LATIN CAPITAL LETTER D WITH CIRCU.. */
+ /*1897*/ 0x1e15, 1, 0x1e14, /* LATIN CAPITAL LETTER E WITH MACRO.. */
+ /*1900*/ 0x1e17, 1, 0x1e16, /* LATIN CAPITAL LETTER E WITH MACRO.. */
+ /*1903*/ 0x1e19, 1, 0x1e18, /* LATIN CAPITAL LETTER E WITH CIRCU.. */
+ /*1906*/ 0x1e1b, 1, 0x1e1a, /* LATIN CAPITAL LETTER E WITH TILDE.. */
+ /*1909*/ 0x1e1d, 1, 0x1e1c, /* LATIN CAPITAL LETTER E WITH CEDIL.. */
+ /*1912*/ 0x1e1f, 1, 0x1e1e, /* LATIN CAPITAL LETTER F WITH DOT A.. */
+ /*1915*/ 0x1e21, 1, 0x1e20, /* LATIN CAPITAL LETTER G WITH MACRON */
+ /*1918*/ 0x1e23, 1, 0x1e22, /* LATIN CAPITAL LETTER H WITH DOT A.. */
+ /*1921*/ 0x1e25, 1, 0x1e24, /* LATIN CAPITAL LETTER H WITH DOT B.. */
+ /*1924*/ 0x1e27, 1, 0x1e26, /* LATIN CAPITAL LETTER H WITH DIAER.. */
+ /*1927*/ 0x1e29, 1, 0x1e28, /* LATIN CAPITAL LETTER H WITH CEDIL.. */
+ /*1930*/ 0x1e2b, 1, 0x1e2a, /* LATIN CAPITAL LETTER H WITH BREVE.. */
+ /*1933*/ 0x1e2d, 1, 0x1e2c, /* LATIN CAPITAL LETTER I WITH TILDE.. */
+ /*1936*/ 0x1e2f, 1, 0x1e2e, /* LATIN CAPITAL LETTER I WITH DIAER.. */
+ /*1939*/ 0x1e31, 1, 0x1e30, /* LATIN CAPITAL LETTER K WITH ACUTE */
+ /*1942*/ 0x1e33, 1, 0x1e32, /* LATIN CAPITAL LETTER K WITH DOT B.. */
+ /*1945*/ 0x1e35, 1, 0x1e34, /* LATIN CAPITAL LETTER K WITH LINE .. */
+ /*1948*/ 0x1e37, 1, 0x1e36, /* LATIN CAPITAL LETTER L WITH DOT B.. */
+ /*1951*/ 0x1e39, 1, 0x1e38, /* LATIN CAPITAL LETTER L WITH DOT B.. */
+ /*1954*/ 0x1e3b, 1, 0x1e3a, /* LATIN CAPITAL LETTER L WITH LINE .. */
+ /*1957*/ 0x1e3d, 1, 0x1e3c, /* LATIN CAPITAL LETTER L WITH CIRCU.. */
+ /*1960*/ 0x1e3f, 1, 0x1e3e, /* LATIN CAPITAL LETTER M WITH ACUTE */
+ /*1963*/ 0x1e41, 1, 0x1e40, /* LATIN CAPITAL LETTER M WITH DOT A.. */
+ /*1966*/ 0x1e43, 1, 0x1e42, /* LATIN CAPITAL LETTER M WITH DOT B.. */
+ /*1969*/ 0x1e45, 1, 0x1e44, /* LATIN CAPITAL LETTER N WITH DOT A.. */
+ /*1972*/ 0x1e47, 1, 0x1e46, /* LATIN CAPITAL LETTER N WITH DOT B.. */
+ /*1975*/ 0x1e49, 1, 0x1e48, /* LATIN CAPITAL LETTER N WITH LINE .. */
+ /*1978*/ 0x1e4b, 1, 0x1e4a, /* LATIN CAPITAL LETTER N WITH CIRCU.. */
+ /*1981*/ 0x1e4d, 1, 0x1e4c, /* LATIN CAPITAL LETTER O WITH TILDE.. */
+ /*1984*/ 0x1e4f, 1, 0x1e4e, /* LATIN CAPITAL LETTER O WITH TILDE.. */
+ /*1987*/ 0x1e51, 1, 0x1e50, /* LATIN CAPITAL LETTER O WITH MACRO.. */
+ /*1990*/ 0x1e53, 1, 0x1e52, /* LATIN CAPITAL LETTER O WITH MACRO.. */
+ /*1993*/ 0x1e55, 1, 0x1e54, /* LATIN CAPITAL LETTER P WITH ACUTE */
+ /*1996*/ 0x1e57, 1, 0x1e56, /* LATIN CAPITAL LETTER P WITH DOT A.. */
+ /*1999*/ 0x1e59, 1, 0x1e58, /* LATIN CAPITAL LETTER R WITH DOT A.. */
+ /*2002*/ 0x1e5b, 1, 0x1e5a, /* LATIN CAPITAL LETTER R WITH DOT B.. */
+ /*2005*/ 0x1e5d, 1, 0x1e5c, /* LATIN CAPITAL LETTER R WITH DOT B.. */
+ /*2008*/ 0x1e5f, 1, 0x1e5e, /* LATIN CAPITAL LETTER R WITH LINE .. */
+ /*2011*/ 0x1e61, 2, 0x1e60, 0x1e9b, /* LATIN CAPITAL LETTER S WITH DOT A.. */
+ /*2015*/ 0x1e63, 1, 0x1e62, /* LATIN CAPITAL LETTER S WITH DOT B.. */
+ /*2018*/ 0x1e65, 1, 0x1e64, /* LATIN CAPITAL LETTER S WITH ACUTE.. */
+ /*2021*/ 0x1e67, 1, 0x1e66, /* LATIN CAPITAL LETTER S WITH CARON.. */
+ /*2024*/ 0x1e69, 1, 0x1e68, /* LATIN CAPITAL LETTER S WITH DOT B.. */
+ /*2027*/ 0x1e6b, 1, 0x1e6a, /* LATIN CAPITAL LETTER T WITH DOT A.. */
+ /*2030*/ 0x1e6d, 1, 0x1e6c, /* LATIN CAPITAL LETTER T WITH DOT B.. */
+ /*2033*/ 0x1e6f, 1, 0x1e6e, /* LATIN CAPITAL LETTER T WITH LINE .. */
+ /*2036*/ 0x1e71, 1, 0x1e70, /* LATIN CAPITAL LETTER T WITH CIRCU.. */
+ /*2039*/ 0x1e73, 1, 0x1e72, /* LATIN CAPITAL LETTER U WITH DIAER.. */
+ /*2042*/ 0x1e75, 1, 0x1e74, /* LATIN CAPITAL LETTER U WITH TILDE.. */
+ /*2045*/ 0x1e77, 1, 0x1e76, /* LATIN CAPITAL LETTER U WITH CIRCU.. */
+ /*2048*/ 0x1e79, 1, 0x1e78, /* LATIN CAPITAL LETTER U WITH TILDE.. */
+ /*2051*/ 0x1e7b, 1, 0x1e7a, /* LATIN CAPITAL LETTER U WITH MACRO.. */
+ /*2054*/ 0x1e7d, 1, 0x1e7c, /* LATIN CAPITAL LETTER V WITH TILDE */
+ /*2057*/ 0x1e7f, 1, 0x1e7e, /* LATIN CAPITAL LETTER V WITH DOT B.. */
+ /*2060*/ 0x1e81, 1, 0x1e80, /* LATIN CAPITAL LETTER W WITH GRAVE */
+ /*2063*/ 0x1e83, 1, 0x1e82, /* LATIN CAPITAL LETTER W WITH ACUTE */
+ /*2066*/ 0x1e85, 1, 0x1e84, /* LATIN CAPITAL LETTER W WITH DIAER.. */
+ /*2069*/ 0x1e87, 1, 0x1e86, /* LATIN CAPITAL LETTER W WITH DOT A.. */
+ /*2072*/ 0x1e89, 1, 0x1e88, /* LATIN CAPITAL LETTER W WITH DOT B.. */
+ /*2075*/ 0x1e8b, 1, 0x1e8a, /* LATIN CAPITAL LETTER X WITH DOT A.. */
+ /*2078*/ 0x1e8d, 1, 0x1e8c, /* LATIN CAPITAL LETTER X WITH DIAER.. */
+ /*2081*/ 0x1e8f, 1, 0x1e8e, /* LATIN CAPITAL LETTER Y WITH DOT A.. */
+ /*2084*/ 0x1e91, 1, 0x1e90, /* LATIN CAPITAL LETTER Z WITH CIRCU.. */
+ /*2087*/ 0x1e93, 1, 0x1e92, /* LATIN CAPITAL LETTER Z WITH DOT B.. */
+ /*2090*/ 0x1e95, 1, 0x1e94, /* LATIN CAPITAL LETTER Z WITH LINE .. */
+ /*2093*/ 0x1ea1, 1, 0x1ea0, /* LATIN CAPITAL LETTER A WITH DOT B.. */
+ /*2096*/ 0x1ea3, 1, 0x1ea2, /* LATIN CAPITAL LETTER A WITH HOOK .. */
+ /*2099*/ 0x1ea5, 1, 0x1ea4, /* LATIN CAPITAL LETTER A WITH CIRCU.. */
+ /*2102*/ 0x1ea7, 1, 0x1ea6, /* LATIN CAPITAL LETTER A WITH CIRCU.. */
+ /*2105*/ 0x1ea9, 1, 0x1ea8, /* LATIN CAPITAL LETTER A WITH CIRCU.. */
+ /*2108*/ 0x1eab, 1, 0x1eaa, /* LATIN CAPITAL LETTER A WITH CIRCU.. */
+ /*2111*/ 0x1ead, 1, 0x1eac, /* LATIN CAPITAL LETTER A WITH CIRCU.. */
+ /*2114*/ 0x1eaf, 1, 0x1eae, /* LATIN CAPITAL LETTER A WITH BREVE.. */
+ /*2117*/ 0x1eb1, 1, 0x1eb0, /* LATIN CAPITAL LETTER A WITH BREVE.. */
+ /*2120*/ 0x1eb3, 1, 0x1eb2, /* LATIN CAPITAL LETTER A WITH BREVE.. */
+ /*2123*/ 0x1eb5, 1, 0x1eb4, /* LATIN CAPITAL LETTER A WITH BREVE.. */
+ /*2126*/ 0x1eb7, 1, 0x1eb6, /* LATIN CAPITAL LETTER A WITH BREVE.. */
+ /*2129*/ 0x1eb9, 1, 0x1eb8, /* LATIN CAPITAL LETTER E WITH DOT B.. */
+ /*2132*/ 0x1ebb, 1, 0x1eba, /* LATIN CAPITAL LETTER E WITH HOOK .. */
+ /*2135*/ 0x1ebd, 1, 0x1ebc, /* LATIN CAPITAL LETTER E WITH TILDE */
+ /*2138*/ 0x1ebf, 1, 0x1ebe, /* LATIN CAPITAL LETTER E WITH CIRCU.. */
+ /*2141*/ 0x1ec1, 1, 0x1ec0, /* LATIN CAPITAL LETTER E WITH CIRCU.. */
+ /*2144*/ 0x1ec3, 1, 0x1ec2, /* LATIN CAPITAL LETTER E WITH CIRCU.. */
+ /*2147*/ 0x1ec5, 1, 0x1ec4, /* LATIN CAPITAL LETTER E WITH CIRCU.. */
+ /*2150*/ 0x1ec7, 1, 0x1ec6, /* LATIN CAPITAL LETTER E WITH CIRCU.. */
+ /*2153*/ 0x1ec9, 1, 0x1ec8, /* LATIN CAPITAL LETTER I WITH HOOK .. */
+ /*2156*/ 0x1ecb, 1, 0x1eca, /* LATIN CAPITAL LETTER I WITH DOT B.. */
+ /*2159*/ 0x1ecd, 1, 0x1ecc, /* LATIN CAPITAL LETTER O WITH DOT B.. */
+ /*2162*/ 0x1ecf, 1, 0x1ece, /* LATIN CAPITAL LETTER O WITH HOOK .. */
+ /*2165*/ 0x1ed1, 1, 0x1ed0, /* LATIN CAPITAL LETTER O WITH CIRCU.. */
+ /*2168*/ 0x1ed3, 1, 0x1ed2, /* LATIN CAPITAL LETTER O WITH CIRCU.. */
+ /*2171*/ 0x1ed5, 1, 0x1ed4, /* LATIN CAPITAL LETTER O WITH CIRCU.. */
+ /*2174*/ 0x1ed7, 1, 0x1ed6, /* LATIN CAPITAL LETTER O WITH CIRCU.. */
+ /*2177*/ 0x1ed9, 1, 0x1ed8, /* LATIN CAPITAL LETTER O WITH CIRCU.. */
+ /*2180*/ 0x1edb, 1, 0x1eda, /* LATIN CAPITAL LETTER O WITH HORN .. */
+ /*2183*/ 0x1edd, 1, 0x1edc, /* LATIN CAPITAL LETTER O WITH HORN .. */
+ /*2186*/ 0x1edf, 1, 0x1ede, /* LATIN CAPITAL LETTER O WITH HORN .. */
+ /*2189*/ 0x1ee1, 1, 0x1ee0, /* LATIN CAPITAL LETTER O WITH HORN .. */
+ /*2192*/ 0x1ee3, 1, 0x1ee2, /* LATIN CAPITAL LETTER O WITH HORN .. */
+ /*2195*/ 0x1ee5, 1, 0x1ee4, /* LATIN CAPITAL LETTER U WITH DOT B.. */
+ /*2198*/ 0x1ee7, 1, 0x1ee6, /* LATIN CAPITAL LETTER U WITH HOOK .. */
+ /*2201*/ 0x1ee9, 1, 0x1ee8, /* LATIN CAPITAL LETTER U WITH HORN .. */
+ /*2204*/ 0x1eeb, 1, 0x1eea, /* LATIN CAPITAL LETTER U WITH HORN .. */
+ /*2207*/ 0x1eed, 1, 0x1eec, /* LATIN CAPITAL LETTER U WITH HORN .. */
+ /*2210*/ 0x1eef, 1, 0x1eee, /* LATIN CAPITAL LETTER U WITH HORN .. */
+ /*2213*/ 0x1ef1, 1, 0x1ef0, /* LATIN CAPITAL LETTER U WITH HORN .. */
+ /*2216*/ 0x1ef3, 1, 0x1ef2, /* LATIN CAPITAL LETTER Y WITH GRAVE */
+ /*2219*/ 0x1ef5, 1, 0x1ef4, /* LATIN CAPITAL LETTER Y WITH DOT B.. */
+ /*2222*/ 0x1ef7, 1, 0x1ef6, /* LATIN CAPITAL LETTER Y WITH HOOK .. */
+ /*2225*/ 0x1ef9, 1, 0x1ef8, /* LATIN CAPITAL LETTER Y WITH TILDE */
+ /*2228*/ 0x1efb, 1, 0x1efa, /* LATIN CAPITAL LETTER MIDDLE-WELSH.. */
+ /*2231*/ 0x1efd, 1, 0x1efc, /* LATIN CAPITAL LETTER MIDDLE-WELSH.. */
+ /*2234*/ 0x1eff, 1, 0x1efe, /* LATIN CAPITAL LETTER Y WITH LOOP */
+ /*2237*/ 0x1f00, 1, 0x1f08, /* GREEK CAPITAL LETTER ALPHA WITH P.. */
+ /*2240*/ 0x1f01, 1, 0x1f09, /* GREEK CAPITAL LETTER ALPHA WITH D.. */
+ /*2243*/ 0x1f02, 1, 0x1f0a, /* GREEK CAPITAL LETTER ALPHA WITH P.. */
+ /*2246*/ 0x1f03, 1, 0x1f0b, /* GREEK CAPITAL LETTER ALPHA WITH D.. */
+ /*2249*/ 0x1f04, 1, 0x1f0c, /* GREEK CAPITAL LETTER ALPHA WITH P.. */
+ /*2252*/ 0x1f05, 1, 0x1f0d, /* GREEK CAPITAL LETTER ALPHA WITH D.. */
+ /*2255*/ 0x1f06, 1, 0x1f0e, /* GREEK CAPITAL LETTER ALPHA WITH P.. */
+ /*2258*/ 0x1f07, 1, 0x1f0f, /* GREEK CAPITAL LETTER ALPHA WITH D.. */
+ /*2261*/ 0x1f10, 1, 0x1f18, /* GREEK CAPITAL LETTER EPSILON WITH.. */
+ /*2264*/ 0x1f11, 1, 0x1f19, /* GREEK CAPITAL LETTER EPSILON WITH.. */
+ /*2267*/ 0x1f12, 1, 0x1f1a, /* GREEK CAPITAL LETTER EPSILON WITH.. */
+ /*2270*/ 0x1f13, 1, 0x1f1b, /* GREEK CAPITAL LETTER EPSILON WITH.. */
+ /*2273*/ 0x1f14, 1, 0x1f1c, /* GREEK CAPITAL LETTER EPSILON WITH.. */
+ /*2276*/ 0x1f15, 1, 0x1f1d, /* GREEK CAPITAL LETTER EPSILON WITH.. */
+ /*2279*/ 0x1f20, 1, 0x1f28, /* GREEK CAPITAL LETTER ETA WITH PSI.. */
+ /*2282*/ 0x1f21, 1, 0x1f29, /* GREEK CAPITAL LETTER ETA WITH DAS.. */
+ /*2285*/ 0x1f22, 1, 0x1f2a, /* GREEK CAPITAL LETTER ETA WITH PSI.. */
+ /*2288*/ 0x1f23, 1, 0x1f2b, /* GREEK CAPITAL LETTER ETA WITH DAS.. */
+ /*2291*/ 0x1f24, 1, 0x1f2c, /* GREEK CAPITAL LETTER ETA WITH PSI.. */
+ /*2294*/ 0x1f25, 1, 0x1f2d, /* GREEK CAPITAL LETTER ETA WITH DAS.. */
+ /*2297*/ 0x1f26, 1, 0x1f2e, /* GREEK CAPITAL LETTER ETA WITH PSI.. */
+ /*2300*/ 0x1f27, 1, 0x1f2f, /* GREEK CAPITAL LETTER ETA WITH DAS.. */
+ /*2303*/ 0x1f30, 1, 0x1f38, /* GREEK CAPITAL LETTER IOTA WITH PS.. */
+ /*2306*/ 0x1f31, 1, 0x1f39, /* GREEK CAPITAL LETTER IOTA WITH DA.. */
+ /*2309*/ 0x1f32, 1, 0x1f3a, /* GREEK CAPITAL LETTER IOTA WITH PS.. */
+ /*2312*/ 0x1f33, 1, 0x1f3b, /* GREEK CAPITAL LETTER IOTA WITH DA.. */
+ /*2315*/ 0x1f34, 1, 0x1f3c, /* GREEK CAPITAL LETTER IOTA WITH PS.. */
+ /*2318*/ 0x1f35, 1, 0x1f3d, /* GREEK CAPITAL LETTER IOTA WITH DA.. */
+ /*2321*/ 0x1f36, 1, 0x1f3e, /* GREEK CAPITAL LETTER IOTA WITH PS.. */
+ /*2324*/ 0x1f37, 1, 0x1f3f, /* GREEK CAPITAL LETTER IOTA WITH DA.. */
+ /*2327*/ 0x1f40, 1, 0x1f48, /* GREEK CAPITAL LETTER OMICRON WITH.. */
+ /*2330*/ 0x1f41, 1, 0x1f49, /* GREEK CAPITAL LETTER OMICRON WITH.. */
+ /*2333*/ 0x1f42, 1, 0x1f4a, /* GREEK CAPITAL LETTER OMICRON WITH.. */
+ /*2336*/ 0x1f43, 1, 0x1f4b, /* GREEK CAPITAL LETTER OMICRON WITH.. */
+ /*2339*/ 0x1f44, 1, 0x1f4c, /* GREEK CAPITAL LETTER OMICRON WITH.. */
+ /*2342*/ 0x1f45, 1, 0x1f4d, /* GREEK CAPITAL LETTER OMICRON WITH.. */
+ /*2345*/ 0x1f51, 1, 0x1f59, /* GREEK CAPITAL LETTER UPSILON WITH.. */
+ /*2348*/ 0x1f53, 1, 0x1f5b, /* GREEK CAPITAL LETTER UPSILON WITH.. */
+ /*2351*/ 0x1f55, 1, 0x1f5d, /* GREEK CAPITAL LETTER UPSILON WITH.. */
+ /*2354*/ 0x1f57, 1, 0x1f5f, /* GREEK CAPITAL LETTER UPSILON WITH.. */
+ /*2357*/ 0x1f60, 1, 0x1f68, /* GREEK CAPITAL LETTER OMEGA WITH P.. */
+ /*2360*/ 0x1f61, 1, 0x1f69, /* GREEK CAPITAL LETTER OMEGA WITH D.. */
+ /*2363*/ 0x1f62, 1, 0x1f6a, /* GREEK CAPITAL LETTER OMEGA WITH P.. */
+ /*2366*/ 0x1f63, 1, 0x1f6b, /* GREEK CAPITAL LETTER OMEGA WITH D.. */
+ /*2369*/ 0x1f64, 1, 0x1f6c, /* GREEK CAPITAL LETTER OMEGA WITH P.. */
+ /*2372*/ 0x1f65, 1, 0x1f6d, /* GREEK CAPITAL LETTER OMEGA WITH D.. */
+ /*2375*/ 0x1f66, 1, 0x1f6e, /* GREEK CAPITAL LETTER OMEGA WITH P.. */
+ /*2378*/ 0x1f67, 1, 0x1f6f, /* GREEK CAPITAL LETTER OMEGA WITH D.. */
+ /*2381*/ 0x1f70, 1, 0x1fba, /* GREEK CAPITAL LETTER ALPHA WITH V.. */
+ /*2384*/ 0x1f71, 1, 0x1fbb, /* GREEK CAPITAL LETTER ALPHA WITH O.. */
+ /*2387*/ 0x1f72, 1, 0x1fc8, /* GREEK CAPITAL LETTER EPSILON WITH.. */
+ /*2390*/ 0x1f73, 1, 0x1fc9, /* GREEK CAPITAL LETTER EPSILON WITH.. */
+ /*2393*/ 0x1f74, 1, 0x1fca, /* GREEK CAPITAL LETTER ETA WITH VAR.. */
+ /*2396*/ 0x1f75, 1, 0x1fcb, /* GREEK CAPITAL LETTER ETA WITH OXIA */
+ /*2399*/ 0x1f76, 1, 0x1fda, /* GREEK CAPITAL LETTER IOTA WITH VA.. */
+ /*2402*/ 0x1f77, 1, 0x1fdb, /* GREEK CAPITAL LETTER IOTA WITH OX.. */
+ /*2405*/ 0x1f78, 1, 0x1ff8, /* GREEK CAPITAL LETTER OMICRON WITH.. */
+ /*2408*/ 0x1f79, 1, 0x1ff9, /* GREEK CAPITAL LETTER OMICRON WITH.. */
+ /*2411*/ 0x1f7a, 1, 0x1fea, /* GREEK CAPITAL LETTER UPSILON WITH.. */
+ /*2414*/ 0x1f7b, 1, 0x1feb, /* GREEK CAPITAL LETTER UPSILON WITH.. */
+ /*2417*/ 0x1f7c, 1, 0x1ffa, /* GREEK CAPITAL LETTER OMEGA WITH V.. */
+ /*2420*/ 0x1f7d, 1, 0x1ffb, /* GREEK CAPITAL LETTER OMEGA WITH O.. */
+ /*2423*/ 0x1fb0, 1, 0x1fb8, /* GREEK CAPITAL LETTER ALPHA WITH V.. */
+ /*2426*/ 0x1fb1, 1, 0x1fb9, /* GREEK CAPITAL LETTER ALPHA WITH M.. */
+ /*2429*/ 0x1fd0, 1, 0x1fd8, /* GREEK CAPITAL LETTER IOTA WITH VR.. */
+ /*2432*/ 0x1fd1, 1, 0x1fd9, /* GREEK CAPITAL LETTER IOTA WITH MA.. */
+ /*2435*/ 0x1fe0, 1, 0x1fe8, /* GREEK CAPITAL LETTER UPSILON WITH.. */
+ /*2438*/ 0x1fe1, 1, 0x1fe9, /* GREEK CAPITAL LETTER UPSILON WITH.. */
+ /*2441*/ 0x1fe5, 1, 0x1fec, /* GREEK CAPITAL LETTER RHO WITH DAS.. */
+ /*2444*/ 0x214e, 1, 0x2132, /* TURNED CAPITAL F */
+ /*2447*/ 0x2170, 1, 0x2160, /* ROMAN NUMERAL ONE */
+ /*2450*/ 0x2171, 1, 0x2161, /* ROMAN NUMERAL TWO */
+ /*2453*/ 0x2172, 1, 0x2162, /* ROMAN NUMERAL THREE */
+ /*2456*/ 0x2173, 1, 0x2163, /* ROMAN NUMERAL FOUR */
+ /*2459*/ 0x2174, 1, 0x2164, /* ROMAN NUMERAL FIVE */
+ /*2462*/ 0x2175, 1, 0x2165, /* ROMAN NUMERAL SIX */
+ /*2465*/ 0x2176, 1, 0x2166, /* ROMAN NUMERAL SEVEN */
+ /*2468*/ 0x2177, 1, 0x2167, /* ROMAN NUMERAL EIGHT */
+ /*2471*/ 0x2178, 1, 0x2168, /* ROMAN NUMERAL NINE */
+ /*2474*/ 0x2179, 1, 0x2169, /* ROMAN NUMERAL TEN */
+ /*2477*/ 0x217a, 1, 0x216a, /* ROMAN NUMERAL ELEVEN */
+ /*2480*/ 0x217b, 1, 0x216b, /* ROMAN NUMERAL TWELVE */
+ /*2483*/ 0x217c, 1, 0x216c, /* ROMAN NUMERAL FIFTY */
+ /*2486*/ 0x217d, 1, 0x216d, /* ROMAN NUMERAL ONE HUNDRED */
+ /*2489*/ 0x217e, 1, 0x216e, /* ROMAN NUMERAL FIVE HUNDRED */
+ /*2492*/ 0x217f, 1, 0x216f, /* ROMAN NUMERAL ONE THOUSAND */
+ /*2495*/ 0x2184, 1, 0x2183, /* ROMAN NUMERAL REVERSED ONE HUNDRED */
+ /*2498*/ 0x24d0, 1, 0x24b6, /* CIRCLED LATIN CAPITAL LETTER A */
+ /*2501*/ 0x24d1, 1, 0x24b7, /* CIRCLED LATIN CAPITAL LETTER B */
+ /*2504*/ 0x24d2, 1, 0x24b8, /* CIRCLED LATIN CAPITAL LETTER C */
+ /*2507*/ 0x24d3, 1, 0x24b9, /* CIRCLED LATIN CAPITAL LETTER D */
+ /*2510*/ 0x24d4, 1, 0x24ba, /* CIRCLED LATIN CAPITAL LETTER E */
+ /*2513*/ 0x24d5, 1, 0x24bb, /* CIRCLED LATIN CAPITAL LETTER F */
+ /*2516*/ 0x24d6, 1, 0x24bc, /* CIRCLED LATIN CAPITAL LETTER G */
+ /*2519*/ 0x24d7, 1, 0x24bd, /* CIRCLED LATIN CAPITAL LETTER H */
+ /*2522*/ 0x24d8, 1, 0x24be, /* CIRCLED LATIN CAPITAL LETTER I */
+ /*2525*/ 0x24d9, 1, 0x24bf, /* CIRCLED LATIN CAPITAL LETTER J */
+ /*2528*/ 0x24da, 1, 0x24c0, /* CIRCLED LATIN CAPITAL LETTER K */
+ /*2531*/ 0x24db, 1, 0x24c1, /* CIRCLED LATIN CAPITAL LETTER L */
+ /*2534*/ 0x24dc, 1, 0x24c2, /* CIRCLED LATIN CAPITAL LETTER M */
+ /*2537*/ 0x24dd, 1, 0x24c3, /* CIRCLED LATIN CAPITAL LETTER N */
+ /*2540*/ 0x24de, 1, 0x24c4, /* CIRCLED LATIN CAPITAL LETTER O */
+ /*2543*/ 0x24df, 1, 0x24c5, /* CIRCLED LATIN CAPITAL LETTER P */
+ /*2546*/ 0x24e0, 1, 0x24c6, /* CIRCLED LATIN CAPITAL LETTER Q */
+ /*2549*/ 0x24e1, 1, 0x24c7, /* CIRCLED LATIN CAPITAL LETTER R */
+ /*2552*/ 0x24e2, 1, 0x24c8, /* CIRCLED LATIN CAPITAL LETTER S */
+ /*2555*/ 0x24e3, 1, 0x24c9, /* CIRCLED LATIN CAPITAL LETTER T */
+ /*2558*/ 0x24e4, 1, 0x24ca, /* CIRCLED LATIN CAPITAL LETTER U */
+ /*2561*/ 0x24e5, 1, 0x24cb, /* CIRCLED LATIN CAPITAL LETTER V */
+ /*2564*/ 0x24e6, 1, 0x24cc, /* CIRCLED LATIN CAPITAL LETTER W */
+ /*2567*/ 0x24e7, 1, 0x24cd, /* CIRCLED LATIN CAPITAL LETTER X */
+ /*2570*/ 0x24e8, 1, 0x24ce, /* CIRCLED LATIN CAPITAL LETTER Y */
+ /*2573*/ 0x24e9, 1, 0x24cf, /* CIRCLED LATIN CAPITAL LETTER Z */
+ /*2576*/ 0x2c30, 1, 0x2c00, /* GLAGOLITIC CAPITAL LETTER AZU */
+ /*2579*/ 0x2c31, 1, 0x2c01, /* GLAGOLITIC CAPITAL LETTER BUKY */
+ /*2582*/ 0x2c32, 1, 0x2c02, /* GLAGOLITIC CAPITAL LETTER VEDE */
+ /*2585*/ 0x2c33, 1, 0x2c03, /* GLAGOLITIC CAPITAL LETTER GLAGOLI */
+ /*2588*/ 0x2c34, 1, 0x2c04, /* GLAGOLITIC CAPITAL LETTER DOBRO */
+ /*2591*/ 0x2c35, 1, 0x2c05, /* GLAGOLITIC CAPITAL LETTER YESTU */
+ /*2594*/ 0x2c36, 1, 0x2c06, /* GLAGOLITIC CAPITAL LETTER ZHIVETE */
+ /*2597*/ 0x2c37, 1, 0x2c07, /* GLAGOLITIC CAPITAL LETTER DZELO */
+ /*2600*/ 0x2c38, 1, 0x2c08, /* GLAGOLITIC CAPITAL LETTER ZEMLJA */
+ /*2603*/ 0x2c39, 1, 0x2c09, /* GLAGOLITIC CAPITAL LETTER IZHE */
+ /*2606*/ 0x2c3a, 1, 0x2c0a, /* GLAGOLITIC CAPITAL LETTER INITIAL.. */
+ /*2609*/ 0x2c3b, 1, 0x2c0b, /* GLAGOLITIC CAPITAL LETTER I */
+ /*2612*/ 0x2c3c, 1, 0x2c0c, /* GLAGOLITIC CAPITAL LETTER DJERVI */
+ /*2615*/ 0x2c3d, 1, 0x2c0d, /* GLAGOLITIC CAPITAL LETTER KAKO */
+ /*2618*/ 0x2c3e, 1, 0x2c0e, /* GLAGOLITIC CAPITAL LETTER LJUDIJE */
+ /*2621*/ 0x2c3f, 1, 0x2c0f, /* GLAGOLITIC CAPITAL LETTER MYSLITE */
+ /*2624*/ 0x2c40, 1, 0x2c10, /* GLAGOLITIC CAPITAL LETTER NASHI */
+ /*2627*/ 0x2c41, 1, 0x2c11, /* GLAGOLITIC CAPITAL LETTER ONU */
+ /*2630*/ 0x2c42, 1, 0x2c12, /* GLAGOLITIC CAPITAL LETTER POKOJI */
+ /*2633*/ 0x2c43, 1, 0x2c13, /* GLAGOLITIC CAPITAL LETTER RITSI */
+ /*2636*/ 0x2c44, 1, 0x2c14, /* GLAGOLITIC CAPITAL LETTER SLOVO */
+ /*2639*/ 0x2c45, 1, 0x2c15, /* GLAGOLITIC CAPITAL LETTER TVRIDO */
+ /*2642*/ 0x2c46, 1, 0x2c16, /* GLAGOLITIC CAPITAL LETTER UKU */
+ /*2645*/ 0x2c47, 1, 0x2c17, /* GLAGOLITIC CAPITAL LETTER FRITU */
+ /*2648*/ 0x2c48, 1, 0x2c18, /* GLAGOLITIC CAPITAL LETTER HERU */
+ /*2651*/ 0x2c49, 1, 0x2c19, /* GLAGOLITIC CAPITAL LETTER OTU */
+ /*2654*/ 0x2c4a, 1, 0x2c1a, /* GLAGOLITIC CAPITAL LETTER PE */
+ /*2657*/ 0x2c4b, 1, 0x2c1b, /* GLAGOLITIC CAPITAL LETTER SHTA */
+ /*2660*/ 0x2c4c, 1, 0x2c1c, /* GLAGOLITIC CAPITAL LETTER TSI */
+ /*2663*/ 0x2c4d, 1, 0x2c1d, /* GLAGOLITIC CAPITAL LETTER CHRIVI */
+ /*2666*/ 0x2c4e, 1, 0x2c1e, /* GLAGOLITIC CAPITAL LETTER SHA */
+ /*2669*/ 0x2c4f, 1, 0x2c1f, /* GLAGOLITIC CAPITAL LETTER YERU */
+ /*2672*/ 0x2c50, 1, 0x2c20, /* GLAGOLITIC CAPITAL LETTER YERI */
+ /*2675*/ 0x2c51, 1, 0x2c21, /* GLAGOLITIC CAPITAL LETTER YATI */
+ /*2678*/ 0x2c52, 1, 0x2c22, /* GLAGOLITIC CAPITAL LETTER SPIDERY.. */
+ /*2681*/ 0x2c53, 1, 0x2c23, /* GLAGOLITIC CAPITAL LETTER YU */
+ /*2684*/ 0x2c54, 1, 0x2c24, /* GLAGOLITIC CAPITAL LETTER SMALL Y.. */
+ /*2687*/ 0x2c55, 1, 0x2c25, /* GLAGOLITIC CAPITAL LETTER SMALL Y.. */
+ /*2690*/ 0x2c56, 1, 0x2c26, /* GLAGOLITIC CAPITAL LETTER YO */
+ /*2693*/ 0x2c57, 1, 0x2c27, /* GLAGOLITIC CAPITAL LETTER IOTATED.. */
+ /*2696*/ 0x2c58, 1, 0x2c28, /* GLAGOLITIC CAPITAL LETTER BIG YUS */
+ /*2699*/ 0x2c59, 1, 0x2c29, /* GLAGOLITIC CAPITAL LETTER IOTATED.. */
+ /*2702*/ 0x2c5a, 1, 0x2c2a, /* GLAGOLITIC CAPITAL LETTER FITA */
+ /*2705*/ 0x2c5b, 1, 0x2c2b, /* GLAGOLITIC CAPITAL LETTER IZHITSA */
+ /*2708*/ 0x2c5c, 1, 0x2c2c, /* GLAGOLITIC CAPITAL LETTER SHTAPIC */
+ /*2711*/ 0x2c5d, 1, 0x2c2d, /* GLAGOLITIC CAPITAL LETTER TROKUTA.. */
+ /*2714*/ 0x2c5e, 1, 0x2c2e, /* GLAGOLITIC CAPITAL LETTER LATINAT.. */
+ /*2717*/ 0x2c61, 1, 0x2c60, /* LATIN CAPITAL LETTER L WITH DOUBL.. */
+ /*2720*/ 0x2c65, 1, 0x023a, /* LATIN CAPITAL LETTER A WITH STROKE */
+ /*2723*/ 0x2c66, 1, 0x023e, /* LATIN CAPITAL LETTER T WITH DIAGO.. */
+ /*2726*/ 0x2c68, 1, 0x2c67, /* LATIN CAPITAL LETTER H WITH DESCE.. */
+ /*2729*/ 0x2c6a, 1, 0x2c69, /* LATIN CAPITAL LETTER K WITH DESCE.. */
+ /*2732*/ 0x2c6c, 1, 0x2c6b, /* LATIN CAPITAL LETTER Z WITH DESCE.. */
+ /*2735*/ 0x2c73, 1, 0x2c72, /* LATIN CAPITAL LETTER W WITH HOOK */
+ /*2738*/ 0x2c76, 1, 0x2c75, /* LATIN CAPITAL LETTER HALF H */
+ /*2741*/ 0x2c81, 1, 0x2c80, /* COPTIC CAPITAL LETTER ALFA */
+ /*2744*/ 0x2c83, 1, 0x2c82, /* COPTIC CAPITAL LETTER VIDA */
+ /*2747*/ 0x2c85, 1, 0x2c84, /* COPTIC CAPITAL LETTER GAMMA */
+ /*2750*/ 0x2c87, 1, 0x2c86, /* COPTIC CAPITAL LETTER DALDA */
+ /*2753*/ 0x2c89, 1, 0x2c88, /* COPTIC CAPITAL LETTER EIE */
+ /*2756*/ 0x2c8b, 1, 0x2c8a, /* COPTIC CAPITAL LETTER SOU */
+ /*2759*/ 0x2c8d, 1, 0x2c8c, /* COPTIC CAPITAL LETTER ZATA */
+ /*2762*/ 0x2c8f, 1, 0x2c8e, /* COPTIC CAPITAL LETTER HATE */
+ /*2765*/ 0x2c91, 1, 0x2c90, /* COPTIC CAPITAL LETTER THETHE */
+ /*2768*/ 0x2c93, 1, 0x2c92, /* COPTIC CAPITAL LETTER IAUDA */
+ /*2771*/ 0x2c95, 1, 0x2c94, /* COPTIC CAPITAL LETTER KAPA */
+ /*2774*/ 0x2c97, 1, 0x2c96, /* COPTIC CAPITAL LETTER LAULA */
+ /*2777*/ 0x2c99, 1, 0x2c98, /* COPTIC CAPITAL LETTER MI */
+ /*2780*/ 0x2c9b, 1, 0x2c9a, /* COPTIC CAPITAL LETTER NI */
+ /*2783*/ 0x2c9d, 1, 0x2c9c, /* COPTIC CAPITAL LETTER KSI */
+ /*2786*/ 0x2c9f, 1, 0x2c9e, /* COPTIC CAPITAL LETTER O */
+ /*2789*/ 0x2ca1, 1, 0x2ca0, /* COPTIC CAPITAL LETTER PI */
+ /*2792*/ 0x2ca3, 1, 0x2ca2, /* COPTIC CAPITAL LETTER RO */
+ /*2795*/ 0x2ca5, 1, 0x2ca4, /* COPTIC CAPITAL LETTER SIMA */
+ /*2798*/ 0x2ca7, 1, 0x2ca6, /* COPTIC CAPITAL LETTER TAU */
+ /*2801*/ 0x2ca9, 1, 0x2ca8, /* COPTIC CAPITAL LETTER UA */
+ /*2804*/ 0x2cab, 1, 0x2caa, /* COPTIC CAPITAL LETTER FI */
+ /*2807*/ 0x2cad, 1, 0x2cac, /* COPTIC CAPITAL LETTER KHI */
+ /*2810*/ 0x2caf, 1, 0x2cae, /* COPTIC CAPITAL LETTER PSI */
+ /*2813*/ 0x2cb1, 1, 0x2cb0, /* COPTIC CAPITAL LETTER OOU */
+ /*2816*/ 0x2cb3, 1, 0x2cb2, /* COPTIC CAPITAL LETTER DIALECT-P A.. */
+ /*2819*/ 0x2cb5, 1, 0x2cb4, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
+ /*2822*/ 0x2cb7, 1, 0x2cb6, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */
+ /*2825*/ 0x2cb9, 1, 0x2cb8, /* COPTIC CAPITAL LETTER DIALECT-P K.. */
+ /*2828*/ 0x2cbb, 1, 0x2cba, /* COPTIC CAPITAL LETTER DIALECT-P NI */
+ /*2831*/ 0x2cbd, 1, 0x2cbc, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */
+ /*2834*/ 0x2cbf, 1, 0x2cbe, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
+ /*2837*/ 0x2cc1, 1, 0x2cc0, /* COPTIC CAPITAL LETTER SAMPI */
+ /*2840*/ 0x2cc3, 1, 0x2cc2, /* COPTIC CAPITAL LETTER CROSSED SHEI */
+ /*2843*/ 0x2cc5, 1, 0x2cc4, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
+ /*2846*/ 0x2cc7, 1, 0x2cc6, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
+ /*2849*/ 0x2cc9, 1, 0x2cc8, /* COPTIC CAPITAL LETTER AKHMIMIC KH.. */
+ /*2852*/ 0x2ccb, 1, 0x2cca, /* COPTIC CAPITAL LETTER DIALECT-P H.. */
+ /*2855*/ 0x2ccd, 1, 0x2ccc, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
+ /*2858*/ 0x2ccf, 1, 0x2cce, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
+ /*2861*/ 0x2cd1, 1, 0x2cd0, /* COPTIC CAPITAL LETTER L-SHAPED HA */
+ /*2864*/ 0x2cd3, 1, 0x2cd2, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
+ /*2867*/ 0x2cd5, 1, 0x2cd4, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
+ /*2870*/ 0x2cd7, 1, 0x2cd6, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
+ /*2873*/ 0x2cd9, 1, 0x2cd8, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
+ /*2876*/ 0x2cdb, 1, 0x2cda, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
+ /*2879*/ 0x2cdd, 1, 0x2cdc, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */
+ /*2882*/ 0x2cdf, 1, 0x2cde, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */
+ /*2885*/ 0x2ce1, 1, 0x2ce0, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */
+ /*2888*/ 0x2ce3, 1, 0x2ce2, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */
+ /*2891*/ 0x2cec, 1, 0x2ceb, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */
+ /*2894*/ 0x2cee, 1, 0x2ced, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */
+ /*2897*/ 0x2cf3, 1, 0x2cf2, /* COPTIC CAPITAL LETTER BOHAIRIC KH.. */
+ /*2900*/ 0x2d00, 1, 0x10a0, /* GEORGIAN CAPITAL LETTER AN */
+ /*2903*/ 0x2d01, 1, 0x10a1, /* GEORGIAN CAPITAL LETTER BAN */
+ /*2906*/ 0x2d02, 1, 0x10a2, /* GEORGIAN CAPITAL LETTER GAN */
+ /*2909*/ 0x2d03, 1, 0x10a3, /* GEORGIAN CAPITAL LETTER DON */
+ /*2912*/ 0x2d04, 1, 0x10a4, /* GEORGIAN CAPITAL LETTER EN */
+ /*2915*/ 0x2d05, 1, 0x10a5, /* GEORGIAN CAPITAL LETTER VIN */
+ /*2918*/ 0x2d06, 1, 0x10a6, /* GEORGIAN CAPITAL LETTER ZEN */
+ /*2921*/ 0x2d07, 1, 0x10a7, /* GEORGIAN CAPITAL LETTER TAN */
+ /*2924*/ 0x2d08, 1, 0x10a8, /* GEORGIAN CAPITAL LETTER IN */
+ /*2927*/ 0x2d09, 1, 0x10a9, /* GEORGIAN CAPITAL LETTER KAN */
+ /*2930*/ 0x2d0a, 1, 0x10aa, /* GEORGIAN CAPITAL LETTER LAS */
+ /*2933*/ 0x2d0b, 1, 0x10ab, /* GEORGIAN CAPITAL LETTER MAN */
+ /*2936*/ 0x2d0c, 1, 0x10ac, /* GEORGIAN CAPITAL LETTER NAR */
+ /*2939*/ 0x2d0d, 1, 0x10ad, /* GEORGIAN CAPITAL LETTER ON */
+ /*2942*/ 0x2d0e, 1, 0x10ae, /* GEORGIAN CAPITAL LETTER PAR */
+ /*2945*/ 0x2d0f, 1, 0x10af, /* GEORGIAN CAPITAL LETTER ZHAR */
+ /*2948*/ 0x2d10, 1, 0x10b0, /* GEORGIAN CAPITAL LETTER RAE */
+ /*2951*/ 0x2d11, 1, 0x10b1, /* GEORGIAN CAPITAL LETTER SAN */
+ /*2954*/ 0x2d12, 1, 0x10b2, /* GEORGIAN CAPITAL LETTER TAR */
+ /*2957*/ 0x2d13, 1, 0x10b3, /* GEORGIAN CAPITAL LETTER UN */
+ /*2960*/ 0x2d14, 1, 0x10b4, /* GEORGIAN CAPITAL LETTER PHAR */
+ /*2963*/ 0x2d15, 1, 0x10b5, /* GEORGIAN CAPITAL LETTER KHAR */
+ /*2966*/ 0x2d16, 1, 0x10b6, /* GEORGIAN CAPITAL LETTER GHAN */
+ /*2969*/ 0x2d17, 1, 0x10b7, /* GEORGIAN CAPITAL LETTER QAR */
+ /*2972*/ 0x2d18, 1, 0x10b8, /* GEORGIAN CAPITAL LETTER SHIN */
+ /*2975*/ 0x2d19, 1, 0x10b9, /* GEORGIAN CAPITAL LETTER CHIN */
+ /*2978*/ 0x2d1a, 1, 0x10ba, /* GEORGIAN CAPITAL LETTER CAN */
+ /*2981*/ 0x2d1b, 1, 0x10bb, /* GEORGIAN CAPITAL LETTER JIL */
+ /*2984*/ 0x2d1c, 1, 0x10bc, /* GEORGIAN CAPITAL LETTER CIL */
+ /*2987*/ 0x2d1d, 1, 0x10bd, /* GEORGIAN CAPITAL LETTER CHAR */
+ /*2990*/ 0x2d1e, 1, 0x10be, /* GEORGIAN CAPITAL LETTER XAN */
+ /*2993*/ 0x2d1f, 1, 0x10bf, /* GEORGIAN CAPITAL LETTER JHAN */
+ /*2996*/ 0x2d20, 1, 0x10c0, /* GEORGIAN CAPITAL LETTER HAE */
+ /*2999*/ 0x2d21, 1, 0x10c1, /* GEORGIAN CAPITAL LETTER HE */
+ /*3002*/ 0x2d22, 1, 0x10c2, /* GEORGIAN CAPITAL LETTER HIE */
+ /*3005*/ 0x2d23, 1, 0x10c3, /* GEORGIAN CAPITAL LETTER WE */
+ /*3008*/ 0x2d24, 1, 0x10c4, /* GEORGIAN CAPITAL LETTER HAR */
+ /*3011*/ 0x2d25, 1, 0x10c5, /* GEORGIAN CAPITAL LETTER HOE */
+ /*3014*/ 0x2d27, 1, 0x10c7, /* GEORGIAN CAPITAL LETTER YN */
+ /*3017*/ 0x2d2d, 1, 0x10cd, /* GEORGIAN CAPITAL LETTER AEN */
+ /*3020*/ 0xa641, 1, 0xa640, /* CYRILLIC CAPITAL LETTER ZEMLYA */
+ /*3023*/ 0xa643, 1, 0xa642, /* CYRILLIC CAPITAL LETTER DZELO */
+ /*3026*/ 0xa645, 1, 0xa644, /* CYRILLIC CAPITAL LETTER REVERSED .. */
+ /*3029*/ 0xa647, 1, 0xa646, /* CYRILLIC CAPITAL LETTER IOTA */
+ /*3032*/ 0xa649, 1, 0xa648, /* CYRILLIC CAPITAL LETTER DJERV */
+ /*3035*/ 0xa64b, 2, 0x1c88, 0xa64a, /* CYRILLIC SMALL LETTER UNBLENDED UK */
+ /*3039*/ 0xa64d, 1, 0xa64c, /* CYRILLIC CAPITAL LETTER BROAD OME.. */
+ /*3042*/ 0xa64f, 1, 0xa64e, /* CYRILLIC CAPITAL LETTER NEUTRAL Y.. */
+ /*3045*/ 0xa651, 1, 0xa650, /* CYRILLIC CAPITAL LETTER YERU WITH.. */
+ /*3048*/ 0xa653, 1, 0xa652, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */
+ /*3051*/ 0xa655, 1, 0xa654, /* CYRILLIC CAPITAL LETTER REVERSED .. */
+ /*3054*/ 0xa657, 1, 0xa656, /* CYRILLIC CAPITAL LETTER IOTIFIED A */
+ /*3057*/ 0xa659, 1, 0xa658, /* CYRILLIC CAPITAL LETTER CLOSED LI.. */
+ /*3060*/ 0xa65b, 1, 0xa65a, /* CYRILLIC CAPITAL LETTER BLENDED Y.. */
+ /*3063*/ 0xa65d, 1, 0xa65c, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */
+ /*3066*/ 0xa65f, 1, 0xa65e, /* CYRILLIC CAPITAL LETTER YN */
+ /*3069*/ 0xa661, 1, 0xa660, /* CYRILLIC CAPITAL LETTER REVERSED .. */
+ /*3072*/ 0xa663, 1, 0xa662, /* CYRILLIC CAPITAL LETTER SOFT DE */
+ /*3075*/ 0xa665, 1, 0xa664, /* CYRILLIC CAPITAL LETTER SOFT EL */
+ /*3078*/ 0xa667, 1, 0xa666, /* CYRILLIC CAPITAL LETTER SOFT EM */
+ /*3081*/ 0xa669, 1, 0xa668, /* CYRILLIC CAPITAL LETTER MONOCULAR.. */
+ /*3084*/ 0xa66b, 1, 0xa66a, /* CYRILLIC CAPITAL LETTER BINOCULAR.. */
+ /*3087*/ 0xa66d, 1, 0xa66c, /* CYRILLIC CAPITAL LETTER DOUBLE MO.. */
+ /*3090*/ 0xa681, 1, 0xa680, /* CYRILLIC CAPITAL LETTER DWE */
+ /*3093*/ 0xa683, 1, 0xa682, /* CYRILLIC CAPITAL LETTER DZWE */
+ /*3096*/ 0xa685, 1, 0xa684, /* CYRILLIC CAPITAL LETTER ZHWE */
+ /*3099*/ 0xa687, 1, 0xa686, /* CYRILLIC CAPITAL LETTER CCHE */
+ /*3102*/ 0xa689, 1, 0xa688, /* CYRILLIC CAPITAL LETTER DZZE */
+ /*3105*/ 0xa68b, 1, 0xa68a, /* CYRILLIC CAPITAL LETTER TE WITH M.. */
+ /*3108*/ 0xa68d, 1, 0xa68c, /* CYRILLIC CAPITAL LETTER TWE */
+ /*3111*/ 0xa68f, 1, 0xa68e, /* CYRILLIC CAPITAL LETTER TSWE */
+ /*3114*/ 0xa691, 1, 0xa690, /* CYRILLIC CAPITAL LETTER TSSE */
+ /*3117*/ 0xa693, 1, 0xa692, /* CYRILLIC CAPITAL LETTER TCHE */
+ /*3120*/ 0xa695, 1, 0xa694, /* CYRILLIC CAPITAL LETTER HWE */
+ /*3123*/ 0xa697, 1, 0xa696, /* CYRILLIC CAPITAL LETTER SHWE */
+ /*3126*/ 0xa699, 1, 0xa698, /* CYRILLIC CAPITAL LETTER DOUBLE O */
+ /*3129*/ 0xa69b, 1, 0xa69a, /* CYRILLIC CAPITAL LETTER CROSSED O */
+ /*3132*/ 0xa723, 1, 0xa722, /* LATIN CAPITAL LETTER EGYPTOLOGICA.. */
+ /*3135*/ 0xa725, 1, 0xa724, /* LATIN CAPITAL LETTER EGYPTOLOGICA.. */
+ /*3138*/ 0xa727, 1, 0xa726, /* LATIN CAPITAL LETTER HENG */
+ /*3141*/ 0xa729, 1, 0xa728, /* LATIN CAPITAL LETTER TZ */
+ /*3144*/ 0xa72b, 1, 0xa72a, /* LATIN CAPITAL LETTER TRESILLO */
+ /*3147*/ 0xa72d, 1, 0xa72c, /* LATIN CAPITAL LETTER CUATRILLO */
+ /*3150*/ 0xa72f, 1, 0xa72e, /* LATIN CAPITAL LETTER CUATRILLO WI.. */
+ /*3153*/ 0xa733, 1, 0xa732, /* LATIN CAPITAL LETTER AA */
+ /*3156*/ 0xa735, 1, 0xa734, /* LATIN CAPITAL LETTER AO */
+ /*3159*/ 0xa737, 1, 0xa736, /* LATIN CAPITAL LETTER AU */
+ /*3162*/ 0xa739, 1, 0xa738, /* LATIN CAPITAL LETTER AV */
+ /*3165*/ 0xa73b, 1, 0xa73a, /* LATIN CAPITAL LETTER AV WITH HORI.. */
+ /*3168*/ 0xa73d, 1, 0xa73c, /* LATIN CAPITAL LETTER AY */
+ /*3171*/ 0xa73f, 1, 0xa73e, /* LATIN CAPITAL LETTER REVERSED C W.. */
+ /*3174*/ 0xa741, 1, 0xa740, /* LATIN CAPITAL LETTER K WITH STROKE */
+ /*3177*/ 0xa743, 1, 0xa742, /* LATIN CAPITAL LETTER K WITH DIAGO.. */
+ /*3180*/ 0xa745, 1, 0xa744, /* LATIN CAPITAL LETTER K WITH STROK.. */
+ /*3183*/ 0xa747, 1, 0xa746, /* LATIN CAPITAL LETTER BROKEN L */
+ /*3186*/ 0xa749, 1, 0xa748, /* LATIN CAPITAL LETTER L WITH HIGH .. */
+ /*3189*/ 0xa74b, 1, 0xa74a, /* LATIN CAPITAL LETTER O WITH LONG .. */
+ /*3192*/ 0xa74d, 1, 0xa74c, /* LATIN CAPITAL LETTER O WITH LOOP */
+ /*3195*/ 0xa74f, 1, 0xa74e, /* LATIN CAPITAL LETTER OO */
+ /*3198*/ 0xa751, 1, 0xa750, /* LATIN CAPITAL LETTER P WITH STROK.. */
+ /*3201*/ 0xa753, 1, 0xa752, /* LATIN CAPITAL LETTER P WITH FLOUR.. */
+ /*3204*/ 0xa755, 1, 0xa754, /* LATIN CAPITAL LETTER P WITH SQUIR.. */
+ /*3207*/ 0xa757, 1, 0xa756, /* LATIN CAPITAL LETTER Q WITH STROK.. */
+ /*3210*/ 0xa759, 1, 0xa758, /* LATIN CAPITAL LETTER Q WITH DIAGO.. */
+ /*3213*/ 0xa75b, 1, 0xa75a, /* LATIN CAPITAL LETTER R ROTUNDA */
+ /*3216*/ 0xa75d, 1, 0xa75c, /* LATIN CAPITAL LETTER RUM ROTUNDA */
+ /*3219*/ 0xa75f, 1, 0xa75e, /* LATIN CAPITAL LETTER V WITH DIAGO.. */
+ /*3222*/ 0xa761, 1, 0xa760, /* LATIN CAPITAL LETTER VY */
+ /*3225*/ 0xa763, 1, 0xa762, /* LATIN CAPITAL LETTER VISIGOTHIC Z */
+ /*3228*/ 0xa765, 1, 0xa764, /* LATIN CAPITAL LETTER THORN WITH S.. */
+ /*3231*/ 0xa767, 1, 0xa766, /* LATIN CAPITAL LETTER THORN WITH S.. */
+ /*3234*/ 0xa769, 1, 0xa768, /* LATIN CAPITAL LETTER VEND */
+ /*3237*/ 0xa76b, 1, 0xa76a, /* LATIN CAPITAL LETTER ET */
+ /*3240*/ 0xa76d, 1, 0xa76c, /* LATIN CAPITAL LETTER IS */
+ /*3243*/ 0xa76f, 1, 0xa76e, /* LATIN CAPITAL LETTER CON */
+ /*3246*/ 0xa77a, 1, 0xa779, /* LATIN CAPITAL LETTER INSULAR D */
+ /*3249*/ 0xa77c, 1, 0xa77b, /* LATIN CAPITAL LETTER INSULAR F */
+ /*3252*/ 0xa77f, 1, 0xa77e, /* LATIN CAPITAL LETTER TURNED INSUL.. */
+ /*3255*/ 0xa781, 1, 0xa780, /* LATIN CAPITAL LETTER TURNED L */
+ /*3258*/ 0xa783, 1, 0xa782, /* LATIN CAPITAL LETTER INSULAR R */
+ /*3261*/ 0xa785, 1, 0xa784, /* LATIN CAPITAL LETTER INSULAR S */
+ /*3264*/ 0xa787, 1, 0xa786, /* LATIN CAPITAL LETTER INSULAR T */
+ /*3267*/ 0xa78c, 1, 0xa78b, /* LATIN CAPITAL LETTER SALTILLO */
+ /*3270*/ 0xa791, 1, 0xa790, /* LATIN CAPITAL LETTER N WITH DESCE.. */
+ /*3273*/ 0xa793, 1, 0xa792, /* LATIN CAPITAL LETTER C WITH BAR */
+ /*3276*/ 0xa794, 1, 0xa7c4, /* LATIN CAPITAL LETTER C WITH PALAT.. */
+ /*3279*/ 0xa797, 1, 0xa796, /* LATIN CAPITAL LETTER B WITH FLOUR.. */
+ /*3282*/ 0xa799, 1, 0xa798, /* LATIN CAPITAL LETTER F WITH STROKE */
+ /*3285*/ 0xa79b, 1, 0xa79a, /* LATIN CAPITAL LETTER VOLAPUK AE */
+ /*3288*/ 0xa79d, 1, 0xa79c, /* LATIN CAPITAL LETTER VOLAPUK OE */
+ /*3291*/ 0xa79f, 1, 0xa79e, /* LATIN CAPITAL LETTER VOLAPUK UE */
+ /*3294*/ 0xa7a1, 1, 0xa7a0, /* LATIN CAPITAL LETTER G WITH OBLIQ.. */
+ /*3297*/ 0xa7a3, 1, 0xa7a2, /* LATIN CAPITAL LETTER K WITH OBLIQ.. */
+ /*3300*/ 0xa7a5, 1, 0xa7a4, /* LATIN CAPITAL LETTER N WITH OBLIQ.. */
+ /*3303*/ 0xa7a7, 1, 0xa7a6, /* LATIN CAPITAL LETTER R WITH OBLIQ.. */
+ /*3306*/ 0xa7a9, 1, 0xa7a8, /* LATIN CAPITAL LETTER S WITH OBLIQ.. */
+ /*3309*/ 0xa7b5, 1, 0xa7b4, /* LATIN CAPITAL LETTER BETA */
+ /*3312*/ 0xa7b7, 1, 0xa7b6, /* LATIN CAPITAL LETTER OMEGA */
+ /*3315*/ 0xa7b9, 1, 0xa7b8, /* LATIN CAPITAL LETTER U WITH STROKE */
+ /*3318*/ 0xa7bb, 1, 0xa7ba, /* LATIN CAPITAL LETTER GLOTTAL A */
+ /*3321*/ 0xa7bd, 1, 0xa7bc, /* LATIN CAPITAL LETTER GLOTTAL I */
+ /*3324*/ 0xa7bf, 1, 0xa7be, /* LATIN CAPITAL LETTER GLOTTAL U */
+ /*3327*/ 0xa7c3, 1, 0xa7c2, /* LATIN CAPITAL LETTER ANGLICANA W */
+ /*3330*/ 0xab53, 1, 0xa7b3, /* LATIN CAPITAL LETTER CHI */
+ /*3333*/ 0xff41, 1, 0xff21, /* FULLWIDTH LATIN CAPITAL LETTER A */
+ /*3336*/ 0xff42, 1, 0xff22, /* FULLWIDTH LATIN CAPITAL LETTER B */
+ /*3339*/ 0xff43, 1, 0xff23, /* FULLWIDTH LATIN CAPITAL LETTER C */
+ /*3342*/ 0xff44, 1, 0xff24, /* FULLWIDTH LATIN CAPITAL LETTER D */
+ /*3345*/ 0xff45, 1, 0xff25, /* FULLWIDTH LATIN CAPITAL LETTER E */
+ /*3348*/ 0xff46, 1, 0xff26, /* FULLWIDTH LATIN CAPITAL LETTER F */
+ /*3351*/ 0xff47, 1, 0xff27, /* FULLWIDTH LATIN CAPITAL LETTER G */
+ /*3354*/ 0xff48, 1, 0xff28, /* FULLWIDTH LATIN CAPITAL LETTER H */
+ /*3357*/ 0xff49, 1, 0xff29, /* FULLWIDTH LATIN CAPITAL LETTER I */
+ /*3360*/ 0xff4a, 1, 0xff2a, /* FULLWIDTH LATIN CAPITAL LETTER J */
+ /*3363*/ 0xff4b, 1, 0xff2b, /* FULLWIDTH LATIN CAPITAL LETTER K */
+ /*3366*/ 0xff4c, 1, 0xff2c, /* FULLWIDTH LATIN CAPITAL LETTER L */
+ /*3369*/ 0xff4d, 1, 0xff2d, /* FULLWIDTH LATIN CAPITAL LETTER M */
+ /*3372*/ 0xff4e, 1, 0xff2e, /* FULLWIDTH LATIN CAPITAL LETTER N */
+ /*3375*/ 0xff4f, 1, 0xff2f, /* FULLWIDTH LATIN CAPITAL LETTER O */
+ /*3378*/ 0xff50, 1, 0xff30, /* FULLWIDTH LATIN CAPITAL LETTER P */
+ /*3381*/ 0xff51, 1, 0xff31, /* FULLWIDTH LATIN CAPITAL LETTER Q */
+ /*3384*/ 0xff52, 1, 0xff32, /* FULLWIDTH LATIN CAPITAL LETTER R */
+ /*3387*/ 0xff53, 1, 0xff33, /* FULLWIDTH LATIN CAPITAL LETTER S */
+ /*3390*/ 0xff54, 1, 0xff34, /* FULLWIDTH LATIN CAPITAL LETTER T */
+ /*3393*/ 0xff55, 1, 0xff35, /* FULLWIDTH LATIN CAPITAL LETTER U */
+ /*3396*/ 0xff56, 1, 0xff36, /* FULLWIDTH LATIN CAPITAL LETTER V */
+ /*3399*/ 0xff57, 1, 0xff37, /* FULLWIDTH LATIN CAPITAL LETTER W */
+ /*3402*/ 0xff58, 1, 0xff38, /* FULLWIDTH LATIN CAPITAL LETTER X */
+ /*3405*/ 0xff59, 1, 0xff39, /* FULLWIDTH LATIN CAPITAL LETTER Y */
+ /*3408*/ 0xff5a, 1, 0xff3a, /* FULLWIDTH LATIN CAPITAL LETTER Z */
+ /*3411*/ 0x010428, 1, 0x010400, /* DESERET CAPITAL LETTER LONG I */
+ /*3414*/ 0x010429, 1, 0x010401, /* DESERET CAPITAL LETTER LONG E */
+ /*3417*/ 0x01042a, 1, 0x010402, /* DESERET CAPITAL LETTER LONG A */
+ /*3420*/ 0x01042b, 1, 0x010403, /* DESERET CAPITAL LETTER LONG AH */
+ /*3423*/ 0x01042c, 1, 0x010404, /* DESERET CAPITAL LETTER LONG O */
+ /*3426*/ 0x01042d, 1, 0x010405, /* DESERET CAPITAL LETTER LONG OO */
+ /*3429*/ 0x01042e, 1, 0x010406, /* DESERET CAPITAL LETTER SHORT I */
+ /*3432*/ 0x01042f, 1, 0x010407, /* DESERET CAPITAL LETTER SHORT E */
+ /*3435*/ 0x010430, 1, 0x010408, /* DESERET CAPITAL LETTER SHORT A */
+ /*3438*/ 0x010431, 1, 0x010409, /* DESERET CAPITAL LETTER SHORT AH */
+ /*3441*/ 0x010432, 1, 0x01040a, /* DESERET CAPITAL LETTER SHORT O */
+ /*3444*/ 0x010433, 1, 0x01040b, /* DESERET CAPITAL LETTER SHORT OO */
+ /*3447*/ 0x010434, 1, 0x01040c, /* DESERET CAPITAL LETTER AY */
+ /*3450*/ 0x010435, 1, 0x01040d, /* DESERET CAPITAL LETTER OW */
+ /*3453*/ 0x010436, 1, 0x01040e, /* DESERET CAPITAL LETTER WU */
+ /*3456*/ 0x010437, 1, 0x01040f, /* DESERET CAPITAL LETTER YEE */
+ /*3459*/ 0x010438, 1, 0x010410, /* DESERET CAPITAL LETTER H */
+ /*3462*/ 0x010439, 1, 0x010411, /* DESERET CAPITAL LETTER PEE */
+ /*3465*/ 0x01043a, 1, 0x010412, /* DESERET CAPITAL LETTER BEE */
+ /*3468*/ 0x01043b, 1, 0x010413, /* DESERET CAPITAL LETTER TEE */
+ /*3471*/ 0x01043c, 1, 0x010414, /* DESERET CAPITAL LETTER DEE */
+ /*3474*/ 0x01043d, 1, 0x010415, /* DESERET CAPITAL LETTER CHEE */
+ /*3477*/ 0x01043e, 1, 0x010416, /* DESERET CAPITAL LETTER JEE */
+ /*3480*/ 0x01043f, 1, 0x010417, /* DESERET CAPITAL LETTER KAY */
+ /*3483*/ 0x010440, 1, 0x010418, /* DESERET CAPITAL LETTER GAY */
+ /*3486*/ 0x010441, 1, 0x010419, /* DESERET CAPITAL LETTER EF */
+ /*3489*/ 0x010442, 1, 0x01041a, /* DESERET CAPITAL LETTER VEE */
+ /*3492*/ 0x010443, 1, 0x01041b, /* DESERET CAPITAL LETTER ETH */
+ /*3495*/ 0x010444, 1, 0x01041c, /* DESERET CAPITAL LETTER THEE */
+ /*3498*/ 0x010445, 1, 0x01041d, /* DESERET CAPITAL LETTER ES */
+ /*3501*/ 0x010446, 1, 0x01041e, /* DESERET CAPITAL LETTER ZEE */
+ /*3504*/ 0x010447, 1, 0x01041f, /* DESERET CAPITAL LETTER ESH */
+ /*3507*/ 0x010448, 1, 0x010420, /* DESERET CAPITAL LETTER ZHEE */
+ /*3510*/ 0x010449, 1, 0x010421, /* DESERET CAPITAL LETTER ER */
+ /*3513*/ 0x01044a, 1, 0x010422, /* DESERET CAPITAL LETTER EL */
+ /*3516*/ 0x01044b, 1, 0x010423, /* DESERET CAPITAL LETTER EM */
+ /*3519*/ 0x01044c, 1, 0x010424, /* DESERET CAPITAL LETTER EN */
+ /*3522*/ 0x01044d, 1, 0x010425, /* DESERET CAPITAL LETTER ENG */
+ /*3525*/ 0x01044e, 1, 0x010426, /* DESERET CAPITAL LETTER OI */
+ /*3528*/ 0x01044f, 1, 0x010427, /* DESERET CAPITAL LETTER EW */
+ /*3531*/ 0x0104d8, 1, 0x0104b0, /* OSAGE CAPITAL LETTER A */
+ /*3534*/ 0x0104d9, 1, 0x0104b1, /* OSAGE CAPITAL LETTER AI */
+ /*3537*/ 0x0104da, 1, 0x0104b2, /* OSAGE CAPITAL LETTER AIN */
+ /*3540*/ 0x0104db, 1, 0x0104b3, /* OSAGE CAPITAL LETTER AH */
+ /*3543*/ 0x0104dc, 1, 0x0104b4, /* OSAGE CAPITAL LETTER BRA */
+ /*3546*/ 0x0104dd, 1, 0x0104b5, /* OSAGE CAPITAL LETTER CHA */
+ /*3549*/ 0x0104de, 1, 0x0104b6, /* OSAGE CAPITAL LETTER EHCHA */
+ /*3552*/ 0x0104df, 1, 0x0104b7, /* OSAGE CAPITAL LETTER E */
+ /*3555*/ 0x0104e0, 1, 0x0104b8, /* OSAGE CAPITAL LETTER EIN */
+ /*3558*/ 0x0104e1, 1, 0x0104b9, /* OSAGE CAPITAL LETTER HA */
+ /*3561*/ 0x0104e2, 1, 0x0104ba, /* OSAGE CAPITAL LETTER HYA */
+ /*3564*/ 0x0104e3, 1, 0x0104bb, /* OSAGE CAPITAL LETTER I */
+ /*3567*/ 0x0104e4, 1, 0x0104bc, /* OSAGE CAPITAL LETTER KA */
+ /*3570*/ 0x0104e5, 1, 0x0104bd, /* OSAGE CAPITAL LETTER EHKA */
+ /*3573*/ 0x0104e6, 1, 0x0104be, /* OSAGE CAPITAL LETTER KYA */
+ /*3576*/ 0x0104e7, 1, 0x0104bf, /* OSAGE CAPITAL LETTER LA */
+ /*3579*/ 0x0104e8, 1, 0x0104c0, /* OSAGE CAPITAL LETTER MA */
+ /*3582*/ 0x0104e9, 1, 0x0104c1, /* OSAGE CAPITAL LETTER NA */
+ /*3585*/ 0x0104ea, 1, 0x0104c2, /* OSAGE CAPITAL LETTER O */
+ /*3588*/ 0x0104eb, 1, 0x0104c3, /* OSAGE CAPITAL LETTER OIN */
+ /*3591*/ 0x0104ec, 1, 0x0104c4, /* OSAGE CAPITAL LETTER PA */
+ /*3594*/ 0x0104ed, 1, 0x0104c5, /* OSAGE CAPITAL LETTER EHPA */
+ /*3597*/ 0x0104ee, 1, 0x0104c6, /* OSAGE CAPITAL LETTER SA */
+ /*3600*/ 0x0104ef, 1, 0x0104c7, /* OSAGE CAPITAL LETTER SHA */
+ /*3603*/ 0x0104f0, 1, 0x0104c8, /* OSAGE CAPITAL LETTER TA */
+ /*3606*/ 0x0104f1, 1, 0x0104c9, /* OSAGE CAPITAL LETTER EHTA */
+ /*3609*/ 0x0104f2, 1, 0x0104ca, /* OSAGE CAPITAL LETTER TSA */
+ /*3612*/ 0x0104f3, 1, 0x0104cb, /* OSAGE CAPITAL LETTER EHTSA */
+ /*3615*/ 0x0104f4, 1, 0x0104cc, /* OSAGE CAPITAL LETTER TSHA */
+ /*3618*/ 0x0104f5, 1, 0x0104cd, /* OSAGE CAPITAL LETTER DHA */
+ /*3621*/ 0x0104f6, 1, 0x0104ce, /* OSAGE CAPITAL LETTER U */
+ /*3624*/ 0x0104f7, 1, 0x0104cf, /* OSAGE CAPITAL LETTER WA */
+ /*3627*/ 0x0104f8, 1, 0x0104d0, /* OSAGE CAPITAL LETTER KHA */
+ /*3630*/ 0x0104f9, 1, 0x0104d1, /* OSAGE CAPITAL LETTER GHA */
+ /*3633*/ 0x0104fa, 1, 0x0104d2, /* OSAGE CAPITAL LETTER ZA */
+ /*3636*/ 0x0104fb, 1, 0x0104d3, /* OSAGE CAPITAL LETTER ZHA */
+ /*3639*/ 0x010cc0, 1, 0x010c80, /* OLD HUNGARIAN CAPITAL LETTER A */
+ /*3642*/ 0x010cc1, 1, 0x010c81, /* OLD HUNGARIAN CAPITAL LETTER AA */
+ /*3645*/ 0x010cc2, 1, 0x010c82, /* OLD HUNGARIAN CAPITAL LETTER EB */
+ /*3648*/ 0x010cc3, 1, 0x010c83, /* OLD HUNGARIAN CAPITAL LETTER AMB */
+ /*3651*/ 0x010cc4, 1, 0x010c84, /* OLD HUNGARIAN CAPITAL LETTER EC */
+ /*3654*/ 0x010cc5, 1, 0x010c85, /* OLD HUNGARIAN CAPITAL LETTER ENC */
+ /*3657*/ 0x010cc6, 1, 0x010c86, /* OLD HUNGARIAN CAPITAL LETTER ECS */
+ /*3660*/ 0x010cc7, 1, 0x010c87, /* OLD HUNGARIAN CAPITAL LETTER ED */
+ /*3663*/ 0x010cc8, 1, 0x010c88, /* OLD HUNGARIAN CAPITAL LETTER AND */
+ /*3666*/ 0x010cc9, 1, 0x010c89, /* OLD HUNGARIAN CAPITAL LETTER E */
+ /*3669*/ 0x010cca, 1, 0x010c8a, /* OLD HUNGARIAN CAPITAL LETTER CLOS.. */
+ /*3672*/ 0x010ccb, 1, 0x010c8b, /* OLD HUNGARIAN CAPITAL LETTER EE */
+ /*3675*/ 0x010ccc, 1, 0x010c8c, /* OLD HUNGARIAN CAPITAL LETTER EF */
+ /*3678*/ 0x010ccd, 1, 0x010c8d, /* OLD HUNGARIAN CAPITAL LETTER EG */
+ /*3681*/ 0x010cce, 1, 0x010c8e, /* OLD HUNGARIAN CAPITAL LETTER EGY */
+ /*3684*/ 0x010ccf, 1, 0x010c8f, /* OLD HUNGARIAN CAPITAL LETTER EH */
+ /*3687*/ 0x010cd0, 1, 0x010c90, /* OLD HUNGARIAN CAPITAL LETTER I */
+ /*3690*/ 0x010cd1, 1, 0x010c91, /* OLD HUNGARIAN CAPITAL LETTER II */
+ /*3693*/ 0x010cd2, 1, 0x010c92, /* OLD HUNGARIAN CAPITAL LETTER EJ */
+ /*3696*/ 0x010cd3, 1, 0x010c93, /* OLD HUNGARIAN CAPITAL LETTER EK */
+ /*3699*/ 0x010cd4, 1, 0x010c94, /* OLD HUNGARIAN CAPITAL LETTER AK */
+ /*3702*/ 0x010cd5, 1, 0x010c95, /* OLD HUNGARIAN CAPITAL LETTER UNK */
+ /*3705*/ 0x010cd6, 1, 0x010c96, /* OLD HUNGARIAN CAPITAL LETTER EL */
+ /*3708*/ 0x010cd7, 1, 0x010c97, /* OLD HUNGARIAN CAPITAL LETTER ELY */
+ /*3711*/ 0x010cd8, 1, 0x010c98, /* OLD HUNGARIAN CAPITAL LETTER EM */
+ /*3714*/ 0x010cd9, 1, 0x010c99, /* OLD HUNGARIAN CAPITAL LETTER EN */
+ /*3717*/ 0x010cda, 1, 0x010c9a, /* OLD HUNGARIAN CAPITAL LETTER ENY */
+ /*3720*/ 0x010cdb, 1, 0x010c9b, /* OLD HUNGARIAN CAPITAL LETTER O */
+ /*3723*/ 0x010cdc, 1, 0x010c9c, /* OLD HUNGARIAN CAPITAL LETTER OO */
+ /*3726*/ 0x010cdd, 1, 0x010c9d, /* OLD HUNGARIAN CAPITAL LETTER NIKO.. */
+ /*3729*/ 0x010cde, 1, 0x010c9e, /* OLD HUNGARIAN CAPITAL LETTER RUDI.. */
+ /*3732*/ 0x010cdf, 1, 0x010c9f, /* OLD HUNGARIAN CAPITAL LETTER OEE */
+ /*3735*/ 0x010ce0, 1, 0x010ca0, /* OLD HUNGARIAN CAPITAL LETTER EP */
+ /*3738*/ 0x010ce1, 1, 0x010ca1, /* OLD HUNGARIAN CAPITAL LETTER EMP */
+ /*3741*/ 0x010ce2, 1, 0x010ca2, /* OLD HUNGARIAN CAPITAL LETTER ER */
+ /*3744*/ 0x010ce3, 1, 0x010ca3, /* OLD HUNGARIAN CAPITAL LETTER SHOR.. */
+ /*3747*/ 0x010ce4, 1, 0x010ca4, /* OLD HUNGARIAN CAPITAL LETTER ES */
+ /*3750*/ 0x010ce5, 1, 0x010ca5, /* OLD HUNGARIAN CAPITAL LETTER ESZ */
+ /*3753*/ 0x010ce6, 1, 0x010ca6, /* OLD HUNGARIAN CAPITAL LETTER ET */
+ /*3756*/ 0x010ce7, 1, 0x010ca7, /* OLD HUNGARIAN CAPITAL LETTER ENT */
+ /*3759*/ 0x010ce8, 1, 0x010ca8, /* OLD HUNGARIAN CAPITAL LETTER ETY */
+ /*3762*/ 0x010ce9, 1, 0x010ca9, /* OLD HUNGARIAN CAPITAL LETTER ECH */
+ /*3765*/ 0x010cea, 1, 0x010caa, /* OLD HUNGARIAN CAPITAL LETTER U */
+ /*3768*/ 0x010ceb, 1, 0x010cab, /* OLD HUNGARIAN CAPITAL LETTER UU */
+ /*3771*/ 0x010cec, 1, 0x010cac, /* OLD HUNGARIAN CAPITAL LETTER NIKO.. */
+ /*3774*/ 0x010ced, 1, 0x010cad, /* OLD HUNGARIAN CAPITAL LETTER RUDI.. */
+ /*3777*/ 0x010cee, 1, 0x010cae, /* OLD HUNGARIAN CAPITAL LETTER EV */
+ /*3780*/ 0x010cef, 1, 0x010caf, /* OLD HUNGARIAN CAPITAL LETTER EZ */
+ /*3783*/ 0x010cf0, 1, 0x010cb0, /* OLD HUNGARIAN CAPITAL LETTER EZS */
+ /*3786*/ 0x010cf1, 1, 0x010cb1, /* OLD HUNGARIAN CAPITAL LETTER ENT-.. */
+ /*3789*/ 0x010cf2, 1, 0x010cb2, /* OLD HUNGARIAN CAPITAL LETTER US */
+ /*3792*/ 0x0118c0, 1, 0x0118a0, /* WARANG CITI CAPITAL LETTER NGAA */
+ /*3795*/ 0x0118c1, 1, 0x0118a1, /* WARANG CITI CAPITAL LETTER A */
+ /*3798*/ 0x0118c2, 1, 0x0118a2, /* WARANG CITI CAPITAL LETTER WI */
+ /*3801*/ 0x0118c3, 1, 0x0118a3, /* WARANG CITI CAPITAL LETTER YU */
+ /*3804*/ 0x0118c4, 1, 0x0118a4, /* WARANG CITI CAPITAL LETTER YA */
+ /*3807*/ 0x0118c5, 1, 0x0118a5, /* WARANG CITI CAPITAL LETTER YO */
+ /*3810*/ 0x0118c6, 1, 0x0118a6, /* WARANG CITI CAPITAL LETTER II */
+ /*3813*/ 0x0118c7, 1, 0x0118a7, /* WARANG CITI CAPITAL LETTER UU */
+ /*3816*/ 0x0118c8, 1, 0x0118a8, /* WARANG CITI CAPITAL LETTER E */
+ /*3819*/ 0x0118c9, 1, 0x0118a9, /* WARANG CITI CAPITAL LETTER O */
+ /*3822*/ 0x0118ca, 1, 0x0118aa, /* WARANG CITI CAPITAL LETTER ANG */
+ /*3825*/ 0x0118cb, 1, 0x0118ab, /* WARANG CITI CAPITAL LETTER GA */
+ /*3828*/ 0x0118cc, 1, 0x0118ac, /* WARANG CITI CAPITAL LETTER KO */
+ /*3831*/ 0x0118cd, 1, 0x0118ad, /* WARANG CITI CAPITAL LETTER ENY */
+ /*3834*/ 0x0118ce, 1, 0x0118ae, /* WARANG CITI CAPITAL LETTER YUJ */
+ /*3837*/ 0x0118cf, 1, 0x0118af, /* WARANG CITI CAPITAL LETTER UC */
+ /*3840*/ 0x0118d0, 1, 0x0118b0, /* WARANG CITI CAPITAL LETTER ENN */
+ /*3843*/ 0x0118d1, 1, 0x0118b1, /* WARANG CITI CAPITAL LETTER ODD */
+ /*3846*/ 0x0118d2, 1, 0x0118b2, /* WARANG CITI CAPITAL LETTER TTE */
+ /*3849*/ 0x0118d3, 1, 0x0118b3, /* WARANG CITI CAPITAL LETTER NUNG */
+ /*3852*/ 0x0118d4, 1, 0x0118b4, /* WARANG CITI CAPITAL LETTER DA */
+ /*3855*/ 0x0118d5, 1, 0x0118b5, /* WARANG CITI CAPITAL LETTER AT */
+ /*3858*/ 0x0118d6, 1, 0x0118b6, /* WARANG CITI CAPITAL LETTER AM */
+ /*3861*/ 0x0118d7, 1, 0x0118b7, /* WARANG CITI CAPITAL LETTER BU */
+ /*3864*/ 0x0118d8, 1, 0x0118b8, /* WARANG CITI CAPITAL LETTER PU */
+ /*3867*/ 0x0118d9, 1, 0x0118b9, /* WARANG CITI CAPITAL LETTER HIYO */
+ /*3870*/ 0x0118da, 1, 0x0118ba, /* WARANG CITI CAPITAL LETTER HOLO */
+ /*3873*/ 0x0118db, 1, 0x0118bb, /* WARANG CITI CAPITAL LETTER HORR */
+ /*3876*/ 0x0118dc, 1, 0x0118bc, /* WARANG CITI CAPITAL LETTER HAR */
+ /*3879*/ 0x0118dd, 1, 0x0118bd, /* WARANG CITI CAPITAL LETTER SSUU */
+ /*3882*/ 0x0118de, 1, 0x0118be, /* WARANG CITI CAPITAL LETTER SII */
+ /*3885*/ 0x0118df, 1, 0x0118bf, /* WARANG CITI CAPITAL LETTER VIYO */
+ /*3888*/ 0x016e60, 1, 0x016e40, /* MEDEFAIDRIN CAPITAL LETTER M */
+ /*3891*/ 0x016e61, 1, 0x016e41, /* MEDEFAIDRIN CAPITAL LETTER S */
+ /*3894*/ 0x016e62, 1, 0x016e42, /* MEDEFAIDRIN CAPITAL LETTER V */
+ /*3897*/ 0x016e63, 1, 0x016e43, /* MEDEFAIDRIN CAPITAL LETTER W */
+ /*3900*/ 0x016e64, 1, 0x016e44, /* MEDEFAIDRIN CAPITAL LETTER ATIU */
+ /*3903*/ 0x016e65, 1, 0x016e45, /* MEDEFAIDRIN CAPITAL LETTER Z */
+ /*3906*/ 0x016e66, 1, 0x016e46, /* MEDEFAIDRIN CAPITAL LETTER KP */
+ /*3909*/ 0x016e67, 1, 0x016e47, /* MEDEFAIDRIN CAPITAL LETTER P */
+ /*3912*/ 0x016e68, 1, 0x016e48, /* MEDEFAIDRIN CAPITAL LETTER T */
+ /*3915*/ 0x016e69, 1, 0x016e49, /* MEDEFAIDRIN CAPITAL LETTER G */
+ /*3918*/ 0x016e6a, 1, 0x016e4a, /* MEDEFAIDRIN CAPITAL LETTER F */
+ /*3921*/ 0x016e6b, 1, 0x016e4b, /* MEDEFAIDRIN CAPITAL LETTER I */
+ /*3924*/ 0x016e6c, 1, 0x016e4c, /* MEDEFAIDRIN CAPITAL LETTER K */
+ /*3927*/ 0x016e6d, 1, 0x016e4d, /* MEDEFAIDRIN CAPITAL LETTER A */
+ /*3930*/ 0x016e6e, 1, 0x016e4e, /* MEDEFAIDRIN CAPITAL LETTER J */
+ /*3933*/ 0x016e6f, 1, 0x016e4f, /* MEDEFAIDRIN CAPITAL LETTER E */
+ /*3936*/ 0x016e70, 1, 0x016e50, /* MEDEFAIDRIN CAPITAL LETTER B */
+ /*3939*/ 0x016e71, 1, 0x016e51, /* MEDEFAIDRIN CAPITAL LETTER C */
+ /*3942*/ 0x016e72, 1, 0x016e52, /* MEDEFAIDRIN CAPITAL LETTER U */
+ /*3945*/ 0x016e73, 1, 0x016e53, /* MEDEFAIDRIN CAPITAL LETTER YU */
+ /*3948*/ 0x016e74, 1, 0x016e54, /* MEDEFAIDRIN CAPITAL LETTER L */
+ /*3951*/ 0x016e75, 1, 0x016e55, /* MEDEFAIDRIN CAPITAL LETTER Q */
+ /*3954*/ 0x016e76, 1, 0x016e56, /* MEDEFAIDRIN CAPITAL LETTER HP */
+ /*3957*/ 0x016e77, 1, 0x016e57, /* MEDEFAIDRIN CAPITAL LETTER NY */
+ /*3960*/ 0x016e78, 1, 0x016e58, /* MEDEFAIDRIN CAPITAL LETTER X */
+ /*3963*/ 0x016e79, 1, 0x016e59, /* MEDEFAIDRIN CAPITAL LETTER D */
+ /*3966*/ 0x016e7a, 1, 0x016e5a, /* MEDEFAIDRIN CAPITAL LETTER OE */
+ /*3969*/ 0x016e7b, 1, 0x016e5b, /* MEDEFAIDRIN CAPITAL LETTER N */
+ /*3972*/ 0x016e7c, 1, 0x016e5c, /* MEDEFAIDRIN CAPITAL LETTER R */
+ /*3975*/ 0x016e7d, 1, 0x016e5d, /* MEDEFAIDRIN CAPITAL LETTER O */
+ /*3978*/ 0x016e7e, 1, 0x016e5e, /* MEDEFAIDRIN CAPITAL LETTER AI */
+ /*3981*/ 0x016e7f, 1, 0x016e5f, /* MEDEFAIDRIN CAPITAL LETTER Y */
+ /*3984*/ 0x01e922, 1, 0x01e900, /* ADLAM CAPITAL LETTER ALIF */
+ /*3987*/ 0x01e923, 1, 0x01e901, /* ADLAM CAPITAL LETTER DAALI */
+ /*3990*/ 0x01e924, 1, 0x01e902, /* ADLAM CAPITAL LETTER LAAM */
+ /*3993*/ 0x01e925, 1, 0x01e903, /* ADLAM CAPITAL LETTER MIIM */
+ /*3996*/ 0x01e926, 1, 0x01e904, /* ADLAM CAPITAL LETTER BA */
+ /*3999*/ 0x01e927, 1, 0x01e905, /* ADLAM CAPITAL LETTER SINNYIIYHE */
+ /*4002*/ 0x01e928, 1, 0x01e906, /* ADLAM CAPITAL LETTER PE */
+ /*4005*/ 0x01e929, 1, 0x01e907, /* ADLAM CAPITAL LETTER BHE */
+ /*4008*/ 0x01e92a, 1, 0x01e908, /* ADLAM CAPITAL LETTER RA */
+ /*4011*/ 0x01e92b, 1, 0x01e909, /* ADLAM CAPITAL LETTER E */
+ /*4014*/ 0x01e92c, 1, 0x01e90a, /* ADLAM CAPITAL LETTER FA */
+ /*4017*/ 0x01e92d, 1, 0x01e90b, /* ADLAM CAPITAL LETTER I */
+ /*4020*/ 0x01e92e, 1, 0x01e90c, /* ADLAM CAPITAL LETTER O */
+ /*4023*/ 0x01e92f, 1, 0x01e90d, /* ADLAM CAPITAL LETTER DHA */
+ /*4026*/ 0x01e930, 1, 0x01e90e, /* ADLAM CAPITAL LETTER YHE */
+ /*4029*/ 0x01e931, 1, 0x01e90f, /* ADLAM CAPITAL LETTER WAW */
+ /*4032*/ 0x01e932, 1, 0x01e910, /* ADLAM CAPITAL LETTER NUN */
+ /*4035*/ 0x01e933, 1, 0x01e911, /* ADLAM CAPITAL LETTER KAF */
+ /*4038*/ 0x01e934, 1, 0x01e912, /* ADLAM CAPITAL LETTER YA */
+ /*4041*/ 0x01e935, 1, 0x01e913, /* ADLAM CAPITAL LETTER U */
+ /*4044*/ 0x01e936, 1, 0x01e914, /* ADLAM CAPITAL LETTER JIIM */
+ /*4047*/ 0x01e937, 1, 0x01e915, /* ADLAM CAPITAL LETTER CHI */
+ /*4050*/ 0x01e938, 1, 0x01e916, /* ADLAM CAPITAL LETTER HA */
+ /*4053*/ 0x01e939, 1, 0x01e917, /* ADLAM CAPITAL LETTER QAAF */
+ /*4056*/ 0x01e93a, 1, 0x01e918, /* ADLAM CAPITAL LETTER GA */
+ /*4059*/ 0x01e93b, 1, 0x01e919, /* ADLAM CAPITAL LETTER NYA */
+ /*4062*/ 0x01e93c, 1, 0x01e91a, /* ADLAM CAPITAL LETTER TU */
+ /*4065*/ 0x01e93d, 1, 0x01e91b, /* ADLAM CAPITAL LETTER NHA */
+ /*4068*/ 0x01e93e, 1, 0x01e91c, /* ADLAM CAPITAL LETTER VA */
+ /*4071*/ 0x01e93f, 1, 0x01e91d, /* ADLAM CAPITAL LETTER KHA */
+ /*4074*/ 0x01e940, 1, 0x01e91e, /* ADLAM CAPITAL LETTER GBE */
+ /*4077*/ 0x01e941, 1, 0x01e91f, /* ADLAM CAPITAL LETTER ZAL */
+ /*4080*/ 0x01e942, 1, 0x01e920, /* ADLAM CAPITAL LETTER KPO */
+ /*4083*/ 0x01e943, 1, 0x01e921, /* ADLAM CAPITAL LETTER SHA */
+#define FOLDS1_NORMAL_END_INDEX 4086
/* ----- LOCALE ----- */
- /*4065*/ 0x0069, 1, 0x0049, /* LATIN CAPITAL LETTER I */
-#define FOLDS1_END_INDEX 4068
+ /*4086*/ 0x0069, 1, 0x0049, /* LATIN CAPITAL LETTER I */
+#define FOLDS1_END_INDEX 4089
};
OnigCodePoint OnigUnicodeFolds2[] = {
@@ -1513,4 +1520,3 @@ OnigCodePoint OnigUnicodeFolds3[] = {
/* ----- LOCALE ----- */
#define FOLDS3_END_INDEX 72
};
-
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_property_data.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_property_data.c
index 06f6f13bdd..b06997b831 100644
--- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_property_data.c
+++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_property_data.c
@@ -1,5 +1,5 @@
/* ANSI-C code produced by gperf version 3.1 */
-/* Command-line: /usr/bin/gperf -T -C -c -t -j1 -L ANSI-C --ignore-case --pic -Q unicode_prop_name_pool -N unicode_lookup_property_name --output-file gperf1.tmp unicode_property_data.gperf */
+/* Command-line: /usr/local/bin/gperf -T -C -c -t -j1 -L ANSI-C --ignore-case --pic -Q unicode_prop_name_pool -N unicode_lookup_property_name --output-file gperf1.tmp unicode_property_data.gperf */
/* Computed positions: -k'1-3,5-6,12,16,$' */
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
@@ -42,7 +42,7 @@ CR_NEWLINE[] = { 1,
/* PROPERTY: 'Alpha': POSIX [[:Alpha:]] */
static const OnigCodePoint
-CR_Alpha[] = { 676,
+CR_Alpha[] = { 679,
0x0041, 0x005a,
0x0061, 0x007a,
0x00aa, 0x00aa,
@@ -226,16 +226,10 @@ CR_Alpha[] = { 676,
0x0e4d, 0x0e4d,
0x0e81, 0x0e82,
0x0e84, 0x0e84,
-0x0e87, 0x0e88,
-0x0e8a, 0x0e8a,
-0x0e8d, 0x0e8d,
-0x0e94, 0x0e97,
-0x0e99, 0x0e9f,
-0x0ea1, 0x0ea3,
+0x0e86, 0x0e8a,
+0x0e8c, 0x0ea3,
0x0ea5, 0x0ea5,
-0x0ea7, 0x0ea7,
-0x0eaa, 0x0eab,
-0x0ead, 0x0eb9,
+0x0ea7, 0x0eb9,
0x0ebb, 0x0ebd,
0x0ec0, 0x0ec4,
0x0ec6, 0x0ec6,
@@ -250,11 +244,8 @@ CR_Alpha[] = { 676,
0x1000, 0x1036,
0x1038, 0x1038,
0x103b, 0x103f,
-0x1050, 0x1062,
-0x1065, 0x1068,
-0x106e, 0x1086,
-0x108e, 0x108e,
-0x109c, 0x109d,
+0x1050, 0x108f,
+0x109a, 0x109d,
0x10a0, 0x10c5,
0x10c7, 0x10c7,
0x10cd, 0x10cd,
@@ -275,7 +266,6 @@ CR_Alpha[] = { 676,
0x12d8, 0x1310,
0x1312, 0x1315,
0x1318, 0x135a,
-0x135f, 0x135f,
0x1380, 0x138f,
0x13a0, 0x13f5,
0x13f8, 0x13fd,
@@ -316,7 +306,7 @@ CR_Alpha[] = { 676,
0x1bac, 0x1baf,
0x1bba, 0x1be5,
0x1be7, 0x1bf1,
-0x1c00, 0x1c35,
+0x1c00, 0x1c36,
0x1c4d, 0x1c4f,
0x1c5a, 0x1c7d,
0x1c80, 0x1c88,
@@ -325,6 +315,7 @@ CR_Alpha[] = { 676,
0x1ce9, 0x1cec,
0x1cee, 0x1cf3,
0x1cf5, 0x1cf6,
+0x1cfa, 0x1cfa,
0x1d00, 0x1dbf,
0x1de7, 0x1df4,
0x1e00, 0x1f15,
@@ -409,31 +400,28 @@ CR_Alpha[] = { 676,
0xa67f, 0xa6ef,
0xa717, 0xa71f,
0xa722, 0xa788,
-0xa78b, 0xa7b9,
-0xa7f7, 0xa801,
-0xa803, 0xa805,
-0xa807, 0xa80a,
-0xa80c, 0xa827,
+0xa78b, 0xa7bf,
+0xa7c2, 0xa7c6,
+0xa7f7, 0xa805,
+0xa807, 0xa827,
0xa840, 0xa873,
0xa880, 0xa8c3,
0xa8c5, 0xa8c5,
0xa8f2, 0xa8f7,
0xa8fb, 0xa8fb,
-0xa8fd, 0xa8fe,
+0xa8fd, 0xa8ff,
0xa90a, 0xa92a,
0xa930, 0xa952,
0xa960, 0xa97c,
0xa980, 0xa9b2,
0xa9b4, 0xa9bf,
0xa9cf, 0xa9cf,
-0xa9e0, 0xa9e4,
-0xa9e6, 0xa9ef,
+0xa9e0, 0xa9ef,
0xa9fa, 0xa9fe,
0xaa00, 0xaa36,
0xaa40, 0xaa4d,
0xaa60, 0xaa76,
-0xaa7a, 0xaa7a,
-0xaa7e, 0xaabe,
+0xaa7a, 0xaabe,
0xaac0, 0xaac0,
0xaac2, 0xaac2,
0xaadb, 0xaadd,
@@ -445,7 +433,7 @@ CR_Alpha[] = { 676,
0xab20, 0xab26,
0xab28, 0xab2e,
0xab30, 0xab5a,
-0xab5c, 0xab65,
+0xab5c, 0xab67,
0xab70, 0xabea,
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
@@ -533,6 +521,7 @@ CR_Alpha[] = { 676,
0x10f00, 0x10f1c,
0x10f27, 0x10f27,
0x10f30, 0x10f45,
+0x10fe0, 0x10ff6,
0x11000, 0x11045,
0x11082, 0x110b8,
0x110d0, 0x110e8,
@@ -570,6 +559,7 @@ CR_Alpha[] = { 676,
0x11400, 0x11441,
0x11443, 0x11445,
0x11447, 0x1144a,
+0x1145f, 0x1145f,
0x11480, 0x114c1,
0x114c4, 0x114c5,
0x114c7, 0x114c7,
@@ -580,15 +570,20 @@ CR_Alpha[] = { 676,
0x11640, 0x11640,
0x11644, 0x11644,
0x11680, 0x116b5,
+0x116b8, 0x116b8,
0x11700, 0x1171a,
0x1171d, 0x1172a,
0x11800, 0x11838,
0x118a0, 0x118df,
0x118ff, 0x118ff,
+0x119a0, 0x119a7,
+0x119aa, 0x119d7,
+0x119da, 0x119df,
+0x119e1, 0x119e1,
+0x119e3, 0x119e4,
0x11a00, 0x11a32,
0x11a35, 0x11a3e,
-0x11a50, 0x11a83,
-0x11a86, 0x11a97,
+0x11a50, 0x11a97,
0x11a9d, 0x11a9d,
0x11ac0, 0x11af8,
0x11c00, 0x11c08,
@@ -621,18 +616,21 @@ CR_Alpha[] = { 676,
0x16800, 0x16a38,
0x16a40, 0x16a5e,
0x16ad0, 0x16aed,
-0x16b00, 0x16b36,
+0x16b00, 0x16b2f,
0x16b40, 0x16b43,
0x16b63, 0x16b77,
0x16b7d, 0x16b8f,
0x16e40, 0x16e7f,
-0x16f00, 0x16f44,
-0x16f50, 0x16f7e,
-0x16f93, 0x16f9f,
+0x16f00, 0x16f4a,
+0x16f4f, 0x16f87,
+0x16f8f, 0x16f9f,
0x16fe0, 0x16fe1,
-0x17000, 0x187f1,
+0x16fe3, 0x16fe3,
+0x17000, 0x187f7,
0x18800, 0x18af2,
0x1b000, 0x1b11e,
+0x1b150, 0x1b152,
+0x1b164, 0x1b167,
0x1b170, 0x1b2fb,
0x1bc00, 0x1bc6a,
0x1bc70, 0x1bc7c,
@@ -674,9 +672,14 @@ CR_Alpha[] = { 676,
0x1e01b, 0x1e021,
0x1e023, 0x1e024,
0x1e026, 0x1e02a,
+0x1e100, 0x1e12c,
+0x1e137, 0x1e13d,
+0x1e14e, 0x1e14e,
+0x1e2c0, 0x1e2eb,
0x1e800, 0x1e8c4,
0x1e900, 0x1e943,
0x1e947, 0x1e947,
+0x1e94b, 0x1e94b,
0x1ee00, 0x1ee03,
0x1ee05, 0x1ee1f,
0x1ee21, 0x1ee22,
@@ -743,7 +746,7 @@ CR_Cntrl[] = { 2,
/* PROPERTY: 'Digit': POSIX [[:Digit:]] */
static const OnigCodePoint
-CR_Digit[] = { 57,
+CR_Digit[] = { 59,
0x0030, 0x0039,
0x0660, 0x0669,
0x06f0, 0x06f9,
@@ -800,12 +803,14 @@ CR_Digit[] = { 57,
0x16a60, 0x16a69,
0x16b50, 0x16b59,
0x1d7ce, 0x1d7ff,
+0x1e140, 0x1e149,
+0x1e2f0, 0x1e2f9,
0x1e950, 0x1e959,
}; /* END of CR_Digit */
/* PROPERTY: 'Graph': POSIX [[:Graph:]] */
static const OnigCodePoint
-CR_Graph[] = { 663,
+CR_Graph[] = { 671,
0x0021, 0x007e,
0x00a1, 0x0377,
0x037a, 0x037f,
@@ -916,7 +921,7 @@ CR_Graph[] = { 663,
0x0c58, 0x0c5a,
0x0c60, 0x0c63,
0x0c66, 0x0c6f,
-0x0c78, 0x0c8c,
+0x0c77, 0x0c8c,
0x0c8e, 0x0c90,
0x0c92, 0x0ca8,
0x0caa, 0x0cb3,
@@ -953,17 +958,10 @@ CR_Graph[] = { 663,
0x0e3f, 0x0e5b,
0x0e81, 0x0e82,
0x0e84, 0x0e84,
-0x0e87, 0x0e88,
-0x0e8a, 0x0e8a,
-0x0e8d, 0x0e8d,
-0x0e94, 0x0e97,
-0x0e99, 0x0e9f,
-0x0ea1, 0x0ea3,
+0x0e86, 0x0e8a,
+0x0e8c, 0x0ea3,
0x0ea5, 0x0ea5,
-0x0ea7, 0x0ea7,
-0x0eaa, 0x0eab,
-0x0ead, 0x0eb9,
-0x0ebb, 0x0ebd,
+0x0ea7, 0x0ebd,
0x0ec0, 0x0ec4,
0x0ec6, 0x0ec6,
0x0ec8, 0x0ecd,
@@ -1040,7 +1038,7 @@ CR_Graph[] = { 663,
0x1c4d, 0x1c88,
0x1c90, 0x1cba,
0x1cbd, 0x1cc7,
-0x1cd0, 0x1cf9,
+0x1cd0, 0x1cfa,
0x1d00, 0x1df9,
0x1dfb, 0x1f15,
0x1f18, 0x1f1d,
@@ -1072,9 +1070,7 @@ CR_Graph[] = { 663,
0x2440, 0x244a,
0x2460, 0x2b73,
0x2b76, 0x2b95,
-0x2b98, 0x2bc8,
-0x2bca, 0x2bfe,
-0x2c00, 0x2c2e,
+0x2b98, 0x2c2e,
0x2c30, 0x2c5e,
0x2c60, 0x2cf3,
0x2cf9, 0x2d25,
@@ -1091,7 +1087,7 @@ CR_Graph[] = { 663,
0x2dc8, 0x2dce,
0x2dd0, 0x2dd6,
0x2dd8, 0x2dde,
-0x2de0, 0x2e4e,
+0x2de0, 0x2e4f,
0x2e80, 0x2e99,
0x2e9b, 0x2ef3,
0x2f00, 0x2fd5,
@@ -1104,14 +1100,14 @@ CR_Graph[] = { 663,
0x3190, 0x31ba,
0x31c0, 0x31e3,
0x31f0, 0x321e,
-0x3220, 0x32fe,
-0x3300, 0x4db5,
+0x3220, 0x4db5,
0x4dc0, 0x9fef,
0xa000, 0xa48c,
0xa490, 0xa4c6,
0xa4d0, 0xa62b,
0xa640, 0xa6f7,
-0xa700, 0xa7b9,
+0xa700, 0xa7bf,
+0xa7c2, 0xa7c6,
0xa7f7, 0xa82b,
0xa830, 0xa839,
0xa840, 0xa877,
@@ -1132,7 +1128,7 @@ CR_Graph[] = { 663,
0xab11, 0xab16,
0xab20, 0xab26,
0xab28, 0xab2e,
-0xab30, 0xab65,
+0xab30, 0xab67,
0xab70, 0xabed,
0xabf0, 0xabf9,
0xac00, 0xd7a3,
@@ -1239,6 +1235,7 @@ CR_Graph[] = { 663,
0x10e60, 0x10e7e,
0x10f00, 0x10f27,
0x10f30, 0x10f59,
+0x10fe0, 0x10ff6,
0x11000, 0x1104d,
0x11052, 0x1106f,
0x1107f, 0x110c1,
@@ -1277,7 +1274,7 @@ CR_Graph[] = { 663,
0x11370, 0x11374,
0x11400, 0x11459,
0x1145b, 0x1145b,
-0x1145d, 0x1145e,
+0x1145d, 0x1145f,
0x11480, 0x114c7,
0x114d0, 0x114d9,
0x11580, 0x115b5,
@@ -1285,7 +1282,7 @@ CR_Graph[] = { 663,
0x11600, 0x11644,
0x11650, 0x11659,
0x11660, 0x1166c,
-0x11680, 0x116b7,
+0x11680, 0x116b8,
0x116c0, 0x116c9,
0x11700, 0x1171a,
0x1171d, 0x1172b,
@@ -1293,9 +1290,11 @@ CR_Graph[] = { 663,
0x11800, 0x1183b,
0x118a0, 0x118f2,
0x118ff, 0x118ff,
+0x119a0, 0x119a7,
+0x119aa, 0x119d7,
+0x119da, 0x119e4,
0x11a00, 0x11a47,
-0x11a50, 0x11a83,
-0x11a86, 0x11aa2,
+0x11a50, 0x11aa2,
0x11ac0, 0x11af8,
0x11c00, 0x11c08,
0x11c0a, 0x11c36,
@@ -1318,11 +1317,13 @@ CR_Graph[] = { 663,
0x11d93, 0x11d98,
0x11da0, 0x11da9,
0x11ee0, 0x11ef8,
-0x12000, 0x12399,
+0x11fc0, 0x11ff1,
+0x11fff, 0x12399,
0x12400, 0x1246e,
0x12470, 0x12474,
0x12480, 0x12543,
0x13000, 0x1342e,
+0x13430, 0x13438,
0x14400, 0x14646,
0x16800, 0x16a38,
0x16a40, 0x16a5e,
@@ -1336,13 +1337,15 @@ CR_Graph[] = { 663,
0x16b63, 0x16b77,
0x16b7d, 0x16b8f,
0x16e40, 0x16e9a,
-0x16f00, 0x16f44,
-0x16f50, 0x16f7e,
+0x16f00, 0x16f4a,
+0x16f4f, 0x16f87,
0x16f8f, 0x16f9f,
-0x16fe0, 0x16fe1,
-0x17000, 0x187f1,
+0x16fe0, 0x16fe3,
+0x17000, 0x187f7,
0x18800, 0x18af2,
0x1b000, 0x1b11e,
+0x1b150, 0x1b152,
+0x1b164, 0x1b167,
0x1b170, 0x1b2fb,
0x1bc00, 0x1bc6a,
0x1bc70, 0x1bc7c,
@@ -1384,12 +1387,19 @@ CR_Graph[] = { 663,
0x1e01b, 0x1e021,
0x1e023, 0x1e024,
0x1e026, 0x1e02a,
+0x1e100, 0x1e12c,
+0x1e130, 0x1e13d,
+0x1e140, 0x1e149,
+0x1e14e, 0x1e14f,
+0x1e2c0, 0x1e2f9,
+0x1e2ff, 0x1e2ff,
0x1e800, 0x1e8c4,
0x1e8c7, 0x1e8d6,
-0x1e900, 0x1e94a,
+0x1e900, 0x1e94b,
0x1e950, 0x1e959,
0x1e95e, 0x1e95f,
0x1ec71, 0x1ecb4,
+0x1ed01, 0x1ed3d,
0x1ee00, 0x1ee03,
0x1ee05, 0x1ee1f,
0x1ee21, 0x1ee22,
@@ -1431,33 +1441,36 @@ CR_Graph[] = { 663,
0x1f0c1, 0x1f0cf,
0x1f0d1, 0x1f0f5,
0x1f100, 0x1f10c,
-0x1f110, 0x1f16b,
+0x1f110, 0x1f16c,
0x1f170, 0x1f1ac,
0x1f1e6, 0x1f202,
0x1f210, 0x1f23b,
0x1f240, 0x1f248,
0x1f250, 0x1f251,
0x1f260, 0x1f265,
-0x1f300, 0x1f6d4,
+0x1f300, 0x1f6d5,
0x1f6e0, 0x1f6ec,
-0x1f6f0, 0x1f6f9,
+0x1f6f0, 0x1f6fa,
0x1f700, 0x1f773,
0x1f780, 0x1f7d8,
+0x1f7e0, 0x1f7eb,
0x1f800, 0x1f80b,
0x1f810, 0x1f847,
0x1f850, 0x1f859,
0x1f860, 0x1f887,
0x1f890, 0x1f8ad,
0x1f900, 0x1f90b,
-0x1f910, 0x1f93e,
-0x1f940, 0x1f970,
+0x1f90d, 0x1f971,
0x1f973, 0x1f976,
-0x1f97a, 0x1f97a,
-0x1f97c, 0x1f9a2,
-0x1f9b0, 0x1f9b9,
-0x1f9c0, 0x1f9c2,
-0x1f9d0, 0x1f9ff,
+0x1f97a, 0x1f9a2,
+0x1f9a5, 0x1f9aa,
+0x1f9ae, 0x1f9ca,
+0x1f9cd, 0x1fa53,
0x1fa60, 0x1fa6d,
+0x1fa70, 0x1fa73,
+0x1fa78, 0x1fa7a,
+0x1fa80, 0x1fa82,
+0x1fa90, 0x1fa95,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
@@ -1473,7 +1486,7 @@ CR_Graph[] = { 663,
/* PROPERTY: 'Lower': POSIX [[:Lower:]] */
static const OnigCodePoint
-CR_Lower[] = { 645,
+CR_Lower[] = { 649,
0x0061, 0x007a,
0x00aa, 0x00aa,
0x00b5, 0x00b5,
@@ -2078,9 +2091,13 @@ CR_Lower[] = { 645,
0xa7b5, 0xa7b5,
0xa7b7, 0xa7b7,
0xa7b9, 0xa7b9,
+0xa7bb, 0xa7bb,
+0xa7bd, 0xa7bd,
+0xa7bf, 0xa7bf,
+0xa7c3, 0xa7c3,
0xa7f8, 0xa7fa,
0xab30, 0xab5a,
-0xab5c, 0xab65,
+0xab5c, 0xab67,
0xab70, 0xabbf,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -2123,7 +2140,7 @@ CR_Lower[] = { 645,
/* PROPERTY: 'Print': POSIX [[:Print:]] */
static const OnigCodePoint
-CR_Print[] = { 660,
+CR_Print[] = { 668,
0x0020, 0x007e,
0x00a0, 0x0377,
0x037a, 0x037f,
@@ -2234,7 +2251,7 @@ CR_Print[] = { 660,
0x0c58, 0x0c5a,
0x0c60, 0x0c63,
0x0c66, 0x0c6f,
-0x0c78, 0x0c8c,
+0x0c77, 0x0c8c,
0x0c8e, 0x0c90,
0x0c92, 0x0ca8,
0x0caa, 0x0cb3,
@@ -2271,17 +2288,10 @@ CR_Print[] = { 660,
0x0e3f, 0x0e5b,
0x0e81, 0x0e82,
0x0e84, 0x0e84,
-0x0e87, 0x0e88,
-0x0e8a, 0x0e8a,
-0x0e8d, 0x0e8d,
-0x0e94, 0x0e97,
-0x0e99, 0x0e9f,
-0x0ea1, 0x0ea3,
+0x0e86, 0x0e8a,
+0x0e8c, 0x0ea3,
0x0ea5, 0x0ea5,
-0x0ea7, 0x0ea7,
-0x0eaa, 0x0eab,
-0x0ead, 0x0eb9,
-0x0ebb, 0x0ebd,
+0x0ea7, 0x0ebd,
0x0ec0, 0x0ec4,
0x0ec6, 0x0ec6,
0x0ec8, 0x0ecd,
@@ -2357,7 +2367,7 @@ CR_Print[] = { 660,
0x1c4d, 0x1c88,
0x1c90, 0x1cba,
0x1cbd, 0x1cc7,
-0x1cd0, 0x1cf9,
+0x1cd0, 0x1cfa,
0x1d00, 0x1df9,
0x1dfb, 0x1f15,
0x1f18, 0x1f1d,
@@ -2387,9 +2397,7 @@ CR_Print[] = { 660,
0x2440, 0x244a,
0x2460, 0x2b73,
0x2b76, 0x2b95,
-0x2b98, 0x2bc8,
-0x2bca, 0x2bfe,
-0x2c00, 0x2c2e,
+0x2b98, 0x2c2e,
0x2c30, 0x2c5e,
0x2c60, 0x2cf3,
0x2cf9, 0x2d25,
@@ -2406,7 +2414,7 @@ CR_Print[] = { 660,
0x2dc8, 0x2dce,
0x2dd0, 0x2dd6,
0x2dd8, 0x2dde,
-0x2de0, 0x2e4e,
+0x2de0, 0x2e4f,
0x2e80, 0x2e99,
0x2e9b, 0x2ef3,
0x2f00, 0x2fd5,
@@ -2419,14 +2427,14 @@ CR_Print[] = { 660,
0x3190, 0x31ba,
0x31c0, 0x31e3,
0x31f0, 0x321e,
-0x3220, 0x32fe,
-0x3300, 0x4db5,
+0x3220, 0x4db5,
0x4dc0, 0x9fef,
0xa000, 0xa48c,
0xa490, 0xa4c6,
0xa4d0, 0xa62b,
0xa640, 0xa6f7,
-0xa700, 0xa7b9,
+0xa700, 0xa7bf,
+0xa7c2, 0xa7c6,
0xa7f7, 0xa82b,
0xa830, 0xa839,
0xa840, 0xa877,
@@ -2447,7 +2455,7 @@ CR_Print[] = { 660,
0xab11, 0xab16,
0xab20, 0xab26,
0xab28, 0xab2e,
-0xab30, 0xab65,
+0xab30, 0xab67,
0xab70, 0xabed,
0xabf0, 0xabf9,
0xac00, 0xd7a3,
@@ -2554,6 +2562,7 @@ CR_Print[] = { 660,
0x10e60, 0x10e7e,
0x10f00, 0x10f27,
0x10f30, 0x10f59,
+0x10fe0, 0x10ff6,
0x11000, 0x1104d,
0x11052, 0x1106f,
0x1107f, 0x110c1,
@@ -2592,7 +2601,7 @@ CR_Print[] = { 660,
0x11370, 0x11374,
0x11400, 0x11459,
0x1145b, 0x1145b,
-0x1145d, 0x1145e,
+0x1145d, 0x1145f,
0x11480, 0x114c7,
0x114d0, 0x114d9,
0x11580, 0x115b5,
@@ -2600,7 +2609,7 @@ CR_Print[] = { 660,
0x11600, 0x11644,
0x11650, 0x11659,
0x11660, 0x1166c,
-0x11680, 0x116b7,
+0x11680, 0x116b8,
0x116c0, 0x116c9,
0x11700, 0x1171a,
0x1171d, 0x1172b,
@@ -2608,9 +2617,11 @@ CR_Print[] = { 660,
0x11800, 0x1183b,
0x118a0, 0x118f2,
0x118ff, 0x118ff,
+0x119a0, 0x119a7,
+0x119aa, 0x119d7,
+0x119da, 0x119e4,
0x11a00, 0x11a47,
-0x11a50, 0x11a83,
-0x11a86, 0x11aa2,
+0x11a50, 0x11aa2,
0x11ac0, 0x11af8,
0x11c00, 0x11c08,
0x11c0a, 0x11c36,
@@ -2633,11 +2644,13 @@ CR_Print[] = { 660,
0x11d93, 0x11d98,
0x11da0, 0x11da9,
0x11ee0, 0x11ef8,
-0x12000, 0x12399,
+0x11fc0, 0x11ff1,
+0x11fff, 0x12399,
0x12400, 0x1246e,
0x12470, 0x12474,
0x12480, 0x12543,
0x13000, 0x1342e,
+0x13430, 0x13438,
0x14400, 0x14646,
0x16800, 0x16a38,
0x16a40, 0x16a5e,
@@ -2651,13 +2664,15 @@ CR_Print[] = { 660,
0x16b63, 0x16b77,
0x16b7d, 0x16b8f,
0x16e40, 0x16e9a,
-0x16f00, 0x16f44,
-0x16f50, 0x16f7e,
+0x16f00, 0x16f4a,
+0x16f4f, 0x16f87,
0x16f8f, 0x16f9f,
-0x16fe0, 0x16fe1,
-0x17000, 0x187f1,
+0x16fe0, 0x16fe3,
+0x17000, 0x187f7,
0x18800, 0x18af2,
0x1b000, 0x1b11e,
+0x1b150, 0x1b152,
+0x1b164, 0x1b167,
0x1b170, 0x1b2fb,
0x1bc00, 0x1bc6a,
0x1bc70, 0x1bc7c,
@@ -2699,12 +2714,19 @@ CR_Print[] = { 660,
0x1e01b, 0x1e021,
0x1e023, 0x1e024,
0x1e026, 0x1e02a,
+0x1e100, 0x1e12c,
+0x1e130, 0x1e13d,
+0x1e140, 0x1e149,
+0x1e14e, 0x1e14f,
+0x1e2c0, 0x1e2f9,
+0x1e2ff, 0x1e2ff,
0x1e800, 0x1e8c4,
0x1e8c7, 0x1e8d6,
-0x1e900, 0x1e94a,
+0x1e900, 0x1e94b,
0x1e950, 0x1e959,
0x1e95e, 0x1e95f,
0x1ec71, 0x1ecb4,
+0x1ed01, 0x1ed3d,
0x1ee00, 0x1ee03,
0x1ee05, 0x1ee1f,
0x1ee21, 0x1ee22,
@@ -2746,33 +2768,36 @@ CR_Print[] = { 660,
0x1f0c1, 0x1f0cf,
0x1f0d1, 0x1f0f5,
0x1f100, 0x1f10c,
-0x1f110, 0x1f16b,
+0x1f110, 0x1f16c,
0x1f170, 0x1f1ac,
0x1f1e6, 0x1f202,
0x1f210, 0x1f23b,
0x1f240, 0x1f248,
0x1f250, 0x1f251,
0x1f260, 0x1f265,
-0x1f300, 0x1f6d4,
+0x1f300, 0x1f6d5,
0x1f6e0, 0x1f6ec,
-0x1f6f0, 0x1f6f9,
+0x1f6f0, 0x1f6fa,
0x1f700, 0x1f773,
0x1f780, 0x1f7d8,
+0x1f7e0, 0x1f7eb,
0x1f800, 0x1f80b,
0x1f810, 0x1f847,
0x1f850, 0x1f859,
0x1f860, 0x1f887,
0x1f890, 0x1f8ad,
0x1f900, 0x1f90b,
-0x1f910, 0x1f93e,
-0x1f940, 0x1f970,
+0x1f90d, 0x1f971,
0x1f973, 0x1f976,
-0x1f97a, 0x1f97a,
-0x1f97c, 0x1f9a2,
-0x1f9b0, 0x1f9b9,
-0x1f9c0, 0x1f9c2,
-0x1f9d0, 0x1f9ff,
+0x1f97a, 0x1f9a2,
+0x1f9a5, 0x1f9aa,
+0x1f9ae, 0x1f9ca,
+0x1f9cd, 0x1fa53,
0x1fa60, 0x1fa6d,
+0x1fa70, 0x1fa73,
+0x1fa78, 0x1fa7a,
+0x1fa80, 0x1fa82,
+0x1fa90, 0x1fa95,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
@@ -2788,7 +2813,7 @@ CR_Print[] = { 660,
/* PROPERTY: 'Punct': POSIX [[:Punct:]] */
static const OnigCodePoint
-CR_Punct[] = { 178,
+CR_Punct[] = { 182,
0x0021, 0x0023,
0x0025, 0x002a,
0x002c, 0x002f,
@@ -2828,6 +2853,7 @@ CR_Punct[] = { 178,
0x09fd, 0x09fd,
0x0a76, 0x0a76,
0x0af0, 0x0af0,
+0x0c77, 0x0c77,
0x0c84, 0x0c84,
0x0df4, 0x0df4,
0x0e4f, 0x0e4f,
@@ -2842,7 +2868,7 @@ CR_Punct[] = { 178,
0x10fb, 0x10fb,
0x1360, 0x1368,
0x1400, 0x1400,
-0x166d, 0x166e,
+0x166e, 0x166e,
0x169b, 0x169c,
0x16eb, 0x16ed,
0x1735, 0x1736,
@@ -2877,7 +2903,7 @@ CR_Punct[] = { 178,
0x2cfe, 0x2cff,
0x2d70, 0x2d70,
0x2e00, 0x2e2e,
-0x2e30, 0x2e4e,
+0x2e30, 0x2e4f,
0x3001, 0x3003,
0x3008, 0x3011,
0x3014, 0x301f,
@@ -2952,18 +2978,21 @@ CR_Punct[] = { 178,
0x11660, 0x1166c,
0x1173c, 0x1173e,
0x1183b, 0x1183b,
+0x119e2, 0x119e2,
0x11a3f, 0x11a46,
0x11a9a, 0x11a9c,
0x11a9e, 0x11aa2,
0x11c41, 0x11c45,
0x11c70, 0x11c71,
0x11ef7, 0x11ef8,
+0x11fff, 0x11fff,
0x12470, 0x12474,
0x16a6e, 0x16a6f,
0x16af5, 0x16af5,
0x16b37, 0x16b3b,
0x16b44, 0x16b44,
0x16e97, 0x16e9a,
+0x16fe2, 0x16fe2,
0x1bc9f, 0x1bc9f,
0x1da87, 0x1da8b,
0x1e95e, 0x1e95f,
@@ -2986,7 +3015,7 @@ CR_Space[] = { 10,
/* PROPERTY: 'Upper': POSIX [[:Upper:]] */
static const OnigCodePoint
-CR_Upper[] = { 636,
+CR_Upper[] = { 641,
0x0041, 0x005a,
0x00c0, 0x00d6,
0x00d8, 0x00de,
@@ -3582,6 +3611,11 @@ CR_Upper[] = { 636,
0xa7b0, 0xa7b4,
0xa7b6, 0xa7b6,
0xa7b8, 0xa7b8,
+0xa7ba, 0xa7ba,
+0xa7bc, 0xa7bc,
+0xa7be, 0xa7be,
+0xa7c2, 0xa7c2,
+0xa7c4, 0xa7c6,
0xff21, 0xff3a,
0x10400, 0x10427,
0x104b0, 0x104d3,
@@ -3635,7 +3669,7 @@ CR_XDigit[] = { 3,
/* PROPERTY: 'Word': POSIX [[:Word:]] */
static const OnigCodePoint
-CR_Word[] = { 710,
+CR_Word[] = { 716,
0x0030, 0x0039,
0x0041, 0x005a,
0x005f, 0x005f,
@@ -3820,17 +3854,10 @@ CR_Word[] = { 710,
0x0e50, 0x0e59,
0x0e81, 0x0e82,
0x0e84, 0x0e84,
-0x0e87, 0x0e88,
-0x0e8a, 0x0e8a,
-0x0e8d, 0x0e8d,
-0x0e94, 0x0e97,
-0x0e99, 0x0e9f,
-0x0ea1, 0x0ea3,
+0x0e86, 0x0e8a,
+0x0e8c, 0x0ea3,
0x0ea5, 0x0ea5,
-0x0ea7, 0x0ea7,
-0x0eaa, 0x0eab,
-0x0ead, 0x0eb9,
-0x0ebb, 0x0ebd,
+0x0ea7, 0x0ebd,
0x0ec0, 0x0ec4,
0x0ec6, 0x0ec6,
0x0ec8, 0x0ecd,
@@ -3921,7 +3948,7 @@ CR_Word[] = { 710,
0x1c90, 0x1cba,
0x1cbd, 0x1cbf,
0x1cd0, 0x1cd2,
-0x1cd4, 0x1cf9,
+0x1cd4, 0x1cfa,
0x1d00, 0x1df9,
0x1dfb, 0x1f15,
0x1f18, 0x1f1d,
@@ -4007,7 +4034,8 @@ CR_Word[] = { 710,
0xa67f, 0xa6f1,
0xa717, 0xa71f,
0xa722, 0xa788,
-0xa78b, 0xa7b9,
+0xa78b, 0xa7bf,
+0xa7c2, 0xa7c6,
0xa7f7, 0xa827,
0xa840, 0xa873,
0xa880, 0xa8c5,
@@ -4034,7 +4062,7 @@ CR_Word[] = { 710,
0xab20, 0xab26,
0xab28, 0xab2e,
0xab30, 0xab5a,
-0xab5c, 0xab65,
+0xab5c, 0xab67,
0xab70, 0xabea,
0xabec, 0xabed,
0xabf0, 0xabf9,
@@ -4136,6 +4164,7 @@ CR_Word[] = { 710,
0x10f00, 0x10f1c,
0x10f27, 0x10f27,
0x10f30, 0x10f50,
+0x10fe0, 0x10ff6,
0x11000, 0x11046,
0x11066, 0x1106f,
0x1107f, 0x110ba,
@@ -4177,7 +4206,7 @@ CR_Word[] = { 710,
0x11370, 0x11374,
0x11400, 0x1144a,
0x11450, 0x11459,
-0x1145e, 0x1145e,
+0x1145e, 0x1145f,
0x11480, 0x114c5,
0x114c7, 0x114c7,
0x114d0, 0x114d9,
@@ -4187,7 +4216,7 @@ CR_Word[] = { 710,
0x11600, 0x11640,
0x11644, 0x11644,
0x11650, 0x11659,
-0x11680, 0x116b7,
+0x11680, 0x116b8,
0x116c0, 0x116c9,
0x11700, 0x1171a,
0x1171d, 0x1172b,
@@ -4195,10 +4224,13 @@ CR_Word[] = { 710,
0x11800, 0x1183a,
0x118a0, 0x118e9,
0x118ff, 0x118ff,
+0x119a0, 0x119a7,
+0x119aa, 0x119d7,
+0x119da, 0x119e1,
+0x119e3, 0x119e4,
0x11a00, 0x11a3e,
0x11a47, 0x11a47,
-0x11a50, 0x11a83,
-0x11a86, 0x11a99,
+0x11a50, 0x11a99,
0x11a9d, 0x11a9d,
0x11ac0, 0x11af8,
0x11c00, 0x11c08,
@@ -4238,13 +4270,16 @@ CR_Word[] = { 710,
0x16b63, 0x16b77,
0x16b7d, 0x16b8f,
0x16e40, 0x16e7f,
-0x16f00, 0x16f44,
-0x16f50, 0x16f7e,
+0x16f00, 0x16f4a,
+0x16f4f, 0x16f87,
0x16f8f, 0x16f9f,
0x16fe0, 0x16fe1,
-0x17000, 0x187f1,
+0x16fe3, 0x16fe3,
+0x17000, 0x187f7,
0x18800, 0x18af2,
0x1b000, 0x1b11e,
+0x1b150, 0x1b152,
+0x1b164, 0x1b167,
0x1b170, 0x1b2fb,
0x1bc00, 0x1bc6a,
0x1bc70, 0x1bc7c,
@@ -4299,9 +4334,14 @@ CR_Word[] = { 710,
0x1e01b, 0x1e021,
0x1e023, 0x1e024,
0x1e026, 0x1e02a,
+0x1e100, 0x1e12c,
+0x1e130, 0x1e13d,
+0x1e140, 0x1e149,
+0x1e14e, 0x1e14e,
+0x1e2c0, 0x1e2f9,
0x1e800, 0x1e8c4,
0x1e8d0, 0x1e8d6,
-0x1e900, 0x1e94a,
+0x1e900, 0x1e94b,
0x1e950, 0x1e959,
0x1ee00, 0x1ee03,
0x1ee05, 0x1ee1f,
@@ -4350,7 +4390,7 @@ CR_Word[] = { 710,
/* PROPERTY: 'Alnum': POSIX [[:Alnum:]] */
static const OnigCodePoint
-CR_Alnum[] = { 713,
+CR_Alnum[] = { 715,
0x0030, 0x0039,
0x0041, 0x005a,
0x0061, 0x007a,
@@ -4543,16 +4583,10 @@ CR_Alnum[] = { 713,
0x0e50, 0x0e59,
0x0e81, 0x0e82,
0x0e84, 0x0e84,
-0x0e87, 0x0e88,
-0x0e8a, 0x0e8a,
-0x0e8d, 0x0e8d,
-0x0e94, 0x0e97,
-0x0e99, 0x0e9f,
-0x0ea1, 0x0ea3,
+0x0e86, 0x0e8a,
+0x0e8c, 0x0ea3,
0x0ea5, 0x0ea5,
-0x0ea7, 0x0ea7,
-0x0eaa, 0x0eab,
-0x0ead, 0x0eb9,
+0x0ea7, 0x0eb9,
0x0ebb, 0x0ebd,
0x0ec0, 0x0ec4,
0x0ec6, 0x0ec6,
@@ -4569,12 +4603,7 @@ CR_Alnum[] = { 713,
0x1000, 0x1036,
0x1038, 0x1038,
0x103b, 0x1049,
-0x1050, 0x1062,
-0x1065, 0x1068,
-0x106e, 0x1086,
-0x108e, 0x108e,
-0x1090, 0x1099,
-0x109c, 0x109d,
+0x1050, 0x109d,
0x10a0, 0x10c5,
0x10c7, 0x10c7,
0x10cd, 0x10cd,
@@ -4595,7 +4624,6 @@ CR_Alnum[] = { 713,
0x12d8, 0x1310,
0x1312, 0x1315,
0x1318, 0x135a,
-0x135f, 0x135f,
0x1380, 0x138f,
0x13a0, 0x13f5,
0x13f8, 0x13fd,
@@ -4641,7 +4669,7 @@ CR_Alnum[] = { 713,
0x1b80, 0x1ba9,
0x1bac, 0x1be5,
0x1be7, 0x1bf1,
-0x1c00, 0x1c35,
+0x1c00, 0x1c36,
0x1c40, 0x1c49,
0x1c4d, 0x1c7d,
0x1c80, 0x1c88,
@@ -4650,6 +4678,7 @@ CR_Alnum[] = { 713,
0x1ce9, 0x1cec,
0x1cee, 0x1cf3,
0x1cf5, 0x1cf6,
+0x1cfa, 0x1cfa,
0x1d00, 0x1dbf,
0x1de7, 0x1df4,
0x1e00, 0x1f15,
@@ -4733,32 +4762,28 @@ CR_Alnum[] = { 713,
0xa67f, 0xa6ef,
0xa717, 0xa71f,
0xa722, 0xa788,
-0xa78b, 0xa7b9,
-0xa7f7, 0xa801,
-0xa803, 0xa805,
-0xa807, 0xa80a,
-0xa80c, 0xa827,
+0xa78b, 0xa7bf,
+0xa7c2, 0xa7c6,
+0xa7f7, 0xa805,
+0xa807, 0xa827,
0xa840, 0xa873,
0xa880, 0xa8c3,
0xa8c5, 0xa8c5,
0xa8d0, 0xa8d9,
0xa8f2, 0xa8f7,
0xa8fb, 0xa8fb,
-0xa8fd, 0xa8fe,
-0xa900, 0xa92a,
+0xa8fd, 0xa92a,
0xa930, 0xa952,
0xa960, 0xa97c,
0xa980, 0xa9b2,
0xa9b4, 0xa9bf,
0xa9cf, 0xa9d9,
-0xa9e0, 0xa9e4,
-0xa9e6, 0xa9fe,
+0xa9e0, 0xa9fe,
0xaa00, 0xaa36,
0xaa40, 0xaa4d,
0xaa50, 0xaa59,
0xaa60, 0xaa76,
-0xaa7a, 0xaa7a,
-0xaa7e, 0xaabe,
+0xaa7a, 0xaabe,
0xaac0, 0xaac0,
0xaac2, 0xaac2,
0xaadb, 0xaadd,
@@ -4770,7 +4795,7 @@ CR_Alnum[] = { 713,
0xab20, 0xab26,
0xab28, 0xab2e,
0xab30, 0xab5a,
-0xab5c, 0xab65,
+0xab5c, 0xab67,
0xab70, 0xabea,
0xabf0, 0xabf9,
0xac00, 0xd7a3,
@@ -4862,6 +4887,7 @@ CR_Alnum[] = { 713,
0x10f00, 0x10f1c,
0x10f27, 0x10f27,
0x10f30, 0x10f45,
+0x10fe0, 0x10ff6,
0x11000, 0x11045,
0x11066, 0x1106f,
0x11082, 0x110b8,
@@ -4904,6 +4930,7 @@ CR_Alnum[] = { 713,
0x11443, 0x11445,
0x11447, 0x1144a,
0x11450, 0x11459,
+0x1145f, 0x1145f,
0x11480, 0x114c1,
0x114c4, 0x114c5,
0x114c7, 0x114c7,
@@ -4916,6 +4943,7 @@ CR_Alnum[] = { 713,
0x11644, 0x11644,
0x11650, 0x11659,
0x11680, 0x116b5,
+0x116b8, 0x116b8,
0x116c0, 0x116c9,
0x11700, 0x1171a,
0x1171d, 0x1172a,
@@ -4923,10 +4951,14 @@ CR_Alnum[] = { 713,
0x11800, 0x11838,
0x118a0, 0x118e9,
0x118ff, 0x118ff,
+0x119a0, 0x119a7,
+0x119aa, 0x119d7,
+0x119da, 0x119df,
+0x119e1, 0x119e1,
+0x119e3, 0x119e4,
0x11a00, 0x11a32,
0x11a35, 0x11a3e,
-0x11a50, 0x11a83,
-0x11a86, 0x11a97,
+0x11a50, 0x11a97,
0x11a9d, 0x11a9d,
0x11ac0, 0x11af8,
0x11c00, 0x11c08,
@@ -4963,19 +4995,22 @@ CR_Alnum[] = { 713,
0x16a40, 0x16a5e,
0x16a60, 0x16a69,
0x16ad0, 0x16aed,
-0x16b00, 0x16b36,
+0x16b00, 0x16b2f,
0x16b40, 0x16b43,
0x16b50, 0x16b59,
0x16b63, 0x16b77,
0x16b7d, 0x16b8f,
0x16e40, 0x16e7f,
-0x16f00, 0x16f44,
-0x16f50, 0x16f7e,
-0x16f93, 0x16f9f,
+0x16f00, 0x16f4a,
+0x16f4f, 0x16f87,
+0x16f8f, 0x16f9f,
0x16fe0, 0x16fe1,
-0x17000, 0x187f1,
+0x16fe3, 0x16fe3,
+0x17000, 0x187f7,
0x18800, 0x18af2,
0x1b000, 0x1b11e,
+0x1b150, 0x1b152,
+0x1b164, 0x1b167,
0x1b170, 0x1b2fb,
0x1bc00, 0x1bc6a,
0x1bc70, 0x1bc7c,
@@ -5018,9 +5053,16 @@ CR_Alnum[] = { 713,
0x1e01b, 0x1e021,
0x1e023, 0x1e024,
0x1e026, 0x1e02a,
+0x1e100, 0x1e12c,
+0x1e137, 0x1e13d,
+0x1e140, 0x1e149,
+0x1e14e, 0x1e14e,
+0x1e2c0, 0x1e2eb,
+0x1e2f0, 0x1e2f9,
0x1e800, 0x1e8c4,
0x1e900, 0x1e943,
0x1e947, 0x1e947,
+0x1e94b, 0x1e94b,
0x1e950, 0x1e959,
0x1ee00, 0x1ee03,
0x1ee05, 0x1ee1f,
@@ -5079,7 +5121,7 @@ CR_ASCII[] = { 1,
/* PROPERTY: 'Adlam': Script */
static const OnigCodePoint
CR_Adlam[] = { 3,
-0x1e900, 0x1e94a,
+0x1e900, 0x1e94b,
0x1e950, 0x1e959,
0x1e95e, 0x1e95f,
}; /* END of CR_Adlam */
@@ -5181,7 +5223,7 @@ CR_Armenian[] = { 5,
/* PROPERTY: 'Assigned': - */
static const OnigCodePoint
-CR_Assigned[] = { 658,
+CR_Assigned[] = { 666,
0x0000, 0x0377,
0x037a, 0x037f,
0x0384, 0x038a,
@@ -5291,7 +5333,7 @@ CR_Assigned[] = { 658,
0x0c58, 0x0c5a,
0x0c60, 0x0c63,
0x0c66, 0x0c6f,
-0x0c78, 0x0c8c,
+0x0c77, 0x0c8c,
0x0c8e, 0x0c90,
0x0c92, 0x0ca8,
0x0caa, 0x0cb3,
@@ -5328,17 +5370,10 @@ CR_Assigned[] = { 658,
0x0e3f, 0x0e5b,
0x0e81, 0x0e82,
0x0e84, 0x0e84,
-0x0e87, 0x0e88,
-0x0e8a, 0x0e8a,
-0x0e8d, 0x0e8d,
-0x0e94, 0x0e97,
-0x0e99, 0x0e9f,
-0x0ea1, 0x0ea3,
+0x0e86, 0x0e8a,
+0x0e8c, 0x0ea3,
0x0ea5, 0x0ea5,
-0x0ea7, 0x0ea7,
-0x0eaa, 0x0eab,
-0x0ead, 0x0eb9,
-0x0ebb, 0x0ebd,
+0x0ea7, 0x0ebd,
0x0ec0, 0x0ec4,
0x0ec6, 0x0ec6,
0x0ec8, 0x0ecd,
@@ -5414,7 +5449,7 @@ CR_Assigned[] = { 658,
0x1c4d, 0x1c88,
0x1c90, 0x1cba,
0x1cbd, 0x1cc7,
-0x1cd0, 0x1cf9,
+0x1cd0, 0x1cfa,
0x1d00, 0x1df9,
0x1dfb, 0x1f15,
0x1f18, 0x1f1d,
@@ -5443,9 +5478,7 @@ CR_Assigned[] = { 658,
0x2440, 0x244a,
0x2460, 0x2b73,
0x2b76, 0x2b95,
-0x2b98, 0x2bc8,
-0x2bca, 0x2bfe,
-0x2c00, 0x2c2e,
+0x2b98, 0x2c2e,
0x2c30, 0x2c5e,
0x2c60, 0x2cf3,
0x2cf9, 0x2d25,
@@ -5462,7 +5495,7 @@ CR_Assigned[] = { 658,
0x2dc8, 0x2dce,
0x2dd0, 0x2dd6,
0x2dd8, 0x2dde,
-0x2de0, 0x2e4e,
+0x2de0, 0x2e4f,
0x2e80, 0x2e99,
0x2e9b, 0x2ef3,
0x2f00, 0x2fd5,
@@ -5475,14 +5508,14 @@ CR_Assigned[] = { 658,
0x3190, 0x31ba,
0x31c0, 0x31e3,
0x31f0, 0x321e,
-0x3220, 0x32fe,
-0x3300, 0x4db5,
+0x3220, 0x4db5,
0x4dc0, 0x9fef,
0xa000, 0xa48c,
0xa490, 0xa4c6,
0xa4d0, 0xa62b,
0xa640, 0xa6f7,
-0xa700, 0xa7b9,
+0xa700, 0xa7bf,
+0xa7c2, 0xa7c6,
0xa7f7, 0xa82b,
0xa830, 0xa839,
0xa840, 0xa877,
@@ -5503,7 +5536,7 @@ CR_Assigned[] = { 658,
0xab11, 0xab16,
0xab20, 0xab26,
0xab28, 0xab2e,
-0xab30, 0xab65,
+0xab30, 0xab67,
0xab70, 0xabed,
0xabf0, 0xabf9,
0xac00, 0xd7a3,
@@ -5610,6 +5643,7 @@ CR_Assigned[] = { 658,
0x10e60, 0x10e7e,
0x10f00, 0x10f27,
0x10f30, 0x10f59,
+0x10fe0, 0x10ff6,
0x11000, 0x1104d,
0x11052, 0x1106f,
0x1107f, 0x110c1,
@@ -5648,7 +5682,7 @@ CR_Assigned[] = { 658,
0x11370, 0x11374,
0x11400, 0x11459,
0x1145b, 0x1145b,
-0x1145d, 0x1145e,
+0x1145d, 0x1145f,
0x11480, 0x114c7,
0x114d0, 0x114d9,
0x11580, 0x115b5,
@@ -5656,7 +5690,7 @@ CR_Assigned[] = { 658,
0x11600, 0x11644,
0x11650, 0x11659,
0x11660, 0x1166c,
-0x11680, 0x116b7,
+0x11680, 0x116b8,
0x116c0, 0x116c9,
0x11700, 0x1171a,
0x1171d, 0x1172b,
@@ -5664,9 +5698,11 @@ CR_Assigned[] = { 658,
0x11800, 0x1183b,
0x118a0, 0x118f2,
0x118ff, 0x118ff,
+0x119a0, 0x119a7,
+0x119aa, 0x119d7,
+0x119da, 0x119e4,
0x11a00, 0x11a47,
-0x11a50, 0x11a83,
-0x11a86, 0x11aa2,
+0x11a50, 0x11aa2,
0x11ac0, 0x11af8,
0x11c00, 0x11c08,
0x11c0a, 0x11c36,
@@ -5689,11 +5725,13 @@ CR_Assigned[] = { 658,
0x11d93, 0x11d98,
0x11da0, 0x11da9,
0x11ee0, 0x11ef8,
-0x12000, 0x12399,
+0x11fc0, 0x11ff1,
+0x11fff, 0x12399,
0x12400, 0x1246e,
0x12470, 0x12474,
0x12480, 0x12543,
0x13000, 0x1342e,
+0x13430, 0x13438,
0x14400, 0x14646,
0x16800, 0x16a38,
0x16a40, 0x16a5e,
@@ -5707,13 +5745,15 @@ CR_Assigned[] = { 658,
0x16b63, 0x16b77,
0x16b7d, 0x16b8f,
0x16e40, 0x16e9a,
-0x16f00, 0x16f44,
-0x16f50, 0x16f7e,
+0x16f00, 0x16f4a,
+0x16f4f, 0x16f87,
0x16f8f, 0x16f9f,
-0x16fe0, 0x16fe1,
-0x17000, 0x187f1,
+0x16fe0, 0x16fe3,
+0x17000, 0x187f7,
0x18800, 0x18af2,
0x1b000, 0x1b11e,
+0x1b150, 0x1b152,
+0x1b164, 0x1b167,
0x1b170, 0x1b2fb,
0x1bc00, 0x1bc6a,
0x1bc70, 0x1bc7c,
@@ -5755,12 +5795,19 @@ CR_Assigned[] = { 658,
0x1e01b, 0x1e021,
0x1e023, 0x1e024,
0x1e026, 0x1e02a,
+0x1e100, 0x1e12c,
+0x1e130, 0x1e13d,
+0x1e140, 0x1e149,
+0x1e14e, 0x1e14f,
+0x1e2c0, 0x1e2f9,
+0x1e2ff, 0x1e2ff,
0x1e800, 0x1e8c4,
0x1e8c7, 0x1e8d6,
-0x1e900, 0x1e94a,
+0x1e900, 0x1e94b,
0x1e950, 0x1e959,
0x1e95e, 0x1e95f,
0x1ec71, 0x1ecb4,
+0x1ed01, 0x1ed3d,
0x1ee00, 0x1ee03,
0x1ee05, 0x1ee1f,
0x1ee21, 0x1ee22,
@@ -5802,33 +5849,36 @@ CR_Assigned[] = { 658,
0x1f0c1, 0x1f0cf,
0x1f0d1, 0x1f0f5,
0x1f100, 0x1f10c,
-0x1f110, 0x1f16b,
+0x1f110, 0x1f16c,
0x1f170, 0x1f1ac,
0x1f1e6, 0x1f202,
0x1f210, 0x1f23b,
0x1f240, 0x1f248,
0x1f250, 0x1f251,
0x1f260, 0x1f265,
-0x1f300, 0x1f6d4,
+0x1f300, 0x1f6d5,
0x1f6e0, 0x1f6ec,
-0x1f6f0, 0x1f6f9,
+0x1f6f0, 0x1f6fa,
0x1f700, 0x1f773,
0x1f780, 0x1f7d8,
+0x1f7e0, 0x1f7eb,
0x1f800, 0x1f80b,
0x1f810, 0x1f847,
0x1f850, 0x1f859,
0x1f860, 0x1f887,
0x1f890, 0x1f8ad,
0x1f900, 0x1f90b,
-0x1f910, 0x1f93e,
-0x1f940, 0x1f970,
+0x1f90d, 0x1f971,
0x1f973, 0x1f976,
-0x1f97a, 0x1f97a,
-0x1f97c, 0x1f9a2,
-0x1f9b0, 0x1f9b9,
-0x1f9c0, 0x1f9c2,
-0x1f9d0, 0x1f9ff,
+0x1f97a, 0x1f9a2,
+0x1f9a5, 0x1f9aa,
+0x1f9ae, 0x1f9ca,
+0x1f9cd, 0x1fa53,
0x1fa60, 0x1fa6d,
+0x1fa70, 0x1fa73,
+0x1fa78, 0x1fa7a,
+0x1fa80, 0x1fa82,
+0x1fa90, 0x1fa95,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
@@ -5951,7 +6001,7 @@ CR_Buhid[] = { 1,
/* PROPERTY: 'C': Major Category */
static const OnigCodePoint
-CR_C[] = { 661,
+CR_C[] = { 668,
0x0000, 0x001f,
0x007f, 0x009f,
0x00ad, 0x00ad,
@@ -6065,7 +6115,7 @@ CR_C[] = { 661,
0x0c57, 0x0c57,
0x0c5b, 0x0c5f,
0x0c64, 0x0c65,
-0x0c70, 0x0c77,
+0x0c70, 0x0c76,
0x0c8d, 0x0c8d,
0x0c91, 0x0c91,
0x0ca9, 0x0ca9,
@@ -6102,17 +6152,10 @@ CR_C[] = { 661,
0x0e3b, 0x0e3e,
0x0e5c, 0x0e80,
0x0e83, 0x0e83,
-0x0e85, 0x0e86,
-0x0e89, 0x0e89,
-0x0e8b, 0x0e8c,
-0x0e8e, 0x0e93,
-0x0e98, 0x0e98,
-0x0ea0, 0x0ea0,
+0x0e85, 0x0e85,
+0x0e8b, 0x0e8b,
0x0ea4, 0x0ea4,
0x0ea6, 0x0ea6,
-0x0ea8, 0x0ea9,
-0x0eac, 0x0eac,
-0x0eba, 0x0eba,
0x0ebe, 0x0ebf,
0x0ec5, 0x0ec5,
0x0ec7, 0x0ec7,
@@ -6189,7 +6232,7 @@ CR_C[] = { 661,
0x1c89, 0x1c8f,
0x1cbb, 0x1cbc,
0x1cc8, 0x1ccf,
-0x1cfa, 0x1cff,
+0x1cfb, 0x1cff,
0x1dfa, 0x1dfa,
0x1f16, 0x1f17,
0x1f1e, 0x1f1f,
@@ -6220,8 +6263,6 @@ CR_C[] = { 661,
0x244b, 0x245f,
0x2b74, 0x2b75,
0x2b96, 0x2b97,
-0x2bc9, 0x2bc9,
-0x2bff, 0x2bff,
0x2c2f, 0x2c2f,
0x2c5f, 0x2c5f,
0x2cf4, 0x2cf8,
@@ -6239,7 +6280,7 @@ CR_C[] = { 661,
0x2dcf, 0x2dcf,
0x2dd7, 0x2dd7,
0x2ddf, 0x2ddf,
-0x2e4f, 0x2e7f,
+0x2e50, 0x2e7f,
0x2e9a, 0x2e9a,
0x2ef4, 0x2eff,
0x2fd6, 0x2fef,
@@ -6252,14 +6293,14 @@ CR_C[] = { 661,
0x31bb, 0x31bf,
0x31e4, 0x31ef,
0x321f, 0x321f,
-0x32ff, 0x32ff,
0x4db6, 0x4dbf,
0x9ff0, 0x9fff,
0xa48d, 0xa48f,
0xa4c7, 0xa4cf,
0xa62c, 0xa63f,
0xa6f8, 0xa6ff,
-0xa7ba, 0xa7f6,
+0xa7c0, 0xa7c1,
+0xa7c7, 0xa7f6,
0xa82c, 0xa82f,
0xa83a, 0xa83f,
0xa878, 0xa87f,
@@ -6280,7 +6321,7 @@ CR_C[] = { 661,
0xab17, 0xab1f,
0xab27, 0xab27,
0xab2f, 0xab2f,
-0xab66, 0xab6f,
+0xab68, 0xab6f,
0xabee, 0xabef,
0xabfa, 0xabff,
0xd7a4, 0xd7af,
@@ -6385,7 +6426,8 @@ CR_C[] = { 661,
0x10d3a, 0x10e5f,
0x10e7f, 0x10eff,
0x10f28, 0x10f2f,
-0x10f5a, 0x10fff,
+0x10f5a, 0x10fdf,
+0x10ff7, 0x10fff,
0x1104e, 0x11051,
0x11070, 0x1107e,
0x110bd, 0x110bd,
@@ -6424,7 +6466,7 @@ CR_C[] = { 661,
0x11375, 0x113ff,
0x1145a, 0x1145a,
0x1145c, 0x1145c,
-0x1145f, 0x1147f,
+0x11460, 0x1147f,
0x114c8, 0x114cf,
0x114da, 0x1157f,
0x115b6, 0x115b7,
@@ -6432,16 +6474,18 @@ CR_C[] = { 661,
0x11645, 0x1164f,
0x1165a, 0x1165f,
0x1166d, 0x1167f,
-0x116b8, 0x116bf,
+0x116b9, 0x116bf,
0x116ca, 0x116ff,
0x1171b, 0x1171c,
0x1172c, 0x1172f,
0x11740, 0x117ff,
0x1183c, 0x1189f,
0x118f3, 0x118fe,
-0x11900, 0x119ff,
+0x11900, 0x1199f,
+0x119a8, 0x119a9,
+0x119d8, 0x119d9,
+0x119e5, 0x119ff,
0x11a48, 0x11a4f,
-0x11a84, 0x11a85,
0x11aa3, 0x11abf,
0x11af9, 0x11bff,
0x11c09, 0x11c09,
@@ -6464,7 +6508,8 @@ CR_C[] = { 661,
0x11d92, 0x11d92,
0x11d99, 0x11d9f,
0x11daa, 0x11edf,
-0x11ef9, 0x11fff,
+0x11ef9, 0x11fbf,
+0x11ff2, 0x11ffe,
0x1239a, 0x123ff,
0x1246f, 0x1246f,
0x12475, 0x1247f,
@@ -6483,13 +6528,15 @@ CR_C[] = { 661,
0x16b78, 0x16b7c,
0x16b90, 0x16e3f,
0x16e9b, 0x16eff,
-0x16f45, 0x16f4f,
-0x16f7f, 0x16f8e,
+0x16f4b, 0x16f4e,
+0x16f88, 0x16f8e,
0x16fa0, 0x16fdf,
-0x16fe2, 0x16fff,
-0x187f2, 0x187ff,
+0x16fe4, 0x16fff,
+0x187f8, 0x187ff,
0x18af3, 0x1afff,
-0x1b11f, 0x1b16f,
+0x1b11f, 0x1b14f,
+0x1b153, 0x1b163,
+0x1b168, 0x1b16f,
0x1b2fc, 0x1bbff,
0x1bc6b, 0x1bc6f,
0x1bc7d, 0x1bc7f,
@@ -6531,13 +6578,20 @@ CR_C[] = { 661,
0x1e019, 0x1e01a,
0x1e022, 0x1e022,
0x1e025, 0x1e025,
-0x1e02b, 0x1e7ff,
+0x1e02b, 0x1e0ff,
+0x1e12d, 0x1e12f,
+0x1e13e, 0x1e13f,
+0x1e14a, 0x1e14d,
+0x1e150, 0x1e2bf,
+0x1e2fa, 0x1e2fe,
+0x1e300, 0x1e7ff,
0x1e8c5, 0x1e8c6,
0x1e8d7, 0x1e8ff,
-0x1e94b, 0x1e94f,
+0x1e94c, 0x1e94f,
0x1e95a, 0x1e95d,
0x1e960, 0x1ec70,
-0x1ecb5, 0x1edff,
+0x1ecb5, 0x1ed00,
+0x1ed3e, 0x1edff,
0x1ee04, 0x1ee04,
0x1ee20, 0x1ee20,
0x1ee23, 0x1ee23,
@@ -6579,33 +6633,36 @@ CR_C[] = { 661,
0x1f0d0, 0x1f0d0,
0x1f0f6, 0x1f0ff,
0x1f10d, 0x1f10f,
-0x1f16c, 0x1f16f,
+0x1f16d, 0x1f16f,
0x1f1ad, 0x1f1e5,
0x1f203, 0x1f20f,
0x1f23c, 0x1f23f,
0x1f249, 0x1f24f,
0x1f252, 0x1f25f,
0x1f266, 0x1f2ff,
-0x1f6d5, 0x1f6df,
+0x1f6d6, 0x1f6df,
0x1f6ed, 0x1f6ef,
-0x1f6fa, 0x1f6ff,
+0x1f6fb, 0x1f6ff,
0x1f774, 0x1f77f,
-0x1f7d9, 0x1f7ff,
+0x1f7d9, 0x1f7df,
+0x1f7ec, 0x1f7ff,
0x1f80c, 0x1f80f,
0x1f848, 0x1f84f,
0x1f85a, 0x1f85f,
0x1f888, 0x1f88f,
0x1f8ae, 0x1f8ff,
-0x1f90c, 0x1f90f,
-0x1f93f, 0x1f93f,
-0x1f971, 0x1f972,
+0x1f90c, 0x1f90c,
+0x1f972, 0x1f972,
0x1f977, 0x1f979,
-0x1f97b, 0x1f97b,
-0x1f9a3, 0x1f9af,
-0x1f9ba, 0x1f9bf,
-0x1f9c3, 0x1f9cf,
-0x1fa00, 0x1fa5f,
-0x1fa6e, 0x1ffff,
+0x1f9a3, 0x1f9a4,
+0x1f9ab, 0x1f9ad,
+0x1f9cb, 0x1f9cc,
+0x1fa54, 0x1fa5f,
+0x1fa6e, 0x1fa6f,
+0x1fa74, 0x1fa77,
+0x1fa7b, 0x1fa7f,
+0x1fa83, 0x1fa8f,
+0x1fa96, 0x1ffff,
0x2a6d7, 0x2a6ff,
0x2b735, 0x2b73f,
0x2b81e, 0x2b81f,
@@ -6630,7 +6687,7 @@ CR_Carian[] = { 1,
/* PROPERTY: 'Case_Ignorable': Derived Property */
static const OnigCodePoint
-CR_Case_Ignorable[] = { 394,
+CR_Case_Ignorable[] = { 401,
0x0027, 0x0027,
0x002e, 0x002e,
0x003a, 0x003a,
@@ -6736,8 +6793,7 @@ CR_Case_Ignorable[] = { 394,
0x0e34, 0x0e3a,
0x0e46, 0x0e4e,
0x0eb1, 0x0eb1,
-0x0eb4, 0x0eb9,
-0x0ebb, 0x0ebc,
+0x0eb4, 0x0ebc,
0x0ec6, 0x0ec6,
0x0ec8, 0x0ecd,
0x0f18, 0x0f19,
@@ -6872,7 +6928,7 @@ CR_Case_Ignorable[] = { 394,
0xa980, 0xa982,
0xa9b3, 0xa9b3,
0xa9b6, 0xa9b9,
-0xa9bc, 0xa9bc,
+0xa9bc, 0xa9bd,
0xa9cf, 0xa9cf,
0xa9e5, 0xa9e6,
0xaa29, 0xaa2e,
@@ -6972,6 +7028,9 @@ CR_Case_Ignorable[] = { 394,
0x11727, 0x1172b,
0x1182f, 0x11837,
0x11839, 0x1183a,
+0x119d4, 0x119d7,
+0x119da, 0x119db,
+0x119e0, 0x119e0,
0x11a01, 0x11a0a,
0x11a33, 0x11a38,
0x11a3b, 0x11a3e,
@@ -6996,11 +7055,14 @@ CR_Case_Ignorable[] = { 394,
0x11d95, 0x11d95,
0x11d97, 0x11d97,
0x11ef3, 0x11ef4,
+0x13430, 0x13438,
0x16af0, 0x16af4,
0x16b30, 0x16b36,
0x16b40, 0x16b43,
+0x16f4f, 0x16f4f,
0x16f8f, 0x16f9f,
0x16fe0, 0x16fe1,
+0x16fe3, 0x16fe3,
0x1bc9d, 0x1bc9e,
0x1bca0, 0x1bca3,
0x1d167, 0x1d169,
@@ -7019,8 +7081,10 @@ CR_Case_Ignorable[] = { 394,
0x1e01b, 0x1e021,
0x1e023, 0x1e024,
0x1e026, 0x1e02a,
+0x1e130, 0x1e13d,
+0x1e2ec, 0x1e2ef,
0x1e8d0, 0x1e8d6,
-0x1e944, 0x1e94a,
+0x1e944, 0x1e94b,
0x1f3fb, 0x1f3ff,
0xe0001, 0xe0001,
0xe0020, 0xe007f,
@@ -7029,7 +7093,7 @@ CR_Case_Ignorable[] = { 394,
/* PROPERTY: 'Cased': Derived Property */
static const OnigCodePoint
-CR_Cased[] = { 139,
+CR_Cased[] = { 140,
0x0041, 0x005a,
0x0061, 0x007a,
0x00aa, 0x00aa,
@@ -7119,10 +7183,11 @@ CR_Cased[] = { 139,
0xa680, 0xa69d,
0xa722, 0xa787,
0xa78b, 0xa78e,
-0xa790, 0xa7b9,
+0xa790, 0xa7bf,
+0xa7c2, 0xa7c6,
0xa7f8, 0xa7fa,
0xab30, 0xab5a,
-0xab5c, 0xab65,
+0xab5c, 0xab67,
0xab70, 0xabbf,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -7183,7 +7248,7 @@ CR_Caucasian_Albanian[] = { 2,
/* PROPERTY: 'Cf': General Category */
static const OnigCodePoint
-CR_Cf[] = { 19,
+CR_Cf[] = { 20,
0x00ad, 0x00ad,
0x0600, 0x0605,
0x061c, 0x061c,
@@ -7199,6 +7264,7 @@ CR_Cf[] = { 19,
0xfff9, 0xfffb,
0x110bd, 0x110bd,
0x110cd, 0x110cd,
+0x13430, 0x13438,
0x1bca0, 0x1bca3,
0x1d173, 0x1d17a,
0xe0001, 0xe0001,
@@ -7223,7 +7289,7 @@ CR_Cham[] = { 4,
/* PROPERTY: 'Changes_When_Casefolded': Derived Property */
static const OnigCodePoint
-CR_Changes_When_Casefolded[] = { 607,
+CR_Changes_When_Casefolded[] = { 612,
0x0041, 0x005a,
0x00b5, 0x00b5,
0x00c0, 0x00d6,
@@ -7821,6 +7887,11 @@ CR_Changes_When_Casefolded[] = { 607,
0xa7b0, 0xa7b4,
0xa7b6, 0xa7b6,
0xa7b8, 0xa7b8,
+0xa7ba, 0xa7ba,
+0xa7bc, 0xa7bc,
+0xa7be, 0xa7be,
+0xa7c2, 0xa7c2,
+0xa7c4, 0xa7c6,
0xab70, 0xabbf,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -7835,7 +7906,7 @@ CR_Changes_When_Casefolded[] = { 607,
/* PROPERTY: 'Changes_When_Casemapped': Derived Property */
static const OnigCodePoint
-CR_Changes_When_Casemapped[] = { 121,
+CR_Changes_When_Casemapped[] = { 123,
0x0041, 0x005a,
0x0061, 0x007a,
0x00b5, 0x00b5,
@@ -7863,7 +7934,7 @@ CR_Changes_When_Casemapped[] = { 121,
0x0275, 0x0275,
0x027d, 0x027d,
0x0280, 0x0280,
-0x0283, 0x0283,
+0x0282, 0x0283,
0x0287, 0x028c,
0x0292, 0x0292,
0x029d, 0x029e,
@@ -7895,6 +7966,7 @@ CR_Changes_When_Casemapped[] = { 121,
0x1cbd, 0x1cbf,
0x1d79, 0x1d79,
0x1d7d, 0x1d7d,
+0x1d8e, 0x1d8e,
0x1e00, 0x1e9b,
0x1e9e, 0x1e9e,
0x1ea0, 0x1f15,
@@ -7940,9 +8012,10 @@ CR_Changes_When_Casemapped[] = { 121,
0xa732, 0xa76f,
0xa779, 0xa787,
0xa78b, 0xa78d,
-0xa790, 0xa793,
+0xa790, 0xa794,
0xa796, 0xa7ae,
-0xa7b0, 0xa7b9,
+0xa7b0, 0xa7bf,
+0xa7c2, 0xa7c6,
0xab53, 0xab53,
0xab70, 0xabbf,
0xfb00, 0xfb06,
@@ -7961,7 +8034,7 @@ CR_Changes_When_Casemapped[] = { 121,
/* PROPERTY: 'Changes_When_Lowercased': Derived Property */
static const OnigCodePoint
-CR_Changes_When_Lowercased[] = { 594,
+CR_Changes_When_Lowercased[] = { 599,
0x0041, 0x005a,
0x00c0, 0x00d6,
0x00d8, 0x00de,
@@ -8549,6 +8622,11 @@ CR_Changes_When_Lowercased[] = { 594,
0xa7b0, 0xa7b4,
0xa7b6, 0xa7b6,
0xa7b8, 0xa7b8,
+0xa7ba, 0xa7ba,
+0xa7bc, 0xa7bc,
+0xa7be, 0xa7be,
+0xa7c2, 0xa7c2,
+0xa7c4, 0xa7c6,
0xff21, 0xff3a,
0x10400, 0x10427,
0x104b0, 0x104d3,
@@ -8560,7 +8638,7 @@ CR_Changes_When_Lowercased[] = { 594,
/* PROPERTY: 'Changes_When_Titlecased': Derived Property */
static const OnigCodePoint
-CR_Changes_When_Titlecased[] = { 610,
+CR_Changes_When_Titlecased[] = { 615,
0x0061, 0x007a,
0x00b5, 0x00b5,
0x00df, 0x00f6,
@@ -8718,7 +8796,7 @@ CR_Changes_When_Titlecased[] = { 610,
0x0275, 0x0275,
0x027d, 0x027d,
0x0280, 0x0280,
-0x0283, 0x0283,
+0x0282, 0x0283,
0x0287, 0x028c,
0x0292, 0x0292,
0x029d, 0x029e,
@@ -8851,6 +8929,7 @@ CR_Changes_When_Titlecased[] = { 610,
0x1c80, 0x1c88,
0x1d79, 0x1d79,
0x1d7d, 0x1d7d,
+0x1d8e, 0x1d8e,
0x1e01, 0x1e01,
0x1e03, 0x1e03,
0x1e05, 0x1e05,
@@ -9146,7 +9225,7 @@ CR_Changes_When_Titlecased[] = { 610,
0xa787, 0xa787,
0xa78c, 0xa78c,
0xa791, 0xa791,
-0xa793, 0xa793,
+0xa793, 0xa794,
0xa797, 0xa797,
0xa799, 0xa799,
0xa79b, 0xa79b,
@@ -9160,6 +9239,10 @@ CR_Changes_When_Titlecased[] = { 610,
0xa7b5, 0xa7b5,
0xa7b7, 0xa7b7,
0xa7b9, 0xa7b9,
+0xa7bb, 0xa7bb,
+0xa7bd, 0xa7bd,
+0xa7bf, 0xa7bf,
+0xa7c3, 0xa7c3,
0xab53, 0xab53,
0xab70, 0xabbf,
0xfb00, 0xfb06,
@@ -9175,7 +9258,7 @@ CR_Changes_When_Titlecased[] = { 610,
/* PROPERTY: 'Changes_When_Uppercased': Derived Property */
static const OnigCodePoint
-CR_Changes_When_Uppercased[] = { 611,
+CR_Changes_When_Uppercased[] = { 616,
0x0061, 0x007a,
0x00b5, 0x00b5,
0x00df, 0x00f6,
@@ -9332,7 +9415,7 @@ CR_Changes_When_Uppercased[] = { 611,
0x0275, 0x0275,
0x027d, 0x027d,
0x0280, 0x0280,
-0x0283, 0x0283,
+0x0282, 0x0283,
0x0287, 0x028c,
0x0292, 0x0292,
0x029d, 0x029e,
@@ -9467,6 +9550,7 @@ CR_Changes_When_Uppercased[] = { 611,
0x1c80, 0x1c88,
0x1d79, 0x1d79,
0x1d7d, 0x1d7d,
+0x1d8e, 0x1d8e,
0x1e01, 0x1e01,
0x1e03, 0x1e03,
0x1e05, 0x1e05,
@@ -9762,7 +9846,7 @@ CR_Changes_When_Uppercased[] = { 611,
0xa787, 0xa787,
0xa78c, 0xa78c,
0xa791, 0xa791,
-0xa793, 0xa793,
+0xa793, 0xa794,
0xa797, 0xa797,
0xa799, 0xa799,
0xa79b, 0xa79b,
@@ -9776,6 +9860,10 @@ CR_Changes_When_Uppercased[] = { 611,
0xa7b5, 0xa7b5,
0xa7b7, 0xa7b7,
0xa7b9, 0xa7b9,
+0xa7bb, 0xa7bb,
+0xa7bd, 0xa7bd,
+0xa7bf, 0xa7bf,
+0xa7c3, 0xa7c3,
0xab53, 0xab53,
0xab70, 0xabbf,
0xfb00, 0xfb06,
@@ -9799,7 +9887,7 @@ CR_Cherokee[] = { 3,
/* PROPERTY: 'Cn': General Category */
static const OnigCodePoint
-CR_Cn[] = { 658,
+CR_Cn[] = { 666,
0x0378, 0x0379,
0x0380, 0x0383,
0x038b, 0x038b,
@@ -9908,7 +9996,7 @@ CR_Cn[] = { 658,
0x0c57, 0x0c57,
0x0c5b, 0x0c5f,
0x0c64, 0x0c65,
-0x0c70, 0x0c77,
+0x0c70, 0x0c76,
0x0c8d, 0x0c8d,
0x0c91, 0x0c91,
0x0ca9, 0x0ca9,
@@ -9945,17 +10033,10 @@ CR_Cn[] = { 658,
0x0e3b, 0x0e3e,
0x0e5c, 0x0e80,
0x0e83, 0x0e83,
-0x0e85, 0x0e86,
-0x0e89, 0x0e89,
-0x0e8b, 0x0e8c,
-0x0e8e, 0x0e93,
-0x0e98, 0x0e98,
-0x0ea0, 0x0ea0,
+0x0e85, 0x0e85,
+0x0e8b, 0x0e8b,
0x0ea4, 0x0ea4,
0x0ea6, 0x0ea6,
-0x0ea8, 0x0ea9,
-0x0eac, 0x0eac,
-0x0eba, 0x0eba,
0x0ebe, 0x0ebf,
0x0ec5, 0x0ec5,
0x0ec7, 0x0ec7,
@@ -10032,7 +10113,7 @@ CR_Cn[] = { 658,
0x1c89, 0x1c8f,
0x1cbb, 0x1cbc,
0x1cc8, 0x1ccf,
-0x1cfa, 0x1cff,
+0x1cfb, 0x1cff,
0x1dfa, 0x1dfa,
0x1f16, 0x1f17,
0x1f1e, 0x1f1f,
@@ -10061,8 +10142,6 @@ CR_Cn[] = { 658,
0x244b, 0x245f,
0x2b74, 0x2b75,
0x2b96, 0x2b97,
-0x2bc9, 0x2bc9,
-0x2bff, 0x2bff,
0x2c2f, 0x2c2f,
0x2c5f, 0x2c5f,
0x2cf4, 0x2cf8,
@@ -10080,7 +10159,7 @@ CR_Cn[] = { 658,
0x2dcf, 0x2dcf,
0x2dd7, 0x2dd7,
0x2ddf, 0x2ddf,
-0x2e4f, 0x2e7f,
+0x2e50, 0x2e7f,
0x2e9a, 0x2e9a,
0x2ef4, 0x2eff,
0x2fd6, 0x2fef,
@@ -10093,14 +10172,14 @@ CR_Cn[] = { 658,
0x31bb, 0x31bf,
0x31e4, 0x31ef,
0x321f, 0x321f,
-0x32ff, 0x32ff,
0x4db6, 0x4dbf,
0x9ff0, 0x9fff,
0xa48d, 0xa48f,
0xa4c7, 0xa4cf,
0xa62c, 0xa63f,
0xa6f8, 0xa6ff,
-0xa7ba, 0xa7f6,
+0xa7c0, 0xa7c1,
+0xa7c7, 0xa7f6,
0xa82c, 0xa82f,
0xa83a, 0xa83f,
0xa878, 0xa87f,
@@ -10121,7 +10200,7 @@ CR_Cn[] = { 658,
0xab17, 0xab1f,
0xab27, 0xab27,
0xab2f, 0xab2f,
-0xab66, 0xab6f,
+0xab68, 0xab6f,
0xabee, 0xabef,
0xabfa, 0xabff,
0xd7a4, 0xd7af,
@@ -10227,7 +10306,8 @@ CR_Cn[] = { 658,
0x10d3a, 0x10e5f,
0x10e7f, 0x10eff,
0x10f28, 0x10f2f,
-0x10f5a, 0x10fff,
+0x10f5a, 0x10fdf,
+0x10ff7, 0x10fff,
0x1104e, 0x11051,
0x11070, 0x1107e,
0x110c2, 0x110cc,
@@ -10266,7 +10346,7 @@ CR_Cn[] = { 658,
0x11375, 0x113ff,
0x1145a, 0x1145a,
0x1145c, 0x1145c,
-0x1145f, 0x1147f,
+0x11460, 0x1147f,
0x114c8, 0x114cf,
0x114da, 0x1157f,
0x115b6, 0x115b7,
@@ -10274,16 +10354,18 @@ CR_Cn[] = { 658,
0x11645, 0x1164f,
0x1165a, 0x1165f,
0x1166d, 0x1167f,
-0x116b8, 0x116bf,
+0x116b9, 0x116bf,
0x116ca, 0x116ff,
0x1171b, 0x1171c,
0x1172c, 0x1172f,
0x11740, 0x117ff,
0x1183c, 0x1189f,
0x118f3, 0x118fe,
-0x11900, 0x119ff,
+0x11900, 0x1199f,
+0x119a8, 0x119a9,
+0x119d8, 0x119d9,
+0x119e5, 0x119ff,
0x11a48, 0x11a4f,
-0x11a84, 0x11a85,
0x11aa3, 0x11abf,
0x11af9, 0x11bff,
0x11c09, 0x11c09,
@@ -10306,12 +10388,14 @@ CR_Cn[] = { 658,
0x11d92, 0x11d92,
0x11d99, 0x11d9f,
0x11daa, 0x11edf,
-0x11ef9, 0x11fff,
+0x11ef9, 0x11fbf,
+0x11ff2, 0x11ffe,
0x1239a, 0x123ff,
0x1246f, 0x1246f,
0x12475, 0x1247f,
0x12544, 0x12fff,
-0x1342f, 0x143ff,
+0x1342f, 0x1342f,
+0x13439, 0x143ff,
0x14647, 0x167ff,
0x16a39, 0x16a3f,
0x16a5f, 0x16a5f,
@@ -10325,13 +10409,15 @@ CR_Cn[] = { 658,
0x16b78, 0x16b7c,
0x16b90, 0x16e3f,
0x16e9b, 0x16eff,
-0x16f45, 0x16f4f,
-0x16f7f, 0x16f8e,
+0x16f4b, 0x16f4e,
+0x16f88, 0x16f8e,
0x16fa0, 0x16fdf,
-0x16fe2, 0x16fff,
-0x187f2, 0x187ff,
+0x16fe4, 0x16fff,
+0x187f8, 0x187ff,
0x18af3, 0x1afff,
-0x1b11f, 0x1b16f,
+0x1b11f, 0x1b14f,
+0x1b153, 0x1b163,
+0x1b168, 0x1b16f,
0x1b2fc, 0x1bbff,
0x1bc6b, 0x1bc6f,
0x1bc7d, 0x1bc7f,
@@ -10372,13 +10458,20 @@ CR_Cn[] = { 658,
0x1e019, 0x1e01a,
0x1e022, 0x1e022,
0x1e025, 0x1e025,
-0x1e02b, 0x1e7ff,
+0x1e02b, 0x1e0ff,
+0x1e12d, 0x1e12f,
+0x1e13e, 0x1e13f,
+0x1e14a, 0x1e14d,
+0x1e150, 0x1e2bf,
+0x1e2fa, 0x1e2fe,
+0x1e300, 0x1e7ff,
0x1e8c5, 0x1e8c6,
0x1e8d7, 0x1e8ff,
-0x1e94b, 0x1e94f,
+0x1e94c, 0x1e94f,
0x1e95a, 0x1e95d,
0x1e960, 0x1ec70,
-0x1ecb5, 0x1edff,
+0x1ecb5, 0x1ed00,
+0x1ed3e, 0x1edff,
0x1ee04, 0x1ee04,
0x1ee20, 0x1ee20,
0x1ee23, 0x1ee23,
@@ -10420,33 +10513,36 @@ CR_Cn[] = { 658,
0x1f0d0, 0x1f0d0,
0x1f0f6, 0x1f0ff,
0x1f10d, 0x1f10f,
-0x1f16c, 0x1f16f,
+0x1f16d, 0x1f16f,
0x1f1ad, 0x1f1e5,
0x1f203, 0x1f20f,
0x1f23c, 0x1f23f,
0x1f249, 0x1f24f,
0x1f252, 0x1f25f,
0x1f266, 0x1f2ff,
-0x1f6d5, 0x1f6df,
+0x1f6d6, 0x1f6df,
0x1f6ed, 0x1f6ef,
-0x1f6fa, 0x1f6ff,
+0x1f6fb, 0x1f6ff,
0x1f774, 0x1f77f,
-0x1f7d9, 0x1f7ff,
+0x1f7d9, 0x1f7df,
+0x1f7ec, 0x1f7ff,
0x1f80c, 0x1f80f,
0x1f848, 0x1f84f,
0x1f85a, 0x1f85f,
0x1f888, 0x1f88f,
0x1f8ae, 0x1f8ff,
-0x1f90c, 0x1f90f,
-0x1f93f, 0x1f93f,
-0x1f971, 0x1f972,
+0x1f90c, 0x1f90c,
+0x1f972, 0x1f972,
0x1f977, 0x1f979,
-0x1f97b, 0x1f97b,
-0x1f9a3, 0x1f9af,
-0x1f9ba, 0x1f9bf,
-0x1f9c3, 0x1f9cf,
-0x1fa00, 0x1fa5f,
-0x1fa6e, 0x1ffff,
+0x1f9a3, 0x1f9a4,
+0x1f9ab, 0x1f9ad,
+0x1f9cb, 0x1f9cc,
+0x1fa54, 0x1fa5f,
+0x1fa6e, 0x1fa6f,
+0x1fa74, 0x1fa77,
+0x1fa7b, 0x1fa7f,
+0x1fa83, 0x1fa8f,
+0x1fa96, 0x1ffff,
0x2a6d7, 0x2a6ff,
0x2b735, 0x2b73f,
0x2b81e, 0x2b81f,
@@ -10470,7 +10566,7 @@ CR_Co[] = { 3,
/* PROPERTY: 'Common': Script */
static const OnigCodePoint
-CR_Common[] = { 166,
+CR_Common[] = { 172,
0x0000, 0x0040,
0x005b, 0x0060,
0x007b, 0x00a9,
@@ -10506,6 +10602,7 @@ CR_Common[] = { 166,
0x1ce9, 0x1cec,
0x1cee, 0x1cf3,
0x1cf5, 0x1cf7,
+0x1cfa, 0x1cfa,
0x2000, 0x200b,
0x200e, 0x2064,
0x2066, 0x2070,
@@ -10523,9 +10620,8 @@ CR_Common[] = { 166,
0x2460, 0x27ff,
0x2900, 0x2b73,
0x2b76, 0x2b95,
-0x2b98, 0x2bc8,
-0x2bca, 0x2bfe,
-0x2e00, 0x2e4e,
+0x2b98, 0x2bff,
+0x2e00, 0x2e4f,
0x2ff0, 0x2ffb,
0x3000, 0x3004,
0x3006, 0x3006,
@@ -10539,6 +10635,7 @@ CR_Common[] = { 166,
0x31c0, 0x31e3,
0x3220, 0x325f,
0x327f, 0x32cf,
+0x32ff, 0x32ff,
0x3358, 0x33ff,
0x4dc0, 0x4dff,
0xa700, 0xa721,
@@ -10567,6 +10664,7 @@ CR_Common[] = { 166,
0x10190, 0x1019b,
0x101d0, 0x101fc,
0x102e1, 0x102fb,
+0x16fe2, 0x16fe3,
0x1bca0, 0x1bca3,
0x1d000, 0x1d0f5,
0x1d100, 0x1d126,
@@ -10600,6 +10698,7 @@ CR_Common[] = { 166,
0x1d6a8, 0x1d7cb,
0x1d7ce, 0x1d7ff,
0x1ec71, 0x1ecb4,
+0x1ed01, 0x1ed3d,
0x1f000, 0x1f02b,
0x1f030, 0x1f093,
0x1f0a0, 0x1f0ae,
@@ -10607,7 +10706,7 @@ CR_Common[] = { 166,
0x1f0c1, 0x1f0cf,
0x1f0d1, 0x1f0f5,
0x1f100, 0x1f10c,
-0x1f110, 0x1f16b,
+0x1f110, 0x1f16c,
0x1f170, 0x1f1ac,
0x1f1e6, 0x1f1ff,
0x1f201, 0x1f202,
@@ -10615,26 +10714,29 @@ CR_Common[] = { 166,
0x1f240, 0x1f248,
0x1f250, 0x1f251,
0x1f260, 0x1f265,
-0x1f300, 0x1f6d4,
+0x1f300, 0x1f6d5,
0x1f6e0, 0x1f6ec,
-0x1f6f0, 0x1f6f9,
+0x1f6f0, 0x1f6fa,
0x1f700, 0x1f773,
0x1f780, 0x1f7d8,
+0x1f7e0, 0x1f7eb,
0x1f800, 0x1f80b,
0x1f810, 0x1f847,
0x1f850, 0x1f859,
0x1f860, 0x1f887,
0x1f890, 0x1f8ad,
0x1f900, 0x1f90b,
-0x1f910, 0x1f93e,
-0x1f940, 0x1f970,
+0x1f90d, 0x1f971,
0x1f973, 0x1f976,
-0x1f97a, 0x1f97a,
-0x1f97c, 0x1f9a2,
-0x1f9b0, 0x1f9b9,
-0x1f9c0, 0x1f9c2,
-0x1f9d0, 0x1f9ff,
+0x1f97a, 0x1f9a2,
+0x1f9a5, 0x1f9aa,
+0x1f9ae, 0x1f9ca,
+0x1f9cd, 0x1fa53,
0x1fa60, 0x1fa6d,
+0x1fa70, 0x1fa73,
+0x1fa78, 0x1fa7a,
+0x1fa80, 0x1fa82,
+0x1fa90, 0x1fa95,
0xe0001, 0xe0001,
0xe0020, 0xe007f,
}; /* END of CR_Common */
@@ -10757,14 +10859,14 @@ CR_Deseret[] = { 1,
static const OnigCodePoint
CR_Devanagari[] = { 4,
0x0900, 0x0950,
-0x0953, 0x0963,
+0x0955, 0x0963,
0x0966, 0x097f,
0xa8e0, 0xa8ff,
}; /* END of CR_Devanagari */
/* PROPERTY: 'Diacritic': Binary Property */
static const OnigCodePoint
-CR_Diacritic[] = { 163,
+CR_Diacritic[] = { 171,
0x005e, 0x005e,
0x0060, 0x0060,
0x00a8, 0x00a8,
@@ -10816,6 +10918,7 @@ CR_Diacritic[] = { 163,
0x0dca, 0x0dca,
0x0e47, 0x0e4c,
0x0e4e, 0x0e4e,
+0x0eba, 0x0eba,
0x0ec8, 0x0ecc,
0x0f18, 0x0f19,
0x0f35, 0x0f35,
@@ -10827,9 +10930,12 @@ CR_Diacritic[] = { 163,
0x0fc6, 0x0fc6,
0x1037, 0x1037,
0x1039, 0x103a,
+0x1063, 0x1064,
+0x1069, 0x106d,
0x1087, 0x108d,
0x108f, 0x108f,
0x109a, 0x109b,
+0x135d, 0x135f,
0x17c9, 0x17d3,
0x17dd, 0x17dd,
0x1939, 0x193b,
@@ -10866,8 +10972,8 @@ CR_Diacritic[] = { 163,
0xa67f, 0xa67f,
0xa69c, 0xa69d,
0xa6f0, 0xa6f1,
-0xa717, 0xa721,
-0xa788, 0xa788,
+0xa700, 0xa721,
+0xa788, 0xa78a,
0xa7f8, 0xa7f9,
0xa8c4, 0xa8c4,
0xa8e0, 0xa8f1,
@@ -10911,6 +11017,7 @@ CR_Diacritic[] = { 163,
0x116b6, 0x116b7,
0x1172b, 0x1172b,
0x11839, 0x1183a,
+0x119e0, 0x119e0,
0x11a34, 0x11a34,
0x11a47, 0x11a47,
0x11a99, 0x11a99,
@@ -10919,12 +11026,15 @@ CR_Diacritic[] = { 163,
0x11d44, 0x11d45,
0x11d97, 0x11d97,
0x16af0, 0x16af4,
+0x16b30, 0x16b36,
0x16f8f, 0x16f9f,
0x1d167, 0x1d169,
0x1d16d, 0x1d172,
0x1d17b, 0x1d182,
0x1d185, 0x1d18b,
0x1d1aa, 0x1d1ad,
+0x1e130, 0x1e136,
+0x1e2ec, 0x1e2ef,
0x1e8d0, 0x1e8d6,
0x1e944, 0x1e946,
0x1e948, 0x1e94a,
@@ -10948,8 +11058,9 @@ CR_Duployan[] = { 5,
/* PROPERTY: 'Egyptian_Hieroglyphs': Script */
static const OnigCodePoint
-CR_Egyptian_Hieroglyphs[] = { 1,
+CR_Egyptian_Hieroglyphs[] = { 2,
0x13000, 0x1342e,
+0x13430, 0x13438,
}; /* END of CR_Egyptian_Hieroglyphs */
/* PROPERTY: 'Elbasan': Script */
@@ -10958,9 +11069,15 @@ CR_Elbasan[] = { 1,
0x10500, 0x10527,
}; /* END of CR_Elbasan */
+/* PROPERTY: 'Elymaic': Script */
+static const OnigCodePoint
+CR_Elymaic[] = { 1,
+0x10fe0, 0x10ff6,
+}; /* END of CR_Elymaic */
+
/* PROPERTY: 'Emoji': Emoji Property */
static const OnigCodePoint
-CR_Emoji[] = { 147,
+CR_Emoji[] = { 151,
0x0023, 0x0023,
0x002a, 0x002a,
0x0030, 0x0039,
@@ -11093,21 +11210,25 @@ CR_Emoji[] = { 147,
0x1f5fa, 0x1f64f,
0x1f680, 0x1f6c5,
0x1f6cb, 0x1f6d2,
+0x1f6d5, 0x1f6d5,
0x1f6e0, 0x1f6e5,
0x1f6e9, 0x1f6e9,
0x1f6eb, 0x1f6ec,
0x1f6f0, 0x1f6f0,
-0x1f6f3, 0x1f6f9,
-0x1f910, 0x1f93a,
-0x1f93c, 0x1f93e,
-0x1f940, 0x1f945,
-0x1f947, 0x1f970,
+0x1f6f3, 0x1f6fa,
+0x1f7e0, 0x1f7eb,
+0x1f90d, 0x1f93a,
+0x1f93c, 0x1f945,
+0x1f947, 0x1f971,
0x1f973, 0x1f976,
-0x1f97a, 0x1f97a,
-0x1f97c, 0x1f9a2,
-0x1f9b0, 0x1f9b9,
-0x1f9c0, 0x1f9c2,
-0x1f9d0, 0x1f9ff,
+0x1f97a, 0x1f9a2,
+0x1f9a5, 0x1f9aa,
+0x1f9ae, 0x1f9ca,
+0x1f9cd, 0x1f9ff,
+0x1fa70, 0x1fa73,
+0x1fa78, 0x1fa7a,
+0x1fa80, 0x1fa82,
+0x1fa90, 0x1fa95,
}; /* END of CR_Emoji */
/* PROPERTY: 'Emoji_Component': Emoji Property */
@@ -11133,7 +11254,7 @@ CR_Emoji_Modifier[] = { 1,
/* PROPERTY: 'Emoji_Modifier_Base': Emoji Property */
static const OnigCodePoint
-CR_Emoji_Modifier_Base[] = { 34,
+CR_Emoji_Modifier_Base[] = { 36,
0x261d, 0x261d,
0x26f9, 0x26f9,
0x270a, 0x270d,
@@ -11143,12 +11264,12 @@ CR_Emoji_Modifier_Base[] = { 34,
0x1f3ca, 0x1f3cc,
0x1f442, 0x1f443,
0x1f446, 0x1f450,
-0x1f466, 0x1f469,
-0x1f46e, 0x1f46e,
-0x1f470, 0x1f478,
+0x1f466, 0x1f478,
0x1f47c, 0x1f47c,
0x1f481, 0x1f483,
0x1f485, 0x1f487,
+0x1f48f, 0x1f48f,
+0x1f491, 0x1f491,
0x1f4aa, 0x1f4aa,
0x1f574, 0x1f575,
0x1f57a, 0x1f57a,
@@ -11160,19 +11281,21 @@ CR_Emoji_Modifier_Base[] = { 34,
0x1f6b4, 0x1f6b6,
0x1f6c0, 0x1f6c0,
0x1f6cc, 0x1f6cc,
-0x1f918, 0x1f91c,
-0x1f91e, 0x1f91f,
+0x1f90f, 0x1f90f,
+0x1f918, 0x1f91f,
0x1f926, 0x1f926,
0x1f930, 0x1f939,
-0x1f93d, 0x1f93e,
+0x1f93c, 0x1f93e,
0x1f9b5, 0x1f9b6,
0x1f9b8, 0x1f9b9,
+0x1f9bb, 0x1f9bb,
+0x1f9cd, 0x1f9cf,
0x1f9d1, 0x1f9dd,
}; /* END of CR_Emoji_Modifier_Base */
/* PROPERTY: 'Emoji_Presentation': Emoji Property */
static const OnigCodePoint
-CR_Emoji_Presentation[] = { 77,
+CR_Emoji_Presentation[] = { 81,
0x231a, 0x231b,
0x23e9, 0x23ec,
0x23f0, 0x23f0,
@@ -11238,18 +11361,22 @@ CR_Emoji_Presentation[] = { 77,
0x1f680, 0x1f6c5,
0x1f6cc, 0x1f6cc,
0x1f6d0, 0x1f6d2,
+0x1f6d5, 0x1f6d5,
0x1f6eb, 0x1f6ec,
-0x1f6f4, 0x1f6f9,
-0x1f910, 0x1f93a,
-0x1f93c, 0x1f93e,
-0x1f940, 0x1f945,
-0x1f947, 0x1f970,
+0x1f6f4, 0x1f6fa,
+0x1f7e0, 0x1f7eb,
+0x1f90d, 0x1f93a,
+0x1f93c, 0x1f945,
+0x1f947, 0x1f971,
0x1f973, 0x1f976,
-0x1f97a, 0x1f97a,
-0x1f97c, 0x1f9a2,
-0x1f9b0, 0x1f9b9,
-0x1f9c0, 0x1f9c2,
-0x1f9d0, 0x1f9ff,
+0x1f97a, 0x1f9a2,
+0x1f9a5, 0x1f9aa,
+0x1f9ae, 0x1f9ca,
+0x1f9cd, 0x1f9ff,
+0x1fa70, 0x1fa73,
+0x1fa78, 0x1fa7a,
+0x1fa80, 0x1fa82,
+0x1fa90, 0x1fa95,
}; /* END of CR_Emoji_Presentation */
/* PROPERTY: 'Ethiopic': Script */
@@ -11373,7 +11500,7 @@ CR_Extended_Pictographic[] = { 77,
/* PROPERTY: 'Extender': Binary Property */
static const OnigCodePoint
-CR_Extender[] = { 29,
+CR_Extender[] = { 31,
0x00b7, 0x00b7,
0x02d0, 0x02d1,
0x0640, 0x0640,
@@ -11402,6 +11529,8 @@ CR_Extender[] = { 29,
0x11a98, 0x11a98,
0x16b42, 0x16b43,
0x16fe0, 0x16fe1,
+0x16fe3, 0x16fe3,
+0x1e13c, 0x1e13d,
0x1e944, 0x1e946,
}; /* END of CR_Extender */
@@ -11460,7 +11589,7 @@ CR_Grantha[] = { 15,
/* PROPERTY: 'Grapheme_Base': Derived Property */
static const OnigCodePoint
-CR_Grapheme_Base[] = { 806,
+CR_Grapheme_Base[] = { 819,
0x0020, 0x007e,
0x00a0, 0x00ac,
0x00ae, 0x02ff,
@@ -11595,7 +11724,7 @@ CR_Grapheme_Base[] = { 806,
0x0c58, 0x0c5a,
0x0c60, 0x0c61,
0x0c66, 0x0c6f,
-0x0c78, 0x0c80,
+0x0c77, 0x0c80,
0x0c82, 0x0c8c,
0x0c8e, 0x0c90,
0x0c92, 0x0ca8,
@@ -11638,16 +11767,10 @@ CR_Grapheme_Base[] = { 806,
0x0e4f, 0x0e5b,
0x0e81, 0x0e82,
0x0e84, 0x0e84,
-0x0e87, 0x0e88,
-0x0e8a, 0x0e8a,
-0x0e8d, 0x0e8d,
-0x0e94, 0x0e97,
-0x0e99, 0x0e9f,
-0x0ea1, 0x0ea3,
+0x0e86, 0x0e8a,
+0x0e8c, 0x0ea3,
0x0ea5, 0x0ea5,
-0x0ea7, 0x0ea7,
-0x0eaa, 0x0eab,
-0x0ead, 0x0eb0,
+0x0ea7, 0x0eb0,
0x0eb2, 0x0eb3,
0x0ebd, 0x0ebd,
0x0ec0, 0x0ec4,
@@ -11745,7 +11868,6 @@ CR_Grapheme_Base[] = { 806,
0x1a90, 0x1a99,
0x1aa0, 0x1aad,
0x1b04, 0x1b33,
-0x1b35, 0x1b35,
0x1b3b, 0x1b3b,
0x1b3d, 0x1b41,
0x1b43, 0x1b4b,
@@ -11770,6 +11892,7 @@ CR_Grapheme_Base[] = { 806,
0x1ce9, 0x1cec,
0x1cee, 0x1cf3,
0x1cf5, 0x1cf7,
+0x1cfa, 0x1cfa,
0x1d00, 0x1dbf,
0x1e00, 0x1f15,
0x1f18, 0x1f1d,
@@ -11799,9 +11922,7 @@ CR_Grapheme_Base[] = { 806,
0x2440, 0x244a,
0x2460, 0x2b73,
0x2b76, 0x2b95,
-0x2b98, 0x2bc8,
-0x2bca, 0x2bfe,
-0x2c00, 0x2c2e,
+0x2b98, 0x2c2e,
0x2c30, 0x2c5e,
0x2c60, 0x2cee,
0x2cf2, 0x2cf3,
@@ -11819,7 +11940,7 @@ CR_Grapheme_Base[] = { 806,
0x2dc8, 0x2dce,
0x2dd0, 0x2dd6,
0x2dd8, 0x2dde,
-0x2e00, 0x2e4e,
+0x2e00, 0x2e4f,
0x2e80, 0x2e99,
0x2e9b, 0x2ef3,
0x2f00, 0x2fd5,
@@ -11833,8 +11954,7 @@ CR_Grapheme_Base[] = { 806,
0x3190, 0x31ba,
0x31c0, 0x31e3,
0x31f0, 0x321e,
-0x3220, 0x32fe,
-0x3300, 0x4db5,
+0x3220, 0x4db5,
0x4dc0, 0x9fef,
0xa000, 0xa48c,
0xa490, 0xa4c6,
@@ -11844,7 +11964,8 @@ CR_Grapheme_Base[] = { 806,
0xa67e, 0xa69d,
0xa6a0, 0xa6ef,
0xa6f2, 0xa6f7,
-0xa700, 0xa7b9,
+0xa700, 0xa7bf,
+0xa7c2, 0xa7c6,
0xa7f7, 0xa801,
0xa803, 0xa805,
0xa807, 0xa80a,
@@ -11862,7 +11983,7 @@ CR_Grapheme_Base[] = { 806,
0xa983, 0xa9b2,
0xa9b4, 0xa9b5,
0xa9ba, 0xa9bb,
-0xa9bd, 0xa9cd,
+0xa9be, 0xa9cd,
0xa9cf, 0xa9d9,
0xa9de, 0xa9e4,
0xa9e6, 0xa9fe,
@@ -11887,7 +12008,7 @@ CR_Grapheme_Base[] = { 806,
0xab11, 0xab16,
0xab20, 0xab26,
0xab28, 0xab2e,
-0xab30, 0xab65,
+0xab30, 0xab67,
0xab70, 0xabe4,
0xabe6, 0xabe7,
0xabe9, 0xabec,
@@ -11996,6 +12117,7 @@ CR_Grapheme_Base[] = { 806,
0x10f00, 0x10f27,
0x10f30, 0x10f45,
0x10f51, 0x10f59,
+0x10fe0, 0x10ff6,
0x11000, 0x11000,
0x11002, 0x11037,
0x11047, 0x1104d,
@@ -12049,6 +12171,7 @@ CR_Grapheme_Base[] = { 806,
0x11447, 0x11459,
0x1145b, 0x1145b,
0x1145d, 0x1145d,
+0x1145f, 0x1145f,
0x11480, 0x114af,
0x114b1, 0x114b2,
0x114b9, 0x114b9,
@@ -12072,6 +12195,7 @@ CR_Grapheme_Base[] = { 806,
0x116ac, 0x116ac,
0x116ae, 0x116af,
0x116b6, 0x116b6,
+0x116b8, 0x116b8,
0x116c0, 0x116c9,
0x11700, 0x1171a,
0x11720, 0x11721,
@@ -12082,14 +12206,17 @@ CR_Grapheme_Base[] = { 806,
0x1183b, 0x1183b,
0x118a0, 0x118f2,
0x118ff, 0x118ff,
+0x119a0, 0x119a7,
+0x119aa, 0x119d3,
+0x119dc, 0x119df,
+0x119e1, 0x119e4,
0x11a00, 0x11a00,
0x11a0b, 0x11a32,
0x11a39, 0x11a3a,
0x11a3f, 0x11a46,
0x11a50, 0x11a50,
0x11a57, 0x11a58,
-0x11a5c, 0x11a83,
-0x11a86, 0x11a89,
+0x11a5c, 0x11a89,
0x11a97, 0x11a97,
0x11a9a, 0x11aa2,
0x11ac0, 0x11af8,
@@ -12116,7 +12243,8 @@ CR_Grapheme_Base[] = { 806,
0x11da0, 0x11da9,
0x11ee0, 0x11ef2,
0x11ef5, 0x11ef8,
-0x12000, 0x12399,
+0x11fc0, 0x11ff1,
+0x11fff, 0x12399,
0x12400, 0x1246e,
0x12470, 0x12474,
0x12480, 0x12543,
@@ -12135,13 +12263,15 @@ CR_Grapheme_Base[] = { 806,
0x16b63, 0x16b77,
0x16b7d, 0x16b8f,
0x16e40, 0x16e9a,
-0x16f00, 0x16f44,
-0x16f50, 0x16f7e,
+0x16f00, 0x16f4a,
+0x16f50, 0x16f87,
0x16f93, 0x16f9f,
-0x16fe0, 0x16fe1,
-0x17000, 0x187f1,
+0x16fe0, 0x16fe3,
+0x17000, 0x187f7,
0x18800, 0x18af2,
0x1b000, 0x1b11e,
+0x1b150, 0x1b152,
+0x1b164, 0x1b167,
0x1b170, 0x1b2fb,
0x1bc00, 0x1bc6a,
0x1bc70, 0x1bc7c,
@@ -12187,12 +12317,21 @@ CR_Grapheme_Base[] = { 806,
0x1da6d, 0x1da74,
0x1da76, 0x1da83,
0x1da85, 0x1da8b,
+0x1e100, 0x1e12c,
+0x1e137, 0x1e13d,
+0x1e140, 0x1e149,
+0x1e14e, 0x1e14f,
+0x1e2c0, 0x1e2eb,
+0x1e2f0, 0x1e2f9,
+0x1e2ff, 0x1e2ff,
0x1e800, 0x1e8c4,
0x1e8c7, 0x1e8cf,
0x1e900, 0x1e943,
+0x1e94b, 0x1e94b,
0x1e950, 0x1e959,
0x1e95e, 0x1e95f,
0x1ec71, 0x1ecb4,
+0x1ed01, 0x1ed3d,
0x1ee00, 0x1ee03,
0x1ee05, 0x1ee1f,
0x1ee21, 0x1ee22,
@@ -12234,33 +12373,36 @@ CR_Grapheme_Base[] = { 806,
0x1f0c1, 0x1f0cf,
0x1f0d1, 0x1f0f5,
0x1f100, 0x1f10c,
-0x1f110, 0x1f16b,
+0x1f110, 0x1f16c,
0x1f170, 0x1f1ac,
0x1f1e6, 0x1f202,
0x1f210, 0x1f23b,
0x1f240, 0x1f248,
0x1f250, 0x1f251,
0x1f260, 0x1f265,
-0x1f300, 0x1f6d4,
+0x1f300, 0x1f6d5,
0x1f6e0, 0x1f6ec,
-0x1f6f0, 0x1f6f9,
+0x1f6f0, 0x1f6fa,
0x1f700, 0x1f773,
0x1f780, 0x1f7d8,
+0x1f7e0, 0x1f7eb,
0x1f800, 0x1f80b,
0x1f810, 0x1f847,
0x1f850, 0x1f859,
0x1f860, 0x1f887,
0x1f890, 0x1f8ad,
0x1f900, 0x1f90b,
-0x1f910, 0x1f93e,
-0x1f940, 0x1f970,
+0x1f90d, 0x1f971,
0x1f973, 0x1f976,
-0x1f97a, 0x1f97a,
-0x1f97c, 0x1f9a2,
-0x1f9b0, 0x1f9b9,
-0x1f9c0, 0x1f9c2,
-0x1f9d0, 0x1f9ff,
+0x1f97a, 0x1f9a2,
+0x1f9a5, 0x1f9aa,
+0x1f9ae, 0x1f9ca,
+0x1f9cd, 0x1fa53,
0x1fa60, 0x1fa6d,
+0x1fa70, 0x1fa73,
+0x1fa78, 0x1fa7a,
+0x1fa80, 0x1fa82,
+0x1fa90, 0x1fa95,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
@@ -12271,7 +12413,7 @@ CR_Grapheme_Base[] = { 806,
/* PROPERTY: 'Grapheme_Extend': Derived Property */
static const OnigCodePoint
-CR_Grapheme_Extend[] = { 331,
+CR_Grapheme_Extend[] = { 335,
0x0300, 0x036f,
0x0483, 0x0489,
0x0591, 0x05bd,
@@ -12370,8 +12512,7 @@ CR_Grapheme_Extend[] = { 331,
0x0e34, 0x0e3a,
0x0e47, 0x0e4e,
0x0eb1, 0x0eb1,
-0x0eb4, 0x0eb9,
-0x0ebb, 0x0ebc,
+0x0eb4, 0x0ebc,
0x0ec8, 0x0ecd,
0x0f18, 0x0f19,
0x0f35, 0x0f35,
@@ -12422,8 +12563,7 @@ CR_Grapheme_Extend[] = { 331,
0x1a7f, 0x1a7f,
0x1ab0, 0x1abe,
0x1b00, 0x1b03,
-0x1b34, 0x1b34,
-0x1b36, 0x1b3a,
+0x1b34, 0x1b3a,
0x1b3c, 0x1b3c,
0x1b42, 0x1b42,
0x1b6b, 0x1b73,
@@ -12468,7 +12608,7 @@ CR_Grapheme_Extend[] = { 331,
0xa980, 0xa982,
0xa9b3, 0xa9b3,
0xa9b6, 0xa9b9,
-0xa9bc, 0xa9bc,
+0xa9bc, 0xa9bd,
0xa9e5, 0xa9e5,
0xaa29, 0xaa2e,
0xaa31, 0xaa32,
@@ -12553,6 +12693,9 @@ CR_Grapheme_Extend[] = { 331,
0x11727, 0x1172b,
0x1182f, 0x11837,
0x11839, 0x1183a,
+0x119d4, 0x119d7,
+0x119da, 0x119db,
+0x119e0, 0x119e0,
0x11a01, 0x11a0a,
0x11a33, 0x11a38,
0x11a3b, 0x11a3e,
@@ -12579,6 +12722,7 @@ CR_Grapheme_Extend[] = { 331,
0x11ef3, 0x11ef4,
0x16af0, 0x16af4,
0x16b30, 0x16b36,
+0x16f4f, 0x16f4f,
0x16f8f, 0x16f92,
0x1bc9d, 0x1bc9e,
0x1d165, 0x1d165,
@@ -12599,6 +12743,8 @@ CR_Grapheme_Extend[] = { 331,
0x1e01b, 0x1e021,
0x1e023, 0x1e024,
0x1e026, 0x1e02a,
+0x1e130, 0x1e136,
+0x1e2ec, 0x1e2ef,
0x1e8d0, 0x1e8d6,
0x1e944, 0x1e94a,
0xe0020, 0xe007f,
@@ -12607,7 +12753,7 @@ CR_Grapheme_Extend[] = { 331,
/* PROPERTY: 'Grapheme_Link': Derived Property */
static const OnigCodePoint
-CR_Grapheme_Link[] = { 50,
+CR_Grapheme_Link[] = { 52,
0x094d, 0x094d,
0x09cd, 0x09cd,
0x0a4d, 0x0a4d,
@@ -12620,6 +12766,7 @@ CR_Grapheme_Link[] = { 50,
0x0d4d, 0x0d4d,
0x0dca, 0x0dca,
0x0e3a, 0x0e3a,
+0x0eba, 0x0eba,
0x0f84, 0x0f84,
0x1039, 0x103a,
0x1714, 0x1714,
@@ -12652,6 +12799,7 @@ CR_Grapheme_Link[] = { 50,
0x116b6, 0x116b6,
0x1172b, 0x1172b,
0x11839, 0x11839,
+0x119e0, 0x119e0,
0x11a34, 0x11a34,
0x11a47, 0x11a47,
0x11a99, 0x11a99,
@@ -12841,10 +12989,11 @@ CR_Hex_Digit[] = { 6,
/* PROPERTY: 'Hiragana': Script */
static const OnigCodePoint
-CR_Hiragana[] = { 4,
+CR_Hiragana[] = { 5,
0x3041, 0x3096,
0x309d, 0x309f,
0x1b001, 0x1b11e,
+0x1b150, 0x1b152,
0x1f200, 0x1f200,
}; /* END of CR_Hiragana */
@@ -12878,7 +13027,7 @@ CR_IDS_Trinary_Operator[] = { 1,
/* PROPERTY: 'ID_Continue': Derived Property */
static const OnigCodePoint
-CR_ID_Continue[] = { 707,
+CR_ID_Continue[] = { 713,
0x0030, 0x0039,
0x0041, 0x005a,
0x005f, 0x005f,
@@ -13064,17 +13213,10 @@ CR_ID_Continue[] = { 707,
0x0e50, 0x0e59,
0x0e81, 0x0e82,
0x0e84, 0x0e84,
-0x0e87, 0x0e88,
-0x0e8a, 0x0e8a,
-0x0e8d, 0x0e8d,
-0x0e94, 0x0e97,
-0x0e99, 0x0e9f,
-0x0ea1, 0x0ea3,
+0x0e86, 0x0e8a,
+0x0e8c, 0x0ea3,
0x0ea5, 0x0ea5,
-0x0ea7, 0x0ea7,
-0x0eaa, 0x0eab,
-0x0ead, 0x0eb9,
-0x0ebb, 0x0ebd,
+0x0ea7, 0x0ebd,
0x0ec0, 0x0ec4,
0x0ec6, 0x0ec6,
0x0ec8, 0x0ecd,
@@ -13166,7 +13308,7 @@ CR_ID_Continue[] = { 707,
0x1c90, 0x1cba,
0x1cbd, 0x1cbf,
0x1cd0, 0x1cd2,
-0x1cd4, 0x1cf9,
+0x1cd4, 0x1cfa,
0x1d00, 0x1df9,
0x1dfb, 0x1f15,
0x1f18, 0x1f1d,
@@ -13250,7 +13392,8 @@ CR_ID_Continue[] = { 707,
0xa67f, 0xa6f1,
0xa717, 0xa71f,
0xa722, 0xa788,
-0xa78b, 0xa7b9,
+0xa78b, 0xa7bf,
+0xa7c2, 0xa7c6,
0xa7f7, 0xa827,
0xa840, 0xa873,
0xa880, 0xa8c5,
@@ -13277,7 +13420,7 @@ CR_ID_Continue[] = { 707,
0xab20, 0xab26,
0xab28, 0xab2e,
0xab30, 0xab5a,
-0xab5c, 0xab65,
+0xab5c, 0xab67,
0xab70, 0xabea,
0xabec, 0xabed,
0xabf0, 0xabf9,
@@ -13379,6 +13522,7 @@ CR_ID_Continue[] = { 707,
0x10f00, 0x10f1c,
0x10f27, 0x10f27,
0x10f30, 0x10f50,
+0x10fe0, 0x10ff6,
0x11000, 0x11046,
0x11066, 0x1106f,
0x1107f, 0x110ba,
@@ -13420,7 +13564,7 @@ CR_ID_Continue[] = { 707,
0x11370, 0x11374,
0x11400, 0x1144a,
0x11450, 0x11459,
-0x1145e, 0x1145e,
+0x1145e, 0x1145f,
0x11480, 0x114c5,
0x114c7, 0x114c7,
0x114d0, 0x114d9,
@@ -13430,7 +13574,7 @@ CR_ID_Continue[] = { 707,
0x11600, 0x11640,
0x11644, 0x11644,
0x11650, 0x11659,
-0x11680, 0x116b7,
+0x11680, 0x116b8,
0x116c0, 0x116c9,
0x11700, 0x1171a,
0x1171d, 0x1172b,
@@ -13438,10 +13582,13 @@ CR_ID_Continue[] = { 707,
0x11800, 0x1183a,
0x118a0, 0x118e9,
0x118ff, 0x118ff,
+0x119a0, 0x119a7,
+0x119aa, 0x119d7,
+0x119da, 0x119e1,
+0x119e3, 0x119e4,
0x11a00, 0x11a3e,
0x11a47, 0x11a47,
-0x11a50, 0x11a83,
-0x11a86, 0x11a99,
+0x11a50, 0x11a99,
0x11a9d, 0x11a9d,
0x11ac0, 0x11af8,
0x11c00, 0x11c08,
@@ -13481,13 +13628,16 @@ CR_ID_Continue[] = { 707,
0x16b63, 0x16b77,
0x16b7d, 0x16b8f,
0x16e40, 0x16e7f,
-0x16f00, 0x16f44,
-0x16f50, 0x16f7e,
+0x16f00, 0x16f4a,
+0x16f4f, 0x16f87,
0x16f8f, 0x16f9f,
0x16fe0, 0x16fe1,
-0x17000, 0x187f1,
+0x16fe3, 0x16fe3,
+0x17000, 0x187f7,
0x18800, 0x18af2,
0x1b000, 0x1b11e,
+0x1b150, 0x1b152,
+0x1b164, 0x1b167,
0x1b170, 0x1b2fb,
0x1bc00, 0x1bc6a,
0x1bc70, 0x1bc7c,
@@ -13542,9 +13692,14 @@ CR_ID_Continue[] = { 707,
0x1e01b, 0x1e021,
0x1e023, 0x1e024,
0x1e026, 0x1e02a,
+0x1e100, 0x1e12c,
+0x1e130, 0x1e13d,
+0x1e140, 0x1e149,
+0x1e14e, 0x1e14e,
+0x1e2c0, 0x1e2f9,
0x1e800, 0x1e8c4,
0x1e8d0, 0x1e8d6,
-0x1e900, 0x1e94a,
+0x1e900, 0x1e94b,
0x1e950, 0x1e959,
0x1ee00, 0x1ee03,
0x1ee05, 0x1ee1f,
@@ -13590,7 +13745,7 @@ CR_ID_Continue[] = { 707,
/* PROPERTY: 'ID_Start': Derived Property */
static const OnigCodePoint
-CR_ID_Start[] = { 599,
+CR_ID_Start[] = { 609,
0x0041, 0x005a,
0x0061, 0x007a,
0x00aa, 0x00aa,
@@ -13735,16 +13890,10 @@ CR_ID_Start[] = { 599,
0x0e40, 0x0e46,
0x0e81, 0x0e82,
0x0e84, 0x0e84,
-0x0e87, 0x0e88,
-0x0e8a, 0x0e8a,
-0x0e8d, 0x0e8d,
-0x0e94, 0x0e97,
-0x0e99, 0x0e9f,
-0x0ea1, 0x0ea3,
+0x0e86, 0x0e8a,
+0x0e8c, 0x0ea3,
0x0ea5, 0x0ea5,
-0x0ea7, 0x0ea7,
-0x0eaa, 0x0eab,
-0x0ead, 0x0eb0,
+0x0ea7, 0x0eb0,
0x0eb2, 0x0eb3,
0x0ebd, 0x0ebd,
0x0ec0, 0x0ec4,
@@ -13824,8 +13973,9 @@ CR_ID_Start[] = { 599,
0x1c90, 0x1cba,
0x1cbd, 0x1cbf,
0x1ce9, 0x1cec,
-0x1cee, 0x1cf1,
+0x1cee, 0x1cf3,
0x1cf5, 0x1cf6,
+0x1cfa, 0x1cfa,
0x1d00, 0x1dbf,
0x1e00, 0x1f15,
0x1f18, 0x1f1d,
@@ -13905,7 +14055,8 @@ CR_ID_Start[] = { 599,
0xa6a0, 0xa6ef,
0xa717, 0xa71f,
0xa722, 0xa788,
-0xa78b, 0xa7b9,
+0xa78b, 0xa7bf,
+0xa7c2, 0xa7c6,
0xa7f7, 0xa801,
0xa803, 0xa805,
0xa807, 0xa80a,
@@ -13943,7 +14094,7 @@ CR_ID_Start[] = { 599,
0xab20, 0xab26,
0xab28, 0xab2e,
0xab30, 0xab5a,
-0xab5c, 0xab65,
+0xab5c, 0xab67,
0xab70, 0xabe2,
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
@@ -14031,6 +14182,7 @@ CR_ID_Start[] = { 599,
0x10f00, 0x10f1c,
0x10f27, 0x10f27,
0x10f30, 0x10f45,
+0x10fe0, 0x10ff6,
0x11003, 0x11037,
0x11083, 0x110af,
0x110d0, 0x110e8,
@@ -14061,6 +14213,7 @@ CR_ID_Start[] = { 599,
0x1135d, 0x11361,
0x11400, 0x11434,
0x11447, 0x1144a,
+0x1145f, 0x1145f,
0x11480, 0x114af,
0x114c4, 0x114c5,
0x114c7, 0x114c7,
@@ -14069,16 +14222,20 @@ CR_ID_Start[] = { 599,
0x11600, 0x1162f,
0x11644, 0x11644,
0x11680, 0x116aa,
+0x116b8, 0x116b8,
0x11700, 0x1171a,
0x11800, 0x1182b,
0x118a0, 0x118df,
0x118ff, 0x118ff,
+0x119a0, 0x119a7,
+0x119aa, 0x119d0,
+0x119e1, 0x119e1,
+0x119e3, 0x119e3,
0x11a00, 0x11a00,
0x11a0b, 0x11a32,
0x11a3a, 0x11a3a,
0x11a50, 0x11a50,
-0x11a5c, 0x11a83,
-0x11a86, 0x11a89,
+0x11a5c, 0x11a89,
0x11a9d, 0x11a9d,
0x11ac0, 0x11af8,
0x11c00, 0x11c08,
@@ -14107,13 +14264,16 @@ CR_ID_Start[] = { 599,
0x16b63, 0x16b77,
0x16b7d, 0x16b8f,
0x16e40, 0x16e7f,
-0x16f00, 0x16f44,
+0x16f00, 0x16f4a,
0x16f50, 0x16f50,
0x16f93, 0x16f9f,
0x16fe0, 0x16fe1,
-0x17000, 0x187f1,
+0x16fe3, 0x16fe3,
+0x17000, 0x187f7,
0x18800, 0x18af2,
0x1b000, 0x1b11e,
+0x1b150, 0x1b152,
+0x1b164, 0x1b167,
0x1b170, 0x1b2fb,
0x1bc00, 0x1bc6a,
0x1bc70, 0x1bc7c,
@@ -14149,8 +14309,13 @@ CR_ID_Start[] = { 599,
0x1d78a, 0x1d7a8,
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
+0x1e100, 0x1e12c,
+0x1e137, 0x1e13d,
+0x1e14e, 0x1e14e,
+0x1e2c0, 0x1e2eb,
0x1e800, 0x1e8c4,
0x1e900, 0x1e943,
+0x1e94b, 0x1e94b,
0x1ee00, 0x1ee03,
0x1ee05, 0x1ee1f,
0x1ee21, 0x1ee22,
@@ -14202,7 +14367,7 @@ CR_Ideographic[] = { 16,
0x4e00, 0x9fef,
0xf900, 0xfa6d,
0xfa70, 0xfad9,
-0x17000, 0x187f1,
+0x17000, 0x187f7,
0x18800, 0x18af2,
0x1b170, 0x1b2fb,
0x20000, 0x2a6d6,
@@ -14227,7 +14392,7 @@ CR_Inherited[] = { 28,
0x0485, 0x0486,
0x064b, 0x0655,
0x0670, 0x0670,
-0x0951, 0x0952,
+0x0951, 0x0954,
0x1ab0, 0x1abe,
0x1cd0, 0x1cd2,
0x1cd4, 0x1ce0,
@@ -14308,7 +14473,7 @@ CR_Kannada[] = { 13,
/* PROPERTY: 'Katakana': Script */
static const OnigCodePoint
-CR_Katakana[] = { 8,
+CR_Katakana[] = { 9,
0x30a1, 0x30fa,
0x30fd, 0x30ff,
0x31f0, 0x31ff,
@@ -14317,6 +14482,7 @@ CR_Katakana[] = { 8,
0xff66, 0xff6f,
0xff71, 0xff9d,
0x1b000, 0x1b000,
+0x1b164, 0x1b167,
}; /* END of CR_Katakana */
/* PROPERTY: 'Kayah_Li': Script */
@@ -14364,7 +14530,7 @@ CR_Khudawadi[] = { 2,
/* PROPERTY: 'L': Major Category */
static const OnigCodePoint
-CR_L[] = { 599,
+CR_L[] = { 609,
0x0041, 0x005a,
0x0061, 0x007a,
0x00aa, 0x00aa,
@@ -14509,16 +14675,10 @@ CR_L[] = { 599,
0x0e40, 0x0e46,
0x0e81, 0x0e82,
0x0e84, 0x0e84,
-0x0e87, 0x0e88,
-0x0e8a, 0x0e8a,
-0x0e8d, 0x0e8d,
-0x0e94, 0x0e97,
-0x0e99, 0x0e9f,
-0x0ea1, 0x0ea3,
+0x0e86, 0x0e8a,
+0x0e8c, 0x0ea3,
0x0ea5, 0x0ea5,
-0x0ea7, 0x0ea7,
-0x0eaa, 0x0eab,
-0x0ead, 0x0eb0,
+0x0ea7, 0x0eb0,
0x0eb2, 0x0eb3,
0x0ebd, 0x0ebd,
0x0ec0, 0x0ec4,
@@ -14599,8 +14759,9 @@ CR_L[] = { 599,
0x1c90, 0x1cba,
0x1cbd, 0x1cbf,
0x1ce9, 0x1cec,
-0x1cee, 0x1cf1,
+0x1cee, 0x1cf3,
0x1cf5, 0x1cf6,
+0x1cfa, 0x1cfa,
0x1d00, 0x1dbf,
0x1e00, 0x1f15,
0x1f18, 0x1f1d,
@@ -14681,7 +14842,8 @@ CR_L[] = { 599,
0xa6a0, 0xa6e5,
0xa717, 0xa71f,
0xa722, 0xa788,
-0xa78b, 0xa7b9,
+0xa78b, 0xa7bf,
+0xa7c2, 0xa7c6,
0xa7f7, 0xa801,
0xa803, 0xa805,
0xa807, 0xa80a,
@@ -14719,7 +14881,7 @@ CR_L[] = { 599,
0xab20, 0xab26,
0xab28, 0xab2e,
0xab30, 0xab5a,
-0xab5c, 0xab65,
+0xab5c, 0xab67,
0xab70, 0xabe2,
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
@@ -14806,6 +14968,7 @@ CR_L[] = { 599,
0x10f00, 0x10f1c,
0x10f27, 0x10f27,
0x10f30, 0x10f45,
+0x10fe0, 0x10ff6,
0x11003, 0x11037,
0x11083, 0x110af,
0x110d0, 0x110e8,
@@ -14836,6 +14999,7 @@ CR_L[] = { 599,
0x1135d, 0x11361,
0x11400, 0x11434,
0x11447, 0x1144a,
+0x1145f, 0x1145f,
0x11480, 0x114af,
0x114c4, 0x114c5,
0x114c7, 0x114c7,
@@ -14844,16 +15008,20 @@ CR_L[] = { 599,
0x11600, 0x1162f,
0x11644, 0x11644,
0x11680, 0x116aa,
+0x116b8, 0x116b8,
0x11700, 0x1171a,
0x11800, 0x1182b,
0x118a0, 0x118df,
0x118ff, 0x118ff,
+0x119a0, 0x119a7,
+0x119aa, 0x119d0,
+0x119e1, 0x119e1,
+0x119e3, 0x119e3,
0x11a00, 0x11a00,
0x11a0b, 0x11a32,
0x11a3a, 0x11a3a,
0x11a50, 0x11a50,
-0x11a5c, 0x11a83,
-0x11a86, 0x11a89,
+0x11a5c, 0x11a89,
0x11a9d, 0x11a9d,
0x11ac0, 0x11af8,
0x11c00, 0x11c08,
@@ -14881,13 +15049,16 @@ CR_L[] = { 599,
0x16b63, 0x16b77,
0x16b7d, 0x16b8f,
0x16e40, 0x16e7f,
-0x16f00, 0x16f44,
+0x16f00, 0x16f4a,
0x16f50, 0x16f50,
0x16f93, 0x16f9f,
0x16fe0, 0x16fe1,
-0x17000, 0x187f1,
+0x16fe3, 0x16fe3,
+0x17000, 0x187f7,
0x18800, 0x18af2,
0x1b000, 0x1b11e,
+0x1b150, 0x1b152,
+0x1b164, 0x1b167,
0x1b170, 0x1b2fb,
0x1bc00, 0x1bc6a,
0x1bc70, 0x1bc7c,
@@ -14923,8 +15094,13 @@ CR_L[] = { 599,
0x1d78a, 0x1d7a8,
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
+0x1e100, 0x1e12c,
+0x1e137, 0x1e13d,
+0x1e14e, 0x1e14e,
+0x1e2c0, 0x1e2eb,
0x1e800, 0x1e8c4,
0x1e900, 0x1e943,
+0x1e94b, 0x1e94b,
0x1ee00, 0x1ee03,
0x1ee05, 0x1ee1f,
0x1ee21, 0x1ee22,
@@ -14968,7 +15144,7 @@ CR_L[] = { 599,
/* PROPERTY: 'LC': General Category */
static const OnigCodePoint
-CR_LC[] = { 130,
+CR_LC[] = { 131,
0x0041, 0x005a,
0x0061, 0x007a,
0x00b5, 0x00b5,
@@ -15052,10 +15228,11 @@ CR_LC[] = { 130,
0xa722, 0xa76f,
0xa771, 0xa787,
0xa78b, 0xa78e,
-0xa790, 0xa7b9,
+0xa790, 0xa7bf,
+0xa7c2, 0xa7c6,
0xa7fa, 0xa7fa,
0xab30, 0xab5a,
-0xab60, 0xab65,
+0xab60, 0xab67,
0xab70, 0xabbf,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -15103,20 +15280,13 @@ CR_LC[] = { 130,
/* PROPERTY: 'Lao': Script */
static const OnigCodePoint
-CR_Lao[] = { 18,
+CR_Lao[] = { 11,
0x0e81, 0x0e82,
0x0e84, 0x0e84,
-0x0e87, 0x0e88,
-0x0e8a, 0x0e8a,
-0x0e8d, 0x0e8d,
-0x0e94, 0x0e97,
-0x0e99, 0x0e9f,
-0x0ea1, 0x0ea3,
+0x0e86, 0x0e8a,
+0x0e8c, 0x0ea3,
0x0ea5, 0x0ea5,
-0x0ea7, 0x0ea7,
-0x0eaa, 0x0eab,
-0x0ead, 0x0eb9,
-0x0ebb, 0x0ebd,
+0x0ea7, 0x0ebd,
0x0ec0, 0x0ec4,
0x0ec6, 0x0ec6,
0x0ec8, 0x0ecd,
@@ -15126,7 +15296,7 @@ CR_Lao[] = { 18,
/* PROPERTY: 'Latin': Script */
static const OnigCodePoint
-CR_Latin[] = { 30,
+CR_Latin[] = { 32,
0x0041, 0x005a,
0x0061, 0x007a,
0x00aa, 0x00aa,
@@ -15150,10 +15320,12 @@ CR_Latin[] = { 30,
0x2160, 0x2188,
0x2c60, 0x2c7f,
0xa722, 0xa787,
-0xa78b, 0xa7b9,
+0xa78b, 0xa7bf,
+0xa7c2, 0xa7c6,
0xa7f7, 0xa7ff,
0xab30, 0xab5a,
0xab5c, 0xab64,
+0xab66, 0xab67,
0xfb00, 0xfb06,
0xff21, 0xff3a,
0xff41, 0xff5a,
@@ -15205,7 +15377,7 @@ CR_Lisu[] = { 1,
/* PROPERTY: 'Ll': General Category */
static const OnigCodePoint
-CR_Ll[] = { 638,
+CR_Ll[] = { 642,
0x0061, 0x007a,
0x00b5, 0x00b5,
0x00df, 0x00f6,
@@ -15803,9 +15975,13 @@ CR_Ll[] = { 638,
0xa7b5, 0xa7b5,
0xa7b7, 0xa7b7,
0xa7b9, 0xa7b9,
+0xa7bb, 0xa7bb,
+0xa7bd, 0xa7bd,
+0xa7bf, 0xa7bf,
+0xa7c3, 0xa7c3,
0xa7fa, 0xa7fa,
0xab30, 0xab5a,
-0xab60, 0xab65,
+0xab60, 0xab67,
0xab70, 0xabbf,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -15848,7 +16024,7 @@ CR_Ll[] = { 638,
/* PROPERTY: 'Lm': General Category */
static const OnigCodePoint
-CR_Lm[] = { 57,
+CR_Lm[] = { 60,
0x02b0, 0x02c1,
0x02c6, 0x02d1,
0x02e0, 0x02e4,
@@ -15906,11 +16082,14 @@ CR_Lm[] = { 57,
0x16b40, 0x16b43,
0x16f93, 0x16f9f,
0x16fe0, 0x16fe1,
+0x16fe3, 0x16fe3,
+0x1e137, 0x1e13d,
+0x1e94b, 0x1e94b,
}; /* END of CR_Lm */
/* PROPERTY: 'Lo': General Category */
static const OnigCodePoint
-CR_Lo[] = { 470,
+CR_Lo[] = { 476,
0x00aa, 0x00aa,
0x00ba, 0x00ba,
0x01bb, 0x01bb,
@@ -16029,16 +16208,10 @@ CR_Lo[] = { 470,
0x0e40, 0x0e45,
0x0e81, 0x0e82,
0x0e84, 0x0e84,
-0x0e87, 0x0e88,
-0x0e8a, 0x0e8a,
-0x0e8d, 0x0e8d,
-0x0e94, 0x0e97,
-0x0e99, 0x0e9f,
-0x0ea1, 0x0ea3,
+0x0e86, 0x0e8a,
+0x0e8c, 0x0ea3,
0x0ea5, 0x0ea5,
-0x0ea7, 0x0ea7,
-0x0eaa, 0x0eab,
-0x0ead, 0x0eb0,
+0x0ea7, 0x0eb0,
0x0eb2, 0x0eb3,
0x0ebd, 0x0ebd,
0x0ec0, 0x0ec4,
@@ -16108,8 +16281,9 @@ CR_Lo[] = { 470,
0x1c4d, 0x1c4f,
0x1c5a, 0x1c77,
0x1ce9, 0x1cec,
-0x1cee, 0x1cf1,
+0x1cee, 0x1cf3,
0x1cf5, 0x1cf6,
+0x1cfa, 0x1cfa,
0x2135, 0x2138,
0x2d30, 0x2d67,
0x2d80, 0x2d96,
@@ -16259,6 +16433,7 @@ CR_Lo[] = { 470,
0x10f00, 0x10f1c,
0x10f27, 0x10f27,
0x10f30, 0x10f45,
+0x10fe0, 0x10ff6,
0x11003, 0x11037,
0x11083, 0x110af,
0x110d0, 0x110e8,
@@ -16289,6 +16464,7 @@ CR_Lo[] = { 470,
0x1135d, 0x11361,
0x11400, 0x11434,
0x11447, 0x1144a,
+0x1145f, 0x1145f,
0x11480, 0x114af,
0x114c4, 0x114c5,
0x114c7, 0x114c7,
@@ -16297,15 +16473,19 @@ CR_Lo[] = { 470,
0x11600, 0x1162f,
0x11644, 0x11644,
0x11680, 0x116aa,
+0x116b8, 0x116b8,
0x11700, 0x1171a,
0x11800, 0x1182b,
0x118ff, 0x118ff,
+0x119a0, 0x119a7,
+0x119aa, 0x119d0,
+0x119e1, 0x119e1,
+0x119e3, 0x119e3,
0x11a00, 0x11a00,
0x11a0b, 0x11a32,
0x11a3a, 0x11a3a,
0x11a50, 0x11a50,
-0x11a5c, 0x11a83,
-0x11a86, 0x11a89,
+0x11a5c, 0x11a89,
0x11a9d, 0x11a9d,
0x11ac0, 0x11af8,
0x11c00, 0x11c08,
@@ -16331,16 +16511,21 @@ CR_Lo[] = { 470,
0x16b00, 0x16b2f,
0x16b63, 0x16b77,
0x16b7d, 0x16b8f,
-0x16f00, 0x16f44,
+0x16f00, 0x16f4a,
0x16f50, 0x16f50,
-0x17000, 0x187f1,
+0x17000, 0x187f7,
0x18800, 0x18af2,
0x1b000, 0x1b11e,
+0x1b150, 0x1b152,
+0x1b164, 0x1b167,
0x1b170, 0x1b2fb,
0x1bc00, 0x1bc6a,
0x1bc70, 0x1bc7c,
0x1bc80, 0x1bc88,
0x1bc90, 0x1bc99,
+0x1e100, 0x1e12c,
+0x1e14e, 0x1e14e,
+0x1e2c0, 0x1e2eb,
0x1e800, 0x1e8c4,
0x1ee00, 0x1ee03,
0x1ee05, 0x1ee1f,
@@ -16415,7 +16600,7 @@ CR_Lt[] = { 10,
/* PROPERTY: 'Lu': General Category */
static const OnigCodePoint
-CR_Lu[] = { 631,
+CR_Lu[] = { 636,
0x0041, 0x005a,
0x00c0, 0x00d6,
0x00d8, 0x00de,
@@ -17009,6 +17194,11 @@ CR_Lu[] = { 631,
0xa7b0, 0xa7b4,
0xa7b6, 0xa7b6,
0xa7b8, 0xa7b8,
+0xa7ba, 0xa7ba,
+0xa7bc, 0xa7bc,
+0xa7be, 0xa7be,
+0xa7c2, 0xa7c2,
+0xa7c4, 0xa7c6,
0xff21, 0xff3a,
0x10400, 0x10427,
0x104b0, 0x104d3,
@@ -17064,7 +17254,7 @@ CR_Lydian[] = { 2,
/* PROPERTY: 'M': Major Category */
static const OnigCodePoint
-CR_M[] = { 275,
+CR_M[] = { 280,
0x0300, 0x036f,
0x0483, 0x0489,
0x0591, 0x05bd,
@@ -17160,8 +17350,7 @@ CR_M[] = { 275,
0x0e34, 0x0e3a,
0x0e47, 0x0e4e,
0x0eb1, 0x0eb1,
-0x0eb4, 0x0eb9,
-0x0ebb, 0x0ebc,
+0x0eb4, 0x0ebc,
0x0ec8, 0x0ecd,
0x0f18, 0x0f19,
0x0f35, 0x0f35,
@@ -17209,7 +17398,7 @@ CR_M[] = { 275,
0x1cd0, 0x1cd2,
0x1cd4, 0x1ce8,
0x1ced, 0x1ced,
-0x1cf2, 0x1cf4,
+0x1cf4, 0x1cf4,
0x1cf7, 0x1cf9,
0x1dc0, 0x1df9,
0x1dfb, 0x1dff,
@@ -17296,6 +17485,9 @@ CR_M[] = { 275,
0x116ab, 0x116b7,
0x1171d, 0x1172b,
0x1182c, 0x1183a,
+0x119d1, 0x119d7,
+0x119da, 0x119e0,
+0x119e4, 0x119e4,
0x11a01, 0x11a0a,
0x11a33, 0x11a39,
0x11a3b, 0x11a3e,
@@ -17317,7 +17509,8 @@ CR_M[] = { 275,
0x11ef3, 0x11ef6,
0x16af0, 0x16af4,
0x16b30, 0x16b36,
-0x16f51, 0x16f7e,
+0x16f4f, 0x16f4f,
+0x16f51, 0x16f87,
0x16f8f, 0x16f92,
0x1bc9d, 0x1bc9e,
0x1d165, 0x1d169,
@@ -17337,6 +17530,8 @@ CR_M[] = { 275,
0x1e01b, 0x1e021,
0x1e023, 0x1e024,
0x1e026, 0x1e02a,
+0x1e130, 0x1e136,
+0x1e2ec, 0x1e2ef,
0x1e8d0, 0x1e8d6,
0x1e944, 0x1e94a,
0xe0100, 0xe01ef,
@@ -17546,7 +17741,7 @@ CR_Math[] = { 138,
/* PROPERTY: 'Mc': General Category */
static const OnigCodePoint
-CR_Mc[] = { 166,
+CR_Mc[] = { 168,
0x0903, 0x0903,
0x093b, 0x093b,
0x093e, 0x0940,
@@ -17633,7 +17828,6 @@ CR_Mc[] = { 166,
0x1c24, 0x1c2b,
0x1c34, 0x1c35,
0x1ce1, 0x1ce1,
-0x1cf2, 0x1cf3,
0x1cf7, 0x1cf7,
0x302e, 0x302f,
0xa823, 0xa824,
@@ -17644,7 +17838,7 @@ CR_Mc[] = { 166,
0xa983, 0xa983,
0xa9b4, 0xa9b5,
0xa9ba, 0xa9bb,
-0xa9bd, 0xa9c0,
+0xa9be, 0xa9c0,
0xaa2f, 0xaa30,
0xaa33, 0xaa34,
0xaa4d, 0xaa4d,
@@ -17698,6 +17892,9 @@ CR_Mc[] = { 166,
0x11726, 0x11726,
0x1182c, 0x1182e,
0x11838, 0x11838,
+0x119d1, 0x119d3,
+0x119dc, 0x119df,
+0x119e4, 0x119e4,
0x11a39, 0x11a39,
0x11a57, 0x11a58,
0x11a97, 0x11a97,
@@ -17710,7 +17907,7 @@ CR_Mc[] = { 166,
0x11d93, 0x11d94,
0x11d96, 0x11d96,
0x11ef5, 0x11ef6,
-0x16f51, 0x16f7e,
+0x16f51, 0x16f87,
0x1d165, 0x1d166,
0x1d16d, 0x1d172,
}; /* END of CR_Mc */
@@ -17763,14 +17960,14 @@ CR_Meroitic_Hieroglyphs[] = { 1,
/* PROPERTY: 'Miao': Script */
static const OnigCodePoint
CR_Miao[] = { 3,
-0x16f00, 0x16f44,
-0x16f50, 0x16f7e,
+0x16f00, 0x16f4a,
+0x16f4f, 0x16f87,
0x16f8f, 0x16f9f,
}; /* END of CR_Miao */
/* PROPERTY: 'Mn': General Category */
static const OnigCodePoint
-CR_Mn[] = { 313,
+CR_Mn[] = { 318,
0x0300, 0x036f,
0x0483, 0x0487,
0x0591, 0x05bd,
@@ -17859,8 +18056,7 @@ CR_Mn[] = { 313,
0x0e34, 0x0e3a,
0x0e47, 0x0e4e,
0x0eb1, 0x0eb1,
-0x0eb4, 0x0eb9,
-0x0ebb, 0x0ebc,
+0x0eb4, 0x0ebc,
0x0ec8, 0x0ecd,
0x0f18, 0x0f19,
0x0f35, 0x0f35,
@@ -17958,7 +18154,7 @@ CR_Mn[] = { 313,
0xa980, 0xa982,
0xa9b3, 0xa9b3,
0xa9b6, 0xa9b9,
-0xa9bc, 0xa9bc,
+0xa9bc, 0xa9bd,
0xa9e5, 0xa9e5,
0xaa29, 0xaa2e,
0xaa31, 0xaa32,
@@ -18037,6 +18233,9 @@ CR_Mn[] = { 313,
0x11727, 0x1172b,
0x1182f, 0x11837,
0x11839, 0x1183a,
+0x119d4, 0x119d7,
+0x119da, 0x119db,
+0x119e0, 0x119e0,
0x11a01, 0x11a0a,
0x11a33, 0x11a38,
0x11a3b, 0x11a3e,
@@ -18063,6 +18262,7 @@ CR_Mn[] = { 313,
0x11ef3, 0x11ef4,
0x16af0, 0x16af4,
0x16b30, 0x16b36,
+0x16f4f, 0x16f4f,
0x16f8f, 0x16f92,
0x1bc9d, 0x1bc9e,
0x1d167, 0x1d169,
@@ -18081,6 +18281,8 @@ CR_Mn[] = { 313,
0x1e01b, 0x1e021,
0x1e023, 0x1e024,
0x1e026, 0x1e02a,
+0x1e130, 0x1e136,
+0x1e2ec, 0x1e2ef,
0x1e8d0, 0x1e8d6,
0x1e944, 0x1e94a,
0xe0100, 0xe01ef,
@@ -18133,7 +18335,7 @@ CR_Myanmar[] = { 3,
/* PROPERTY: 'N': Major Category */
static const OnigCodePoint
-CR_N[] = { 125,
+CR_N[] = { 130,
0x0030, 0x0039,
0x00b2, 0x00b3,
0x00b9, 0x00b9,
@@ -18245,6 +18447,7 @@ CR_N[] = { 125,
0x11c50, 0x11c6c,
0x11d50, 0x11d59,
0x11da0, 0x11da9,
+0x11fc0, 0x11fd4,
0x12400, 0x1246e,
0x16a60, 0x16a69,
0x16b50, 0x16b59,
@@ -18253,11 +18456,15 @@ CR_N[] = { 125,
0x1d2e0, 0x1d2f3,
0x1d360, 0x1d378,
0x1d7ce, 0x1d7ff,
+0x1e140, 0x1e149,
+0x1e2f0, 0x1e2f9,
0x1e8c7, 0x1e8cf,
0x1e950, 0x1e959,
0x1ec71, 0x1ecab,
0x1ecad, 0x1ecaf,
0x1ecb1, 0x1ecb4,
+0x1ed01, 0x1ed2d,
+0x1ed2f, 0x1ed3d,
0x1f100, 0x1f10c,
}; /* END of CR_N */
@@ -18268,6 +18475,14 @@ CR_Nabataean[] = { 2,
0x108a7, 0x108af,
}; /* END of CR_Nabataean */
+/* PROPERTY: 'Nandinagari': Script */
+static const OnigCodePoint
+CR_Nandinagari[] = { 3,
+0x119a0, 0x119a7,
+0x119aa, 0x119d7,
+0x119da, 0x119e4,
+}; /* END of CR_Nandinagari */
+
/* PROPERTY: 'Nd': General Category */
#define CR_Nd CR_Digit
@@ -18285,7 +18500,7 @@ static const OnigCodePoint
CR_Newa[] = { 3,
0x11400, 0x11459,
0x1145b, 0x1145b,
-0x1145d, 0x1145e,
+0x1145d, 0x1145f,
}; /* END of CR_Newa */
/* PROPERTY: 'Nko': Script */
@@ -18314,7 +18529,7 @@ CR_Nl[] = { 12,
/* PROPERTY: 'No': General Category */
static const OnigCodePoint
-CR_No[] = { 67,
+CR_No[] = { 70,
0x00b2, 0x00b3,
0x00b9, 0x00b9,
0x00bc, 0x00be,
@@ -18373,6 +18588,7 @@ CR_No[] = { 67,
0x1173a, 0x1173b,
0x118ea, 0x118f2,
0x11c5a, 0x11c6c,
+0x11fc0, 0x11fd4,
0x16b5b, 0x16b61,
0x16e80, 0x16e96,
0x1d2e0, 0x1d2f3,
@@ -18381,6 +18597,8 @@ CR_No[] = { 67,
0x1ec71, 0x1ecab,
0x1ecad, 0x1ecaf,
0x1ecb1, 0x1ecb4,
+0x1ed01, 0x1ed2d,
+0x1ed2f, 0x1ed3d,
0x1f100, 0x1f10c,
}; /* END of CR_No */
@@ -18414,6 +18632,15 @@ CR_Nushu[] = { 2,
0x1b170, 0x1b2fb,
}; /* END of CR_Nushu */
+/* PROPERTY: 'Nyiakeng_Puachue_Hmong': Script */
+static const OnigCodePoint
+CR_Nyiakeng_Puachue_Hmong[] = { 4,
+0x1e100, 0x1e12c,
+0x1e130, 0x1e13d,
+0x1e140, 0x1e149,
+0x1e14e, 0x1e14f,
+}; /* END of CR_Nyiakeng_Puachue_Hmong */
+
/* PROPERTY: 'Ogham': Script */
static const OnigCodePoint
CR_Ogham[] = { 1,
@@ -18513,7 +18740,7 @@ CR_Osmanya[] = { 2,
/* PROPERTY: 'Other_Alphabetic': Binary Property */
static const OnigCodePoint
-CR_Other_Alphabetic[] = { 213,
+CR_Other_Alphabetic[] = { 221,
0x0345, 0x0345,
0x05b0, 0x05bd,
0x05bf, 0x05bf,
@@ -18611,12 +18838,12 @@ CR_Other_Alphabetic[] = { 213,
0x103b, 0x103e,
0x1056, 0x1059,
0x105e, 0x1060,
-0x1062, 0x1062,
-0x1067, 0x1068,
+0x1062, 0x1064,
+0x1067, 0x106d,
0x1071, 0x1074,
-0x1082, 0x1086,
-0x109c, 0x109d,
-0x135f, 0x135f,
+0x1082, 0x108d,
+0x108f, 0x108f,
+0x109a, 0x109d,
0x1712, 0x1713,
0x1732, 0x1733,
0x1752, 0x1753,
@@ -18635,24 +18862,28 @@ CR_Other_Alphabetic[] = { 213,
0x1ba1, 0x1ba9,
0x1bac, 0x1bad,
0x1be7, 0x1bf1,
-0x1c24, 0x1c35,
-0x1cf2, 0x1cf3,
+0x1c24, 0x1c36,
0x1de7, 0x1df4,
0x24b6, 0x24e9,
0x2de0, 0x2dff,
0xa674, 0xa67b,
0xa69e, 0xa69f,
+0xa802, 0xa802,
+0xa80b, 0xa80b,
0xa823, 0xa827,
0xa880, 0xa881,
0xa8b4, 0xa8c3,
0xa8c5, 0xa8c5,
+0xa8ff, 0xa8ff,
0xa926, 0xa92a,
0xa947, 0xa952,
0xa980, 0xa983,
0xa9b4, 0xa9bf,
+0xa9e5, 0xa9e5,
0xaa29, 0xaa36,
0xaa43, 0xaa43,
0xaa4c, 0xaa4d,
+0xaa7b, 0xaa7d,
0xaab0, 0xaab0,
0xaab2, 0xaab4,
0xaab7, 0xaab8,
@@ -18696,6 +18927,9 @@ CR_Other_Alphabetic[] = { 213,
0x116ab, 0x116b5,
0x1171d, 0x1172a,
0x1182c, 0x11838,
+0x119d1, 0x119d7,
+0x119da, 0x119df,
+0x119e4, 0x119e4,
0x11a01, 0x11a0a,
0x11a35, 0x11a39,
0x11a3b, 0x11a3e,
@@ -18715,8 +18949,9 @@ CR_Other_Alphabetic[] = { 213,
0x11d90, 0x11d91,
0x11d93, 0x11d96,
0x11ef3, 0x11ef6,
-0x16b30, 0x16b36,
-0x16f51, 0x16f7e,
+0x16f4f, 0x16f4f,
+0x16f51, 0x16f87,
+0x16f8f, 0x16f92,
0x1bc9e, 0x1bc9e,
0x1e000, 0x1e006,
0x1e008, 0x1e018,
@@ -18747,7 +18982,7 @@ CR_Other_Default_Ignorable_Code_Point[] = { 11,
/* PROPERTY: 'Other_Grapheme_Extend': Binary Property */
static const OnigCodePoint
-CR_Other_Grapheme_Extend[] = { 23,
+CR_Other_Grapheme_Extend[] = { 24,
0x09be, 0x09be,
0x09d7, 0x09d7,
0x0b3e, 0x0b3e,
@@ -18760,6 +18995,7 @@ CR_Other_Grapheme_Extend[] = { 23,
0x0d57, 0x0d57,
0x0dcf, 0x0dcf,
0x0ddf, 0x0ddf,
+0x1b35, 0x1b35,
0x200c, 0x200c,
0x302e, 0x302f,
0xff9e, 0xff9f,
@@ -19189,7 +19425,7 @@ CR_Pi[] = { 11,
/* PROPERTY: 'Po': General Category */
static const OnigCodePoint
-CR_Po[] = { 175,
+CR_Po[] = { 179,
0x0021, 0x0023,
0x0025, 0x0027,
0x002a, 0x002a,
@@ -19225,6 +19461,7 @@ CR_Po[] = { 175,
0x09fd, 0x09fd,
0x0a76, 0x0a76,
0x0af0, 0x0af0,
+0x0c77, 0x0c77,
0x0c84, 0x0c84,
0x0df4, 0x0df4,
0x0e4f, 0x0e4f,
@@ -19237,7 +19474,7 @@ CR_Po[] = { 175,
0x104a, 0x104f,
0x10fb, 0x10fb,
0x1360, 0x1368,
-0x166d, 0x166e,
+0x166e, 0x166e,
0x16eb, 0x16ed,
0x1735, 0x1736,
0x17d4, 0x17d6,
@@ -19276,7 +19513,7 @@ CR_Po[] = { 175,
0x2e30, 0x2e39,
0x2e3c, 0x2e3f,
0x2e41, 0x2e41,
-0x2e43, 0x2e4e,
+0x2e43, 0x2e4f,
0x3001, 0x3003,
0x303d, 0x303d,
0x30fb, 0x30fb,
@@ -19350,18 +19587,21 @@ CR_Po[] = { 175,
0x11660, 0x1166c,
0x1173c, 0x1173e,
0x1183b, 0x1183b,
+0x119e2, 0x119e2,
0x11a3f, 0x11a46,
0x11a9a, 0x11a9c,
0x11a9e, 0x11aa2,
0x11c41, 0x11c45,
0x11c70, 0x11c71,
0x11ef7, 0x11ef8,
+0x11fff, 0x11fff,
0x12470, 0x12474,
0x16a6e, 0x16a6f,
0x16af5, 0x16af5,
0x16b37, 0x16b3b,
0x16b44, 0x16b44,
0x16e97, 0x16e9a,
+0x16fe2, 0x16fe2,
0x1bc9f, 0x1bc9f,
0x1da87, 0x1da8b,
0x1e95e, 0x1e95f,
@@ -19514,7 +19754,7 @@ CR_Runic[] = { 2,
/* PROPERTY: 'S': Major Category */
static const OnigCodePoint
-CR_S[] = { 220,
+CR_S[] = { 226,
0x0024, 0x0024,
0x002b, 0x002b,
0x003c, 0x003e,
@@ -19570,6 +19810,7 @@ CR_S[] = { 220,
0x0fd5, 0x0fd8,
0x109e, 0x109f,
0x1390, 0x1399,
+0x166d, 0x166d,
0x17db, 0x17db,
0x1940, 0x1940,
0x19de, 0x19ff,
@@ -19614,8 +19855,7 @@ CR_S[] = { 220,
0x29dc, 0x29fb,
0x29fe, 0x2b73,
0x2b76, 0x2b95,
-0x2b98, 0x2bc8,
-0x2bca, 0x2bfe,
+0x2b98, 0x2bff,
0x2ce5, 0x2cea,
0x2e80, 0x2e99,
0x2e9b, 0x2ef3,
@@ -19635,8 +19875,7 @@ CR_S[] = { 220,
0x3250, 0x3250,
0x3260, 0x327f,
0x328a, 0x32b0,
-0x32c0, 0x32fe,
-0x3300, 0x33ff,
+0x32c0, 0x33ff,
0x4dc0, 0x4dff,
0xa490, 0xa4c6,
0xa700, 0xa716,
@@ -19671,6 +19910,7 @@ CR_S[] = { 220,
0x10877, 0x10878,
0x10ac8, 0x10ac8,
0x1173f, 0x1173f,
+0x11fd5, 0x11ff1,
0x16b3c, 0x16b3f,
0x16b45, 0x16b45,
0x1bc9c, 0x1bc9c,
@@ -19699,8 +19939,11 @@ CR_S[] = { 220,
0x1da6d, 0x1da74,
0x1da76, 0x1da83,
0x1da85, 0x1da86,
+0x1e14f, 0x1e14f,
+0x1e2ff, 0x1e2ff,
0x1ecac, 0x1ecac,
0x1ecb0, 0x1ecb0,
+0x1ed2e, 0x1ed2e,
0x1eef0, 0x1eef1,
0x1f000, 0x1f02b,
0x1f030, 0x1f093,
@@ -19708,33 +19951,36 @@ CR_S[] = { 220,
0x1f0b1, 0x1f0bf,
0x1f0c1, 0x1f0cf,
0x1f0d1, 0x1f0f5,
-0x1f110, 0x1f16b,
+0x1f110, 0x1f16c,
0x1f170, 0x1f1ac,
0x1f1e6, 0x1f202,
0x1f210, 0x1f23b,
0x1f240, 0x1f248,
0x1f250, 0x1f251,
0x1f260, 0x1f265,
-0x1f300, 0x1f6d4,
+0x1f300, 0x1f6d5,
0x1f6e0, 0x1f6ec,
-0x1f6f0, 0x1f6f9,
+0x1f6f0, 0x1f6fa,
0x1f700, 0x1f773,
0x1f780, 0x1f7d8,
+0x1f7e0, 0x1f7eb,
0x1f800, 0x1f80b,
0x1f810, 0x1f847,
0x1f850, 0x1f859,
0x1f860, 0x1f887,
0x1f890, 0x1f8ad,
0x1f900, 0x1f90b,
-0x1f910, 0x1f93e,
-0x1f940, 0x1f970,
+0x1f90d, 0x1f971,
0x1f973, 0x1f976,
-0x1f97a, 0x1f97a,
-0x1f97c, 0x1f9a2,
-0x1f9b0, 0x1f9b9,
-0x1f9c0, 0x1f9c2,
-0x1f9d0, 0x1f9ff,
+0x1f97a, 0x1f9a2,
+0x1f9a5, 0x1f9aa,
+0x1f9ae, 0x1f9ca,
+0x1f9cd, 0x1fa53,
0x1fa60, 0x1fa6d,
+0x1fa70, 0x1fa73,
+0x1fa78, 0x1fa7a,
+0x1fa80, 0x1fa82,
+0x1fa90, 0x1fa95,
}; /* END of CR_S */
/* PROPERTY: 'Samaritan': Script */
@@ -19753,7 +19999,7 @@ CR_Saurashtra[] = { 2,
/* PROPERTY: 'Sc': General Category */
static const OnigCodePoint
-CR_Sc[] = { 19,
+CR_Sc[] = { 21,
0x0024, 0x0024,
0x00a2, 0x00a5,
0x058f, 0x058f,
@@ -19772,6 +20018,8 @@ CR_Sc[] = { 19,
0xff04, 0xff04,
0xffe0, 0xffe1,
0xffe5, 0xffe6,
+0x11fdd, 0x11fe0,
+0x1e2ff, 0x1e2ff,
0x1ecb0, 0x1ecb0,
}; /* END of CR_Sc */
@@ -20005,7 +20253,7 @@ CR_Sm[] = { 64,
/* PROPERTY: 'So': General Category */
static const OnigCodePoint
-CR_So[] = { 174,
+CR_So[] = { 180,
0x00a6, 0x00a6,
0x00a9, 0x00a9,
0x00ae, 0x00ae,
@@ -20037,6 +20285,7 @@ CR_So[] = { 174,
0x0fd5, 0x0fd8,
0x109e, 0x109f,
0x1390, 0x1399,
+0x166d, 0x166d,
0x1940, 0x1940,
0x19de, 0x19ff,
0x1b61, 0x1b6a,
@@ -20085,8 +20334,7 @@ CR_So[] = { 174,
0x2b45, 0x2b46,
0x2b4d, 0x2b73,
0x2b76, 0x2b95,
-0x2b98, 0x2bc8,
-0x2bca, 0x2bfe,
+0x2b98, 0x2bff,
0x2ce5, 0x2cea,
0x2e80, 0x2e99,
0x2e9b, 0x2ef3,
@@ -20105,8 +20353,7 @@ CR_So[] = { 174,
0x3250, 0x3250,
0x3260, 0x327f,
0x328a, 0x32b0,
-0x32c0, 0x32fe,
-0x3300, 0x33ff,
+0x32c0, 0x33ff,
0x4dc0, 0x4dff,
0xa490, 0xa4c6,
0xa828, 0xa82b,
@@ -20127,6 +20374,8 @@ CR_So[] = { 174,
0x10877, 0x10878,
0x10ac8, 0x10ac8,
0x1173f, 0x1173f,
+0x11fd5, 0x11fdc,
+0x11fe1, 0x11ff1,
0x16b3c, 0x16b3f,
0x16b45, 0x16b45,
0x1bc9c, 0x1bc9c,
@@ -20145,14 +20394,16 @@ CR_So[] = { 174,
0x1da6d, 0x1da74,
0x1da76, 0x1da83,
0x1da85, 0x1da86,
+0x1e14f, 0x1e14f,
0x1ecac, 0x1ecac,
+0x1ed2e, 0x1ed2e,
0x1f000, 0x1f02b,
0x1f030, 0x1f093,
0x1f0a0, 0x1f0ae,
0x1f0b1, 0x1f0bf,
0x1f0c1, 0x1f0cf,
0x1f0d1, 0x1f0f5,
-0x1f110, 0x1f16b,
+0x1f110, 0x1f16c,
0x1f170, 0x1f1ac,
0x1f1e6, 0x1f202,
0x1f210, 0x1f23b,
@@ -20160,26 +20411,29 @@ CR_So[] = { 174,
0x1f250, 0x1f251,
0x1f260, 0x1f265,
0x1f300, 0x1f3fa,
-0x1f400, 0x1f6d4,
+0x1f400, 0x1f6d5,
0x1f6e0, 0x1f6ec,
-0x1f6f0, 0x1f6f9,
+0x1f6f0, 0x1f6fa,
0x1f700, 0x1f773,
0x1f780, 0x1f7d8,
+0x1f7e0, 0x1f7eb,
0x1f800, 0x1f80b,
0x1f810, 0x1f847,
0x1f850, 0x1f859,
0x1f860, 0x1f887,
0x1f890, 0x1f8ad,
0x1f900, 0x1f90b,
-0x1f910, 0x1f93e,
-0x1f940, 0x1f970,
+0x1f90d, 0x1f971,
0x1f973, 0x1f976,
-0x1f97a, 0x1f97a,
-0x1f97c, 0x1f9a2,
-0x1f9b0, 0x1f9b9,
-0x1f9c0, 0x1f9c2,
-0x1f9d0, 0x1f9ff,
+0x1f97a, 0x1f9a2,
+0x1f9a5, 0x1f9aa,
+0x1f9ae, 0x1f9ca,
+0x1f9cd, 0x1fa53,
0x1fa60, 0x1fa6d,
+0x1fa70, 0x1fa73,
+0x1fa78, 0x1fa7a,
+0x1fa80, 0x1fa82,
+0x1fa90, 0x1fa95,
}; /* END of CR_So */
/* PROPERTY: 'Soft_Dotted': Binary Property */
@@ -20233,9 +20487,8 @@ CR_Sora_Sompeng[] = { 2,
/* PROPERTY: 'Soyombo': Script */
static const OnigCodePoint
-CR_Soyombo[] = { 2,
-0x11a50, 0x11a83,
-0x11a86, 0x11aa2,
+CR_Soyombo[] = { 1,
+0x11a50, 0x11aa2,
}; /* END of CR_Soyombo */
/* PROPERTY: 'Sundanese': Script */
@@ -20302,13 +20555,13 @@ CR_Tai_Viet[] = { 2,
/* PROPERTY: 'Takri': Script */
static const OnigCodePoint
CR_Takri[] = { 2,
-0x11680, 0x116b7,
+0x11680, 0x116b8,
0x116c0, 0x116c9,
}; /* END of CR_Takri */
/* PROPERTY: 'Tamil': Script */
static const OnigCodePoint
-CR_Tamil[] = { 16,
+CR_Tamil[] = { 18,
0x0b82, 0x0b83,
0x0b85, 0x0b8a,
0x0b8e, 0x0b90,
@@ -20325,13 +20578,15 @@ CR_Tamil[] = { 16,
0x0bd0, 0x0bd0,
0x0bd7, 0x0bd7,
0x0be6, 0x0bfa,
+0x11fc0, 0x11ff1,
+0x11fff, 0x11fff,
}; /* END of CR_Tamil */
/* PROPERTY: 'Tangut': Script */
static const OnigCodePoint
CR_Tangut[] = { 3,
0x16fe0, 0x16fe0,
-0x17000, 0x187f1,
+0x17000, 0x187f7,
0x18800, 0x18af2,
}; /* END of CR_Tangut */
@@ -20349,7 +20604,7 @@ CR_Telugu[] = { 12,
0x0c58, 0x0c5a,
0x0c60, 0x0c63,
0x0c66, 0x0c6f,
-0x0c78, 0x0c7f,
+0x0c77, 0x0c7f,
}; /* END of CR_Telugu */
/* PROPERTY: 'Terminal_Punctuation': Binary Property */
@@ -20379,7 +20634,7 @@ CR_Terminal_Punctuation[] = { 102,
0x0f0d, 0x0f12,
0x104a, 0x104b,
0x1361, 0x1368,
-0x166d, 0x166e,
+0x166e, 0x166e,
0x16eb, 0x16ed,
0x1735, 0x1736,
0x17d4, 0x17d6,
@@ -20398,7 +20653,7 @@ CR_Terminal_Punctuation[] = { 102,
0x2e3c, 0x2e3c,
0x2e41, 0x2e41,
0x2e4c, 0x2e4c,
-0x2e4e, 0x2e4e,
+0x2e4e, 0x2e4f,
0x3001, 0x3002,
0xa4fe, 0xa4ff,
0xa60d, 0xa60f,
@@ -20527,7 +20782,7 @@ CR_Unified_Ideograph[] = { 14,
/* PROPERTY: 'Unknown': Script */
static const OnigCodePoint
-CR_Unknown[] = { 656,
+CR_Unknown[] = { 664,
0x0378, 0x0379,
0x0380, 0x0383,
0x038b, 0x038b,
@@ -20636,7 +20891,7 @@ CR_Unknown[] = { 656,
0x0c57, 0x0c57,
0x0c5b, 0x0c5f,
0x0c64, 0x0c65,
-0x0c70, 0x0c77,
+0x0c70, 0x0c76,
0x0c8d, 0x0c8d,
0x0c91, 0x0c91,
0x0ca9, 0x0ca9,
@@ -20673,17 +20928,10 @@ CR_Unknown[] = { 656,
0x0e3b, 0x0e3e,
0x0e5c, 0x0e80,
0x0e83, 0x0e83,
-0x0e85, 0x0e86,
-0x0e89, 0x0e89,
-0x0e8b, 0x0e8c,
-0x0e8e, 0x0e93,
-0x0e98, 0x0e98,
-0x0ea0, 0x0ea0,
+0x0e85, 0x0e85,
+0x0e8b, 0x0e8b,
0x0ea4, 0x0ea4,
0x0ea6, 0x0ea6,
-0x0ea8, 0x0ea9,
-0x0eac, 0x0eac,
-0x0eba, 0x0eba,
0x0ebe, 0x0ebf,
0x0ec5, 0x0ec5,
0x0ec7, 0x0ec7,
@@ -20760,7 +21008,7 @@ CR_Unknown[] = { 656,
0x1c89, 0x1c8f,
0x1cbb, 0x1cbc,
0x1cc8, 0x1ccf,
-0x1cfa, 0x1cff,
+0x1cfb, 0x1cff,
0x1dfa, 0x1dfa,
0x1f16, 0x1f17,
0x1f1e, 0x1f1f,
@@ -20789,8 +21037,6 @@ CR_Unknown[] = { 656,
0x244b, 0x245f,
0x2b74, 0x2b75,
0x2b96, 0x2b97,
-0x2bc9, 0x2bc9,
-0x2bff, 0x2bff,
0x2c2f, 0x2c2f,
0x2c5f, 0x2c5f,
0x2cf4, 0x2cf8,
@@ -20808,7 +21054,7 @@ CR_Unknown[] = { 656,
0x2dcf, 0x2dcf,
0x2dd7, 0x2dd7,
0x2ddf, 0x2ddf,
-0x2e4f, 0x2e7f,
+0x2e50, 0x2e7f,
0x2e9a, 0x2e9a,
0x2ef4, 0x2eff,
0x2fd6, 0x2fef,
@@ -20821,14 +21067,14 @@ CR_Unknown[] = { 656,
0x31bb, 0x31bf,
0x31e4, 0x31ef,
0x321f, 0x321f,
-0x32ff, 0x32ff,
0x4db6, 0x4dbf,
0x9ff0, 0x9fff,
0xa48d, 0xa48f,
0xa4c7, 0xa4cf,
0xa62c, 0xa63f,
0xa6f8, 0xa6ff,
-0xa7ba, 0xa7f6,
+0xa7c0, 0xa7c1,
+0xa7c7, 0xa7f6,
0xa82c, 0xa82f,
0xa83a, 0xa83f,
0xa878, 0xa87f,
@@ -20849,7 +21095,7 @@ CR_Unknown[] = { 656,
0xab17, 0xab1f,
0xab27, 0xab27,
0xab2f, 0xab2f,
-0xab66, 0xab6f,
+0xab68, 0xab6f,
0xabee, 0xabef,
0xabfa, 0xabff,
0xd7a4, 0xd7af,
@@ -20955,7 +21201,8 @@ CR_Unknown[] = { 656,
0x10d3a, 0x10e5f,
0x10e7f, 0x10eff,
0x10f28, 0x10f2f,
-0x10f5a, 0x10fff,
+0x10f5a, 0x10fdf,
+0x10ff7, 0x10fff,
0x1104e, 0x11051,
0x11070, 0x1107e,
0x110c2, 0x110cc,
@@ -20994,7 +21241,7 @@ CR_Unknown[] = { 656,
0x11375, 0x113ff,
0x1145a, 0x1145a,
0x1145c, 0x1145c,
-0x1145f, 0x1147f,
+0x11460, 0x1147f,
0x114c8, 0x114cf,
0x114da, 0x1157f,
0x115b6, 0x115b7,
@@ -21002,16 +21249,18 @@ CR_Unknown[] = { 656,
0x11645, 0x1164f,
0x1165a, 0x1165f,
0x1166d, 0x1167f,
-0x116b8, 0x116bf,
+0x116b9, 0x116bf,
0x116ca, 0x116ff,
0x1171b, 0x1171c,
0x1172c, 0x1172f,
0x11740, 0x117ff,
0x1183c, 0x1189f,
0x118f3, 0x118fe,
-0x11900, 0x119ff,
+0x11900, 0x1199f,
+0x119a8, 0x119a9,
+0x119d8, 0x119d9,
+0x119e5, 0x119ff,
0x11a48, 0x11a4f,
-0x11a84, 0x11a85,
0x11aa3, 0x11abf,
0x11af9, 0x11bff,
0x11c09, 0x11c09,
@@ -21034,12 +21283,14 @@ CR_Unknown[] = { 656,
0x11d92, 0x11d92,
0x11d99, 0x11d9f,
0x11daa, 0x11edf,
-0x11ef9, 0x11fff,
+0x11ef9, 0x11fbf,
+0x11ff2, 0x11ffe,
0x1239a, 0x123ff,
0x1246f, 0x1246f,
0x12475, 0x1247f,
0x12544, 0x12fff,
-0x1342f, 0x143ff,
+0x1342f, 0x1342f,
+0x13439, 0x143ff,
0x14647, 0x167ff,
0x16a39, 0x16a3f,
0x16a5f, 0x16a5f,
@@ -21053,13 +21304,15 @@ CR_Unknown[] = { 656,
0x16b78, 0x16b7c,
0x16b90, 0x16e3f,
0x16e9b, 0x16eff,
-0x16f45, 0x16f4f,
-0x16f7f, 0x16f8e,
+0x16f4b, 0x16f4e,
+0x16f88, 0x16f8e,
0x16fa0, 0x16fdf,
-0x16fe2, 0x16fff,
-0x187f2, 0x187ff,
+0x16fe4, 0x16fff,
+0x187f8, 0x187ff,
0x18af3, 0x1afff,
-0x1b11f, 0x1b16f,
+0x1b11f, 0x1b14f,
+0x1b153, 0x1b163,
+0x1b168, 0x1b16f,
0x1b2fc, 0x1bbff,
0x1bc6b, 0x1bc6f,
0x1bc7d, 0x1bc7f,
@@ -21100,13 +21353,20 @@ CR_Unknown[] = { 656,
0x1e019, 0x1e01a,
0x1e022, 0x1e022,
0x1e025, 0x1e025,
-0x1e02b, 0x1e7ff,
+0x1e02b, 0x1e0ff,
+0x1e12d, 0x1e12f,
+0x1e13e, 0x1e13f,
+0x1e14a, 0x1e14d,
+0x1e150, 0x1e2bf,
+0x1e2fa, 0x1e2fe,
+0x1e300, 0x1e7ff,
0x1e8c5, 0x1e8c6,
0x1e8d7, 0x1e8ff,
-0x1e94b, 0x1e94f,
+0x1e94c, 0x1e94f,
0x1e95a, 0x1e95d,
0x1e960, 0x1ec70,
-0x1ecb5, 0x1edff,
+0x1ecb5, 0x1ed00,
+0x1ed3e, 0x1edff,
0x1ee04, 0x1ee04,
0x1ee20, 0x1ee20,
0x1ee23, 0x1ee23,
@@ -21148,33 +21408,36 @@ CR_Unknown[] = { 656,
0x1f0d0, 0x1f0d0,
0x1f0f6, 0x1f0ff,
0x1f10d, 0x1f10f,
-0x1f16c, 0x1f16f,
+0x1f16d, 0x1f16f,
0x1f1ad, 0x1f1e5,
0x1f203, 0x1f20f,
0x1f23c, 0x1f23f,
0x1f249, 0x1f24f,
0x1f252, 0x1f25f,
0x1f266, 0x1f2ff,
-0x1f6d5, 0x1f6df,
+0x1f6d6, 0x1f6df,
0x1f6ed, 0x1f6ef,
-0x1f6fa, 0x1f6ff,
+0x1f6fb, 0x1f6ff,
0x1f774, 0x1f77f,
-0x1f7d9, 0x1f7ff,
+0x1f7d9, 0x1f7df,
+0x1f7ec, 0x1f7ff,
0x1f80c, 0x1f80f,
0x1f848, 0x1f84f,
0x1f85a, 0x1f85f,
0x1f888, 0x1f88f,
0x1f8ae, 0x1f8ff,
-0x1f90c, 0x1f90f,
-0x1f93f, 0x1f93f,
-0x1f971, 0x1f972,
+0x1f90c, 0x1f90c,
+0x1f972, 0x1f972,
0x1f977, 0x1f979,
-0x1f97b, 0x1f97b,
-0x1f9a3, 0x1f9af,
-0x1f9ba, 0x1f9bf,
-0x1f9c3, 0x1f9cf,
-0x1fa00, 0x1fa5f,
-0x1fa6e, 0x1ffff,
+0x1f9a3, 0x1f9a4,
+0x1f9ab, 0x1f9ad,
+0x1f9cb, 0x1f9cc,
+0x1fa54, 0x1fa5f,
+0x1fa6e, 0x1fa6f,
+0x1fa74, 0x1fa77,
+0x1fa7b, 0x1fa7f,
+0x1fa83, 0x1fa8f,
+0x1fa96, 0x1ffff,
0x2a6d7, 0x2a6ff,
0x2b735, 0x2b73f,
0x2b81e, 0x2b81f,
@@ -21203,6 +21466,13 @@ CR_Variation_Selector[] = { 3,
0xe0100, 0xe01ef,
}; /* END of CR_Variation_Selector */
+/* PROPERTY: 'Wancho': Script */
+static const OnigCodePoint
+CR_Wancho[] = { 2,
+0x1e2c0, 0x1e2f9,
+0x1e2ff, 0x1e2ff,
+}; /* END of CR_Wancho */
+
/* PROPERTY: 'Warang_Citi': Script */
static const OnigCodePoint
CR_Warang_Citi[] = { 2,
@@ -21215,7 +21485,7 @@ CR_Warang_Citi[] = { 2,
/* PROPERTY: 'XID_Continue': Derived Property */
static const OnigCodePoint
-CR_XID_Continue[] = { 714,
+CR_XID_Continue[] = { 720,
0x0030, 0x0039,
0x0041, 0x005a,
0x005f, 0x005f,
@@ -21401,17 +21671,10 @@ CR_XID_Continue[] = { 714,
0x0e50, 0x0e59,
0x0e81, 0x0e82,
0x0e84, 0x0e84,
-0x0e87, 0x0e88,
-0x0e8a, 0x0e8a,
-0x0e8d, 0x0e8d,
-0x0e94, 0x0e97,
-0x0e99, 0x0e9f,
-0x0ea1, 0x0ea3,
+0x0e86, 0x0e8a,
+0x0e8c, 0x0ea3,
0x0ea5, 0x0ea5,
-0x0ea7, 0x0ea7,
-0x0eaa, 0x0eab,
-0x0ead, 0x0eb9,
-0x0ebb, 0x0ebd,
+0x0ea7, 0x0ebd,
0x0ec0, 0x0ec4,
0x0ec6, 0x0ec6,
0x0ec8, 0x0ecd,
@@ -21503,7 +21766,7 @@ CR_XID_Continue[] = { 714,
0x1c90, 0x1cba,
0x1cbd, 0x1cbf,
0x1cd0, 0x1cd2,
-0x1cd4, 0x1cf9,
+0x1cd4, 0x1cfa,
0x1d00, 0x1df9,
0x1dfb, 0x1f15,
0x1f18, 0x1f1d,
@@ -21588,7 +21851,8 @@ CR_XID_Continue[] = { 714,
0xa67f, 0xa6f1,
0xa717, 0xa71f,
0xa722, 0xa788,
-0xa78b, 0xa7b9,
+0xa78b, 0xa7bf,
+0xa7c2, 0xa7c6,
0xa7f7, 0xa827,
0xa840, 0xa873,
0xa880, 0xa8c5,
@@ -21615,7 +21879,7 @@ CR_XID_Continue[] = { 714,
0xab20, 0xab26,
0xab28, 0xab2e,
0xab30, 0xab5a,
-0xab5c, 0xab65,
+0xab5c, 0xab67,
0xab70, 0xabea,
0xabec, 0xabed,
0xabf0, 0xabf9,
@@ -21723,6 +21987,7 @@ CR_XID_Continue[] = { 714,
0x10f00, 0x10f1c,
0x10f27, 0x10f27,
0x10f30, 0x10f50,
+0x10fe0, 0x10ff6,
0x11000, 0x11046,
0x11066, 0x1106f,
0x1107f, 0x110ba,
@@ -21764,7 +22029,7 @@ CR_XID_Continue[] = { 714,
0x11370, 0x11374,
0x11400, 0x1144a,
0x11450, 0x11459,
-0x1145e, 0x1145e,
+0x1145e, 0x1145f,
0x11480, 0x114c5,
0x114c7, 0x114c7,
0x114d0, 0x114d9,
@@ -21774,7 +22039,7 @@ CR_XID_Continue[] = { 714,
0x11600, 0x11640,
0x11644, 0x11644,
0x11650, 0x11659,
-0x11680, 0x116b7,
+0x11680, 0x116b8,
0x116c0, 0x116c9,
0x11700, 0x1171a,
0x1171d, 0x1172b,
@@ -21782,10 +22047,13 @@ CR_XID_Continue[] = { 714,
0x11800, 0x1183a,
0x118a0, 0x118e9,
0x118ff, 0x118ff,
+0x119a0, 0x119a7,
+0x119aa, 0x119d7,
+0x119da, 0x119e1,
+0x119e3, 0x119e4,
0x11a00, 0x11a3e,
0x11a47, 0x11a47,
-0x11a50, 0x11a83,
-0x11a86, 0x11a99,
+0x11a50, 0x11a99,
0x11a9d, 0x11a9d,
0x11ac0, 0x11af8,
0x11c00, 0x11c08,
@@ -21825,13 +22093,16 @@ CR_XID_Continue[] = { 714,
0x16b63, 0x16b77,
0x16b7d, 0x16b8f,
0x16e40, 0x16e7f,
-0x16f00, 0x16f44,
-0x16f50, 0x16f7e,
+0x16f00, 0x16f4a,
+0x16f4f, 0x16f87,
0x16f8f, 0x16f9f,
0x16fe0, 0x16fe1,
-0x17000, 0x187f1,
+0x16fe3, 0x16fe3,
+0x17000, 0x187f7,
0x18800, 0x18af2,
0x1b000, 0x1b11e,
+0x1b150, 0x1b152,
+0x1b164, 0x1b167,
0x1b170, 0x1b2fb,
0x1bc00, 0x1bc6a,
0x1bc70, 0x1bc7c,
@@ -21886,9 +22157,14 @@ CR_XID_Continue[] = { 714,
0x1e01b, 0x1e021,
0x1e023, 0x1e024,
0x1e026, 0x1e02a,
+0x1e100, 0x1e12c,
+0x1e130, 0x1e13d,
+0x1e140, 0x1e149,
+0x1e14e, 0x1e14e,
+0x1e2c0, 0x1e2f9,
0x1e800, 0x1e8c4,
0x1e8d0, 0x1e8d6,
-0x1e900, 0x1e94a,
+0x1e900, 0x1e94b,
0x1e950, 0x1e959,
0x1ee00, 0x1ee03,
0x1ee05, 0x1ee1f,
@@ -21934,7 +22210,7 @@ CR_XID_Continue[] = { 714,
/* PROPERTY: 'XID_Start': Derived Property */
static const OnigCodePoint
-CR_XID_Start[] = { 606,
+CR_XID_Start[] = { 616,
0x0041, 0x005a,
0x0061, 0x007a,
0x00aa, 0x00aa,
@@ -22079,16 +22355,10 @@ CR_XID_Start[] = { 606,
0x0e40, 0x0e46,
0x0e81, 0x0e82,
0x0e84, 0x0e84,
-0x0e87, 0x0e88,
-0x0e8a, 0x0e8a,
-0x0e8d, 0x0e8d,
-0x0e94, 0x0e97,
-0x0e99, 0x0e9f,
-0x0ea1, 0x0ea3,
+0x0e86, 0x0e8a,
+0x0e8c, 0x0ea3,
0x0ea5, 0x0ea5,
-0x0ea7, 0x0ea7,
-0x0eaa, 0x0eab,
-0x0ead, 0x0eb0,
+0x0ea7, 0x0eb0,
0x0eb2, 0x0eb2,
0x0ebd, 0x0ebd,
0x0ec0, 0x0ec4,
@@ -22168,8 +22438,9 @@ CR_XID_Start[] = { 606,
0x1c90, 0x1cba,
0x1cbd, 0x1cbf,
0x1ce9, 0x1cec,
-0x1cee, 0x1cf1,
+0x1cee, 0x1cf3,
0x1cf5, 0x1cf6,
+0x1cfa, 0x1cfa,
0x1d00, 0x1dbf,
0x1e00, 0x1f15,
0x1f18, 0x1f1d,
@@ -22249,7 +22520,8 @@ CR_XID_Start[] = { 606,
0xa6a0, 0xa6ef,
0xa717, 0xa71f,
0xa722, 0xa788,
-0xa78b, 0xa7b9,
+0xa78b, 0xa7bf,
+0xa7c2, 0xa7c6,
0xa7f7, 0xa801,
0xa803, 0xa805,
0xa807, 0xa80a,
@@ -22287,7 +22559,7 @@ CR_XID_Start[] = { 606,
0xab20, 0xab26,
0xab28, 0xab2e,
0xab30, 0xab5a,
-0xab5c, 0xab65,
+0xab5c, 0xab67,
0xab70, 0xabe2,
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
@@ -22382,6 +22654,7 @@ CR_XID_Start[] = { 606,
0x10f00, 0x10f1c,
0x10f27, 0x10f27,
0x10f30, 0x10f45,
+0x10fe0, 0x10ff6,
0x11003, 0x11037,
0x11083, 0x110af,
0x110d0, 0x110e8,
@@ -22412,6 +22685,7 @@ CR_XID_Start[] = { 606,
0x1135d, 0x11361,
0x11400, 0x11434,
0x11447, 0x1144a,
+0x1145f, 0x1145f,
0x11480, 0x114af,
0x114c4, 0x114c5,
0x114c7, 0x114c7,
@@ -22420,16 +22694,20 @@ CR_XID_Start[] = { 606,
0x11600, 0x1162f,
0x11644, 0x11644,
0x11680, 0x116aa,
+0x116b8, 0x116b8,
0x11700, 0x1171a,
0x11800, 0x1182b,
0x118a0, 0x118df,
0x118ff, 0x118ff,
+0x119a0, 0x119a7,
+0x119aa, 0x119d0,
+0x119e1, 0x119e1,
+0x119e3, 0x119e3,
0x11a00, 0x11a00,
0x11a0b, 0x11a32,
0x11a3a, 0x11a3a,
0x11a50, 0x11a50,
-0x11a5c, 0x11a83,
-0x11a86, 0x11a89,
+0x11a5c, 0x11a89,
0x11a9d, 0x11a9d,
0x11ac0, 0x11af8,
0x11c00, 0x11c08,
@@ -22458,13 +22736,16 @@ CR_XID_Start[] = { 606,
0x16b63, 0x16b77,
0x16b7d, 0x16b8f,
0x16e40, 0x16e7f,
-0x16f00, 0x16f44,
+0x16f00, 0x16f4a,
0x16f50, 0x16f50,
0x16f93, 0x16f9f,
0x16fe0, 0x16fe1,
-0x17000, 0x187f1,
+0x16fe3, 0x16fe3,
+0x17000, 0x187f7,
0x18800, 0x18af2,
0x1b000, 0x1b11e,
+0x1b150, 0x1b152,
+0x1b164, 0x1b167,
0x1b170, 0x1b2fb,
0x1bc00, 0x1bc6a,
0x1bc70, 0x1bc7c,
@@ -22500,8 +22781,13 @@ CR_XID_Start[] = { 606,
0x1d78a, 0x1d7a8,
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
+0x1e100, 0x1e12c,
+0x1e137, 0x1e13d,
+0x1e14e, 0x1e14e,
+0x1e2c0, 0x1e2eb,
0x1e800, 0x1e8c4,
0x1e900, 0x1e943,
+0x1e94b, 0x1e94b,
0x1ee00, 0x1ee03,
0x1ee05, 0x1ee1f,
0x1ee21, 0x1ee22,
@@ -23805,6 +24091,12 @@ CR_In_Sogdian[] = { 1,
0x10f30, 0x10f6f,
}; /* END of CR_In_Sogdian */
+/* PROPERTY: 'In_Elymaic': Block */
+static const OnigCodePoint
+CR_In_Elymaic[] = { 1,
+0x10fe0, 0x10fff,
+}; /* END of CR_In_Elymaic */
+
/* PROPERTY: 'In_Brahmi': Block */
static const OnigCodePoint
CR_In_Brahmi[] = { 1,
@@ -23925,6 +24217,12 @@ CR_In_Warang_Citi[] = { 1,
0x118a0, 0x118ff,
}; /* END of CR_In_Warang_Citi */
+/* PROPERTY: 'In_Nandinagari': Block */
+static const OnigCodePoint
+CR_In_Nandinagari[] = { 1,
+0x119a0, 0x119ff,
+}; /* END of CR_In_Nandinagari */
+
/* PROPERTY: 'In_Zanabazar_Square': Block */
static const OnigCodePoint
CR_In_Zanabazar_Square[] = { 1,
@@ -23973,6 +24271,12 @@ CR_In_Makasar[] = { 1,
0x11ee0, 0x11eff,
}; /* END of CR_In_Makasar */
+/* PROPERTY: 'In_Tamil_Supplement': Block */
+static const OnigCodePoint
+CR_In_Tamil_Supplement[] = { 1,
+0x11fc0, 0x11fff,
+}; /* END of CR_In_Tamil_Supplement */
+
/* PROPERTY: 'In_Cuneiform': Block */
static const OnigCodePoint
CR_In_Cuneiform[] = { 1,
@@ -23997,6 +24301,12 @@ CR_In_Egyptian_Hieroglyphs[] = { 1,
0x13000, 0x1342f,
}; /* END of CR_In_Egyptian_Hieroglyphs */
+/* PROPERTY: 'In_Egyptian_Hieroglyph_Format_Controls': Block */
+static const OnigCodePoint
+CR_In_Egyptian_Hieroglyph_Format_Controls[] = { 1,
+0x13430, 0x1343f,
+}; /* END of CR_In_Egyptian_Hieroglyph_Format_Controls */
+
/* PROPERTY: 'In_Anatolian_Hieroglyphs': Block */
static const OnigCodePoint
CR_In_Anatolian_Hieroglyphs[] = { 1,
@@ -24069,6 +24379,12 @@ CR_In_Kana_Extended_A[] = { 1,
0x1b100, 0x1b12f,
}; /* END of CR_In_Kana_Extended_A */
+/* PROPERTY: 'In_Small_Kana_Extension': Block */
+static const OnigCodePoint
+CR_In_Small_Kana_Extension[] = { 1,
+0x1b130, 0x1b16f,
+}; /* END of CR_In_Small_Kana_Extension */
+
/* PROPERTY: 'In_Nushu': Block */
static const OnigCodePoint
CR_In_Nushu[] = { 1,
@@ -24141,6 +24457,18 @@ CR_In_Glagolitic_Supplement[] = { 1,
0x1e000, 0x1e02f,
}; /* END of CR_In_Glagolitic_Supplement */
+/* PROPERTY: 'In_Nyiakeng_Puachue_Hmong': Block */
+static const OnigCodePoint
+CR_In_Nyiakeng_Puachue_Hmong[] = { 1,
+0x1e100, 0x1e14f,
+}; /* END of CR_In_Nyiakeng_Puachue_Hmong */
+
+/* PROPERTY: 'In_Wancho': Block */
+static const OnigCodePoint
+CR_In_Wancho[] = { 1,
+0x1e2c0, 0x1e2ff,
+}; /* END of CR_In_Wancho */
+
/* PROPERTY: 'In_Mende_Kikakui': Block */
static const OnigCodePoint
CR_In_Mende_Kikakui[] = { 1,
@@ -24159,6 +24487,12 @@ CR_In_Indic_Siyaq_Numbers[] = { 1,
0x1ec70, 0x1ecbf,
}; /* END of CR_In_Indic_Siyaq_Numbers */
+/* PROPERTY: 'In_Ottoman_Siyaq_Numbers': Block */
+static const OnigCodePoint
+CR_In_Ottoman_Siyaq_Numbers[] = { 1,
+0x1ed00, 0x1ed4f,
+}; /* END of CR_In_Ottoman_Siyaq_Numbers */
+
/* PROPERTY: 'In_Arabic_Mathematical_Alphabetic_Symbols': Block */
static const OnigCodePoint
CR_In_Arabic_Mathematical_Alphabetic_Symbols[] = { 1,
@@ -24249,6 +24583,12 @@ CR_In_Chess_Symbols[] = { 1,
0x1fa00, 0x1fa6f,
}; /* END of CR_In_Chess_Symbols */
+/* PROPERTY: 'In_Symbols_and_Pictographs_Extended_A': Block */
+static const OnigCodePoint
+CR_In_Symbols_and_Pictographs_Extended_A[] = { 1,
+0x1fa70, 0x1faff,
+}; /* END of CR_In_Symbols_and_Pictographs_Extended_A */
+
/* PROPERTY: 'In_CJK_Unified_Ideographs_Extension_B': Block */
static const OnigCodePoint
CR_In_CJK_Unified_Ideographs_Extension_B[] = { 1,
@@ -24311,7 +24651,7 @@ CR_In_Supplementary_Private_Use_Area_B[] = { 1,
/* PROPERTY: 'In_No_Block': Block */
static const OnigCodePoint
-CR_In_No_Block[] = { 51,
+CR_In_No_Block[] = { 53,
0x0870, 0x089f,
0x2fe0, 0x2fef,
0x10200, 0x1027f,
@@ -24325,39 +24665,41 @@ CR_In_No_Block[] = { 51,
0x10c50, 0x10c7f,
0x10d40, 0x10e5f,
0x10e80, 0x10eff,
-0x10f70, 0x10fff,
+0x10f70, 0x10fdf,
0x11250, 0x1127f,
0x11380, 0x113ff,
0x114e0, 0x1157f,
0x116d0, 0x116ff,
0x11740, 0x117ff,
0x11850, 0x1189f,
-0x11900, 0x119ff,
+0x11900, 0x1199f,
0x11ab0, 0x11abf,
0x11b00, 0x11bff,
0x11cc0, 0x11cff,
0x11db0, 0x11edf,
-0x11f00, 0x11fff,
+0x11f00, 0x11fbf,
0x12550, 0x12fff,
-0x13430, 0x143ff,
+0x13440, 0x143ff,
0x14680, 0x167ff,
0x16a70, 0x16acf,
0x16b90, 0x16e3f,
0x16ea0, 0x16eff,
0x16fa0, 0x16fdf,
0x18b00, 0x1afff,
-0x1b130, 0x1b16f,
0x1b300, 0x1bbff,
0x1bcb0, 0x1cfff,
0x1d250, 0x1d2df,
0x1d380, 0x1d3ff,
0x1dab0, 0x1dfff,
-0x1e030, 0x1e7ff,
+0x1e030, 0x1e0ff,
+0x1e150, 0x1e2bf,
+0x1e300, 0x1e7ff,
0x1e8e0, 0x1e8ff,
0x1e960, 0x1ec6f,
-0x1ecc0, 0x1edff,
+0x1ecc0, 0x1ecff,
+0x1ed50, 0x1edff,
0x1ef00, 0x1efff,
-0x1fa70, 0x1ffff,
+0x1fb00, 0x1ffff,
0x2a6e0, 0x2a6ff,
0x2ebf0, 0x2f7ff,
0x2fa20, 0xdffff,
@@ -24438,6 +24780,7 @@ const CodeRanges[] = {
CR_Duployan,
CR_Egyptian_Hieroglyphs,
CR_Elbasan,
+ CR_Elymaic,
CR_Emoji,
CR_Emoji_Component,
CR_Emoji_Modifier,
@@ -24528,6 +24871,7 @@ const CodeRanges[] = {
CR_Myanmar,
CR_N,
CR_Nabataean,
+ CR_Nandinagari,
CR_Nd,
CR_New_Tai_Lue,
CR_Newa,
@@ -24536,6 +24880,7 @@ const CodeRanges[] = {
CR_No,
CR_Noncharacter_Code_Point,
CR_Nushu,
+ CR_Nyiakeng_Puachue_Hmong,
CR_Ogham,
CR_Ol_Chiki,
CR_Old_Hungarian,
@@ -24620,6 +24965,7 @@ const CodeRanges[] = {
CR_Uppercase,
CR_Vai,
CR_Variation_Selector,
+ CR_Wancho,
CR_Warang_Citi,
CR_White_Space,
CR_XID_Continue,
@@ -24837,6 +25183,7 @@ const CodeRanges[] = {
CR_In_Rumi_Numeral_Symbols,
CR_In_Old_Sogdian,
CR_In_Sogdian,
+ CR_In_Elymaic,
CR_In_Brahmi,
CR_In_Kaithi,
CR_In_Sora_Sompeng,
@@ -24857,6 +25204,7 @@ const CodeRanges[] = {
CR_In_Ahom,
CR_In_Dogra,
CR_In_Warang_Citi,
+ CR_In_Nandinagari,
CR_In_Zanabazar_Square,
CR_In_Soyombo,
CR_In_Pau_Cin_Hau,
@@ -24865,10 +25213,12 @@ const CodeRanges[] = {
CR_In_Masaram_Gondi,
CR_In_Gunjala_Gondi,
CR_In_Makasar,
+ CR_In_Tamil_Supplement,
CR_In_Cuneiform,
CR_In_Cuneiform_Numbers_and_Punctuation,
CR_In_Early_Dynastic_Cuneiform,
CR_In_Egyptian_Hieroglyphs,
+ CR_In_Egyptian_Hieroglyph_Format_Controls,
CR_In_Anatolian_Hieroglyphs,
CR_In_Bamum_Supplement,
CR_In_Mro,
@@ -24881,6 +25231,7 @@ const CodeRanges[] = {
CR_In_Tangut_Components,
CR_In_Kana_Supplement,
CR_In_Kana_Extended_A,
+ CR_In_Small_Kana_Extension,
CR_In_Nushu,
CR_In_Duployan,
CR_In_Shorthand_Format_Controls,
@@ -24893,9 +25244,12 @@ const CodeRanges[] = {
CR_In_Mathematical_Alphanumeric_Symbols,
CR_In_Sutton_SignWriting,
CR_In_Glagolitic_Supplement,
+ CR_In_Nyiakeng_Puachue_Hmong,
+ CR_In_Wancho,
CR_In_Mende_Kikakui,
CR_In_Adlam,
CR_In_Indic_Siyaq_Numbers,
+ CR_In_Ottoman_Siyaq_Numbers,
CR_In_Arabic_Mathematical_Alphabetic_Symbols,
CR_In_Mahjong_Tiles,
CR_In_Domino_Tiles,
@@ -24911,6 +25265,7 @@ const CodeRanges[] = {
CR_In_Supplemental_Arrows_C,
CR_In_Supplemental_Symbols_and_Pictographs,
CR_In_Chess_Symbols,
+ CR_In_Symbols_and_Pictographs_Extended_A,
CR_In_CJK_Unified_Ideographs_Extension_B,
CR_In_CJK_Unified_Ideographs_Extension_C,
CR_In_CJK_Unified_Ideographs_Extension_D,
@@ -24927,12 +25282,12 @@ const CodeRanges[] = {
#define pool_offset(s) offsetof(struct unicode_prop_name_pool_t, unicode_prop_name_pool_str##s)
-#define TOTAL_KEYWORDS 784
+#define TOTAL_KEYWORDS 801
#define MIN_WORD_LENGTH 1
#define MAX_WORD_LENGTH 44
#define MIN_HASH_VALUE 10
-#define MAX_HASH_VALUE 5516
-/* maximum key range = 5507, duplicates = 0 */
+#define MAX_HASH_VALUE 5809
+/* maximum key range = 5800, duplicates = 0 */
#ifndef GPERF_DOWNCASE
#define GPERF_DOWNCASE 1
@@ -24991,32 +25346,32 @@ hash (register const char *str, register size_t len)
{
static const unsigned short asso_values[] =
{
- 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
- 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
- 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
- 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
- 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
- 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
- 5517, 5517, 5517, 5517, 5517, 0, 1387, 107, 399, 14,
- 1024, 783, 831, 7, 1473, 25, 363, 89, 3, 17,
- 1203, 711, 59, 149, 313, 590, 1257, 334, 172, 1559,
- 22, 2, 1, 5517, 5517, 5517, 5517, 0, 1387, 107,
- 399, 14, 1024, 783, 831, 7, 1473, 25, 363, 89,
- 3, 17, 1203, 711, 59, 149, 313, 590, 1257, 334,
- 172, 1559, 22, 2, 1, 5517, 5517, 5517, 5517, 5517,
- 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
- 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
- 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
- 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
- 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
- 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
- 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
- 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
- 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
- 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
- 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
- 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
- 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517
+ 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810,
+ 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810,
+ 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810,
+ 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810,
+ 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810,
+ 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810,
+ 5810, 5810, 5810, 5810, 5810, 0, 1121, 136, 394, 19,
+ 417, 1048, 958, 7, 856, 8, 415, 103, 3, 16,
+ 1380, 1068, 56, 181, 326, 631, 1151, 930, 358, 1083,
+ 8, 0, 5, 5810, 5810, 5810, 5810, 0, 1121, 136,
+ 394, 19, 417, 1048, 958, 7, 856, 8, 415, 103,
+ 3, 16, 1380, 1068, 56, 181, 326, 631, 1151, 930,
+ 358, 1083, 8, 0, 5, 5810, 5810, 5810, 5810, 5810,
+ 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810,
+ 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810,
+ 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810,
+ 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810,
+ 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810,
+ 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810,
+ 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810,
+ 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810,
+ 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810,
+ 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810,
+ 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810,
+ 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810,
+ 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810
};
register unsigned int hval = (unsigned int )len;
@@ -25059,1574 +25414,1608 @@ hash (register const char *str, register size_t len)
struct unicode_prop_name_pool_t
{
char unicode_prop_name_pool_str10[sizeof("lana")];
+ char unicode_prop_name_pool_str14[sizeof("z")];
+ char unicode_prop_name_pool_str16[sizeof("yi")];
char unicode_prop_name_pool_str17[sizeof("lina")];
- char unicode_prop_name_pool_str18[sizeof("yi")];
- char unicode_prop_name_pool_str22[sizeof("cn")];
- char unicode_prop_name_pool_str24[sizeof("z")];
- char unicode_prop_name_pool_str25[sizeof("mn")];
- char unicode_prop_name_pool_str27[sizeof("yiii")];
- char unicode_prop_name_pool_str30[sizeof("ci")];
- char unicode_prop_name_pool_str31[sizeof("mani")];
- char unicode_prop_name_pool_str39[sizeof("lo")];
- char unicode_prop_name_pool_str40[sizeof("lao")];
- char unicode_prop_name_pool_str41[sizeof("laoo")];
- char unicode_prop_name_pool_str45[sizeof("miao")];
- char unicode_prop_name_pool_str46[sizeof("maka")];
- char unicode_prop_name_pool_str47[sizeof("me")];
- char unicode_prop_name_pool_str50[sizeof("co")];
- char unicode_prop_name_pool_str51[sizeof("loe")];
- char unicode_prop_name_pool_str68[sizeof("inkannada")];
- char unicode_prop_name_pool_str70[sizeof("innko")];
- char unicode_prop_name_pool_str71[sizeof("zzzz")];
- char unicode_prop_name_pool_str73[sizeof("gran")];
- char unicode_prop_name_pool_str75[sizeof("pi")];
- char unicode_prop_name_pool_str79[sizeof("lineara")];
- char unicode_prop_name_pool_str84[sizeof("cari")];
- char unicode_prop_name_pool_str85[sizeof("carian")];
- char unicode_prop_name_pool_str89[sizeof("pe")];
- char unicode_prop_name_pool_str95[sizeof("po")];
- char unicode_prop_name_pool_str96[sizeof("kana")];
- char unicode_prop_name_pool_str99[sizeof("mendekikakui")];
- char unicode_prop_name_pool_str101[sizeof("geor")];
- char unicode_prop_name_pool_str102[sizeof("meeteimayek")];
- char unicode_prop_name_pool_str105[sizeof("mark")];
- char unicode_prop_name_pool_str107[sizeof("m")];
- char unicode_prop_name_pool_str109[sizeof("grek")];
+ char unicode_prop_name_pool_str24[sizeof("mn")];
+ char unicode_prop_name_pool_str25[sizeof("yiii")];
+ char unicode_prop_name_pool_str27[sizeof("cn")];
+ char unicode_prop_name_pool_str28[sizeof("maka")];
+ char unicode_prop_name_pool_str30[sizeof("mani")];
+ char unicode_prop_name_pool_str33[sizeof("zzzz")];
+ char unicode_prop_name_pool_str34[sizeof("inkannada")];
+ char unicode_prop_name_pool_str35[sizeof("ci")];
+ char unicode_prop_name_pool_str37[sizeof("lo")];
+ char unicode_prop_name_pool_str38[sizeof("lao")];
+ char unicode_prop_name_pool_str39[sizeof("laoo")];
+ char unicode_prop_name_pool_str43[sizeof("miao")];
+ char unicode_prop_name_pool_str51[sizeof("innko")];
+ char unicode_prop_name_pool_str53[sizeof("co")];
+ char unicode_prop_name_pool_str56[sizeof("me")];
+ char unicode_prop_name_pool_str60[sizeof("loe")];
+ char unicode_prop_name_pool_str70[sizeof("gran")];
+ char unicode_prop_name_pool_str72[sizeof("pi")];
+ char unicode_prop_name_pool_str76[sizeof("lineara")];
+ char unicode_prop_name_pool_str84[sizeof("mark")];
+ char unicode_prop_name_pool_str86[sizeof("cari")];
+ char unicode_prop_name_pool_str87[sizeof("carian")];
+ char unicode_prop_name_pool_str90[sizeof("po")];
+ char unicode_prop_name_pool_str91[sizeof("mendekikakui")];
+ char unicode_prop_name_pool_str94[sizeof("grek")];
+ char unicode_prop_name_pool_str96[sizeof("pe")];
+ char unicode_prop_name_pool_str99[sizeof("meeteimayek")];
+ char unicode_prop_name_pool_str101[sizeof("inkharoshthi")];
+ char unicode_prop_name_pool_str102[sizeof("geor")];
+ char unicode_prop_name_pool_str103[sizeof("greek")];
+ char unicode_prop_name_pool_str107[sizeof("mro")];
+ char unicode_prop_name_pool_str108[sizeof("mroo")];
+ char unicode_prop_name_pool_str110[sizeof("kana")];
char unicode_prop_name_pool_str111[sizeof("mero")];
- char unicode_prop_name_pool_str113[sizeof("mro")];
- char unicode_prop_name_pool_str114[sizeof("mroo")];
- char unicode_prop_name_pool_str120[sizeof("gonm")];
- char unicode_prop_name_pool_str122[sizeof("c")];
- char unicode_prop_name_pool_str132[sizeof("cakm")];
- char unicode_prop_name_pool_str135[sizeof("greek")];
- char unicode_prop_name_pool_str138[sizeof("inkharoshthi")];
- char unicode_prop_name_pool_str141[sizeof("mandaic")];
- char unicode_prop_name_pool_str143[sizeof("inosmanya")];
- char unicode_prop_name_pool_str144[sizeof("inarmenian")];
- char unicode_prop_name_pool_str145[sizeof("inmanichaean")];
- char unicode_prop_name_pool_str149[sizeof("common")];
- char unicode_prop_name_pool_str156[sizeof("inmro")];
- char unicode_prop_name_pool_str157[sizeof("inmiao")];
- char unicode_prop_name_pool_str160[sizeof("qaai")];
- char unicode_prop_name_pool_str168[sizeof("inchakma")];
- char unicode_prop_name_pool_str170[sizeof("cans")];
- char unicode_prop_name_pool_str181[sizeof("connectorpunctuation")];
- char unicode_prop_name_pool_str183[sizeof("lm")];
- char unicode_prop_name_pool_str187[sizeof("marc")];
- char unicode_prop_name_pool_str188[sizeof("inmyanmar")];
- char unicode_prop_name_pool_str189[sizeof("vai")];
- char unicode_prop_name_pool_str190[sizeof("vaii")];
- char unicode_prop_name_pool_str199[sizeof("inideographicsymbolsandpunctuation")];
- char unicode_prop_name_pool_str201[sizeof("merc")];
- char unicode_prop_name_pool_str203[sizeof("inavestan")];
- char unicode_prop_name_pool_str204[sizeof("incuneiformnumbersandpunctuation")];
- char unicode_prop_name_pool_str210[sizeof("inmakasar")];
- char unicode_prop_name_pool_str211[sizeof("inrunic")];
- char unicode_prop_name_pool_str212[sizeof("incarian")];
- char unicode_prop_name_pool_str217[sizeof("prependedconcatenationmark")];
- char unicode_prop_name_pool_str219[sizeof("lc")];
- char unicode_prop_name_pool_str220[sizeof("inipaextensions")];
- char unicode_prop_name_pool_str222[sizeof("inkhmer")];
- char unicode_prop_name_pool_str225[sizeof("perm")];
- char unicode_prop_name_pool_str227[sizeof("combiningmark")];
- char unicode_prop_name_pool_str229[sizeof("inahom")];
- char unicode_prop_name_pool_str230[sizeof("cc")];
- char unicode_prop_name_pool_str232[sizeof("incherokee")];
- char unicode_prop_name_pool_str233[sizeof("mc")];
- char unicode_prop_name_pool_str245[sizeof("insharada")];
- char unicode_prop_name_pool_str251[sizeof("masaramgondi")];
- char unicode_prop_name_pool_str252[sizeof("incuneiform")];
- char unicode_prop_name_pool_str257[sizeof("makasar")];
- char unicode_prop_name_pool_str260[sizeof("qaac")];
- char unicode_prop_name_pool_str261[sizeof("inarrows")];
- char unicode_prop_name_pool_str262[sizeof("armn")];
- char unicode_prop_name_pool_str265[sizeof("lineseparator")];
- char unicode_prop_name_pool_str266[sizeof("armi")];
- char unicode_prop_name_pool_str275[sizeof("pc")];
- char unicode_prop_name_pool_str276[sizeof("armenian")];
- char unicode_prop_name_pool_str280[sizeof("insamaritan")];
- char unicode_prop_name_pool_str290[sizeof("inmasaramgondi")];
- char unicode_prop_name_pool_str292[sizeof("inzanabazarsquare")];
- char unicode_prop_name_pool_str293[sizeof("qmark")];
- char unicode_prop_name_pool_str295[sizeof("inmarchen")];
- char unicode_prop_name_pool_str301[sizeof("zs")];
- char unicode_prop_name_pool_str314[sizeof("cs")];
- char unicode_prop_name_pool_str318[sizeof("incyrillic")];
- char unicode_prop_name_pool_str319[sizeof("incham")];
- char unicode_prop_name_pool_str323[sizeof("latn")];
- char unicode_prop_name_pool_str326[sizeof("inscriptionalparthian")];
- char unicode_prop_name_pool_str327[sizeof("latin")];
- char unicode_prop_name_pool_str329[sizeof("ri")];
- char unicode_prop_name_pool_str336[sizeof("inkhmersymbols")];
- char unicode_prop_name_pool_str347[sizeof("pcm")];
- char unicode_prop_name_pool_str349[sizeof("inthaana")];
- char unicode_prop_name_pool_str355[sizeof("mtei")];
- char unicode_prop_name_pool_str358[sizeof("insyriac")];
- char unicode_prop_name_pool_str359[sizeof("ps")];
- char unicode_prop_name_pool_str361[sizeof("inthai")];
- char unicode_prop_name_pool_str367[sizeof("l")];
- char unicode_prop_name_pool_str371[sizeof("innewa")];
- char unicode_prop_name_pool_str376[sizeof("inkatakana")];
- char unicode_prop_name_pool_str382[sizeof("ascii")];
- char unicode_prop_name_pool_str383[sizeof("initialpunctuation")];
- char unicode_prop_name_pool_str388[sizeof("inkaithi")];
- char unicode_prop_name_pool_str393[sizeof("arabic")];
- char unicode_prop_name_pool_str405[sizeof("inideographicdescriptioncharacters")];
- char unicode_prop_name_pool_str417[sizeof("inlineara")];
- char unicode_prop_name_pool_str423[sizeof("mand")];
- char unicode_prop_name_pool_str429[sizeof("mongolian")];
- char unicode_prop_name_pool_str430[sizeof("inlao")];
- char unicode_prop_name_pool_str435[sizeof("katakana")];
- char unicode_prop_name_pool_str437[sizeof("mend")];
- char unicode_prop_name_pool_str439[sizeof("intakri")];
- char unicode_prop_name_pool_str441[sizeof("inruminumeralsymbols")];
- char unicode_prop_name_pool_str442[sizeof("prti")];
- char unicode_prop_name_pool_str444[sizeof("modi")];
- char unicode_prop_name_pool_str447[sizeof("inwarangciti")];
- char unicode_prop_name_pool_str453[sizeof("incjkcompatibilityforms")];
- char unicode_prop_name_pool_str457[sizeof("inspecials")];
- char unicode_prop_name_pool_str458[sizeof("incjkcompatibilityideographs")];
- char unicode_prop_name_pool_str459[sizeof("ideo")];
- char unicode_prop_name_pool_str462[sizeof("privateuse")];
- char unicode_prop_name_pool_str463[sizeof("kali")];
- char unicode_prop_name_pool_str465[sizeof("inmyanmarextendeda")];
- char unicode_prop_name_pool_str468[sizeof("letter")];
- char unicode_prop_name_pool_str469[sizeof("brai")];
- char unicode_prop_name_pool_str470[sizeof("inkanaextendeda")];
- char unicode_prop_name_pool_str472[sizeof("vs")];
- char unicode_prop_name_pool_str473[sizeof("xidcontinue")];
- char unicode_prop_name_pool_str477[sizeof("lower")];
- char unicode_prop_name_pool_str478[sizeof("inchesssymbols")];
- char unicode_prop_name_pool_str480[sizeof("control")];
- char unicode_prop_name_pool_str487[sizeof("inadlam")];
- char unicode_prop_name_pool_str488[sizeof("grlink")];
- char unicode_prop_name_pool_str495[sizeof("knda")];
- char unicode_prop_name_pool_str496[sizeof("inmeeteimayek")];
- char unicode_prop_name_pool_str498[sizeof("kannada")];
- char unicode_prop_name_pool_str511[sizeof("inmiscellaneousmathematicalsymbolsa")];
- char unicode_prop_name_pool_str515[sizeof("palm")];
- char unicode_prop_name_pool_str516[sizeof("inlycian")];
- char unicode_prop_name_pool_str517[sizeof("intransportandmapsymbols")];
- char unicode_prop_name_pool_str526[sizeof("inoldnortharabian")];
- char unicode_prop_name_pool_str532[sizeof("inemoticons")];
- char unicode_prop_name_pool_str533[sizeof("letternumber")];
- char unicode_prop_name_pool_str536[sizeof("inmodi")];
- char unicode_prop_name_pool_str539[sizeof("xidc")];
- char unicode_prop_name_pool_str543[sizeof("lowercase")];
- char unicode_prop_name_pool_str545[sizeof("inancientsymbols")];
- char unicode_prop_name_pool_str548[sizeof("cwcm")];
- char unicode_prop_name_pool_str553[sizeof("inmedefaidrin")];
- char unicode_prop_name_pool_str556[sizeof("psalterpahlavi")];
- char unicode_prop_name_pool_str564[sizeof("gothic")];
- char unicode_prop_name_pool_str565[sizeof("inmendekikakui")];
- char unicode_prop_name_pool_str567[sizeof("brahmi")];
- char unicode_prop_name_pool_str569[sizeof("inolditalic")];
- char unicode_prop_name_pool_str580[sizeof("inmalayalam")];
- char unicode_prop_name_pool_str581[sizeof("xids")];
- char unicode_prop_name_pool_str582[sizeof("incommonindicnumberforms")];
- char unicode_prop_name_pool_str588[sizeof("meroiticcursive")];
- char unicode_prop_name_pool_str589[sizeof("inlinearbideograms")];
- char unicode_prop_name_pool_str597[sizeof("patternwhitespace")];
- char unicode_prop_name_pool_str604[sizeof("insundanese")];
- char unicode_prop_name_pool_str606[sizeof("joinc")];
- char unicode_prop_name_pool_str611[sizeof("inoldsogdian")];
- char unicode_prop_name_pool_str619[sizeof("incjkstrokes")];
- char unicode_prop_name_pool_str626[sizeof("so")];
- char unicode_prop_name_pool_str630[sizeof("patternsyntax")];
- char unicode_prop_name_pool_str631[sizeof("lt")];
- char unicode_prop_name_pool_str632[sizeof("incjkcompatibilityideographssupplement")];
- char unicode_prop_name_pool_str635[sizeof("inmandaic")];
- char unicode_prop_name_pool_str636[sizeof("insylotinagri")];
- char unicode_prop_name_pool_str641[sizeof("idc")];
- char unicode_prop_name_pool_str642[sizeof("sk")];
- char unicode_prop_name_pool_str656[sizeof("alnum")];
- char unicode_prop_name_pool_str670[sizeof("sora")];
- char unicode_prop_name_pool_str671[sizeof("bamum")];
- char unicode_prop_name_pool_str672[sizeof("inoldsoutharabian")];
- char unicode_prop_name_pool_str675[sizeof("patws")];
- char unicode_prop_name_pool_str676[sizeof("inmusicalsymbols")];
- char unicode_prop_name_pool_str690[sizeof("idsbinaryoperator")];
- char unicode_prop_name_pool_str699[sizeof("indominotiles")];
- char unicode_prop_name_pool_str701[sizeof("bass")];
- char unicode_prop_name_pool_str703[sizeof("innewtailue")];
- char unicode_prop_name_pool_str705[sizeof("ital")];
- char unicode_prop_name_pool_str707[sizeof("inmiscellaneoussymbols")];
- char unicode_prop_name_pool_str710[sizeof("inopticalcharacterrecognition")];
- char unicode_prop_name_pool_str711[sizeof("grext")];
- char unicode_prop_name_pool_str712[sizeof("inkanasupplement")];
- char unicode_prop_name_pool_str716[sizeof("inmiscellaneoussymbolsandarrows")];
- char unicode_prop_name_pool_str721[sizeof("inmiscellaneoussymbolsandpictographs")];
- char unicode_prop_name_pool_str723[sizeof("unknown")];
- char unicode_prop_name_pool_str724[sizeof("inmodifiertoneletters")];
- char unicode_prop_name_pool_str725[sizeof("ids")];
- char unicode_prop_name_pool_str729[sizeof("zl")];
- char unicode_prop_name_pool_str730[sizeof("inlatinextendeda")];
- char unicode_prop_name_pool_str731[sizeof("ll")];
- char unicode_prop_name_pool_str732[sizeof("intaile")];
- char unicode_prop_name_pool_str738[sizeof("incontrolpictures")];
- char unicode_prop_name_pool_str740[sizeof("s")];
- char unicode_prop_name_pool_str741[sizeof("batk")];
- char unicode_prop_name_pool_str742[sizeof("samr")];
- char unicode_prop_name_pool_str753[sizeof("lisu")];
- char unicode_prop_name_pool_str756[sizeof("print")];
- char unicode_prop_name_pool_str757[sizeof("samaritan")];
- char unicode_prop_name_pool_str758[sizeof("inlatinextendede")];
- char unicode_prop_name_pool_str759[sizeof("intaitham")];
- char unicode_prop_name_pool_str760[sizeof("pauc")];
- char unicode_prop_name_pool_str767[sizeof("batak")];
- char unicode_prop_name_pool_str770[sizeof("sm")];
- char unicode_prop_name_pool_str773[sizeof("bali")];
- char unicode_prop_name_pool_str778[sizeof("inancientgreekmusicalnotation")];
- char unicode_prop_name_pool_str779[sizeof("uideo")];
- char unicode_prop_name_pool_str781[sizeof("intaixuanjingsymbols")];
- char unicode_prop_name_pool_str782[sizeof("oriya")];
- char unicode_prop_name_pool_str791[sizeof("incyrillicextendeda")];
- char unicode_prop_name_pool_str793[sizeof("bengali")];
- char unicode_prop_name_pool_str794[sizeof("inugaritic")];
- char unicode_prop_name_pool_str801[sizeof("balinese")];
- char unicode_prop_name_pool_str806[sizeof("sc")];
- char unicode_prop_name_pool_str807[sizeof("intamil")];
- char unicode_prop_name_pool_str808[sizeof("inlydian")];
- char unicode_prop_name_pool_str809[sizeof("inmultani")];
- char unicode_prop_name_pool_str814[sizeof("gong")];
- char unicode_prop_name_pool_str817[sizeof("blank")];
- char unicode_prop_name_pool_str823[sizeof("ingrantha")];
- char unicode_prop_name_pool_str824[sizeof("mong")];
- char unicode_prop_name_pool_str833[sizeof("inearlydynasticcuneiform")];
- char unicode_prop_name_pool_str838[sizeof("insaurashtra")];
- char unicode_prop_name_pool_str839[sizeof("georgian")];
- char unicode_prop_name_pool_str846[sizeof("zinh")];
- char unicode_prop_name_pool_str849[sizeof("inosage")];
- char unicode_prop_name_pool_str854[sizeof("ingeneralpunctuation")];
- char unicode_prop_name_pool_str857[sizeof("incaucasianalbanian")];
- char unicode_prop_name_pool_str859[sizeof("pd")];
- char unicode_prop_name_pool_str866[sizeof("canadianaboriginal")];
- char unicode_prop_name_pool_str867[sizeof("glagolitic")];
- char unicode_prop_name_pool_str870[sizeof("inspacingmodifierletters")];
- char unicode_prop_name_pool_str871[sizeof("idcontinue")];
- char unicode_prop_name_pool_str875[sizeof("inoldturkic")];
- char unicode_prop_name_pool_str884[sizeof("plrd")];
- char unicode_prop_name_pool_str885[sizeof("joincontrol")];
- char unicode_prop_name_pool_str890[sizeof("idst")];
- char unicode_prop_name_pool_str892[sizeof("inhanifirohingya")];
- char unicode_prop_name_pool_str893[sizeof("osage")];
- char unicode_prop_name_pool_str898[sizeof("incyrillicextendedc")];
- char unicode_prop_name_pool_str900[sizeof("ingeorgian")];
- char unicode_prop_name_pool_str902[sizeof("unassigned")];
- char unicode_prop_name_pool_str907[sizeof("lowercaseletter")];
- char unicode_prop_name_pool_str908[sizeof("emoji")];
- char unicode_prop_name_pool_str912[sizeof("indeseret")];
- char unicode_prop_name_pool_str916[sizeof("inancientgreeknumbers")];
- char unicode_prop_name_pool_str917[sizeof("inmongolian")];
- char unicode_prop_name_pool_str922[sizeof("cher")];
- char unicode_prop_name_pool_str923[sizeof("cherokee")];
- char unicode_prop_name_pool_str928[sizeof("inhiragana")];
- char unicode_prop_name_pool_str930[sizeof("phoenician")];
- char unicode_prop_name_pool_str931[sizeof("marchen")];
- char unicode_prop_name_pool_str937[sizeof("xsux")];
- char unicode_prop_name_pool_str938[sizeof("cham")];
- char unicode_prop_name_pool_str940[sizeof("chakma")];
- char unicode_prop_name_pool_str943[sizeof("inmeeteimayekextensions")];
- char unicode_prop_name_pool_str944[sizeof("inlatinextendedc")];
- char unicode_prop_name_pool_str947[sizeof("kaithi")];
- char unicode_prop_name_pool_str951[sizeof("graphemebase")];
- char unicode_prop_name_pool_str952[sizeof("idstart")];
- char unicode_prop_name_pool_str953[sizeof("osma")];
- char unicode_prop_name_pool_str962[sizeof("adlm")];
- char unicode_prop_name_pool_str965[sizeof("inmahajani")];
- char unicode_prop_name_pool_str966[sizeof("cased")];
- char unicode_prop_name_pool_str969[sizeof("runr")];
- char unicode_prop_name_pool_str970[sizeof("sinhala")];
- char unicode_prop_name_pool_str971[sizeof("manichaean")];
- char unicode_prop_name_pool_str972[sizeof("inogham")];
- char unicode_prop_name_pool_str973[sizeof("graphemelink")];
- char unicode_prop_name_pool_str976[sizeof("ingurmukhi")];
- char unicode_prop_name_pool_str977[sizeof("cwt")];
- char unicode_prop_name_pool_str982[sizeof("khojki")];
- char unicode_prop_name_pool_str983[sizeof("khar")];
- char unicode_prop_name_pool_str987[sizeof("multani")];
- char unicode_prop_name_pool_str989[sizeof("gunjalagondi")];
- char unicode_prop_name_pool_str995[sizeof("casedletter")];
- char unicode_prop_name_pool_str997[sizeof("inethiopic")];
- char unicode_prop_name_pool_str999[sizeof("inolchiki")];
- char unicode_prop_name_pool_str1000[sizeof("variationselector")];
- char unicode_prop_name_pool_str1003[sizeof("sind")];
- char unicode_prop_name_pool_str1004[sizeof("incountingrodnumerals")];
- char unicode_prop_name_pool_str1007[sizeof("logicalorderexception")];
- char unicode_prop_name_pool_str1020[sizeof("insinhala")];
- char unicode_prop_name_pool_str1024[sizeof("bidic")];
- char unicode_prop_name_pool_str1034[sizeof("dia")];
- char unicode_prop_name_pool_str1035[sizeof("insorasompeng")];
- char unicode_prop_name_pool_str1036[sizeof("anatolianhieroglyphs")];
- char unicode_prop_name_pool_str1038[sizeof("inlowsurrogates")];
- char unicode_prop_name_pool_str1040[sizeof("di")];
- char unicode_prop_name_pool_str1048[sizeof("ahom")];
- char unicode_prop_name_pool_str1050[sizeof("inenclosedalphanumerics")];
- char unicode_prop_name_pool_str1052[sizeof("adlam")];
- char unicode_prop_name_pool_str1060[sizeof("inkhudawadi")];
- char unicode_prop_name_pool_str1061[sizeof("cntrl")];
- char unicode_prop_name_pool_str1062[sizeof("xidstart")];
- char unicode_prop_name_pool_str1067[sizeof("xdigit")];
- char unicode_prop_name_pool_str1069[sizeof("phnx")];
- char unicode_prop_name_pool_str1071[sizeof("emojimodifier")];
- char unicode_prop_name_pool_str1072[sizeof("khmr")];
- char unicode_prop_name_pool_str1073[sizeof("insiddham")];
- char unicode_prop_name_pool_str1077[sizeof("cwl")];
- char unicode_prop_name_pool_str1082[sizeof("bamu")];
- char unicode_prop_name_pool_str1086[sizeof("ingreekandcoptic")];
- char unicode_prop_name_pool_str1087[sizeof("inmiscellaneoustechnical")];
- char unicode_prop_name_pool_str1100[sizeof("sterm")];
- char unicode_prop_name_pool_str1101[sizeof("inscriptionalpahlavi")];
- char unicode_prop_name_pool_str1102[sizeof("inlatinextendedadditional")];
- char unicode_prop_name_pool_str1103[sizeof("kharoshthi")];
- char unicode_prop_name_pool_str1125[sizeof("runic")];
- char unicode_prop_name_pool_str1127[sizeof("odi")];
- char unicode_prop_name_pool_str1128[sizeof("ahex")];
- char unicode_prop_name_pool_str1132[sizeof("khmer")];
- char unicode_prop_name_pool_str1138[sizeof("incyrillicsupplement")];
- char unicode_prop_name_pool_str1145[sizeof("incherokeesupplement")];
- char unicode_prop_name_pool_str1153[sizeof("inmeroitichieroglyphs")];
- char unicode_prop_name_pool_str1156[sizeof("enclosingmark")];
- char unicode_prop_name_pool_str1157[sizeof("glag")];
- char unicode_prop_name_pool_str1160[sizeof("inkangxiradicals")];
- char unicode_prop_name_pool_str1165[sizeof("math")];
- char unicode_prop_name_pool_str1166[sizeof("quotationmark")];
- char unicode_prop_name_pool_str1172[sizeof("goth")];
- char unicode_prop_name_pool_str1179[sizeof("emojimodifierbase")];
- char unicode_prop_name_pool_str1180[sizeof("ugar")];
- char unicode_prop_name_pool_str1185[sizeof("lu")];
- char unicode_prop_name_pool_str1189[sizeof("radical")];
- char unicode_prop_name_pool_str1198[sizeof("incjkunifiedideographsextensiona")];
- char unicode_prop_name_pool_str1203[sizeof("beng")];
- char unicode_prop_name_pool_str1205[sizeof("braille")];
- char unicode_prop_name_pool_str1207[sizeof("n")];
- char unicode_prop_name_pool_str1209[sizeof("sundanese")];
- char unicode_prop_name_pool_str1210[sizeof("olck")];
- char unicode_prop_name_pool_str1212[sizeof("incjkunifiedideographsextensione")];
- char unicode_prop_name_pool_str1213[sizeof("diacritic")];
- char unicode_prop_name_pool_str1217[sizeof("grantha")];
- char unicode_prop_name_pool_str1223[sizeof("inenclosedalphanumericsupplement")];
- char unicode_prop_name_pool_str1227[sizeof("olchiki")];
- char unicode_prop_name_pool_str1228[sizeof("oidc")];
- char unicode_prop_name_pool_str1229[sizeof("olower")];
- char unicode_prop_name_pool_str1230[sizeof("regionalindicator")];
- char unicode_prop_name_pool_str1239[sizeof("no")];
- char unicode_prop_name_pool_str1240[sizeof("intirhuta")];
- char unicode_prop_name_pool_str1242[sizeof("inhatran")];
- char unicode_prop_name_pool_str1243[sizeof("saur")];
- char unicode_prop_name_pool_str1244[sizeof("kthi")];
- char unicode_prop_name_pool_str1246[sizeof("ingeometricshapes")];
- char unicode_prop_name_pool_str1250[sizeof("guru")];
- char unicode_prop_name_pool_str1256[sizeof("ingreekextended")];
- char unicode_prop_name_pool_str1258[sizeof("paucinhau")];
- char unicode_prop_name_pool_str1260[sizeof("xpeo")];
- char unicode_prop_name_pool_str1263[sizeof("p")];
- char unicode_prop_name_pool_str1264[sizeof("phli")];
- char unicode_prop_name_pool_str1265[sizeof("nko")];
- char unicode_prop_name_pool_str1266[sizeof("nkoo")];
- char unicode_prop_name_pool_str1270[sizeof("oids")];
- char unicode_prop_name_pool_str1276[sizeof("indogra")];
- char unicode_prop_name_pool_str1280[sizeof("inphoenician")];
- char unicode_prop_name_pool_str1283[sizeof("punct")];
- char unicode_prop_name_pool_str1284[sizeof("limbu")];
- char unicode_prop_name_pool_str1286[sizeof("gurmukhi")];
- char unicode_prop_name_pool_str1287[sizeof("mult")];
- char unicode_prop_name_pool_str1293[sizeof("brah")];
- char unicode_prop_name_pool_str1297[sizeof("taile")];
- char unicode_prop_name_pool_str1299[sizeof("inoldhungarian")];
- char unicode_prop_name_pool_str1301[sizeof("takri")];
- char unicode_prop_name_pool_str1303[sizeof("bidicontrol")];
- char unicode_prop_name_pool_str1304[sizeof("invai")];
- char unicode_prop_name_pool_str1305[sizeof("incjkunifiedideographsextensionc")];
- char unicode_prop_name_pool_str1314[sizeof("inenclosedideographicsupplement")];
- char unicode_prop_name_pool_str1320[sizeof("decimalnumber")];
- char unicode_prop_name_pool_str1331[sizeof("lepc")];
- char unicode_prop_name_pool_str1333[sizeof("inherited")];
- char unicode_prop_name_pool_str1337[sizeof("incjkunifiedideographs")];
- char unicode_prop_name_pool_str1338[sizeof("graphemeextend")];
- char unicode_prop_name_pool_str1339[sizeof("saurashtra")];
- char unicode_prop_name_pool_str1343[sizeof("caseignorable")];
- char unicode_prop_name_pool_str1344[sizeof("emojicomponent")];
- char unicode_prop_name_pool_str1345[sizeof("takr")];
- char unicode_prop_name_pool_str1360[sizeof("inanatolianhieroglyphs")];
- char unicode_prop_name_pool_str1363[sizeof("inornamentaldingbats")];
- char unicode_prop_name_pool_str1366[sizeof("inphaistosdisc")];
- char unicode_prop_name_pool_str1371[sizeof("insogdian")];
- char unicode_prop_name_pool_str1372[sizeof("indingbats")];
- char unicode_prop_name_pool_str1390[sizeof("sd")];
- char unicode_prop_name_pool_str1395[sizeof("zanb")];
- char unicode_prop_name_pool_str1397[sizeof("insinhalaarchaicnumbers")];
- char unicode_prop_name_pool_str1398[sizeof("ideographic")];
- char unicode_prop_name_pool_str1399[sizeof("sidd")];
- char unicode_prop_name_pool_str1404[sizeof("linb")];
- char unicode_prop_name_pool_str1407[sizeof("sogdian")];
- char unicode_prop_name_pool_str1408[sizeof("bhks")];
- char unicode_prop_name_pool_str1411[sizeof("sogo")];
- char unicode_prop_name_pool_str1420[sizeof("bhaiksuki")];
- char unicode_prop_name_pool_str1423[sizeof("term")];
- char unicode_prop_name_pool_str1425[sizeof("insundanesesupplement")];
- char unicode_prop_name_pool_str1428[sizeof("intags")];
- char unicode_prop_name_pool_str1432[sizeof("innabataean")];
- char unicode_prop_name_pool_str1435[sizeof("sinh")];
- char unicode_prop_name_pool_str1438[sizeof("shavian")];
- char unicode_prop_name_pool_str1440[sizeof("inbhaiksuki")];
- char unicode_prop_name_pool_str1441[sizeof("inelbasan")];
- char unicode_prop_name_pool_str1442[sizeof("inimperialaramaic")];
- char unicode_prop_name_pool_str1446[sizeof("inshavian")];
- char unicode_prop_name_pool_str1448[sizeof("intangut")];
- char unicode_prop_name_pool_str1451[sizeof("inshorthandformatcontrols")];
- char unicode_prop_name_pool_str1454[sizeof("inkanbun")];
- char unicode_prop_name_pool_str1455[sizeof("sentenceterminal")];
- char unicode_prop_name_pool_str1458[sizeof("medf")];
- char unicode_prop_name_pool_str1461[sizeof("coptic")];
- char unicode_prop_name_pool_str1466[sizeof("linearb")];
- char unicode_prop_name_pool_str1468[sizeof("medefaidrin")];
- char unicode_prop_name_pool_str1470[sizeof("inethiopicextendeda")];
- char unicode_prop_name_pool_str1478[sizeof("inhanunoo")];
- char unicode_prop_name_pool_str1482[sizeof("han")];
- char unicode_prop_name_pool_str1483[sizeof("cwcf")];
- char unicode_prop_name_pool_str1487[sizeof("hani")];
- char unicode_prop_name_pool_str1490[sizeof("limb")];
- char unicode_prop_name_pool_str1497[sizeof("hano")];
- char unicode_prop_name_pool_str1504[sizeof("ingeometricshapesextended")];
- char unicode_prop_name_pool_str1520[sizeof("hanunoo")];
- char unicode_prop_name_pool_str1528[sizeof("inlatinextendedd")];
- char unicode_prop_name_pool_str1530[sizeof("inarabic")];
- char unicode_prop_name_pool_str1531[sizeof("cwu")];
- char unicode_prop_name_pool_str1534[sizeof("asciihexdigit")];
- char unicode_prop_name_pool_str1537[sizeof("ininscriptionalparthian")];
- char unicode_prop_name_pool_str1539[sizeof("format")];
- char unicode_prop_name_pool_str1540[sizeof("ininscriptionalpahlavi")];
- char unicode_prop_name_pool_str1543[sizeof("hira")];
- char unicode_prop_name_pool_str1549[sizeof("dsrt")];
- char unicode_prop_name_pool_str1551[sizeof("copt")];
- char unicode_prop_name_pool_str1552[sizeof("ugaritic")];
- char unicode_prop_name_pool_str1555[sizeof("newa")];
- char unicode_prop_name_pool_str1557[sizeof("arab")];
- char unicode_prop_name_pool_str1558[sizeof("inkhojki")];
- char unicode_prop_name_pool_str1559[sizeof("oldpersian")];
- char unicode_prop_name_pool_str1569[sizeof("punctuation")];
- char unicode_prop_name_pool_str1580[sizeof("deseret")];
- char unicode_prop_name_pool_str1581[sizeof("newtailue")];
- char unicode_prop_name_pool_str1582[sizeof("newline")];
- char unicode_prop_name_pool_str1584[sizeof("ext")];
- char unicode_prop_name_pool_str1586[sizeof("sund")];
- char unicode_prop_name_pool_str1587[sizeof("ogam")];
- char unicode_prop_name_pool_str1589[sizeof("inbasiclatin")];
- char unicode_prop_name_pool_str1590[sizeof("inarabicpresentationformsa")];
- char unicode_prop_name_pool_str1593[sizeof("cprt")];
- char unicode_prop_name_pool_str1594[sizeof("imperialaramaic")];
- char unicode_prop_name_pool_str1597[sizeof("incjkunifiedideographsextensiond")];
- char unicode_prop_name_pool_str1598[sizeof("assigned")];
- char unicode_prop_name_pool_str1605[sizeof("taiviet")];
- char unicode_prop_name_pool_str1608[sizeof("innushu")];
- char unicode_prop_name_pool_str1618[sizeof("inoriya")];
- char unicode_prop_name_pool_str1622[sizeof("wara")];
- char unicode_prop_name_pool_str1624[sizeof("java")];
- char unicode_prop_name_pool_str1626[sizeof("sorasompeng")];
- char unicode_prop_name_pool_str1628[sizeof("inkayahli")];
- char unicode_prop_name_pool_str1630[sizeof("orkh")];
- char unicode_prop_name_pool_str1633[sizeof("closepunctuation")];
- char unicode_prop_name_pool_str1636[sizeof("grbase")];
- char unicode_prop_name_pool_str1638[sizeof("tale")];
- char unicode_prop_name_pool_str1640[sizeof("bopo")];
- char unicode_prop_name_pool_str1659[sizeof("javanese")];
- char unicode_prop_name_pool_str1661[sizeof("osge")];
- char unicode_prop_name_pool_str1662[sizeof("oldpermic")];
- char unicode_prop_name_pool_str1665[sizeof("inoldpersian")];
- char unicode_prop_name_pool_str1677[sizeof("phag")];
- char unicode_prop_name_pool_str1678[sizeof("alpha")];
- char unicode_prop_name_pool_str1680[sizeof("lyci")];
- char unicode_prop_name_pool_str1681[sizeof("lycian")];
- char unicode_prop_name_pool_str1687[sizeof("inkatakanaphoneticextensions")];
- char unicode_prop_name_pool_str1690[sizeof("incjksymbolsandpunctuation")];
- char unicode_prop_name_pool_str1691[sizeof("inhanguljamo")];
- char unicode_prop_name_pool_str1697[sizeof("inhanguljamoextendeda")];
- char unicode_prop_name_pool_str1701[sizeof("avestan")];
- char unicode_prop_name_pool_str1708[sizeof("inpalmyrene")];
- char unicode_prop_name_pool_str1709[sizeof("inlepcha")];
- char unicode_prop_name_pool_str1710[sizeof("indevanagari")];
- char unicode_prop_name_pool_str1713[sizeof("taml")];
- char unicode_prop_name_pool_str1714[sizeof("sgnw")];
- char unicode_prop_name_pool_str1717[sizeof("inblockelements")];
- char unicode_prop_name_pool_str1726[sizeof("inlisu")];
- char unicode_prop_name_pool_str1728[sizeof("mymr")];
- char unicode_prop_name_pool_str1731[sizeof("myanmar")];
- char unicode_prop_name_pool_str1733[sizeof("graph")];
- char unicode_prop_name_pool_str1736[sizeof("cuneiform")];
- char unicode_prop_name_pool_str1737[sizeof("extender")];
- char unicode_prop_name_pool_str1741[sizeof("inphoneticextensions")];
- char unicode_prop_name_pool_str1749[sizeof("inmongoliansupplement")];
- char unicode_prop_name_pool_str1750[sizeof("bopomofo")];
- char unicode_prop_name_pool_str1754[sizeof("intibetan")];
- char unicode_prop_name_pool_str1758[sizeof("innumberforms")];
- char unicode_prop_name_pool_str1759[sizeof("shaw")];
- char unicode_prop_name_pool_str1760[sizeof("inbatak")];
- char unicode_prop_name_pool_str1765[sizeof("inoldpermic")];
- char unicode_prop_name_pool_str1766[sizeof("incoptic")];
- char unicode_prop_name_pool_str1776[sizeof("invariationselectors")];
- char unicode_prop_name_pool_str1779[sizeof("insoyombo")];
- char unicode_prop_name_pool_str1782[sizeof("terminalpunctuation")];
- char unicode_prop_name_pool_str1783[sizeof("bugi")];
- char unicode_prop_name_pool_str1791[sizeof("insyriacsupplement")];
- char unicode_prop_name_pool_str1793[sizeof("sogd")];
- char unicode_prop_name_pool_str1798[sizeof("hatran")];
- char unicode_prop_name_pool_str1807[sizeof("inbyzantinemusicalsymbols")];
- char unicode_prop_name_pool_str1809[sizeof("inbalinese")];
- char unicode_prop_name_pool_str1811[sizeof("buginese")];
- char unicode_prop_name_pool_str1815[sizeof("innoblock")];
- char unicode_prop_name_pool_str1817[sizeof("inethiopicsupplement")];
- char unicode_prop_name_pool_str1820[sizeof("inglagolitic")];
- char unicode_prop_name_pool_str1824[sizeof("ingeorgiansupplement")];
- char unicode_prop_name_pool_str1826[sizeof("space")];
- char unicode_prop_name_pool_str1827[sizeof("sharada")];
- char unicode_prop_name_pool_str1829[sizeof("dogra")];
- char unicode_prop_name_pool_str1830[sizeof("avst")];
- char unicode_prop_name_pool_str1834[sizeof("hex")];
- char unicode_prop_name_pool_str1837[sizeof("inunifiedcanadianaboriginalsyllabics")];
- char unicode_prop_name_pool_str1838[sizeof("inverticalforms")];
- char unicode_prop_name_pool_str1839[sizeof("spacingmark")];
- char unicode_prop_name_pool_str1845[sizeof("inarabicextendeda")];
- char unicode_prop_name_pool_str1849[sizeof("hatr")];
- char unicode_prop_name_pool_str1850[sizeof("modifierletter")];
- char unicode_prop_name_pool_str1852[sizeof("inmyanmarextendedb")];
- char unicode_prop_name_pool_str1858[sizeof("incjkcompatibility")];
- char unicode_prop_name_pool_str1860[sizeof("khudawadi")];
- char unicode_prop_name_pool_str1863[sizeof("invedicextensions")];
- char unicode_prop_name_pool_str1868[sizeof("inethiopicextended")];
- char unicode_prop_name_pool_str1875[sizeof("ingeorgianextended")];
- char unicode_prop_name_pool_str1883[sizeof("shrd")];
- char unicode_prop_name_pool_str1887[sizeof("dogr")];
- char unicode_prop_name_pool_str1892[sizeof("intelugu")];
- char unicode_prop_name_pool_str1898[sizeof("inmiscellaneousmathematicalsymbolsb")];
- char unicode_prop_name_pool_str1899[sizeof("inmayannumerals")];
- char unicode_prop_name_pool_str1902[sizeof("olditalic")];
- char unicode_prop_name_pool_str1904[sizeof("inbraillepatterns")];
- char unicode_prop_name_pool_str1911[sizeof("oalpha")];
- char unicode_prop_name_pool_str1913[sizeof("inmathematicalalphanumericsymbols")];
- char unicode_prop_name_pool_str1915[sizeof("inphoneticextensionssupplement")];
- char unicode_prop_name_pool_str1916[sizeof("intagalog")];
- char unicode_prop_name_pool_str1921[sizeof("insuttonsignwriting")];
- char unicode_prop_name_pool_str1923[sizeof("siddham")];
- char unicode_prop_name_pool_str1927[sizeof("intaiviet")];
- char unicode_prop_name_pool_str1931[sizeof("nl")];
- char unicode_prop_name_pool_str1934[sizeof("separator")];
- char unicode_prop_name_pool_str1938[sizeof("ethi")];
- char unicode_prop_name_pool_str1943[sizeof("patsyn")];
- char unicode_prop_name_pool_str1948[sizeof("rohg")];
- char unicode_prop_name_pool_str1950[sizeof("invariationselectorssupplement")];
- char unicode_prop_name_pool_str1956[sizeof("inyiradicals")];
- char unicode_prop_name_pool_str1957[sizeof("otheridcontinue")];
- char unicode_prop_name_pool_str1964[sizeof("idsb")];
- char unicode_prop_name_pool_str1965[sizeof("insmallformvariants")];
- char unicode_prop_name_pool_str1972[sizeof("lydi")];
- char unicode_prop_name_pool_str1973[sizeof("lydian")];
- char unicode_prop_name_pool_str1978[sizeof("other")];
- char unicode_prop_name_pool_str1987[sizeof("othernumber")];
- char unicode_prop_name_pool_str1999[sizeof("cyrl")];
- char unicode_prop_name_pool_str2003[sizeof("nd")];
- char unicode_prop_name_pool_str2006[sizeof("induployan")];
- char unicode_prop_name_pool_str2008[sizeof("dash")];
- char unicode_prop_name_pool_str2010[sizeof("zanabazarsquare")];
- char unicode_prop_name_pool_str2016[sizeof("incopticepactnumbers")];
- char unicode_prop_name_pool_str2020[sizeof("number")];
- char unicode_prop_name_pool_str2023[sizeof("inphagspa")];
- char unicode_prop_name_pool_str2032[sizeof("mlym")];
- char unicode_prop_name_pool_str2037[sizeof("malayalam")];
- char unicode_prop_name_pool_str2038[sizeof("word")];
- char unicode_prop_name_pool_str2040[sizeof("sarb")];
- char unicode_prop_name_pool_str2047[sizeof("tang")];
- char unicode_prop_name_pool_str2050[sizeof("otheralphabetic")];
- char unicode_prop_name_pool_str2051[sizeof("tagbanwa")];
- char unicode_prop_name_pool_str2057[sizeof("lepcha")];
- char unicode_prop_name_pool_str2062[sizeof("surrogate")];
- char unicode_prop_name_pool_str2063[sizeof("palmyrene")];
- char unicode_prop_name_pool_str2064[sizeof("cf")];
- char unicode_prop_name_pool_str2070[sizeof("ingothic")];
- char unicode_prop_name_pool_str2071[sizeof("inmeroiticcursive")];
- char unicode_prop_name_pool_str2077[sizeof("tamil")];
- char unicode_prop_name_pool_str2084[sizeof("oldhungarian")];
- char unicode_prop_name_pool_str2085[sizeof("titlecaseletter")];
- char unicode_prop_name_pool_str2092[sizeof("thaa")];
- char unicode_prop_name_pool_str2095[sizeof("inunifiedcanadianaboriginalsyllabicsextended")];
- char unicode_prop_name_pool_str2097[sizeof("thaana")];
- char unicode_prop_name_pool_str2099[sizeof("thai")];
- char unicode_prop_name_pool_str2109[sizeof("pf")];
- char unicode_prop_name_pool_str2110[sizeof("extendedpictographic")];
- char unicode_prop_name_pool_str2121[sizeof("incjkradicalssupplement")];
- char unicode_prop_name_pool_str2124[sizeof("indevanagariextended")];
- char unicode_prop_name_pool_str2133[sizeof("gujr")];
- char unicode_prop_name_pool_str2144[sizeof("gujarati")];
- char unicode_prop_name_pool_str2158[sizeof("tirh")];
- char unicode_prop_name_pool_str2160[sizeof("caucasianalbanian")];
- char unicode_prop_name_pool_str2178[sizeof("incyrillicextendedb")];
- char unicode_prop_name_pool_str2187[sizeof("soyo")];
- char unicode_prop_name_pool_str2188[sizeof("inhangulsyllables")];
- char unicode_prop_name_pool_str2190[sizeof("inbamum")];
- char unicode_prop_name_pool_str2191[sizeof("taitham")];
- char unicode_prop_name_pool_str2196[sizeof("meroitichieroglyphs")];
- char unicode_prop_name_pool_str2213[sizeof("intifinagh")];
- char unicode_prop_name_pool_str2214[sizeof("talu")];
- char unicode_prop_name_pool_str2217[sizeof("inbengali")];
- char unicode_prop_name_pool_str2222[sizeof("incjkunifiedideographsextensionf")];
- char unicode_prop_name_pool_str2223[sizeof("buhd")];
- char unicode_prop_name_pool_str2228[sizeof("telu")];
- char unicode_prop_name_pool_str2229[sizeof("inbuginese")];
- char unicode_prop_name_pool_str2232[sizeof("idstrinaryoperator")];
- char unicode_prop_name_pool_str2233[sizeof("tirhuta")];
- char unicode_prop_name_pool_str2238[sizeof("oldturkic")];
- char unicode_prop_name_pool_str2245[sizeof("incombiningdiacriticalmarks")];
- char unicode_prop_name_pool_str2249[sizeof("phagspa")];
- char unicode_prop_name_pool_str2255[sizeof("incombiningdiacriticalmarksforsymbols")];
- char unicode_prop_name_pool_str2258[sizeof("changeswhencasemapped")];
- char unicode_prop_name_pool_str2259[sizeof("inlatin1supplement")];
- char unicode_prop_name_pool_str2261[sizeof("inbrahmi")];
- char unicode_prop_name_pool_str2263[sizeof("hang")];
- char unicode_prop_name_pool_str2264[sizeof("nchar")];
- char unicode_prop_name_pool_str2286[sizeof("oldsogdian")];
- char unicode_prop_name_pool_str2299[sizeof("deva")];
- char unicode_prop_name_pool_str2301[sizeof("ingujarati")];
- char unicode_prop_name_pool_str2305[sizeof("otherlowercase")];
- char unicode_prop_name_pool_str2311[sizeof("ingunjalagondi")];
- char unicode_prop_name_pool_str2315[sizeof("devanagari")];
- char unicode_prop_name_pool_str2319[sizeof("syrc")];
- char unicode_prop_name_pool_str2325[sizeof("mahj")];
- char unicode_prop_name_pool_str2330[sizeof("hiragana")];
- char unicode_prop_name_pool_str2333[sizeof("orya")];
- char unicode_prop_name_pool_str2336[sizeof("mahajani")];
- char unicode_prop_name_pool_str2341[sizeof("incurrencysymbols")];
- char unicode_prop_name_pool_str2342[sizeof("spaceseparator")];
- char unicode_prop_name_pool_str2347[sizeof("otherletter")];
- char unicode_prop_name_pool_str2348[sizeof("inlinearbsyllabary")];
- char unicode_prop_name_pool_str2351[sizeof("inrejang")];
- char unicode_prop_name_pool_str2352[sizeof("hmng")];
- char unicode_prop_name_pool_str2357[sizeof("ogrext")];
- char unicode_prop_name_pool_str2376[sizeof("inaegeannumbers")];
- char unicode_prop_name_pool_str2389[sizeof("changeswhentitlecased")];
- char unicode_prop_name_pool_str2409[sizeof("zp")];
- char unicode_prop_name_pool_str2411[sizeof("mathsymbol")];
- char unicode_prop_name_pool_str2414[sizeof("khoj")];
- char unicode_prop_name_pool_str2419[sizeof("incombiningdiacriticalmarkssupplement")];
- char unicode_prop_name_pool_str2421[sizeof("warangciti")];
- char unicode_prop_name_pool_str2428[sizeof("syriac")];
- char unicode_prop_name_pool_str2429[sizeof("finalpunctuation")];
- char unicode_prop_name_pool_str2437[sizeof("othersymbol")];
- char unicode_prop_name_pool_str2444[sizeof("currencysymbol")];
- char unicode_prop_name_pool_str2445[sizeof("digit")];
- char unicode_prop_name_pool_str2449[sizeof("emojipresentation")];
- char unicode_prop_name_pool_str2455[sizeof("inpsalterpahlavi")];
- char unicode_prop_name_pool_str2456[sizeof("softdotted")];
- char unicode_prop_name_pool_str2460[sizeof("phlp")];
- char unicode_prop_name_pool_str2461[sizeof("noncharactercodepoint")];
- char unicode_prop_name_pool_str2464[sizeof("inlimbu")];
- char unicode_prop_name_pool_str2465[sizeof("nonspacingmark")];
- char unicode_prop_name_pool_str2467[sizeof("omath")];
- char unicode_prop_name_pool_str2473[sizeof("cyrillic")];
- char unicode_prop_name_pool_str2476[sizeof("inenclosedcjklettersandmonths")];
- char unicode_prop_name_pool_str2482[sizeof("tangut")];
- char unicode_prop_name_pool_str2484[sizeof("changeswhenlowercased")];
- char unicode_prop_name_pool_str2496[sizeof("inalphabeticpresentationforms")];
- char unicode_prop_name_pool_str2500[sizeof("intangutcomponents")];
- char unicode_prop_name_pool_str2503[sizeof("incombiningdiacriticalmarksextended")];
- char unicode_prop_name_pool_str2508[sizeof("ogham")];
- char unicode_prop_name_pool_str2518[sizeof("osmanya")];
- char unicode_prop_name_pool_str2521[sizeof("intagbanwa")];
- char unicode_prop_name_pool_str2525[sizeof("inprivateusearea")];
- char unicode_prop_name_pool_str2529[sizeof("inpaucinhau")];
- char unicode_prop_name_pool_str2532[sizeof("otheruppercase")];
- char unicode_prop_name_pool_str2533[sizeof("sylo")];
- char unicode_prop_name_pool_str2537[sizeof("elba")];
- char unicode_prop_name_pool_str2553[sizeof("paragraphseparator")];
- char unicode_prop_name_pool_str2554[sizeof("inbassavah")];
- char unicode_prop_name_pool_str2559[sizeof("otheridstart")];
- char unicode_prop_name_pool_str2567[sizeof("signwriting")];
- char unicode_prop_name_pool_str2576[sizeof("rjng")];
- char unicode_prop_name_pool_str2584[sizeof("whitespace")];
- char unicode_prop_name_pool_str2585[sizeof("incjkunifiedideographsextensionb")];
- char unicode_prop_name_pool_str2586[sizeof("inletterlikesymbols")];
- char unicode_prop_name_pool_str2623[sizeof("buhid")];
- char unicode_prop_name_pool_str2642[sizeof("oupper")];
- char unicode_prop_name_pool_str2644[sizeof("bassavah")];
- char unicode_prop_name_pool_str2647[sizeof("inhebrew")];
- char unicode_prop_name_pool_str2653[sizeof("narb")];
- char unicode_prop_name_pool_str2659[sizeof("inbuhid")];
- char unicode_prop_name_pool_str2662[sizeof("inbopomofo")];
- char unicode_prop_name_pool_str2692[sizeof("elbasan")];
- char unicode_prop_name_pool_str2700[sizeof("incombininghalfmarks")];
- char unicode_prop_name_pool_str2707[sizeof("inindicsiyaqnumbers")];
- char unicode_prop_name_pool_str2711[sizeof("changeswhenuppercased")];
- char unicode_prop_name_pool_str2743[sizeof("inmathematicaloperators")];
- char unicode_prop_name_pool_str2745[sizeof("inarabicmathematicalalphabeticsymbols")];
- char unicode_prop_name_pool_str2764[sizeof("hluw")];
- char unicode_prop_name_pool_str2770[sizeof("hexdigit")];
- char unicode_prop_name_pool_str2771[sizeof("deprecated")];
- char unicode_prop_name_pool_str2776[sizeof("insuperscriptsandsubscripts")];
- char unicode_prop_name_pool_str2777[sizeof("nshu")];
- char unicode_prop_name_pool_str2782[sizeof("injavanese")];
- char unicode_prop_name_pool_str2790[sizeof("inbamumsupplement")];
- char unicode_prop_name_pool_str2798[sizeof("hangul")];
- char unicode_prop_name_pool_str2826[sizeof("unifiedideograph")];
- char unicode_prop_name_pool_str2831[sizeof("tavt")];
- char unicode_prop_name_pool_str2843[sizeof("othermath")];
- char unicode_prop_name_pool_str2849[sizeof("pahawhhmong")];
- char unicode_prop_name_pool_str2850[sizeof("sylotinagri")];
- char unicode_prop_name_pool_str2853[sizeof("hung")];
- char unicode_prop_name_pool_str2856[sizeof("kayahli")];
- char unicode_prop_name_pool_str2861[sizeof("inpahawhhmong")];
- char unicode_prop_name_pool_str2863[sizeof("upper")];
- char unicode_prop_name_pool_str2884[sizeof("inalchemicalsymbols")];
- char unicode_prop_name_pool_str2907[sizeof("nbat")];
- char unicode_prop_name_pool_str2915[sizeof("nabataean")];
- char unicode_prop_name_pool_str2929[sizeof("uppercase")];
- char unicode_prop_name_pool_str2937[sizeof("hebr")];
- char unicode_prop_name_pool_str2947[sizeof("inmahjongtiles")];
- char unicode_prop_name_pool_str2954[sizeof("oldnortharabian")];
- char unicode_prop_name_pool_str2963[sizeof("inarabicsupplement")];
- char unicode_prop_name_pool_str2968[sizeof("tibt")];
- char unicode_prop_name_pool_str2974[sizeof("tibetan")];
- char unicode_prop_name_pool_str2975[sizeof("inhighprivateusesurrogates")];
- char unicode_prop_name_pool_str2976[sizeof("insupplementalarrowsa")];
- char unicode_prop_name_pool_str2977[sizeof("inarabicpresentationformsb")];
- char unicode_prop_name_pool_str2986[sizeof("otherdefaultignorablecodepoint")];
- char unicode_prop_name_pool_str2987[sizeof("symbol")];
- char unicode_prop_name_pool_str3012[sizeof("inplayingcards")];
- char unicode_prop_name_pool_str3013[sizeof("inhalfwidthandfullwidthforms")];
- char unicode_prop_name_pool_str3052[sizeof("wspace")];
- char unicode_prop_name_pool_str3071[sizeof("tfng")];
- char unicode_prop_name_pool_str3080[sizeof("insupplementalmathematicaloperators")];
- char unicode_prop_name_pool_str3083[sizeof("insupplementalarrowsc")];
- char unicode_prop_name_pool_str3084[sizeof("inhanguljamoextendedb")];
- char unicode_prop_name_pool_str3112[sizeof("aghb")];
- char unicode_prop_name_pool_str3120[sizeof("cypriot")];
- char unicode_prop_name_pool_str3127[sizeof("nushu")];
- char unicode_prop_name_pool_str3130[sizeof("tifinagh")];
- char unicode_prop_name_pool_str3139[sizeof("otherpunctuation")];
- char unicode_prop_name_pool_str3177[sizeof("alphabetic")];
- char unicode_prop_name_pool_str3184[sizeof("dupl")];
- char unicode_prop_name_pool_str3190[sizeof("tglg")];
- char unicode_prop_name_pool_str3193[sizeof("changeswhencasefolded")];
- char unicode_prop_name_pool_str3210[sizeof("tagalog")];
- char unicode_prop_name_pool_str3228[sizeof("modifiersymbol")];
- char unicode_prop_name_pool_str3231[sizeof("any")];
- char unicode_prop_name_pool_str3239[sizeof("inglagoliticsupplement")];
- char unicode_prop_name_pool_str3262[sizeof("ethiopic")];
- char unicode_prop_name_pool_str3293[sizeof("uppercaseletter")];
- char unicode_prop_name_pool_str3297[sizeof("dashpunctuation")];
- char unicode_prop_name_pool_str3304[sizeof("hanifirohingya")];
- char unicode_prop_name_pool_str3328[sizeof("inyijinghexagramsymbols")];
- char unicode_prop_name_pool_str3337[sizeof("incypriotsyllabary")];
- char unicode_prop_name_pool_str3375[sizeof("rejang")];
- char unicode_prop_name_pool_str3426[sizeof("defaultignorablecodepoint")];
- char unicode_prop_name_pool_str3431[sizeof("tagb")];
- char unicode_prop_name_pool_str3447[sizeof("dep")];
- char unicode_prop_name_pool_str3471[sizeof("inyisyllables")];
- char unicode_prop_name_pool_str3485[sizeof("oldsoutharabian")];
- char unicode_prop_name_pool_str3504[sizeof("inlatinextendedb")];
- char unicode_prop_name_pool_str3514[sizeof("insupplementalpunctuation")];
- char unicode_prop_name_pool_str3517[sizeof("othergraphemeextend")];
- char unicode_prop_name_pool_str3562[sizeof("hebrew")];
- char unicode_prop_name_pool_str3564[sizeof("inboxdrawing")];
- char unicode_prop_name_pool_str3570[sizeof("inhighsurrogates")];
- char unicode_prop_name_pool_str3603[sizeof("telugu")];
- char unicode_prop_name_pool_str3623[sizeof("inbopomofoextended")];
- char unicode_prop_name_pool_str3666[sizeof("soyombo")];
- char unicode_prop_name_pool_str3764[sizeof("inegyptianhieroglyphs")];
- char unicode_prop_name_pool_str4052[sizeof("openpunctuation")];
- char unicode_prop_name_pool_str4129[sizeof("insupplementaryprivateuseareaa")];
- char unicode_prop_name_pool_str4261[sizeof("hyphen")];
- char unicode_prop_name_pool_str4277[sizeof("inhangulcompatibilityjamo")];
- char unicode_prop_name_pool_str4332[sizeof("egyp")];
- char unicode_prop_name_pool_str4363[sizeof("insupplementalarrowsb")];
- char unicode_prop_name_pool_str4404[sizeof("duployan")];
- char unicode_prop_name_pool_str4639[sizeof("insupplementalsymbolsandpictographs")];
- char unicode_prop_name_pool_str4682[sizeof("zyyy")];
- char unicode_prop_name_pool_str5231[sizeof("egyptianhieroglyphs")];
- char unicode_prop_name_pool_str5516[sizeof("insupplementaryprivateuseareab")];
+ char unicode_prop_name_pool_str120[sizeof("m")];
+ char unicode_prop_name_pool_str133[sizeof("gonm")];
+ char unicode_prop_name_pool_str134[sizeof("cakm")];
+ char unicode_prop_name_pool_str139[sizeof("inosmanya")];
+ char unicode_prop_name_pool_str142[sizeof("inmanichaean")];
+ char unicode_prop_name_pool_str146[sizeof("inarmenian")];
+ char unicode_prop_name_pool_str151[sizeof("inmro")];
+ char unicode_prop_name_pool_str152[sizeof("inmiao")];
+ char unicode_prop_name_pool_str156[sizeof("c")];
+ char unicode_prop_name_pool_str163[sizeof("inchakma")];
+ char unicode_prop_name_pool_str166[sizeof("common")];
+ char unicode_prop_name_pool_str169[sizeof("mandaic")];
+ char unicode_prop_name_pool_str182[sizeof("inmyanmar")];
+ char unicode_prop_name_pool_str187[sizeof("inmakasar")];
+ char unicode_prop_name_pool_str192[sizeof("qaai")];
+ char unicode_prop_name_pool_str200[sizeof("inideographicsymbolsandpunctuation")];
+ char unicode_prop_name_pool_str204[sizeof("inkhmer")];
+ char unicode_prop_name_pool_str207[sizeof("cans")];
+ char unicode_prop_name_pool_str209[sizeof("prependedconcatenationmark")];
+ char unicode_prop_name_pool_str211[sizeof("lm")];
+ char unicode_prop_name_pool_str212[sizeof("marc")];
+ char unicode_prop_name_pool_str219[sizeof("connectorpunctuation")];
+ char unicode_prop_name_pool_str220[sizeof("inrunic")];
+ char unicode_prop_name_pool_str221[sizeof("incarian")];
+ char unicode_prop_name_pool_str223[sizeof("inavestan")];
+ char unicode_prop_name_pool_str225[sizeof("combiningmark")];
+ char unicode_prop_name_pool_str226[sizeof("incuneiformnumbersandpunctuation")];
+ char unicode_prop_name_pool_str231[sizeof("merc")];
+ char unicode_prop_name_pool_str238[sizeof("perm")];
+ char unicode_prop_name_pool_str239[sizeof("inahom")];
+ char unicode_prop_name_pool_str240[sizeof("inipaextensions")];
+ char unicode_prop_name_pool_str251[sizeof("incherokee")];
+ char unicode_prop_name_pool_str257[sizeof("insharada")];
+ char unicode_prop_name_pool_str268[sizeof("makasar")];
+ char unicode_prop_name_pool_str272[sizeof("inarrows")];
+ char unicode_prop_name_pool_str277[sizeof("lc")];
+ char unicode_prop_name_pool_str279[sizeof("masaramgondi")];
+ char unicode_prop_name_pool_str283[sizeof("incuneiform")];
+ char unicode_prop_name_pool_str290[sizeof("mc")];
+ char unicode_prop_name_pool_str293[sizeof("cc")];
+ char unicode_prop_name_pool_str295[sizeof("inzanabazarsquare")];
+ char unicode_prop_name_pool_str298[sizeof("lineseparator")];
+ char unicode_prop_name_pool_str302[sizeof("armn")];
+ char unicode_prop_name_pool_str305[sizeof("qmark")];
+ char unicode_prop_name_pool_str306[sizeof("armi")];
+ char unicode_prop_name_pool_str309[sizeof("insamaritan")];
+ char unicode_prop_name_pool_str316[sizeof("armenian")];
+ char unicode_prop_name_pool_str318[sizeof("inmarchen")];
+ char unicode_prop_name_pool_str319[sizeof("inmasaramgondi")];
+ char unicode_prop_name_pool_str321[sizeof("qaac")];
+ char unicode_prop_name_pool_str330[sizeof("pc")];
+ char unicode_prop_name_pool_str335[sizeof("inscriptionalparthian")];
+ char unicode_prop_name_pool_str336[sizeof("latn")];
+ char unicode_prop_name_pool_str340[sizeof("latin")];
+ char unicode_prop_name_pool_str342[sizeof("ri")];
+ char unicode_prop_name_pool_str345[sizeof("inthaana")];
+ char unicode_prop_name_pool_str352[sizeof("inkhmersymbols")];
+ char unicode_prop_name_pool_str355[sizeof("inkatakana")];
+ char unicode_prop_name_pool_str356[sizeof("incyrillic")];
+ char unicode_prop_name_pool_str357[sizeof("inthai")];
+ char unicode_prop_name_pool_str359[sizeof("incham")];
+ char unicode_prop_name_pool_str367[sizeof("inkaithi")];
+ char unicode_prop_name_pool_str369[sizeof("zs")];
+ char unicode_prop_name_pool_str372[sizeof("mtei")];
+ char unicode_prop_name_pool_str375[sizeof("vai")];
+ char unicode_prop_name_pool_str376[sizeof("vaii")];
+ char unicode_prop_name_pool_str379[sizeof("initialpunctuation")];
+ char unicode_prop_name_pool_str383[sizeof("cs")];
+ char unicode_prop_name_pool_str399[sizeof("insyriac")];
+ char unicode_prop_name_pool_str401[sizeof("pcm")];
+ char unicode_prop_name_pool_str415[sizeof("intakri")];
+ char unicode_prop_name_pool_str417[sizeof("mand")];
+ char unicode_prop_name_pool_str419[sizeof("l")];
+ char unicode_prop_name_pool_str420[sizeof("ps")];
+ char unicode_prop_name_pool_str427[sizeof("dia")];
+ char unicode_prop_name_pool_str431[sizeof("inkanaextendeda")];
+ char unicode_prop_name_pool_str433[sizeof("di")];
+ char unicode_prop_name_pool_str436[sizeof("mend")];
+ char unicode_prop_name_pool_str437[sizeof("modi")];
+ char unicode_prop_name_pool_str441[sizeof("ideo")];
+ char unicode_prop_name_pool_str445[sizeof("katakana")];
+ char unicode_prop_name_pool_str449[sizeof("prti")];
+ char unicode_prop_name_pool_str456[sizeof("inideographicdescriptioncharacters")];
+ char unicode_prop_name_pool_str457[sizeof("inlineara")];
+ char unicode_prop_name_pool_str458[sizeof("xidcontinue")];
+ char unicode_prop_name_pool_str461[sizeof("brai")];
+ char unicode_prop_name_pool_str463[sizeof("inlao")];
+ char unicode_prop_name_pool_str472[sizeof("ascii")];
+ char unicode_prop_name_pool_str474[sizeof("privateuse")];
+ char unicode_prop_name_pool_str477[sizeof("arabic")];
+ char unicode_prop_name_pool_str478[sizeof("mongolian")];
+ char unicode_prop_name_pool_str480[sizeof("inmyanmarextendeda")];
+ char unicode_prop_name_pool_str481[sizeof("inruminumeralsymbols")];
+ char unicode_prop_name_pool_str485[sizeof("letter")];
+ char unicode_prop_name_pool_str487[sizeof("innandinagari")];
+ char unicode_prop_name_pool_str499[sizeof("inmeeteimayek")];
+ char unicode_prop_name_pool_str500[sizeof("inoldnortharabian")];
+ char unicode_prop_name_pool_str503[sizeof("grlink")];
+ char unicode_prop_name_pool_str504[sizeof("knda")];
+ char unicode_prop_name_pool_str507[sizeof("kannada")];
+ char unicode_prop_name_pool_str509[sizeof("incjkcompatibilityforms")];
+ char unicode_prop_name_pool_str514[sizeof("incjkcompatibilityideographs")];
+ char unicode_prop_name_pool_str528[sizeof("inmodi")];
+ char unicode_prop_name_pool_str529[sizeof("kali")];
+ char unicode_prop_name_pool_str532[sizeof("control")];
+ char unicode_prop_name_pool_str536[sizeof("inadlam")];
+ char unicode_prop_name_pool_str538[sizeof("inspecials")];
+ char unicode_prop_name_pool_str540[sizeof("inmendekikakui")];
+ char unicode_prop_name_pool_str545[sizeof("intransportandmapsymbols")];
+ char unicode_prop_name_pool_str547[sizeof("letternumber")];
+ char unicode_prop_name_pool_str549[sizeof("xidc")];
+ char unicode_prop_name_pool_str550[sizeof("inmedefaidrin")];
+ char unicode_prop_name_pool_str558[sizeof("inchesssymbols")];
+ char unicode_prop_name_pool_str564[sizeof("inemoticons")];
+ char unicode_prop_name_pool_str573[sizeof("brahmi")];
+ char unicode_prop_name_pool_str575[sizeof("inolditalic")];
+ char unicode_prop_name_pool_str578[sizeof("palm")];
+ char unicode_prop_name_pool_str580[sizeof("inlycian")];
+ char unicode_prop_name_pool_str588[sizeof("inmiscellaneousmathematicalsymbolsa")];
+ char unicode_prop_name_pool_str594[sizeof("xids")];
+ char unicode_prop_name_pool_str603[sizeof("psalterpahlavi")];
+ char unicode_prop_name_pool_str619[sizeof("insundanese")];
+ char unicode_prop_name_pool_str620[sizeof("inoldsogdian")];
+ char unicode_prop_name_pool_str632[sizeof("diacritic")];
+ char unicode_prop_name_pool_str634[sizeof("gothic")];
+ char unicode_prop_name_pool_str635[sizeof("inancientsymbols")];
+ char unicode_prop_name_pool_str639[sizeof("meroiticcursive")];
+ char unicode_prop_name_pool_str643[sizeof("inmalayalam")];
+ char unicode_prop_name_pool_str648[sizeof("patternwhitespace")];
+ char unicode_prop_name_pool_str649[sizeof("sk")];
+ char unicode_prop_name_pool_str652[sizeof("insmallkanaextension")];
+ char unicode_prop_name_pool_str656[sizeof("inmandaic")];
+ char unicode_prop_name_pool_str657[sizeof("lt")];
+ char unicode_prop_name_pool_str665[sizeof("so")];
+ char unicode_prop_name_pool_str666[sizeof("inlinearbideograms")];
+ char unicode_prop_name_pool_str668[sizeof("incommonindicnumberforms")];
+ char unicode_prop_name_pool_str669[sizeof("incjkcompatibilityideographssupplement")];
+ char unicode_prop_name_pool_str677[sizeof("idc")];
+ char unicode_prop_name_pool_str678[sizeof("inoldsoutharabian")];
+ char unicode_prop_name_pool_str699[sizeof("insylotinagri")];
+ char unicode_prop_name_pool_str701[sizeof("idsbinaryoperator")];
+ char unicode_prop_name_pool_str707[sizeof("sora")];
+ char unicode_prop_name_pool_str708[sizeof("bamum")];
+ char unicode_prop_name_pool_str709[sizeof("inkanasupplement")];
+ char unicode_prop_name_pool_str710[sizeof("incjkstrokes")];
+ char unicode_prop_name_pool_str715[sizeof("joinc")];
+ char unicode_prop_name_pool_str718[sizeof("inopticalcharacterrecognition")];
+ char unicode_prop_name_pool_str722[sizeof("vs")];
+ char unicode_prop_name_pool_str728[sizeof("indominotiles")];
+ char unicode_prop_name_pool_str732[sizeof("batk")];
+ char unicode_prop_name_pool_str739[sizeof("grext")];
+ char unicode_prop_name_pool_str741[sizeof("batak")];
+ char unicode_prop_name_pool_str749[sizeof("patws")];
+ char unicode_prop_name_pool_str752[sizeof("inmodifiertoneletters")];
+ char unicode_prop_name_pool_str753[sizeof("ital")];
+ char unicode_prop_name_pool_str760[sizeof("bass")];
+ char unicode_prop_name_pool_str763[sizeof("decimalnumber")];
+ char unicode_prop_name_pool_str765[sizeof("alnum")];
+ char unicode_prop_name_pool_str767[sizeof("ids")];
+ char unicode_prop_name_pool_str776[sizeof("print")];
+ char unicode_prop_name_pool_str778[sizeof("inlatinextendeda")];
+ char unicode_prop_name_pool_str782[sizeof("intaitham")];
+ char unicode_prop_name_pool_str783[sizeof("inmusicalsymbols")];
+ char unicode_prop_name_pool_str785[sizeof("intaile")];
+ char unicode_prop_name_pool_str794[sizeof("samr")];
+ char unicode_prop_name_pool_str809[sizeof("samaritan")];
+ char unicode_prop_name_pool_str813[sizeof("s")];
+ char unicode_prop_name_pool_str816[sizeof("inlatinextendede")];
+ char unicode_prop_name_pool_str820[sizeof("bali")];
+ char unicode_prop_name_pool_str826[sizeof("lisu")];
+ char unicode_prop_name_pool_str827[sizeof("pauc")];
+ char unicode_prop_name_pool_str828[sizeof("patternsyntax")];
+ char unicode_prop_name_pool_str829[sizeof("incontrolpictures")];
+ char unicode_prop_name_pool_str830[sizeof("blank")];
+ char unicode_prop_name_pool_str834[sizeof("inmiscellaneoussymbols")];
+ char unicode_prop_name_pool_str835[sizeof("ll")];
+ char unicode_prop_name_pool_str836[sizeof("inancientgreekmusicalnotation")];
+ char unicode_prop_name_pool_str837[sizeof("zl")];
+ char unicode_prop_name_pool_str838[sizeof("inlydian")];
+ char unicode_prop_name_pool_str839[sizeof("sm")];
+ char unicode_prop_name_pool_str843[sizeof("inmiscellaneoussymbolsandarrows")];
+ char unicode_prop_name_pool_str844[sizeof("inugaritic")];
+ char unicode_prop_name_pool_str845[sizeof("bengali")];
+ char unicode_prop_name_pool_str846[sizeof("pd")];
+ char unicode_prop_name_pool_str848[sizeof("inmiscellaneoussymbolsandpictographs")];
+ char unicode_prop_name_pool_str850[sizeof("medf")];
+ char unicode_prop_name_pool_str855[sizeof("cf")];
+ char unicode_prop_name_pool_str858[sizeof("balinese")];
+ char unicode_prop_name_pool_str860[sizeof("medefaidrin")];
+ char unicode_prop_name_pool_str865[sizeof("han")];
+ char unicode_prop_name_pool_str869[sizeof("intamil")];
+ char unicode_prop_name_pool_str870[sizeof("hani")];
+ char unicode_prop_name_pool_str871[sizeof("inmultani")];
+ char unicode_prop_name_pool_str879[sizeof("hano")];
+ char unicode_prop_name_pool_str887[sizeof("inshorthandformatcontrols")];
+ char unicode_prop_name_pool_str891[sizeof("insaurashtra")];
+ char unicode_prop_name_pool_str892[sizeof("pf")];
+ char unicode_prop_name_pool_str894[sizeof("inoldturkic")];
+ char unicode_prop_name_pool_str896[sizeof("idcontinue")];
+ char unicode_prop_name_pool_str901[sizeof("hanunoo")];
+ char unicode_prop_name_pool_str905[sizeof("sc")];
+ char unicode_prop_name_pool_str906[sizeof("inkhojki")];
+ char unicode_prop_name_pool_str913[sizeof("idst")];
+ char unicode_prop_name_pool_str915[sizeof("canadianaboriginal")];
+ char unicode_prop_name_pool_str923[sizeof("hira")];
+ char unicode_prop_name_pool_str925[sizeof("plrd")];
+ char unicode_prop_name_pool_str939[sizeof("incaucasianalbanian")];
+ char unicode_prop_name_pool_str940[sizeof("indeseret")];
+ char unicode_prop_name_pool_str945[sizeof("inearlydynasticcuneiform")];
+ char unicode_prop_name_pool_str946[sizeof("inspacingmodifierletters")];
+ char unicode_prop_name_pool_str950[sizeof("innewa")];
+ char unicode_prop_name_pool_str972[sizeof("idstart")];
+ char unicode_prop_name_pool_str977[sizeof("zinh")];
+ char unicode_prop_name_pool_str981[sizeof("incyrillicextendeda")];
+ char unicode_prop_name_pool_str984[sizeof("dsrt")];
+ char unicode_prop_name_pool_str993[sizeof("cased")];
+ char unicode_prop_name_pool_str999[sizeof("glagolitic")];
+ char unicode_prop_name_pool_str1002[sizeof("inhanifirohingya")];
+ char unicode_prop_name_pool_str1006[sizeof("inancientgreeknumbers")];
+ char unicode_prop_name_pool_str1008[sizeof("inmeeteimayekextensions")];
+ char unicode_prop_name_pool_str1009[sizeof("intaixuanjingsymbols")];
+ char unicode_prop_name_pool_str1016[sizeof("joincontrol")];
+ char unicode_prop_name_pool_str1020[sizeof("runr")];
+ char unicode_prop_name_pool_str1023[sizeof("inwarangciti")];
+ char unicode_prop_name_pool_str1025[sizeof("deseret")];
+ char unicode_prop_name_pool_str1035[sizeof("inhiragana")];
+ char unicode_prop_name_pool_str1039[sizeof("sind")];
+ char unicode_prop_name_pool_str1047[sizeof("cherokee")];
+ char unicode_prop_name_pool_str1050[sizeof("inlatinextendedc")];
+ char unicode_prop_name_pool_str1052[sizeof("adlm")];
+ char unicode_prop_name_pool_str1053[sizeof("phoenician")];
+ char unicode_prop_name_pool_str1056[sizeof("cher")];
+ char unicode_prop_name_pool_str1059[sizeof("marchen")];
+ char unicode_prop_name_pool_str1062[sizeof("inkhudawadi")];
+ char unicode_prop_name_pool_str1063[sizeof("sinhala")];
+ char unicode_prop_name_pool_str1066[sizeof("lower")];
+ char unicode_prop_name_pool_str1068[sizeof("graphemelink")];
+ char unicode_prop_name_pool_str1069[sizeof("xidstart")];
+ char unicode_prop_name_pool_str1071[sizeof("ingrantha")];
+ char unicode_prop_name_pool_str1072[sizeof("bidic")];
+ char unicode_prop_name_pool_str1074[sizeof("xdigit")];
+ char unicode_prop_name_pool_str1076[sizeof("casedletter")];
+ char unicode_prop_name_pool_str1078[sizeof("gong")];
+ char unicode_prop_name_pool_str1079[sizeof("multani")];
+ char unicode_prop_name_pool_str1082[sizeof("gunjalagondi")];
+ char unicode_prop_name_pool_str1084[sizeof("cham")];
+ char unicode_prop_name_pool_str1086[sizeof("chakma")];
+ char unicode_prop_name_pool_str1087[sizeof("mong")];
+ char unicode_prop_name_pool_str1088[sizeof("kaithi")];
+ char unicode_prop_name_pool_str1089[sizeof("inmahajani")];
+ char unicode_prop_name_pool_str1090[sizeof("graphemebase")];
+ char unicode_prop_name_pool_str1092[sizeof("insiddham")];
+ char unicode_prop_name_pool_str1095[sizeof("inogham")];
+ char unicode_prop_name_pool_str1101[sizeof("inosage")];
+ char unicode_prop_name_pool_str1102[sizeof("incountingrodnumerals")];
+ char unicode_prop_name_pool_str1104[sizeof("inwancho")];
+ char unicode_prop_name_pool_str1105[sizeof("khojki")];
+ char unicode_prop_name_pool_str1107[sizeof("ingeneralpunctuation")];
+ char unicode_prop_name_pool_str1108[sizeof("georgian")];
+ char unicode_prop_name_pool_str1117[sizeof("incyrillicextendedc")];
+ char unicode_prop_name_pool_str1118[sizeof("inkayahli")];
+ char unicode_prop_name_pool_str1121[sizeof("khar")];
+ char unicode_prop_name_pool_str1124[sizeof("inoriya")];
+ char unicode_prop_name_pool_str1126[sizeof("manichaean")];
+ char unicode_prop_name_pool_str1132[sizeof("bamu")];
+ char unicode_prop_name_pool_str1133[sizeof("zanb")];
+ char unicode_prop_name_pool_str1136[sizeof("oriya")];
+ char unicode_prop_name_pool_str1137[sizeof("inolchiki")];
+ char unicode_prop_name_pool_str1138[sizeof("linb")];
+ char unicode_prop_name_pool_str1141[sizeof("inethiopic")];
+ char unicode_prop_name_pool_str1143[sizeof("wara")];
+ char unicode_prop_name_pool_str1144[sizeof("ingeorgian")];
+ char unicode_prop_name_pool_str1149[sizeof("innabataean")];
+ char unicode_prop_name_pool_str1154[sizeof("inkanbun")];
+ char unicode_prop_name_pool_str1156[sizeof("adlam")];
+ char unicode_prop_name_pool_str1157[sizeof("inbhaiksuki")];
+ char unicode_prop_name_pool_str1162[sizeof("insinhala")];
+ char unicode_prop_name_pool_str1163[sizeof("inelbasan")];
+ char unicode_prop_name_pool_str1169[sizeof("lowercase")];
+ char unicode_prop_name_pool_str1178[sizeof("takri")];
+ char unicode_prop_name_pool_str1179[sizeof("inmongolian")];
+ char unicode_prop_name_pool_str1181[sizeof("invai")];
+ char unicode_prop_name_pool_str1182[sizeof("xsux")];
+ char unicode_prop_name_pool_str1183[sizeof("cntrl")];
+ char unicode_prop_name_pool_str1186[sizeof("emoji")];
+ char unicode_prop_name_pool_str1187[sizeof("sterm")];
+ char unicode_prop_name_pool_str1189[sizeof("cuneiform")];
+ char unicode_prop_name_pool_str1192[sizeof("cwcm")];
+ char unicode_prop_name_pool_str1194[sizeof("hatran")];
+ char unicode_prop_name_pool_str1197[sizeof("linearb")];
+ char unicode_prop_name_pool_str1201[sizeof("taile")];
+ char unicode_prop_name_pool_str1202[sizeof("inlatinextendedadditional")];
+ char unicode_prop_name_pool_str1203[sizeof("inenclosedalphanumerics")];
+ char unicode_prop_name_pool_str1205[sizeof("anatolianhieroglyphs")];
+ char unicode_prop_name_pool_str1206[sizeof("incyrillicsupplement")];
+ char unicode_prop_name_pool_str1208[sizeof("intamilsupplement")];
+ char unicode_prop_name_pool_str1215[sizeof("inmiscellaneoustechnical")];
+ char unicode_prop_name_pool_str1217[sizeof("ahom")];
+ char unicode_prop_name_pool_str1218[sizeof("incherokeesupplement")];
+ char unicode_prop_name_pool_str1219[sizeof("takr")];
+ char unicode_prop_name_pool_str1224[sizeof("khmr")];
+ char unicode_prop_name_pool_str1228[sizeof("incjkunifiedideographsextensiona")];
+ char unicode_prop_name_pool_str1231[sizeof("quotationmark")];
+ char unicode_prop_name_pool_str1233[sizeof("lyci")];
+ char unicode_prop_name_pool_str1234[sizeof("lycian")];
+ char unicode_prop_name_pool_str1235[sizeof("ingurmukhi")];
+ char unicode_prop_name_pool_str1237[sizeof("runic")];
+ char unicode_prop_name_pool_str1238[sizeof("limb")];
+ char unicode_prop_name_pool_str1240[sizeof("inscriptionalpahlavi")];
+ char unicode_prop_name_pool_str1242[sizeof("hatr")];
+ char unicode_prop_name_pool_str1244[sizeof("variationselector")];
+ char unicode_prop_name_pool_str1246[sizeof("modifierletter")];
+ char unicode_prop_name_pool_str1247[sizeof("incjkunifiedideographsextensione")];
+ char unicode_prop_name_pool_str1262[sizeof("mymr")];
+ char unicode_prop_name_pool_str1265[sizeof("myanmar")];
+ char unicode_prop_name_pool_str1267[sizeof("lu")];
+ char unicode_prop_name_pool_str1275[sizeof("kharoshthi")];
+ char unicode_prop_name_pool_str1276[sizeof("inarabic")];
+ char unicode_prop_name_pool_str1278[sizeof("radical")];
+ char unicode_prop_name_pool_str1281[sizeof("khmer")];
+ char unicode_prop_name_pool_str1286[sizeof("inunifiedcanadianaboriginalsyllabics")];
+ char unicode_prop_name_pool_str1292[sizeof("osage")];
+ char unicode_prop_name_pool_str1296[sizeof("sundanese")];
+ char unicode_prop_name_pool_str1300[sizeof("innewtailue")];
+ char unicode_prop_name_pool_str1302[sizeof("logicalorderexception")];
+ char unicode_prop_name_pool_str1304[sizeof("math")];
+ char unicode_prop_name_pool_str1306[sizeof("braille")];
+ char unicode_prop_name_pool_str1311[sizeof("goth")];
+ char unicode_prop_name_pool_str1312[sizeof("insorasompeng")];
+ char unicode_prop_name_pool_str1316[sizeof("insoyombo")];
+ char unicode_prop_name_pool_str1317[sizeof("arab")];
+ char unicode_prop_name_pool_str1322[sizeof("saur")];
+ char unicode_prop_name_pool_str1329[sizeof("guru")];
+ char unicode_prop_name_pool_str1333[sizeof("term")];
+ char unicode_prop_name_pool_str1337[sizeof("paucinhau")];
+ char unicode_prop_name_pool_str1338[sizeof("inbasiclatin")];
+ char unicode_prop_name_pool_str1339[sizeof("inarabicpresentationformsa")];
+ char unicode_prop_name_pool_str1347[sizeof("punct")];
+ char unicode_prop_name_pool_str1348[sizeof("gurmukhi")];
+ char unicode_prop_name_pool_str1354[sizeof("grantha")];
+ char unicode_prop_name_pool_str1355[sizeof("inshavian")];
+ char unicode_prop_name_pool_str1356[sizeof("osma")];
+ char unicode_prop_name_pool_str1357[sizeof("inenclosedalphanumericsupplement")];
+ char unicode_prop_name_pool_str1360[sizeof("intirhuta")];
+ char unicode_prop_name_pool_str1361[sizeof("inelymaic")];
+ char unicode_prop_name_pool_str1362[sizeof("inhatran")];
+ char unicode_prop_name_pool_str1364[sizeof("incjkunifiedideographsextensionc")];
+ char unicode_prop_name_pool_str1365[sizeof("emojimodifier")];
+ char unicode_prop_name_pool_str1368[sizeof("uideo")];
+ char unicode_prop_name_pool_str1373[sizeof("bidicontrol")];
+ char unicode_prop_name_pool_str1379[sizeof("phnx")];
+ char unicode_prop_name_pool_str1380[sizeof("limbu")];
+ char unicode_prop_name_pool_str1384[sizeof("n")];
+ char unicode_prop_name_pool_str1388[sizeof("inenclosedideographicsupplement")];
+ char unicode_prop_name_pool_str1392[sizeof("mult")];
+ char unicode_prop_name_pool_str1398[sizeof("kthi")];
+ char unicode_prop_name_pool_str1399[sizeof("incjkunifiedideographs")];
+ char unicode_prop_name_pool_str1401[sizeof("ingreekandcoptic")];
+ char unicode_prop_name_pool_str1403[sizeof("inoldhungarian")];
+ char unicode_prop_name_pool_str1406[sizeof("incjkcompatibility")];
+ char unicode_prop_name_pool_str1409[sizeof("grbase")];
+ char unicode_prop_name_pool_str1411[sizeof("nandinagari")];
+ char unicode_prop_name_pool_str1412[sizeof("brah")];
+ char unicode_prop_name_pool_str1414[sizeof("no")];
+ char unicode_prop_name_pool_str1421[sizeof("sd")];
+ char unicode_prop_name_pool_str1423[sizeof("nko")];
+ char unicode_prop_name_pool_str1424[sizeof("nkoo")];
+ char unicode_prop_name_pool_str1427[sizeof("xpeo")];
+ char unicode_prop_name_pool_str1430[sizeof("sidd")];
+ char unicode_prop_name_pool_str1435[sizeof("inherited")];
+ char unicode_prop_name_pool_str1437[sizeof("p")];
+ char unicode_prop_name_pool_str1440[sizeof("phli")];
+ char unicode_prop_name_pool_str1443[sizeof("inmeroitichieroglyphs")];
+ char unicode_prop_name_pool_str1444[sizeof("inphoenician")];
+ char unicode_prop_name_pool_str1449[sizeof("inmayannumerals")];
+ char unicode_prop_name_pool_str1453[sizeof("saurashtra")];
+ char unicode_prop_name_pool_str1455[sizeof("inkangxiradicals")];
+ char unicode_prop_name_pool_str1461[sizeof("enclosingmark")];
+ char unicode_prop_name_pool_str1467[sizeof("graphemeextend")];
+ char unicode_prop_name_pool_str1468[sizeof("beng")];
+ char unicode_prop_name_pool_str1473[sizeof("inbatak")];
+ char unicode_prop_name_pool_str1474[sizeof("glag")];
+ char unicode_prop_name_pool_str1475[sizeof("ahex")];
+ char unicode_prop_name_pool_str1477[sizeof("patsyn")];
+ char unicode_prop_name_pool_str1479[sizeof("odi")];
+ char unicode_prop_name_pool_str1486[sizeof("dogra")];
+ char unicode_prop_name_pool_str1489[sizeof("intibetan")];
+ char unicode_prop_name_pool_str1491[sizeof("lydi")];
+ char unicode_prop_name_pool_str1492[sizeof("lydian")];
+ char unicode_prop_name_pool_str1499[sizeof("inblockelements")];
+ char unicode_prop_name_pool_str1506[sizeof("cwcf")];
+ char unicode_prop_name_pool_str1507[sizeof("inunifiedcanadianaboriginalsyllabicsextended")];
+ char unicode_prop_name_pool_str1508[sizeof("regionalindicator")];
+ char unicode_prop_name_pool_str1509[sizeof("ingreekextended")];
+ char unicode_prop_name_pool_str1513[sizeof("emojimodifierbase")];
+ char unicode_prop_name_pool_str1514[sizeof("inanatolianhieroglyphs")];
+ char unicode_prop_name_pool_str1516[sizeof("indogra")];
+ char unicode_prop_name_pool_str1517[sizeof("taiviet")];
+ char unicode_prop_name_pool_str1524[sizeof("inyiradicals")];
+ char unicode_prop_name_pool_str1525[sizeof("unassigned")];
+ char unicode_prop_name_pool_str1532[sizeof("insundanesesupplement")];
+ char unicode_prop_name_pool_str1535[sizeof("innumberforms")];
+ char unicode_prop_name_pool_str1538[sizeof("lowercaseletter")];
+ char unicode_prop_name_pool_str1541[sizeof("dogr")];
+ char unicode_prop_name_pool_str1542[sizeof("lepc")];
+ char unicode_prop_name_pool_str1545[sizeof("bhks")];
+ char unicode_prop_name_pool_str1553[sizeof("word")];
+ char unicode_prop_name_pool_str1554[sizeof("gujr")];
+ char unicode_prop_name_pool_str1555[sizeof("inphaistosdisc")];
+ char unicode_prop_name_pool_str1557[sizeof("bhaiksuki")];
+ char unicode_prop_name_pool_str1560[sizeof("dash")];
+ char unicode_prop_name_pool_str1562[sizeof("inarabicextendeda")];
+ char unicode_prop_name_pool_str1565[sizeof("gujarati")];
+ char unicode_prop_name_pool_str1566[sizeof("inlatinextendedd")];
+ char unicode_prop_name_pool_str1567[sizeof("innoblock")];
+ char unicode_prop_name_pool_str1570[sizeof("java")];
+ char unicode_prop_name_pool_str1576[sizeof("ingeometricshapes")];
+ char unicode_prop_name_pool_str1577[sizeof("cyrl")];
+ char unicode_prop_name_pool_str1582[sizeof("indevanagari")];
+ char unicode_prop_name_pool_str1583[sizeof("inbalinese")];
+ char unicode_prop_name_pool_str1585[sizeof("inbyzantinemusicalsymbols")];
+ char unicode_prop_name_pool_str1589[sizeof("tale")];
+ char unicode_prop_name_pool_str1591[sizeof("deva")];
+ char unicode_prop_name_pool_str1594[sizeof("hex")];
+ char unicode_prop_name_pool_str1601[sizeof("inmyanmarextendedb")];
+ char unicode_prop_name_pool_str1603[sizeof("sinh")];
+ char unicode_prop_name_pool_str1604[sizeof("cwt")];
+ char unicode_prop_name_pool_str1606[sizeof("shavian")];
+ char unicode_prop_name_pool_str1607[sizeof("devanagari")];
+ char unicode_prop_name_pool_str1609[sizeof("oidc")];
+ char unicode_prop_name_pool_str1615[sizeof("javanese")];
+ char unicode_prop_name_pool_str1621[sizeof("mlym")];
+ char unicode_prop_name_pool_str1622[sizeof("incjkunifiedideographsextensiond")];
+ char unicode_prop_name_pool_str1624[sizeof("sentenceterminal")];
+ char unicode_prop_name_pool_str1626[sizeof("malayalam")];
+ char unicode_prop_name_pool_str1628[sizeof("inhanunoo")];
+ char unicode_prop_name_pool_str1629[sizeof("insinhalaarchaicnumbers")];
+ char unicode_prop_name_pool_str1631[sizeof("olck")];
+ char unicode_prop_name_pool_str1633[sizeof("inimperialaramaic")];
+ char unicode_prop_name_pool_str1636[sizeof("olower")];
+ char unicode_prop_name_pool_str1638[sizeof("palmyrene")];
+ char unicode_prop_name_pool_str1642[sizeof("avestan")];
+ char unicode_prop_name_pool_str1645[sizeof("incjkunifiedideographsextensionf")];
+ char unicode_prop_name_pool_str1646[sizeof("insogdian")];
+ char unicode_prop_name_pool_str1647[sizeof("indingbats")];
+ char unicode_prop_name_pool_str1648[sizeof("olchiki")];
+ char unicode_prop_name_pool_str1654[sizeof("oids")];
+ char unicode_prop_name_pool_str1661[sizeof("punctuation")];
+ char unicode_prop_name_pool_str1663[sizeof("sund")];
+ char unicode_prop_name_pool_str1666[sizeof("inbraillepatterns")];
+ char unicode_prop_name_pool_str1669[sizeof("emojicomponent")];
+ char unicode_prop_name_pool_str1672[sizeof("ideographic")];
+ char unicode_prop_name_pool_str1673[sizeof("taml")];
+ char unicode_prop_name_pool_str1688[sizeof("format")];
+ char unicode_prop_name_pool_str1694[sizeof("inornamentaldingbats")];
+ char unicode_prop_name_pool_str1700[sizeof("coptic")];
+ char unicode_prop_name_pool_str1702[sizeof("caseignorable")];
+ char unicode_prop_name_pool_str1708[sizeof("idsb")];
+ char unicode_prop_name_pool_str1709[sizeof("inmiscellaneousmathematicalsymbolsb")];
+ char unicode_prop_name_pool_str1712[sizeof("sogdian")];
+ char unicode_prop_name_pool_str1715[sizeof("sogo")];
+ char unicode_prop_name_pool_str1720[sizeof("terminalpunctuation")];
+ char unicode_prop_name_pool_str1722[sizeof("intangut")];
+ char unicode_prop_name_pool_str1729[sizeof("intifinagh")];
+ char unicode_prop_name_pool_str1733[sizeof("inlowsurrogates")];
+ char unicode_prop_name_pool_str1743[sizeof("invariationselectors")];
+ char unicode_prop_name_pool_str1745[sizeof("copt")];
+ char unicode_prop_name_pool_str1750[sizeof("soyo")];
+ char unicode_prop_name_pool_str1753[sizeof("intags")];
+ char unicode_prop_name_pool_str1756[sizeof("inverticalforms")];
+ char unicode_prop_name_pool_str1757[sizeof("ininscriptionalparthian")];
+ char unicode_prop_name_pool_str1760[sizeof("ininscriptionalpahlavi")];
+ char unicode_prop_name_pool_str1763[sizeof("meroitichieroglyphs")];
+ char unicode_prop_name_pool_str1764[sizeof("asciihexdigit")];
+ char unicode_prop_name_pool_str1766[sizeof("inethiopicextendeda")];
+ char unicode_prop_name_pool_str1767[sizeof("invedicextensions")];
+ char unicode_prop_name_pool_str1781[sizeof("nand")];
+ char unicode_prop_name_pool_str1782[sizeof("cwl")];
+ char unicode_prop_name_pool_str1785[sizeof("cprt")];
+ char unicode_prop_name_pool_str1791[sizeof("innushu")];
+ char unicode_prop_name_pool_str1794[sizeof("zanabazarsquare")];
+ char unicode_prop_name_pool_str1797[sizeof("ingeometricshapesextended")];
+ char unicode_prop_name_pool_str1798[sizeof("avst")];
+ char unicode_prop_name_pool_str1808[sizeof("imperialaramaic")];
+ char unicode_prop_name_pool_str1810[sizeof("bopo")];
+ char unicode_prop_name_pool_str1812[sizeof("sarb")];
+ char unicode_prop_name_pool_str1819[sizeof("inoldpersian")];
+ char unicode_prop_name_pool_str1830[sizeof("intaiviet")];
+ char unicode_prop_name_pool_str1834[sizeof("mahj")];
+ char unicode_prop_name_pool_str1838[sizeof("inkatakanaphoneticextensions")];
+ char unicode_prop_name_pool_str1845[sizeof("mahajani")];
+ char unicode_prop_name_pool_str1871[sizeof("closepunctuation")];
+ char unicode_prop_name_pool_str1875[sizeof("inlisu")];
+ char unicode_prop_name_pool_str1878[sizeof("softdotted")];
+ char unicode_prop_name_pool_str1897[sizeof("unknown")];
+ char unicode_prop_name_pool_str1898[sizeof("invariationselectorssupplement")];
+ char unicode_prop_name_pool_str1910[sizeof("syrc")];
+ char unicode_prop_name_pool_str1911[sizeof("hang")];
+ char unicode_prop_name_pool_str1926[sizeof("incjksymbolsandpunctuation")];
+ char unicode_prop_name_pool_str1932[sizeof("ingujarati")];
+ char unicode_prop_name_pool_str1933[sizeof("bopomofo")];
+ char unicode_prop_name_pool_str1936[sizeof("alpha")];
+ char unicode_prop_name_pool_str1937[sizeof("khoj")];
+ char unicode_prop_name_pool_str1939[sizeof("inpalmyrene")];
+ char unicode_prop_name_pool_str1942[sizeof("ingunjalagondi")];
+ char unicode_prop_name_pool_str1948[sizeof("inoldpermic")];
+ char unicode_prop_name_pool_str1950[sizeof("inlepcha")];
+ char unicode_prop_name_pool_str1951[sizeof("assigned")];
+ char unicode_prop_name_pool_str1955[sizeof("incurrencysymbols")];
+ char unicode_prop_name_pool_str1958[sizeof("insmallformvariants")];
+ char unicode_prop_name_pool_str1959[sizeof("sorasompeng")];
+ char unicode_prop_name_pool_str1964[sizeof("inlinearbsyllabary")];
+ char unicode_prop_name_pool_str1965[sizeof("oldpersian")];
+ char unicode_prop_name_pool_str1972[sizeof("caucasianalbanian")];
+ char unicode_prop_name_pool_str1973[sizeof("inenclosedcjklettersandmonths")];
+ char unicode_prop_name_pool_str1975[sizeof("hiragana")];
+ char unicode_prop_name_pool_str1976[sizeof("inbamum")];
+ char unicode_prop_name_pool_str1979[sizeof("inrejang")];
+ char unicode_prop_name_pool_str1984[sizeof("graph")];
+ char unicode_prop_name_pool_str1990[sizeof("sharada")];
+ char unicode_prop_name_pool_str1991[sizeof("inethiopicsupplement")];
+ char unicode_prop_name_pool_str1996[sizeof("indevanagariextended")];
+ char unicode_prop_name_pool_str1997[sizeof("incoptic")];
+ char unicode_prop_name_pool_str1998[sizeof("insyriacsupplement")];
+ char unicode_prop_name_pool_str2004[sizeof("inmeroiticcursive")];
+ char unicode_prop_name_pool_str2014[sizeof("hmng")];
+ char unicode_prop_name_pool_str2022[sizeof("intelugu")];
+ char unicode_prop_name_pool_str2029[sizeof("incombiningdiacriticalmarks")];
+ char unicode_prop_name_pool_str2031[sizeof("mathsymbol")];
+ char unicode_prop_name_pool_str2036[sizeof("titlecaseletter")];
+ char unicode_prop_name_pool_str2038[sizeof("ugar")];
+ char unicode_prop_name_pool_str2039[sizeof("incombiningdiacriticalmarksforsymbols")];
+ char unicode_prop_name_pool_str2040[sizeof("spacingmark")];
+ char unicode_prop_name_pool_str2043[sizeof("shrd")];
+ char unicode_prop_name_pool_str2047[sizeof("injavanese")];
+ char unicode_prop_name_pool_str2048[sizeof("syriac")];
+ char unicode_prop_name_pool_str2054[sizeof("space")];
+ char unicode_prop_name_pool_str2056[sizeof("hebr")];
+ char unicode_prop_name_pool_str2061[sizeof("ext")];
+ char unicode_prop_name_pool_str2064[sizeof("inhanguljamo")];
+ char unicode_prop_name_pool_str2066[sizeof("phag")];
+ char unicode_prop_name_pool_str2076[sizeof("inhanguljamoextendeda")];
+ char unicode_prop_name_pool_str2082[sizeof("wancho")];
+ char unicode_prop_name_pool_str2084[sizeof("bugi")];
+ char unicode_prop_name_pool_str2089[sizeof("tamil")];
+ char unicode_prop_name_pool_str2093[sizeof("sogd")];
+ char unicode_prop_name_pool_str2094[sizeof("orkh")];
+ char unicode_prop_name_pool_str2097[sizeof("oldpermic")];
+ char unicode_prop_name_pool_str2100[sizeof("siddham")];
+ char unicode_prop_name_pool_str2102[sizeof("incyrillicextendedb")];
+ char unicode_prop_name_pool_str2105[sizeof("inbrahmi")];
+ char unicode_prop_name_pool_str2108[sizeof("inmongoliansupplement")];
+ char unicode_prop_name_pool_str2113[sizeof("thaa")];
+ char unicode_prop_name_pool_str2118[sizeof("thaana")];
+ char unicode_prop_name_pool_str2120[sizeof("thai")];
+ char unicode_prop_name_pool_str2122[sizeof("buginese")];
+ char unicode_prop_name_pool_str2127[sizeof("ingeorgiansupplement")];
+ char unicode_prop_name_pool_str2129[sizeof("digit")];
+ char unicode_prop_name_pool_str2132[sizeof("cyrillic")];
+ char unicode_prop_name_pool_str2149[sizeof("sylo")];
+ char unicode_prop_name_pool_str2150[sizeof("inphoneticextensions")];
+ char unicode_prop_name_pool_str2151[sizeof("separator")];
+ char unicode_prop_name_pool_str2159[sizeof("inethiopicextended")];
+ char unicode_prop_name_pool_str2163[sizeof("inmathematicalalphanumericsymbols")];
+ char unicode_prop_name_pool_str2168[sizeof("insymbolsandpictographsextendeda")];
+ char unicode_prop_name_pool_str2170[sizeof("nd")];
+ char unicode_prop_name_pool_str2176[sizeof("tirh")];
+ char unicode_prop_name_pool_str2178[sizeof("tirhuta")];
+ char unicode_prop_name_pool_str2184[sizeof("incombiningdiacriticalmarkssupplement")];
+ char unicode_prop_name_pool_str2193[sizeof("extender")];
+ char unicode_prop_name_pool_str2197[sizeof("wcho")];
+ char unicode_prop_name_pool_str2199[sizeof("inbengali")];
+ char unicode_prop_name_pool_str2201[sizeof("talu")];
+ char unicode_prop_name_pool_str2206[sizeof("tang")];
+ char unicode_prop_name_pool_str2207[sizeof("warangciti")];
+ char unicode_prop_name_pool_str2210[sizeof("tagbanwa")];
+ char unicode_prop_name_pool_str2211[sizeof("orya")];
+ char unicode_prop_name_pool_str2212[sizeof("nl")];
+ char unicode_prop_name_pool_str2213[sizeof("induployan")];
+ char unicode_prop_name_pool_str2214[sizeof("cwu")];
+ char unicode_prop_name_pool_str2216[sizeof("inbuginese")];
+ char unicode_prop_name_pool_str2220[sizeof("telu")];
+ char unicode_prop_name_pool_str2223[sizeof("ogam")];
+ char unicode_prop_name_pool_str2226[sizeof("taitham")];
+ char unicode_prop_name_pool_str2237[sizeof("rjng")];
+ char unicode_prop_name_pool_str2240[sizeof("insuttonsignwriting")];
+ char unicode_prop_name_pool_str2250[sizeof("incombiningdiacriticalmarksextended")];
+ char unicode_prop_name_pool_str2251[sizeof("number")];
+ char unicode_prop_name_pool_str2264[sizeof("inyijinghexagramsymbols")];
+ char unicode_prop_name_pool_str2277[sizeof("whitespace")];
+ char unicode_prop_name_pool_str2278[sizeof("currencysymbol")];
+ char unicode_prop_name_pool_str2285[sizeof("inottomansiyaqnumbers")];
+ char unicode_prop_name_pool_str2288[sizeof("inlimbu")];
+ char unicode_prop_name_pool_str2293[sizeof("incopticepactnumbers")];
+ char unicode_prop_name_pool_str2295[sizeof("ingeorgianextended")];
+ char unicode_prop_name_pool_str2305[sizeof("inphoneticextensionssupplement")];
+ char unicode_prop_name_pool_str2308[sizeof("any")];
+ char unicode_prop_name_pool_str2320[sizeof("osge")];
+ char unicode_prop_name_pool_str2325[sizeof("defaultignorablecodepoint")];
+ char unicode_prop_name_pool_str2326[sizeof("hangul")];
+ char unicode_prop_name_pool_str2333[sizeof("newa")];
+ char unicode_prop_name_pool_str2343[sizeof("ethi")];
+ char unicode_prop_name_pool_str2345[sizeof("hanifirohingya")];
+ char unicode_prop_name_pool_str2346[sizeof("hmnp")];
+ char unicode_prop_name_pool_str2348[sizeof("olditalic")];
+ char unicode_prop_name_pool_str2349[sizeof("incjkunifiedideographsextensionb")];
+ char unicode_prop_name_pool_str2352[sizeof("rohg")];
+ char unicode_prop_name_pool_str2353[sizeof("innyiakengpuachuehmong")];
+ char unicode_prop_name_pool_str2355[sizeof("incjkradicalssupplement")];
+ char unicode_prop_name_pool_str2364[sizeof("newtailue")];
+ char unicode_prop_name_pool_str2365[sizeof("newline")];
+ char unicode_prop_name_pool_str2366[sizeof("lepcha")];
+ char unicode_prop_name_pool_str2375[sizeof("deprecated")];
+ char unicode_prop_name_pool_str2381[sizeof("buhd")];
+ char unicode_prop_name_pool_str2391[sizeof("inglagolitic")];
+ char unicode_prop_name_pool_str2395[sizeof("inaegeannumbers")];
+ char unicode_prop_name_pool_str2400[sizeof("modifiersymbol")];
+ char unicode_prop_name_pool_str2410[sizeof("surrogate")];
+ char unicode_prop_name_pool_str2418[sizeof("inletterlikesymbols")];
+ char unicode_prop_name_pool_str2426[sizeof("idstrinaryoperator")];
+ char unicode_prop_name_pool_str2442[sizeof("intagalog")];
+ char unicode_prop_name_pool_str2443[sizeof("tangut")];
+ char unicode_prop_name_pool_str2445[sizeof("osmanya")];
+ char unicode_prop_name_pool_str2447[sizeof("oalpha")];
+ char unicode_prop_name_pool_str2448[sizeof("inphagspa")];
+ char unicode_prop_name_pool_str2455[sizeof("ugaritic")];
+ char unicode_prop_name_pool_str2456[sizeof("otheridcontinue")];
+ char unicode_prop_name_pool_str2460[sizeof("inarabicpresentationformsb")];
+ char unicode_prop_name_pool_str2462[sizeof("inbassavah")];
+ char unicode_prop_name_pool_str2469[sizeof("other")];
+ char unicode_prop_name_pool_str2478[sizeof("othernumber")];
+ char unicode_prop_name_pool_str2480[sizeof("sylotinagri")];
+ char unicode_prop_name_pool_str2487[sizeof("ingothic")];
+ char unicode_prop_name_pool_str2498[sizeof("inbuhid")];
+ char unicode_prop_name_pool_str2502[sizeof("inlatin1supplement")];
+ char unicode_prop_name_pool_str2516[sizeof("intagbanwa")];
+ char unicode_prop_name_pool_str2523[sizeof("shaw")];
+ char unicode_prop_name_pool_str2529[sizeof("oldhungarian")];
+ char unicode_prop_name_pool_str2538[sizeof("inmahjongtiles")];
+ char unicode_prop_name_pool_str2542[sizeof("hung")];
+ char unicode_prop_name_pool_str2544[sizeof("tifinagh")];
+ char unicode_prop_name_pool_str2554[sizeof("inbopomofo")];
+ char unicode_prop_name_pool_str2561[sizeof("narb")];
+ char unicode_prop_name_pool_str2571[sizeof("inyisyllables")];
+ char unicode_prop_name_pool_str2573[sizeof("kayahli")];
+ char unicode_prop_name_pool_str2578[sizeof("otheralphabetic")];
+ char unicode_prop_name_pool_str2582[sizeof("phagspa")];
+ char unicode_prop_name_pool_str2584[sizeof("inprivateusearea")];
+ char unicode_prop_name_pool_str2588[sizeof("elba")];
+ char unicode_prop_name_pool_str2591[sizeof("nchar")];
+ char unicode_prop_name_pool_str2607[sizeof("spaceseparator")];
+ char unicode_prop_name_pool_str2609[sizeof("tibt")];
+ char unicode_prop_name_pool_str2611[sizeof("extendedpictographic")];
+ char unicode_prop_name_pool_str2615[sizeof("tibetan")];
+ char unicode_prop_name_pool_str2616[sizeof("sgnw")];
+ char unicode_prop_name_pool_str2622[sizeof("hexdigit")];
+ char unicode_prop_name_pool_str2623[sizeof("tfng")];
+ char unicode_prop_name_pool_str2627[sizeof("inbamumsupplement")];
+ char unicode_prop_name_pool_str2632[sizeof("tavt")];
+ char unicode_prop_name_pool_str2633[sizeof("incombininghalfmarks")];
+ char unicode_prop_name_pool_str2634[sizeof("inarabicmathematicalalphabeticsymbols")];
+ char unicode_prop_name_pool_str2638[sizeof("khudawadi")];
+ char unicode_prop_name_pool_str2641[sizeof("inhalfwidthandfullwidthforms")];
+ char unicode_prop_name_pool_str2652[sizeof("inhangulsyllables")];
+ char unicode_prop_name_pool_str2653[sizeof("elym")];
+ char unicode_prop_name_pool_str2669[sizeof("symbol")];
+ char unicode_prop_name_pool_str2692[sizeof("bassavah")];
+ char unicode_prop_name_pool_str2696[sizeof("elymaic")];
+ char unicode_prop_name_pool_str2698[sizeof("changeswhencasemapped")];
+ char unicode_prop_name_pool_str2709[sizeof("oldturkic")];
+ char unicode_prop_name_pool_str2725[sizeof("inplayingcards")];
+ char unicode_prop_name_pool_str2767[sizeof("zp")];
+ char unicode_prop_name_pool_str2775[sizeof("elbasan")];
+ char unicode_prop_name_pool_str2776[sizeof("buhid")];
+ char unicode_prop_name_pool_str2779[sizeof("noncharactercodepoint")];
+ char unicode_prop_name_pool_str2785[sizeof("finalpunctuation")];
+ char unicode_prop_name_pool_str2794[sizeof("inpsalterpahlavi")];
+ char unicode_prop_name_pool_str2800[sizeof("inpaucinhau")];
+ char unicode_prop_name_pool_str2801[sizeof("nonspacingmark")];
+ char unicode_prop_name_pool_str2804[sizeof("changeswhentitlecased")];
+ char unicode_prop_name_pool_str2808[sizeof("inindicsiyaqnumbers")];
+ char unicode_prop_name_pool_str2813[sizeof("phlp")];
+ char unicode_prop_name_pool_str2824[sizeof("wspace")];
+ char unicode_prop_name_pool_str2831[sizeof("nbat")];
+ char unicode_prop_name_pool_str2836[sizeof("hluw")];
+ char unicode_prop_name_pool_str2838[sizeof("cypriot")];
+ char unicode_prop_name_pool_str2839[sizeof("nabataean")];
+ char unicode_prop_name_pool_str2841[sizeof("inalchemicalsymbols")];
+ char unicode_prop_name_pool_str2847[sizeof("dupl")];
+ char unicode_prop_name_pool_str2856[sizeof("otherlowercase")];
+ char unicode_prop_name_pool_str2875[sizeof("inarabicsupplement")];
+ char unicode_prop_name_pool_str2876[sizeof("inalphabeticpresentationforms")];
+ char unicode_prop_name_pool_str2890[sizeof("otherletter")];
+ char unicode_prop_name_pool_str2916[sizeof("emojipresentation")];
+ char unicode_prop_name_pool_str2930[sizeof("changeswhenlowercased")];
+ char unicode_prop_name_pool_str2953[sizeof("dashpunctuation")];
+ char unicode_prop_name_pool_str2954[sizeof("oldsogdian")];
+ char unicode_prop_name_pool_str2970[sizeof("intangutcomponents")];
+ char unicode_prop_name_pool_str2977[sizeof("soyombo")];
+ char unicode_prop_name_pool_str2996[sizeof("paragraphseparator")];
+ char unicode_prop_name_pool_str3012[sizeof("changeswhencasefolded")];
+ char unicode_prop_name_pool_str3015[sizeof("othersymbol")];
+ char unicode_prop_name_pool_str3020[sizeof("inlatinextendedb")];
+ char unicode_prop_name_pool_str3072[sizeof("otheruppercase")];
+ char unicode_prop_name_pool_str3079[sizeof("otheridstart")];
+ char unicode_prop_name_pool_str3084[sizeof("inhebrew")];
+ char unicode_prop_name_pool_str3088[sizeof("oldnortharabian")];
+ char unicode_prop_name_pool_str3092[sizeof("omath")];
+ char unicode_prop_name_pool_str3099[sizeof("incypriotsyllabary")];
+ char unicode_prop_name_pool_str3118[sizeof("inmathematicaloperators")];
+ char unicode_prop_name_pool_str3146[sizeof("changeswhenuppercased")];
+ char unicode_prop_name_pool_str3154[sizeof("nshu")];
+ char unicode_prop_name_pool_str3182[sizeof("insuperscriptsandsubscripts")];
+ char unicode_prop_name_pool_str3188[sizeof("ogrext")];
+ char unicode_prop_name_pool_str3197[sizeof("inhanguljamoextendedb")];
+ char unicode_prop_name_pool_str3198[sizeof("alphabetic")];
+ char unicode_prop_name_pool_str3199[sizeof("dep")];
+ char unicode_prop_name_pool_str3216[sizeof("oupper")];
+ char unicode_prop_name_pool_str3258[sizeof("zyyy")];
+ char unicode_prop_name_pool_str3267[sizeof("aghb")];
+ char unicode_prop_name_pool_str3285[sizeof("ogham")];
+ char unicode_prop_name_pool_str3306[sizeof("rejang")];
+ char unicode_prop_name_pool_str3324[sizeof("tagb")];
+ char unicode_prop_name_pool_str3350[sizeof("hyphen")];
+ char unicode_prop_name_pool_str3355[sizeof("insupplementalarrowsa")];
+ char unicode_prop_name_pool_str3413[sizeof("inpahawhhmong")];
+ char unicode_prop_name_pool_str3459[sizeof("nushu")];
+ char unicode_prop_name_pool_str3478[sizeof("othermath")];
+ char unicode_prop_name_pool_str3491[sizeof("insupplementalarrowsc")];
+ char unicode_prop_name_pool_str3494[sizeof("insupplementalmathematicaloperators")];
+ char unicode_prop_name_pool_str3500[sizeof("otherdefaultignorablecodepoint")];
+ char unicode_prop_name_pool_str3527[sizeof("inhighprivateusesurrogates")];
+ char unicode_prop_name_pool_str3538[sizeof("duployan")];
+ char unicode_prop_name_pool_str3663[sizeof("oldsoutharabian")];
+ char unicode_prop_name_pool_str3666[sizeof("tglg")];
+ char unicode_prop_name_pool_str3685[sizeof("tagalog")];
+ char unicode_prop_name_pool_str3692[sizeof("inbopomofoextended")];
+ char unicode_prop_name_pool_str3731[sizeof("signwriting")];
+ char unicode_prop_name_pool_str3750[sizeof("inegyptianhieroglyphs")];
+ char unicode_prop_name_pool_str3763[sizeof("inegyptianhieroglyphformatcontrols")];
+ char unicode_prop_name_pool_str3807[sizeof("upper")];
+ char unicode_prop_name_pool_str3810[sizeof("otherpunctuation")];
+ char unicode_prop_name_pool_str3872[sizeof("ethiopic")];
+ char unicode_prop_name_pool_str3881[sizeof("hebrew")];
+ char unicode_prop_name_pool_str3901[sizeof("telugu")];
+ char unicode_prop_name_pool_str3910[sizeof("uppercase")];
+ char unicode_prop_name_pool_str3937[sizeof("insupplementalpunctuation")];
+ char unicode_prop_name_pool_str3946[sizeof("unifiedideograph")];
+ char unicode_prop_name_pool_str3961[sizeof("pahawhhmong")];
+ char unicode_prop_name_pool_str3971[sizeof("inglagoliticsupplement")];
+ char unicode_prop_name_pool_str3992[sizeof("inboxdrawing")];
+ char unicode_prop_name_pool_str4279[sizeof("uppercaseletter")];
+ char unicode_prop_name_pool_str4298[sizeof("othergraphemeextend")];
+ char unicode_prop_name_pool_str4401[sizeof("inhighsurrogates")];
+ char unicode_prop_name_pool_str4476[sizeof("insupplementalarrowsb")];
+ char unicode_prop_name_pool_str4562[sizeof("inhangulcompatibilityjamo")];
+ char unicode_prop_name_pool_str4563[sizeof("egyp")];
+ char unicode_prop_name_pool_str4577[sizeof("insupplementalsymbolsandpictographs")];
+ char unicode_prop_name_pool_str4659[sizeof("nyiakengpuachuehmong")];
+ char unicode_prop_name_pool_str4688[sizeof("insupplementaryprivateuseareaa")];
+ char unicode_prop_name_pool_str4822[sizeof("openpunctuation")];
+ char unicode_prop_name_pool_str4851[sizeof("egyptianhieroglyphs")];
+ char unicode_prop_name_pool_str5809[sizeof("insupplementaryprivateuseareab")];
};
static const struct unicode_prop_name_pool_t unicode_prop_name_pool_contents =
{
"lana",
- "lina",
- "yi",
- "cn",
"z",
+ "yi",
+ "lina",
"mn",
"yiii",
- "ci",
+ "cn",
+ "maka",
"mani",
+ "zzzz",
+ "inkannada",
+ "ci",
"lo",
"lao",
"laoo",
"miao",
- "maka",
- "me",
+ "innko",
"co",
+ "me",
"loe",
- "inkannada",
- "innko",
- "zzzz",
"gran",
"pi",
"lineara",
+ "mark",
"cari",
"carian",
- "pe",
"po",
- "kana",
"mendekikakui",
- "geor",
- "meeteimayek",
- "mark",
- "m",
"grek",
- "mero",
+ "pe",
+ "meeteimayek",
+ "inkharoshthi",
+ "geor",
+ "greek",
"mro",
"mroo",
+ "kana",
+ "mero",
+ "m",
"gonm",
- "c",
"cakm",
- "greek",
- "inkharoshthi",
- "mandaic",
"inosmanya",
- "inarmenian",
"inmanichaean",
- "common",
+ "inarmenian",
"inmro",
"inmiao",
- "qaai",
+ "c",
"inchakma",
+ "common",
+ "mandaic",
+ "inmyanmar",
+ "inmakasar",
+ "qaai",
+ "inideographicsymbolsandpunctuation",
+ "inkhmer",
"cans",
- "connectorpunctuation",
+ "prependedconcatenationmark",
"lm",
"marc",
- "inmyanmar",
- "vai",
- "vaii",
- "inideographicsymbolsandpunctuation",
- "merc",
- "inavestan",
- "incuneiformnumbersandpunctuation",
- "inmakasar",
+ "connectorpunctuation",
"inrunic",
"incarian",
- "prependedconcatenationmark",
- "lc",
- "inipaextensions",
- "inkhmer",
- "perm",
+ "inavestan",
"combiningmark",
+ "incuneiformnumbersandpunctuation",
+ "merc",
+ "perm",
"inahom",
- "cc",
+ "inipaextensions",
"incherokee",
- "mc",
"insharada",
- "masaramgondi",
- "incuneiform",
"makasar",
- "qaac",
"inarrows",
- "armn",
+ "lc",
+ "masaramgondi",
+ "incuneiform",
+ "mc",
+ "cc",
+ "inzanabazarsquare",
"lineseparator",
+ "armn",
+ "qmark",
"armi",
- "pc",
- "armenian",
"insamaritan",
- "inmasaramgondi",
- "inzanabazarsquare",
- "qmark",
+ "armenian",
"inmarchen",
- "zs",
- "cs",
- "incyrillic",
- "incham",
- "latn",
+ "inmasaramgondi",
+ "qaac",
+ "pc",
"inscriptionalparthian",
+ "latn",
"latin",
"ri",
- "inkhmersymbols",
- "pcm",
"inthaana",
+ "inkhmersymbols",
+ "inkatakana",
+ "incyrillic",
+ "inthai",
+ "incham",
+ "inkaithi",
+ "zs",
"mtei",
+ "vai",
+ "vaii",
+ "initialpunctuation",
+ "cs",
"insyriac",
- "ps",
- "inthai",
+ "pcm",
+ "intakri",
+ "mand",
"l",
- "innewa",
- "inkatakana",
- "ascii",
- "initialpunctuation",
- "inkaithi",
- "arabic",
- "inideographicdescriptioncharacters",
- "inlineara",
- "mand",
- "mongolian",
- "inlao",
- "katakana",
+ "ps",
+ "dia",
+ "inkanaextendeda",
+ "di",
"mend",
- "intakri",
- "inruminumeralsymbols",
- "prti",
"modi",
- "inwarangciti",
- "incjkcompatibilityforms",
- "inspecials",
- "incjkcompatibilityideographs",
"ideo",
+ "katakana",
+ "prti",
+ "inideographicdescriptioncharacters",
+ "inlineara",
+ "xidcontinue",
+ "brai",
+ "inlao",
+ "ascii",
"privateuse",
- "kali",
+ "arabic",
+ "mongolian",
"inmyanmarextendeda",
+ "inruminumeralsymbols",
"letter",
- "brai",
- "inkanaextendeda",
- "vs",
- "xidcontinue",
- "lower",
- "inchesssymbols",
- "control",
- "inadlam",
+ "innandinagari",
+ "inmeeteimayek",
+ "inoldnortharabian",
"grlink",
"knda",
- "inmeeteimayek",
"kannada",
- "inmiscellaneousmathematicalsymbolsa",
- "palm",
- "inlycian",
+ "incjkcompatibilityforms",
+ "incjkcompatibilityideographs",
+ "inmodi",
+ "kali",
+ "control",
+ "inadlam",
+ "inspecials",
+ "inmendekikakui",
"intransportandmapsymbols",
- "inoldnortharabian",
- "inemoticons",
"letternumber",
- "inmodi",
"xidc",
- "lowercase",
- "inancientsymbols",
- "cwcm",
"inmedefaidrin",
- "psalterpahlavi",
- "gothic",
- "inmendekikakui",
+ "inchesssymbols",
+ "inemoticons",
"brahmi",
"inolditalic",
- "inmalayalam",
+ "palm",
+ "inlycian",
+ "inmiscellaneousmathematicalsymbolsa",
"xids",
- "incommonindicnumberforms",
- "meroiticcursive",
- "inlinearbideograms",
- "patternwhitespace",
+ "psalterpahlavi",
"insundanese",
- "joinc",
"inoldsogdian",
- "incjkstrokes",
- "so",
- "patternsyntax",
+ "diacritic",
+ "gothic",
+ "inancientsymbols",
+ "meroiticcursive",
+ "inmalayalam",
+ "patternwhitespace",
+ "sk",
+ "insmallkanaextension",
+ "inmandaic",
"lt",
+ "so",
+ "inlinearbideograms",
+ "incommonindicnumberforms",
"incjkcompatibilityideographssupplement",
- "inmandaic",
- "insylotinagri",
"idc",
- "sk",
- "alnum",
- "sora",
- "bamum",
"inoldsoutharabian",
- "patws",
- "inmusicalsymbols",
+ "insylotinagri",
"idsbinaryoperator",
- "indominotiles",
- "bass",
- "innewtailue",
- "ital",
- "inmiscellaneoussymbols",
+ "sora",
+ "bamum",
+ "inkanasupplement",
+ "incjkstrokes",
+ "joinc",
"inopticalcharacterrecognition",
+ "vs",
+ "indominotiles",
+ "batk",
"grext",
- "inkanasupplement",
- "inmiscellaneoussymbolsandarrows",
- "inmiscellaneoussymbolsandpictographs",
- "unknown",
+ "batak",
+ "patws",
"inmodifiertoneletters",
+ "ital",
+ "bass",
+ "decimalnumber",
+ "alnum",
"ids",
- "zl",
+ "print",
"inlatinextendeda",
- "ll",
+ "intaitham",
+ "inmusicalsymbols",
"intaile",
- "incontrolpictures",
- "s",
- "batk",
"samr",
- "lisu",
- "print",
"samaritan",
+ "s",
"inlatinextendede",
- "intaitham",
- "pauc",
- "batak",
- "sm",
"bali",
+ "lisu",
+ "pauc",
+ "patternsyntax",
+ "incontrolpictures",
+ "blank",
+ "inmiscellaneoussymbols",
+ "ll",
"inancientgreekmusicalnotation",
- "uideo",
- "intaixuanjingsymbols",
- "oriya",
- "incyrillicextendeda",
- "bengali",
+ "zl",
+ "inlydian",
+ "sm",
+ "inmiscellaneoussymbolsandarrows",
"inugaritic",
+ "bengali",
+ "pd",
+ "inmiscellaneoussymbolsandpictographs",
+ "medf",
+ "cf",
"balinese",
- "sc",
+ "medefaidrin",
+ "han",
"intamil",
- "inlydian",
+ "hani",
"inmultani",
- "gong",
- "blank",
- "ingrantha",
- "mong",
- "inearlydynasticcuneiform",
+ "hano",
+ "inshorthandformatcontrols",
"insaurashtra",
- "georgian",
- "zinh",
- "inosage",
- "ingeneralpunctuation",
- "incaucasianalbanian",
- "pd",
- "canadianaboriginal",
- "glagolitic",
- "inspacingmodifierletters",
- "idcontinue",
+ "pf",
"inoldturkic",
- "plrd",
- "joincontrol",
+ "idcontinue",
+ "hanunoo",
+ "sc",
+ "inkhojki",
"idst",
- "inhanifirohingya",
- "osage",
- "incyrillicextendedc",
- "ingeorgian",
- "unassigned",
- "lowercaseletter",
- "emoji",
+ "canadianaboriginal",
+ "hira",
+ "plrd",
+ "incaucasianalbanian",
"indeseret",
+ "inearlydynasticcuneiform",
+ "inspacingmodifierletters",
+ "innewa",
+ "idstart",
+ "zinh",
+ "incyrillicextendeda",
+ "dsrt",
+ "cased",
+ "glagolitic",
+ "inhanifirohingya",
"inancientgreeknumbers",
- "inmongolian",
- "cher",
- "cherokee",
+ "inmeeteimayekextensions",
+ "intaixuanjingsymbols",
+ "joincontrol",
+ "runr",
+ "inwarangciti",
+ "deseret",
"inhiragana",
+ "sind",
+ "cherokee",
+ "inlatinextendedc",
+ "adlm",
"phoenician",
+ "cher",
"marchen",
- "xsux",
+ "inkhudawadi",
+ "sinhala",
+ "lower",
+ "graphemelink",
+ "xidstart",
+ "ingrantha",
+ "bidic",
+ "xdigit",
+ "casedletter",
+ "gong",
+ "multani",
+ "gunjalagondi",
"cham",
"chakma",
- "inmeeteimayekextensions",
- "inlatinextendedc",
+ "mong",
"kaithi",
- "graphemebase",
- "idstart",
- "osma",
- "adlm",
"inmahajani",
- "cased",
- "runr",
- "sinhala",
- "manichaean",
+ "graphemebase",
+ "insiddham",
"inogham",
- "graphemelink",
- "ingurmukhi",
- "cwt",
+ "inosage",
+ "incountingrodnumerals",
+ "inwancho",
"khojki",
- "khar",
- "multani",
- "gunjalagondi",
- "casedletter",
- "inethiopic",
+ "ingeneralpunctuation",
+ "georgian",
+ "incyrillicextendedc",
+ "inkayahli",
+ "khar",
+ "inoriya",
+ "manichaean",
+ "bamu",
+ "zanb",
+ "oriya",
"inolchiki",
- "variationselector",
- "sind",
- "incountingrodnumerals",
- "logicalorderexception",
- "insinhala",
- "bidic",
- "dia",
- "insorasompeng",
- "anatolianhieroglyphs",
- "inlowsurrogates",
- "di",
- "ahom",
- "inenclosedalphanumerics",
+ "linb",
+ "inethiopic",
+ "wara",
+ "ingeorgian",
+ "innabataean",
+ "inkanbun",
"adlam",
- "inkhudawadi",
+ "inbhaiksuki",
+ "insinhala",
+ "inelbasan",
+ "lowercase",
+ "takri",
+ "inmongolian",
+ "invai",
+ "xsux",
"cntrl",
- "xidstart",
- "xdigit",
- "phnx",
- "emojimodifier",
- "khmr",
- "insiddham",
- "cwl",
- "bamu",
- "ingreekandcoptic",
- "inmiscellaneoustechnical",
+ "emoji",
"sterm",
- "inscriptionalpahlavi",
+ "cuneiform",
+ "cwcm",
+ "hatran",
+ "linearb",
+ "taile",
"inlatinextendedadditional",
- "kharoshthi",
- "runic",
- "odi",
- "ahex",
- "khmer",
+ "inenclosedalphanumerics",
+ "anatolianhieroglyphs",
"incyrillicsupplement",
+ "intamilsupplement",
+ "inmiscellaneoustechnical",
+ "ahom",
"incherokeesupplement",
- "inmeroitichieroglyphs",
- "enclosingmark",
- "glag",
- "inkangxiradicals",
- "math",
+ "takr",
+ "khmr",
+ "incjkunifiedideographsextensiona",
"quotationmark",
- "goth",
- "emojimodifierbase",
- "ugar",
+ "lyci",
+ "lycian",
+ "ingurmukhi",
+ "runic",
+ "limb",
+ "inscriptionalpahlavi",
+ "hatr",
+ "variationselector",
+ "modifierletter",
+ "incjkunifiedideographsextensione",
+ "mymr",
+ "myanmar",
"lu",
+ "kharoshthi",
+ "inarabic",
"radical",
- "incjkunifiedideographsextensiona",
- "beng",
- "braille",
- "n",
+ "khmer",
+ "inunifiedcanadianaboriginalsyllabics",
+ "osage",
"sundanese",
- "olck",
- "incjkunifiedideographsextensione",
- "diacritic",
+ "innewtailue",
+ "logicalorderexception",
+ "math",
+ "braille",
+ "goth",
+ "insorasompeng",
+ "insoyombo",
+ "arab",
+ "saur",
+ "guru",
+ "term",
+ "paucinhau",
+ "inbasiclatin",
+ "inarabicpresentationformsa",
+ "punct",
+ "gurmukhi",
"grantha",
+ "inshavian",
+ "osma",
"inenclosedalphanumericsupplement",
- "olchiki",
- "oidc",
- "olower",
- "regionalindicator",
- "no",
"intirhuta",
+ "inelymaic",
"inhatran",
- "saur",
+ "incjkunifiedideographsextensionc",
+ "emojimodifier",
+ "uideo",
+ "bidicontrol",
+ "phnx",
+ "limbu",
+ "n",
+ "inenclosedideographicsupplement",
+ "mult",
"kthi",
- "ingeometricshapes",
- "guru",
- "ingreekextended",
- "paucinhau",
+ "incjkunifiedideographs",
+ "ingreekandcoptic",
+ "inoldhungarian",
+ "incjkcompatibility",
+ "grbase",
+ "nandinagari",
+ "brah",
+ "no",
+ "sd",
+ "nko",
+ "nkoo",
"xpeo",
+ "sidd",
+ "inherited",
"p",
"phli",
- "nko",
- "nkoo",
- "oids",
- "indogra",
+ "inmeroitichieroglyphs",
"inphoenician",
- "punct",
- "limbu",
- "gurmukhi",
- "mult",
- "brah",
- "taile",
- "inoldhungarian",
- "takri",
- "bidicontrol",
- "invai",
- "incjkunifiedideographsextensionc",
- "inenclosedideographicsupplement",
- "decimalnumber",
- "lepc",
- "inherited",
- "incjkunifiedideographs",
- "graphemeextend",
+ "inmayannumerals",
"saurashtra",
- "caseignorable",
- "emojicomponent",
- "takr",
+ "inkangxiradicals",
+ "enclosingmark",
+ "graphemeextend",
+ "beng",
+ "inbatak",
+ "glag",
+ "ahex",
+ "patsyn",
+ "odi",
+ "dogra",
+ "intibetan",
+ "lydi",
+ "lydian",
+ "inblockelements",
+ "cwcf",
+ "inunifiedcanadianaboriginalsyllabicsextended",
+ "regionalindicator",
+ "ingreekextended",
+ "emojimodifierbase",
"inanatolianhieroglyphs",
- "inornamentaldingbats",
- "inphaistosdisc",
- "insogdian",
- "indingbats",
- "sd",
- "zanb",
- "insinhalaarchaicnumbers",
- "ideographic",
- "sidd",
- "linb",
- "sogdian",
+ "indogra",
+ "taiviet",
+ "inyiradicals",
+ "unassigned",
+ "insundanesesupplement",
+ "innumberforms",
+ "lowercaseletter",
+ "dogr",
+ "lepc",
"bhks",
- "sogo",
+ "word",
+ "gujr",
+ "inphaistosdisc",
"bhaiksuki",
- "term",
- "insundanesesupplement",
- "intags",
- "innabataean",
+ "dash",
+ "inarabicextendeda",
+ "gujarati",
+ "inlatinextendedd",
+ "innoblock",
+ "java",
+ "ingeometricshapes",
+ "cyrl",
+ "indevanagari",
+ "inbalinese",
+ "inbyzantinemusicalsymbols",
+ "tale",
+ "deva",
+ "hex",
+ "inmyanmarextendedb",
"sinh",
+ "cwt",
"shavian",
- "inbhaiksuki",
- "inelbasan",
- "inimperialaramaic",
- "inshavian",
- "intangut",
- "inshorthandformatcontrols",
- "inkanbun",
+ "devanagari",
+ "oidc",
+ "javanese",
+ "mlym",
+ "incjkunifiedideographsextensiond",
"sentenceterminal",
- "medf",
- "coptic",
- "linearb",
- "medefaidrin",
- "inethiopicextendeda",
+ "malayalam",
"inhanunoo",
- "han",
- "cwcf",
- "hani",
- "limb",
- "hano",
- "ingeometricshapesextended",
- "hanunoo",
- "inlatinextendedd",
- "inarabic",
- "cwu",
- "asciihexdigit",
- "ininscriptionalparthian",
- "format",
- "ininscriptionalpahlavi",
- "hira",
- "dsrt",
- "copt",
- "ugaritic",
- "newa",
- "arab",
- "inkhojki",
- "oldpersian",
+ "insinhalaarchaicnumbers",
+ "olck",
+ "inimperialaramaic",
+ "olower",
+ "palmyrene",
+ "avestan",
+ "incjkunifiedideographsextensionf",
+ "insogdian",
+ "indingbats",
+ "olchiki",
+ "oids",
"punctuation",
- "deseret",
- "newtailue",
- "newline",
- "ext",
"sund",
- "ogam",
- "inbasiclatin",
- "inarabicpresentationformsa",
+ "inbraillepatterns",
+ "emojicomponent",
+ "ideographic",
+ "taml",
+ "format",
+ "inornamentaldingbats",
+ "coptic",
+ "caseignorable",
+ "idsb",
+ "inmiscellaneousmathematicalsymbolsb",
+ "sogdian",
+ "sogo",
+ "terminalpunctuation",
+ "intangut",
+ "intifinagh",
+ "inlowsurrogates",
+ "invariationselectors",
+ "copt",
+ "soyo",
+ "intags",
+ "inverticalforms",
+ "ininscriptionalparthian",
+ "ininscriptionalpahlavi",
+ "meroitichieroglyphs",
+ "asciihexdigit",
+ "inethiopicextendeda",
+ "invedicextensions",
+ "nand",
+ "cwl",
"cprt",
- "imperialaramaic",
- "incjkunifiedideographsextensiond",
- "assigned",
- "taiviet",
"innushu",
- "inoriya",
- "wara",
- "java",
- "sorasompeng",
- "inkayahli",
- "orkh",
- "closepunctuation",
- "grbase",
- "tale",
+ "zanabazarsquare",
+ "ingeometricshapesextended",
+ "avst",
+ "imperialaramaic",
"bopo",
- "javanese",
- "osge",
- "oldpermic",
+ "sarb",
"inoldpersian",
- "phag",
- "alpha",
- "lyci",
- "lycian",
+ "intaiviet",
+ "mahj",
"inkatakanaphoneticextensions",
- "incjksymbolsandpunctuation",
- "inhanguljamo",
- "inhanguljamoextendeda",
- "avestan",
- "inpalmyrene",
- "inlepcha",
- "indevanagari",
- "taml",
- "sgnw",
- "inblockelements",
+ "mahajani",
+ "closepunctuation",
"inlisu",
- "mymr",
- "myanmar",
- "graph",
- "cuneiform",
- "extender",
- "inphoneticextensions",
- "inmongoliansupplement",
- "bopomofo",
- "intibetan",
- "innumberforms",
- "shaw",
- "inbatak",
- "inoldpermic",
- "incoptic",
- "invariationselectors",
- "insoyombo",
- "terminalpunctuation",
- "bugi",
- "insyriacsupplement",
- "sogd",
- "hatran",
- "inbyzantinemusicalsymbols",
- "inbalinese",
- "buginese",
- "innoblock",
- "inethiopicsupplement",
- "inglagolitic",
- "ingeorgiansupplement",
- "space",
- "sharada",
- "dogra",
- "avst",
- "hex",
- "inunifiedcanadianaboriginalsyllabics",
- "inverticalforms",
- "spacingmark",
- "inarabicextendeda",
- "hatr",
- "modifierletter",
- "inmyanmarextendedb",
- "incjkcompatibility",
- "khudawadi",
- "invedicextensions",
- "inethiopicextended",
- "ingeorgianextended",
- "shrd",
- "dogr",
- "intelugu",
- "inmiscellaneousmathematicalsymbolsb",
- "inmayannumerals",
- "olditalic",
- "inbraillepatterns",
- "oalpha",
- "inmathematicalalphanumericsymbols",
- "inphoneticextensionssupplement",
- "intagalog",
- "insuttonsignwriting",
- "siddham",
- "intaiviet",
- "nl",
- "separator",
- "ethi",
- "patsyn",
- "rohg",
+ "softdotted",
+ "unknown",
"invariationselectorssupplement",
- "inyiradicals",
- "otheridcontinue",
- "idsb",
- "insmallformvariants",
- "lydi",
- "lydian",
- "other",
- "othernumber",
- "cyrl",
- "nd",
- "induployan",
- "dash",
- "zanabazarsquare",
- "incopticepactnumbers",
- "number",
- "inphagspa",
- "mlym",
- "malayalam",
- "word",
- "sarb",
- "tang",
- "otheralphabetic",
- "tagbanwa",
- "lepcha",
- "surrogate",
- "palmyrene",
- "cf",
- "ingothic",
- "inmeroiticcursive",
- "tamil",
- "oldhungarian",
- "titlecaseletter",
- "thaa",
- "inunifiedcanadianaboriginalsyllabicsextended",
- "thaana",
- "thai",
- "pf",
- "extendedpictographic",
- "incjkradicalssupplement",
- "indevanagariextended",
- "gujr",
- "gujarati",
- "tirh",
- "caucasianalbanian",
- "incyrillicextendedb",
- "soyo",
- "inhangulsyllables",
- "inbamum",
- "taitham",
- "meroitichieroglyphs",
- "intifinagh",
- "talu",
- "inbengali",
- "incjkunifiedideographsextensionf",
- "buhd",
- "telu",
- "inbuginese",
- "idstrinaryoperator",
- "tirhuta",
- "oldturkic",
- "incombiningdiacriticalmarks",
- "phagspa",
- "incombiningdiacriticalmarksforsymbols",
- "changeswhencasemapped",
- "inlatin1supplement",
- "inbrahmi",
+ "syrc",
"hang",
- "nchar",
- "oldsogdian",
- "deva",
+ "incjksymbolsandpunctuation",
"ingujarati",
- "otherlowercase",
+ "bopomofo",
+ "alpha",
+ "khoj",
+ "inpalmyrene",
"ingunjalagondi",
- "devanagari",
- "syrc",
- "mahj",
- "hiragana",
- "orya",
- "mahajani",
+ "inoldpermic",
+ "inlepcha",
+ "assigned",
"incurrencysymbols",
- "spaceseparator",
- "otherletter",
+ "insmallformvariants",
+ "sorasompeng",
"inlinearbsyllabary",
+ "oldpersian",
+ "caucasianalbanian",
+ "inenclosedcjklettersandmonths",
+ "hiragana",
+ "inbamum",
"inrejang",
+ "graph",
+ "sharada",
+ "inethiopicsupplement",
+ "indevanagariextended",
+ "incoptic",
+ "insyriacsupplement",
+ "inmeroiticcursive",
"hmng",
- "ogrext",
- "inaegeannumbers",
- "changeswhentitlecased",
- "zp",
+ "intelugu",
+ "incombiningdiacriticalmarks",
"mathsymbol",
- "khoj",
- "incombiningdiacriticalmarkssupplement",
- "warangciti",
+ "titlecaseletter",
+ "ugar",
+ "incombiningdiacriticalmarksforsymbols",
+ "spacingmark",
+ "shrd",
+ "injavanese",
"syriac",
- "finalpunctuation",
- "othersymbol",
- "currencysymbol",
+ "space",
+ "hebr",
+ "ext",
+ "inhanguljamo",
+ "phag",
+ "inhanguljamoextendeda",
+ "wancho",
+ "bugi",
+ "tamil",
+ "sogd",
+ "orkh",
+ "oldpermic",
+ "siddham",
+ "incyrillicextendedb",
+ "inbrahmi",
+ "inmongoliansupplement",
+ "thaa",
+ "thaana",
+ "thai",
+ "buginese",
+ "ingeorgiansupplement",
"digit",
- "emojipresentation",
- "inpsalterpahlavi",
- "softdotted",
- "phlp",
- "noncharactercodepoint",
- "inlimbu",
- "nonspacingmark",
- "omath",
"cyrillic",
- "inenclosedcjklettersandmonths",
- "tangut",
- "changeswhenlowercased",
- "inalphabeticpresentationforms",
- "intangutcomponents",
- "incombiningdiacriticalmarksextended",
- "ogham",
- "osmanya",
- "intagbanwa",
- "inprivateusearea",
- "inpaucinhau",
- "otheruppercase",
"sylo",
- "elba",
- "paragraphseparator",
- "inbassavah",
- "otheridstart",
- "signwriting",
+ "inphoneticextensions",
+ "separator",
+ "inethiopicextended",
+ "inmathematicalalphanumericsymbols",
+ "insymbolsandpictographsextendeda",
+ "nd",
+ "tirh",
+ "tirhuta",
+ "incombiningdiacriticalmarkssupplement",
+ "extender",
+ "wcho",
+ "inbengali",
+ "talu",
+ "tang",
+ "warangciti",
+ "tagbanwa",
+ "orya",
+ "nl",
+ "induployan",
+ "cwu",
+ "inbuginese",
+ "telu",
+ "ogam",
+ "taitham",
"rjng",
+ "insuttonsignwriting",
+ "incombiningdiacriticalmarksextended",
+ "number",
+ "inyijinghexagramsymbols",
"whitespace",
+ "currencysymbol",
+ "inottomansiyaqnumbers",
+ "inlimbu",
+ "incopticepactnumbers",
+ "ingeorgianextended",
+ "inphoneticextensionssupplement",
+ "any",
+ "osge",
+ "defaultignorablecodepoint",
+ "hangul",
+ "newa",
+ "ethi",
+ "hanifirohingya",
+ "hmnp",
+ "olditalic",
"incjkunifiedideographsextensionb",
- "inletterlikesymbols",
- "buhid",
- "oupper",
- "bassavah",
- "inhebrew",
- "narb",
- "inbuhid",
- "inbopomofo",
- "elbasan",
- "incombininghalfmarks",
- "inindicsiyaqnumbers",
- "changeswhenuppercased",
- "inmathematicaloperators",
- "inarabicmathematicalalphabeticsymbols",
- "hluw",
- "hexdigit",
+ "rohg",
+ "innyiakengpuachuehmong",
+ "incjkradicalssupplement",
+ "newtailue",
+ "newline",
+ "lepcha",
"deprecated",
- "insuperscriptsandsubscripts",
- "nshu",
- "injavanese",
- "inbamumsupplement",
- "hangul",
- "unifiedideograph",
- "tavt",
- "othermath",
- "pahawhhmong",
+ "buhd",
+ "inglagolitic",
+ "inaegeannumbers",
+ "modifiersymbol",
+ "surrogate",
+ "inletterlikesymbols",
+ "idstrinaryoperator",
+ "intagalog",
+ "tangut",
+ "osmanya",
+ "oalpha",
+ "inphagspa",
+ "ugaritic",
+ "otheridcontinue",
+ "inarabicpresentationformsb",
+ "inbassavah",
+ "other",
+ "othernumber",
"sylotinagri",
+ "ingothic",
+ "inbuhid",
+ "inlatin1supplement",
+ "intagbanwa",
+ "shaw",
+ "oldhungarian",
+ "inmahjongtiles",
"hung",
+ "tifinagh",
+ "inbopomofo",
+ "narb",
+ "inyisyllables",
"kayahli",
- "inpahawhhmong",
- "upper",
- "inalchemicalsymbols",
- "nbat",
- "nabataean",
- "uppercase",
- "hebr",
- "inmahjongtiles",
- "oldnortharabian",
- "inarabicsupplement",
+ "otheralphabetic",
+ "phagspa",
+ "inprivateusearea",
+ "elba",
+ "nchar",
+ "spaceseparator",
"tibt",
+ "extendedpictographic",
"tibetan",
- "inhighprivateusesurrogates",
- "insupplementalarrowsa",
- "inarabicpresentationformsb",
- "otherdefaultignorablecodepoint",
+ "sgnw",
+ "hexdigit",
+ "tfng",
+ "inbamumsupplement",
+ "tavt",
+ "incombininghalfmarks",
+ "inarabicmathematicalalphabeticsymbols",
+ "khudawadi",
+ "inhalfwidthandfullwidthforms",
+ "inhangulsyllables",
+ "elym",
"symbol",
+ "bassavah",
+ "elymaic",
+ "changeswhencasemapped",
+ "oldturkic",
"inplayingcards",
- "inhalfwidthandfullwidthforms",
+ "zp",
+ "elbasan",
+ "buhid",
+ "noncharactercodepoint",
+ "finalpunctuation",
+ "inpsalterpahlavi",
+ "inpaucinhau",
+ "nonspacingmark",
+ "changeswhentitlecased",
+ "inindicsiyaqnumbers",
+ "phlp",
"wspace",
- "tfng",
- "insupplementalmathematicaloperators",
- "insupplementalarrowsc",
- "inhanguljamoextendedb",
- "aghb",
+ "nbat",
+ "hluw",
"cypriot",
- "nushu",
- "tifinagh",
- "otherpunctuation",
- "alphabetic",
+ "nabataean",
+ "inalchemicalsymbols",
"dupl",
- "tglg",
- "changeswhencasefolded",
- "tagalog",
- "modifiersymbol",
- "any",
- "inglagoliticsupplement",
- "ethiopic",
- "uppercaseletter",
+ "otherlowercase",
+ "inarabicsupplement",
+ "inalphabeticpresentationforms",
+ "otherletter",
+ "emojipresentation",
+ "changeswhenlowercased",
"dashpunctuation",
- "hanifirohingya",
- "inyijinghexagramsymbols",
+ "oldsogdian",
+ "intangutcomponents",
+ "soyombo",
+ "paragraphseparator",
+ "changeswhencasefolded",
+ "othersymbol",
+ "inlatinextendedb",
+ "otheruppercase",
+ "otheridstart",
+ "inhebrew",
+ "oldnortharabian",
+ "omath",
"incypriotsyllabary",
+ "inmathematicaloperators",
+ "changeswhenuppercased",
+ "nshu",
+ "insuperscriptsandsubscripts",
+ "ogrext",
+ "inhanguljamoextendedb",
+ "alphabetic",
+ "dep",
+ "oupper",
+ "zyyy",
+ "aghb",
+ "ogham",
"rejang",
- "defaultignorablecodepoint",
"tagb",
- "dep",
- "inyisyllables",
+ "hyphen",
+ "insupplementalarrowsa",
+ "inpahawhhmong",
+ "nushu",
+ "othermath",
+ "insupplementalarrowsc",
+ "insupplementalmathematicaloperators",
+ "otherdefaultignorablecodepoint",
+ "inhighprivateusesurrogates",
+ "duployan",
"oldsoutharabian",
- "inlatinextendedb",
- "insupplementalpunctuation",
- "othergraphemeextend",
+ "tglg",
+ "tagalog",
+ "inbopomofoextended",
+ "signwriting",
+ "inegyptianhieroglyphs",
+ "inegyptianhieroglyphformatcontrols",
+ "upper",
+ "otherpunctuation",
+ "ethiopic",
"hebrew",
+ "telugu",
+ "uppercase",
+ "insupplementalpunctuation",
+ "unifiedideograph",
+ "pahawhhmong",
+ "inglagoliticsupplement",
"inboxdrawing",
+ "uppercaseletter",
+ "othergraphemeextend",
"inhighsurrogates",
- "telugu",
- "inbopomofoextended",
- "soyombo",
- "inegyptianhieroglyphs",
- "openpunctuation",
- "insupplementaryprivateuseareaa",
- "hyphen",
+ "insupplementalarrowsb",
"inhangulcompatibilityjamo",
"egyp",
- "insupplementalarrowsb",
- "duployan",
"insupplementalsymbolsandpictographs",
- "zyyy",
+ "nyiakengpuachuehmong",
+ "insupplementaryprivateuseareaa",
+ "openpunctuation",
"egyptianhieroglyphs",
"insupplementaryprivateuseareab"
};
@@ -26639,2216 +27028,2305 @@ unicode_lookup_property_name (register const char *str, register size_t len)
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1},
- {pool_offset(10), 235},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(10), 238},
+ {-1}, {-1}, {-1},
- {pool_offset(17), 124},
+ {pool_offset(14), 262},
+ {-1},
- {pool_offset(18), 257},
- {-1}, {-1}, {-1},
+ {pool_offset(16), 261},
+
+ {pool_offset(17), 125},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(22), 53},
+ {pool_offset(24), 154},
+
+ {pool_offset(25), 261},
{-1},
- {pool_offset(24), 258},
+ {pool_offset(27), 53},
- {pool_offset(25), 153},
+ {pool_offset(28), 139},
{-1},
- {pool_offset(27), 257},
+ {pool_offset(30), 142},
{-1}, {-1},
- {pool_offset(30), 40},
+ {pool_offset(33), 252},
- {pool_offset(31), 141},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(34), 295},
+
+ {pool_offset(35), 40},
+ {-1},
- {pool_offset(39), 129},
+ {pool_offset(37), 130},
- {pool_offset(40), 120},
+ {pool_offset(38), 121},
- {pool_offset(41), 120},
+ {pool_offset(39), 121},
{-1}, {-1}, {-1},
- {pool_offset(45), 152},
+ {pool_offset(43), 153},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(46), 138},
+ {pool_offset(51), 283},
+ {-1},
- {pool_offset(47), 146},
+ {pool_offset(53), 54},
{-1}, {-1},
- {pool_offset(50), 54},
+ {pool_offset(56), 147},
+ {-1}, {-1}, {-1},
- {pool_offset(51), 130},
+ {pool_offset(60), 131},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(68), 291},
+ {pool_offset(70), 83},
{-1},
- {pool_offset(70), 279},
-
- {pool_offset(71), 249},
- {-1},
-
- {pool_offset(73), 82},
- {-1},
-
- {pool_offset(75), 202},
+ {pool_offset(72), 205},
{-1}, {-1}, {-1},
- {pool_offset(79), 124},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(76), 125},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(84), 39},
+ {pool_offset(84), 137},
+ {-1},
- {pool_offset(85), 39},
- {-1}, {-1}, {-1},
+ {pool_offset(86), 39},
- {pool_offset(89), 198},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(87), 39},
+ {-1}, {-1},
- {pool_offset(95), 203},
+ {pool_offset(90), 206},
- {pool_offset(96), 112},
+ {pool_offset(91), 150},
{-1}, {-1},
- {pool_offset(99), 149},
+ {pool_offset(94), 87},
{-1},
- {pool_offset(101), 79},
-
- {pool_offset(102), 148},
+ {pool_offset(96), 201},
{-1}, {-1},
- {pool_offset(105), 136},
+ {pool_offset(99), 149},
{-1},
- {pool_offset(107), 136},
- {-1},
-
- {pool_offset(109), 86},
- {-1},
+ {pool_offset(101), 460},
- {pool_offset(111), 151},
- {-1},
+ {pool_offset(102), 80},
- {pool_offset(113), 156},
+ {pool_offset(103), 87},
+ {-1}, {-1}, {-1},
- {pool_offset(114), 156},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(107), 157},
- {pool_offset(120), 143},
+ {pool_offset(108), 157},
{-1},
- {pool_offset(122), 37},
+ {pool_offset(110), 113},
+
+ {pool_offset(111), 152},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(120), 137},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1},
- {pool_offset(132), 45},
- {-1}, {-1},
+ {pool_offset(133), 144},
- {pool_offset(135), 86},
- {-1}, {-1},
+ {pool_offset(134), 45},
+ {-1}, {-1}, {-1}, {-1},
- {pool_offset(138), 456},
+ {pool_offset(139), 446},
{-1}, {-1},
- {pool_offset(141), 140},
- {-1},
+ {pool_offset(142), 463},
+ {-1}, {-1}, {-1},
- {pool_offset(143), 442},
+ {pool_offset(146), 277},
+ {-1}, {-1}, {-1}, {-1},
- {pool_offset(144), 273},
+ {pool_offset(151), 512},
- {pool_offset(145), 459},
+ {pool_offset(152), 516},
{-1}, {-1}, {-1},
- {pool_offset(149), 55},
+ {pool_offset(156), 37},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(156), 504},
+ {pool_offset(163), 478},
+ {-1}, {-1},
- {pool_offset(157), 508},
+ {pool_offset(166), 55},
{-1}, {-1},
- {pool_offset(160), 105},
+ {pool_offset(169), 141},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1},
+
+ {pool_offset(182), 301},
+ {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(187), 503},
+ {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(192), 106},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(168), 473},
- {-1},
+ {pool_offset(200), 517},
+ {-1}, {-1}, {-1},
- {pool_offset(170), 38},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1},
+ {pool_offset(204), 314},
+ {-1}, {-1},
- {pool_offset(181), 196},
+ {pool_offset(207), 38},
{-1},
- {pool_offset(183), 128},
- {-1}, {-1}, {-1},
+ {pool_offset(209), 207},
+ {-1},
- {pool_offset(187), 142},
+ {pool_offset(211), 129},
- {pool_offset(188), 297},
+ {pool_offset(212), 143},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(189), 251},
+ {pool_offset(219), 199},
- {pool_offset(190), 251},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(220), 309},
- {pool_offset(199), 509},
+ {pool_offset(221), 437},
{-1},
- {pool_offset(201), 150},
+ {pool_offset(223), 464},
{-1},
- {pool_offset(203), 460},
+ {pool_offset(225), 137},
- {pool_offset(204), 499},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(226), 506},
+ {-1}, {-1}, {-1}, {-1},
- {pool_offset(210), 497},
+ {pool_offset(231), 151},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(211), 305},
+ {pool_offset(238), 177},
- {pool_offset(212), 433},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(239), 492},
- {pool_offset(217), 204},
+ {pool_offset(240), 271},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1},
- {pool_offset(219), 119},
+ {pool_offset(251), 306},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(220), 267},
+ {pool_offset(257), 480},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1},
- {pool_offset(222), 310},
- {-1}, {-1},
+ {pool_offset(268), 139},
+ {-1}, {-1}, {-1},
- {pool_offset(225), 174},
- {-1},
+ {pool_offset(272), 344},
+ {-1}, {-1}, {-1}, {-1},
- {pool_offset(227), 136},
+ {pool_offset(277), 120},
{-1},
- {pool_offset(229), 487},
+ {pool_offset(279), 144},
+ {-1}, {-1}, {-1},
- {pool_offset(230), 43},
- {-1},
+ {pool_offset(283), 505},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(290), 146},
+ {-1}, {-1},
- {pool_offset(232), 302},
+ {pool_offset(293), 43},
+ {-1},
- {pool_offset(233), 145},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(295), 496},
{-1}, {-1},
- {pool_offset(245), 475},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(298), 264},
+ {-1}, {-1}, {-1},
- {pool_offset(251), 143},
+ {pool_offset(302), 22},
+ {-1}, {-1},
- {pool_offset(252), 498},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(305), 210},
- {pool_offset(257), 138},
+ {pool_offset(306), 105},
{-1}, {-1},
- {pool_offset(260), 56},
+ {pool_offset(309), 284},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(261), 340},
+ {pool_offset(316), 22},
+ {-1},
- {pool_offset(262), 22},
- {-1}, {-1},
+ {pool_offset(318), 500},
- {pool_offset(265), 260},
+ {pool_offset(319), 501},
+ {-1},
- {pool_offset(266), 104},
+ {pool_offset(321), 56},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(275), 196},
+ {pool_offset(330), 199},
+ {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(335), 108},
- {pool_offset(276), 22},
+ {pool_offset(336), 122},
{-1}, {-1}, {-1},
- {pool_offset(280), 280},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-
- {pool_offset(290), 495},
+ {pool_offset(340), 122},
{-1},
- {pool_offset(292), 490},
+ {pool_offset(342), 212},
+ {-1}, {-1},
- {pool_offset(293), 207},
- {-1},
+ {pool_offset(345), 282},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(295), 494},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(352), 320},
+ {-1}, {-1},
- {pool_offset(301), 262},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1},
+ {pool_offset(355), 375},
- {pool_offset(314), 57},
- {-1}, {-1}, {-1},
+ {pool_offset(356), 275},
+
+ {pool_offset(357), 298},
+ {-1},
- {pool_offset(318), 271},
+ {pool_offset(359), 405},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(319), 401},
- {-1}, {-1}, {-1},
+ {pool_offset(367), 476},
+ {-1},
- {pool_offset(323), 121},
+ {pool_offset(369), 266},
{-1}, {-1},
- {pool_offset(326), 107},
+ {pool_offset(372), 149},
+ {-1}, {-1},
- {pool_offset(327), 121},
- {-1},
+ {pool_offset(375), 254},
+
+ {pool_offset(376), 254},
+ {-1}, {-1},
- {pool_offset(329), 209},
+ {pool_offset(379), 205},
+ {-1}, {-1}, {-1},
+
+ {pool_offset(383), 57},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(336), 316},
+ {pool_offset(399), 280},
+ {-1},
+
+ {pool_offset(401), 207},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(415), 491},
{-1},
- {pool_offset(347), 204},
+ {pool_offset(417), 141},
{-1},
- {pool_offset(349), 278},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(419), 119},
- {pool_offset(355), 148},
- {-1}, {-1},
+ {pool_offset(420), 208},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(358), 276},
+ {pool_offset(427), 66},
+ {-1}, {-1}, {-1},
- {pool_offset(359), 205},
+ {pool_offset(431), 521},
{-1},
- {pool_offset(361), 294},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(433), 62},
+ {-1}, {-1},
- {pool_offset(367), 118},
- {-1}, {-1}, {-1},
+ {pool_offset(436), 150},
- {pool_offset(371), 481},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(437), 155},
+ {-1}, {-1}, {-1},
- {pool_offset(376), 371},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(441), 104},
+ {-1}, {-1}, {-1},
- {pool_offset(382), 14},
+ {pool_offset(445), 113},
+ {-1}, {-1}, {-1},
- {pool_offset(383), 202},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(449), 108},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(388), 471},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(456), 372},
- {pool_offset(393), 21},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1},
+ {pool_offset(457), 450},
- {pool_offset(405), 368},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(458), 259},
{-1}, {-1},
- {pool_offset(417), 446},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(461), 34},
+ {-1},
- {pool_offset(423), 140},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(463), 299},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(429), 155},
+ {pool_offset(472), 14},
+ {-1},
- {pool_offset(430), 295},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(474), 54},
+ {-1}, {-1},
- {pool_offset(435), 112},
- {-1},
+ {pool_offset(477), 21},
- {pool_offset(437), 149},
+ {pool_offset(478), 156},
{-1},
- {pool_offset(439), 486},
- {-1},
+ {pool_offset(480), 406},
- {pool_offset(441), 467},
+ {pool_offset(481), 471},
+ {-1}, {-1}, {-1},
- {pool_offset(442), 107},
+ {pool_offset(485), 119},
{-1},
- {pool_offset(444), 154},
+ {pool_offset(487), 495},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1},
- {pool_offset(447), 489},
- {-1}, {-1}, {-1}, {-1}, {-1},
-
- {pool_offset(453), 421},
- {-1}, {-1}, {-1},
+ {pool_offset(499), 412},
- {pool_offset(457), 425},
+ {pool_offset(500), 462},
+ {-1}, {-1},
- {pool_offset(458), 415},
+ {pool_offset(503), 86},
- {pool_offset(459), 103},
+ {pool_offset(504), 112},
{-1}, {-1},
- {pool_offset(462), 54},
-
- {pool_offset(463), 113},
+ {pool_offset(507), 112},
{-1},
- {pool_offset(465), 402},
- {-1}, {-1},
+ {pool_offset(509), 425},
+ {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(514), 419},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1},
- {pool_offset(468), 118},
+ {pool_offset(528), 489},
+
+ {pool_offset(529), 114},
+ {-1}, {-1},
- {pool_offset(469), 34},
+ {pool_offset(532), 43},
+ {-1}, {-1}, {-1},
- {pool_offset(470), 513},
+ {pool_offset(536), 538},
{-1},
- {pool_offset(472), 252},
+ {pool_offset(538), 429},
+ {-1},
- {pool_offset(473), 255},
- {-1}, {-1}, {-1},
+ {pool_offset(540), 537},
+ {-1}, {-1}, {-1}, {-1},
- {pool_offset(477), 6},
+ {pool_offset(545), 550},
+ {-1},
- {pool_offset(478), 543},
+ {pool_offset(547), 167},
{-1},
- {pool_offset(480), 43},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(549), 259},
- {pool_offset(487), 527},
+ {pool_offset(550), 515},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(488), 85},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(558), 555},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(495), 111},
+ {pool_offset(564), 548},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(496), 408},
+ {pool_offset(573), 33},
{-1},
- {pool_offset(498), 111},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1},
+ {pool_offset(575), 439},
+ {-1}, {-1},
- {pool_offset(511), 351},
- {-1}, {-1}, {-1},
+ {pool_offset(578), 195},
+ {-1},
- {pool_offset(515), 192},
+ {pool_offset(580), 436},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(516), 432},
+ {pool_offset(588), 355},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(517), 538},
+ {pool_offset(594), 260},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(526), 458},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(603), 209},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(532), 536},
+ {pool_offset(619), 325},
- {pool_offset(533), 165},
+ {pool_offset(620), 472},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1},
- {pool_offset(536), 484},
- {-1}, {-1},
+ {pool_offset(632), 66},
+ {-1},
- {pool_offset(539), 255},
- {-1}, {-1}, {-1},
+ {pool_offset(634), 82},
- {pool_offset(543), 131},
- {-1},
+ {pool_offset(635), 434},
+ {-1}, {-1}, {-1},
- {pool_offset(545), 430},
- {-1}, {-1},
+ {pool_offset(639), 151},
+ {-1}, {-1}, {-1},
- {pool_offset(548), 48},
+ {pool_offset(643), 296},
{-1}, {-1}, {-1}, {-1},
- {pool_offset(553), 507},
+ {pool_offset(648), 197},
+
+ {pool_offset(649), 225},
{-1}, {-1},
- {pool_offset(556), 206},
+ {pool_offset(652), 522},
+ {-1}, {-1}, {-1},
+
+ {pool_offset(656), 285},
+
+ {pool_offset(657), 133},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(564), 81},
+ {pool_offset(665), 227},
- {pool_offset(565), 526},
+ {pool_offset(666), 431},
{-1},
- {pool_offset(567), 33},
- {-1},
+ {pool_offset(668), 396},
- {pool_offset(569), 435},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1},
+ {pool_offset(669), 562},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(580), 292},
+ {pool_offset(677), 102},
- {pool_offset(581), 256},
+ {pool_offset(678), 461},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1},
- {pool_offset(582), 392},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(699), 395},
+ {-1},
- {pool_offset(588), 150},
+ {pool_offset(701), 100},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(589), 427},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(707), 230},
- {pool_offset(597), 194},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(708), 26},
- {pool_offset(604), 321},
- {-1},
+ {pool_offset(709), 520},
- {pool_offset(606), 109},
+ {pool_offset(710), 380},
{-1}, {-1}, {-1}, {-1},
- {pool_offset(611), 468},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-
- {pool_offset(619), 376},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(715), 110},
+ {-1}, {-1},
- {pool_offset(626), 224},
+ {pool_offset(718), 348},
{-1}, {-1}, {-1},
- {pool_offset(630), 193},
-
- {pool_offset(631), 132},
-
- {pool_offset(632), 549},
- {-1}, {-1},
+ {pool_offset(722), 255},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(635), 281},
+ {pool_offset(728), 543},
+ {-1}, {-1}, {-1},
- {pool_offset(636), 391},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(732), 28},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(641), 101},
+ {pool_offset(739), 85},
+ {-1},
- {pool_offset(642), 222},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(741), 28},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(656), 13},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(749), 197},
+ {-1}, {-1},
- {pool_offset(670), 227},
+ {pool_offset(752), 393},
- {pool_offset(671), 26},
+ {pool_offset(753), 175},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(672), 457},
+ {pool_offset(760), 27},
{-1}, {-1},
- {pool_offset(675), 194},
+ {pool_offset(763), 163},
+ {-1},
- {pool_offset(676), 518},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(765), 13},
+ {-1},
- {pool_offset(690), 99},
+ {pool_offset(767), 103},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(699), 531},
+ {pool_offset(776), 7},
{-1},
- {pool_offset(701), 27},
- {-1},
+ {pool_offset(778), 269},
+ {-1}, {-1}, {-1},
- {pool_offset(703), 315},
- {-1},
+ {pool_offset(782), 322},
- {pool_offset(705), 172},
+ {pool_offset(783), 527},
{-1},
- {pool_offset(707), 349},
+ {pool_offset(785), 318},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(794), 216},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(809), 216},
+ {-1}, {-1}, {-1},
+
+ {pool_offset(813), 215},
{-1}, {-1},
- {pool_offset(710), 344},
+ {pool_offset(816), 410},
+ {-1}, {-1}, {-1},
+
+ {pool_offset(820), 25},
+ {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(826), 127},
+
+ {pool_offset(827), 198},
+
+ {pool_offset(828), 196},
- {pool_offset(711), 84},
+ {pool_offset(829), 347},
- {pool_offset(712), 512},
+ {pool_offset(830), 2},
{-1}, {-1}, {-1},
- {pool_offset(716), 357},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(834), 353},
- {pool_offset(721), 535},
- {-1},
+ {pool_offset(835), 128},
- {pool_offset(723), 249},
+ {pool_offset(836), 528},
- {pool_offset(724), 389},
+ {pool_offset(837), 264},
- {pool_offset(725), 102},
+ {pool_offset(838), 457},
+
+ {pool_offset(839), 226},
{-1}, {-1}, {-1},
- {pool_offset(729), 260},
+ {pool_offset(843), 361},
- {pool_offset(730), 265},
+ {pool_offset(844), 442},
- {pool_offset(731), 127},
+ {pool_offset(845), 29},
- {pool_offset(732), 314},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(846), 200},
+ {-1},
- {pool_offset(738), 343},
+ {pool_offset(848), 547},
{-1},
- {pool_offset(740), 212},
+ {pool_offset(850), 148},
+ {-1}, {-1}, {-1}, {-1},
- {pool_offset(741), 28},
+ {pool_offset(855), 44},
+ {-1}, {-1},
- {pool_offset(742), 213},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(858), 25},
{-1},
- {pool_offset(753), 126},
- {-1}, {-1},
+ {pool_offset(860), 148},
+ {-1}, {-1}, {-1}, {-1},
- {pool_offset(756), 7},
+ {pool_offset(865), 91},
+ {-1}, {-1}, {-1},
- {pool_offset(757), 213},
+ {pool_offset(869), 293},
- {pool_offset(758), 406},
+ {pool_offset(870), 91},
- {pool_offset(759), 318},
+ {pool_offset(871), 483},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(760), 195},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(879), 94},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(767), 28},
- {-1}, {-1},
+ {pool_offset(887), 525},
+ {-1}, {-1}, {-1},
- {pool_offset(770), 223},
- {-1}, {-1},
+ {pool_offset(891), 398},
+
+ {pool_offset(892), 202},
+ {-1},
+
+ {pool_offset(894), 468},
+ {-1},
- {pool_offset(773), 25},
+ {pool_offset(896), 102},
{-1}, {-1}, {-1}, {-1},
- {pool_offset(778), 519},
+ {pool_offset(901), 94},
+ {-1}, {-1}, {-1},
+
+ {pool_offset(905), 218},
- {pool_offset(779), 248},
- {-1},
+ {pool_offset(906), 482},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(781), 521},
+ {pool_offset(913), 101},
+ {-1},
- {pool_offset(782), 179},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(915), 38},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(791), 364},
+ {pool_offset(923), 98},
{-1},
- {pool_offset(793), 29},
+ {pool_offset(925), 153},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1},
- {pool_offset(794), 438},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(939), 449},
- {pool_offset(801), 25},
+ {pool_offset(940), 444},
{-1}, {-1}, {-1}, {-1},
- {pool_offset(806), 215},
+ {pool_offset(945), 507},
- {pool_offset(807), 289},
+ {pool_offset(946), 272},
+ {-1}, {-1}, {-1},
- {pool_offset(808), 453},
+ {pool_offset(950), 486},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1},
- {pool_offset(809), 478},
+ {pool_offset(972), 103},
{-1}, {-1}, {-1}, {-1},
- {pool_offset(814), 88},
+ {pool_offset(977), 106},
+ {-1}, {-1}, {-1},
+
+ {pool_offset(981), 368},
{-1}, {-1},
- {pool_offset(817), 2},
+ {pool_offset(984), 64},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(993), 41},
{-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(823), 480},
+ {pool_offset(999), 81},
+ {-1}, {-1},
- {pool_offset(824), 155},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1002), 470},
+ {-1}, {-1}, {-1},
- {pool_offset(833), 500},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1006), 433},
+ {-1},
- {pool_offset(838), 394},
+ {pool_offset(1008), 408},
- {pool_offset(839), 79},
+ {pool_offset(1009), 530},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(846), 105},
+ {pool_offset(1016), 110},
+ {-1}, {-1}, {-1},
+
+ {pool_offset(1020), 214},
{-1}, {-1},
- {pool_offset(849), 443},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1023), 494},
+ {-1},
- {pool_offset(854), 334},
+ {pool_offset(1025), 64},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(1035), 374},
+ {-1}, {-1}, {-1},
+
+ {pool_offset(1039), 118},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(1047), 52},
{-1}, {-1},
- {pool_offset(857), 445},
+ {pool_offset(1050), 363},
{-1},
- {pool_offset(859), 197},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1052), 16},
- {pool_offset(866), 38},
+ {pool_offset(1053), 204},
+ {-1}, {-1},
- {pool_offset(867), 80},
+ {pool_offset(1056), 52},
{-1}, {-1},
- {pool_offset(870), 268},
+ {pool_offset(1059), 143},
+ {-1}, {-1},
- {pool_offset(871), 101},
- {-1}, {-1}, {-1},
+ {pool_offset(1062), 484},
- {pool_offset(875), 464},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1063), 224},
+ {-1}, {-1},
- {pool_offset(884), 152},
+ {pool_offset(1066), 6},
+ {-1},
- {pool_offset(885), 109},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1068), 86},
- {pool_offset(890), 100},
+ {pool_offset(1069), 260},
{-1},
- {pool_offset(892), 466},
+ {pool_offset(1071), 485},
- {pool_offset(893), 180},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1072), 31},
+ {-1},
- {pool_offset(898), 325},
+ {pool_offset(1074), 11},
{-1},
- {pool_offset(900), 298},
+ {pool_offset(1076), 120},
{-1},
- {pool_offset(902), 53},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1078), 89},
- {pool_offset(907), 127},
+ {pool_offset(1079), 158},
+ {-1}, {-1},
- {pool_offset(908), 71},
- {-1}, {-1}, {-1},
+ {pool_offset(1082), 89},
+ {-1},
- {pool_offset(912), 440},
- {-1}, {-1}, {-1},
+ {pool_offset(1084), 46},
+ {-1},
- {pool_offset(916), 429},
+ {pool_offset(1086), 45},
- {pool_offset(917), 311},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1087), 156},
- {pool_offset(922), 52},
+ {pool_offset(1088), 111},
- {pool_offset(923), 52},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1089), 479},
- {pool_offset(928), 370},
+ {pool_offset(1090), 84},
{-1},
- {pool_offset(930), 201},
+ {pool_offset(1092), 488},
+ {-1}, {-1},
- {pool_offset(931), 142},
+ {pool_offset(1095), 308},
{-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(937), 58},
+ {pool_offset(1101), 447},
- {pool_offset(938), 46},
+ {pool_offset(1102), 531},
{-1},
- {pool_offset(940), 45},
- {-1}, {-1},
+ {pool_offset(1104), 536},
+
+ {pool_offset(1105), 117},
+ {-1},
- {pool_offset(943), 404},
+ {pool_offset(1107), 338},
- {pool_offset(944), 359},
+ {pool_offset(1108), 80},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(1117), 329},
+
+ {pool_offset(1118), 400},
{-1}, {-1},
- {pool_offset(947), 110},
- {-1}, {-1}, {-1},
+ {pool_offset(1121), 115},
+ {-1}, {-1},
- {pool_offset(951), 83},
+ {pool_offset(1124), 292},
+ {-1},
- {pool_offset(952), 102},
+ {pool_offset(1126), 142},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(953), 181},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1132), 26},
- {pool_offset(962), 16},
+ {pool_offset(1133), 263},
{-1}, {-1},
- {pool_offset(965), 474},
+ {pool_offset(1136), 182},
- {pool_offset(966), 41},
+ {pool_offset(1137), 328},
+
+ {pool_offset(1138), 126},
{-1}, {-1},
- {pool_offset(969), 211},
+ {pool_offset(1141), 304},
+ {-1},
- {pool_offset(970), 221},
+ {pool_offset(1143), 257},
- {pool_offset(971), 141},
+ {pool_offset(1144), 302},
+ {-1}, {-1}, {-1}, {-1},
- {pool_offset(972), 304},
+ {pool_offset(1149), 454},
+ {-1}, {-1}, {-1}, {-1},
- {pool_offset(973), 85},
- {-1}, {-1},
+ {pool_offset(1154), 378},
+ {-1},
- {pool_offset(976), 286},
+ {pool_offset(1156), 16},
- {pool_offset(977), 50},
+ {pool_offset(1157), 499},
{-1}, {-1}, {-1}, {-1},
- {pool_offset(982), 116},
+ {pool_offset(1162), 297},
- {pool_offset(983), 114},
- {-1}, {-1}, {-1},
+ {pool_offset(1163), 448},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(987), 157},
- {-1},
+ {pool_offset(1169), 132},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(989), 88},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1178), 240},
- {pool_offset(995), 119},
+ {pool_offset(1179), 315},
{-1},
- {pool_offset(997), 300},
- {-1},
+ {pool_offset(1181), 390},
- {pool_offset(999), 324},
+ {pool_offset(1182), 58},
- {pool_offset(1000), 252},
+ {pool_offset(1183), 3},
{-1}, {-1},
- {pool_offset(1003), 117},
+ {pool_offset(1186), 72},
- {pool_offset(1004), 522},
- {-1}, {-1},
+ {pool_offset(1187), 219},
+ {-1},
- {pool_offset(1007), 130},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1},
+ {pool_offset(1189), 58},
+ {-1}, {-1},
- {pool_offset(1020), 293},
- {-1}, {-1}, {-1},
+ {pool_offset(1192), 48},
+ {-1},
- {pool_offset(1024), 31},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1194), 95},
+ {-1}, {-1},
- {pool_offset(1034), 66},
+ {pool_offset(1197), 126},
+ {-1}, {-1}, {-1},
- {pool_offset(1035), 472},
+ {pool_offset(1201), 237},
- {pool_offset(1036), 19},
- {-1},
+ {pool_offset(1202), 336},
- {pool_offset(1038), 413},
+ {pool_offset(1203), 349},
{-1},
- {pool_offset(1040), 62},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-
- {pool_offset(1048), 17},
- {-1},
+ {pool_offset(1205), 19},
- {pool_offset(1050), 345},
+ {pool_offset(1206), 276},
{-1},
- {pool_offset(1052), 16},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-
- {pool_offset(1060), 479},
-
- {pool_offset(1061), 3},
-
- {pool_offset(1062), 256},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1208), 504},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1067), 11},
+ {pool_offset(1215), 346},
{-1},
- {pool_offset(1069), 201},
- {-1},
+ {pool_offset(1217), 17},
- {pool_offset(1071), 73},
+ {pool_offset(1218), 411},
- {pool_offset(1072), 115},
+ {pool_offset(1219), 240},
+ {-1}, {-1}, {-1}, {-1},
- {pool_offset(1073), 483},
+ {pool_offset(1224), 116},
{-1}, {-1}, {-1},
- {pool_offset(1077), 49},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1228), 384},
+ {-1}, {-1},
- {pool_offset(1082), 26},
- {-1}, {-1}, {-1},
+ {pool_offset(1231), 210},
+ {-1},
- {pool_offset(1086), 270},
+ {pool_offset(1233), 135},
- {pool_offset(1087), 342},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1},
+ {pool_offset(1234), 135},
- {pool_offset(1100), 216},
+ {pool_offset(1235), 290},
+ {-1},
- {pool_offset(1101), 106},
+ {pool_offset(1237), 214},
- {pool_offset(1102), 332},
+ {pool_offset(1238), 124},
+ {-1},
- {pool_offset(1103), 114},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1},
+ {pool_offset(1240), 107},
+ {-1},
- {pool_offset(1125), 211},
+ {pool_offset(1242), 95},
{-1},
- {pool_offset(1127), 183},
+ {pool_offset(1244), 255},
+ {-1},
- {pool_offset(1128), 15},
- {-1}, {-1}, {-1},
+ {pool_offset(1246), 129},
- {pool_offset(1132), 115},
+ {pool_offset(1247), 560},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1138), 272},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1262), 159},
+ {-1}, {-1},
+
+ {pool_offset(1265), 159},
+ {-1},
- {pool_offset(1145), 407},
+ {pool_offset(1267), 134},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1153), 454},
- {-1}, {-1},
+ {pool_offset(1275), 115},
- {pool_offset(1156), 146},
+ {pool_offset(1276), 279},
+ {-1},
- {pool_offset(1157), 80},
+ {pool_offset(1278), 211},
{-1}, {-1},
- {pool_offset(1160), 367},
+ {pool_offset(1281), 116},
{-1}, {-1}, {-1}, {-1},
- {pool_offset(1165), 144},
-
- {pool_offset(1166), 207},
+ {pool_offset(1286), 307},
{-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1172), 81},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-
- {pool_offset(1179), 74},
-
- {pool_offset(1180), 247},
- {-1}, {-1}, {-1}, {-1},
-
- {pool_offset(1185), 133},
+ {pool_offset(1292), 183},
{-1}, {-1}, {-1},
- {pool_offset(1189), 208},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-
- {pool_offset(1198), 380},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1296), 232},
+ {-1}, {-1}, {-1},
- {pool_offset(1203), 29},
+ {pool_offset(1300), 319},
{-1},
- {pool_offset(1205), 34},
+ {pool_offset(1302), 131},
{-1},
- {pool_offset(1207), 159},
+ {pool_offset(1304), 145},
{-1},
- {pool_offset(1209), 229},
-
- {pool_offset(1210), 170},
- {-1},
+ {pool_offset(1306), 34},
+ {-1}, {-1}, {-1}, {-1},
- {pool_offset(1212), 547},
+ {pool_offset(1311), 82},
- {pool_offset(1213), 66},
+ {pool_offset(1312), 477},
{-1}, {-1}, {-1},
- {pool_offset(1217), 82},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1316), 497},
+
+ {pool_offset(1317), 21},
+ {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(1322), 217},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1223), 533},
+ {pool_offset(1329), 90},
{-1}, {-1}, {-1},
- {pool_offset(1227), 170},
+ {pool_offset(1333), 244},
+ {-1}, {-1}, {-1},
- {pool_offset(1228), 185},
+ {pool_offset(1337), 198},
- {pool_offset(1229), 187},
+ {pool_offset(1338), 267},
- {pool_offset(1230), 209},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1339), 421},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1239), 166},
+ {pool_offset(1347), 8},
- {pool_offset(1240), 482},
- {-1},
+ {pool_offset(1348), 90},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1242), 451},
+ {pool_offset(1354), 83},
- {pool_offset(1243), 214},
+ {pool_offset(1355), 445},
- {pool_offset(1244), 110},
- {-1},
+ {pool_offset(1356), 184},
- {pool_offset(1246), 348},
- {-1}, {-1}, {-1},
+ {pool_offset(1357), 545},
+ {-1}, {-1},
- {pool_offset(1250), 89},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1360), 487},
- {pool_offset(1256), 333},
- {-1},
+ {pool_offset(1361), 474},
- {pool_offset(1258), 195},
+ {pool_offset(1362), 455},
{-1},
- {pool_offset(1260), 175},
+ {pool_offset(1364), 558},
+
+ {pool_offset(1365), 74},
{-1}, {-1},
- {pool_offset(1263), 190},
+ {pool_offset(1368), 251},
+ {-1}, {-1}, {-1}, {-1},
- {pool_offset(1264), 106},
+ {pool_offset(1373), 31},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1265), 164},
+ {pool_offset(1379), 204},
- {pool_offset(1266), 164},
+ {pool_offset(1380), 124},
{-1}, {-1}, {-1},
- {pool_offset(1270), 186},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1384), 160},
+ {-1}, {-1}, {-1},
- {pool_offset(1276), 488},
+ {pool_offset(1388), 546},
{-1}, {-1}, {-1},
- {pool_offset(1280), 452},
- {-1}, {-1},
+ {pool_offset(1392), 158},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1283), 8},
+ {pool_offset(1398), 111},
- {pool_offset(1284), 123},
+ {pool_offset(1399), 386},
{-1},
- {pool_offset(1286), 89},
+ {pool_offset(1401), 274},
+ {-1},
- {pool_offset(1287), 157},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1403), 469},
+ {-1}, {-1},
- {pool_offset(1293), 33},
- {-1}, {-1}, {-1},
+ {pool_offset(1406), 383},
+ {-1}, {-1},
- {pool_offset(1297), 234},
+ {pool_offset(1409), 84},
{-1},
- {pool_offset(1299), 465},
+ {pool_offset(1411), 162},
+
+ {pool_offset(1412), 33},
{-1},
- {pool_offset(1301), 237},
+ {pool_offset(1414), 168},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(1421), 228},
{-1},
- {pool_offset(1303), 31},
+ {pool_offset(1423), 166},
- {pool_offset(1304), 386},
+ {pool_offset(1424), 166},
+ {-1}, {-1},
- {pool_offset(1305), 545},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1427), 178},
+ {-1}, {-1},
- {pool_offset(1314), 534},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1430), 222},
+ {-1}, {-1}, {-1}, {-1},
- {pool_offset(1320), 161},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1435), 106},
{-1},
- {pool_offset(1331), 122},
- {-1},
+ {pool_offset(1437), 193},
+ {-1}, {-1},
- {pool_offset(1333), 105},
- {-1}, {-1}, {-1},
+ {pool_offset(1440), 107},
+ {-1}, {-1},
- {pool_offset(1337), 382},
+ {pool_offset(1443), 458},
- {pool_offset(1338), 84},
+ {pool_offset(1444), 456},
+ {-1}, {-1}, {-1}, {-1},
- {pool_offset(1339), 214},
+ {pool_offset(1449), 529},
{-1}, {-1}, {-1},
- {pool_offset(1343), 40},
-
- {pool_offset(1344), 72},
+ {pool_offset(1453), 217},
+ {-1},
- {pool_offset(1345), 237},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1455), 371},
{-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1360), 502},
- {-1}, {-1},
+ {pool_offset(1461), 147},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1363), 537},
- {-1}, {-1},
+ {pool_offset(1467), 85},
- {pool_offset(1366), 431},
+ {pool_offset(1468), 29},
{-1}, {-1}, {-1}, {-1},
- {pool_offset(1371), 469},
-
- {pool_offset(1372), 350},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1473), 326},
- {pool_offset(1390), 225},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1474), 81},
- {pool_offset(1395), 259},
+ {pool_offset(1475), 15},
{-1},
- {pool_offset(1397), 476},
-
- {pool_offset(1398), 103},
+ {pool_offset(1477), 196},
+ {-1},
- {pool_offset(1399), 219},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1479), 186},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1404), 125},
+ {pool_offset(1486), 67},
{-1}, {-1},
- {pool_offset(1407), 226},
+ {pool_offset(1489), 300},
+ {-1},
+
+ {pool_offset(1491), 136},
- {pool_offset(1408), 30},
- {-1}, {-1},
+ {pool_offset(1492), 136},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1411), 176},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1499), 351},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1420), 30},
- {-1}, {-1},
+ {pool_offset(1506), 47},
- {pool_offset(1423), 241},
- {-1},
+ {pool_offset(1507), 316},
- {pool_offset(1425), 327},
- {-1}, {-1},
+ {pool_offset(1508), 212},
- {pool_offset(1428), 550},
+ {pool_offset(1509), 337},
{-1}, {-1}, {-1},
- {pool_offset(1432), 450},
- {-1}, {-1},
-
- {pool_offset(1435), 221},
- {-1}, {-1},
+ {pool_offset(1513), 75},
- {pool_offset(1438), 218},
+ {pool_offset(1514), 510},
{-1},
- {pool_offset(1440), 493},
+ {pool_offset(1516), 493},
- {pool_offset(1441), 444},
+ {pool_offset(1517), 239},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1442), 448},
- {-1}, {-1}, {-1},
+ {pool_offset(1524), 388},
- {pool_offset(1446), 441},
- {-1},
+ {pool_offset(1525), 53},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1448), 510},
+ {pool_offset(1532), 331},
{-1}, {-1},
- {pool_offset(1451), 516},
+ {pool_offset(1535), 343},
{-1}, {-1},
- {pool_offset(1454), 374},
-
- {pool_offset(1455), 216},
+ {pool_offset(1538), 128},
{-1}, {-1},
- {pool_offset(1458), 147},
+ {pool_offset(1541), 67},
+
+ {pool_offset(1542), 123},
{-1}, {-1},
- {pool_offset(1461), 56},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1545), 30},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1466), 125},
- {-1},
+ {pool_offset(1553), 12},
- {pool_offset(1468), 147},
+ {pool_offset(1554), 88},
+
+ {pool_offset(1555), 435},
{-1},
- {pool_offset(1470), 405},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1557), 30},
+ {-1}, {-1},
- {pool_offset(1478), 307},
- {-1}, {-1}, {-1},
+ {pool_offset(1560), 61},
+ {-1},
+
+ {pool_offset(1562), 287},
+ {-1}, {-1},
- {pool_offset(1482), 90},
+ {pool_offset(1565), 88},
- {pool_offset(1483), 47},
- {-1}, {-1}, {-1},
+ {pool_offset(1566), 394},
- {pool_offset(1487), 90},
+ {pool_offset(1567), 567},
{-1}, {-1},
- {pool_offset(1490), 123},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1570), 109},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1497), 93},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1576), 352},
- {pool_offset(1504), 540},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1577), 60},
+ {-1}, {-1}, {-1}, {-1},
- {pool_offset(1520), 93},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1582), 288},
- {pool_offset(1528), 390},
+ {pool_offset(1583), 324},
{-1},
- {pool_offset(1530), 275},
-
- {pool_offset(1531), 51},
- {-1}, {-1},
-
- {pool_offset(1534), 15},
- {-1}, {-1},
+ {pool_offset(1585), 526},
+ {-1}, {-1}, {-1},
- {pool_offset(1537), 461},
+ {pool_offset(1589), 237},
{-1},
- {pool_offset(1539), 44},
-
- {pool_offset(1540), 462},
+ {pool_offset(1591), 65},
{-1}, {-1},
- {pool_offset(1543), 97},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1594), 97},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1549), 64},
+ {pool_offset(1601), 404},
{-1},
- {pool_offset(1551), 56},
+ {pool_offset(1603), 224},
- {pool_offset(1552), 247},
- {-1}, {-1},
+ {pool_offset(1604), 50},
+ {-1},
+
+ {pool_offset(1606), 221},
- {pool_offset(1555), 163},
+ {pool_offset(1607), 65},
{-1},
- {pool_offset(1557), 21},
+ {pool_offset(1609), 188},
+ {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(1615), 109},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1558), 477},
+ {pool_offset(1621), 140},
- {pool_offset(1559), 175},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1622), 559},
+ {-1},
- {pool_offset(1569), 190},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1624), 219},
{-1},
- {pool_offset(1580), 64},
+ {pool_offset(1626), 140},
+ {-1},
- {pool_offset(1581), 162},
+ {pool_offset(1628), 311},
- {pool_offset(1582), 0},
+ {pool_offset(1629), 481},
{-1},
- {pool_offset(1584), 78},
+ {pool_offset(1631), 173},
{-1},
- {pool_offset(1586), 229},
+ {pool_offset(1633), 452},
+ {-1}, {-1},
- {pool_offset(1587), 169},
+ {pool_offset(1636), 190},
{-1},
- {pool_offset(1589), 263},
+ {pool_offset(1638), 195},
+ {-1}, {-1}, {-1},
- {pool_offset(1590), 417},
+ {pool_offset(1642), 24},
{-1}, {-1},
- {pool_offset(1593), 59},
+ {pool_offset(1645), 561},
- {pool_offset(1594), 104},
- {-1}, {-1},
+ {pool_offset(1646), 473},
- {pool_offset(1597), 546},
+ {pool_offset(1647), 354},
- {pool_offset(1598), 23},
+ {pool_offset(1648), 173},
+ {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(1654), 189},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1605), 236},
+ {pool_offset(1661), 193},
+ {-1},
+
+ {pool_offset(1663), 232},
+ {-1}, {-1},
+
+ {pool_offset(1666), 357},
+ {-1}, {-1},
+
+ {pool_offset(1669), 73},
{-1}, {-1},
- {pool_offset(1608), 514},
+ {pool_offset(1672), 104},
+
+ {pool_offset(1673), 241},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1618), 288},
- {-1}, {-1}, {-1},
+ {pool_offset(1688), 44},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1622), 253},
- {-1},
+ {pool_offset(1694), 549},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1624), 108},
+ {pool_offset(1700), 56},
{-1},
- {pool_offset(1626), 227},
- {-1},
+ {pool_offset(1702), 40},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1628), 396},
- {-1},
+ {pool_offset(1708), 100},
- {pool_offset(1630), 178},
+ {pool_offset(1709), 359},
{-1}, {-1},
- {pool_offset(1633), 198},
+ {pool_offset(1712), 229},
{-1}, {-1},
- {pool_offset(1636), 83},
- {-1},
+ {pool_offset(1715), 179},
+ {-1}, {-1}, {-1}, {-1},
- {pool_offset(1638), 234},
+ {pool_offset(1720), 244},
{-1},
- {pool_offset(1640), 32},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1722), 518},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(1729), 366},
+ {-1}, {-1}, {-1},
+
+ {pool_offset(1733), 417},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1659), 108},
+ {pool_offset(1743), 422},
{-1},
- {pool_offset(1661), 180},
+ {pool_offset(1745), 56},
+ {-1}, {-1}, {-1}, {-1},
- {pool_offset(1662), 174},
+ {pool_offset(1750), 231},
{-1}, {-1},
- {pool_offset(1665), 439},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1753), 563},
{-1}, {-1},
- {pool_offset(1677), 200},
-
- {pool_offset(1678), 1},
- {-1},
-
- {pool_offset(1680), 134},
-
- {pool_offset(1681), 134},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1756), 423},
- {pool_offset(1687), 377},
+ {pool_offset(1757), 465},
{-1}, {-1},
- {pool_offset(1690), 369},
+ {pool_offset(1760), 466},
+ {-1}, {-1},
- {pool_offset(1691), 299},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1763), 152},
- {pool_offset(1697), 398},
- {-1}, {-1}, {-1},
+ {pool_offset(1764), 15},
+ {-1},
- {pool_offset(1701), 24},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1766), 409},
- {pool_offset(1708), 449},
+ {pool_offset(1767), 332},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1},
- {pool_offset(1709), 323},
+ {pool_offset(1781), 162},
- {pool_offset(1710), 284},
+ {pool_offset(1782), 49},
{-1}, {-1},
- {pool_offset(1713), 238},
+ {pool_offset(1785), 59},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1714), 220},
+ {pool_offset(1791), 523},
{-1}, {-1},
- {pool_offset(1717), 347},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-
- {pool_offset(1726), 385},
- {-1},
-
- {pool_offset(1728), 158},
+ {pool_offset(1794), 263},
{-1}, {-1},
- {pool_offset(1731), 158},
- {-1},
+ {pool_offset(1797), 552},
- {pool_offset(1733), 5},
- {-1}, {-1},
+ {pool_offset(1798), 24},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1736), 58},
+ {pool_offset(1808), 105},
+ {-1},
- {pool_offset(1737), 78},
- {-1}, {-1}, {-1},
+ {pool_offset(1810), 32},
+ {-1},
- {pool_offset(1741), 329},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1812), 180},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1749), 485},
+ {pool_offset(1819), 443},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1},
- {pool_offset(1750), 32},
+ {pool_offset(1830), 407},
{-1}, {-1}, {-1},
- {pool_offset(1754), 296},
+ {pool_offset(1834), 138},
{-1}, {-1}, {-1},
- {pool_offset(1758), 339},
+ {pool_offset(1838), 381},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1759), 218},
+ {pool_offset(1845), 138},
+ {-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},
- {pool_offset(1760), 322},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1871), 201},
+ {-1}, {-1}, {-1},
- {pool_offset(1765), 437},
+ {pool_offset(1875), 389},
+ {-1}, {-1},
- {pool_offset(1766), 360},
+ {pool_offset(1878), 228},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1776), 418},
- {-1}, {-1},
+ {pool_offset(1897), 252},
- {pool_offset(1779), 491},
+ {pool_offset(1898), 564},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1},
- {pool_offset(1782), 241},
-
- {pool_offset(1783), 35},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-
- {pool_offset(1791), 282},
- {-1},
+ {pool_offset(1910), 234},
- {pool_offset(1793), 226},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1911), 92},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1798), 94},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1926), 373},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1807), 517},
- {-1},
+ {pool_offset(1932), 291},
- {pool_offset(1809), 320},
- {-1},
+ {pool_offset(1933), 32},
+ {-1}, {-1},
- {pool_offset(1811), 35},
- {-1}, {-1}, {-1},
+ {pool_offset(1936), 1},
- {pool_offset(1815), 554},
+ {pool_offset(1937), 117},
{-1},
- {pool_offset(1817), 301},
+ {pool_offset(1939), 453},
{-1}, {-1},
- {pool_offset(1820), 358},
- {-1}, {-1}, {-1},
-
- {pool_offset(1824), 361},
- {-1},
-
- {pool_offset(1826), 9},
+ {pool_offset(1942), 502},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1827), 217},
+ {pool_offset(1948), 441},
{-1},
- {pool_offset(1829), 67},
+ {pool_offset(1950), 327},
- {pool_offset(1830), 24},
+ {pool_offset(1951), 23},
{-1}, {-1}, {-1},
- {pool_offset(1834), 96},
+ {pool_offset(1955), 340},
{-1}, {-1},
- {pool_offset(1837), 303},
+ {pool_offset(1958), 426},
- {pool_offset(1838), 419},
+ {pool_offset(1959), 230},
+ {-1}, {-1}, {-1}, {-1},
- {pool_offset(1839), 145},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1964), 430},
- {pool_offset(1845), 283},
- {-1}, {-1}, {-1},
+ {pool_offset(1965), 178},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1849), 94},
+ {pool_offset(1972), 42},
- {pool_offset(1850), 128},
+ {pool_offset(1973), 382},
{-1},
- {pool_offset(1852), 400},
- {-1}, {-1}, {-1}, {-1}, {-1},
-
- {pool_offset(1858), 379},
- {-1},
+ {pool_offset(1975), 98},
- {pool_offset(1860), 117},
+ {pool_offset(1976), 392},
{-1}, {-1},
- {pool_offset(1863), 328},
+ {pool_offset(1979), 401},
{-1}, {-1}, {-1}, {-1},
- {pool_offset(1868), 363},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-
- {pool_offset(1875), 326},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1984), 5},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1883), 217},
- {-1}, {-1}, {-1},
+ {pool_offset(1990), 220},
- {pool_offset(1887), 67},
+ {pool_offset(1991), 305},
{-1}, {-1}, {-1}, {-1},
- {pool_offset(1892), 290},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(1996), 399},
- {pool_offset(1898), 355},
+ {pool_offset(1997), 364},
- {pool_offset(1899), 520},
- {-1}, {-1},
+ {pool_offset(1998), 286},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1902), 172},
- {-1},
+ {pool_offset(2004), 459},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1904), 353},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2014), 194},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1911), 182},
- {-1},
+ {pool_offset(2022), 294},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1913), 523},
+ {pool_offset(2029), 273},
{-1},
- {pool_offset(1915), 330},
-
- {pool_offset(1916), 306},
+ {pool_offset(2031), 226},
{-1}, {-1}, {-1}, {-1},
- {pool_offset(1921), 524},
+ {pool_offset(2036), 133},
{-1},
- {pool_offset(1923), 219},
- {-1}, {-1}, {-1},
+ {pool_offset(2038), 250},
- {pool_offset(1927), 403},
- {-1}, {-1}, {-1},
+ {pool_offset(2039), 341},
- {pool_offset(1931), 165},
+ {pool_offset(2040), 146},
{-1}, {-1},
- {pool_offset(1934), 258},
+ {pool_offset(2043), 220},
{-1}, {-1}, {-1},
- {pool_offset(1938), 76},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2047), 403},
- {pool_offset(1943), 193},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2048), 234},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1948), 92},
+ {pool_offset(2054), 9},
{-1},
- {pool_offset(1950), 551},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2056), 96},
+ {-1}, {-1}, {-1}, {-1},
- {pool_offset(1956), 384},
+ {pool_offset(2061), 79},
+ {-1}, {-1},
- {pool_offset(1957), 185},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2064), 303},
+ {-1},
- {pool_offset(1964), 99},
+ {pool_offset(2066), 203},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1965), 422},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2076), 402},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(1972), 135},
+ {pool_offset(2082), 256},
+ {-1},
- {pool_offset(1973), 135},
+ {pool_offset(2084), 35},
{-1}, {-1}, {-1}, {-1},
- {pool_offset(1978), 37},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-
- {pool_offset(1987), 166},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1},
-
- {pool_offset(1999), 60},
+ {pool_offset(2089), 241},
{-1}, {-1}, {-1},
- {pool_offset(2003), 161},
+ {pool_offset(2093), 229},
+
+ {pool_offset(2094), 181},
{-1}, {-1},
- {pool_offset(2006), 515},
- {-1},
+ {pool_offset(2097), 177},
+ {-1}, {-1},
- {pool_offset(2008), 61},
+ {pool_offset(2100), 222},
{-1},
- {pool_offset(2010), 259},
- {-1}, {-1}, {-1}, {-1}, {-1},
-
- {pool_offset(2016), 434},
- {-1}, {-1}, {-1},
+ {pool_offset(2102), 391},
+ {-1}, {-1},
- {pool_offset(2020), 159},
+ {pool_offset(2105), 475},
{-1}, {-1},
- {pool_offset(2023), 393},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2108), 490},
+ {-1}, {-1}, {-1}, {-1},
- {pool_offset(2032), 139},
+ {pool_offset(2113), 245},
{-1}, {-1}, {-1}, {-1},
- {pool_offset(2037), 139},
+ {pool_offset(2118), 245},
+ {-1},
- {pool_offset(2038), 12},
+ {pool_offset(2120), 246},
{-1},
- {pool_offset(2040), 177},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2122), 35},
+ {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2127), 365},
+ {-1},
- {pool_offset(2047), 239},
+ {pool_offset(2129), 4},
{-1}, {-1},
- {pool_offset(2050), 182},
+ {pool_offset(2132), 60},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2051), 233},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2149), 233},
- {pool_offset(2057), 122},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2150), 333},
- {pool_offset(2062), 57},
+ {pool_offset(2151), 262},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2063), 192},
+ {pool_offset(2159), 367},
+ {-1}, {-1}, {-1},
- {pool_offset(2064), 44},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2163), 532},
+ {-1}, {-1}, {-1}, {-1},
- {pool_offset(2070), 436},
+ {pool_offset(2168), 556},
+ {-1},
- {pool_offset(2071), 455},
+ {pool_offset(2170), 163},
{-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2077), 238},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2176), 249},
+ {-1},
- {pool_offset(2084), 171},
+ {pool_offset(2178), 249},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2085), 132},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2184), 335},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2092), 242},
- {-1}, {-1},
+ {pool_offset(2193), 79},
+ {-1}, {-1}, {-1},
- {pool_offset(2095), 312},
+ {pool_offset(2197), 256},
{-1},
- {pool_offset(2097), 242},
+ {pool_offset(2199), 289},
{-1},
- {pool_offset(2099), 243},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2201), 164},
+ {-1}, {-1}, {-1}, {-1},
- {pool_offset(2109), 199},
+ {pool_offset(2206), 242},
- {pool_offset(2110), 77},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2207), 257},
+ {-1}, {-1},
+
+ {pool_offset(2210), 236},
+
+ {pool_offset(2211), 182},
+
+ {pool_offset(2212), 167},
+
+ {pool_offset(2213), 524},
+
+ {pool_offset(2214), 51},
{-1},
- {pool_offset(2121), 366},
+ {pool_offset(2216), 321},
+ {-1}, {-1}, {-1},
+
+ {pool_offset(2220), 243},
{-1}, {-1},
- {pool_offset(2124), 395},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2223), 172},
+ {-1}, {-1},
- {pool_offset(2133), 87},
+ {pool_offset(2226), 238},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1},
- {pool_offset(2144), 87},
+ {pool_offset(2237), 213},
+ {-1}, {-1},
+
+ {pool_offset(2240), 533},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1},
- {pool_offset(2158), 246},
- {-1},
+ {pool_offset(2250), 323},
- {pool_offset(2160), 42},
+ {pool_offset(2251), 160},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1},
- {pool_offset(2178), 387},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2264), 385},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1},
- {pool_offset(2187), 228},
+ {pool_offset(2277), 258},
- {pool_offset(2188), 409},
- {-1},
+ {pool_offset(2278), 218},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2190), 388},
+ {pool_offset(2285), 540},
+ {-1}, {-1},
- {pool_offset(2191), 235},
+ {pool_offset(2288), 317},
{-1}, {-1}, {-1}, {-1},
- {pool_offset(2196), 151},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2293), 438},
+ {-1},
- {pool_offset(2213), 362},
+ {pool_offset(2295), 330},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2214), 162},
+ {pool_offset(2305), 334},
{-1}, {-1},
- {pool_offset(2217), 285},
- {-1}, {-1}, {-1}, {-1},
-
- {pool_offset(2222), 548},
+ {pool_offset(2308), 20},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1},
- {pool_offset(2223), 36},
+ {pool_offset(2320), 183},
{-1}, {-1}, {-1}, {-1},
- {pool_offset(2228), 240},
+ {pool_offset(2325), 62},
- {pool_offset(2229), 317},
- {-1}, {-1},
+ {pool_offset(2326), 92},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2232), 100},
+ {pool_offset(2333), 165},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2233), 246},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2343), 77},
+ {-1},
- {pool_offset(2238), 178},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2345), 93},
- {pool_offset(2245), 269},
- {-1}, {-1}, {-1},
+ {pool_offset(2346), 171},
+ {-1},
- {pool_offset(2249), 200},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2348), 175},
- {pool_offset(2255), 337},
+ {pool_offset(2349), 557},
{-1}, {-1},
- {pool_offset(2258), 48},
+ {pool_offset(2352), 93},
- {pool_offset(2259), 264},
+ {pool_offset(2353), 535},
{-1},
- {pool_offset(2261), 470},
- {-1},
+ {pool_offset(2355), 370},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2263), 91},
+ {pool_offset(2364), 164},
- {pool_offset(2264), 167},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1},
+ {pool_offset(2365), 0},
+
+ {pool_offset(2366), 123},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2375), 63},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2286), 176},
+ {pool_offset(2381), 36},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2391), 362},
{-1}, {-1}, {-1},
- {pool_offset(2299), 65},
- {-1},
+ {pool_offset(2395), 432},
+ {-1}, {-1}, {-1}, {-1},
- {pool_offset(2301), 287},
- {-1}, {-1}, {-1},
+ {pool_offset(2400), 225},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2305), 187},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2410), 57},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2311), 496},
- {-1}, {-1}, {-1},
+ {pool_offset(2418), 342},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2315), 65},
- {-1}, {-1}, {-1},
+ {pool_offset(2426), 101},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2319), 231},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2442), 310},
- {pool_offset(2325), 137},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2443), 242},
+ {-1},
- {pool_offset(2330), 97},
- {-1}, {-1},
+ {pool_offset(2445), 184},
+ {-1},
- {pool_offset(2333), 179},
- {-1}, {-1},
+ {pool_offset(2447), 185},
- {pool_offset(2336), 137},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2448), 397},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2341), 336},
+ {pool_offset(2455), 250},
- {pool_offset(2342), 262},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2456), 188},
+ {-1}, {-1}, {-1},
- {pool_offset(2347), 129},
+ {pool_offset(2460), 427},
+ {-1},
- {pool_offset(2348), 426},
- {-1}, {-1},
+ {pool_offset(2462), 513},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2351), 397},
+ {pool_offset(2469), 37},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2352), 191},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2478), 168},
+ {-1},
- {pool_offset(2357), 184},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2480), 233},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2376), 428},
+ {pool_offset(2487), 440},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1},
+
+ {pool_offset(2498), 312},
{-1}, {-1}, {-1},
- {pool_offset(2389), 50},
+ {pool_offset(2502), 268},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1},
+ {-1}, {-1}, {-1}, {-1},
- {pool_offset(2409), 261},
- {-1},
+ {pool_offset(2516), 313},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2411), 223},
- {-1}, {-1},
+ {pool_offset(2523), 221},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2414), 116},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2529), 174},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2538), 542},
+ {-1}, {-1}, {-1},
- {pool_offset(2419), 331},
+ {pool_offset(2542), 174},
{-1},
- {pool_offset(2421), 253},
+ {pool_offset(2544), 248},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2554), 376},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2428), 231},
-
- {pool_offset(2429), 199},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2561), 176},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2437), 224},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2571), 387},
+ {-1},
- {pool_offset(2444), 215},
+ {pool_offset(2573), 114},
+ {-1}, {-1}, {-1}, {-1},
- {pool_offset(2445), 4},
+ {pool_offset(2578), 185},
{-1}, {-1}, {-1},
- {pool_offset(2449), 75},
- {-1}, {-1}, {-1}, {-1}, {-1},
-
- {pool_offset(2455), 463},
+ {pool_offset(2582), 203},
+ {-1},
- {pool_offset(2456), 225},
+ {pool_offset(2584), 418},
{-1}, {-1}, {-1},
- {pool_offset(2460), 206},
-
- {pool_offset(2461), 167},
+ {pool_offset(2588), 70},
{-1}, {-1},
- {pool_offset(2464), 313},
+ {pool_offset(2591), 169},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2465), 153},
+ {pool_offset(2607), 266},
{-1},
- {pool_offset(2467), 188},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2609), 247},
+ {-1},
- {pool_offset(2473), 60},
- {-1}, {-1},
+ {pool_offset(2611), 78},
+ {-1}, {-1}, {-1},
- {pool_offset(2476), 378},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2615), 247},
- {pool_offset(2482), 239},
- {-1},
+ {pool_offset(2616), 223},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2484), 49},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1},
+ {pool_offset(2622), 97},
- {pool_offset(2496), 416},
+ {pool_offset(2623), 248},
{-1}, {-1}, {-1},
- {pool_offset(2500), 511},
- {-1}, {-1},
-
- {pool_offset(2503), 319},
+ {pool_offset(2627), 511},
{-1}, {-1}, {-1}, {-1},
- {pool_offset(2508), 169},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-
- {pool_offset(2518), 181},
- {-1}, {-1},
+ {pool_offset(2632), 239},
- {pool_offset(2521), 309},
- {-1}, {-1}, {-1},
+ {pool_offset(2633), 424},
- {pool_offset(2525), 414},
+ {pool_offset(2634), 541},
{-1}, {-1}, {-1},
- {pool_offset(2529), 492},
+ {pool_offset(2638), 118},
{-1}, {-1},
- {pool_offset(2532), 189},
+ {pool_offset(2641), 428},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1},
- {pool_offset(2533), 230},
- {-1}, {-1}, {-1},
+ {pool_offset(2652), 413},
- {pool_offset(2537), 70},
+ {pool_offset(2653), 71},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2553), 261},
-
- {pool_offset(2554), 505},
+ {pool_offset(2669), 215},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1}, {-1}, {-1},
- {pool_offset(2559), 186},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-
- {pool_offset(2567), 220},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2692), 27},
+ {-1}, {-1}, {-1},
- {pool_offset(2576), 210},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2696), 71},
+ {-1},
- {pool_offset(2584), 254},
+ {pool_offset(2698), 48},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1},
- {pool_offset(2585), 544},
+ {pool_offset(2709), 181},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2586), 338},
+ {pool_offset(2725), 544},
{-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},
- {pool_offset(2623), 36},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2767), 265},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2642), 189},
- {-1},
+ {pool_offset(2775), 70},
- {pool_offset(2644), 27},
+ {pool_offset(2776), 36},
{-1}, {-1},
- {pool_offset(2647), 274},
+ {pool_offset(2779), 169},
{-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2653), 173},
+ {pool_offset(2785), 202},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2794), 467},
{-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2659), 308},
- {-1}, {-1},
+ {pool_offset(2800), 498},
- {pool_offset(2662), 372},
- {-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},
+ {pool_offset(2801), 154},
{-1}, {-1},
- {pool_offset(2692), 70},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-
- {pool_offset(2700), 420},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-
- {pool_offset(2707), 528},
+ {pool_offset(2804), 50},
{-1}, {-1}, {-1},
- {pool_offset(2711), 51},
- {-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},
+ {pool_offset(2808), 539},
{-1}, {-1}, {-1}, {-1},
- {pool_offset(2743), 341},
- {-1},
-
- {pool_offset(2745), 529},
+ {pool_offset(2813), 209},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-
- {pool_offset(2764), 19},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1},
- {pool_offset(2770), 96},
+ {pool_offset(2824), 258},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2771), 63},
+ {pool_offset(2831), 161},
{-1}, {-1}, {-1}, {-1},
- {pool_offset(2776), 335},
+ {pool_offset(2836), 19},
+ {-1},
- {pool_offset(2777), 168},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2838), 59},
- {pool_offset(2782), 399},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2839), 161},
+ {-1},
- {pool_offset(2790), 503},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2841), 551},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2798), 91},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2847), 68},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2856), 190},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2826), 248},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2875), 281},
- {pool_offset(2831), 236},
+ {pool_offset(2876), 420},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1},
-
- {pool_offset(2843), 188},
- {-1}, {-1}, {-1}, {-1}, {-1},
-
- {pool_offset(2849), 191},
-
- {pool_offset(2850), 230},
- {-1}, {-1},
-
- {pool_offset(2853), 171},
- {-1}, {-1},
-
- {pool_offset(2856), 113},
{-1}, {-1}, {-1}, {-1},
- {pool_offset(2861), 506},
- {-1},
-
- {pool_offset(2863), 10},
+ {pool_offset(2890), 130},
{-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},
- {pool_offset(2884), 539},
+ {pool_offset(2916), 76},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2930), 49},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1}, {-1}, {-1},
- {pool_offset(2907), 160},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2953), 200},
- {pool_offset(2915), 160},
+ {pool_offset(2954), 179},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2929), 250},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(2970), 519},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2937), 95},
+ {pool_offset(2977), 231},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2947), 530},
+ {pool_offset(2996), 265},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2954), 173},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(3012), 47},
+ {-1}, {-1},
- {pool_offset(2963), 277},
+ {pool_offset(3015), 227},
{-1}, {-1}, {-1}, {-1},
- {pool_offset(2968), 244},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(3020), 270},
+ {-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},
- {pool_offset(2974), 244},
+ {pool_offset(3072), 192},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2975), 412},
+ {pool_offset(3079), 189},
+ {-1}, {-1}, {-1}, {-1},
- {pool_offset(2976), 352},
+ {pool_offset(3084), 278},
+ {-1}, {-1}, {-1},
- {pool_offset(2977), 423},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(3088), 176},
+ {-1}, {-1}, {-1},
- {pool_offset(2986), 183},
+ {pool_offset(3092), 191},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(2987), 212},
+ {pool_offset(3099), 451},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(3012), 532},
-
- {pool_offset(3013), 424},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(3118), 345},
{-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},
- {pool_offset(3052), 254},
+ {pool_offset(3146), 51},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3154), 170},
+ {-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},
- {pool_offset(3071), 245},
+ {pool_offset(3182), 339},
+ {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3188), 187},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(3080), 356},
- {-1}, {-1},
+ {pool_offset(3197), 414},
- {pool_offset(3083), 541},
+ {pool_offset(3198), 18},
- {pool_offset(3084), 410},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(3199), 63},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-
- {pool_offset(3112), 42},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(3120), 59},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-
- {pool_offset(3127), 168},
- {-1}, {-1},
-
- {pool_offset(3130), 245},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-
- {pool_offset(3139), 203},
+ {pool_offset(3216), 192},
{-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},
-
- {pool_offset(3177), 18},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-
- {pool_offset(3184), 68},
{-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(3190), 232},
- {-1}, {-1},
-
- {pool_offset(3193), 47},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(3258), 55},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(3210), 232},
+ {pool_offset(3267), 42},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(3228), 222},
+ {pool_offset(3285), 172},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1},
- {pool_offset(3231), 20},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(3306), 213},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(3239), 525},
+ {pool_offset(3324), 236},
{-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},
+
+ {pool_offset(3350), 99},
{-1}, {-1}, {-1}, {-1},
- {pool_offset(3262), 76},
+ {pool_offset(3355), 356},
+ {-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},
- {pool_offset(3293), 133},
- {-1}, {-1}, {-1},
-
- {pool_offset(3297), 197},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(3413), 514},
+ {-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},
- {pool_offset(3304), 92},
+ {pool_offset(3459), 170},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3478), 191},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1},
+
+ {pool_offset(3491), 553},
+ {-1}, {-1},
+
+ {pool_offset(3494), 360},
{-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(3328), 381},
+ {pool_offset(3500), 186},
+ {-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},
- {pool_offset(3337), 447},
+ {pool_offset(3527), 416},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1},
+
+ {pool_offset(3538), 68},
{-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},
-
- {pool_offset(3375), 210},
{-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},
- {pool_offset(3426), 62},
- {-1}, {-1}, {-1}, {-1},
+ {pool_offset(3663), 180},
+ {-1}, {-1},
- {pool_offset(3431), 233},
+ {pool_offset(3666), 235},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3685), 235},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(3447), 63},
+ {pool_offset(3692), 379},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1},
-
- {pool_offset(3471), 383},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1},
- {pool_offset(3485), 177},
+ {pool_offset(3731), 223},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(3504), 266},
+ {pool_offset(3750), 508},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1},
- {pool_offset(3514), 365},
- {-1}, {-1},
-
- {pool_offset(3517), 184},
+ {pool_offset(3763), 509},
{-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},
-
- {pool_offset(3562), 95},
- {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(3564), 346},
- {-1}, {-1}, {-1}, {-1}, {-1},
+ {pool_offset(3807), 10},
+ {-1}, {-1},
- {pool_offset(3570), 411},
+ {pool_offset(3810), 206},
{-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},
+
+ {pool_offset(3872), 77},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(3603), 240},
+ {pool_offset(3881), 96},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1},
- {pool_offset(3623), 375},
+ {pool_offset(3901), 243},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3910), 253},
{-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},
+
+ {pool_offset(3937), 369},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3946), 251},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3961), 194},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {pool_offset(3666), 228},
+ {pool_offset(3971), 534},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1},
+
+ {pool_offset(3992), 350},
{-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},
@@ -28857,9 +29335,6 @@ unicode_lookup_property_name (register const char *str, register size_t len)
{-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},
-
- {pool_offset(3764), 501},
{-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},
@@ -28883,33 +29358,38 @@ unicode_lookup_property_name (register const char *str, register size_t len)
{-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},
+
+ {pool_offset(4279), 134},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(4298), 187},
{-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},
-
- {pool_offset(4052), 205},
{-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},
+
+ {pool_offset(4401), 415},
{-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},
-
- {pool_offset(4129), 552},
{-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},
+
+ {pool_offset(4476), 358},
{-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},
@@ -28919,34 +29399,32 @@ unicode_lookup_property_name (register const char *str, register size_t len)
{-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},
+
+ {pool_offset(4562), 377},
- {pool_offset(4261), 98},
+ {pool_offset(4563), 69},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1},
- {pool_offset(4277), 373},
+ {pool_offset(4577), 554},
{-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},
-
- {pool_offset(4332), 69},
{-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},
- {pool_offset(4363), 354},
+ {pool_offset(4659), 171},
{-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},
- {pool_offset(4404), 68},
+ {pool_offset(4688), 565},
{-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},
@@ -28961,9 +29439,15 @@ unicode_lookup_property_name (register const char *str, register size_t len)
{-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},
+
+ {pool_offset(4822), 208},
{-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},
+
+ {pool_offset(4851), 69},
{-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},
@@ -28973,15 +29457,10 @@ unicode_lookup_property_name (register const char *str, register size_t len)
{-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},
-
- {pool_offset(4639), 542},
{-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},
-
- {pool_offset(4682), 55},
{-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},
@@ -29042,9 +29521,6 @@ unicode_lookup_property_name (register const char *str, register size_t len)
{-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},
-
- {pool_offset(5231), 69},
{-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},
@@ -29076,9 +29552,11 @@ unicode_lookup_property_name (register const char *str, register size_t len)
{-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},
- {pool_offset(5516), 553}
+ {pool_offset(5809), 566}
};
if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
@@ -29102,10 +29580,10 @@ unicode_lookup_property_name (register const char *str, register size_t len)
-#define UNICODE_PROPERTY_VERSION 11_0_0
+#define UNICODE_PROPERTY_VERSION 12_1_0
#define PROPERTY_NAME_MAX_SIZE 59
-#define CODE_RANGES_NUM 555
+#define CODE_RANGES_NUM 568
#define PROP_INDEX_NEWLINE 0
#define PROP_INDEX_ALPHA 1
@@ -29131,8 +29609,8 @@ unicode_lookup_property_name (register const char *str, register size_t len)
#define PROP_INDEX_ANATOLIANHIEROGLYPHS 19
#define PROP_INDEX_HLUW 19
#define PROP_INDEX_ANY 20
-#define PROP_INDEX_ARAB 21
#define PROP_INDEX_ARABIC 21
+#define PROP_INDEX_ARAB 21
#define PROP_INDEX_ARMN 22
#define PROP_INDEX_ARMENIAN 22
#define PROP_INDEX_ASSIGNED 23
@@ -29228,666 +29706,683 @@ unicode_lookup_property_name (register const char *str, register size_t len)
#define PROP_INDEX_EGYP 69
#define PROP_INDEX_ELBA 70
#define PROP_INDEX_ELBASAN 70
-#define PROP_INDEX_EMOJI 71
-#define PROP_INDEX_EMOJICOMPONENT 72
-#define PROP_INDEX_EMOJIMODIFIER 73
-#define PROP_INDEX_EMOJIMODIFIERBASE 74
-#define PROP_INDEX_EMOJIPRESENTATION 75
-#define PROP_INDEX_ETHIOPIC 76
-#define PROP_INDEX_ETHI 76
-#define PROP_INDEX_EXTENDEDPICTOGRAPHIC 77
-#define PROP_INDEX_EXT 78
-#define PROP_INDEX_EXTENDER 78
-#define PROP_INDEX_GEORGIAN 79
-#define PROP_INDEX_GEOR 79
-#define PROP_INDEX_GLAG 80
-#define PROP_INDEX_GLAGOLITIC 80
-#define PROP_INDEX_GOTH 81
-#define PROP_INDEX_GOTHIC 81
-#define PROP_INDEX_GRAN 82
-#define PROP_INDEX_GRANTHA 82
-#define PROP_INDEX_GRBASE 83
-#define PROP_INDEX_GRAPHEMEBASE 83
-#define PROP_INDEX_GREXT 84
-#define PROP_INDEX_GRAPHEMEEXTEND 84
-#define PROP_INDEX_GRAPHEMELINK 85
-#define PROP_INDEX_GRLINK 85
-#define PROP_INDEX_GREEK 86
-#define PROP_INDEX_GREK 86
-#define PROP_INDEX_GUJARATI 87
-#define PROP_INDEX_GUJR 87
-#define PROP_INDEX_GUNJALAGONDI 88
-#define PROP_INDEX_GONG 88
-#define PROP_INDEX_GURU 89
-#define PROP_INDEX_GURMUKHI 89
-#define PROP_INDEX_HANI 90
-#define PROP_INDEX_HAN 90
-#define PROP_INDEX_HANG 91
-#define PROP_INDEX_HANGUL 91
-#define PROP_INDEX_HANIFIROHINGYA 92
-#define PROP_INDEX_ROHG 92
-#define PROP_INDEX_HANUNOO 93
-#define PROP_INDEX_HANO 93
-#define PROP_INDEX_HATR 94
-#define PROP_INDEX_HATRAN 94
-#define PROP_INDEX_HEBREW 95
-#define PROP_INDEX_HEBR 95
-#define PROP_INDEX_HEXDIGIT 96
-#define PROP_INDEX_HEX 96
-#define PROP_INDEX_HIRAGANA 97
-#define PROP_INDEX_HIRA 97
-#define PROP_INDEX_HYPHEN 98
-#define PROP_INDEX_IDSB 99
-#define PROP_INDEX_IDSBINARYOPERATOR 99
-#define PROP_INDEX_IDST 100
-#define PROP_INDEX_IDSTRINARYOPERATOR 100
-#define PROP_INDEX_IDCONTINUE 101
-#define PROP_INDEX_IDC 101
-#define PROP_INDEX_IDS 102
-#define PROP_INDEX_IDSTART 102
-#define PROP_INDEX_IDEO 103
-#define PROP_INDEX_IDEOGRAPHIC 103
-#define PROP_INDEX_ARMI 104
-#define PROP_INDEX_IMPERIALARAMAIC 104
-#define PROP_INDEX_ZINH 105
-#define PROP_INDEX_INHERITED 105
-#define PROP_INDEX_QAAI 105
-#define PROP_INDEX_PHLI 106
-#define PROP_INDEX_INSCRIPTIONALPAHLAVI 106
-#define PROP_INDEX_INSCRIPTIONALPARTHIAN 107
-#define PROP_INDEX_PRTI 107
-#define PROP_INDEX_JAVANESE 108
-#define PROP_INDEX_JAVA 108
-#define PROP_INDEX_JOINC 109
-#define PROP_INDEX_JOINCONTROL 109
-#define PROP_INDEX_KAITHI 110
-#define PROP_INDEX_KTHI 110
-#define PROP_INDEX_KNDA 111
-#define PROP_INDEX_KANNADA 111
-#define PROP_INDEX_KATAKANA 112
-#define PROP_INDEX_KANA 112
-#define PROP_INDEX_KAYAHLI 113
-#define PROP_INDEX_KALI 113
-#define PROP_INDEX_KHAROSHTHI 114
-#define PROP_INDEX_KHAR 114
-#define PROP_INDEX_KHMR 115
-#define PROP_INDEX_KHMER 115
-#define PROP_INDEX_KHOJ 116
-#define PROP_INDEX_KHOJKI 116
-#define PROP_INDEX_KHUDAWADI 117
-#define PROP_INDEX_SIND 117
-#define PROP_INDEX_L 118
-#define PROP_INDEX_LETTER 118
-#define PROP_INDEX_LC 119
-#define PROP_INDEX_CASEDLETTER 119
-#define PROP_INDEX_LAO 120
-#define PROP_INDEX_LAOO 120
-#define PROP_INDEX_LATN 121
-#define PROP_INDEX_LATIN 121
-#define PROP_INDEX_LEPC 122
-#define PROP_INDEX_LEPCHA 122
-#define PROP_INDEX_LIMBU 123
-#define PROP_INDEX_LIMB 123
-#define PROP_INDEX_LINA 124
-#define PROP_INDEX_LINEARA 124
-#define PROP_INDEX_LINB 125
-#define PROP_INDEX_LINEARB 125
-#define PROP_INDEX_LISU 126
-#define PROP_INDEX_LOWERCASELETTER 127
-#define PROP_INDEX_LL 127
-#define PROP_INDEX_LM 128
-#define PROP_INDEX_MODIFIERLETTER 128
-#define PROP_INDEX_LO 129
-#define PROP_INDEX_OTHERLETTER 129
-#define PROP_INDEX_LOGICALORDEREXCEPTION 130
-#define PROP_INDEX_LOE 130
-#define PROP_INDEX_LOWERCASE 131
-#define PROP_INDEX_LT 132
-#define PROP_INDEX_TITLECASELETTER 132
-#define PROP_INDEX_UPPERCASELETTER 133
-#define PROP_INDEX_LU 133
-#define PROP_INDEX_LYCI 134
-#define PROP_INDEX_LYCIAN 134
-#define PROP_INDEX_LYDI 135
-#define PROP_INDEX_LYDIAN 135
-#define PROP_INDEX_M 136
-#define PROP_INDEX_COMBININGMARK 136
-#define PROP_INDEX_MARK 136
-#define PROP_INDEX_MAHJ 137
-#define PROP_INDEX_MAHAJANI 137
-#define PROP_INDEX_MAKASAR 138
-#define PROP_INDEX_MAKA 138
-#define PROP_INDEX_MALAYALAM 139
-#define PROP_INDEX_MLYM 139
-#define PROP_INDEX_MAND 140
-#define PROP_INDEX_MANDAIC 140
-#define PROP_INDEX_MANI 141
-#define PROP_INDEX_MANICHAEAN 141
-#define PROP_INDEX_MARC 142
-#define PROP_INDEX_MARCHEN 142
-#define PROP_INDEX_MASARAMGONDI 143
-#define PROP_INDEX_GONM 143
-#define PROP_INDEX_MATH 144
-#define PROP_INDEX_MC 145
-#define PROP_INDEX_SPACINGMARK 145
-#define PROP_INDEX_ENCLOSINGMARK 146
-#define PROP_INDEX_ME 146
-#define PROP_INDEX_MEDEFAIDRIN 147
-#define PROP_INDEX_MEDF 147
-#define PROP_INDEX_MEETEIMAYEK 148
-#define PROP_INDEX_MTEI 148
-#define PROP_INDEX_MENDEKIKAKUI 149
-#define PROP_INDEX_MEND 149
-#define PROP_INDEX_MEROITICCURSIVE 150
-#define PROP_INDEX_MERC 150
-#define PROP_INDEX_MEROITICHIEROGLYPHS 151
-#define PROP_INDEX_MERO 151
-#define PROP_INDEX_PLRD 152
-#define PROP_INDEX_MIAO 152
-#define PROP_INDEX_MN 153
-#define PROP_INDEX_NONSPACINGMARK 153
-#define PROP_INDEX_MODI 154
-#define PROP_INDEX_MONGOLIAN 155
-#define PROP_INDEX_MONG 155
-#define PROP_INDEX_MRO 156
-#define PROP_INDEX_MROO 156
-#define PROP_INDEX_MULT 157
-#define PROP_INDEX_MULTANI 157
-#define PROP_INDEX_MYANMAR 158
-#define PROP_INDEX_MYMR 158
-#define PROP_INDEX_NUMBER 159
-#define PROP_INDEX_N 159
-#define PROP_INDEX_NABATAEAN 160
-#define PROP_INDEX_NBAT 160
-#define PROP_INDEX_DECIMALNUMBER 161
-#define PROP_INDEX_ND 161
-#define PROP_INDEX_TALU 162
-#define PROP_INDEX_NEWTAILUE 162
-#define PROP_INDEX_NEWA 163
-#define PROP_INDEX_NKO 164
-#define PROP_INDEX_NKOO 164
-#define PROP_INDEX_LETTERNUMBER 165
-#define PROP_INDEX_NL 165
-#define PROP_INDEX_OTHERNUMBER 166
-#define PROP_INDEX_NO 166
-#define PROP_INDEX_NONCHARACTERCODEPOINT 167
-#define PROP_INDEX_NCHAR 167
-#define PROP_INDEX_NSHU 168
-#define PROP_INDEX_NUSHU 168
-#define PROP_INDEX_OGHAM 169
-#define PROP_INDEX_OGAM 169
-#define PROP_INDEX_OLCK 170
-#define PROP_INDEX_OLCHIKI 170
-#define PROP_INDEX_HUNG 171
-#define PROP_INDEX_OLDHUNGARIAN 171
-#define PROP_INDEX_ITAL 172
-#define PROP_INDEX_OLDITALIC 172
-#define PROP_INDEX_NARB 173
-#define PROP_INDEX_OLDNORTHARABIAN 173
-#define PROP_INDEX_OLDPERMIC 174
-#define PROP_INDEX_PERM 174
-#define PROP_INDEX_OLDPERSIAN 175
-#define PROP_INDEX_XPEO 175
-#define PROP_INDEX_SOGO 176
-#define PROP_INDEX_OLDSOGDIAN 176
-#define PROP_INDEX_SARB 177
-#define PROP_INDEX_OLDSOUTHARABIAN 177
-#define PROP_INDEX_OLDTURKIC 178
-#define PROP_INDEX_ORKH 178
-#define PROP_INDEX_ORYA 179
-#define PROP_INDEX_ORIYA 179
-#define PROP_INDEX_OSAGE 180
-#define PROP_INDEX_OSGE 180
-#define PROP_INDEX_OSMANYA 181
-#define PROP_INDEX_OSMA 181
-#define PROP_INDEX_OTHERALPHABETIC 182
-#define PROP_INDEX_OALPHA 182
-#define PROP_INDEX_ODI 183
-#define PROP_INDEX_OTHERDEFAULTIGNORABLECODEPOINT 183
-#define PROP_INDEX_OGREXT 184
-#define PROP_INDEX_OTHERGRAPHEMEEXTEND 184
-#define PROP_INDEX_OIDC 185
-#define PROP_INDEX_OTHERIDCONTINUE 185
-#define PROP_INDEX_OTHERIDSTART 186
-#define PROP_INDEX_OIDS 186
-#define PROP_INDEX_OTHERLOWERCASE 187
-#define PROP_INDEX_OLOWER 187
-#define PROP_INDEX_OTHERMATH 188
-#define PROP_INDEX_OMATH 188
-#define PROP_INDEX_OTHERUPPERCASE 189
-#define PROP_INDEX_OUPPER 189
-#define PROP_INDEX_P 190
-#define PROP_INDEX_PUNCTUATION 190
-#define PROP_INDEX_PAHAWHHMONG 191
-#define PROP_INDEX_HMNG 191
-#define PROP_INDEX_PALMYRENE 192
-#define PROP_INDEX_PALM 192
-#define PROP_INDEX_PATTERNSYNTAX 193
-#define PROP_INDEX_PATSYN 193
-#define PROP_INDEX_PATWS 194
-#define PROP_INDEX_PATTERNWHITESPACE 194
-#define PROP_INDEX_PAUCINHAU 195
-#define PROP_INDEX_PAUC 195
-#define PROP_INDEX_CONNECTORPUNCTUATION 196
-#define PROP_INDEX_PC 196
-#define PROP_INDEX_DASHPUNCTUATION 197
-#define PROP_INDEX_PD 197
-#define PROP_INDEX_PE 198
-#define PROP_INDEX_CLOSEPUNCTUATION 198
-#define PROP_INDEX_FINALPUNCTUATION 199
-#define PROP_INDEX_PF 199
-#define PROP_INDEX_PHAG 200
-#define PROP_INDEX_PHAGSPA 200
-#define PROP_INDEX_PHOENICIAN 201
-#define PROP_INDEX_PHNX 201
-#define PROP_INDEX_PI 202
-#define PROP_INDEX_INITIALPUNCTUATION 202
-#define PROP_INDEX_OTHERPUNCTUATION 203
-#define PROP_INDEX_PO 203
-#define PROP_INDEX_PREPENDEDCONCATENATIONMARK 204
-#define PROP_INDEX_PCM 204
-#define PROP_INDEX_PS 205
-#define PROP_INDEX_OPENPUNCTUATION 205
-#define PROP_INDEX_PHLP 206
-#define PROP_INDEX_PSALTERPAHLAVI 206
-#define PROP_INDEX_QUOTATIONMARK 207
-#define PROP_INDEX_QMARK 207
-#define PROP_INDEX_RADICAL 208
-#define PROP_INDEX_RI 209
-#define PROP_INDEX_REGIONALINDICATOR 209
-#define PROP_INDEX_REJANG 210
-#define PROP_INDEX_RJNG 210
-#define PROP_INDEX_RUNIC 211
-#define PROP_INDEX_RUNR 211
-#define PROP_INDEX_S 212
-#define PROP_INDEX_SYMBOL 212
-#define PROP_INDEX_SAMARITAN 213
-#define PROP_INDEX_SAMR 213
-#define PROP_INDEX_SAURASHTRA 214
-#define PROP_INDEX_SAUR 214
-#define PROP_INDEX_SC 215
-#define PROP_INDEX_CURRENCYSYMBOL 215
-#define PROP_INDEX_SENTENCETERMINAL 216
-#define PROP_INDEX_STERM 216
-#define PROP_INDEX_SHARADA 217
-#define PROP_INDEX_SHRD 217
-#define PROP_INDEX_SHAVIAN 218
-#define PROP_INDEX_SHAW 218
-#define PROP_INDEX_SIDDHAM 219
-#define PROP_INDEX_SIDD 219
-#define PROP_INDEX_SIGNWRITING 220
-#define PROP_INDEX_SGNW 220
-#define PROP_INDEX_SINH 221
-#define PROP_INDEX_SINHALA 221
-#define PROP_INDEX_SK 222
-#define PROP_INDEX_MODIFIERSYMBOL 222
-#define PROP_INDEX_MATHSYMBOL 223
-#define PROP_INDEX_SM 223
-#define PROP_INDEX_SO 224
-#define PROP_INDEX_OTHERSYMBOL 224
-#define PROP_INDEX_SD 225
-#define PROP_INDEX_SOFTDOTTED 225
-#define PROP_INDEX_SOGD 226
-#define PROP_INDEX_SOGDIAN 226
-#define PROP_INDEX_SORASOMPENG 227
-#define PROP_INDEX_SORA 227
-#define PROP_INDEX_SOYO 228
-#define PROP_INDEX_SOYOMBO 228
-#define PROP_INDEX_SUND 229
-#define PROP_INDEX_SUNDANESE 229
-#define PROP_INDEX_SYLO 230
-#define PROP_INDEX_SYLOTINAGRI 230
-#define PROP_INDEX_SYRC 231
-#define PROP_INDEX_SYRIAC 231
-#define PROP_INDEX_TGLG 232
-#define PROP_INDEX_TAGALOG 232
-#define PROP_INDEX_TAGBANWA 233
-#define PROP_INDEX_TAGB 233
-#define PROP_INDEX_TAILE 234
-#define PROP_INDEX_TALE 234
-#define PROP_INDEX_TAITHAM 235
-#define PROP_INDEX_LANA 235
-#define PROP_INDEX_TAIVIET 236
-#define PROP_INDEX_TAVT 236
-#define PROP_INDEX_TAKRI 237
-#define PROP_INDEX_TAKR 237
-#define PROP_INDEX_TAMIL 238
-#define PROP_INDEX_TAML 238
-#define PROP_INDEX_TANG 239
-#define PROP_INDEX_TANGUT 239
-#define PROP_INDEX_TELUGU 240
-#define PROP_INDEX_TELU 240
-#define PROP_INDEX_TERM 241
-#define PROP_INDEX_TERMINALPUNCTUATION 241
-#define PROP_INDEX_THAA 242
-#define PROP_INDEX_THAANA 242
-#define PROP_INDEX_THAI 243
-#define PROP_INDEX_TIBT 244
-#define PROP_INDEX_TIBETAN 244
-#define PROP_INDEX_TFNG 245
-#define PROP_INDEX_TIFINAGH 245
-#define PROP_INDEX_TIRHUTA 246
-#define PROP_INDEX_TIRH 246
-#define PROP_INDEX_UGAR 247
-#define PROP_INDEX_UGARITIC 247
-#define PROP_INDEX_UNIFIEDIDEOGRAPH 248
-#define PROP_INDEX_UIDEO 248
-#define PROP_INDEX_ZZZZ 249
-#define PROP_INDEX_UNKNOWN 249
-#define PROP_INDEX_UPPERCASE 250
-#define PROP_INDEX_VAII 251
-#define PROP_INDEX_VAI 251
-#define PROP_INDEX_VARIATIONSELECTOR 252
-#define PROP_INDEX_VS 252
-#define PROP_INDEX_WARANGCITI 253
-#define PROP_INDEX_WARA 253
-#define PROP_INDEX_WHITESPACE 254
-#define PROP_INDEX_WSPACE 254
-#define PROP_INDEX_XIDC 255
-#define PROP_INDEX_XIDCONTINUE 255
-#define PROP_INDEX_XIDS 256
-#define PROP_INDEX_XIDSTART 256
-#define PROP_INDEX_YI 257
-#define PROP_INDEX_YIII 257
-#define PROP_INDEX_SEPARATOR 258
-#define PROP_INDEX_Z 258
-#define PROP_INDEX_ZANABAZARSQUARE 259
-#define PROP_INDEX_ZANB 259
-#define PROP_INDEX_ZL 260
-#define PROP_INDEX_LINESEPARATOR 260
-#define PROP_INDEX_ZP 261
-#define PROP_INDEX_PARAGRAPHSEPARATOR 261
-#define PROP_INDEX_ZS 262
-#define PROP_INDEX_SPACESEPARATOR 262
-#define PROP_INDEX_INBASICLATIN 263
-#define PROP_INDEX_INLATIN1SUPPLEMENT 264
-#define PROP_INDEX_INLATINEXTENDEDA 265
-#define PROP_INDEX_INLATINEXTENDEDB 266
-#define PROP_INDEX_INIPAEXTENSIONS 267
-#define PROP_INDEX_INSPACINGMODIFIERLETTERS 268
-#define PROP_INDEX_INCOMBININGDIACRITICALMARKS 269
-#define PROP_INDEX_INGREEKANDCOPTIC 270
-#define PROP_INDEX_INCYRILLIC 271
-#define PROP_INDEX_INCYRILLICSUPPLEMENT 272
-#define PROP_INDEX_INARMENIAN 273
-#define PROP_INDEX_INHEBREW 274
-#define PROP_INDEX_INARABIC 275
-#define PROP_INDEX_INSYRIAC 276
-#define PROP_INDEX_INARABICSUPPLEMENT 277
-#define PROP_INDEX_INTHAANA 278
-#define PROP_INDEX_INNKO 279
-#define PROP_INDEX_INSAMARITAN 280
-#define PROP_INDEX_INMANDAIC 281
-#define PROP_INDEX_INSYRIACSUPPLEMENT 282
-#define PROP_INDEX_INARABICEXTENDEDA 283
-#define PROP_INDEX_INDEVANAGARI 284
-#define PROP_INDEX_INBENGALI 285
-#define PROP_INDEX_INGURMUKHI 286
-#define PROP_INDEX_INGUJARATI 287
-#define PROP_INDEX_INORIYA 288
-#define PROP_INDEX_INTAMIL 289
-#define PROP_INDEX_INTELUGU 290
-#define PROP_INDEX_INKANNADA 291
-#define PROP_INDEX_INMALAYALAM 292
-#define PROP_INDEX_INSINHALA 293
-#define PROP_INDEX_INTHAI 294
-#define PROP_INDEX_INLAO 295
-#define PROP_INDEX_INTIBETAN 296
-#define PROP_INDEX_INMYANMAR 297
-#define PROP_INDEX_INGEORGIAN 298
-#define PROP_INDEX_INHANGULJAMO 299
-#define PROP_INDEX_INETHIOPIC 300
-#define PROP_INDEX_INETHIOPICSUPPLEMENT 301
-#define PROP_INDEX_INCHEROKEE 302
-#define PROP_INDEX_INUNIFIEDCANADIANABORIGINALSYLLABICS 303
-#define PROP_INDEX_INOGHAM 304
-#define PROP_INDEX_INRUNIC 305
-#define PROP_INDEX_INTAGALOG 306
-#define PROP_INDEX_INHANUNOO 307
-#define PROP_INDEX_INBUHID 308
-#define PROP_INDEX_INTAGBANWA 309
-#define PROP_INDEX_INKHMER 310
-#define PROP_INDEX_INMONGOLIAN 311
-#define PROP_INDEX_INUNIFIEDCANADIANABORIGINALSYLLABICSEXTENDED 312
-#define PROP_INDEX_INLIMBU 313
-#define PROP_INDEX_INTAILE 314
-#define PROP_INDEX_INNEWTAILUE 315
-#define PROP_INDEX_INKHMERSYMBOLS 316
-#define PROP_INDEX_INBUGINESE 317
-#define PROP_INDEX_INTAITHAM 318
-#define PROP_INDEX_INCOMBININGDIACRITICALMARKSEXTENDED 319
-#define PROP_INDEX_INBALINESE 320
-#define PROP_INDEX_INSUNDANESE 321
-#define PROP_INDEX_INBATAK 322
-#define PROP_INDEX_INLEPCHA 323
-#define PROP_INDEX_INOLCHIKI 324
-#define PROP_INDEX_INCYRILLICEXTENDEDC 325
-#define PROP_INDEX_INGEORGIANEXTENDED 326
-#define PROP_INDEX_INSUNDANESESUPPLEMENT 327
-#define PROP_INDEX_INVEDICEXTENSIONS 328
-#define PROP_INDEX_INPHONETICEXTENSIONS 329
-#define PROP_INDEX_INPHONETICEXTENSIONSSUPPLEMENT 330
-#define PROP_INDEX_INCOMBININGDIACRITICALMARKSSUPPLEMENT 331
-#define PROP_INDEX_INLATINEXTENDEDADDITIONAL 332
-#define PROP_INDEX_INGREEKEXTENDED 333
-#define PROP_INDEX_INGENERALPUNCTUATION 334
-#define PROP_INDEX_INSUPERSCRIPTSANDSUBSCRIPTS 335
-#define PROP_INDEX_INCURRENCYSYMBOLS 336
-#define PROP_INDEX_INCOMBININGDIACRITICALMARKSFORSYMBOLS 337
-#define PROP_INDEX_INLETTERLIKESYMBOLS 338
-#define PROP_INDEX_INNUMBERFORMS 339
-#define PROP_INDEX_INARROWS 340
-#define PROP_INDEX_INMATHEMATICALOPERATORS 341
-#define PROP_INDEX_INMISCELLANEOUSTECHNICAL 342
-#define PROP_INDEX_INCONTROLPICTURES 343
-#define PROP_INDEX_INOPTICALCHARACTERRECOGNITION 344
-#define PROP_INDEX_INENCLOSEDALPHANUMERICS 345
-#define PROP_INDEX_INBOXDRAWING 346
-#define PROP_INDEX_INBLOCKELEMENTS 347
-#define PROP_INDEX_INGEOMETRICSHAPES 348
-#define PROP_INDEX_INMISCELLANEOUSSYMBOLS 349
-#define PROP_INDEX_INDINGBATS 350
-#define PROP_INDEX_INMISCELLANEOUSMATHEMATICALSYMBOLSA 351
-#define PROP_INDEX_INSUPPLEMENTALARROWSA 352
-#define PROP_INDEX_INBRAILLEPATTERNS 353
-#define PROP_INDEX_INSUPPLEMENTALARROWSB 354
-#define PROP_INDEX_INMISCELLANEOUSMATHEMATICALSYMBOLSB 355
-#define PROP_INDEX_INSUPPLEMENTALMATHEMATICALOPERATORS 356
-#define PROP_INDEX_INMISCELLANEOUSSYMBOLSANDARROWS 357
-#define PROP_INDEX_INGLAGOLITIC 358
-#define PROP_INDEX_INLATINEXTENDEDC 359
-#define PROP_INDEX_INCOPTIC 360
-#define PROP_INDEX_INGEORGIANSUPPLEMENT 361
-#define PROP_INDEX_INTIFINAGH 362
-#define PROP_INDEX_INETHIOPICEXTENDED 363
-#define PROP_INDEX_INCYRILLICEXTENDEDA 364
-#define PROP_INDEX_INSUPPLEMENTALPUNCTUATION 365
-#define PROP_INDEX_INCJKRADICALSSUPPLEMENT 366
-#define PROP_INDEX_INKANGXIRADICALS 367
-#define PROP_INDEX_INIDEOGRAPHICDESCRIPTIONCHARACTERS 368
-#define PROP_INDEX_INCJKSYMBOLSANDPUNCTUATION 369
-#define PROP_INDEX_INHIRAGANA 370
-#define PROP_INDEX_INKATAKANA 371
-#define PROP_INDEX_INBOPOMOFO 372
-#define PROP_INDEX_INHANGULCOMPATIBILITYJAMO 373
-#define PROP_INDEX_INKANBUN 374
-#define PROP_INDEX_INBOPOMOFOEXTENDED 375
-#define PROP_INDEX_INCJKSTROKES 376
-#define PROP_INDEX_INKATAKANAPHONETICEXTENSIONS 377
-#define PROP_INDEX_INENCLOSEDCJKLETTERSANDMONTHS 378
-#define PROP_INDEX_INCJKCOMPATIBILITY 379
-#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONA 380
-#define PROP_INDEX_INYIJINGHEXAGRAMSYMBOLS 381
-#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHS 382
-#define PROP_INDEX_INYISYLLABLES 383
-#define PROP_INDEX_INYIRADICALS 384
-#define PROP_INDEX_INLISU 385
-#define PROP_INDEX_INVAI 386
-#define PROP_INDEX_INCYRILLICEXTENDEDB 387
-#define PROP_INDEX_INBAMUM 388
-#define PROP_INDEX_INMODIFIERTONELETTERS 389
-#define PROP_INDEX_INLATINEXTENDEDD 390
-#define PROP_INDEX_INSYLOTINAGRI 391
-#define PROP_INDEX_INCOMMONINDICNUMBERFORMS 392
-#define PROP_INDEX_INPHAGSPA 393
-#define PROP_INDEX_INSAURASHTRA 394
-#define PROP_INDEX_INDEVANAGARIEXTENDED 395
-#define PROP_INDEX_INKAYAHLI 396
-#define PROP_INDEX_INREJANG 397
-#define PROP_INDEX_INHANGULJAMOEXTENDEDA 398
-#define PROP_INDEX_INJAVANESE 399
-#define PROP_INDEX_INMYANMAREXTENDEDB 400
-#define PROP_INDEX_INCHAM 401
-#define PROP_INDEX_INMYANMAREXTENDEDA 402
-#define PROP_INDEX_INTAIVIET 403
-#define PROP_INDEX_INMEETEIMAYEKEXTENSIONS 404
-#define PROP_INDEX_INETHIOPICEXTENDEDA 405
-#define PROP_INDEX_INLATINEXTENDEDE 406
-#define PROP_INDEX_INCHEROKEESUPPLEMENT 407
-#define PROP_INDEX_INMEETEIMAYEK 408
-#define PROP_INDEX_INHANGULSYLLABLES 409
-#define PROP_INDEX_INHANGULJAMOEXTENDEDB 410
-#define PROP_INDEX_INHIGHSURROGATES 411
-#define PROP_INDEX_INHIGHPRIVATEUSESURROGATES 412
-#define PROP_INDEX_INLOWSURROGATES 413
-#define PROP_INDEX_INPRIVATEUSEAREA 414
-#define PROP_INDEX_INCJKCOMPATIBILITYIDEOGRAPHS 415
-#define PROP_INDEX_INALPHABETICPRESENTATIONFORMS 416
-#define PROP_INDEX_INARABICPRESENTATIONFORMSA 417
-#define PROP_INDEX_INVARIATIONSELECTORS 418
-#define PROP_INDEX_INVERTICALFORMS 419
-#define PROP_INDEX_INCOMBININGHALFMARKS 420
-#define PROP_INDEX_INCJKCOMPATIBILITYFORMS 421
-#define PROP_INDEX_INSMALLFORMVARIANTS 422
-#define PROP_INDEX_INARABICPRESENTATIONFORMSB 423
-#define PROP_INDEX_INHALFWIDTHANDFULLWIDTHFORMS 424
-#define PROP_INDEX_INSPECIALS 425
-#define PROP_INDEX_INLINEARBSYLLABARY 426
-#define PROP_INDEX_INLINEARBIDEOGRAMS 427
-#define PROP_INDEX_INAEGEANNUMBERS 428
-#define PROP_INDEX_INANCIENTGREEKNUMBERS 429
-#define PROP_INDEX_INANCIENTSYMBOLS 430
-#define PROP_INDEX_INPHAISTOSDISC 431
-#define PROP_INDEX_INLYCIAN 432
-#define PROP_INDEX_INCARIAN 433
-#define PROP_INDEX_INCOPTICEPACTNUMBERS 434
-#define PROP_INDEX_INOLDITALIC 435
-#define PROP_INDEX_INGOTHIC 436
-#define PROP_INDEX_INOLDPERMIC 437
-#define PROP_INDEX_INUGARITIC 438
-#define PROP_INDEX_INOLDPERSIAN 439
-#define PROP_INDEX_INDESERET 440
-#define PROP_INDEX_INSHAVIAN 441
-#define PROP_INDEX_INOSMANYA 442
-#define PROP_INDEX_INOSAGE 443
-#define PROP_INDEX_INELBASAN 444
-#define PROP_INDEX_INCAUCASIANALBANIAN 445
-#define PROP_INDEX_INLINEARA 446
-#define PROP_INDEX_INCYPRIOTSYLLABARY 447
-#define PROP_INDEX_INIMPERIALARAMAIC 448
-#define PROP_INDEX_INPALMYRENE 449
-#define PROP_INDEX_INNABATAEAN 450
-#define PROP_INDEX_INHATRAN 451
-#define PROP_INDEX_INPHOENICIAN 452
-#define PROP_INDEX_INLYDIAN 453
-#define PROP_INDEX_INMEROITICHIEROGLYPHS 454
-#define PROP_INDEX_INMEROITICCURSIVE 455
-#define PROP_INDEX_INKHAROSHTHI 456
-#define PROP_INDEX_INOLDSOUTHARABIAN 457
-#define PROP_INDEX_INOLDNORTHARABIAN 458
-#define PROP_INDEX_INMANICHAEAN 459
-#define PROP_INDEX_INAVESTAN 460
-#define PROP_INDEX_ININSCRIPTIONALPARTHIAN 461
-#define PROP_INDEX_ININSCRIPTIONALPAHLAVI 462
-#define PROP_INDEX_INPSALTERPAHLAVI 463
-#define PROP_INDEX_INOLDTURKIC 464
-#define PROP_INDEX_INOLDHUNGARIAN 465
-#define PROP_INDEX_INHANIFIROHINGYA 466
-#define PROP_INDEX_INRUMINUMERALSYMBOLS 467
-#define PROP_INDEX_INOLDSOGDIAN 468
-#define PROP_INDEX_INSOGDIAN 469
-#define PROP_INDEX_INBRAHMI 470
-#define PROP_INDEX_INKAITHI 471
-#define PROP_INDEX_INSORASOMPENG 472
-#define PROP_INDEX_INCHAKMA 473
-#define PROP_INDEX_INMAHAJANI 474
-#define PROP_INDEX_INSHARADA 475
-#define PROP_INDEX_INSINHALAARCHAICNUMBERS 476
-#define PROP_INDEX_INKHOJKI 477
-#define PROP_INDEX_INMULTANI 478
-#define PROP_INDEX_INKHUDAWADI 479
-#define PROP_INDEX_INGRANTHA 480
-#define PROP_INDEX_INNEWA 481
-#define PROP_INDEX_INTIRHUTA 482
-#define PROP_INDEX_INSIDDHAM 483
-#define PROP_INDEX_INMODI 484
-#define PROP_INDEX_INMONGOLIANSUPPLEMENT 485
-#define PROP_INDEX_INTAKRI 486
-#define PROP_INDEX_INAHOM 487
-#define PROP_INDEX_INDOGRA 488
-#define PROP_INDEX_INWARANGCITI 489
-#define PROP_INDEX_INZANABAZARSQUARE 490
-#define PROP_INDEX_INSOYOMBO 491
-#define PROP_INDEX_INPAUCINHAU 492
-#define PROP_INDEX_INBHAIKSUKI 493
-#define PROP_INDEX_INMARCHEN 494
-#define PROP_INDEX_INMASARAMGONDI 495
-#define PROP_INDEX_INGUNJALAGONDI 496
-#define PROP_INDEX_INMAKASAR 497
-#define PROP_INDEX_INCUNEIFORM 498
-#define PROP_INDEX_INCUNEIFORMNUMBERSANDPUNCTUATION 499
-#define PROP_INDEX_INEARLYDYNASTICCUNEIFORM 500
-#define PROP_INDEX_INEGYPTIANHIEROGLYPHS 501
-#define PROP_INDEX_INANATOLIANHIEROGLYPHS 502
-#define PROP_INDEX_INBAMUMSUPPLEMENT 503
-#define PROP_INDEX_INMRO 504
-#define PROP_INDEX_INBASSAVAH 505
-#define PROP_INDEX_INPAHAWHHMONG 506
-#define PROP_INDEX_INMEDEFAIDRIN 507
-#define PROP_INDEX_INMIAO 508
-#define PROP_INDEX_INIDEOGRAPHICSYMBOLSANDPUNCTUATION 509
-#define PROP_INDEX_INTANGUT 510
-#define PROP_INDEX_INTANGUTCOMPONENTS 511
-#define PROP_INDEX_INKANASUPPLEMENT 512
-#define PROP_INDEX_INKANAEXTENDEDA 513
-#define PROP_INDEX_INNUSHU 514
-#define PROP_INDEX_INDUPLOYAN 515
-#define PROP_INDEX_INSHORTHANDFORMATCONTROLS 516
-#define PROP_INDEX_INBYZANTINEMUSICALSYMBOLS 517
-#define PROP_INDEX_INMUSICALSYMBOLS 518
-#define PROP_INDEX_INANCIENTGREEKMUSICALNOTATION 519
-#define PROP_INDEX_INMAYANNUMERALS 520
-#define PROP_INDEX_INTAIXUANJINGSYMBOLS 521
-#define PROP_INDEX_INCOUNTINGRODNUMERALS 522
-#define PROP_INDEX_INMATHEMATICALALPHANUMERICSYMBOLS 523
-#define PROP_INDEX_INSUTTONSIGNWRITING 524
-#define PROP_INDEX_INGLAGOLITICSUPPLEMENT 525
-#define PROP_INDEX_INMENDEKIKAKUI 526
-#define PROP_INDEX_INADLAM 527
-#define PROP_INDEX_ININDICSIYAQNUMBERS 528
-#define PROP_INDEX_INARABICMATHEMATICALALPHABETICSYMBOLS 529
-#define PROP_INDEX_INMAHJONGTILES 530
-#define PROP_INDEX_INDOMINOTILES 531
-#define PROP_INDEX_INPLAYINGCARDS 532
-#define PROP_INDEX_INENCLOSEDALPHANUMERICSUPPLEMENT 533
-#define PROP_INDEX_INENCLOSEDIDEOGRAPHICSUPPLEMENT 534
-#define PROP_INDEX_INMISCELLANEOUSSYMBOLSANDPICTOGRAPHS 535
-#define PROP_INDEX_INEMOTICONS 536
-#define PROP_INDEX_INORNAMENTALDINGBATS 537
-#define PROP_INDEX_INTRANSPORTANDMAPSYMBOLS 538
-#define PROP_INDEX_INALCHEMICALSYMBOLS 539
-#define PROP_INDEX_INGEOMETRICSHAPESEXTENDED 540
-#define PROP_INDEX_INSUPPLEMENTALARROWSC 541
-#define PROP_INDEX_INSUPPLEMENTALSYMBOLSANDPICTOGRAPHS 542
-#define PROP_INDEX_INCHESSSYMBOLS 543
-#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONB 544
-#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONC 545
-#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIOND 546
-#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONE 547
-#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONF 548
-#define PROP_INDEX_INCJKCOMPATIBILITYIDEOGRAPHSSUPPLEMENT 549
-#define PROP_INDEX_INTAGS 550
-#define PROP_INDEX_INVARIATIONSELECTORSSUPPLEMENT 551
-#define PROP_INDEX_INSUPPLEMENTARYPRIVATEUSEAREAA 552
-#define PROP_INDEX_INSUPPLEMENTARYPRIVATEUSEAREAB 553
-#define PROP_INDEX_INNOBLOCK 554
+#define PROP_INDEX_ELYM 71
+#define PROP_INDEX_ELYMAIC 71
+#define PROP_INDEX_EMOJI 72
+#define PROP_INDEX_EMOJICOMPONENT 73
+#define PROP_INDEX_EMOJIMODIFIER 74
+#define PROP_INDEX_EMOJIMODIFIERBASE 75
+#define PROP_INDEX_EMOJIPRESENTATION 76
+#define PROP_INDEX_ETHIOPIC 77
+#define PROP_INDEX_ETHI 77
+#define PROP_INDEX_EXTENDEDPICTOGRAPHIC 78
+#define PROP_INDEX_EXT 79
+#define PROP_INDEX_EXTENDER 79
+#define PROP_INDEX_GEORGIAN 80
+#define PROP_INDEX_GEOR 80
+#define PROP_INDEX_GLAG 81
+#define PROP_INDEX_GLAGOLITIC 81
+#define PROP_INDEX_GOTH 82
+#define PROP_INDEX_GOTHIC 82
+#define PROP_INDEX_GRAN 83
+#define PROP_INDEX_GRANTHA 83
+#define PROP_INDEX_GRBASE 84
+#define PROP_INDEX_GRAPHEMEBASE 84
+#define PROP_INDEX_GREXT 85
+#define PROP_INDEX_GRAPHEMEEXTEND 85
+#define PROP_INDEX_GRAPHEMELINK 86
+#define PROP_INDEX_GRLINK 86
+#define PROP_INDEX_GREEK 87
+#define PROP_INDEX_GREK 87
+#define PROP_INDEX_GUJARATI 88
+#define PROP_INDEX_GUJR 88
+#define PROP_INDEX_GUNJALAGONDI 89
+#define PROP_INDEX_GONG 89
+#define PROP_INDEX_GURU 90
+#define PROP_INDEX_GURMUKHI 90
+#define PROP_INDEX_HANI 91
+#define PROP_INDEX_HAN 91
+#define PROP_INDEX_HANG 92
+#define PROP_INDEX_HANGUL 92
+#define PROP_INDEX_HANIFIROHINGYA 93
+#define PROP_INDEX_ROHG 93
+#define PROP_INDEX_HANUNOO 94
+#define PROP_INDEX_HANO 94
+#define PROP_INDEX_HATR 95
+#define PROP_INDEX_HATRAN 95
+#define PROP_INDEX_HEBREW 96
+#define PROP_INDEX_HEBR 96
+#define PROP_INDEX_HEXDIGIT 97
+#define PROP_INDEX_HEX 97
+#define PROP_INDEX_HIRAGANA 98
+#define PROP_INDEX_HIRA 98
+#define PROP_INDEX_HYPHEN 99
+#define PROP_INDEX_IDSB 100
+#define PROP_INDEX_IDSBINARYOPERATOR 100
+#define PROP_INDEX_IDST 101
+#define PROP_INDEX_IDSTRINARYOPERATOR 101
+#define PROP_INDEX_IDCONTINUE 102
+#define PROP_INDEX_IDC 102
+#define PROP_INDEX_IDS 103
+#define PROP_INDEX_IDSTART 103
+#define PROP_INDEX_IDEO 104
+#define PROP_INDEX_IDEOGRAPHIC 104
+#define PROP_INDEX_ARMI 105
+#define PROP_INDEX_IMPERIALARAMAIC 105
+#define PROP_INDEX_ZINH 106
+#define PROP_INDEX_INHERITED 106
+#define PROP_INDEX_QAAI 106
+#define PROP_INDEX_PHLI 107
+#define PROP_INDEX_INSCRIPTIONALPAHLAVI 107
+#define PROP_INDEX_INSCRIPTIONALPARTHIAN 108
+#define PROP_INDEX_PRTI 108
+#define PROP_INDEX_JAVANESE 109
+#define PROP_INDEX_JAVA 109
+#define PROP_INDEX_JOINC 110
+#define PROP_INDEX_JOINCONTROL 110
+#define PROP_INDEX_KAITHI 111
+#define PROP_INDEX_KTHI 111
+#define PROP_INDEX_KNDA 112
+#define PROP_INDEX_KANNADA 112
+#define PROP_INDEX_KATAKANA 113
+#define PROP_INDEX_KANA 113
+#define PROP_INDEX_KAYAHLI 114
+#define PROP_INDEX_KALI 114
+#define PROP_INDEX_KHAROSHTHI 115
+#define PROP_INDEX_KHAR 115
+#define PROP_INDEX_KHMR 116
+#define PROP_INDEX_KHMER 116
+#define PROP_INDEX_KHOJ 117
+#define PROP_INDEX_KHOJKI 117
+#define PROP_INDEX_KHUDAWADI 118
+#define PROP_INDEX_SIND 118
+#define PROP_INDEX_L 119
+#define PROP_INDEX_LETTER 119
+#define PROP_INDEX_LC 120
+#define PROP_INDEX_CASEDLETTER 120
+#define PROP_INDEX_LAO 121
+#define PROP_INDEX_LAOO 121
+#define PROP_INDEX_LATN 122
+#define PROP_INDEX_LATIN 122
+#define PROP_INDEX_LEPC 123
+#define PROP_INDEX_LEPCHA 123
+#define PROP_INDEX_LIMBU 124
+#define PROP_INDEX_LIMB 124
+#define PROP_INDEX_LINA 125
+#define PROP_INDEX_LINEARA 125
+#define PROP_INDEX_LINB 126
+#define PROP_INDEX_LINEARB 126
+#define PROP_INDEX_LISU 127
+#define PROP_INDEX_LOWERCASELETTER 128
+#define PROP_INDEX_LL 128
+#define PROP_INDEX_LM 129
+#define PROP_INDEX_MODIFIERLETTER 129
+#define PROP_INDEX_LO 130
+#define PROP_INDEX_OTHERLETTER 130
+#define PROP_INDEX_LOGICALORDEREXCEPTION 131
+#define PROP_INDEX_LOE 131
+#define PROP_INDEX_LOWERCASE 132
+#define PROP_INDEX_LT 133
+#define PROP_INDEX_TITLECASELETTER 133
+#define PROP_INDEX_UPPERCASELETTER 134
+#define PROP_INDEX_LU 134
+#define PROP_INDEX_LYCI 135
+#define PROP_INDEX_LYCIAN 135
+#define PROP_INDEX_LYDI 136
+#define PROP_INDEX_LYDIAN 136
+#define PROP_INDEX_M 137
+#define PROP_INDEX_COMBININGMARK 137
+#define PROP_INDEX_MARK 137
+#define PROP_INDEX_MAHJ 138
+#define PROP_INDEX_MAHAJANI 138
+#define PROP_INDEX_MAKASAR 139
+#define PROP_INDEX_MAKA 139
+#define PROP_INDEX_MALAYALAM 140
+#define PROP_INDEX_MLYM 140
+#define PROP_INDEX_MAND 141
+#define PROP_INDEX_MANDAIC 141
+#define PROP_INDEX_MANI 142
+#define PROP_INDEX_MANICHAEAN 142
+#define PROP_INDEX_MARC 143
+#define PROP_INDEX_MARCHEN 143
+#define PROP_INDEX_MASARAMGONDI 144
+#define PROP_INDEX_GONM 144
+#define PROP_INDEX_MATH 145
+#define PROP_INDEX_MC 146
+#define PROP_INDEX_SPACINGMARK 146
+#define PROP_INDEX_ENCLOSINGMARK 147
+#define PROP_INDEX_ME 147
+#define PROP_INDEX_MEDEFAIDRIN 148
+#define PROP_INDEX_MEDF 148
+#define PROP_INDEX_MEETEIMAYEK 149
+#define PROP_INDEX_MTEI 149
+#define PROP_INDEX_MENDEKIKAKUI 150
+#define PROP_INDEX_MEND 150
+#define PROP_INDEX_MEROITICCURSIVE 151
+#define PROP_INDEX_MERC 151
+#define PROP_INDEX_MEROITICHIEROGLYPHS 152
+#define PROP_INDEX_MERO 152
+#define PROP_INDEX_PLRD 153
+#define PROP_INDEX_MIAO 153
+#define PROP_INDEX_MN 154
+#define PROP_INDEX_NONSPACINGMARK 154
+#define PROP_INDEX_MODI 155
+#define PROP_INDEX_MONGOLIAN 156
+#define PROP_INDEX_MONG 156
+#define PROP_INDEX_MRO 157
+#define PROP_INDEX_MROO 157
+#define PROP_INDEX_MULT 158
+#define PROP_INDEX_MULTANI 158
+#define PROP_INDEX_MYANMAR 159
+#define PROP_INDEX_MYMR 159
+#define PROP_INDEX_NUMBER 160
+#define PROP_INDEX_N 160
+#define PROP_INDEX_NABATAEAN 161
+#define PROP_INDEX_NBAT 161
+#define PROP_INDEX_NAND 162
+#define PROP_INDEX_NANDINAGARI 162
+#define PROP_INDEX_DECIMALNUMBER 163
+#define PROP_INDEX_ND 163
+#define PROP_INDEX_TALU 164
+#define PROP_INDEX_NEWTAILUE 164
+#define PROP_INDEX_NEWA 165
+#define PROP_INDEX_NKO 166
+#define PROP_INDEX_NKOO 166
+#define PROP_INDEX_LETTERNUMBER 167
+#define PROP_INDEX_NL 167
+#define PROP_INDEX_OTHERNUMBER 168
+#define PROP_INDEX_NO 168
+#define PROP_INDEX_NONCHARACTERCODEPOINT 169
+#define PROP_INDEX_NCHAR 169
+#define PROP_INDEX_NSHU 170
+#define PROP_INDEX_NUSHU 170
+#define PROP_INDEX_HMNP 171
+#define PROP_INDEX_NYIAKENGPUACHUEHMONG 171
+#define PROP_INDEX_OGHAM 172
+#define PROP_INDEX_OGAM 172
+#define PROP_INDEX_OLCK 173
+#define PROP_INDEX_OLCHIKI 173
+#define PROP_INDEX_HUNG 174
+#define PROP_INDEX_OLDHUNGARIAN 174
+#define PROP_INDEX_ITAL 175
+#define PROP_INDEX_OLDITALIC 175
+#define PROP_INDEX_NARB 176
+#define PROP_INDEX_OLDNORTHARABIAN 176
+#define PROP_INDEX_OLDPERMIC 177
+#define PROP_INDEX_PERM 177
+#define PROP_INDEX_OLDPERSIAN 178
+#define PROP_INDEX_XPEO 178
+#define PROP_INDEX_SOGO 179
+#define PROP_INDEX_OLDSOGDIAN 179
+#define PROP_INDEX_SARB 180
+#define PROP_INDEX_OLDSOUTHARABIAN 180
+#define PROP_INDEX_OLDTURKIC 181
+#define PROP_INDEX_ORKH 181
+#define PROP_INDEX_ORYA 182
+#define PROP_INDEX_ORIYA 182
+#define PROP_INDEX_OSAGE 183
+#define PROP_INDEX_OSGE 183
+#define PROP_INDEX_OSMANYA 184
+#define PROP_INDEX_OSMA 184
+#define PROP_INDEX_OTHERALPHABETIC 185
+#define PROP_INDEX_OALPHA 185
+#define PROP_INDEX_ODI 186
+#define PROP_INDEX_OTHERDEFAULTIGNORABLECODEPOINT 186
+#define PROP_INDEX_OGREXT 187
+#define PROP_INDEX_OTHERGRAPHEMEEXTEND 187
+#define PROP_INDEX_OIDC 188
+#define PROP_INDEX_OTHERIDCONTINUE 188
+#define PROP_INDEX_OTHERIDSTART 189
+#define PROP_INDEX_OIDS 189
+#define PROP_INDEX_OTHERLOWERCASE 190
+#define PROP_INDEX_OLOWER 190
+#define PROP_INDEX_OTHERMATH 191
+#define PROP_INDEX_OMATH 191
+#define PROP_INDEX_OTHERUPPERCASE 192
+#define PROP_INDEX_OUPPER 192
+#define PROP_INDEX_P 193
+#define PROP_INDEX_PUNCTUATION 193
+#define PROP_INDEX_PAHAWHHMONG 194
+#define PROP_INDEX_HMNG 194
+#define PROP_INDEX_PALMYRENE 195
+#define PROP_INDEX_PALM 195
+#define PROP_INDEX_PATTERNSYNTAX 196
+#define PROP_INDEX_PATSYN 196
+#define PROP_INDEX_PATWS 197
+#define PROP_INDEX_PATTERNWHITESPACE 197
+#define PROP_INDEX_PAUCINHAU 198
+#define PROP_INDEX_PAUC 198
+#define PROP_INDEX_CONNECTORPUNCTUATION 199
+#define PROP_INDEX_PC 199
+#define PROP_INDEX_DASHPUNCTUATION 200
+#define PROP_INDEX_PD 200
+#define PROP_INDEX_PE 201
+#define PROP_INDEX_CLOSEPUNCTUATION 201
+#define PROP_INDEX_FINALPUNCTUATION 202
+#define PROP_INDEX_PF 202
+#define PROP_INDEX_PHAG 203
+#define PROP_INDEX_PHAGSPA 203
+#define PROP_INDEX_PHOENICIAN 204
+#define PROP_INDEX_PHNX 204
+#define PROP_INDEX_PI 205
+#define PROP_INDEX_INITIALPUNCTUATION 205
+#define PROP_INDEX_OTHERPUNCTUATION 206
+#define PROP_INDEX_PO 206
+#define PROP_INDEX_PREPENDEDCONCATENATIONMARK 207
+#define PROP_INDEX_PCM 207
+#define PROP_INDEX_PS 208
+#define PROP_INDEX_OPENPUNCTUATION 208
+#define PROP_INDEX_PHLP 209
+#define PROP_INDEX_PSALTERPAHLAVI 209
+#define PROP_INDEX_QUOTATIONMARK 210
+#define PROP_INDEX_QMARK 210
+#define PROP_INDEX_RADICAL 211
+#define PROP_INDEX_RI 212
+#define PROP_INDEX_REGIONALINDICATOR 212
+#define PROP_INDEX_REJANG 213
+#define PROP_INDEX_RJNG 213
+#define PROP_INDEX_RUNIC 214
+#define PROP_INDEX_RUNR 214
+#define PROP_INDEX_S 215
+#define PROP_INDEX_SYMBOL 215
+#define PROP_INDEX_SAMARITAN 216
+#define PROP_INDEX_SAMR 216
+#define PROP_INDEX_SAURASHTRA 217
+#define PROP_INDEX_SAUR 217
+#define PROP_INDEX_SC 218
+#define PROP_INDEX_CURRENCYSYMBOL 218
+#define PROP_INDEX_SENTENCETERMINAL 219
+#define PROP_INDEX_STERM 219
+#define PROP_INDEX_SHARADA 220
+#define PROP_INDEX_SHRD 220
+#define PROP_INDEX_SHAVIAN 221
+#define PROP_INDEX_SHAW 221
+#define PROP_INDEX_SIDDHAM 222
+#define PROP_INDEX_SIDD 222
+#define PROP_INDEX_SIGNWRITING 223
+#define PROP_INDEX_SGNW 223
+#define PROP_INDEX_SINH 224
+#define PROP_INDEX_SINHALA 224
+#define PROP_INDEX_SK 225
+#define PROP_INDEX_MODIFIERSYMBOL 225
+#define PROP_INDEX_MATHSYMBOL 226
+#define PROP_INDEX_SM 226
+#define PROP_INDEX_SO 227
+#define PROP_INDEX_OTHERSYMBOL 227
+#define PROP_INDEX_SD 228
+#define PROP_INDEX_SOFTDOTTED 228
+#define PROP_INDEX_SOGD 229
+#define PROP_INDEX_SOGDIAN 229
+#define PROP_INDEX_SORASOMPENG 230
+#define PROP_INDEX_SORA 230
+#define PROP_INDEX_SOYO 231
+#define PROP_INDEX_SOYOMBO 231
+#define PROP_INDEX_SUND 232
+#define PROP_INDEX_SUNDANESE 232
+#define PROP_INDEX_SYLO 233
+#define PROP_INDEX_SYLOTINAGRI 233
+#define PROP_INDEX_SYRC 234
+#define PROP_INDEX_SYRIAC 234
+#define PROP_INDEX_TGLG 235
+#define PROP_INDEX_TAGALOG 235
+#define PROP_INDEX_TAGBANWA 236
+#define PROP_INDEX_TAGB 236
+#define PROP_INDEX_TAILE 237
+#define PROP_INDEX_TALE 237
+#define PROP_INDEX_TAITHAM 238
+#define PROP_INDEX_LANA 238
+#define PROP_INDEX_TAIVIET 239
+#define PROP_INDEX_TAVT 239
+#define PROP_INDEX_TAKRI 240
+#define PROP_INDEX_TAKR 240
+#define PROP_INDEX_TAMIL 241
+#define PROP_INDEX_TAML 241
+#define PROP_INDEX_TANG 242
+#define PROP_INDEX_TANGUT 242
+#define PROP_INDEX_TELUGU 243
+#define PROP_INDEX_TELU 243
+#define PROP_INDEX_TERM 244
+#define PROP_INDEX_TERMINALPUNCTUATION 244
+#define PROP_INDEX_THAA 245
+#define PROP_INDEX_THAANA 245
+#define PROP_INDEX_THAI 246
+#define PROP_INDEX_TIBT 247
+#define PROP_INDEX_TIBETAN 247
+#define PROP_INDEX_TFNG 248
+#define PROP_INDEX_TIFINAGH 248
+#define PROP_INDEX_TIRHUTA 249
+#define PROP_INDEX_TIRH 249
+#define PROP_INDEX_UGAR 250
+#define PROP_INDEX_UGARITIC 250
+#define PROP_INDEX_UNIFIEDIDEOGRAPH 251
+#define PROP_INDEX_UIDEO 251
+#define PROP_INDEX_ZZZZ 252
+#define PROP_INDEX_UNKNOWN 252
+#define PROP_INDEX_UPPERCASE 253
+#define PROP_INDEX_VAII 254
+#define PROP_INDEX_VAI 254
+#define PROP_INDEX_VARIATIONSELECTOR 255
+#define PROP_INDEX_VS 255
+#define PROP_INDEX_WCHO 256
+#define PROP_INDEX_WANCHO 256
+#define PROP_INDEX_WARANGCITI 257
+#define PROP_INDEX_WARA 257
+#define PROP_INDEX_WHITESPACE 258
+#define PROP_INDEX_WSPACE 258
+#define PROP_INDEX_XIDC 259
+#define PROP_INDEX_XIDCONTINUE 259
+#define PROP_INDEX_XIDS 260
+#define PROP_INDEX_XIDSTART 260
+#define PROP_INDEX_YI 261
+#define PROP_INDEX_YIII 261
+#define PROP_INDEX_SEPARATOR 262
+#define PROP_INDEX_Z 262
+#define PROP_INDEX_ZANABAZARSQUARE 263
+#define PROP_INDEX_ZANB 263
+#define PROP_INDEX_ZL 264
+#define PROP_INDEX_LINESEPARATOR 264
+#define PROP_INDEX_ZP 265
+#define PROP_INDEX_PARAGRAPHSEPARATOR 265
+#define PROP_INDEX_ZS 266
+#define PROP_INDEX_SPACESEPARATOR 266
+#define PROP_INDEX_INBASICLATIN 267
+#define PROP_INDEX_INLATIN1SUPPLEMENT 268
+#define PROP_INDEX_INLATINEXTENDEDA 269
+#define PROP_INDEX_INLATINEXTENDEDB 270
+#define PROP_INDEX_INIPAEXTENSIONS 271
+#define PROP_INDEX_INSPACINGMODIFIERLETTERS 272
+#define PROP_INDEX_INCOMBININGDIACRITICALMARKS 273
+#define PROP_INDEX_INGREEKANDCOPTIC 274
+#define PROP_INDEX_INCYRILLIC 275
+#define PROP_INDEX_INCYRILLICSUPPLEMENT 276
+#define PROP_INDEX_INARMENIAN 277
+#define PROP_INDEX_INHEBREW 278
+#define PROP_INDEX_INARABIC 279
+#define PROP_INDEX_INSYRIAC 280
+#define PROP_INDEX_INARABICSUPPLEMENT 281
+#define PROP_INDEX_INTHAANA 282
+#define PROP_INDEX_INNKO 283
+#define PROP_INDEX_INSAMARITAN 284
+#define PROP_INDEX_INMANDAIC 285
+#define PROP_INDEX_INSYRIACSUPPLEMENT 286
+#define PROP_INDEX_INARABICEXTENDEDA 287
+#define PROP_INDEX_INDEVANAGARI 288
+#define PROP_INDEX_INBENGALI 289
+#define PROP_INDEX_INGURMUKHI 290
+#define PROP_INDEX_INGUJARATI 291
+#define PROP_INDEX_INORIYA 292
+#define PROP_INDEX_INTAMIL 293
+#define PROP_INDEX_INTELUGU 294
+#define PROP_INDEX_INKANNADA 295
+#define PROP_INDEX_INMALAYALAM 296
+#define PROP_INDEX_INSINHALA 297
+#define PROP_INDEX_INTHAI 298
+#define PROP_INDEX_INLAO 299
+#define PROP_INDEX_INTIBETAN 300
+#define PROP_INDEX_INMYANMAR 301
+#define PROP_INDEX_INGEORGIAN 302
+#define PROP_INDEX_INHANGULJAMO 303
+#define PROP_INDEX_INETHIOPIC 304
+#define PROP_INDEX_INETHIOPICSUPPLEMENT 305
+#define PROP_INDEX_INCHEROKEE 306
+#define PROP_INDEX_INUNIFIEDCANADIANABORIGINALSYLLABICS 307
+#define PROP_INDEX_INOGHAM 308
+#define PROP_INDEX_INRUNIC 309
+#define PROP_INDEX_INTAGALOG 310
+#define PROP_INDEX_INHANUNOO 311
+#define PROP_INDEX_INBUHID 312
+#define PROP_INDEX_INTAGBANWA 313
+#define PROP_INDEX_INKHMER 314
+#define PROP_INDEX_INMONGOLIAN 315
+#define PROP_INDEX_INUNIFIEDCANADIANABORIGINALSYLLABICSEXTENDED 316
+#define PROP_INDEX_INLIMBU 317
+#define PROP_INDEX_INTAILE 318
+#define PROP_INDEX_INNEWTAILUE 319
+#define PROP_INDEX_INKHMERSYMBOLS 320
+#define PROP_INDEX_INBUGINESE 321
+#define PROP_INDEX_INTAITHAM 322
+#define PROP_INDEX_INCOMBININGDIACRITICALMARKSEXTENDED 323
+#define PROP_INDEX_INBALINESE 324
+#define PROP_INDEX_INSUNDANESE 325
+#define PROP_INDEX_INBATAK 326
+#define PROP_INDEX_INLEPCHA 327
+#define PROP_INDEX_INOLCHIKI 328
+#define PROP_INDEX_INCYRILLICEXTENDEDC 329
+#define PROP_INDEX_INGEORGIANEXTENDED 330
+#define PROP_INDEX_INSUNDANESESUPPLEMENT 331
+#define PROP_INDEX_INVEDICEXTENSIONS 332
+#define PROP_INDEX_INPHONETICEXTENSIONS 333
+#define PROP_INDEX_INPHONETICEXTENSIONSSUPPLEMENT 334
+#define PROP_INDEX_INCOMBININGDIACRITICALMARKSSUPPLEMENT 335
+#define PROP_INDEX_INLATINEXTENDEDADDITIONAL 336
+#define PROP_INDEX_INGREEKEXTENDED 337
+#define PROP_INDEX_INGENERALPUNCTUATION 338
+#define PROP_INDEX_INSUPERSCRIPTSANDSUBSCRIPTS 339
+#define PROP_INDEX_INCURRENCYSYMBOLS 340
+#define PROP_INDEX_INCOMBININGDIACRITICALMARKSFORSYMBOLS 341
+#define PROP_INDEX_INLETTERLIKESYMBOLS 342
+#define PROP_INDEX_INNUMBERFORMS 343
+#define PROP_INDEX_INARROWS 344
+#define PROP_INDEX_INMATHEMATICALOPERATORS 345
+#define PROP_INDEX_INMISCELLANEOUSTECHNICAL 346
+#define PROP_INDEX_INCONTROLPICTURES 347
+#define PROP_INDEX_INOPTICALCHARACTERRECOGNITION 348
+#define PROP_INDEX_INENCLOSEDALPHANUMERICS 349
+#define PROP_INDEX_INBOXDRAWING 350
+#define PROP_INDEX_INBLOCKELEMENTS 351
+#define PROP_INDEX_INGEOMETRICSHAPES 352
+#define PROP_INDEX_INMISCELLANEOUSSYMBOLS 353
+#define PROP_INDEX_INDINGBATS 354
+#define PROP_INDEX_INMISCELLANEOUSMATHEMATICALSYMBOLSA 355
+#define PROP_INDEX_INSUPPLEMENTALARROWSA 356
+#define PROP_INDEX_INBRAILLEPATTERNS 357
+#define PROP_INDEX_INSUPPLEMENTALARROWSB 358
+#define PROP_INDEX_INMISCELLANEOUSMATHEMATICALSYMBOLSB 359
+#define PROP_INDEX_INSUPPLEMENTALMATHEMATICALOPERATORS 360
+#define PROP_INDEX_INMISCELLANEOUSSYMBOLSANDARROWS 361
+#define PROP_INDEX_INGLAGOLITIC 362
+#define PROP_INDEX_INLATINEXTENDEDC 363
+#define PROP_INDEX_INCOPTIC 364
+#define PROP_INDEX_INGEORGIANSUPPLEMENT 365
+#define PROP_INDEX_INTIFINAGH 366
+#define PROP_INDEX_INETHIOPICEXTENDED 367
+#define PROP_INDEX_INCYRILLICEXTENDEDA 368
+#define PROP_INDEX_INSUPPLEMENTALPUNCTUATION 369
+#define PROP_INDEX_INCJKRADICALSSUPPLEMENT 370
+#define PROP_INDEX_INKANGXIRADICALS 371
+#define PROP_INDEX_INIDEOGRAPHICDESCRIPTIONCHARACTERS 372
+#define PROP_INDEX_INCJKSYMBOLSANDPUNCTUATION 373
+#define PROP_INDEX_INHIRAGANA 374
+#define PROP_INDEX_INKATAKANA 375
+#define PROP_INDEX_INBOPOMOFO 376
+#define PROP_INDEX_INHANGULCOMPATIBILITYJAMO 377
+#define PROP_INDEX_INKANBUN 378
+#define PROP_INDEX_INBOPOMOFOEXTENDED 379
+#define PROP_INDEX_INCJKSTROKES 380
+#define PROP_INDEX_INKATAKANAPHONETICEXTENSIONS 381
+#define PROP_INDEX_INENCLOSEDCJKLETTERSANDMONTHS 382
+#define PROP_INDEX_INCJKCOMPATIBILITY 383
+#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONA 384
+#define PROP_INDEX_INYIJINGHEXAGRAMSYMBOLS 385
+#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHS 386
+#define PROP_INDEX_INYISYLLABLES 387
+#define PROP_INDEX_INYIRADICALS 388
+#define PROP_INDEX_INLISU 389
+#define PROP_INDEX_INVAI 390
+#define PROP_INDEX_INCYRILLICEXTENDEDB 391
+#define PROP_INDEX_INBAMUM 392
+#define PROP_INDEX_INMODIFIERTONELETTERS 393
+#define PROP_INDEX_INLATINEXTENDEDD 394
+#define PROP_INDEX_INSYLOTINAGRI 395
+#define PROP_INDEX_INCOMMONINDICNUMBERFORMS 396
+#define PROP_INDEX_INPHAGSPA 397
+#define PROP_INDEX_INSAURASHTRA 398
+#define PROP_INDEX_INDEVANAGARIEXTENDED 399
+#define PROP_INDEX_INKAYAHLI 400
+#define PROP_INDEX_INREJANG 401
+#define PROP_INDEX_INHANGULJAMOEXTENDEDA 402
+#define PROP_INDEX_INJAVANESE 403
+#define PROP_INDEX_INMYANMAREXTENDEDB 404
+#define PROP_INDEX_INCHAM 405
+#define PROP_INDEX_INMYANMAREXTENDEDA 406
+#define PROP_INDEX_INTAIVIET 407
+#define PROP_INDEX_INMEETEIMAYEKEXTENSIONS 408
+#define PROP_INDEX_INETHIOPICEXTENDEDA 409
+#define PROP_INDEX_INLATINEXTENDEDE 410
+#define PROP_INDEX_INCHEROKEESUPPLEMENT 411
+#define PROP_INDEX_INMEETEIMAYEK 412
+#define PROP_INDEX_INHANGULSYLLABLES 413
+#define PROP_INDEX_INHANGULJAMOEXTENDEDB 414
+#define PROP_INDEX_INHIGHSURROGATES 415
+#define PROP_INDEX_INHIGHPRIVATEUSESURROGATES 416
+#define PROP_INDEX_INLOWSURROGATES 417
+#define PROP_INDEX_INPRIVATEUSEAREA 418
+#define PROP_INDEX_INCJKCOMPATIBILITYIDEOGRAPHS 419
+#define PROP_INDEX_INALPHABETICPRESENTATIONFORMS 420
+#define PROP_INDEX_INARABICPRESENTATIONFORMSA 421
+#define PROP_INDEX_INVARIATIONSELECTORS 422
+#define PROP_INDEX_INVERTICALFORMS 423
+#define PROP_INDEX_INCOMBININGHALFMARKS 424
+#define PROP_INDEX_INCJKCOMPATIBILITYFORMS 425
+#define PROP_INDEX_INSMALLFORMVARIANTS 426
+#define PROP_INDEX_INARABICPRESENTATIONFORMSB 427
+#define PROP_INDEX_INHALFWIDTHANDFULLWIDTHFORMS 428
+#define PROP_INDEX_INSPECIALS 429
+#define PROP_INDEX_INLINEARBSYLLABARY 430
+#define PROP_INDEX_INLINEARBIDEOGRAMS 431
+#define PROP_INDEX_INAEGEANNUMBERS 432
+#define PROP_INDEX_INANCIENTGREEKNUMBERS 433
+#define PROP_INDEX_INANCIENTSYMBOLS 434
+#define PROP_INDEX_INPHAISTOSDISC 435
+#define PROP_INDEX_INLYCIAN 436
+#define PROP_INDEX_INCARIAN 437
+#define PROP_INDEX_INCOPTICEPACTNUMBERS 438
+#define PROP_INDEX_INOLDITALIC 439
+#define PROP_INDEX_INGOTHIC 440
+#define PROP_INDEX_INOLDPERMIC 441
+#define PROP_INDEX_INUGARITIC 442
+#define PROP_INDEX_INOLDPERSIAN 443
+#define PROP_INDEX_INDESERET 444
+#define PROP_INDEX_INSHAVIAN 445
+#define PROP_INDEX_INOSMANYA 446
+#define PROP_INDEX_INOSAGE 447
+#define PROP_INDEX_INELBASAN 448
+#define PROP_INDEX_INCAUCASIANALBANIAN 449
+#define PROP_INDEX_INLINEARA 450
+#define PROP_INDEX_INCYPRIOTSYLLABARY 451
+#define PROP_INDEX_INIMPERIALARAMAIC 452
+#define PROP_INDEX_INPALMYRENE 453
+#define PROP_INDEX_INNABATAEAN 454
+#define PROP_INDEX_INHATRAN 455
+#define PROP_INDEX_INPHOENICIAN 456
+#define PROP_INDEX_INLYDIAN 457
+#define PROP_INDEX_INMEROITICHIEROGLYPHS 458
+#define PROP_INDEX_INMEROITICCURSIVE 459
+#define PROP_INDEX_INKHAROSHTHI 460
+#define PROP_INDEX_INOLDSOUTHARABIAN 461
+#define PROP_INDEX_INOLDNORTHARABIAN 462
+#define PROP_INDEX_INMANICHAEAN 463
+#define PROP_INDEX_INAVESTAN 464
+#define PROP_INDEX_ININSCRIPTIONALPARTHIAN 465
+#define PROP_INDEX_ININSCRIPTIONALPAHLAVI 466
+#define PROP_INDEX_INPSALTERPAHLAVI 467
+#define PROP_INDEX_INOLDTURKIC 468
+#define PROP_INDEX_INOLDHUNGARIAN 469
+#define PROP_INDEX_INHANIFIROHINGYA 470
+#define PROP_INDEX_INRUMINUMERALSYMBOLS 471
+#define PROP_INDEX_INOLDSOGDIAN 472
+#define PROP_INDEX_INSOGDIAN 473
+#define PROP_INDEX_INELYMAIC 474
+#define PROP_INDEX_INBRAHMI 475
+#define PROP_INDEX_INKAITHI 476
+#define PROP_INDEX_INSORASOMPENG 477
+#define PROP_INDEX_INCHAKMA 478
+#define PROP_INDEX_INMAHAJANI 479
+#define PROP_INDEX_INSHARADA 480
+#define PROP_INDEX_INSINHALAARCHAICNUMBERS 481
+#define PROP_INDEX_INKHOJKI 482
+#define PROP_INDEX_INMULTANI 483
+#define PROP_INDEX_INKHUDAWADI 484
+#define PROP_INDEX_INGRANTHA 485
+#define PROP_INDEX_INNEWA 486
+#define PROP_INDEX_INTIRHUTA 487
+#define PROP_INDEX_INSIDDHAM 488
+#define PROP_INDEX_INMODI 489
+#define PROP_INDEX_INMONGOLIANSUPPLEMENT 490
+#define PROP_INDEX_INTAKRI 491
+#define PROP_INDEX_INAHOM 492
+#define PROP_INDEX_INDOGRA 493
+#define PROP_INDEX_INWARANGCITI 494
+#define PROP_INDEX_INNANDINAGARI 495
+#define PROP_INDEX_INZANABAZARSQUARE 496
+#define PROP_INDEX_INSOYOMBO 497
+#define PROP_INDEX_INPAUCINHAU 498
+#define PROP_INDEX_INBHAIKSUKI 499
+#define PROP_INDEX_INMARCHEN 500
+#define PROP_INDEX_INMASARAMGONDI 501
+#define PROP_INDEX_INGUNJALAGONDI 502
+#define PROP_INDEX_INMAKASAR 503
+#define PROP_INDEX_INTAMILSUPPLEMENT 504
+#define PROP_INDEX_INCUNEIFORM 505
+#define PROP_INDEX_INCUNEIFORMNUMBERSANDPUNCTUATION 506
+#define PROP_INDEX_INEARLYDYNASTICCUNEIFORM 507
+#define PROP_INDEX_INEGYPTIANHIEROGLYPHS 508
+#define PROP_INDEX_INEGYPTIANHIEROGLYPHFORMATCONTROLS 509
+#define PROP_INDEX_INANATOLIANHIEROGLYPHS 510
+#define PROP_INDEX_INBAMUMSUPPLEMENT 511
+#define PROP_INDEX_INMRO 512
+#define PROP_INDEX_INBASSAVAH 513
+#define PROP_INDEX_INPAHAWHHMONG 514
+#define PROP_INDEX_INMEDEFAIDRIN 515
+#define PROP_INDEX_INMIAO 516
+#define PROP_INDEX_INIDEOGRAPHICSYMBOLSANDPUNCTUATION 517
+#define PROP_INDEX_INTANGUT 518
+#define PROP_INDEX_INTANGUTCOMPONENTS 519
+#define PROP_INDEX_INKANASUPPLEMENT 520
+#define PROP_INDEX_INKANAEXTENDEDA 521
+#define PROP_INDEX_INSMALLKANAEXTENSION 522
+#define PROP_INDEX_INNUSHU 523
+#define PROP_INDEX_INDUPLOYAN 524
+#define PROP_INDEX_INSHORTHANDFORMATCONTROLS 525
+#define PROP_INDEX_INBYZANTINEMUSICALSYMBOLS 526
+#define PROP_INDEX_INMUSICALSYMBOLS 527
+#define PROP_INDEX_INANCIENTGREEKMUSICALNOTATION 528
+#define PROP_INDEX_INMAYANNUMERALS 529
+#define PROP_INDEX_INTAIXUANJINGSYMBOLS 530
+#define PROP_INDEX_INCOUNTINGRODNUMERALS 531
+#define PROP_INDEX_INMATHEMATICALALPHANUMERICSYMBOLS 532
+#define PROP_INDEX_INSUTTONSIGNWRITING 533
+#define PROP_INDEX_INGLAGOLITICSUPPLEMENT 534
+#define PROP_INDEX_INNYIAKENGPUACHUEHMONG 535
+#define PROP_INDEX_INWANCHO 536
+#define PROP_INDEX_INMENDEKIKAKUI 537
+#define PROP_INDEX_INADLAM 538
+#define PROP_INDEX_ININDICSIYAQNUMBERS 539
+#define PROP_INDEX_INOTTOMANSIYAQNUMBERS 540
+#define PROP_INDEX_INARABICMATHEMATICALALPHABETICSYMBOLS 541
+#define PROP_INDEX_INMAHJONGTILES 542
+#define PROP_INDEX_INDOMINOTILES 543
+#define PROP_INDEX_INPLAYINGCARDS 544
+#define PROP_INDEX_INENCLOSEDALPHANUMERICSUPPLEMENT 545
+#define PROP_INDEX_INENCLOSEDIDEOGRAPHICSUPPLEMENT 546
+#define PROP_INDEX_INMISCELLANEOUSSYMBOLSANDPICTOGRAPHS 547
+#define PROP_INDEX_INEMOTICONS 548
+#define PROP_INDEX_INORNAMENTALDINGBATS 549
+#define PROP_INDEX_INTRANSPORTANDMAPSYMBOLS 550
+#define PROP_INDEX_INALCHEMICALSYMBOLS 551
+#define PROP_INDEX_INGEOMETRICSHAPESEXTENDED 552
+#define PROP_INDEX_INSUPPLEMENTALARROWSC 553
+#define PROP_INDEX_INSUPPLEMENTALSYMBOLSANDPICTOGRAPHS 554
+#define PROP_INDEX_INCHESSSYMBOLS 555
+#define PROP_INDEX_INSYMBOLSANDPICTOGRAPHSEXTENDEDA 556
+#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONB 557
+#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONC 558
+#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIOND 559
+#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONE 560
+#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONF 561
+#define PROP_INDEX_INCJKCOMPATIBILITYIDEOGRAPHSSUPPLEMENT 562
+#define PROP_INDEX_INTAGS 563
+#define PROP_INDEX_INVARIATIONSELECTORSSUPPLEMENT 564
+#define PROP_INDEX_INSUPPLEMENTARYPRIVATEUSEAREAA 565
+#define PROP_INDEX_INSUPPLEMENTARYPRIVATEUSEAREAB 566
+#define PROP_INDEX_INNOBLOCK 567
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_property_data_posix.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_property_data_posix.c
index b3b72729e2..205b9c0159 100644
--- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_property_data_posix.c
+++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_property_data_posix.c
@@ -1,5 +1,5 @@
/* ANSI-C code produced by gperf version 3.1 */
-/* Command-line: /usr/bin/gperf -T -C -c -t -j1 -L ANSI-C --ignore-case --pic -Q unicode_prop_name_pool -N unicode_lookup_property_name --output-file gperf2.tmp unicode_property_data_posix.gperf */
+/* Command-line: /usr/local/bin/gperf -T -C -c -t -j1 -L ANSI-C --ignore-case --pic -Q unicode_prop_name_pool -N unicode_lookup_property_name --output-file gperf2.tmp unicode_property_data_posix.gperf */
/* Computed positions: -k'1,3' */
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
@@ -42,7 +42,7 @@ CR_NEWLINE[] = { 1,
/* PROPERTY: 'Alpha': POSIX [[:Alpha:]] */
static const OnigCodePoint
-CR_Alpha[] = { 676,
+CR_Alpha[] = { 679,
0x0041, 0x005a,
0x0061, 0x007a,
0x00aa, 0x00aa,
@@ -226,16 +226,10 @@ CR_Alpha[] = { 676,
0x0e4d, 0x0e4d,
0x0e81, 0x0e82,
0x0e84, 0x0e84,
-0x0e87, 0x0e88,
-0x0e8a, 0x0e8a,
-0x0e8d, 0x0e8d,
-0x0e94, 0x0e97,
-0x0e99, 0x0e9f,
-0x0ea1, 0x0ea3,
+0x0e86, 0x0e8a,
+0x0e8c, 0x0ea3,
0x0ea5, 0x0ea5,
-0x0ea7, 0x0ea7,
-0x0eaa, 0x0eab,
-0x0ead, 0x0eb9,
+0x0ea7, 0x0eb9,
0x0ebb, 0x0ebd,
0x0ec0, 0x0ec4,
0x0ec6, 0x0ec6,
@@ -250,11 +244,8 @@ CR_Alpha[] = { 676,
0x1000, 0x1036,
0x1038, 0x1038,
0x103b, 0x103f,
-0x1050, 0x1062,
-0x1065, 0x1068,
-0x106e, 0x1086,
-0x108e, 0x108e,
-0x109c, 0x109d,
+0x1050, 0x108f,
+0x109a, 0x109d,
0x10a0, 0x10c5,
0x10c7, 0x10c7,
0x10cd, 0x10cd,
@@ -275,7 +266,6 @@ CR_Alpha[] = { 676,
0x12d8, 0x1310,
0x1312, 0x1315,
0x1318, 0x135a,
-0x135f, 0x135f,
0x1380, 0x138f,
0x13a0, 0x13f5,
0x13f8, 0x13fd,
@@ -316,7 +306,7 @@ CR_Alpha[] = { 676,
0x1bac, 0x1baf,
0x1bba, 0x1be5,
0x1be7, 0x1bf1,
-0x1c00, 0x1c35,
+0x1c00, 0x1c36,
0x1c4d, 0x1c4f,
0x1c5a, 0x1c7d,
0x1c80, 0x1c88,
@@ -325,6 +315,7 @@ CR_Alpha[] = { 676,
0x1ce9, 0x1cec,
0x1cee, 0x1cf3,
0x1cf5, 0x1cf6,
+0x1cfa, 0x1cfa,
0x1d00, 0x1dbf,
0x1de7, 0x1df4,
0x1e00, 0x1f15,
@@ -409,31 +400,28 @@ CR_Alpha[] = { 676,
0xa67f, 0xa6ef,
0xa717, 0xa71f,
0xa722, 0xa788,
-0xa78b, 0xa7b9,
-0xa7f7, 0xa801,
-0xa803, 0xa805,
-0xa807, 0xa80a,
-0xa80c, 0xa827,
+0xa78b, 0xa7bf,
+0xa7c2, 0xa7c6,
+0xa7f7, 0xa805,
+0xa807, 0xa827,
0xa840, 0xa873,
0xa880, 0xa8c3,
0xa8c5, 0xa8c5,
0xa8f2, 0xa8f7,
0xa8fb, 0xa8fb,
-0xa8fd, 0xa8fe,
+0xa8fd, 0xa8ff,
0xa90a, 0xa92a,
0xa930, 0xa952,
0xa960, 0xa97c,
0xa980, 0xa9b2,
0xa9b4, 0xa9bf,
0xa9cf, 0xa9cf,
-0xa9e0, 0xa9e4,
-0xa9e6, 0xa9ef,
+0xa9e0, 0xa9ef,
0xa9fa, 0xa9fe,
0xaa00, 0xaa36,
0xaa40, 0xaa4d,
0xaa60, 0xaa76,
-0xaa7a, 0xaa7a,
-0xaa7e, 0xaabe,
+0xaa7a, 0xaabe,
0xaac0, 0xaac0,
0xaac2, 0xaac2,
0xaadb, 0xaadd,
@@ -445,7 +433,7 @@ CR_Alpha[] = { 676,
0xab20, 0xab26,
0xab28, 0xab2e,
0xab30, 0xab5a,
-0xab5c, 0xab65,
+0xab5c, 0xab67,
0xab70, 0xabea,
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
@@ -533,6 +521,7 @@ CR_Alpha[] = { 676,
0x10f00, 0x10f1c,
0x10f27, 0x10f27,
0x10f30, 0x10f45,
+0x10fe0, 0x10ff6,
0x11000, 0x11045,
0x11082, 0x110b8,
0x110d0, 0x110e8,
@@ -570,6 +559,7 @@ CR_Alpha[] = { 676,
0x11400, 0x11441,
0x11443, 0x11445,
0x11447, 0x1144a,
+0x1145f, 0x1145f,
0x11480, 0x114c1,
0x114c4, 0x114c5,
0x114c7, 0x114c7,
@@ -580,15 +570,20 @@ CR_Alpha[] = { 676,
0x11640, 0x11640,
0x11644, 0x11644,
0x11680, 0x116b5,
+0x116b8, 0x116b8,
0x11700, 0x1171a,
0x1171d, 0x1172a,
0x11800, 0x11838,
0x118a0, 0x118df,
0x118ff, 0x118ff,
+0x119a0, 0x119a7,
+0x119aa, 0x119d7,
+0x119da, 0x119df,
+0x119e1, 0x119e1,
+0x119e3, 0x119e4,
0x11a00, 0x11a32,
0x11a35, 0x11a3e,
-0x11a50, 0x11a83,
-0x11a86, 0x11a97,
+0x11a50, 0x11a97,
0x11a9d, 0x11a9d,
0x11ac0, 0x11af8,
0x11c00, 0x11c08,
@@ -621,18 +616,21 @@ CR_Alpha[] = { 676,
0x16800, 0x16a38,
0x16a40, 0x16a5e,
0x16ad0, 0x16aed,
-0x16b00, 0x16b36,
+0x16b00, 0x16b2f,
0x16b40, 0x16b43,
0x16b63, 0x16b77,
0x16b7d, 0x16b8f,
0x16e40, 0x16e7f,
-0x16f00, 0x16f44,
-0x16f50, 0x16f7e,
-0x16f93, 0x16f9f,
+0x16f00, 0x16f4a,
+0x16f4f, 0x16f87,
+0x16f8f, 0x16f9f,
0x16fe0, 0x16fe1,
-0x17000, 0x187f1,
+0x16fe3, 0x16fe3,
+0x17000, 0x187f7,
0x18800, 0x18af2,
0x1b000, 0x1b11e,
+0x1b150, 0x1b152,
+0x1b164, 0x1b167,
0x1b170, 0x1b2fb,
0x1bc00, 0x1bc6a,
0x1bc70, 0x1bc7c,
@@ -674,9 +672,14 @@ CR_Alpha[] = { 676,
0x1e01b, 0x1e021,
0x1e023, 0x1e024,
0x1e026, 0x1e02a,
+0x1e100, 0x1e12c,
+0x1e137, 0x1e13d,
+0x1e14e, 0x1e14e,
+0x1e2c0, 0x1e2eb,
0x1e800, 0x1e8c4,
0x1e900, 0x1e943,
0x1e947, 0x1e947,
+0x1e94b, 0x1e94b,
0x1ee00, 0x1ee03,
0x1ee05, 0x1ee1f,
0x1ee21, 0x1ee22,
@@ -743,7 +746,7 @@ CR_Cntrl[] = { 2,
/* PROPERTY: 'Digit': POSIX [[:Digit:]] */
static const OnigCodePoint
-CR_Digit[] = { 57,
+CR_Digit[] = { 59,
0x0030, 0x0039,
0x0660, 0x0669,
0x06f0, 0x06f9,
@@ -800,12 +803,14 @@ CR_Digit[] = { 57,
0x16a60, 0x16a69,
0x16b50, 0x16b59,
0x1d7ce, 0x1d7ff,
+0x1e140, 0x1e149,
+0x1e2f0, 0x1e2f9,
0x1e950, 0x1e959,
}; /* END of CR_Digit */
/* PROPERTY: 'Graph': POSIX [[:Graph:]] */
static const OnigCodePoint
-CR_Graph[] = { 663,
+CR_Graph[] = { 671,
0x0021, 0x007e,
0x00a1, 0x0377,
0x037a, 0x037f,
@@ -916,7 +921,7 @@ CR_Graph[] = { 663,
0x0c58, 0x0c5a,
0x0c60, 0x0c63,
0x0c66, 0x0c6f,
-0x0c78, 0x0c8c,
+0x0c77, 0x0c8c,
0x0c8e, 0x0c90,
0x0c92, 0x0ca8,
0x0caa, 0x0cb3,
@@ -953,17 +958,10 @@ CR_Graph[] = { 663,
0x0e3f, 0x0e5b,
0x0e81, 0x0e82,
0x0e84, 0x0e84,
-0x0e87, 0x0e88,
-0x0e8a, 0x0e8a,
-0x0e8d, 0x0e8d,
-0x0e94, 0x0e97,
-0x0e99, 0x0e9f,
-0x0ea1, 0x0ea3,
+0x0e86, 0x0e8a,
+0x0e8c, 0x0ea3,
0x0ea5, 0x0ea5,
-0x0ea7, 0x0ea7,
-0x0eaa, 0x0eab,
-0x0ead, 0x0eb9,
-0x0ebb, 0x0ebd,
+0x0ea7, 0x0ebd,
0x0ec0, 0x0ec4,
0x0ec6, 0x0ec6,
0x0ec8, 0x0ecd,
@@ -1040,7 +1038,7 @@ CR_Graph[] = { 663,
0x1c4d, 0x1c88,
0x1c90, 0x1cba,
0x1cbd, 0x1cc7,
-0x1cd0, 0x1cf9,
+0x1cd0, 0x1cfa,
0x1d00, 0x1df9,
0x1dfb, 0x1f15,
0x1f18, 0x1f1d,
@@ -1072,9 +1070,7 @@ CR_Graph[] = { 663,
0x2440, 0x244a,
0x2460, 0x2b73,
0x2b76, 0x2b95,
-0x2b98, 0x2bc8,
-0x2bca, 0x2bfe,
-0x2c00, 0x2c2e,
+0x2b98, 0x2c2e,
0x2c30, 0x2c5e,
0x2c60, 0x2cf3,
0x2cf9, 0x2d25,
@@ -1091,7 +1087,7 @@ CR_Graph[] = { 663,
0x2dc8, 0x2dce,
0x2dd0, 0x2dd6,
0x2dd8, 0x2dde,
-0x2de0, 0x2e4e,
+0x2de0, 0x2e4f,
0x2e80, 0x2e99,
0x2e9b, 0x2ef3,
0x2f00, 0x2fd5,
@@ -1104,14 +1100,14 @@ CR_Graph[] = { 663,
0x3190, 0x31ba,
0x31c0, 0x31e3,
0x31f0, 0x321e,
-0x3220, 0x32fe,
-0x3300, 0x4db5,
+0x3220, 0x4db5,
0x4dc0, 0x9fef,
0xa000, 0xa48c,
0xa490, 0xa4c6,
0xa4d0, 0xa62b,
0xa640, 0xa6f7,
-0xa700, 0xa7b9,
+0xa700, 0xa7bf,
+0xa7c2, 0xa7c6,
0xa7f7, 0xa82b,
0xa830, 0xa839,
0xa840, 0xa877,
@@ -1132,7 +1128,7 @@ CR_Graph[] = { 663,
0xab11, 0xab16,
0xab20, 0xab26,
0xab28, 0xab2e,
-0xab30, 0xab65,
+0xab30, 0xab67,
0xab70, 0xabed,
0xabf0, 0xabf9,
0xac00, 0xd7a3,
@@ -1239,6 +1235,7 @@ CR_Graph[] = { 663,
0x10e60, 0x10e7e,
0x10f00, 0x10f27,
0x10f30, 0x10f59,
+0x10fe0, 0x10ff6,
0x11000, 0x1104d,
0x11052, 0x1106f,
0x1107f, 0x110c1,
@@ -1277,7 +1274,7 @@ CR_Graph[] = { 663,
0x11370, 0x11374,
0x11400, 0x11459,
0x1145b, 0x1145b,
-0x1145d, 0x1145e,
+0x1145d, 0x1145f,
0x11480, 0x114c7,
0x114d0, 0x114d9,
0x11580, 0x115b5,
@@ -1285,7 +1282,7 @@ CR_Graph[] = { 663,
0x11600, 0x11644,
0x11650, 0x11659,
0x11660, 0x1166c,
-0x11680, 0x116b7,
+0x11680, 0x116b8,
0x116c0, 0x116c9,
0x11700, 0x1171a,
0x1171d, 0x1172b,
@@ -1293,9 +1290,11 @@ CR_Graph[] = { 663,
0x11800, 0x1183b,
0x118a0, 0x118f2,
0x118ff, 0x118ff,
+0x119a0, 0x119a7,
+0x119aa, 0x119d7,
+0x119da, 0x119e4,
0x11a00, 0x11a47,
-0x11a50, 0x11a83,
-0x11a86, 0x11aa2,
+0x11a50, 0x11aa2,
0x11ac0, 0x11af8,
0x11c00, 0x11c08,
0x11c0a, 0x11c36,
@@ -1318,11 +1317,13 @@ CR_Graph[] = { 663,
0x11d93, 0x11d98,
0x11da0, 0x11da9,
0x11ee0, 0x11ef8,
-0x12000, 0x12399,
+0x11fc0, 0x11ff1,
+0x11fff, 0x12399,
0x12400, 0x1246e,
0x12470, 0x12474,
0x12480, 0x12543,
0x13000, 0x1342e,
+0x13430, 0x13438,
0x14400, 0x14646,
0x16800, 0x16a38,
0x16a40, 0x16a5e,
@@ -1336,13 +1337,15 @@ CR_Graph[] = { 663,
0x16b63, 0x16b77,
0x16b7d, 0x16b8f,
0x16e40, 0x16e9a,
-0x16f00, 0x16f44,
-0x16f50, 0x16f7e,
+0x16f00, 0x16f4a,
+0x16f4f, 0x16f87,
0x16f8f, 0x16f9f,
-0x16fe0, 0x16fe1,
-0x17000, 0x187f1,
+0x16fe0, 0x16fe3,
+0x17000, 0x187f7,
0x18800, 0x18af2,
0x1b000, 0x1b11e,
+0x1b150, 0x1b152,
+0x1b164, 0x1b167,
0x1b170, 0x1b2fb,
0x1bc00, 0x1bc6a,
0x1bc70, 0x1bc7c,
@@ -1384,12 +1387,19 @@ CR_Graph[] = { 663,
0x1e01b, 0x1e021,
0x1e023, 0x1e024,
0x1e026, 0x1e02a,
+0x1e100, 0x1e12c,
+0x1e130, 0x1e13d,
+0x1e140, 0x1e149,
+0x1e14e, 0x1e14f,
+0x1e2c0, 0x1e2f9,
+0x1e2ff, 0x1e2ff,
0x1e800, 0x1e8c4,
0x1e8c7, 0x1e8d6,
-0x1e900, 0x1e94a,
+0x1e900, 0x1e94b,
0x1e950, 0x1e959,
0x1e95e, 0x1e95f,
0x1ec71, 0x1ecb4,
+0x1ed01, 0x1ed3d,
0x1ee00, 0x1ee03,
0x1ee05, 0x1ee1f,
0x1ee21, 0x1ee22,
@@ -1431,33 +1441,36 @@ CR_Graph[] = { 663,
0x1f0c1, 0x1f0cf,
0x1f0d1, 0x1f0f5,
0x1f100, 0x1f10c,
-0x1f110, 0x1f16b,
+0x1f110, 0x1f16c,
0x1f170, 0x1f1ac,
0x1f1e6, 0x1f202,
0x1f210, 0x1f23b,
0x1f240, 0x1f248,
0x1f250, 0x1f251,
0x1f260, 0x1f265,
-0x1f300, 0x1f6d4,
+0x1f300, 0x1f6d5,
0x1f6e0, 0x1f6ec,
-0x1f6f0, 0x1f6f9,
+0x1f6f0, 0x1f6fa,
0x1f700, 0x1f773,
0x1f780, 0x1f7d8,
+0x1f7e0, 0x1f7eb,
0x1f800, 0x1f80b,
0x1f810, 0x1f847,
0x1f850, 0x1f859,
0x1f860, 0x1f887,
0x1f890, 0x1f8ad,
0x1f900, 0x1f90b,
-0x1f910, 0x1f93e,
-0x1f940, 0x1f970,
+0x1f90d, 0x1f971,
0x1f973, 0x1f976,
-0x1f97a, 0x1f97a,
-0x1f97c, 0x1f9a2,
-0x1f9b0, 0x1f9b9,
-0x1f9c0, 0x1f9c2,
-0x1f9d0, 0x1f9ff,
+0x1f97a, 0x1f9a2,
+0x1f9a5, 0x1f9aa,
+0x1f9ae, 0x1f9ca,
+0x1f9cd, 0x1fa53,
0x1fa60, 0x1fa6d,
+0x1fa70, 0x1fa73,
+0x1fa78, 0x1fa7a,
+0x1fa80, 0x1fa82,
+0x1fa90, 0x1fa95,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
@@ -1473,7 +1486,7 @@ CR_Graph[] = { 663,
/* PROPERTY: 'Lower': POSIX [[:Lower:]] */
static const OnigCodePoint
-CR_Lower[] = { 645,
+CR_Lower[] = { 649,
0x0061, 0x007a,
0x00aa, 0x00aa,
0x00b5, 0x00b5,
@@ -2078,9 +2091,13 @@ CR_Lower[] = { 645,
0xa7b5, 0xa7b5,
0xa7b7, 0xa7b7,
0xa7b9, 0xa7b9,
+0xa7bb, 0xa7bb,
+0xa7bd, 0xa7bd,
+0xa7bf, 0xa7bf,
+0xa7c3, 0xa7c3,
0xa7f8, 0xa7fa,
0xab30, 0xab5a,
-0xab5c, 0xab65,
+0xab5c, 0xab67,
0xab70, 0xabbf,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -2123,7 +2140,7 @@ CR_Lower[] = { 645,
/* PROPERTY: 'Print': POSIX [[:Print:]] */
static const OnigCodePoint
-CR_Print[] = { 660,
+CR_Print[] = { 668,
0x0020, 0x007e,
0x00a0, 0x0377,
0x037a, 0x037f,
@@ -2234,7 +2251,7 @@ CR_Print[] = { 660,
0x0c58, 0x0c5a,
0x0c60, 0x0c63,
0x0c66, 0x0c6f,
-0x0c78, 0x0c8c,
+0x0c77, 0x0c8c,
0x0c8e, 0x0c90,
0x0c92, 0x0ca8,
0x0caa, 0x0cb3,
@@ -2271,17 +2288,10 @@ CR_Print[] = { 660,
0x0e3f, 0x0e5b,
0x0e81, 0x0e82,
0x0e84, 0x0e84,
-0x0e87, 0x0e88,
-0x0e8a, 0x0e8a,
-0x0e8d, 0x0e8d,
-0x0e94, 0x0e97,
-0x0e99, 0x0e9f,
-0x0ea1, 0x0ea3,
+0x0e86, 0x0e8a,
+0x0e8c, 0x0ea3,
0x0ea5, 0x0ea5,
-0x0ea7, 0x0ea7,
-0x0eaa, 0x0eab,
-0x0ead, 0x0eb9,
-0x0ebb, 0x0ebd,
+0x0ea7, 0x0ebd,
0x0ec0, 0x0ec4,
0x0ec6, 0x0ec6,
0x0ec8, 0x0ecd,
@@ -2357,7 +2367,7 @@ CR_Print[] = { 660,
0x1c4d, 0x1c88,
0x1c90, 0x1cba,
0x1cbd, 0x1cc7,
-0x1cd0, 0x1cf9,
+0x1cd0, 0x1cfa,
0x1d00, 0x1df9,
0x1dfb, 0x1f15,
0x1f18, 0x1f1d,
@@ -2387,9 +2397,7 @@ CR_Print[] = { 660,
0x2440, 0x244a,
0x2460, 0x2b73,
0x2b76, 0x2b95,
-0x2b98, 0x2bc8,
-0x2bca, 0x2bfe,
-0x2c00, 0x2c2e,
+0x2b98, 0x2c2e,
0x2c30, 0x2c5e,
0x2c60, 0x2cf3,
0x2cf9, 0x2d25,
@@ -2406,7 +2414,7 @@ CR_Print[] = { 660,
0x2dc8, 0x2dce,
0x2dd0, 0x2dd6,
0x2dd8, 0x2dde,
-0x2de0, 0x2e4e,
+0x2de0, 0x2e4f,
0x2e80, 0x2e99,
0x2e9b, 0x2ef3,
0x2f00, 0x2fd5,
@@ -2419,14 +2427,14 @@ CR_Print[] = { 660,
0x3190, 0x31ba,
0x31c0, 0x31e3,
0x31f0, 0x321e,
-0x3220, 0x32fe,
-0x3300, 0x4db5,
+0x3220, 0x4db5,
0x4dc0, 0x9fef,
0xa000, 0xa48c,
0xa490, 0xa4c6,
0xa4d0, 0xa62b,
0xa640, 0xa6f7,
-0xa700, 0xa7b9,
+0xa700, 0xa7bf,
+0xa7c2, 0xa7c6,
0xa7f7, 0xa82b,
0xa830, 0xa839,
0xa840, 0xa877,
@@ -2447,7 +2455,7 @@ CR_Print[] = { 660,
0xab11, 0xab16,
0xab20, 0xab26,
0xab28, 0xab2e,
-0xab30, 0xab65,
+0xab30, 0xab67,
0xab70, 0xabed,
0xabf0, 0xabf9,
0xac00, 0xd7a3,
@@ -2554,6 +2562,7 @@ CR_Print[] = { 660,
0x10e60, 0x10e7e,
0x10f00, 0x10f27,
0x10f30, 0x10f59,
+0x10fe0, 0x10ff6,
0x11000, 0x1104d,
0x11052, 0x1106f,
0x1107f, 0x110c1,
@@ -2592,7 +2601,7 @@ CR_Print[] = { 660,
0x11370, 0x11374,
0x11400, 0x11459,
0x1145b, 0x1145b,
-0x1145d, 0x1145e,
+0x1145d, 0x1145f,
0x11480, 0x114c7,
0x114d0, 0x114d9,
0x11580, 0x115b5,
@@ -2600,7 +2609,7 @@ CR_Print[] = { 660,
0x11600, 0x11644,
0x11650, 0x11659,
0x11660, 0x1166c,
-0x11680, 0x116b7,
+0x11680, 0x116b8,
0x116c0, 0x116c9,
0x11700, 0x1171a,
0x1171d, 0x1172b,
@@ -2608,9 +2617,11 @@ CR_Print[] = { 660,
0x11800, 0x1183b,
0x118a0, 0x118f2,
0x118ff, 0x118ff,
+0x119a0, 0x119a7,
+0x119aa, 0x119d7,
+0x119da, 0x119e4,
0x11a00, 0x11a47,
-0x11a50, 0x11a83,
-0x11a86, 0x11aa2,
+0x11a50, 0x11aa2,
0x11ac0, 0x11af8,
0x11c00, 0x11c08,
0x11c0a, 0x11c36,
@@ -2633,11 +2644,13 @@ CR_Print[] = { 660,
0x11d93, 0x11d98,
0x11da0, 0x11da9,
0x11ee0, 0x11ef8,
-0x12000, 0x12399,
+0x11fc0, 0x11ff1,
+0x11fff, 0x12399,
0x12400, 0x1246e,
0x12470, 0x12474,
0x12480, 0x12543,
0x13000, 0x1342e,
+0x13430, 0x13438,
0x14400, 0x14646,
0x16800, 0x16a38,
0x16a40, 0x16a5e,
@@ -2651,13 +2664,15 @@ CR_Print[] = { 660,
0x16b63, 0x16b77,
0x16b7d, 0x16b8f,
0x16e40, 0x16e9a,
-0x16f00, 0x16f44,
-0x16f50, 0x16f7e,
+0x16f00, 0x16f4a,
+0x16f4f, 0x16f87,
0x16f8f, 0x16f9f,
-0x16fe0, 0x16fe1,
-0x17000, 0x187f1,
+0x16fe0, 0x16fe3,
+0x17000, 0x187f7,
0x18800, 0x18af2,
0x1b000, 0x1b11e,
+0x1b150, 0x1b152,
+0x1b164, 0x1b167,
0x1b170, 0x1b2fb,
0x1bc00, 0x1bc6a,
0x1bc70, 0x1bc7c,
@@ -2699,12 +2714,19 @@ CR_Print[] = { 660,
0x1e01b, 0x1e021,
0x1e023, 0x1e024,
0x1e026, 0x1e02a,
+0x1e100, 0x1e12c,
+0x1e130, 0x1e13d,
+0x1e140, 0x1e149,
+0x1e14e, 0x1e14f,
+0x1e2c0, 0x1e2f9,
+0x1e2ff, 0x1e2ff,
0x1e800, 0x1e8c4,
0x1e8c7, 0x1e8d6,
-0x1e900, 0x1e94a,
+0x1e900, 0x1e94b,
0x1e950, 0x1e959,
0x1e95e, 0x1e95f,
0x1ec71, 0x1ecb4,
+0x1ed01, 0x1ed3d,
0x1ee00, 0x1ee03,
0x1ee05, 0x1ee1f,
0x1ee21, 0x1ee22,
@@ -2746,33 +2768,36 @@ CR_Print[] = { 660,
0x1f0c1, 0x1f0cf,
0x1f0d1, 0x1f0f5,
0x1f100, 0x1f10c,
-0x1f110, 0x1f16b,
+0x1f110, 0x1f16c,
0x1f170, 0x1f1ac,
0x1f1e6, 0x1f202,
0x1f210, 0x1f23b,
0x1f240, 0x1f248,
0x1f250, 0x1f251,
0x1f260, 0x1f265,
-0x1f300, 0x1f6d4,
+0x1f300, 0x1f6d5,
0x1f6e0, 0x1f6ec,
-0x1f6f0, 0x1f6f9,
+0x1f6f0, 0x1f6fa,
0x1f700, 0x1f773,
0x1f780, 0x1f7d8,
+0x1f7e0, 0x1f7eb,
0x1f800, 0x1f80b,
0x1f810, 0x1f847,
0x1f850, 0x1f859,
0x1f860, 0x1f887,
0x1f890, 0x1f8ad,
0x1f900, 0x1f90b,
-0x1f910, 0x1f93e,
-0x1f940, 0x1f970,
+0x1f90d, 0x1f971,
0x1f973, 0x1f976,
-0x1f97a, 0x1f97a,
-0x1f97c, 0x1f9a2,
-0x1f9b0, 0x1f9b9,
-0x1f9c0, 0x1f9c2,
-0x1f9d0, 0x1f9ff,
+0x1f97a, 0x1f9a2,
+0x1f9a5, 0x1f9aa,
+0x1f9ae, 0x1f9ca,
+0x1f9cd, 0x1fa53,
0x1fa60, 0x1fa6d,
+0x1fa70, 0x1fa73,
+0x1fa78, 0x1fa7a,
+0x1fa80, 0x1fa82,
+0x1fa90, 0x1fa95,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
@@ -2788,7 +2813,7 @@ CR_Print[] = { 660,
/* PROPERTY: 'Punct': POSIX [[:Punct:]] */
static const OnigCodePoint
-CR_Punct[] = { 178,
+CR_Punct[] = { 182,
0x0021, 0x0023,
0x0025, 0x002a,
0x002c, 0x002f,
@@ -2828,6 +2853,7 @@ CR_Punct[] = { 178,
0x09fd, 0x09fd,
0x0a76, 0x0a76,
0x0af0, 0x0af0,
+0x0c77, 0x0c77,
0x0c84, 0x0c84,
0x0df4, 0x0df4,
0x0e4f, 0x0e4f,
@@ -2842,7 +2868,7 @@ CR_Punct[] = { 178,
0x10fb, 0x10fb,
0x1360, 0x1368,
0x1400, 0x1400,
-0x166d, 0x166e,
+0x166e, 0x166e,
0x169b, 0x169c,
0x16eb, 0x16ed,
0x1735, 0x1736,
@@ -2877,7 +2903,7 @@ CR_Punct[] = { 178,
0x2cfe, 0x2cff,
0x2d70, 0x2d70,
0x2e00, 0x2e2e,
-0x2e30, 0x2e4e,
+0x2e30, 0x2e4f,
0x3001, 0x3003,
0x3008, 0x3011,
0x3014, 0x301f,
@@ -2952,18 +2978,21 @@ CR_Punct[] = { 178,
0x11660, 0x1166c,
0x1173c, 0x1173e,
0x1183b, 0x1183b,
+0x119e2, 0x119e2,
0x11a3f, 0x11a46,
0x11a9a, 0x11a9c,
0x11a9e, 0x11aa2,
0x11c41, 0x11c45,
0x11c70, 0x11c71,
0x11ef7, 0x11ef8,
+0x11fff, 0x11fff,
0x12470, 0x12474,
0x16a6e, 0x16a6f,
0x16af5, 0x16af5,
0x16b37, 0x16b3b,
0x16b44, 0x16b44,
0x16e97, 0x16e9a,
+0x16fe2, 0x16fe2,
0x1bc9f, 0x1bc9f,
0x1da87, 0x1da8b,
0x1e95e, 0x1e95f,
@@ -2986,7 +3015,7 @@ CR_Space[] = { 10,
/* PROPERTY: 'Upper': POSIX [[:Upper:]] */
static const OnigCodePoint
-CR_Upper[] = { 636,
+CR_Upper[] = { 641,
0x0041, 0x005a,
0x00c0, 0x00d6,
0x00d8, 0x00de,
@@ -3582,6 +3611,11 @@ CR_Upper[] = { 636,
0xa7b0, 0xa7b4,
0xa7b6, 0xa7b6,
0xa7b8, 0xa7b8,
+0xa7ba, 0xa7ba,
+0xa7bc, 0xa7bc,
+0xa7be, 0xa7be,
+0xa7c2, 0xa7c2,
+0xa7c4, 0xa7c6,
0xff21, 0xff3a,
0x10400, 0x10427,
0x104b0, 0x104d3,
@@ -3635,7 +3669,7 @@ CR_XDigit[] = { 3,
/* PROPERTY: 'Word': POSIX [[:Word:]] */
static const OnigCodePoint
-CR_Word[] = { 710,
+CR_Word[] = { 716,
0x0030, 0x0039,
0x0041, 0x005a,
0x005f, 0x005f,
@@ -3820,17 +3854,10 @@ CR_Word[] = { 710,
0x0e50, 0x0e59,
0x0e81, 0x0e82,
0x0e84, 0x0e84,
-0x0e87, 0x0e88,
-0x0e8a, 0x0e8a,
-0x0e8d, 0x0e8d,
-0x0e94, 0x0e97,
-0x0e99, 0x0e9f,
-0x0ea1, 0x0ea3,
+0x0e86, 0x0e8a,
+0x0e8c, 0x0ea3,
0x0ea5, 0x0ea5,
-0x0ea7, 0x0ea7,
-0x0eaa, 0x0eab,
-0x0ead, 0x0eb9,
-0x0ebb, 0x0ebd,
+0x0ea7, 0x0ebd,
0x0ec0, 0x0ec4,
0x0ec6, 0x0ec6,
0x0ec8, 0x0ecd,
@@ -3921,7 +3948,7 @@ CR_Word[] = { 710,
0x1c90, 0x1cba,
0x1cbd, 0x1cbf,
0x1cd0, 0x1cd2,
-0x1cd4, 0x1cf9,
+0x1cd4, 0x1cfa,
0x1d00, 0x1df9,
0x1dfb, 0x1f15,
0x1f18, 0x1f1d,
@@ -4007,7 +4034,8 @@ CR_Word[] = { 710,
0xa67f, 0xa6f1,
0xa717, 0xa71f,
0xa722, 0xa788,
-0xa78b, 0xa7b9,
+0xa78b, 0xa7bf,
+0xa7c2, 0xa7c6,
0xa7f7, 0xa827,
0xa840, 0xa873,
0xa880, 0xa8c5,
@@ -4034,7 +4062,7 @@ CR_Word[] = { 710,
0xab20, 0xab26,
0xab28, 0xab2e,
0xab30, 0xab5a,
-0xab5c, 0xab65,
+0xab5c, 0xab67,
0xab70, 0xabea,
0xabec, 0xabed,
0xabf0, 0xabf9,
@@ -4136,6 +4164,7 @@ CR_Word[] = { 710,
0x10f00, 0x10f1c,
0x10f27, 0x10f27,
0x10f30, 0x10f50,
+0x10fe0, 0x10ff6,
0x11000, 0x11046,
0x11066, 0x1106f,
0x1107f, 0x110ba,
@@ -4177,7 +4206,7 @@ CR_Word[] = { 710,
0x11370, 0x11374,
0x11400, 0x1144a,
0x11450, 0x11459,
-0x1145e, 0x1145e,
+0x1145e, 0x1145f,
0x11480, 0x114c5,
0x114c7, 0x114c7,
0x114d0, 0x114d9,
@@ -4187,7 +4216,7 @@ CR_Word[] = { 710,
0x11600, 0x11640,
0x11644, 0x11644,
0x11650, 0x11659,
-0x11680, 0x116b7,
+0x11680, 0x116b8,
0x116c0, 0x116c9,
0x11700, 0x1171a,
0x1171d, 0x1172b,
@@ -4195,10 +4224,13 @@ CR_Word[] = { 710,
0x11800, 0x1183a,
0x118a0, 0x118e9,
0x118ff, 0x118ff,
+0x119a0, 0x119a7,
+0x119aa, 0x119d7,
+0x119da, 0x119e1,
+0x119e3, 0x119e4,
0x11a00, 0x11a3e,
0x11a47, 0x11a47,
-0x11a50, 0x11a83,
-0x11a86, 0x11a99,
+0x11a50, 0x11a99,
0x11a9d, 0x11a9d,
0x11ac0, 0x11af8,
0x11c00, 0x11c08,
@@ -4238,13 +4270,16 @@ CR_Word[] = { 710,
0x16b63, 0x16b77,
0x16b7d, 0x16b8f,
0x16e40, 0x16e7f,
-0x16f00, 0x16f44,
-0x16f50, 0x16f7e,
+0x16f00, 0x16f4a,
+0x16f4f, 0x16f87,
0x16f8f, 0x16f9f,
0x16fe0, 0x16fe1,
-0x17000, 0x187f1,
+0x16fe3, 0x16fe3,
+0x17000, 0x187f7,
0x18800, 0x18af2,
0x1b000, 0x1b11e,
+0x1b150, 0x1b152,
+0x1b164, 0x1b167,
0x1b170, 0x1b2fb,
0x1bc00, 0x1bc6a,
0x1bc70, 0x1bc7c,
@@ -4299,9 +4334,14 @@ CR_Word[] = { 710,
0x1e01b, 0x1e021,
0x1e023, 0x1e024,
0x1e026, 0x1e02a,
+0x1e100, 0x1e12c,
+0x1e130, 0x1e13d,
+0x1e140, 0x1e149,
+0x1e14e, 0x1e14e,
+0x1e2c0, 0x1e2f9,
0x1e800, 0x1e8c4,
0x1e8d0, 0x1e8d6,
-0x1e900, 0x1e94a,
+0x1e900, 0x1e94b,
0x1e950, 0x1e959,
0x1ee00, 0x1ee03,
0x1ee05, 0x1ee1f,
@@ -4350,7 +4390,7 @@ CR_Word[] = { 710,
/* PROPERTY: 'Alnum': POSIX [[:Alnum:]] */
static const OnigCodePoint
-CR_Alnum[] = { 713,
+CR_Alnum[] = { 715,
0x0030, 0x0039,
0x0041, 0x005a,
0x0061, 0x007a,
@@ -4543,16 +4583,10 @@ CR_Alnum[] = { 713,
0x0e50, 0x0e59,
0x0e81, 0x0e82,
0x0e84, 0x0e84,
-0x0e87, 0x0e88,
-0x0e8a, 0x0e8a,
-0x0e8d, 0x0e8d,
-0x0e94, 0x0e97,
-0x0e99, 0x0e9f,
-0x0ea1, 0x0ea3,
+0x0e86, 0x0e8a,
+0x0e8c, 0x0ea3,
0x0ea5, 0x0ea5,
-0x0ea7, 0x0ea7,
-0x0eaa, 0x0eab,
-0x0ead, 0x0eb9,
+0x0ea7, 0x0eb9,
0x0ebb, 0x0ebd,
0x0ec0, 0x0ec4,
0x0ec6, 0x0ec6,
@@ -4569,12 +4603,7 @@ CR_Alnum[] = { 713,
0x1000, 0x1036,
0x1038, 0x1038,
0x103b, 0x1049,
-0x1050, 0x1062,
-0x1065, 0x1068,
-0x106e, 0x1086,
-0x108e, 0x108e,
-0x1090, 0x1099,
-0x109c, 0x109d,
+0x1050, 0x109d,
0x10a0, 0x10c5,
0x10c7, 0x10c7,
0x10cd, 0x10cd,
@@ -4595,7 +4624,6 @@ CR_Alnum[] = { 713,
0x12d8, 0x1310,
0x1312, 0x1315,
0x1318, 0x135a,
-0x135f, 0x135f,
0x1380, 0x138f,
0x13a0, 0x13f5,
0x13f8, 0x13fd,
@@ -4641,7 +4669,7 @@ CR_Alnum[] = { 713,
0x1b80, 0x1ba9,
0x1bac, 0x1be5,
0x1be7, 0x1bf1,
-0x1c00, 0x1c35,
+0x1c00, 0x1c36,
0x1c40, 0x1c49,
0x1c4d, 0x1c7d,
0x1c80, 0x1c88,
@@ -4650,6 +4678,7 @@ CR_Alnum[] = { 713,
0x1ce9, 0x1cec,
0x1cee, 0x1cf3,
0x1cf5, 0x1cf6,
+0x1cfa, 0x1cfa,
0x1d00, 0x1dbf,
0x1de7, 0x1df4,
0x1e00, 0x1f15,
@@ -4733,32 +4762,28 @@ CR_Alnum[] = { 713,
0xa67f, 0xa6ef,
0xa717, 0xa71f,
0xa722, 0xa788,
-0xa78b, 0xa7b9,
-0xa7f7, 0xa801,
-0xa803, 0xa805,
-0xa807, 0xa80a,
-0xa80c, 0xa827,
+0xa78b, 0xa7bf,
+0xa7c2, 0xa7c6,
+0xa7f7, 0xa805,
+0xa807, 0xa827,
0xa840, 0xa873,
0xa880, 0xa8c3,
0xa8c5, 0xa8c5,
0xa8d0, 0xa8d9,
0xa8f2, 0xa8f7,
0xa8fb, 0xa8fb,
-0xa8fd, 0xa8fe,
-0xa900, 0xa92a,
+0xa8fd, 0xa92a,
0xa930, 0xa952,
0xa960, 0xa97c,
0xa980, 0xa9b2,
0xa9b4, 0xa9bf,
0xa9cf, 0xa9d9,
-0xa9e0, 0xa9e4,
-0xa9e6, 0xa9fe,
+0xa9e0, 0xa9fe,
0xaa00, 0xaa36,
0xaa40, 0xaa4d,
0xaa50, 0xaa59,
0xaa60, 0xaa76,
-0xaa7a, 0xaa7a,
-0xaa7e, 0xaabe,
+0xaa7a, 0xaabe,
0xaac0, 0xaac0,
0xaac2, 0xaac2,
0xaadb, 0xaadd,
@@ -4770,7 +4795,7 @@ CR_Alnum[] = { 713,
0xab20, 0xab26,
0xab28, 0xab2e,
0xab30, 0xab5a,
-0xab5c, 0xab65,
+0xab5c, 0xab67,
0xab70, 0xabea,
0xabf0, 0xabf9,
0xac00, 0xd7a3,
@@ -4862,6 +4887,7 @@ CR_Alnum[] = { 713,
0x10f00, 0x10f1c,
0x10f27, 0x10f27,
0x10f30, 0x10f45,
+0x10fe0, 0x10ff6,
0x11000, 0x11045,
0x11066, 0x1106f,
0x11082, 0x110b8,
@@ -4904,6 +4930,7 @@ CR_Alnum[] = { 713,
0x11443, 0x11445,
0x11447, 0x1144a,
0x11450, 0x11459,
+0x1145f, 0x1145f,
0x11480, 0x114c1,
0x114c4, 0x114c5,
0x114c7, 0x114c7,
@@ -4916,6 +4943,7 @@ CR_Alnum[] = { 713,
0x11644, 0x11644,
0x11650, 0x11659,
0x11680, 0x116b5,
+0x116b8, 0x116b8,
0x116c0, 0x116c9,
0x11700, 0x1171a,
0x1171d, 0x1172a,
@@ -4923,10 +4951,14 @@ CR_Alnum[] = { 713,
0x11800, 0x11838,
0x118a0, 0x118e9,
0x118ff, 0x118ff,
+0x119a0, 0x119a7,
+0x119aa, 0x119d7,
+0x119da, 0x119df,
+0x119e1, 0x119e1,
+0x119e3, 0x119e4,
0x11a00, 0x11a32,
0x11a35, 0x11a3e,
-0x11a50, 0x11a83,
-0x11a86, 0x11a97,
+0x11a50, 0x11a97,
0x11a9d, 0x11a9d,
0x11ac0, 0x11af8,
0x11c00, 0x11c08,
@@ -4963,19 +4995,22 @@ CR_Alnum[] = { 713,
0x16a40, 0x16a5e,
0x16a60, 0x16a69,
0x16ad0, 0x16aed,
-0x16b00, 0x16b36,
+0x16b00, 0x16b2f,
0x16b40, 0x16b43,
0x16b50, 0x16b59,
0x16b63, 0x16b77,
0x16b7d, 0x16b8f,
0x16e40, 0x16e7f,
-0x16f00, 0x16f44,
-0x16f50, 0x16f7e,
-0x16f93, 0x16f9f,
+0x16f00, 0x16f4a,
+0x16f4f, 0x16f87,
+0x16f8f, 0x16f9f,
0x16fe0, 0x16fe1,
-0x17000, 0x187f1,
+0x16fe3, 0x16fe3,
+0x17000, 0x187f7,
0x18800, 0x18af2,
0x1b000, 0x1b11e,
+0x1b150, 0x1b152,
+0x1b164, 0x1b167,
0x1b170, 0x1b2fb,
0x1bc00, 0x1bc6a,
0x1bc70, 0x1bc7c,
@@ -5018,9 +5053,16 @@ CR_Alnum[] = { 713,
0x1e01b, 0x1e021,
0x1e023, 0x1e024,
0x1e026, 0x1e02a,
+0x1e100, 0x1e12c,
+0x1e137, 0x1e13d,
+0x1e140, 0x1e149,
+0x1e14e, 0x1e14e,
+0x1e2c0, 0x1e2eb,
+0x1e2f0, 0x1e2f9,
0x1e800, 0x1e8c4,
0x1e900, 0x1e943,
0x1e947, 0x1e947,
+0x1e94b, 0x1e94b,
0x1e950, 0x1e959,
0x1ee00, 0x1ee03,
0x1ee05, 0x1ee1f,
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_unfold_key.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_unfold_key.c
index 37a147e9db..10f7889ea3 100644
--- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_unfold_key.c
+++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_unfold_key.c
@@ -1,7 +1,7 @@
/* This file was converted by gperf_unfold_key_conv.py
from gperf output file. */
/* ANSI-C code produced by gperf version 3.1 */
-/* Command-line: /usr/bin/gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1,0 -N onigenc_unicode_unfold_key unicode_unfold_key.gperf */
+/* Command-line: /usr/local/bin/gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1,0 -N onigenc_unicode_unfold_key unicode_unfold_key.gperf */
/* Computed positions: -k'1-3' */
@@ -36,12 +36,12 @@
//#include <string.h>
#include "regenc.h"
-#define TOTAL_KEYWORDS 1480
+#define TOTAL_KEYWORDS 1487
#define MIN_WORD_LENGTH 3
#define MAX_WORD_LENGTH 3
#define MIN_HASH_VALUE 10
-#define MAX_HASH_VALUE 1993
-/* maximum key range = 1984, duplicates = 0 */
+#define MAX_HASH_VALUE 1958
+/* maximum key range = 1949, duplicates = 0 */
#ifdef __GNUC__
__inline
@@ -56,36 +56,36 @@ hash(OnigCodePoint codes[])
{
static const unsigned short asso_values[] =
{
- 9, 5, 2, 214, 176, 1, 110, 1994, 1994, 1994,
- 1994, 1994, 1994, 13, 1994, 1994, 1994, 77, 1994, 1994,
- 71, 1994, 1994, 1994, 1994, 86, 1994, 1994, 1994, 7,
- 1994, 0, 3, 1994, 50, 560, 1509, 132, 1501, 552,
- 1492, 546, 1586, 538, 1491, 4, 1480, 518, 1475, 510,
- 1467, 879, 1578, 855, 1459, 527, 1426, 234, 1067, 497,
- 1458, 486, 1450, 352, 1436, 831, 1577, 783, 285, 639,
- 1576, 629, 1567, 575, 1566, 609, 1556, 567, 1425, 598,
- 1151, 587, 1064, 461, 668, 1035, 427, 1414, 160, 1411,
- 21, 1404, 1253, 1289, 1416, 1537, 482, 1402, 669, 1391,
- 1302, 1305, 1277, 1095, 1220, 1076, 261, 869, 1387, 475,
- 1340, 151, 327, 845, 859, 824, 731, 816, 539, 715,
- 212, 707, 83, 1297, 1046, 1278, 529, 1380, 520, 1352,
- 184, 1086, 235, 1073, 275, 1052, 193, 1258, 8, 1060,
- 655, 1030, 513, 1022, 393, 254, 344, 1265, 203, 1246,
- 193, 1548, 15, 1376, 120, 1545, 1591, 525, 1590, 232,
- 1583, 1365, 1465, 464, 1011, 451, 1353, 18, 6, 383,
- 1236, 802, 8, 438, 940, 163, 1533, 427, 858, 244,
- 1225, 360, 1212, 333, 575, 219, 1002, 206, 1209, 320,
- 735, 140, 1199, 410, 1188, 73, 973, 103, 965, 63,
- 944, 53, 791, 196, 788, 116, 695, 93, 921, 83,
- 930, 182, 762, 31, 685, 311, 913, 268, 671, 44,
- 906, 302, 1186, 293, 1180, 280, 1154, 885, 1354, 660,
- 760, 650, 1174, 1169, 402, 897, 641, 726, 1162, 1153,
- 622, 1316, 994, 1143, 664, 1134, 447, 173, 375, 1124,
- 0, 1111, 371, 956, 156, 1270, 147, 1117, 113, 504,
- 1994, 1105, 112, 1347, 1994, 1339, 75, 1335, 65, 1331,
- 591, 1096, 45, 1393, 1994, 1198, 239, 1324, 26, 984,
- 18, 1528, 40, 1517, 124, 421, 27, 904, 91, 137,
- 16
+ 9, 5, 2, 111, 176, 1, 110, 1959, 1959, 1959,
+ 1959, 1959, 1959, 13, 1959, 1959, 1959, 77, 1959, 1959,
+ 63, 1959, 1959, 1959, 1959, 86, 1959, 1959, 1959, 7,
+ 1959, 0, 3, 1959, 191, 624, 1536, 132, 1519, 613,
+ 1513, 607, 1602, 586, 1505, 4, 1497, 570, 1492, 554,
+ 1482, 907, 1601, 898, 1469, 595, 1468, 405, 1463, 546,
+ 1458, 538, 1453, 474, 1444, 890, 1596, 877, 1419, 725,
+ 1590, 698, 1588, 635, 1160, 682, 1021, 338, 1122, 671,
+ 812, 559, 819, 1580, 756, 1082, 744, 1438, 637, 1428,
+ 266, 1429, 1502, 1285, 1440, 1578, 467, 1419, 873, 490,
+ 1380, 779, 731, 1057, 1261, 1034, 1567, 762, 1389, 495,
+ 1510, 156, 648, 805, 1537, 862, 1523, 853, 1469, 845,
+ 1252, 796, 342, 1297, 801, 1287, 542, 1408, 477, 1400,
+ 237, 1109, 20, 1099, 548, 1067, 1, 1280, 326, 1043,
+ 767, 1030, 756, 938, 598, 254, 26, 1275, 165, 1270,
+ 149, 1575, 15, 1368, 133, 1202, 625, 403, 408, 373,
+ 296, 1397, 283, 519, 1381, 503, 1372, 18, 6, 415,
+ 1253, 769, 8, 484, 1358, 658, 1565, 464, 427, 244,
+ 1241, 360, 1233, 390, 1350, 219, 377, 206, 1223, 328,
+ 1211, 145, 1198, 454, 135, 73, 1020, 103, 1012, 63,
+ 995, 53, 748, 196, 573, 116, 684, 93, 983, 83,
+ 1004, 182, 735, 31, 713, 319, 977, 306, 706, 44,
+ 836, 293, 1187, 280, 1135, 268, 671, 976, 1350, 447,
+ 1182, 437, 964, 946, 351, 932, 1349, 923, 1090, 1194,
+ 1175, 827, 1299, 1165, 1410, 1155, 1522, 1557, 313, 1146,
+ 424, 1136, 233, 1130, 161, 1316, 93, 167, 134, 618,
+ 1959, 1118, 128, 1342, 1959, 1335, 124, 1331, 75, 1327,
+ 191, 1308, 45, 1545, 1959, 1534, 1, 230, 9, 643,
+ 5, 1564, 40, 1553, 65, 531, 55, 993, 25, 1476,
+ 2
};
return asso_values[(unsigned char)onig_codes_byte_at(codes, 2)+35] + asso_values[(unsigned char)onig_codes_byte_at(codes, 1)+1] + asso_values[(unsigned char)onig_codes_byte_at(codes, 0)];
}
@@ -98,21 +98,20 @@ onigenc_unicode_unfold_key(OnigCodePoint code)
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x1040a, 3420, 1},
-
- {0x01d7, 444, 1},
+ {0x1040a, 3441, 1},
+ {0xffffffff, -1, 0},
- {0x1fd7, 31, 3},
+ {0x01f1, 483, 1},
- {0x1e0a, 1876, 1},
+ {0x1e0a, 1882, 1},
- {0x040a, 1026, 1},
+ {0x040a, 1029, 1},
{0x010a, 186, 1},
- {0x1f0a, 2237, 1},
+ {0x1f0a, 2243, 1},
- {0x2c0a, 2600, 1},
+ {0x2c0a, 2606, 1},
{0x1f85, 154, 2},
@@ -120,3133 +119,3154 @@ onigenc_unicode_unfold_key(OnigCodePoint code)
{0x1f89, 134, 2},
- {0x2c67, 2720, 1},
+ {0x1ff3, 96, 2},
- {0x1c85, 951, 1},
+ {0x1c85, 954, 1},
- {0xab85, 1660, 1},
+ {0xab85, 1663, 1},
- {0x10c85, 3633, 1},
+ {0x10c85, 3654, 1},
- {0xab89, 1672, 1},
+ {0xab89, 1675, 1},
- {0x10c89, 3645, 1},
+ {0x10c89, 3666, 1},
- {0x1e84, 2060, 1},
+ {0x1e84, 2066, 1},
- {0x2c75, 2732, 1},
+ {0x2c75, 2738, 1},
{0x0184, 360, 1},
{0x1f84, 149, 2},
- {0x2c84, 2741, 1},
+ {0x2c84, 2747, 1},
- {0xab75, 1612, 1},
+ {0xab75, 1615, 1},
- {0xa784, 3255, 1},
+ {0xa784, 3261, 1},
- {0x1c84, 951, 1},
+ {0x1c84, 954, 1},
- {0xab84, 1657, 1},
+ {0xab84, 1660, 1},
- {0x10c84, 3630, 1},
+ {0x10c84, 3651, 1},
- {0x104b2, 3516, 1},
+ {0x104b2, 3537, 1},
- {0x1ff3, 96, 2},
+ {0x1f6f, 2378, 1},
- {0x1ffb, 2414, 1},
+ {0x2c6f, 604, 1},
- {0x1eb2, 2114, 1},
+ {0x1eb2, 2120, 1},
- {0x04b2, 1156, 1},
+ {0x04b2, 1159, 1},
- {0x01b2, 697, 1},
+ {0x01b2, 700, 1},
{0x1fb2, 249, 2},
- {0x2cb2, 2810, 1},
+ {0x2cb2, 2816, 1},
- {0xa684, 3090, 1},
+ {0xa684, 3096, 1},
- {0xa7b2, 706, 1},
+ {0xa7b2, 709, 1},
- {0x1cb2, 1561, 1},
+ {0x1cb2, 1564, 1},
- {0xabb2, 1795, 1},
+ {0xabb2, 1798, 1},
- {0x10cb2, 3768, 1},
+ {0x10cb2, 3789, 1},
- {0x104b8, 3534, 1},
+ {0x104b8, 3555, 1},
{0x01f7, 414, 1},
{0x1ff7, 67, 3},
- {0x1eb8, 2123, 1},
+ {0x1eb8, 2129, 1},
- {0x04b8, 1165, 1},
+ {0x04b8, 1168, 1},
{0x01b8, 408, 1},
- {0x1fb8, 2417, 1},
+ {0x1fb8, 2423, 1},
- {0x2cb8, 2819, 1},
+ {0x2cb8, 2825, 1},
- {0x2ced, 2888, 1},
+ {0x2ced, 2894, 1},
- {0xa7b8, 3306, 1},
+ {0xa7b8, 3315, 1},
- {0x1cb8, 1579, 1},
+ {0x1cb8, 1582, 1},
- {0xabb8, 1813, 1},
+ {0xabb8, 1816, 1},
- {0x1ea6, 2096, 1},
+ {0x1ea6, 2102, 1},
- {0x04a6, 1138, 1},
+ {0x04a6, 1141, 1},
{0x01a6, 679, 1},
{0x1fa6, 239, 2},
- {0x2ca6, 2792, 1},
+ {0x2ca6, 2798, 1},
- {0x2167, 2462, 1},
+ {0x1ffb, 2420, 1},
- {0xa7a6, 3294, 1},
+ {0xa7a6, 3303, 1},
- {0x1ca6, 1525, 1},
+ {0x1ca6, 1528, 1},
- {0xaba6, 1759, 1},
+ {0xaba6, 1762, 1},
- {0x10ca6, 3732, 1},
+ {0x10ca6, 3753, 1},
- {0x1ea4, 2093, 1},
+ {0x1ea4, 2099, 1},
- {0x04a4, 1135, 1},
+ {0x04a4, 1138, 1},
{0x01a4, 390, 1},
{0x1fa4, 229, 2},
- {0x2ca4, 2789, 1},
+ {0x2ca4, 2795, 1},
- {0x1fe9, 2432, 1},
+ {0x1ff9, 2408, 1},
- {0xa7a4, 3291, 1},
+ {0xa7a4, 3300, 1},
- {0x1ca4, 1519, 1},
+ {0x1ca4, 1522, 1},
- {0xaba4, 1753, 1},
+ {0xaba4, 1756, 1},
- {0x10ca4, 3726, 1},
+ {0x10ca4, 3747, 1},
- {0x1ea0, 2087, 1},
+ {0x1ea0, 2093, 1},
- {0x04a0, 1129, 1},
+ {0x04a0, 1132, 1},
{0x01a0, 384, 1},
{0x1fa0, 209, 2},
- {0x2ca0, 2783, 1},
+ {0x2ca0, 2789, 1},
- {0x1fe7, 47, 3},
+ {0x1fe9, 2438, 1},
- {0xa7a0, 3285, 1},
+ {0xa7a0, 3294, 1},
- {0x1ca0, 1507, 1},
+ {0x1ca0, 1510, 1},
- {0xaba0, 1741, 1},
+ {0xaba0, 1744, 1},
- {0x10ca0, 3714, 1},
+ {0x10ca0, 3735, 1},
- {0x1eae, 2108, 1},
+ {0x1eae, 2114, 1},
- {0x04ae, 1150, 1},
+ {0x04ae, 1153, 1},
- {0x01ae, 688, 1},
+ {0x01ae, 691, 1},
{0x1fae, 239, 2},
- {0x2cae, 2804, 1},
+ {0x2cae, 2810, 1},
- {0x0057, 65, 1},
+ {0x13fd, 1855, 1},
{0xa7ae, 655, 1},
- {0x1cae, 1549, 1},
+ {0x1cae, 1552, 1},
- {0xabae, 1783, 1},
+ {0xabae, 1786, 1},
- {0x10cae, 3756, 1},
+ {0x10cae, 3777, 1},
- {0x1eac, 2105, 1},
+ {0x1eac, 2111, 1},
- {0x04ac, 1147, 1},
+ {0x04ac, 1150, 1},
{0x01ac, 396, 1},
{0x1fac, 229, 2},
- {0x2cac, 2801, 1},
+ {0x2cac, 2807, 1},
- {0x13fb, 1846, 1},
+ {0x00dd, 162, 1},
{0xa7ac, 637, 1},
- {0x1cac, 1543, 1},
+ {0x1cac, 1546, 1},
- {0xabac, 1777, 1},
+ {0xabac, 1780, 1},
- {0x10cac, 3750, 1},
+ {0x10cac, 3771, 1},
- {0x1ea2, 2090, 1},
+ {0x1ea2, 2096, 1},
- {0x04a2, 1132, 1},
+ {0x04a2, 1135, 1},
{0x01a2, 387, 1},
{0x1fa2, 219, 2},
- {0x2ca2, 2786, 1},
+ {0x2ca2, 2792, 1},
- {0x10b2, 2948, 1},
+ {0x10b2, 2954, 1},
- {0xa7a2, 3288, 1},
+ {0xa7a2, 3297, 1},
- {0x1ca2, 1513, 1},
+ {0x1ca2, 1516, 1},
- {0xaba2, 1747, 1},
+ {0xaba2, 1750, 1},
- {0x10ca2, 3720, 1},
+ {0x10ca2, 3741, 1},
- {0x118b2, 3825, 1},
+ {0x118b2, 3846, 1},
- {0x050a, 1288, 1},
+ {0x050a, 1291, 1},
- {0x1fe3, 41, 3},
+ {0x020a, 517, 1},
- {0x1eaa, 2102, 1},
+ {0x1eaa, 2108, 1},
- {0x04aa, 1144, 1},
+ {0x04aa, 1147, 1},
- {0x00df, 24, 2},
+ {0x13fb, 1849, 1},
{0x1faa, 219, 2},
- {0x2caa, 2798, 1},
+ {0x2caa, 2804, 1},
- {0x10b8, 2966, 1},
+ {0x10b8, 2972, 1},
{0xa7aa, 646, 1},
- {0x1caa, 1537, 1},
+ {0x1caa, 1540, 1},
- {0xabaa, 1771, 1},
+ {0xabaa, 1774, 1},
- {0x10caa, 3744, 1},
+ {0x10caa, 3765, 1},
- {0x118b8, 3843, 1},
+ {0x118b8, 3864, 1},
- {0x1ff9, 2402, 1},
+ {0x1fe7, 47, 3},
- {0xab77, 1618, 1},
+ {0x13f9, 1843, 1},
- {0x10402, 3396, 1},
+ {0x10402, 3417, 1},
- {0x10a6, 2912, 1},
+ {0x10a6, 2918, 1},
- {0x0537, 1363, 1},
+ {0x1fe3, 41, 3},
- {0x1e02, 1864, 1},
+ {0x1e02, 1870, 1},
- {0x0402, 1002, 1},
+ {0x0402, 1005, 1},
{0x0102, 174, 1},
- {0x118a6, 3789, 1},
+ {0x118a6, 3810, 1},
- {0x2c02, 2576, 1},
+ {0x2c02, 2582, 1},
- {0x1efe, 2228, 1},
+ {0x019f, 673, 1},
- {0x04fe, 1270, 1},
+ {0x1f9f, 204, 2},
- {0x01fe, 499, 1},
+ {0x00df, 24, 2},
+
+ {0x10a4, 2912, 1},
+
+ {0xab77, 1621, 1},
+
+ {0x1c9f, 1507, 1},
+
+ {0xab9f, 1741, 1},
- {0x10a4, 2906, 1},
+ {0x10c9f, 3732, 1},
- {0x049c, 1123, 1},
+ {0x118a4, 3804, 1},
+
+ {0x049c, 1126, 1},
{0x019c, 664, 1},
{0x1f9c, 189, 2},
- {0x2c9c, 2777, 1},
+ {0x2c9c, 2783, 1},
- {0x118a4, 3783, 1},
+ {0x10a0, 2900, 1},
- {0xa79c, 3279, 1},
+ {0xa79c, 3288, 1},
- {0x1c9c, 1495, 1},
+ {0x1c9c, 1498, 1},
- {0xab9c, 1729, 1},
+ {0xab9c, 1732, 1},
- {0x10c9c, 3702, 1},
+ {0x10c9c, 3723, 1},
- {0x10a0, 2894, 1},
+ {0x118a0, 3792, 1},
- {0x1e4c, 1975, 1},
+ {0x1e4c, 1981, 1},
- {0x00dd, 162, 1},
+ {0xab73, 1609, 1},
{0x014c, 279, 1},
- {0x1f4c, 2333, 1},
+ {0x1f4c, 2339, 1},
- {0x118a0, 3771, 1},
+ {0x10ae, 2942, 1},
{0x004c, 31, 1},
- {0xa74c, 3186, 1},
+ {0xa74c, 3192, 1},
{0x01db, 450, 1},
- {0x1fdb, 2396, 1},
+ {0x1fdb, 2402, 1},
- {0x10ae, 2936, 1},
+ {0x118ae, 3834, 1},
{0x00db, 156, 1},
- {0x13fd, 1852, 1},
-
- {0x1e8c, 2072, 1},
-
- {0x048c, 1099, 1},
-
- {0x118ae, 3813, 1},
-
- {0x1f8c, 149, 2},
-
- {0x2c8c, 2753, 1},
+ {0x1ede, 2186, 1},
- {0xff37, 3378, 1},
+ {0x04de, 1225, 1},
- {0xa64c, 3033, 1},
-
- {0x10ac, 2930, 1},
+ {0x01de, 456, 1},
- {0xab8c, 1681, 1},
+ {0x10ac, 2936, 1},
- {0x10c8c, 3654, 1},
+ {0x2cde, 2882, 1},
- {0x1ed4, 2165, 1},
+ {0x00de, 165, 1},
- {0x04d4, 1207, 1},
+ {0xab71, 1603, 1},
- {0x118ac, 3807, 1},
+ {0xa64c, 3039, 1},
- {0x24b8, 2498, 1},
+ {0x118ac, 3828, 1},
- {0x2cd4, 2861, 1},
+ {0x24b8, 2504, 1},
- {0x00d4, 138, 1},
+ {0x03f1, 802, 1},
- {0x104b0, 3510, 1},
+ {0x03ff, 730, 1},
- {0x10a2, 2900, 1},
+ {0x104b0, 3531, 1},
- {0xa68c, 3102, 1},
+ {0x10a2, 2906, 1},
- {0x1eb0, 2111, 1},
+ {0x03f5, 758, 1},
- {0x04b0, 1153, 1},
+ {0x1eb0, 2117, 1},
- {0x0389, 736, 1},
+ {0x04b0, 1156, 1},
- {0x118a2, 3777, 1},
+ {0x0389, 739, 1},
- {0x2cb0, 2807, 1},
+ {0x118a2, 3798, 1},
- {0x1f5f, 2348, 1},
+ {0x2cb0, 2813, 1},
+ {0xffffffff, -1, 0},
- {0xa7b0, 709, 1},
+ {0xa7b0, 712, 1},
- {0x1cb0, 1555, 1},
+ {0x1cb0, 1558, 1},
- {0xabb0, 1789, 1},
+ {0xabb0, 1792, 1},
- {0x10cb0, 3762, 1},
+ {0x10cb0, 3783, 1},
- {0x03ff, 727, 1},
+ {0x2165, 2462, 1},
- {0x10aa, 2924, 1},
+ {0x10aa, 2930, 1},
- {0x03f5, 755, 1},
+ {0x1feb, 2414, 1},
- {0x13f9, 1840, 1},
+ {0x2ceb, 2891, 1},
- {0x1ea8, 2099, 1},
+ {0x1ea8, 2105, 1},
- {0x04a8, 1141, 1},
+ {0x04a8, 1144, 1},
- {0x118aa, 3801, 1},
+ {0x118aa, 3822, 1},
{0x1fa8, 209, 2},
- {0x2ca8, 2795, 1},
+ {0x2ca8, 2801, 1},
- {0xab73, 1606, 1},
+ {0x03fd, 724, 1},
- {0xa7a8, 3297, 1},
+ {0xa7a8, 3306, 1},
- {0x1ca8, 1531, 1},
+ {0x1ca8, 1534, 1},
- {0xaba8, 1765, 1},
+ {0xaba8, 1768, 1},
- {0x10ca8, 3738, 1},
+ {0x10ca8, 3759, 1},
{0x1e98, 38, 2},
- {0x0498, 1117, 1},
+ {0x0498, 1120, 1},
{0x0198, 375, 1},
{0x1f98, 169, 2},
- {0x2c98, 2771, 1},
-
- {0xab71, 1600, 1},
+ {0x2c98, 2777, 1},
- {0xa798, 3273, 1},
+ {0x2161, 2450, 1},
- {0x1c98, 1483, 1},
+ {0xa798, 3282, 1},
- {0xab98, 1717, 1},
+ {0x1c98, 1486, 1},
- {0x10c98, 3690, 1},
+ {0xab98, 1720, 1},
- {0x03f7, 887, 1},
+ {0x10c98, 3711, 1},
- {0x0055, 59, 1},
+ {0x03f7, 890, 1},
- {0x020a, 517, 1},
+ {0x216f, 2492, 1},
+ {0xffffffff, -1, 0},
{0x1e96, 16, 2},
- {0x0496, 1114, 1},
+ {0x0496, 1117, 1},
{0x0196, 652, 1},
{0x1f96, 199, 2},
- {0x2c96, 2768, 1},
+ {0x2c96, 2774, 1},
- {0xa698, 3120, 1},
+ {0xa698, 3126, 1},
- {0xa796, 3270, 1},
+ {0xa796, 3279, 1},
- {0x1c96, 1477, 1},
+ {0x1c96, 1480, 1},
- {0xab96, 1711, 1},
+ {0xab96, 1714, 1},
- {0x10c96, 3684, 1},
+ {0x10c96, 3705, 1},
- {0x03a6, 813, 1},
+ {0x03a6, 816, 1},
- {0x16e57, 3936, 1},
+ {0x1ef2, 2216, 1},
- {0x10416, 3456, 1},
+ {0x04f2, 1255, 1},
- {0x1e7c, 2048, 1},
+ {0x01f2, 483, 1},
- {0x047c, 1087, 1},
+ {0x1ff2, 257, 2},
- {0x1e16, 1894, 1},
+ {0x2cf2, 2897, 1},
- {0x0416, 913, 1},
+ {0x01d9, 447, 1},
- {0x0116, 204, 1},
+ {0x1fd9, 2432, 1},
- {0xa696, 3117, 1},
+ {0xa696, 3123, 1},
- {0x2c16, 2636, 1},
+ {0x00d9, 150, 1},
- {0x03a4, 807, 1},
+ {0x03a4, 810, 1},
- {0xab7c, 1633, 1},
+ {0x1f5f, 2354, 1},
- {0x01f1, 483, 1},
+ {0x03f9, 884, 1},
- {0x0502, 1276, 1},
+ {0x0502, 1279, 1},
- {0x2165, 2456, 1},
+ {0x0202, 505, 1},
- {0x1e90, 2078, 1},
+ {0x1e90, 2084, 1},
- {0x0490, 1105, 1},
+ {0x0490, 1108, 1},
{0x0190, 628, 1},
{0x1f90, 169, 2},
- {0x2c90, 2759, 1},
+ {0x2c90, 2765, 1},
- {0x03a0, 795, 1},
+ {0x03a0, 798, 1},
- {0xa790, 3264, 1},
+ {0xa790, 3270, 1},
- {0x1c90, 1459, 1},
+ {0x1c90, 1462, 1},
- {0xab90, 1693, 1},
+ {0xab90, 1696, 1},
- {0x10c90, 3666, 1},
+ {0x10c90, 3687, 1},
- {0x1e6e, 2027, 1},
+ {0x1e6e, 2033, 1},
- {0x046e, 1066, 1},
+ {0x046e, 1069, 1},
{0x016e, 330, 1},
- {0x1f6e, 2369, 1},
+ {0x1f6e, 2375, 1},
{0x2c6e, 667, 1},
- {0x10b0, 2942, 1},
+ {0x10b0, 2948, 1},
- {0xa76e, 3237, 1},
-
- {0x054c, 1426, 1},
+ {0xa76e, 3243, 1},
+ {0xffffffff, -1, 0},
- {0xa690, 3108, 1},
+ {0xa690, 3114, 1},
+ {0xffffffff, -1, 0},
- {0x0147, 273, 1},
+ {0x118b0, 3840, 1},
- {0x118b0, 3819, 1},
+ {0x104be, 3573, 1},
- {0x104b6, 3528, 1},
+ {0x054c, 1429, 1},
- {0x0047, 18, 1},
+ {0x024c, 598, 1},
- {0x03fd, 721, 1},
+ {0x1ebe, 2138, 1},
- {0x1eb6, 2120, 1},
+ {0x04be, 1177, 1},
+ {0xffffffff, -1, 0},
- {0x04b6, 1162, 1},
+ {0x1fbe, 773, 1},
- {0x0535, 1357, 1},
+ {0x2cbe, 2834, 1},
- {0x1fb6, 58, 2},
+ {0x10a8, 2924, 1},
- {0x2cb6, 2816, 1},
+ {0xa7be, 3324, 1},
- {0x10a8, 2918, 1},
+ {0x1cbe, 1594, 1},
- {0xa7b6, 3303, 1},
+ {0xabbe, 1834, 1},
- {0x1cb6, 1573, 1},
+ {0x104bc, 3567, 1},
- {0xabb6, 1807, 1},
+ {0x118a8, 3816, 1},
+ {0xffffffff, -1, 0},
- {0x104be, 3552, 1},
+ {0x1ebc, 2135, 1},
- {0x118a8, 3795, 1},
+ {0x04bc, 1174, 1},
- {0x2c63, 1858, 1},
+ {0x01bc, 411, 1},
- {0x1ebe, 2132, 1},
+ {0x1fbc, 62, 2},
- {0x04be, 1174, 1},
+ {0x2cbc, 2831, 1},
- {0x10421, 3489, 1},
+ {0x017f, 52, 1},
- {0x1fbe, 770, 1},
+ {0xa7bc, 3321, 1},
- {0x2cbe, 2828, 1},
+ {0x2c7f, 583, 1},
- {0x2161, 2444, 1},
+ {0xabbc, 1828, 1},
+ {0xffffffff, -1, 0},
- {0x0421, 947, 1},
+ {0x104ba, 3561, 1},
- {0x1cbe, 1591, 1},
+ {0xab7f, 1645, 1},
- {0xabbe, 1831, 1},
+ {0x03aa, 830, 1},
- {0x2c21, 2669, 1},
+ {0x1eba, 2132, 1},
- {0x104bc, 3546, 1},
+ {0x04ba, 1171, 1},
{0xffffffff, -1, 0},
- {0x03aa, 827, 1},
+ {0x1fba, 2381, 1},
- {0x1ebc, 2129, 1},
+ {0x2cba, 2828, 1},
- {0x04bc, 1171, 1},
+ {0x017d, 351, 1},
- {0x01bc, 411, 1},
+ {0xa7ba, 3318, 1},
- {0x1fbc, 62, 2},
+ {0x1cba, 1588, 1},
+
+ {0xabba, 1822, 1},
- {0x2cbc, 2825, 1},
+ {0xa77d, 1858, 1},
- {0x16e4c, 3903, 1},
+ {0x104b6, 3549, 1},
- {0x104ba, 3540, 1},
+ {0xab7d, 1639, 1},
+ {0xffffffff, -1, 0},
- {0x03f9, 881, 1},
+ {0x1eb6, 2126, 1},
- {0xabbc, 1825, 1},
+ {0x04b6, 1165, 1},
- {0x1eba, 2126, 1},
+ {0x16e4c, 3924, 1},
- {0x04ba, 1168, 1},
+ {0x1fb6, 58, 2},
- {0x216e, 2483, 1},
+ {0x2cb6, 2822, 1},
- {0x1fba, 2375, 1},
+ {0x039f, 795, 1},
- {0x2cba, 2822, 1},
+ {0xa7b6, 3312, 1},
- {0xff35, 3372, 1},
+ {0x1cb6, 1576, 1},
- {0x104b4, 3522, 1},
+ {0xabb6, 1810, 1},
- {0x1cba, 1585, 1},
+ {0x01d5, 441, 1},
- {0xabba, 1819, 1},
+ {0x104b4, 3543, 1},
+ {0xffffffff, -1, 0},
- {0x1eb4, 2117, 1},
+ {0x00d5, 141, 1},
- {0x04b4, 1159, 1},
+ {0x1eb4, 2123, 1},
- {0x03fe, 724, 1},
+ {0x04b4, 1162, 1},
- {0x1fb4, 50, 2},
+ {0x039c, 785, 1},
- {0x2cb4, 2813, 1},
+ {0x1fb4, 50, 2},
- {0x039c, 782, 1},
+ {0x2cb4, 2819, 1},
+ {0xffffffff, -1, 0},
- {0xa7b4, 3300, 1},
+ {0xa7b4, 3309, 1},
- {0x1cb4, 1567, 1},
+ {0x1cb4, 1570, 1},
- {0xabb4, 1801, 1},
+ {0xabb4, 1804, 1},
{0x1e9a, 0, 2},
- {0x049a, 1120, 1},
+ {0x049a, 1123, 1},
- {0x0555, 1453, 1},
+ {0x2c67, 2726, 1},
{0x1f9a, 179, 2},
- {0x2c9a, 2774, 1},
+ {0x2c9a, 2780, 1},
+ {0xffffffff, -1, 0},
+
+ {0xa79a, 3285, 1},
- {0x2163, 2450, 1},
+ {0x1c9a, 1492, 1},
- {0xa79a, 3276, 1},
+ {0xab9a, 1726, 1},
- {0x1c9a, 1489, 1},
+ {0x10c9a, 3717, 1},
- {0xab9a, 1723, 1},
+ {0x1e2a, 1930, 1},
- {0x10c9a, 3696, 1},
+ {0x042a, 980, 1},
- {0x1f4d, 2336, 1},
+ {0x012a, 234, 1},
- {0x16e5f, 3960, 1},
+ {0x1f2a, 2285, 1},
- {0x004d, 34, 1},
+ {0x2c2a, 2702, 1},
- {0x1e94, 2084, 1},
+ {0x03de, 857, 1},
- {0x0494, 1111, 1},
+ {0xa72a, 3144, 1},
- {0x0194, 640, 1},
+ {0x10be, 2990, 1},
- {0x1f94, 189, 2},
+ {0xa69a, 3129, 1},
- {0x2c94, 2765, 1},
+ {0x0057, 65, 1},
+
+ {0x104c7, 3600, 1},
+ {0xffffffff, -1, 0},
- {0xa69a, 3123, 1},
+ {0x118be, 3882, 1},
- {0x038c, 833, 1},
+ {0x1e90a, 4014, 1},
- {0x1c94, 1471, 1},
+ {0x04c7, 1189, 1},
- {0xab94, 1705, 1},
+ {0x01c7, 421, 1},
- {0x10c94, 3678, 1},
+ {0x1fc7, 15, 3},
{0xffffffff, -1, 0},
- {0x0516, 1306, 1},
+ {0x00c7, 99, 1},
- {0x10b6, 2960, 1},
+ {0x10bc, 2984, 1},
- {0x0202, 505, 1},
+ {0x03b0, 41, 3},
- {0x1f6f, 2372, 1},
+ {0xff37, 3399, 1},
- {0x2c6f, 604, 1},
+ {0x1e92, 2087, 1},
- {0x1041c, 3474, 1},
+ {0x0492, 1111, 1},
- {0x118b6, 3837, 1},
+ {0x118bc, 3876, 1},
- {0xa694, 3114, 1},
+ {0x1f92, 179, 2},
- {0x1e1c, 1903, 1},
+ {0x2c92, 2768, 1},
- {0x041c, 931, 1},
+ {0xfb02, 12, 2},
- {0x011c, 213, 1},
+ {0xa792, 3273, 1},
- {0x1f1c, 2267, 1},
+ {0x1c92, 1468, 1},
- {0x2c1c, 2654, 1},
+ {0xab92, 1702, 1},
- {0x10be, 2984, 1},
+ {0x10c92, 3693, 1},
- {0x03b0, 41, 3},
+ {0x10ba, 2978, 1},
+ {0xffffffff, -1, 0},
- {0x16e55, 3930, 1},
+ {0x03a8, 823, 1},
- {0x1e92, 2081, 1},
+ {0x1e7c, 2054, 1},
- {0x0492, 1108, 1},
+ {0x047c, 1090, 1},
- {0x118be, 3861, 1},
+ {0x118ba, 3870, 1},
- {0x1f92, 179, 2},
+ {0x0537, 1366, 1},
+
+ {0x1e97, 34, 2},
- {0x2c92, 2762, 1},
+ {0xa692, 3117, 1},
- {0x024c, 598, 1},
+ {0x0197, 649, 1},
- {0xa792, 3267, 1},
+ {0x1f97, 204, 2},
- {0x1c92, 1465, 1},
+ {0xab7c, 1636, 1},
- {0xab92, 1699, 1},
+ {0x0398, 768, 1},
- {0x10c92, 3672, 1},
+ {0x10b6, 2966, 1},
- {0x10bc, 2978, 1},
+ {0x1c97, 1483, 1},
- {0x0547, 1411, 1},
+ {0xab97, 1717, 1},
- {0x03a8, 820, 1},
+ {0x10c97, 3708, 1},
+ {0xffffffff, -1, 0},
- {0x01d9, 447, 1},
+ {0x118b6, 3858, 1},
- {0x1fd9, 2426, 1},
+ {0x16e5f, 3981, 1},
- {0x118bc, 3855, 1},
+ {0x1e94, 2090, 1},
- {0x00d9, 150, 1},
+ {0x0494, 1114, 1},
- {0x01d5, 441, 1},
+ {0x0194, 640, 1},
- {0xa692, 3111, 1},
+ {0x1f94, 189, 2},
- {0x10ba, 2972, 1},
+ {0x2c94, 2771, 1},
- {0x00d5, 141, 1},
- {0xffffffff, -1, 0},
+ {0x0396, 762, 1},
- {0x0398, 765, 1},
+ {0x10b4, 2960, 1},
- {0x1e86, 2063, 1},
+ {0x1c94, 1474, 1},
- {0x118ba, 3849, 1},
+ {0xab94, 1708, 1},
- {0x0186, 616, 1},
+ {0x10c94, 3699, 1},
- {0x1f86, 159, 2},
+ {0x24be, 2522, 1},
- {0x2c86, 2744, 1},
+ {0x118b4, 3852, 1},
- {0x10b4, 2954, 1},
+ {0x10416, 3477, 1},
- {0xa786, 3258, 1},
+ {0x1e7a, 2051, 1},
- {0x1c86, 977, 1},
+ {0x047a, 1087, 1},
- {0xab86, 1663, 1},
+ {0x1e16, 1900, 1},
- {0x10c86, 3636, 1},
+ {0x0416, 916, 1},
+
+ {0x0116, 204, 1},
- {0x118b4, 3831, 1},
+ {0xa694, 3120, 1},
- {0x216f, 2486, 1},
+ {0x2c16, 2642, 1},
- {0x0396, 759, 1},
+ {0x017b, 348, 1},
- {0x1f6d, 2366, 1},
+ {0xab7a, 1630, 1},
- {0x2c6d, 607, 1},
+ {0x24bc, 2516, 1},
{0xffffffff, -1, 0},
- {0x104c7, 3579, 1},
+ {0xa77b, 3249, 1},
- {0x24b6, 2492, 1},
+ {0x1e86, 2069, 1},
- {0xa686, 3093, 1},
+ {0xab7b, 1633, 1},
- {0x1e90a, 3993, 1},
+ {0x0186, 616, 1},
- {0x04c7, 1186, 1},
+ {0x1f86, 159, 2},
- {0x01c7, 421, 1},
+ {0x2c86, 2750, 1},
- {0x1fc7, 15, 3},
- {0xffffffff, -1, 0},
+ {0x0390, 25, 3},
- {0x00c7, 99, 1},
+ {0xa786, 3264, 1},
- {0x16e47, 3888, 1},
- {0xffffffff, -1, 0},
+ {0x1c86, 980, 1},
- {0x1e9e, 24, 2},
+ {0xab86, 1666, 1},
- {0x049e, 1126, 1},
+ {0x10c86, 3657, 1},
- {0x24be, 2516, 1},
+ {0x24ba, 2510, 1},
- {0x1f9e, 199, 2},
+ {0x01d7, 444, 1},
- {0x2c9e, 2780, 1},
+ {0x1fd7, 31, 3},
- {0x03f1, 799, 1},
+ {0x10c7, 3014, 1},
- {0xa79e, 3282, 1},
+ {0x018f, 625, 1},
- {0x1c9e, 1501, 1},
+ {0x1f8f, 164, 2},
- {0xab9e, 1735, 1},
+ {0xff2a, 3360, 1},
+ {0xffffffff, -1, 0},
- {0x10c9e, 3708, 1},
+ {0xa686, 3099, 1},
- {0x0390, 25, 3},
+ {0x104c4, 3591, 1},
- {0x1efa, 2222, 1},
+ {0xab8f, 1693, 1},
- {0x04fa, 1264, 1},
+ {0x10c8f, 3684, 1},
- {0x01fa, 493, 1},
+ {0x1ec4, 2147, 1},
- {0x1ffa, 2411, 1},
+ {0x24b6, 2498, 1},
- {0x24bc, 2510, 1},
- {0xffffffff, -1, 0},
+ {0x01c4, 417, 1},
- {0x1e8e, 2075, 1},
+ {0x1fc4, 54, 2},
- {0x048e, 1102, 1},
+ {0x2cc4, 2843, 1},
- {0x018e, 453, 1},
+ {0x00c4, 89, 1},
- {0x1f8e, 159, 2},
+ {0xa7c4, 3276, 1},
- {0x2c8e, 2756, 1},
+ {0x104c2, 3585, 1},
- {0xff21, 3312, 1},
+ {0x216e, 2489, 1},
{0xffffffff, -1, 0},
- {0x24ba, 2504, 1},
+ {0x1ec2, 2144, 1},
+
+ {0x052a, 1339, 1},
- {0xab8e, 1687, 1},
+ {0x022a, 562, 1},
- {0x10c8e, 3660, 1},
+ {0x1fc2, 253, 2},
- {0x054d, 1429, 1},
+ {0x2cc2, 2840, 1},
- {0x1e8a, 2069, 1},
+ {0x00c2, 83, 1},
- {0x048a, 1096, 1},
+ {0xa7c2, 3327, 1},
- {0x018a, 622, 1},
+ {0x1e9e, 24, 2},
- {0x1f8a, 139, 2},
+ {0x049e, 1129, 1},
+ {0xffffffff, -1, 0},
- {0x2c8a, 2750, 1},
+ {0x1f9e, 199, 2},
- {0x216d, 2480, 1},
+ {0x2c9e, 2786, 1},
- {0x104d3, 3615, 1},
+ {0x037f, 887, 1},
- {0xa68e, 3105, 1},
+ {0xa79e, 3291, 1},
- {0xab8a, 1675, 1},
+ {0x1c9e, 1504, 1},
- {0x10c8a, 3648, 1},
+ {0xab9e, 1738, 1},
- {0x0216, 535, 1},
+ {0x10c9e, 3729, 1},
- {0x01d3, 438, 1},
+ {0x1e8e, 2081, 1},
- {0x1fd3, 25, 3},
+ {0x048e, 1105, 1},
- {0x1e82, 2057, 1},
+ {0x018e, 453, 1},
- {0x00d3, 135, 1},
+ {0x1f8e, 159, 2},
- {0x0182, 357, 1},
+ {0x2c8e, 2762, 1},
- {0x1f82, 139, 2},
+ {0x013d, 258, 1},
- {0x2c82, 2738, 1},
+ {0x1f3d, 2318, 1},
- {0xa68a, 3099, 1},
+ {0x1041c, 3495, 1},
- {0xa782, 3252, 1},
+ {0xab8e, 1690, 1},
- {0x1c82, 937, 1},
+ {0x10c8e, 3681, 1},
- {0xab82, 1651, 1},
+ {0x1e1c, 1909, 1},
- {0x10c82, 3624, 1},
+ {0x041c, 934, 1},
- {0x1e30, 1933, 1},
+ {0x011c, 213, 1},
- {0x051c, 1315, 1},
+ {0x1f1c, 2273, 1},
- {0x0130, 261, 2},
+ {0x2c1c, 2660, 1},
- {0x1e80, 2054, 1},
+ {0x1e902, 3990, 1},
- {0x0480, 1093, 1},
+ {0x1f5d, 2351, 1},
{0xffffffff, -1, 0},
- {0x1f80, 129, 2},
+ {0xa68e, 3111, 1},
- {0x2c80, 2735, 1},
+ {0x24c7, 2549, 1},
- {0xa682, 3087, 1},
+ {0x1e8a, 2075, 1},
- {0xa780, 3249, 1},
+ {0x048a, 1099, 1},
- {0x1c80, 899, 1},
+ {0x018a, 622, 1},
- {0xab80, 1645, 1},
+ {0x1f8a, 139, 2},
- {0x10c80, 3618, 1},
+ {0x2c8a, 2756, 1},
- {0x16e4d, 3906, 1},
+ {0x03d5, 816, 1},
- {0x1e4a, 1972, 1},
+ {0x1e40, 1963, 1},
{0xffffffff, -1, 0},
- {0x014a, 276, 1},
-
- {0x1f4a, 2327, 1},
+ {0xab8a, 1678, 1},
- {0x10c7, 3008, 1},
+ {0x10c8a, 3669, 1},
- {0x004a, 24, 1},
+ {0x16e57, 3957, 1},
- {0xa74a, 3183, 1},
+ {0x1e4a, 1978, 1},
- {0xa680, 3084, 1},
+ {0xa740, 3174, 1},
- {0x1041a, 3468, 1},
+ {0x014a, 276, 1},
- {0x013d, 258, 1},
+ {0x1f4a, 2333, 1},
+ {0xffffffff, -1, 0},
- {0x1f3d, 2312, 1},
+ {0x004a, 24, 1},
- {0x1e1a, 1900, 1},
+ {0xa74a, 3189, 1},
- {0x041a, 925, 1},
+ {0xa68a, 3105, 1},
- {0x011a, 210, 1},
+ {0x1e82, 2063, 1},
- {0x1f1a, 2261, 1},
+ {0x039a, 778, 1},
- {0x2c1a, 2648, 1},
- {0xffffffff, -1, 0},
+ {0x0182, 357, 1},
- {0x13fa, 1843, 1},
+ {0x1f82, 139, 2},
- {0xa64a, 3029, 1},
+ {0x2c82, 2744, 1},
- {0x10418, 3462, 1},
- {0xffffffff, -1, 0},
+ {0xa640, 3020, 1},
- {0x039a, 775, 1},
+ {0xa782, 3258, 1},
- {0x1e18, 1897, 1},
+ {0x1c82, 940, 1},
- {0x0418, 919, 1},
+ {0xab82, 1654, 1},
- {0x0118, 207, 1},
+ {0x10c82, 3645, 1},
- {0x1f18, 2255, 1},
+ {0xa64a, 3035, 1},
- {0x2c18, 2642, 1},
- {0xffffffff, -1, 0},
+ {0x10c4, 3008, 1},
- {0xfb02, 12, 2},
+ {0x0516, 1309, 1},
- {0x1ee0, 2183, 1},
+ {0x0216, 535, 1},
- {0x04e0, 1225, 1},
+ {0x2167, 2468, 1},
+ {0xffffffff, -1, 0},
- {0x01e0, 459, 1},
+ {0x1e80, 2060, 1},
- {0x1040e, 3432, 1},
+ {0x0480, 1096, 1},
- {0x2ce0, 2879, 1},
+ {0xa682, 3093, 1},
- {0x0394, 752, 1},
+ {0x1f80, 129, 2},
- {0x1e0e, 1882, 1},
+ {0x2c80, 2741, 1},
- {0x040e, 1038, 1},
+ {0x10c2, 3002, 1},
- {0x010e, 192, 1},
+ {0xa780, 3255, 1},
- {0x1f0e, 2249, 1},
+ {0x1c80, 902, 1},
- {0x2c0e, 2612, 1},
+ {0xab80, 1648, 1},
- {0x1040c, 3426, 1},
+ {0x10c80, 3639, 1},
- {0x1f6b, 2360, 1},
+ {0x212a, 27, 1},
+ {0xffffffff, -1, 0},
- {0x2c6b, 2726, 1},
+ {0x1efa, 2228, 1},
- {0x1e0c, 1879, 1},
+ {0x04fa, 1267, 1},
- {0x040c, 1032, 1},
+ {0x01fa, 493, 1},
- {0x010c, 189, 1},
+ {0x1ffa, 2417, 1},
- {0x1f0c, 2243, 1},
+ {0x1041a, 3489, 1},
- {0x2c0c, 2606, 1},
+ {0x0392, 748, 1},
- {0x1f5d, 2345, 1},
+ {0xa680, 3090, 1},
- {0x10414, 3450, 1},
+ {0x1e1a, 1906, 1},
- {0x1e7a, 2045, 1},
+ {0x041a, 928, 1},
- {0x047a, 1084, 1},
+ {0x011a, 210, 1},
- {0x1e14, 1891, 1},
+ {0x1f1a, 2267, 1},
- {0x0414, 906, 1},
+ {0x2c1a, 2654, 1},
- {0x0114, 201, 1},
+ {0x10418, 3483, 1},
+ {0xffffffff, -1, 0},
- {0x1e902, 3969, 1},
+ {0x1f5b, 2348, 1},
- {0x2c14, 2630, 1},
+ {0x1e18, 1903, 1},
- {0x1f5b, 2342, 1},
+ {0x0418, 922, 1},
- {0xab7a, 1627, 1},
+ {0x0118, 207, 1},
- {0x24c7, 2543, 1},
+ {0x1f18, 2261, 1},
- {0x10408, 3414, 1},
+ {0x2c18, 2648, 1},
- {0x0392, 745, 1},
+ {0x1040e, 3453, 1},
- {0x0533, 1351, 1},
+ {0x2c63, 1861, 1},
- {0x1e08, 1873, 1},
+ {0x0397, 765, 1},
- {0x0408, 1020, 1},
+ {0x1e0e, 1888, 1},
- {0x0108, 183, 1},
+ {0x040e, 1041, 1},
- {0x1f08, 2231, 1},
+ {0x010e, 192, 1},
- {0x2c08, 2594, 1},
+ {0x1f0e, 2255, 1},
- {0x10406, 3408, 1},
+ {0x2c0e, 2618, 1},
- {0x0053, 52, 1},
- {0xffffffff, -1, 0},
+ {0x1e2e, 1936, 1},
- {0x1e06, 1870, 1},
+ {0x042e, 993, 1},
- {0x0406, 1014, 1},
+ {0x012e, 240, 1},
- {0x0106, 180, 1},
+ {0x1f2e, 2297, 1},
- {0x10404, 3402, 1},
+ {0x2c2e, 2714, 1},
+ {0xffffffff, -1, 0},
- {0x2c06, 2588, 1},
+ {0xa72e, 3150, 1},
- {0x03d5, 813, 1},
+ {0x0394, 755, 1},
- {0x1e04, 1867, 1},
+ {0x1040c, 3447, 1},
+ {0xffffffff, -1, 0},
- {0x0404, 1008, 1},
+ {0x24c4, 2540, 1},
- {0x0104, 177, 1},
- {0xffffffff, -1, 0},
+ {0x1e0c, 1885, 1},
- {0x2c04, 2582, 1},
+ {0x040c, 1035, 1},
- {0x10400, 3390, 1},
- {0xffffffff, -1, 0},
+ {0x010c, 189, 1},
- {0x0386, 730, 1},
+ {0x1f0c, 2249, 1},
- {0x1e00, 1861, 1},
+ {0x2c0c, 2612, 1},
- {0x0400, 996, 1},
+ {0x01a9, 685, 1},
- {0x0100, 171, 1},
+ {0x1fa9, 214, 2},
- {0x216b, 2474, 1},
+ {0x053d, 1384, 1},
- {0x2c00, 2570, 1},
- {0xffffffff, -1, 0},
+ {0x023d, 378, 1},
- {0x021c, 544, 1},
+ {0x24c2, 2534, 1},
- {0x1e2a, 1924, 1},
+ {0x1ca9, 1537, 1},
- {0x042a, 977, 1},
+ {0xaba9, 1771, 1},
- {0x012a, 234, 1},
+ {0x10ca9, 3762, 1},
- {0x1f2a, 2279, 1},
+ {0x10408, 3435, 1},
- {0x2c2a, 2696, 1},
+ {0x051c, 1318, 1},
- {0x10426, 3504, 1},
+ {0x021c, 544, 1},
- {0xa72a, 3138, 1},
+ {0x1e08, 1879, 1},
- {0xff33, 3366, 1},
+ {0x0408, 1023, 1},
- {0x1e26, 1918, 1},
+ {0x0108, 183, 1},
- {0x0426, 965, 1},
+ {0x1f08, 2237, 1},
- {0x0126, 228, 1},
+ {0x2c08, 2600, 1},
- {0x1f95, 194, 2},
+ {0x0386, 733, 1},
- {0x2c26, 2684, 1},
+ {0x10414, 3471, 1},
{0xffffffff, -1, 0},
- {0xa726, 3132, 1},
+ {0x13fa, 1846, 1},
- {0x1c95, 1474, 1},
+ {0x1e14, 1897, 1},
- {0xab95, 1708, 1},
+ {0x0414, 909, 1},
- {0x10c95, 3681, 1},
+ {0x0114, 201, 1},
+ {0xffffffff, -1, 0},
- {0x054a, 1420, 1},
+ {0x2c14, 2636, 1},
- {0x039e, 789, 1},
+ {0x0540, 1393, 1},
- {0x1e2e, 1930, 1},
+ {0x1f6d, 2372, 1},
- {0x042e, 990, 1},
+ {0x2c6d, 607, 1},
- {0x012e, 240, 1},
+ {0x038f, 842, 1},
- {0x1f2e, 2291, 1},
+ {0x10406, 3429, 1},
- {0x2c2e, 2708, 1},
+ {0x054a, 1423, 1},
- {0x053d, 1381, 1},
+ {0x024a, 595, 1},
- {0xa72e, 3144, 1},
+ {0x1e06, 1876, 1},
- {0x1feb, 2408, 1},
+ {0x0406, 1017, 1},
- {0x2ceb, 2885, 1},
+ {0x0106, 180, 1},
- {0x051a, 1312, 1},
+ {0x10404, 3423, 1},
- {0x03fa, 890, 1},
+ {0x2c06, 2594, 1},
+ {0xffffffff, -1, 0},
- {0x1e2c, 1927, 1},
+ {0x1e04, 1873, 1},
- {0x042c, 984, 1},
+ {0x0404, 1011, 1},
- {0x012c, 237, 1},
+ {0x0104, 177, 1},
+ {0xffffffff, -1, 0},
- {0x1f2c, 2285, 1},
+ {0x2c04, 2588, 1},
- {0x2c2c, 2702, 1},
+ {0x1ee0, 2189, 1},
- {0x038e, 836, 1},
+ {0x04e0, 1228, 1},
- {0xa72c, 3141, 1},
+ {0x01e0, 459, 1},
- {0xfb16, 125, 2},
- {0xffffffff, -1, 0},
+ {0x10400, 3411, 1},
- {0x0518, 1309, 1},
+ {0x2ce0, 2885, 1},
- {0xff30, 3357, 1},
+ {0x03c2, 806, 1},
- {0x1e28, 1921, 1},
+ {0x1e00, 1867, 1},
- {0x0428, 971, 1},
+ {0x0400, 999, 1},
- {0x0128, 231, 1},
+ {0x0100, 171, 1},
- {0x1f28, 2273, 1},
+ {0x0179, 345, 1},
- {0x2c28, 2690, 1},
+ {0x2c00, 2576, 1},
- {0x038a, 739, 1},
+ {0x16e5d, 3975, 1},
- {0xa728, 3135, 1},
- {0xffffffff, -1, 0},
+ {0x039e, 792, 1},
- {0x212a, 27, 1},
- {0xffffffff, -1, 0},
+ {0xa779, 3246, 1},
- {0x104cd, 3597, 1},
+ {0x10426, 3525, 1},
- {0x050e, 1294, 1},
+ {0xab79, 1627, 1},
{0xffffffff, -1, 0},
- {0x16e4a, 3897, 1},
-
- {0x04cd, 1195, 1},
+ {0x1e26, 1924, 1},
- {0x01cd, 429, 1},
+ {0x0426, 968, 1},
- {0x2126, 823, 1},
+ {0x0126, 228, 1},
- {0x10424, 3498, 1},
+ {0xfb16, 125, 2},
- {0x00cd, 117, 1},
+ {0x2c26, 2690, 1},
- {0x050c, 1291, 1},
+ {0x038e, 839, 1},
- {0x1e24, 1915, 1},
+ {0xa726, 3138, 1},
- {0x0424, 959, 1},
+ {0x16e40, 3888, 1},
- {0x0124, 225, 1},
+ {0x1ef4, 2219, 1},
- {0x1e916, 4029, 1},
+ {0x04f4, 1258, 1},
- {0x2c24, 2678, 1},
- {0xffffffff, -1, 0},
+ {0x01f4, 487, 1},
- {0xa724, 3129, 1},
+ {0x1ff4, 101, 2},
- {0x10422, 3492, 1},
+ {0x16e4a, 3918, 1},
- {0x0514, 1303, 1},
+ {0x051a, 1315, 1},
- {0x104c9, 3585, 1},
+ {0x021a, 541, 1},
- {0x1e22, 1912, 1},
+ {0x10a9, 2927, 1},
- {0x0422, 951, 1},
+ {0x1f4d, 2342, 1},
- {0x0122, 222, 1},
+ {0xff2e, 3372, 1},
- {0x04c9, 1189, 1},
+ {0x004d, 34, 1},
+ {0xffffffff, -1, 0},
- {0x2c22, 2672, 1},
+ {0x118a9, 3819, 1},
- {0x1fc9, 2384, 1},
+ {0x0518, 1312, 1},
- {0xa722, 3126, 1},
+ {0x0218, 538, 1},
- {0x00c9, 105, 1},
+ {0x1e8c, 2078, 1},
- {0x104c4, 3570, 1},
+ {0x048c, 1102, 1},
- {0x0508, 1285, 1},
+ {0x038a, 742, 1},
- {0x0553, 1447, 1},
+ {0x1f8c, 149, 2},
- {0x1ec4, 2141, 1},
+ {0x2c8c, 2759, 1},
{0xffffffff, -1, 0},
- {0x01c4, 417, 1},
+ {0x050e, 1297, 1},
- {0x1fc4, 54, 2},
+ {0x020e, 523, 1},
- {0x2cc4, 2837, 1},
+ {0xab8c, 1684, 1},
- {0x00c4, 89, 1},
+ {0x10c8c, 3675, 1},
- {0x0506, 1282, 1},
+ {0x104bf, 3576, 1},
- {0x104c2, 3564, 1},
+ {0x052e, 1345, 1},
- {0x1f69, 2354, 1},
+ {0x022e, 568, 1},
- {0x2c69, 2723, 1},
+ {0x1e2c, 1933, 1},
- {0x1ec2, 2138, 1},
+ {0x042c, 987, 1},
- {0x104d1, 3609, 1},
+ {0x012c, 237, 1},
- {0x0504, 1279, 1},
+ {0x1f2c, 2291, 1},
- {0x1fc2, 253, 2},
+ {0x2c2c, 2708, 1},
- {0x2cc2, 2834, 1},
+ {0xa68c, 3108, 1},
- {0x00c2, 83, 1},
+ {0xa72c, 3147, 1},
- {0x01d1, 435, 1},
+ {0x1cbf, 1597, 1},
- {0x16e5d, 3954, 1},
+ {0xabbf, 1837, 1},
- {0x104b7, 3531, 1},
+ {0x050c, 1294, 1},
- {0x00d1, 129, 1},
+ {0x020c, 520, 1},
- {0x0500, 1273, 1},
+ {0x1e28, 1927, 1},
- {0x013f, 261, 1},
-
- {0x1f3f, 2318, 1},
-
- {0x01b7, 703, 1},
-
- {0x1fb7, 10, 3},
-
- {0x0230, 571, 1},
-
- {0x16e5b, 3948, 1},
+ {0x0428, 974, 1},
- {0x052a, 1336, 1},
-
- {0x1cb7, 1576, 1},
+ {0x0128, 231, 1},
- {0xabb7, 1810, 1},
+ {0x1f28, 2279, 1},
- {0x03e0, 857, 1},
- {0xffffffff, -1, 0},
+ {0x2c28, 2696, 1},
- {0x104b3, 3519, 1},
+ {0x1fab, 224, 2},
- {0x1e921, 4062, 1},
+ {0xa728, 3141, 1},
{0xffffffff, -1, 0},
- {0x0526, 1330, 1},
-
- {0x16e53, 3924, 1},
-
- {0x01b3, 402, 1},
-
- {0x1fb3, 62, 2},
-
- {0x024a, 595, 1},
- {0xffffffff, -1, 0},
+ {0xa7ab, 631, 1},
- {0xa7b3, 3309, 1},
+ {0x1cab, 1543, 1},
- {0x1cb3, 1564, 1},
+ {0xabab, 1777, 1},
- {0xabb3, 1798, 1},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0x10cab, 3768, 1},
- {0x023d, 378, 1},
+ {0x16e5b, 3969, 1},
- {0x052e, 1342, 1},
+ {0x10424, 3519, 1},
- {0x1fab, 224, 2},
+ {0x0508, 1288, 1},
- {0x10cd, 3011, 1},
+ {0x0208, 514, 1},
- {0x021a, 541, 1},
+ {0x1e24, 1921, 1},
- {0xa7ab, 631, 1},
+ {0x0424, 962, 1},
- {0x1cab, 1540, 1},
+ {0x0124, 225, 1},
+ {0xffffffff, -1, 0},
- {0xabab, 1774, 1},
+ {0x2c24, 2684, 1},
- {0x10cab, 3747, 1},
+ {0x104b7, 3552, 1},
- {0x2169, 2468, 1},
- {0xffffffff, -1, 0},
+ {0xa724, 3135, 1},
- {0x1e56, 1990, 1},
+ {0x0514, 1306, 1},
- {0x052c, 1339, 1},
+ {0x0214, 532, 1},
- {0x0156, 294, 1},
+ {0x03fa, 893, 1},
- {0x1f56, 62, 3},
+ {0x01b7, 706, 1},
- {0x0218, 538, 1},
+ {0x1fb7, 10, 3},
- {0x0056, 62, 1},
+ {0x104b3, 3540, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xa756, 3201, 1},
+ {0x1cb7, 1579, 1},
- {0xff2a, 3339, 1},
+ {0xabb7, 1813, 1},
- {0x1e54, 1987, 1},
- {0xffffffff, -1, 0},
+ {0x01b3, 402, 1},
- {0x0154, 291, 1},
+ {0x1fb3, 62, 2},
- {0x1f54, 57, 3},
+ {0x0506, 1285, 1},
- {0x0528, 1333, 1},
+ {0x0206, 511, 1},
- {0x0054, 56, 1},
+ {0xa7b3, 3330, 1},
- {0xa754, 3198, 1},
+ {0x1cb3, 1567, 1},
- {0xff26, 3327, 1},
+ {0xabb3, 1801, 1},
- {0x104ca, 3588, 1},
+ {0x10422, 3513, 1},
- {0x020e, 523, 1},
+ {0x0504, 1282, 1},
- {0xa656, 3048, 1},
+ {0x0204, 508, 1},
- {0x1eca, 2150, 1},
+ {0x1e22, 1918, 1},
- {0x10c4, 3002, 1},
+ {0x0422, 954, 1},
- {0x01ca, 425, 1},
+ {0x0122, 222, 1},
- {0x1fca, 2387, 1},
+ {0xff26, 3348, 1},
- {0x2cca, 2846, 1},
+ {0x2c22, 2678, 1},
- {0x00ca, 108, 1},
+ {0xff35, 3393, 1},
- {0x020c, 520, 1},
+ {0xa722, 3132, 1},
- {0xa654, 3045, 1},
+ {0x104b1, 3534, 1},
- {0xff2e, 3351, 1},
+ {0x0143, 267, 1},
- {0x1e9b, 2005, 1},
+ {0x0500, 1276, 1},
- {0x0051, 46, 1},
+ {0x0200, 502, 1},
- {0x10c2, 2996, 1},
+ {0x0043, 6, 1},
- {0x1f9b, 184, 2},
+ {0x01b1, 697, 1},
+ {0xffffffff, -1, 0},
- {0x0524, 1327, 1},
+ {0x2163, 2456, 1},
{0xffffffff, -1, 0},
- {0x0214, 532, 1},
+ {0xa7b1, 688, 1},
- {0x1c9b, 1492, 1},
+ {0x1cb1, 1561, 1},
- {0xab9b, 1726, 1},
+ {0xabb1, 1795, 1},
- {0x10c9b, 3699, 1},
+ {0x10cb1, 3786, 1},
- {0xff2c, 3345, 1},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0x0526, 1333, 1},
- {0x10b7, 2963, 1},
+ {0x0226, 556, 1},
- {0x0522, 1324, 1},
+ {0x0535, 1360, 1},
- {0x1e91c, 4047, 1},
+ {0x10bf, 2993, 1},
- {0x0395, 755, 1},
+ {0x03a9, 826, 1},
- {0x0208, 514, 1},
+ {0x01a7, 393, 1},
+
+ {0x1fa7, 244, 2},
- {0x118b7, 3840, 1},
+ {0x1e916, 4050, 1},
- {0x24cd, 2561, 1},
+ {0x118bf, 3885, 1},
{0xffffffff, -1, 0},
- {0xff28, 3333, 1},
+ {0x1ca7, 1531, 1},
- {0x104c3, 3567, 1},
- {0xffffffff, -1, 0},
+ {0xaba7, 1765, 1},
- {0x104b1, 3513, 1},
+ {0x10ca7, 3756, 1},
- {0x0206, 511, 1},
+ {0x054d, 1432, 1},
- {0x04c3, 1180, 1},
+ {0x1f6b, 2366, 1},
- {0x10b3, 2951, 1},
+ {0x2c6b, 2732, 1},
- {0x1fc3, 71, 2},
+ {0x10ab, 2933, 1},
- {0x01b1, 694, 1},
+ {0x1e48, 1975, 1},
+ {0xffffffff, -1, 0},
- {0x00c3, 86, 1},
+ {0xff2c, 3366, 1},
- {0x0204, 508, 1},
+ {0x1f48, 2327, 1},
- {0x118b3, 3828, 1},
+ {0x118ab, 3825, 1},
- {0xa7b1, 685, 1},
+ {0x0048, 21, 1},
- {0x1cb1, 1558, 1},
+ {0xa748, 3186, 1},
- {0xabb1, 1792, 1},
+ {0x1e88, 2072, 1},
- {0x10cb1, 3765, 1},
+ {0x1f69, 2360, 1},
- {0x10ab, 2927, 1},
+ {0x2c69, 2729, 1},
- {0x24c9, 2549, 1},
+ {0x1f88, 129, 2},
- {0x0200, 502, 1},
+ {0x2c88, 2753, 1},
{0xffffffff, -1, 0},
- {0xff24, 3321, 1},
+ {0xff28, 3354, 1},
- {0x118ab, 3804, 1},
+ {0x1c88, 3035, 1},
- {0x0531, 1345, 1},
+ {0xab88, 1672, 1},
- {0x053f, 1387, 1},
+ {0x10c88, 3663, 1},
- {0x10420, 3486, 1},
+ {0x1e42, 1966, 1},
- {0x022a, 562, 1},
-
- {0x24c4, 2534, 1},
+ {0xa648, 3032, 1},
- {0x1e20, 1909, 1},
+ {0x052c, 1342, 1},
- {0x0420, 944, 1},
+ {0x022c, 565, 1},
- {0x0120, 219, 1},
+ {0x10b7, 2969, 1},
- {0xff22, 3315, 1},
+ {0x0042, 3, 1},
- {0x2c20, 2666, 1},
+ {0xa742, 3177, 1},
{0xffffffff, -1, 0},
- {0x0226, 556, 1},
+ {0xa688, 3102, 1},
- {0x01a9, 682, 1},
+ {0x118b7, 3861, 1},
- {0x1fa9, 214, 2},
+ {0x216d, 2486, 1},
- {0x24c2, 2528, 1},
+ {0x10b3, 2957, 1},
- {0x01a7, 393, 1},
+ {0xff24, 3342, 1},
- {0x1fa7, 244, 2},
+ {0x0528, 1336, 1},
- {0x1ca9, 1534, 1},
+ {0x0228, 559, 1},
- {0xaba9, 1768, 1},
+ {0x03e0, 860, 1},
- {0x10ca9, 3741, 1},
+ {0x118b3, 3849, 1},
- {0x1ca7, 1528, 1},
+ {0x1e56, 1996, 1},
- {0xaba7, 1762, 1},
+ {0xa642, 3023, 1},
- {0x10ca7, 3735, 1},
+ {0x0156, 294, 1},
- {0x022e, 568, 1},
+ {0x1f56, 62, 3},
- {0x1e88, 2066, 1},
+ {0x16e4d, 3927, 1},
- {0x24b7, 2495, 1},
- {0xffffffff, -1, 0},
+ {0x0056, 62, 1},
- {0x1f88, 129, 2},
+ {0xa756, 3207, 1},
- {0x2c88, 2747, 1},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0x24bf, 2525, 1},
- {0x1c88, 3029, 1},
+ {0x1f59, 2345, 1},
- {0xab88, 1669, 1},
+ {0x1e4e, 1984, 1},
- {0x10c88, 3642, 1},
+ {0x0059, 71, 1},
- {0x022c, 565, 1},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0x014e, 282, 1},
- {0xff31, 3360, 1},
+ {0x0524, 1330, 1},
- {0x1e52, 1984, 1},
+ {0x0224, 553, 1},
- {0x0556, 1456, 1},
+ {0x004e, 37, 1},
- {0x0152, 288, 1},
+ {0xa74e, 3195, 1},
- {0x1f52, 52, 3},
+ {0x10b1, 2951, 1},
- {0xa688, 3096, 1},
+ {0x042d, 990, 1},
- {0x0052, 49, 1},
+ {0xa656, 3054, 1},
- {0xa752, 3195, 1},
+ {0x1f2d, 2294, 1},
- {0x0228, 559, 1},
+ {0x2c2d, 2711, 1},
- {0x1e50, 1981, 1},
+ {0x118b1, 3843, 1},
- {0x0554, 1450, 1},
+ {0xff22, 3336, 1},
- {0x0150, 285, 1},
+ {0x03f4, 768, 1},
- {0x1f50, 84, 2},
+ {0x042f, 996, 1},
- {0x1041e, 3480, 1},
+ {0x1e91c, 4068, 1},
- {0x0050, 43, 1},
+ {0x1f2f, 2300, 1},
- {0xa750, 3192, 1},
+ {0xa64e, 3042, 1},
- {0x1e1e, 1906, 1},
+ {0x104ce, 3621, 1},
- {0x041e, 937, 1},
+ {0x10a7, 2921, 1},
- {0x011e, 216, 1},
+ {0x2126, 826, 1},
- {0xa652, 3042, 1},
+ {0x1ece, 2162, 1},
- {0x2c1e, 2660, 1},
+ {0xfb14, 109, 2},
+ {0xffffffff, -1, 0},
- {0x03c2, 803, 1},
+ {0x118a7, 3813, 1},
- {0x10c3, 2999, 1},
- {0xffffffff, -1, 0},
+ {0x2cce, 2858, 1},
- {0x10b1, 2945, 1},
+ {0x00ce, 120, 1},
- {0x03d1, 765, 1},
+ {0x104b9, 3558, 1},
- {0x0551, 1441, 1},
+ {0x038c, 836, 1},
- {0xa650, 3039, 1},
+ {0x0522, 1327, 1},
- {0x0224, 553, 1},
+ {0x0222, 550, 1},
- {0x118b1, 3822, 1},
+ {0xff33, 3387, 1},
- {0x1e4e, 1978, 1},
- {0xffffffff, -1, 0},
+ {0x24b7, 2501, 1},
- {0x014e, 282, 1},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0x1fb9, 2426, 1},
- {0x004e, 37, 1},
+ {0xfb06, 29, 2},
- {0xa74e, 3189, 1},
+ {0x0543, 1402, 1},
- {0x10412, 3444, 1},
+ {0x0243, 354, 1},
- {0x0222, 550, 1},
+ {0x1cb9, 1585, 1},
- {0x16e56, 3933, 1},
+ {0xabb9, 1819, 1},
- {0x1e12, 1888, 1},
+ {0x1e54, 1993, 1},
- {0x0412, 899, 1},
+ {0xfb04, 5, 3},
- {0x0112, 198, 1},
+ {0x0154, 291, 1},
+
+ {0x1f54, 57, 3},
- {0x24ca, 2552, 1},
+ {0xff31, 3381, 1},
- {0x2c12, 2624, 1},
+ {0x0054, 56, 1},
- {0x018f, 625, 1},
+ {0xa754, 3204, 1},
+ {0xffffffff, -1, 0},
- {0x1f8f, 164, 2},
+ {0x1e52, 1990, 1},
- {0x16e54, 3927, 1},
+ {0x0533, 1354, 1},
- {0xa64e, 3036, 1},
+ {0x0152, 288, 1},
- {0x004f, 40, 1},
+ {0x1f52, 52, 3},
- {0x10a9, 2921, 1},
+ {0xfb00, 4, 2},
- {0xab8f, 1690, 1},
+ {0x0052, 49, 1},
- {0x10c8f, 3663, 1},
+ {0xa752, 3201, 1},
- {0x10a7, 2915, 1},
+ {0x03ab, 833, 1},
+ {0xffffffff, -1, 0},
- {0x1e48, 1969, 1},
+ {0x1e50, 1987, 1},
- {0x118a9, 3798, 1},
+ {0xa654, 3051, 1},
- {0x03ab, 830, 1},
+ {0x0150, 285, 1},
- {0x1f48, 2321, 1},
+ {0x1f50, 84, 2},
- {0x118a7, 3792, 1},
+ {0x0531, 1348, 1},
- {0x0048, 21, 1},
+ {0x0050, 43, 1},
- {0xa748, 3180, 1},
+ {0xa750, 3198, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x10410, 3438, 1},
- {0xffffffff, -1, 0},
+ {0xa652, 3048, 1},
- {0x16e51, 3918, 1},
+ {0x0548, 1417, 1},
- {0x1e10, 1885, 1},
+ {0x0248, 592, 1},
- {0x0410, 893, 1},
+ {0x10420, 3507, 1},
- {0x0110, 195, 1},
+ {0x013f, 261, 1},
- {0x104c0, 3558, 1},
+ {0x1f3f, 2324, 1},
- {0x2c10, 2618, 1},
+ {0x1e20, 1915, 1},
- {0x1e91a, 4041, 1},
+ {0x0420, 947, 1},
- {0x1ec0, 2135, 1},
+ {0x0120, 219, 1},
- {0x04c0, 1198, 1},
+ {0xa650, 3045, 1},
- {0xa648, 3026, 1},
+ {0x2c20, 2672, 1},
{0xffffffff, -1, 0},
- {0x2cc0, 2831, 1},
+ {0x16e43, 3897, 1},
+ {0xffffffff, -1, 0},
- {0x00c0, 77, 1},
+ {0x1e91a, 4062, 1},
{0xffffffff, -1, 0},
- {0x24c3, 2531, 1},
+ {0x1041e, 3501, 1},
+ {0xffffffff, -1, 0},
- {0x0520, 1321, 1},
+ {0x0542, 1399, 1},
- {0x104c8, 3582, 1},
+ {0x1e1e, 1912, 1},
- {0x1e918, 4035, 1},
- {0xffffffff, -1, 0},
+ {0x041e, 940, 1},
- {0x1ec8, 2147, 1},
+ {0x011e, 216, 1},
- {0xfb14, 109, 2},
+ {0x1e918, 4056, 1},
- {0x01c8, 421, 1},
+ {0x2c1e, 2666, 1},
- {0x1fc8, 2381, 1},
+ {0x10412, 3465, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x2cc8, 2843, 1},
+ {0x1e12, 1894, 1},
- {0x00c8, 102, 1},
+ {0x0412, 902, 1},
- {0x104b9, 3537, 1},
+ {0x0112, 198, 1},
- {0x1efc, 2225, 1},
+ {0x1e90e, 4026, 1},
- {0x04fc, 1267, 1},
+ {0x2c12, 2630, 1},
+ {0xffffffff, -1, 0},
- {0x01fc, 496, 1},
+ {0x10410, 3459, 1},
- {0x1ffc, 96, 2},
+ {0xff2d, 3369, 1},
- {0x1e90e, 4005, 1},
+ {0x0556, 1459, 1},
- {0x1fb9, 2420, 1},
+ {0x1e10, 1891, 1},
- {0x104b5, 3525, 1},
+ {0x0410, 896, 1},
- {0x039b, 779, 1},
+ {0x0110, 195, 1},
{0xffffffff, -1, 0},
- {0x1cb9, 1582, 1},
+ {0x2c10, 2624, 1},
- {0xabb9, 1816, 1},
+ {0xff2f, 3375, 1},
- {0x01b5, 405, 1},
+ {0x10b9, 2975, 1},
- {0x1e90c, 3999, 1},
+ {0x16e48, 3912, 1},
- {0xfb06, 29, 2},
+ {0x054e, 1435, 1},
- {0x00b5, 782, 1},
- {0xffffffff, -1, 0},
+ {0x024e, 601, 1},
- {0x1cb5, 1570, 1},
+ {0x1e90c, 4020, 1},
- {0xabb5, 1804, 1},
+ {0x118b9, 3867, 1},
{0xffffffff, -1, 0},
- {0xfb04, 5, 3},
+ {0x104ca, 3609, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x1fad, 234, 2},
+ {0x1eca, 2156, 1},
- {0x1e914, 4023, 1},
+ {0x03a7, 820, 1},
- {0x0552, 1444, 1},
+ {0x01ca, 425, 1},
- {0xa7ad, 661, 1},
+ {0x1fca, 2393, 1},
- {0x1cad, 1546, 1},
+ {0x2cca, 2852, 1},
- {0xabad, 1780, 1},
+ {0x00ca, 108, 1},
- {0x10cad, 3753, 1},
+ {0x104c8, 3603, 1},
+ {0xffffffff, -1, 0},
- {0xfb00, 4, 2},
+ {0x16e42, 3894, 1},
- {0x01af, 399, 1},
+ {0x1ec8, 2153, 1},
- {0x1faf, 244, 2},
+ {0x1e908, 4008, 1},
- {0x0550, 1438, 1},
- {0xffffffff, -1, 0},
+ {0x01c8, 421, 1},
- {0x1e908, 3987, 1},
+ {0x1fc8, 2387, 1},
- {0x1caf, 1552, 1},
+ {0x2cc8, 2849, 1},
- {0xabaf, 1786, 1},
+ {0x00c8, 102, 1},
- {0x10caf, 3759, 1},
- {0xffffffff, -1, 0},
+ {0x1e6c, 2030, 1},
- {0x051e, 1318, 1},
+ {0x046c, 1066, 1},
- {0x018b, 366, 1},
+ {0x016c, 327, 1},
- {0x1f8b, 144, 2},
+ {0x1f6c, 2369, 1},
- {0x1e906, 3981, 1},
- {0xffffffff, -1, 0},
+ {0x1e914, 4044, 1},
- {0xa78b, 3261, 1},
+ {0x104c6, 3597, 1},
- {0x1fa5, 234, 2},
+ {0xa76c, 3240, 1},
- {0xab8b, 1678, 1},
+ {0x0388, 736, 1},
- {0x10c8b, 3651, 1},
+ {0x1ec6, 2150, 1},
- {0x1e904, 3975, 1},
+ {0x216b, 2480, 1},
- {0x1ca5, 1522, 1},
+ {0x16e56, 3954, 1},
- {0xaba5, 1756, 1},
+ {0x1fc6, 67, 2},
- {0x10ca5, 3729, 1},
- {0xffffffff, -1, 0},
+ {0x2cc6, 2846, 1},
- {0x054e, 1432, 1},
+ {0x00c6, 96, 1},
- {0x1eda, 2174, 1},
+ {0xa7c6, 1864, 1},
- {0x04da, 1216, 1},
+ {0x16e59, 3963, 1},
- {0x1e900, 3963, 1},
+ {0x1e906, 4002, 1},
- {0x1fda, 2393, 1},
+ {0x0554, 1453, 1},
- {0x2cda, 2870, 1},
+ {0xa66c, 3087, 1},
- {0x00da, 153, 1},
+ {0x16e4e, 3930, 1},
- {0x10c0, 2990, 1},
+ {0x2169, 2474, 1},
- {0x16e52, 3921, 1},
+ {0x24ce, 2570, 1},
- {0x03a9, 823, 1},
+ {0x1e904, 3996, 1},
- {0x0512, 1300, 1},
+ {0x104c5, 3594, 1},
{0xffffffff, -1, 0},
- {0x03a7, 817, 1},
+ {0x0552, 1447, 1},
+ {0xffffffff, -1, 0},
- {0x1fa3, 224, 2},
+ {0x04c5, 1186, 1},
- {0x054f, 1435, 1},
+ {0x01c5, 417, 1},
{0xffffffff, -1, 0},
- {0x16e50, 3915, 1},
+ {0x24b9, 2507, 1},
+
+ {0x00c5, 92, 1},
- {0x1ca3, 1516, 1},
+ {0xa7c5, 682, 1},
- {0xaba3, 1750, 1},
+ {0x1e900, 3984, 1},
- {0x10ca3, 3723, 1},
+ {0x0550, 1441, 1},
- {0x13fc, 1849, 1},
+ {0x104c0, 3579, 1},
- {0x1fa1, 214, 2},
+ {0x104b5, 3546, 1},
{0xffffffff, -1, 0},
- {0x0388, 733, 1},
+ {0x1ec0, 2141, 1},
- {0x0548, 1414, 1},
+ {0x04c0, 1201, 1},
+ {0xffffffff, -1, 0},
- {0x1ca1, 1510, 1},
+ {0x01b5, 405, 1},
- {0xaba1, 1744, 1},
+ {0x2cc0, 2837, 1},
- {0x10ca1, 3717, 1},
+ {0x00c0, 77, 1},
- {0x10b9, 2969, 1},
+ {0x00b5, 785, 1},
- {0x1ef4, 2213, 1},
+ {0x053f, 1390, 1},
- {0x04f4, 1255, 1},
+ {0x1cb5, 1573, 1},
- {0x01f4, 487, 1},
+ {0xabb5, 1807, 1},
- {0x1ff4, 101, 2},
+ {0x1fad, 234, 2},
- {0x118b9, 3846, 1},
+ {0x0520, 1324, 1},
- {0x0510, 1297, 1},
+ {0x0220, 381, 1},
- {0x10b5, 2957, 1},
+ {0xa7ad, 661, 1},
- {0x104cf, 3603, 1},
+ {0x1cad, 1549, 1},
- {0x16e4e, 3909, 1},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xabad, 1783, 1},
- {0x118b5, 3834, 1},
+ {0x10cad, 3774, 1},
- {0x01cf, 432, 1},
+ {0x1efc, 2231, 1},
- {0x0220, 381, 1},
+ {0x04fc, 1270, 1},
- {0x10ad, 2933, 1},
+ {0x01fc, 496, 1},
- {0x00cf, 123, 1},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0x1ffc, 96, 2},
- {0x1e97, 34, 2},
+ {0x16e54, 3948, 1},
- {0x118ad, 3810, 1},
+ {0x1fa5, 234, 2},
+ {0xffffffff, -1, 0},
- {0x0197, 649, 1},
+ {0x051e, 1321, 1},
- {0x1f97, 204, 2},
+ {0x021e, 547, 1},
- {0x16e4f, 3912, 1},
+ {0x1ca5, 1525, 1},
- {0x10af, 2939, 1},
- {0xffffffff, -1, 0},
+ {0xaba5, 1759, 1},
- {0x1c97, 1480, 1},
+ {0x10ca5, 3750, 1},
- {0xab97, 1714, 1},
+ {0x16e52, 3942, 1},
- {0x10c97, 3687, 1},
+ {0x01af, 399, 1},
- {0x118af, 3816, 1},
+ {0x1faf, 244, 2},
- {0x0181, 613, 1},
+ {0x0512, 1303, 1},
- {0x1f81, 134, 2},
+ {0x0212, 529, 1},
{0xffffffff, -1, 0},
- {0x16e48, 3891, 1},
+ {0x1caf, 1555, 1},
- {0x24c0, 2522, 1},
+ {0xabaf, 1789, 1},
- {0x1c81, 906, 1},
+ {0x10caf, 3780, 1},
- {0xab81, 1648, 1},
+ {0x16e50, 3936, 1},
- {0x10c81, 3621, 1},
+ {0x1fa3, 224, 2},
+ {0xffffffff, -1, 0},
- {0x10a5, 2909, 1},
+ {0x0510, 1300, 1},
- {0x1e6c, 2024, 1},
+ {0x0210, 526, 1},
- {0x046c, 1063, 1},
+ {0x1ca3, 1519, 1},
- {0x016c, 327, 1},
+ {0xaba3, 1753, 1},
- {0x1f6c, 2363, 1},
+ {0x10ca3, 3744, 1},
- {0x118a5, 3786, 1},
- {0xffffffff, -1, 0},
+ {0x0429, 977, 1},
- {0xa76c, 3234, 1},
+ {0x1fa1, 214, 2},
- {0x24c8, 2546, 1},
+ {0x1f29, 2282, 1},
- {0x1e6a, 2021, 1},
+ {0x2c29, 2699, 1},
+ {0xffffffff, -1, 0},
- {0x046a, 1060, 1},
+ {0x1ca1, 1513, 1},
- {0x016a, 324, 1},
+ {0xaba1, 1747, 1},
- {0x1f6a, 2357, 1},
+ {0x10ca1, 3738, 1},
- {0x038f, 839, 1},
+ {0x1e6a, 2027, 1},
- {0x1e32, 1936, 1},
+ {0x046a, 1063, 1},
- {0xa76a, 3231, 1},
+ {0x016a, 324, 1},
- {0x0132, 243, 1},
+ {0x1f6a, 2363, 1},
- {0x24b9, 2501, 1},
+ {0x1e46, 1972, 1},
{0xffffffff, -1, 0},
- {0xa66c, 3081, 1},
+ {0xa76a, 3237, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xa732, 3147, 1},
+ {0x0046, 15, 1},
- {0x10a3, 2903, 1},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xa746, 3183, 1},
- {0x021e, 547, 1},
+ {0x10c5, 3011, 1},
{0xffffffff, -1, 0},
- {0x118a3, 3780, 1},
+ {0x1e68, 2024, 1},
- {0xa66a, 3078, 1},
+ {0x0468, 1060, 1},
- {0x1f59, 2339, 1},
+ {0x0168, 321, 1},
- {0x10a1, 2897, 1},
+ {0x1f68, 2357, 1},
+ {0xffffffff, -1, 0},
- {0x0059, 71, 1},
+ {0xa66a, 3084, 1},
- {0x1e64, 2012, 1},
+ {0xa768, 3234, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x0464, 1051, 1},
+ {0xa646, 3029, 1},
- {0x0164, 315, 1},
+ {0x10c0, 2996, 1},
- {0x118a1, 3774, 1},
+ {0x10b5, 2963, 1},
- {0x2c64, 676, 1},
- {0xffffffff, -1, 0},
+ {0x24ca, 2558, 1},
- {0xa764, 3222, 1},
+ {0x13fc, 1852, 1},
- {0x024e, 601, 1},
+ {0x1e44, 1969, 1},
+ {0xffffffff, -1, 0},
- {0x1e68, 2018, 1},
+ {0x118b5, 3855, 1},
- {0x0468, 1057, 1},
+ {0x10ad, 2939, 1},
- {0x0168, 321, 1},
+ {0xa668, 3081, 1},
- {0x1f68, 2351, 1},
+ {0x0044, 9, 1},
- {0x10417, 3459, 1},
+ {0xa744, 3180, 1},
- {0x042f, 993, 1},
+ {0x24c8, 2552, 1},
- {0xa768, 3228, 1},
+ {0x118ad, 3831, 1},
+ {0xffffffff, -1, 0},
- {0x1f2f, 2294, 1},
+ {0x1e64, 2018, 1},
- {0x0417, 916, 1},
+ {0x0464, 1054, 1},
- {0x0212, 529, 1},
+ {0x0164, 315, 1},
+ {0xffffffff, -1, 0},
- {0xa664, 3069, 1},
+ {0x2c64, 676, 1},
- {0x2c17, 2639, 1},
+ {0x10a5, 2915, 1},
- {0x216c, 2477, 1},
+ {0xa764, 3228, 1},
+ {0xffffffff, -1, 0},
- {0x1e62, 2009, 1},
+ {0xa644, 3026, 1},
+ {0xffffffff, -1, 0},
- {0x0462, 1047, 1},
+ {0x118a5, 3807, 1},
- {0x0162, 312, 1},
+ {0x24c6, 2546, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x1e46, 1966, 1},
+ {0x10af, 2945, 1},
- {0x2c62, 658, 1},
+ {0x1e32, 1942, 1},
+ {0xffffffff, -1, 0},
- {0xa668, 3075, 1},
+ {0x0132, 243, 1},
- {0xa762, 3219, 1},
+ {0xa664, 3075, 1},
- {0x216a, 2471, 1},
+ {0x118af, 3837, 1},
- {0x0046, 15, 1},
+ {0x104cb, 3612, 1},
- {0xa746, 3177, 1},
+ {0xa732, 3153, 1},
- {0x0248, 592, 1},
+ {0x10a3, 2909, 1},
{0xffffffff, -1, 0},
- {0x2132, 2438, 1},
+ {0x04cb, 1195, 1},
- {0x1e60, 2005, 1},
+ {0x01cb, 425, 1},
- {0x0460, 1044, 1},
+ {0x1fcb, 2396, 1},
- {0x0160, 309, 1},
+ {0x118a3, 3801, 1},
+
+ {0x00cb, 111, 1},
+
+ {0x24c5, 2543, 1},
+
+ {0x10a1, 2903, 1},
{0xffffffff, -1, 0},
- {0x2c60, 2711, 1},
+ {0x1e62, 2015, 1},
- {0xa662, 3066, 1},
+ {0x0462, 1050, 1},
- {0xa760, 3216, 1},
+ {0x0162, 312, 1},
- {0x0210, 526, 1},
+ {0x118a1, 3795, 1},
- {0xa646, 3023, 1},
+ {0x2c62, 658, 1},
+ {0xffffffff, -1, 0},
- {0x1e44, 1963, 1},
+ {0xa762, 3225, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x1eec, 2201, 1},
+ {0x24c0, 2528, 1},
- {0x04ec, 1243, 1},
+ {0x1e60, 2011, 1},
- {0x01ec, 477, 1},
+ {0x0460, 1047, 1},
- {0x1fec, 2435, 1},
+ {0x0160, 309, 1},
+ {0xffffffff, -1, 0},
- {0x0044, 9, 1},
+ {0x2c60, 2717, 1},
- {0xa744, 3174, 1},
+ {0xff29, 3357, 1},
- {0x2164, 2453, 1},
+ {0xa760, 3222, 1},
{0xffffffff, -1, 0},
- {0xa660, 3063, 1},
+ {0xa662, 3072, 1},
- {0x1ee2, 2186, 1},
+ {0x1ee2, 2192, 1},
- {0x04e2, 1228, 1},
+ {0x04e2, 1231, 1},
{0x01e2, 462, 1},
{0x1fe2, 36, 3},
- {0x2ce2, 2882, 1},
+ {0x2ce2, 2888, 1},
- {0x2168, 2465, 1},
+ {0x042b, 984, 1},
+ {0xffffffff, -1, 0},
- {0x1ed8, 2171, 1},
+ {0x1f2b, 2288, 1},
- {0x04d8, 1213, 1},
+ {0x2c2b, 2705, 1},
- {0xa644, 3020, 1},
+ {0xa660, 3069, 1},
+ {0xffffffff, -1, 0},
- {0x1fd8, 2423, 1},
+ {0x216c, 2483, 1},
- {0x2cd8, 2867, 1},
+ {0x1eda, 2180, 1},
- {0x00d8, 147, 1},
+ {0x04da, 1219, 1},
- {0x1ede, 2180, 1},
+ {0x104bd, 3570, 1},
- {0x04de, 1222, 1},
+ {0x1fda, 2399, 1},
- {0x01de, 456, 1},
+ {0x2cda, 2876, 1},
- {0x03a5, 810, 1},
+ {0x00da, 153, 1},
- {0x2cde, 2876, 1},
+ {0x1ed8, 2177, 1},
- {0x00de, 165, 1},
+ {0x04d8, 1216, 1},
+ {0xffffffff, -1, 0},
- {0x2162, 2447, 1},
+ {0x1fd8, 2429, 1},
- {0x1ed6, 2168, 1},
+ {0x2cd8, 2873, 1},
- {0x04d6, 1210, 1},
+ {0x00d8, 147, 1},
- {0x24cf, 2567, 1},
+ {0x1cbd, 1591, 1},
- {0x1fd6, 76, 2},
+ {0xabbd, 1831, 1},
- {0x2cd6, 2864, 1},
+ {0x0546, 1411, 1},
- {0x00d6, 144, 1},
- {0xffffffff, -1, 0},
+ {0x0246, 589, 1},
- {0x104d2, 3612, 1},
+ {0x1ed6, 2174, 1},
- {0x03da, 848, 1},
+ {0x04d6, 1213, 1},
{0xffffffff, -1, 0},
- {0x1ed2, 2162, 1},
+ {0x1fd6, 76, 2},
- {0x04d2, 1204, 1},
+ {0x2cd6, 2870, 1},
- {0x2160, 2441, 1},
+ {0x00d6, 144, 1},
- {0x1fd2, 20, 3},
+ {0x104d2, 3633, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x2cd2, 2858, 1},
+ {0x1ed2, 2168, 1},
- {0x00d2, 132, 1},
+ {0x04d2, 1207, 1},
- {0x104d0, 3606, 1},
+ {0x10427, 3528, 1},
- {0x03a3, 803, 1},
- {0xffffffff, -1, 0},
+ {0x1fd2, 20, 3},
+
+ {0x2cd2, 2864, 1},
- {0x1ed0, 2159, 1},
+ {0x00d2, 132, 1},
- {0x04d0, 1201, 1},
+ {0x0427, 971, 1},
- {0x0532, 1348, 1},
+ {0x104d0, 3627, 1},
{0xffffffff, -1, 0},
- {0x2cd0, 2855, 1},
-
- {0x00d0, 126, 1},
+ {0x2c27, 2693, 1},
- {0x03a1, 799, 1},
+ {0x1ed0, 2165, 1},
- {0x104cc, 3594, 1},
+ {0x04d0, 1204, 1},
- {0x104bf, 3555, 1},
+ {0x0544, 1405, 1},
- {0x042d, 987, 1},
+ {0x0244, 694, 1},
- {0x1ecc, 2153, 1},
+ {0x2cd0, 2861, 1},
- {0x1f2d, 2288, 1},
+ {0x00d0, 126, 1},
- {0x2c2d, 2705, 1},
+ {0x03a5, 813, 1},
- {0x1fcc, 71, 2},
+ {0x104cd, 3618, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x2ccc, 2849, 1},
+ {0xff32, 3384, 1},
- {0x00cc, 114, 1},
+ {0x04cd, 1198, 1},
- {0x104cb, 3591, 1},
+ {0x01cd, 429, 1},
+ {0xffffffff, -1, 0},
- {0x03f4, 765, 1},
+ {0x104c3, 3588, 1},
- {0x1cbf, 1594, 1},
+ {0x00cd, 117, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xabbf, 1834, 1},
+ {0x04c3, 1183, 1},
- {0x04cb, 1192, 1},
+ {0x104bb, 3564, 1},
- {0x01cb, 425, 1},
+ {0x1fc3, 71, 2},
- {0x1fcb, 2390, 1},
+ {0x16e46, 3906, 1},
- {0x104c6, 3576, 1},
+ {0x00c3, 86, 1},
- {0x00cb, 111, 1},
+ {0x03a3, 806, 1},
{0xffffffff, -1, 0},
- {0x1ec6, 2144, 1},
+ {0x1fbb, 2384, 1},
- {0x03cf, 842, 1},
+ {0x104cc, 3615, 1},
- {0x104c5, 3573, 1},
+ {0x0532, 1351, 1},
- {0x1fc6, 67, 2},
-
- {0x2cc6, 2840, 1},
-
- {0x00c6, 96, 1},
+ {0x0232, 574, 1},
- {0x04c5, 1183, 1},
+ {0x1ecc, 2159, 1},
- {0x01c5, 417, 1},
+ {0xabbb, 1825, 1},
- {0x104bd, 3549, 1},
+ {0x03a1, 802, 1},
- {0x0397, 762, 1},
+ {0x1fcc, 71, 2},
- {0x00c5, 92, 1},
- {0xffffffff, -1, 0},
+ {0x2ccc, 2855, 1},
- {0x1e920, 4059, 1},
+ {0x00cc, 114, 1},
- {0xff32, 3363, 1},
+ {0x019d, 670, 1},
- {0x104bb, 3543, 1},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0x1f9d, 194, 2},
- {0x0546, 1408, 1},
+ {0x1e78, 2048, 1},
- {0x1cbd, 1588, 1},
+ {0x0478, 1084, 1},
- {0xabbd, 1828, 1},
+ {0x0178, 168, 1},
- {0x1fbb, 2378, 1},
+ {0x1c9d, 1501, 1},
- {0x019f, 673, 1},
+ {0xab9d, 1735, 1},
- {0x1f9f, 204, 2},
+ {0x10c9d, 3726, 1},
{0xffffffff, -1, 0},
- {0x16e59, 3942, 1},
-
- {0xabbb, 1822, 1},
+ {0x16e44, 3900, 1},
- {0x1c9f, 1504, 1},
+ {0xab78, 1624, 1},
- {0xab9f, 1738, 1},
+ {0x1e9b, 2011, 1},
- {0x10c9f, 3711, 1},
+ {0x10bd, 2987, 1},
+ {0xffffffff, -1, 0},
- {0x1ef0, 2207, 1},
+ {0x1f9b, 184, 2},
- {0x04f0, 1249, 1},
+ {0xff2b, 3363, 1},
+ {0xffffffff, -1, 0},
- {0x01f0, 20, 2},
+ {0x118bd, 3879, 1},
- {0x019d, 670, 1},
+ {0x1c9b, 1495, 1},
- {0x1f9d, 194, 2},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xab9b, 1729, 1},
- {0x0544, 1402, 1},
+ {0x10c9b, 3720, 1},
- {0x1c9d, 1498, 1},
+ {0x216a, 2477, 1},
- {0xab9d, 1732, 1},
-
- {0x10c9d, 3705, 1},
+ {0x24cb, 2561, 1},
{0x1e99, 42, 2},
- {0xffffffff, -1, 0},
- {0xff2f, 3354, 1},
+ {0x1e920, 4080, 1},
+ {0xffffffff, -1, 0},
{0x1f99, 174, 2},
- {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x0193, 634, 1},
+ {0x1c99, 1489, 1},
- {0x1f93, 184, 2},
+ {0xab99, 1723, 1},
- {0x1c99, 1486, 1},
+ {0x10c99, 3714, 1},
+ {0xffffffff, -1, 0},
- {0xab99, 1720, 1},
+ {0x2168, 2471, 1},
- {0x10c99, 3693, 1},
+ {0x0193, 634, 1},
- {0x1c93, 1468, 1},
+ {0x1f93, 184, 2},
- {0xab93, 1702, 1},
+ {0x1e91e, 4074, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x10c93, 3675, 1},
+ {0x1c93, 1471, 1},
- {0x0145, 270, 1},
+ {0xab93, 1705, 1},
- {0x16e46, 3885, 1},
- {0xffffffff, -1, 0},
-
- {0x0045, 12, 1},
- {0xffffffff, -1, 0},
+ {0x10c93, 3696, 1},
{0x0191, 369, 1},
{0x1f91, 174, 2},
- {0x1e91e, 4053, 1},
- {0xffffffff, -1, 0},
-
- {0x10bf, 2987, 1},
+ {0x1e912, 4038, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x1c91, 1462, 1},
+ {0x1c91, 1465, 1},
- {0xab91, 1696, 1},
+ {0xab91, 1699, 1},
- {0x10c91, 3669, 1},
+ {0x10c91, 3690, 1},
{0xffffffff, -1, 0},
- {0x118bf, 3864, 1},
- {0xffffffff, -1, 0},
+ {0x10cd, 3017, 1},
- {0x0187, 363, 1},
+ {0xff27, 3351, 1},
- {0x1f87, 164, 2},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0x1e910, 4032, 1},
- {0x16e44, 3879, 1},
+ {0x0187, 363, 1},
- {0x1c87, 1047, 1},
+ {0x1f87, 164, 2},
- {0xab87, 1666, 1},
+ {0x0055, 59, 1},
- {0x10c87, 3639, 1},
+ {0x2164, 2459, 1},
- {0x1e72, 2033, 1},
+ {0x10c3, 3005, 1},
- {0x0472, 1072, 1},
+ {0x1c87, 1050, 1},
- {0x0172, 336, 1},
+ {0xab87, 1669, 1},
- {0x0232, 574, 1},
+ {0x10c87, 3660, 1},
- {0x2c72, 2729, 1},
+ {0x0145, 270, 1},
- {0x10c5, 3005, 1},
+ {0x10bb, 2981, 1},
{0xffffffff, -1, 0},
- {0x1e912, 4017, 1},
-
- {0xab72, 1603, 1},
-
- {0x0139, 252, 1},
-
- {0x1f39, 2300, 1},
+ {0x0045, 12, 1},
- {0x10bd, 2981, 1},
+ {0x24bd, 2519, 1},
+ {0xffffffff, -1, 0},
- {0x1e66, 2015, 1},
+ {0x118bb, 3873, 1},
- {0x0466, 1054, 1},
+ {0x1e72, 2039, 1},
- {0x0166, 318, 1},
- {0xffffffff, -1, 0},
+ {0x0472, 1075, 1},
- {0x118bd, 3858, 1},
+ {0x0172, 336, 1},
- {0x10bb, 2975, 1},
+ {0x2132, 2444, 1},
- {0xa766, 3225, 1},
+ {0x2c72, 2735, 1},
- {0x1e70, 2030, 1},
+ {0x1e70, 2036, 1},
- {0x0470, 1069, 1},
+ {0x0470, 1072, 1},
{0x0170, 333, 1},
- {0x118bb, 3852, 1},
+ {0xab72, 1606, 1},
{0x2c70, 610, 1},
- {0x1edc, 2177, 1},
+ {0x1e66, 2021, 1},
- {0x04dc, 1219, 1},
+ {0x0466, 1057, 1},
- {0x03ec, 875, 1},
-
- {0xab70, 1597, 1},
-
- {0x2cdc, 2873, 1},
+ {0x0166, 318, 1},
- {0x00dc, 159, 1},
+ {0xab70, 1600, 1},
+ {0xffffffff, -1, 0},
- {0xa666, 3072, 1},
+ {0x1e3a, 1954, 1},
- {0x1e910, 4011, 1},
+ {0xa766, 3231, 1},
- {0x1e5a, 1996, 1},
+ {0x1e5a, 2002, 1},
- {0x0143, 267, 1},
+ {0x1f3a, 2309, 1},
{0x015a, 300, 1},
- {0x03e2, 860, 1},
+ {0x2162, 2453, 1},
- {0x0043, 6, 1},
+ {0xa73a, 3165, 1},
{0x005a, 74, 1},
- {0xa75a, 3207, 1},
+ {0xa75a, 3213, 1},
- {0x24cc, 2558, 1},
+ {0x03e2, 863, 1},
+ {0xffffffff, -1, 0},
- {0x24bf, 2519, 1},
+ {0x104cf, 3624, 1},
- {0x03d8, 845, 1},
- {0xffffffff, -1, 0},
+ {0x1e58, 1999, 1},
- {0x1e3a, 1948, 1},
+ {0xa666, 3078, 1},
- {0x0246, 589, 1},
- {0xffffffff, -1, 0},
+ {0x0158, 297, 1},
- {0x1f3a, 2303, 1},
+ {0x2160, 2447, 1},
- {0x03de, 854, 1},
+ {0x01cf, 432, 1},
- {0x24cb, 2555, 1},
+ {0x0058, 68, 1},
- {0xa73a, 3159, 1},
+ {0xa758, 3210, 1},
- {0xa65a, 3054, 1},
+ {0x00cf, 123, 1},
- {0x1e58, 1993, 1},
+ {0xa65a, 3060, 1},
- {0xff2d, 3348, 1},
+ {0x03da, 851, 1},
- {0x0158, 297, 1},
+ {0x24cd, 2567, 1},
- {0x03d6, 795, 1},
+ {0x1eec, 2207, 1},
- {0x24c6, 2540, 1},
+ {0x04ec, 1246, 1},
- {0x0058, 68, 1},
+ {0x01ec, 477, 1},
- {0xa758, 3204, 1},
+ {0x1fec, 2441, 1},
- {0x0141, 264, 1},
+ {0x03d8, 848, 1},
- {0x1e42, 1960, 1},
+ {0x212b, 92, 1},
- {0x24c5, 2537, 1},
+ {0x24c3, 2537, 1},
- {0x0041, 0, 1},
+ {0xa658, 3057, 1},
- {0x2166, 2459, 1},
+ {0x1edc, 2183, 1},
- {0x0244, 691, 1},
+ {0x04dc, 1222, 1},
+ {0xffffffff, -1, 0},
- {0x0042, 3, 1},
+ {0x24bb, 2513, 1},
- {0xa742, 3171, 1},
+ {0x2cdc, 2879, 1},
- {0x24bd, 2513, 1},
+ {0x00dc, 159, 1},
- {0x104ce, 3600, 1},
- {0xffffffff, -1, 0},
+ {0x03d6, 798, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xa658, 3051, 1},
+ {0x24cc, 2564, 1},
- {0x1ece, 2156, 1},
- {0xffffffff, -1, 0},
+ {0x1eea, 2204, 1},
- {0x24bb, 2507, 1},
+ {0x04ea, 1243, 1},
- {0x03d0, 745, 1},
+ {0x01ea, 474, 1},
- {0x2cce, 2852, 1},
+ {0x1fea, 2411, 1},
- {0x00ce, 120, 1},
- {0xffffffff, -1, 0},
+ {0x1ee8, 2201, 1},
- {0xa642, 3017, 1},
+ {0x04e8, 1240, 1},
- {0x1ef2, 2210, 1},
+ {0x01e8, 471, 1},
- {0x04f2, 1252, 1},
+ {0x1fe8, 2435, 1},
- {0x01f2, 483, 1},
+ {0x1ee6, 2198, 1},
- {0x1ff2, 257, 2},
+ {0x04e6, 1237, 1},
- {0x2cf2, 2891, 1},
- {0xffffffff, -1, 0},
+ {0x01e6, 468, 1},
- {0x0545, 1405, 1},
+ {0x1fe6, 88, 2},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x1eea, 2198, 1},
+ {0x03d0, 748, 1},
- {0x04ea, 1240, 1},
+ {0x1ee4, 2195, 1},
- {0x01ea, 474, 1},
+ {0x04e4, 1234, 1},
- {0x1fea, 2405, 1},
+ {0x01e4, 465, 1},
- {0x1ee8, 2195, 1},
+ {0x1fe4, 80, 2},
- {0x04e8, 1237, 1},
+ {0x104c9, 3606, 1},
- {0x01e8, 471, 1},
+ {0x104c1, 3582, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x1fe8, 2429, 1},
+ {0x04c9, 1192, 1},
- {0x1ee6, 2192, 1},
+ {0x04c1, 1180, 1},
- {0x04e6, 1234, 1},
+ {0x1fc9, 2390, 1},
- {0x01e6, 468, 1},
+ {0x1f95, 194, 2},
- {0x1fe6, 88, 2},
+ {0x00c9, 105, 1},
- {0x1f4b, 2330, 1},
+ {0x00c1, 80, 1},
{0xffffffff, -1, 0},
- {0x004b, 27, 1},
+ {0x1c95, 1477, 1},
- {0x0587, 105, 2},
+ {0xab95, 1711, 1},
- {0x1ee4, 2189, 1},
+ {0x10c95, 3702, 1},
- {0x04e4, 1231, 1},
+ {0x018b, 366, 1},
- {0x01e4, 465, 1},
+ {0x1f8b, 144, 2},
- {0x1fe4, 80, 2},
+ {0x0555, 1456, 1},
- {0x104c1, 3561, 1},
+ {0x0587, 105, 2},
- {0x1e5e, 2002, 1},
+ {0xa78b, 3267, 1},
{0xffffffff, -1, 0},
- {0x015e, 306, 1},
+ {0xab8b, 1681, 1},
- {0x04c1, 1177, 1},
+ {0x10c8b, 3672, 1},
- {0x1f83, 144, 2},
- {0xffffffff, -1, 0},
+ {0x1e76, 2045, 1},
- {0xa75e, 3213, 1},
+ {0x0476, 1081, 1},
- {0x00c1, 80, 1},
+ {0x0176, 342, 1},
- {0x1c83, 947, 1},
+ {0x0545, 1408, 1},
- {0xab83, 1654, 1},
+ {0x0245, 703, 1},
+ {0xffffffff, -1, 0},
+
+ {0x039d, 789, 1},
- {0x10c83, 3627, 1},
+ {0x1f83, 144, 2},
- {0x0539, 1369, 1},
+ {0xab76, 1618, 1},
+ {0xffffffff, -1, 0},
- {0x039f, 792, 1},
+ {0xff3a, 3408, 1},
- {0x1e7e, 2051, 1},
+ {0x1c83, 950, 1},
- {0x047e, 1090, 1},
+ {0xab83, 1657, 1},
- {0x16e45, 3882, 1},
- {0xffffffff, -1, 0},
+ {0x10c83, 3648, 1},
- {0x2c7e, 580, 1},
+ {0x0141, 264, 1},
- {0xa65e, 3060, 1},
+ {0x0181, 613, 1},
- {0xa77e, 3246, 1},
+ {0x1f81, 134, 2},
+
+ {0x0041, 0, 1},
{0xffffffff, -1, 0},
- {0xab7e, 1639, 1},
+ {0x039b, 782, 1},
- {0x03f0, 775, 1},
+ {0x1c81, 909, 1},
- {0x039d, 786, 1},
+ {0xab81, 1651, 1},
- {0x1e76, 2039, 1},
+ {0x10c81, 3642, 1},
- {0x0476, 1078, 1},
+ {0x0149, 46, 2},
- {0x0176, 342, 1},
+ {0x1f49, 2330, 1},
{0xffffffff, -1, 0},
- {0x1e5c, 1999, 1},
- {0xffffffff, -1, 0},
+ {0x0049, 4086, 1},
- {0x015c, 303, 1},
- {0xffffffff, -1, 0},
+ {0x053a, 1375, 1},
- {0xab76, 1615, 1},
+ {0x023a, 2720, 1},
- {0x0399, 770, 1},
+ {0x1e7e, 2057, 1},
- {0xa75c, 3210, 1},
+ {0x047e, 1093, 1},
- {0x0543, 1399, 1},
+ {0x0399, 773, 1},
- {0x0393, 749, 1},
+ {0x1e5e, 2008, 1},
- {0x0149, 46, 2},
+ {0x2c7e, 580, 1},
- {0x1f49, 2324, 1},
+ {0x015e, 306, 1},
- {0x1e40, 1957, 1},
+ {0xa77e, 3252, 1},
- {0x0049, 4065, 1},
+ {0x16e55, 3951, 1},
- {0x1eee, 2204, 1},
+ {0xab7e, 1642, 1},
- {0x04ee, 1246, 1},
+ {0xa75e, 3219, 1},
- {0x01ee, 480, 1},
+ {0x104d1, 3630, 1},
- {0x0345, 770, 1},
+ {0x1e5c, 2005, 1},
- {0xa740, 3168, 1},
+ {0x0393, 752, 1},
- {0xa65c, 3057, 1},
+ {0x015c, 303, 1},
+ {0xffffffff, -1, 0},
+
+ {0x01d1, 435, 1},
+
+ {0x16e45, 3903, 1},
- {0x053a, 1372, 1},
+ {0xa75c, 3216, 1},
- {0xff39, 3384, 1},
+ {0x00d1, 129, 1},
- {0x0391, 742, 1},
+ {0x10421, 3510, 1},
- {0x1e3e, 1954, 1},
+ {0x0391, 745, 1},
- {0x2183, 2489, 1},
+ {0xa65e, 3066, 1},
- {0x1e38, 1945, 1},
+ {0x1e3e, 1960, 1},
- {0x1f3e, 2315, 1},
+ {0x0421, 950, 1},
{0xffffffff, -1, 0},
- {0x1f38, 2297, 1},
+ {0x1f3e, 2321, 1},
- {0xa73e, 3165, 1},
+ {0x2c21, 2675, 1},
+ {0xffffffff, -1, 0},
+
+ {0xa73e, 3171, 1},
- {0xa640, 3014, 1},
+ {0xa65c, 3063, 1},
- {0xa738, 3156, 1},
+ {0x10c1, 2999, 1},
- {0x1e36, 1942, 1},
+ {0x1e36, 1948, 1},
- {0x0541, 1393, 1},
+ {0x1e38, 1951, 1},
{0x0136, 249, 1},
- {0x1e34, 1939, 1},
+ {0x24cf, 2573, 1},
+
+ {0x1f38, 2303, 1},
+ {0xffffffff, -1, 0},
+
+ {0xa736, 3159, 1},
+
+ {0xa738, 3162, 1},
+ {0xffffffff, -1, 0},
+
+ {0x0345, 773, 1},
+
+ {0x1e34, 1945, 1},
- {0x0542, 1396, 1},
+ {0x16e5a, 3966, 1},
{0x0134, 246, 1},
- {0xa736, 3153, 1},
+ {0x1041d, 3498, 1},
{0x013b, 255, 1},
- {0x1f3b, 2306, 1},
+ {0x1f3b, 2312, 1},
- {0xa734, 3150, 1},
- {0xffffffff, -1, 0},
-
- {0x0372, 715, 1},
+ {0xa734, 3156, 1},
- {0x10415, 3453, 1},
+ {0x041d, 937, 1},
- {0x16e43, 3876, 1},
+ {0x0372, 718, 1},
- {0x16e5a, 3945, 1},
+ {0x1f1d, 2276, 1},
- {0x042b, 981, 1},
+ {0x2c1d, 2663, 1},
- {0x0415, 910, 1},
+ {0x16e58, 3960, 1},
- {0x1f2b, 2282, 1},
+ {0x1041b, 3492, 1},
- {0x2c2b, 2699, 1},
+ {0x0370, 715, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x2c15, 2633, 1},
+ {0x041b, 931, 1},
- {0x10c1, 2993, 1},
- {0xffffffff, -1, 0},
+ {0x10419, 3486, 1},
- {0x1041d, 3477, 1},
+ {0x1f1b, 2270, 1},
- {0x0245, 700, 1},
+ {0x2c1b, 2657, 1},
{0xffffffff, -1, 0},
- {0xff3a, 3387, 1},
+ {0x0419, 925, 1},
- {0x041d, 934, 1},
+ {0x10417, 3480, 1},
- {0xfb17, 117, 2},
+ {0x1f19, 2264, 1},
+
+ {0x2c19, 2651, 1},
+ {0xffffffff, -1, 0},
- {0x1f1d, 2270, 1},
+ {0x0417, 919, 1},
- {0x2c1d, 2657, 1},
+ {0x10415, 3474, 1},
- {0x0370, 712, 1},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0x10413, 3468, 1},
- {0x16e58, 3939, 1},
+ {0x2c17, 2645, 1},
{0xffffffff, -1, 0},
- {0x03dc, 851, 1},
+ {0x0415, 913, 1},
- {0x1041b, 3471, 1},
+ {0x0413, 906, 1},
- {0x24ce, 2564, 1},
+ {0x2166, 2465, 1},
- {0x16e41, 3870, 1},
+ {0x2c15, 2639, 1},
- {0x054b, 1423, 1},
+ {0x2c13, 2633, 1},
- {0x041b, 928, 1},
+ {0x0053, 52, 1},
- {0x16e42, 3873, 1},
+ {0x03cf, 845, 1},
- {0x1f1b, 2264, 1},
+ {0x1efe, 2234, 1},
- {0x2c1b, 2651, 1},
+ {0x04fe, 1273, 1},
- {0x10419, 3465, 1},
+ {0x01fe, 499, 1},
- {0x10413, 3447, 1},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0x1040f, 3456, 1},
+ {0xffffffff, -1, 0},
- {0x0419, 922, 1},
+ {0x24c9, 2555, 1},
- {0x0413, 903, 1},
+ {0x24c1, 2531, 1},
- {0x1f19, 2258, 1},
+ {0x040f, 1044, 1},
- {0x2c19, 2645, 1},
+ {0x03ec, 878, 1},
- {0x2c13, 2627, 1},
+ {0x1f0f, 2258, 1},
- {0x1040f, 3435, 1},
+ {0x2c0f, 2621, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x1e917, 4032, 1},
- {0xffffffff, -1, 0},
+ {0x1040d, 3450, 1},
- {0x017f, 52, 1},
+ {0x0541, 1396, 1},
- {0x040f, 1041, 1},
+ {0x0241, 586, 1},
- {0x2c7f, 583, 1},
+ {0x03dc, 854, 1},
- {0x1f0f, 2252, 1},
+ {0x040d, 1038, 1},
- {0x2c0f, 2615, 1},
+ {0x1040b, 3444, 1},
- {0x1040d, 3429, 1},
+ {0x1f0d, 2252, 1},
- {0xab7f, 1642, 1},
+ {0x2c0d, 2615, 1},
{0xffffffff, -1, 0},
- {0x212b, 92, 1},
+ {0x040b, 1032, 1},
- {0x040d, 1035, 1},
+ {0x0549, 1420, 1},
- {0x1040b, 3423, 1},
+ {0x1f0b, 2246, 1},
- {0x1f0d, 2246, 1},
+ {0x2c0b, 2609, 1},
- {0x2c0d, 2609, 1},
- {0xffffffff, -1, 0},
+ {0x10409, 3438, 1},
- {0x040b, 1029, 1},
- {0xffffffff, -1, 0},
+ {0x03ea, 875, 1},
- {0x1f0b, 2240, 1},
+ {0x0139, 252, 1},
- {0x2c0b, 2603, 1},
- {0xffffffff, -1, 0},
+ {0x1f39, 2306, 1},
- {0x24c1, 2525, 1},
+ {0x0409, 1026, 1},
- {0x16e4b, 3900, 1},
+ {0x03e8, 872, 1},
- {0x10409, 3417, 1},
+ {0x1f09, 2240, 1},
- {0x10405, 3405, 1},
- {0xffffffff, -1, 0},
+ {0x2c09, 2603, 1},
- {0x0243, 354, 1},
+ {0x10405, 3426, 1},
- {0x0409, 1023, 1},
+ {0x03e6, 869, 1},
- {0x0405, 1011, 1},
+ {0xff21, 3333, 1},
- {0x1f09, 2234, 1},
+ {0x1f4b, 2336, 1},
- {0x2c09, 2597, 1},
+ {0x0405, 1014, 1},
- {0x2c05, 2585, 1},
+ {0x004b, 27, 1},
- {0x0549, 1417, 1},
+ {0x10403, 3420, 1},
- {0x10403, 3399, 1},
+ {0x2c05, 2591, 1},
- {0x16e5e, 3957, 1},
- {0xffffffff, -1, 0},
+ {0x03e4, 866, 1},
- {0x0540, 1390, 1},
+ {0x104d3, 3636, 1},
- {0x0403, 1005, 1},
+ {0x0403, 1008, 1},
- {0x023a, 2714, 1},
- {0xffffffff, -1, 0},
+ {0xff36, 3396, 1},
- {0x2c03, 2579, 1},
+ {0xff38, 3402, 1},
- {0x10401, 3393, 1},
+ {0x2c03, 2585, 1},
- {0x03ea, 872, 1},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0x01d3, 438, 1},
- {0x0401, 999, 1},
+ {0x1fd3, 25, 3},
- {0x03e8, 869, 1},
+ {0x0395, 758, 1},
- {0x053e, 1384, 1},
+ {0x00d3, 135, 1},
- {0x2c01, 2573, 1},
+ {0x0051, 46, 1},
- {0x0538, 1366, 1},
+ {0x053e, 1387, 1},
- {0x03e6, 866, 1},
+ {0x023e, 2723, 1},
- {0x0241, 586, 1},
+ {0xff34, 3390, 1},
- {0x1ef8, 2219, 1},
+ {0x16e41, 3891, 1},
- {0x04f8, 1261, 1},
+ {0x10401, 3414, 1},
- {0x01f8, 490, 1},
+ {0x1ef0, 2213, 1},
- {0x1ff8, 2399, 1},
+ {0x04f0, 1252, 1},
- {0x0536, 1360, 1},
- {0xffffffff, -1, 0},
+ {0x01f0, 20, 2},
- {0x03e4, 863, 1},
+ {0x0401, 1002, 1},
- {0x0534, 1354, 1},
- {0xffffffff, -1, 0},
+ {0x0536, 1363, 1},
+
+ {0x0538, 1369, 1},
+
+ {0x2c01, 2579, 1},
- {0x053b, 1375, 1},
+ {0x16e49, 3915, 1},
- {0x16e5c, 3951, 1},
+ {0x004f, 40, 1},
+ {0xffffffff, -1, 0},
- {0x1ef6, 2216, 1},
+ {0x0376, 721, 1},
- {0x04f6, 1258, 1},
+ {0x1eee, 2210, 1},
- {0x01f6, 372, 1},
+ {0x04ee, 1249, 1},
- {0x1ff6, 92, 2},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0x01ee, 480, 1},
- {0x16e49, 3894, 1},
+ {0x0534, 1357, 1},
{0xffffffff, -1, 0},
- {0x1f8d, 154, 2},
+ {0x053b, 1378, 1},
- {0x1e3c, 1951, 1},
+ {0x023b, 577, 1},
- {0x16e40, 3867, 1},
+ {0x16e5e, 3978, 1},
- {0xa78d, 643, 1},
+ {0x1ef8, 2225, 1},
- {0x1f3c, 2309, 1},
+ {0x04f8, 1264, 1},
- {0xab8d, 1684, 1},
+ {0x01f8, 490, 1},
+
+ {0x1ff8, 2405, 1},
- {0x10c8d, 3657, 1},
+ {0x1ed4, 2171, 1},
- {0xa73c, 3162, 1},
+ {0x04d4, 1210, 1},
{0xffffffff, -1, 0},
- {0x1e78, 2042, 1},
+ {0x16e5c, 3972, 1},
- {0x0478, 1081, 1},
+ {0x2cd4, 2867, 1},
- {0x0178, 168, 1},
+ {0x00d4, 138, 1},
- {0x1e74, 2036, 1},
+ {0x2183, 2495, 1},
- {0x0474, 1075, 1},
+ {0x1ef6, 2222, 1},
- {0x0174, 339, 1},
+ {0x04f6, 1261, 1},
- {0xff38, 3381, 1},
+ {0x01f6, 372, 1},
- {0x0376, 718, 1},
+ {0x1ff6, 92, 2},
- {0xab78, 1621, 1},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0x1f8d, 154, 2},
- {0xab74, 1609, 1},
+ {0x0147, 273, 1},
+ {0xffffffff, -1, 0},
- {0x0429, 974, 1},
+ {0xa78d, 643, 1},
- {0xff36, 3375, 1},
+ {0x0047, 18, 1},
- {0x1f29, 2276, 1},
+ {0xab8d, 1687, 1},
- {0x2c29, 2693, 1},
+ {0x10c8d, 3678, 1},
- {0xff34, 3369, 1},
- {0xffffffff, -1, 0},
+ {0x1e74, 2042, 1},
- {0x10427, 3507, 1},
+ {0x0474, 1078, 1},
- {0x10425, 3501, 1},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0x0174, 339, 1},
- {0x0427, 968, 1},
+ {0x1e3c, 1957, 1},
- {0x0425, 962, 1},
+ {0x0553, 1450, 1},
- {0x03ee, 878, 1},
+ {0x1e30, 1939, 1},
- {0x2c27, 2687, 1},
+ {0x1f3c, 2315, 1},
- {0x2c25, 2681, 1},
+ {0x0130, 261, 2},
- {0xff2b, 3342, 1},
+ {0xab74, 1612, 1},
- {0x10423, 3495, 1},
+ {0xa73c, 3168, 1},
- {0x1041f, 3483, 1},
+ {0x10425, 3522, 1},
- {0x10411, 3441, 1},
- {0xffffffff, -1, 0},
+ {0x03d1, 768, 1},
- {0x0423, 956, 1},
+ {0x10423, 3516, 1},
+ {0xffffffff, -1, 0},
- {0x041f, 941, 1},
+ {0x0425, 965, 1},
+ {0xffffffff, -1, 0},
- {0x0411, 896, 1},
+ {0x0423, 959, 1},
- {0x2c23, 2675, 1},
+ {0x2c25, 2687, 1},
- {0x2c1f, 2663, 1},
+ {0x1041f, 3504, 1},
- {0x2c11, 2621, 1},
+ {0x2c23, 2681, 1},
- {0x10407, 3411, 1},
+ {0xff39, 3405, 1},
{0xffffffff, -1, 0},
- {0x017d, 351, 1},
- {0xffffffff, -1, 0},
+ {0x041f, 944, 1},
- {0x0407, 1017, 1},
+ {0x10411, 3462, 1},
- {0x13f8, 1837, 1},
+ {0x10407, 3432, 1},
- {0xa77d, 1855, 1},
+ {0x2c1f, 2669, 1},
+ {0xffffffff, -1, 0},
- {0x2c07, 2591, 1},
+ {0x0411, 899, 1},
- {0xab7d, 1636, 1},
+ {0x0407, 1020, 1},
+ {0xffffffff, -1, 0},
- {0x017b, 348, 1},
+ {0x2c11, 2627, 1},
- {0x0179, 345, 1},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0x2c07, 2597, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xa77b, 3243, 1},
+ {0x0539, 1372, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xa779, 3240, 1},
+ {0x13f8, 1840, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xab7b, 1630, 1},
+ {0x054b, 1426, 1},
- {0xab79, 1624, 1},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0x16e53, 3945, 1},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0},
- {0x023e, 2717, 1},
+ {0x0551, 1444, 1},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x023b, 577, 1},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0x054f, 1438, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x037f, 884, 1},
+ {0x03fe, 727, 1},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x053c, 1378, 1},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0x16e4b, 3921, 1},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xff29, 3336, 1},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xff30, 3378, 1},
+ {0xffffffff, -1, 0},
- {0xff27, 3330, 1},
+ {0x16e51, 3939, 1},
+ {0xffffffff, -1, 0},
- {0xff25, 3324, 1},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0x0547, 1414, 1},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xff23, 3318, 1},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xff25, 3345, 1},
+ {0xffffffff, -1, 0},
+
+ {0xff23, 3339, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+
+ {0x053c, 1381, 1},
+
+ {0x16e4f, 3933, 1},
+ {0xffffffff, -1, 0},
+
+ {0x0230, 571, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+
+ {0xfb17, 117, 2},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+
+ {0xfb15, 113, 2},
+
+ {0xfb13, 121, 2},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+
+ {0x03f0, 778, 1},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+
+ {0x16e47, 3909, 1},
+ {0xffffffff, -1, 0},
+
+ {0x03ee, 881, 1},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+
+ {0xfb05, 29, 2},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+
+ {0xfb03, 0, 3},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xfb15, 113, 2},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0x1e921, 4083, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+
+ {0xfb01, 8, 2},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0},
- {0x1e915, 4026, 1},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
-
- {0xfb13, 121, 2},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
-
- {0x1e91d, 4050, 1},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0x1e91d, 4071, 1},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x1e91b, 4044, 1},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0x1e91b, 4065, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x1e919, 4038, 1},
+ {0x1e919, 4059, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x1e913, 4020, 1},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0x1e917, 4053, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xfb05, 29, 2},
- {0xffffffff, -1, 0},
+ {0x1e915, 4047, 1},
- {0x1e90f, 4008, 1},
+ {0x1e913, 4041, 1},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xffffffff, -1, 0},
-
- {0xfb03, 0, 3},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x1e90d, 4002, 1},
+ {0x1e90f, 4029, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x1e90b, 3996, 1},
- {0xffffffff, -1, 0},
+ {0x1e90d, 4023, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xfb01, 8, 2},
+ {0x1e90b, 4017, 1},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
-
- {0x1e909, 3990, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x1e905, 3978, 1},
+ {0x1e909, 4011, 1},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x1e903, 3972, 1},
+ {0x1e905, 3999, 1},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x1e901, 3966, 1},
+ {0x1e903, 3993, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0},
+
+ {0x1e901, 3987, 1},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
@@ -3258,15 +3278,14 @@ onigenc_unicode_unfold_key(OnigCodePoint code)
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x1e91f, 4056, 1},
+ {0x1e91f, 4077, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x1e911, 4014, 1},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0x1e911, 4035, 1},
- {0x1e907, 3984, 1}
+ {0x1e907, 4005, 1}
};
if (0 == 0)
@@ -3283,5 +3302,3 @@ onigenc_unicode_unfold_key(OnigCodePoint code)
}
return 0;
}
-
-
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_wb_data.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_wb_data.c
new file mode 100644
index 0000000000..ed7537f4d6
--- /dev/null
+++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_wb_data.c
@@ -0,0 +1,1023 @@
+/* unicode_wb_data.c: Generated by make_unicode_wb_data.py. */
+/*-
+ * Copyright (c) 2019 K.Kosako <kkosako0 AT gmail DOT com>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#define WORD_BREAK_PROPERTY_VERSION 12_1_0
+
+/*
+ALetter
+CR
+Double_Quote
+Extend
+ExtendNumLet
+Format
+Hebrew_Letter
+Katakana
+LF
+MidLetter
+MidNum
+MidNumLet
+Newline
+Numeric
+Regional_Indicator
+Single_Quote
+WSegSpace
+ZWJ
+*/
+
+static int WB_RANGE_NUM = 970;
+static WB_RANGE_TYPE WB_RANGES[] = {
+ {0x00000a, 0x00000a, WB_LF },
+ {0x00000b, 0x00000c, WB_Newline },
+ {0x00000d, 0x00000d, WB_CR },
+ {0x000020, 0x000020, WB_WSegSpace },
+ {0x000022, 0x000022, WB_Double_Quote },
+ {0x000027, 0x000027, WB_Single_Quote },
+ {0x00002c, 0x00002c, WB_MidNum },
+ {0x00002e, 0x00002e, WB_MidNumLet },
+ {0x000030, 0x000039, WB_Numeric },
+ {0x00003a, 0x00003a, WB_MidLetter },
+ {0x00003b, 0x00003b, WB_MidNum },
+ {0x000041, 0x00005a, WB_ALetter },
+ {0x00005f, 0x00005f, WB_ExtendNumLet },
+ {0x000061, 0x00007a, WB_ALetter },
+ {0x000085, 0x000085, WB_Newline },
+ {0x0000aa, 0x0000aa, WB_ALetter },
+ {0x0000ad, 0x0000ad, WB_Format },
+ {0x0000b5, 0x0000b5, WB_ALetter },
+ {0x0000b7, 0x0000b7, WB_MidLetter },
+ {0x0000ba, 0x0000ba, WB_ALetter },
+ {0x0000c0, 0x0000d6, WB_ALetter },
+ {0x0000d8, 0x0000f6, WB_ALetter },
+ {0x0000f8, 0x0002d7, WB_ALetter },
+ {0x0002de, 0x0002e4, WB_ALetter },
+ {0x0002ec, 0x0002ff, WB_ALetter },
+ {0x000300, 0x00036f, WB_Extend },
+ {0x000370, 0x000374, WB_ALetter },
+ {0x000376, 0x000377, WB_ALetter },
+ {0x00037a, 0x00037d, WB_ALetter },
+ {0x00037e, 0x00037e, WB_MidNum },
+ {0x00037f, 0x00037f, WB_ALetter },
+ {0x000386, 0x000386, WB_ALetter },
+ {0x000387, 0x000387, WB_MidLetter },
+ {0x000388, 0x00038a, WB_ALetter },
+ {0x00038c, 0x00038c, WB_ALetter },
+ {0x00038e, 0x0003a1, WB_ALetter },
+ {0x0003a3, 0x0003f5, WB_ALetter },
+ {0x0003f7, 0x000481, WB_ALetter },
+ {0x000483, 0x000489, WB_Extend },
+ {0x00048a, 0x00052f, WB_ALetter },
+ {0x000531, 0x000556, WB_ALetter },
+ {0x000559, 0x000559, WB_ALetter },
+ {0x00055b, 0x00055c, WB_ALetter },
+ {0x00055e, 0x00055e, WB_ALetter },
+ {0x000560, 0x000588, WB_ALetter },
+ {0x000589, 0x000589, WB_MidNum },
+ {0x000591, 0x0005bd, WB_Extend },
+ {0x0005bf, 0x0005bf, WB_Extend },
+ {0x0005c1, 0x0005c2, WB_Extend },
+ {0x0005c4, 0x0005c5, WB_Extend },
+ {0x0005c7, 0x0005c7, WB_Extend },
+ {0x0005d0, 0x0005ea, WB_Hebrew_Letter },
+ {0x0005ef, 0x0005f2, WB_Hebrew_Letter },
+ {0x0005f3, 0x0005f3, WB_ALetter },
+ {0x0005f4, 0x0005f4, WB_MidLetter },
+ {0x000600, 0x000605, WB_Format },
+ {0x00060c, 0x00060d, WB_MidNum },
+ {0x000610, 0x00061a, WB_Extend },
+ {0x00061c, 0x00061c, WB_Format },
+ {0x000620, 0x00064a, WB_ALetter },
+ {0x00064b, 0x00065f, WB_Extend },
+ {0x000660, 0x000669, WB_Numeric },
+ {0x00066b, 0x00066b, WB_Numeric },
+ {0x00066c, 0x00066c, WB_MidNum },
+ {0x00066e, 0x00066f, WB_ALetter },
+ {0x000670, 0x000670, WB_Extend },
+ {0x000671, 0x0006d3, WB_ALetter },
+ {0x0006d5, 0x0006d5, WB_ALetter },
+ {0x0006d6, 0x0006dc, WB_Extend },
+ {0x0006dd, 0x0006dd, WB_Format },
+ {0x0006df, 0x0006e4, WB_Extend },
+ {0x0006e5, 0x0006e6, WB_ALetter },
+ {0x0006e7, 0x0006e8, WB_Extend },
+ {0x0006ea, 0x0006ed, WB_Extend },
+ {0x0006ee, 0x0006ef, WB_ALetter },
+ {0x0006f0, 0x0006f9, WB_Numeric },
+ {0x0006fa, 0x0006fc, WB_ALetter },
+ {0x0006ff, 0x0006ff, WB_ALetter },
+ {0x00070f, 0x00070f, WB_Format },
+ {0x000710, 0x000710, WB_ALetter },
+ {0x000711, 0x000711, WB_Extend },
+ {0x000712, 0x00072f, WB_ALetter },
+ {0x000730, 0x00074a, WB_Extend },
+ {0x00074d, 0x0007a5, WB_ALetter },
+ {0x0007a6, 0x0007b0, WB_Extend },
+ {0x0007b1, 0x0007b1, WB_ALetter },
+ {0x0007c0, 0x0007c9, WB_Numeric },
+ {0x0007ca, 0x0007ea, WB_ALetter },
+ {0x0007eb, 0x0007f3, WB_Extend },
+ {0x0007f4, 0x0007f5, WB_ALetter },
+ {0x0007f8, 0x0007f8, WB_MidNum },
+ {0x0007fa, 0x0007fa, WB_ALetter },
+ {0x0007fd, 0x0007fd, WB_Extend },
+ {0x000800, 0x000815, WB_ALetter },
+ {0x000816, 0x000819, WB_Extend },
+ {0x00081a, 0x00081a, WB_ALetter },
+ {0x00081b, 0x000823, WB_Extend },
+ {0x000824, 0x000824, WB_ALetter },
+ {0x000825, 0x000827, WB_Extend },
+ {0x000828, 0x000828, WB_ALetter },
+ {0x000829, 0x00082d, WB_Extend },
+ {0x000840, 0x000858, WB_ALetter },
+ {0x000859, 0x00085b, WB_Extend },
+ {0x000860, 0x00086a, WB_ALetter },
+ {0x0008a0, 0x0008b4, WB_ALetter },
+ {0x0008b6, 0x0008bd, WB_ALetter },
+ {0x0008d3, 0x0008e1, WB_Extend },
+ {0x0008e2, 0x0008e2, WB_Format },
+ {0x0008e3, 0x000903, WB_Extend },
+ {0x000904, 0x000939, WB_ALetter },
+ {0x00093a, 0x00093c, WB_Extend },
+ {0x00093d, 0x00093d, WB_ALetter },
+ {0x00093e, 0x00094f, WB_Extend },
+ {0x000950, 0x000950, WB_ALetter },
+ {0x000951, 0x000957, WB_Extend },
+ {0x000958, 0x000961, WB_ALetter },
+ {0x000962, 0x000963, WB_Extend },
+ {0x000966, 0x00096f, WB_Numeric },
+ {0x000971, 0x000980, WB_ALetter },
+ {0x000981, 0x000983, WB_Extend },
+ {0x000985, 0x00098c, WB_ALetter },
+ {0x00098f, 0x000990, WB_ALetter },
+ {0x000993, 0x0009a8, WB_ALetter },
+ {0x0009aa, 0x0009b0, WB_ALetter },
+ {0x0009b2, 0x0009b2, WB_ALetter },
+ {0x0009b6, 0x0009b9, WB_ALetter },
+ {0x0009bc, 0x0009bc, WB_Extend },
+ {0x0009bd, 0x0009bd, WB_ALetter },
+ {0x0009be, 0x0009c4, WB_Extend },
+ {0x0009c7, 0x0009c8, WB_Extend },
+ {0x0009cb, 0x0009cd, WB_Extend },
+ {0x0009ce, 0x0009ce, WB_ALetter },
+ {0x0009d7, 0x0009d7, WB_Extend },
+ {0x0009dc, 0x0009dd, WB_ALetter },
+ {0x0009df, 0x0009e1, WB_ALetter },
+ {0x0009e2, 0x0009e3, WB_Extend },
+ {0x0009e6, 0x0009ef, WB_Numeric },
+ {0x0009f0, 0x0009f1, WB_ALetter },
+ {0x0009fc, 0x0009fc, WB_ALetter },
+ {0x0009fe, 0x0009fe, WB_Extend },
+ {0x000a01, 0x000a03, WB_Extend },
+ {0x000a05, 0x000a0a, WB_ALetter },
+ {0x000a0f, 0x000a10, WB_ALetter },
+ {0x000a13, 0x000a28, WB_ALetter },
+ {0x000a2a, 0x000a30, WB_ALetter },
+ {0x000a32, 0x000a33, WB_ALetter },
+ {0x000a35, 0x000a36, WB_ALetter },
+ {0x000a38, 0x000a39, WB_ALetter },
+ {0x000a3c, 0x000a3c, WB_Extend },
+ {0x000a3e, 0x000a42, WB_Extend },
+ {0x000a47, 0x000a48, WB_Extend },
+ {0x000a4b, 0x000a4d, WB_Extend },
+ {0x000a51, 0x000a51, WB_Extend },
+ {0x000a59, 0x000a5c, WB_ALetter },
+ {0x000a5e, 0x000a5e, WB_ALetter },
+ {0x000a66, 0x000a6f, WB_Numeric },
+ {0x000a70, 0x000a71, WB_Extend },
+ {0x000a72, 0x000a74, WB_ALetter },
+ {0x000a75, 0x000a75, WB_Extend },
+ {0x000a81, 0x000a83, WB_Extend },
+ {0x000a85, 0x000a8d, WB_ALetter },
+ {0x000a8f, 0x000a91, WB_ALetter },
+ {0x000a93, 0x000aa8, WB_ALetter },
+ {0x000aaa, 0x000ab0, WB_ALetter },
+ {0x000ab2, 0x000ab3, WB_ALetter },
+ {0x000ab5, 0x000ab9, WB_ALetter },
+ {0x000abc, 0x000abc, WB_Extend },
+ {0x000abd, 0x000abd, WB_ALetter },
+ {0x000abe, 0x000ac5, WB_Extend },
+ {0x000ac7, 0x000ac9, WB_Extend },
+ {0x000acb, 0x000acd, WB_Extend },
+ {0x000ad0, 0x000ad0, WB_ALetter },
+ {0x000ae0, 0x000ae1, WB_ALetter },
+ {0x000ae2, 0x000ae3, WB_Extend },
+ {0x000ae6, 0x000aef, WB_Numeric },
+ {0x000af9, 0x000af9, WB_ALetter },
+ {0x000afa, 0x000aff, WB_Extend },
+ {0x000b01, 0x000b03, WB_Extend },
+ {0x000b05, 0x000b0c, WB_ALetter },
+ {0x000b0f, 0x000b10, WB_ALetter },
+ {0x000b13, 0x000b28, WB_ALetter },
+ {0x000b2a, 0x000b30, WB_ALetter },
+ {0x000b32, 0x000b33, WB_ALetter },
+ {0x000b35, 0x000b39, WB_ALetter },
+ {0x000b3c, 0x000b3c, WB_Extend },
+ {0x000b3d, 0x000b3d, WB_ALetter },
+ {0x000b3e, 0x000b44, WB_Extend },
+ {0x000b47, 0x000b48, WB_Extend },
+ {0x000b4b, 0x000b4d, WB_Extend },
+ {0x000b56, 0x000b57, WB_Extend },
+ {0x000b5c, 0x000b5d, WB_ALetter },
+ {0x000b5f, 0x000b61, WB_ALetter },
+ {0x000b62, 0x000b63, WB_Extend },
+ {0x000b66, 0x000b6f, WB_Numeric },
+ {0x000b71, 0x000b71, WB_ALetter },
+ {0x000b82, 0x000b82, WB_Extend },
+ {0x000b83, 0x000b83, WB_ALetter },
+ {0x000b85, 0x000b8a, WB_ALetter },
+ {0x000b8e, 0x000b90, WB_ALetter },
+ {0x000b92, 0x000b95, WB_ALetter },
+ {0x000b99, 0x000b9a, WB_ALetter },
+ {0x000b9c, 0x000b9c, WB_ALetter },
+ {0x000b9e, 0x000b9f, WB_ALetter },
+ {0x000ba3, 0x000ba4, WB_ALetter },
+ {0x000ba8, 0x000baa, WB_ALetter },
+ {0x000bae, 0x000bb9, WB_ALetter },
+ {0x000bbe, 0x000bc2, WB_Extend },
+ {0x000bc6, 0x000bc8, WB_Extend },
+ {0x000bca, 0x000bcd, WB_Extend },
+ {0x000bd0, 0x000bd0, WB_ALetter },
+ {0x000bd7, 0x000bd7, WB_Extend },
+ {0x000be6, 0x000bef, WB_Numeric },
+ {0x000c00, 0x000c04, WB_Extend },
+ {0x000c05, 0x000c0c, WB_ALetter },
+ {0x000c0e, 0x000c10, WB_ALetter },
+ {0x000c12, 0x000c28, WB_ALetter },
+ {0x000c2a, 0x000c39, WB_ALetter },
+ {0x000c3d, 0x000c3d, WB_ALetter },
+ {0x000c3e, 0x000c44, WB_Extend },
+ {0x000c46, 0x000c48, WB_Extend },
+ {0x000c4a, 0x000c4d, WB_Extend },
+ {0x000c55, 0x000c56, WB_Extend },
+ {0x000c58, 0x000c5a, WB_ALetter },
+ {0x000c60, 0x000c61, WB_ALetter },
+ {0x000c62, 0x000c63, WB_Extend },
+ {0x000c66, 0x000c6f, WB_Numeric },
+ {0x000c80, 0x000c80, WB_ALetter },
+ {0x000c81, 0x000c83, WB_Extend },
+ {0x000c85, 0x000c8c, WB_ALetter },
+ {0x000c8e, 0x000c90, WB_ALetter },
+ {0x000c92, 0x000ca8, WB_ALetter },
+ {0x000caa, 0x000cb3, WB_ALetter },
+ {0x000cb5, 0x000cb9, WB_ALetter },
+ {0x000cbc, 0x000cbc, WB_Extend },
+ {0x000cbd, 0x000cbd, WB_ALetter },
+ {0x000cbe, 0x000cc4, WB_Extend },
+ {0x000cc6, 0x000cc8, WB_Extend },
+ {0x000cca, 0x000ccd, WB_Extend },
+ {0x000cd5, 0x000cd6, WB_Extend },
+ {0x000cde, 0x000cde, WB_ALetter },
+ {0x000ce0, 0x000ce1, WB_ALetter },
+ {0x000ce2, 0x000ce3, WB_Extend },
+ {0x000ce6, 0x000cef, WB_Numeric },
+ {0x000cf1, 0x000cf2, WB_ALetter },
+ {0x000d00, 0x000d03, WB_Extend },
+ {0x000d05, 0x000d0c, WB_ALetter },
+ {0x000d0e, 0x000d10, WB_ALetter },
+ {0x000d12, 0x000d3a, WB_ALetter },
+ {0x000d3b, 0x000d3c, WB_Extend },
+ {0x000d3d, 0x000d3d, WB_ALetter },
+ {0x000d3e, 0x000d44, WB_Extend },
+ {0x000d46, 0x000d48, WB_Extend },
+ {0x000d4a, 0x000d4d, WB_Extend },
+ {0x000d4e, 0x000d4e, WB_ALetter },
+ {0x000d54, 0x000d56, WB_ALetter },
+ {0x000d57, 0x000d57, WB_Extend },
+ {0x000d5f, 0x000d61, WB_ALetter },
+ {0x000d62, 0x000d63, WB_Extend },
+ {0x000d66, 0x000d6f, WB_Numeric },
+ {0x000d7a, 0x000d7f, WB_ALetter },
+ {0x000d82, 0x000d83, WB_Extend },
+ {0x000d85, 0x000d96, WB_ALetter },
+ {0x000d9a, 0x000db1, WB_ALetter },
+ {0x000db3, 0x000dbb, WB_ALetter },
+ {0x000dbd, 0x000dbd, WB_ALetter },
+ {0x000dc0, 0x000dc6, WB_ALetter },
+ {0x000dca, 0x000dca, WB_Extend },
+ {0x000dcf, 0x000dd4, WB_Extend },
+ {0x000dd6, 0x000dd6, WB_Extend },
+ {0x000dd8, 0x000ddf, WB_Extend },
+ {0x000de6, 0x000def, WB_Numeric },
+ {0x000df2, 0x000df3, WB_Extend },
+ {0x000e31, 0x000e31, WB_Extend },
+ {0x000e34, 0x000e3a, WB_Extend },
+ {0x000e47, 0x000e4e, WB_Extend },
+ {0x000e50, 0x000e59, WB_Numeric },
+ {0x000eb1, 0x000eb1, WB_Extend },
+ {0x000eb4, 0x000ebc, WB_Extend },
+ {0x000ec8, 0x000ecd, WB_Extend },
+ {0x000ed0, 0x000ed9, WB_Numeric },
+ {0x000f00, 0x000f00, WB_ALetter },
+ {0x000f18, 0x000f19, WB_Extend },
+ {0x000f20, 0x000f29, WB_Numeric },
+ {0x000f35, 0x000f35, WB_Extend },
+ {0x000f37, 0x000f37, WB_Extend },
+ {0x000f39, 0x000f39, WB_Extend },
+ {0x000f3e, 0x000f3f, WB_Extend },
+ {0x000f40, 0x000f47, WB_ALetter },
+ {0x000f49, 0x000f6c, WB_ALetter },
+ {0x000f71, 0x000f84, WB_Extend },
+ {0x000f86, 0x000f87, WB_Extend },
+ {0x000f88, 0x000f8c, WB_ALetter },
+ {0x000f8d, 0x000f97, WB_Extend },
+ {0x000f99, 0x000fbc, WB_Extend },
+ {0x000fc6, 0x000fc6, WB_Extend },
+ {0x00102b, 0x00103e, WB_Extend },
+ {0x001040, 0x001049, WB_Numeric },
+ {0x001056, 0x001059, WB_Extend },
+ {0x00105e, 0x001060, WB_Extend },
+ {0x001062, 0x001064, WB_Extend },
+ {0x001067, 0x00106d, WB_Extend },
+ {0x001071, 0x001074, WB_Extend },
+ {0x001082, 0x00108d, WB_Extend },
+ {0x00108f, 0x00108f, WB_Extend },
+ {0x001090, 0x001099, WB_Numeric },
+ {0x00109a, 0x00109d, WB_Extend },
+ {0x0010a0, 0x0010c5, WB_ALetter },
+ {0x0010c7, 0x0010c7, WB_ALetter },
+ {0x0010cd, 0x0010cd, WB_ALetter },
+ {0x0010d0, 0x0010fa, WB_ALetter },
+ {0x0010fc, 0x001248, WB_ALetter },
+ {0x00124a, 0x00124d, WB_ALetter },
+ {0x001250, 0x001256, WB_ALetter },
+ {0x001258, 0x001258, WB_ALetter },
+ {0x00125a, 0x00125d, WB_ALetter },
+ {0x001260, 0x001288, WB_ALetter },
+ {0x00128a, 0x00128d, WB_ALetter },
+ {0x001290, 0x0012b0, WB_ALetter },
+ {0x0012b2, 0x0012b5, WB_ALetter },
+ {0x0012b8, 0x0012be, WB_ALetter },
+ {0x0012c0, 0x0012c0, WB_ALetter },
+ {0x0012c2, 0x0012c5, WB_ALetter },
+ {0x0012c8, 0x0012d6, WB_ALetter },
+ {0x0012d8, 0x001310, WB_ALetter },
+ {0x001312, 0x001315, WB_ALetter },
+ {0x001318, 0x00135a, WB_ALetter },
+ {0x00135d, 0x00135f, WB_Extend },
+ {0x001380, 0x00138f, WB_ALetter },
+ {0x0013a0, 0x0013f5, WB_ALetter },
+ {0x0013f8, 0x0013fd, WB_ALetter },
+ {0x001401, 0x00166c, WB_ALetter },
+ {0x00166f, 0x00167f, WB_ALetter },
+ {0x001680, 0x001680, WB_WSegSpace },
+ {0x001681, 0x00169a, WB_ALetter },
+ {0x0016a0, 0x0016ea, WB_ALetter },
+ {0x0016ee, 0x0016f8, WB_ALetter },
+ {0x001700, 0x00170c, WB_ALetter },
+ {0x00170e, 0x001711, WB_ALetter },
+ {0x001712, 0x001714, WB_Extend },
+ {0x001720, 0x001731, WB_ALetter },
+ {0x001732, 0x001734, WB_Extend },
+ {0x001740, 0x001751, WB_ALetter },
+ {0x001752, 0x001753, WB_Extend },
+ {0x001760, 0x00176c, WB_ALetter },
+ {0x00176e, 0x001770, WB_ALetter },
+ {0x001772, 0x001773, WB_Extend },
+ {0x0017b4, 0x0017d3, WB_Extend },
+ {0x0017dd, 0x0017dd, WB_Extend },
+ {0x0017e0, 0x0017e9, WB_Numeric },
+ {0x00180b, 0x00180d, WB_Extend },
+ {0x00180e, 0x00180e, WB_Format },
+ {0x001810, 0x001819, WB_Numeric },
+ {0x001820, 0x001878, WB_ALetter },
+ {0x001880, 0x001884, WB_ALetter },
+ {0x001885, 0x001886, WB_Extend },
+ {0x001887, 0x0018a8, WB_ALetter },
+ {0x0018a9, 0x0018a9, WB_Extend },
+ {0x0018aa, 0x0018aa, WB_ALetter },
+ {0x0018b0, 0x0018f5, WB_ALetter },
+ {0x001900, 0x00191e, WB_ALetter },
+ {0x001920, 0x00192b, WB_Extend },
+ {0x001930, 0x00193b, WB_Extend },
+ {0x001946, 0x00194f, WB_Numeric },
+ {0x0019d0, 0x0019d9, WB_Numeric },
+ {0x001a00, 0x001a16, WB_ALetter },
+ {0x001a17, 0x001a1b, WB_Extend },
+ {0x001a55, 0x001a5e, WB_Extend },
+ {0x001a60, 0x001a7c, WB_Extend },
+ {0x001a7f, 0x001a7f, WB_Extend },
+ {0x001a80, 0x001a89, WB_Numeric },
+ {0x001a90, 0x001a99, WB_Numeric },
+ {0x001ab0, 0x001abe, WB_Extend },
+ {0x001b00, 0x001b04, WB_Extend },
+ {0x001b05, 0x001b33, WB_ALetter },
+ {0x001b34, 0x001b44, WB_Extend },
+ {0x001b45, 0x001b4b, WB_ALetter },
+ {0x001b50, 0x001b59, WB_Numeric },
+ {0x001b6b, 0x001b73, WB_Extend },
+ {0x001b80, 0x001b82, WB_Extend },
+ {0x001b83, 0x001ba0, WB_ALetter },
+ {0x001ba1, 0x001bad, WB_Extend },
+ {0x001bae, 0x001baf, WB_ALetter },
+ {0x001bb0, 0x001bb9, WB_Numeric },
+ {0x001bba, 0x001be5, WB_ALetter },
+ {0x001be6, 0x001bf3, WB_Extend },
+ {0x001c00, 0x001c23, WB_ALetter },
+ {0x001c24, 0x001c37, WB_Extend },
+ {0x001c40, 0x001c49, WB_Numeric },
+ {0x001c4d, 0x001c4f, WB_ALetter },
+ {0x001c50, 0x001c59, WB_Numeric },
+ {0x001c5a, 0x001c7d, WB_ALetter },
+ {0x001c80, 0x001c88, WB_ALetter },
+ {0x001c90, 0x001cba, WB_ALetter },
+ {0x001cbd, 0x001cbf, WB_ALetter },
+ {0x001cd0, 0x001cd2, WB_Extend },
+ {0x001cd4, 0x001ce8, WB_Extend },
+ {0x001ce9, 0x001cec, WB_ALetter },
+ {0x001ced, 0x001ced, WB_Extend },
+ {0x001cee, 0x001cf3, WB_ALetter },
+ {0x001cf4, 0x001cf4, WB_Extend },
+ {0x001cf5, 0x001cf6, WB_ALetter },
+ {0x001cf7, 0x001cf9, WB_Extend },
+ {0x001cfa, 0x001cfa, WB_ALetter },
+ {0x001d00, 0x001dbf, WB_ALetter },
+ {0x001dc0, 0x001df9, WB_Extend },
+ {0x001dfb, 0x001dff, WB_Extend },
+ {0x001e00, 0x001f15, WB_ALetter },
+ {0x001f18, 0x001f1d, WB_ALetter },
+ {0x001f20, 0x001f45, WB_ALetter },
+ {0x001f48, 0x001f4d, WB_ALetter },
+ {0x001f50, 0x001f57, WB_ALetter },
+ {0x001f59, 0x001f59, WB_ALetter },
+ {0x001f5b, 0x001f5b, WB_ALetter },
+ {0x001f5d, 0x001f5d, WB_ALetter },
+ {0x001f5f, 0x001f7d, WB_ALetter },
+ {0x001f80, 0x001fb4, WB_ALetter },
+ {0x001fb6, 0x001fbc, WB_ALetter },
+ {0x001fbe, 0x001fbe, WB_ALetter },
+ {0x001fc2, 0x001fc4, WB_ALetter },
+ {0x001fc6, 0x001fcc, WB_ALetter },
+ {0x001fd0, 0x001fd3, WB_ALetter },
+ {0x001fd6, 0x001fdb, WB_ALetter },
+ {0x001fe0, 0x001fec, WB_ALetter },
+ {0x001ff2, 0x001ff4, WB_ALetter },
+ {0x001ff6, 0x001ffc, WB_ALetter },
+ {0x002000, 0x002006, WB_WSegSpace },
+ {0x002008, 0x00200a, WB_WSegSpace },
+ {0x00200c, 0x00200c, WB_Extend },
+ {0x00200d, 0x00200d, WB_ZWJ },
+ {0x00200e, 0x00200f, WB_Format },
+ {0x002018, 0x002019, WB_MidNumLet },
+ {0x002024, 0x002024, WB_MidNumLet },
+ {0x002027, 0x002027, WB_MidLetter },
+ {0x002028, 0x002029, WB_Newline },
+ {0x00202a, 0x00202e, WB_Format },
+ {0x00202f, 0x00202f, WB_ExtendNumLet },
+ {0x00203f, 0x002040, WB_ExtendNumLet },
+ {0x002044, 0x002044, WB_MidNum },
+ {0x002054, 0x002054, WB_ExtendNumLet },
+ {0x00205f, 0x00205f, WB_WSegSpace },
+ {0x002060, 0x002064, WB_Format },
+ {0x002066, 0x00206f, WB_Format },
+ {0x002071, 0x002071, WB_ALetter },
+ {0x00207f, 0x00207f, WB_ALetter },
+ {0x002090, 0x00209c, WB_ALetter },
+ {0x0020d0, 0x0020f0, WB_Extend },
+ {0x002102, 0x002102, WB_ALetter },
+ {0x002107, 0x002107, WB_ALetter },
+ {0x00210a, 0x002113, WB_ALetter },
+ {0x002115, 0x002115, WB_ALetter },
+ {0x002119, 0x00211d, WB_ALetter },
+ {0x002124, 0x002124, WB_ALetter },
+ {0x002126, 0x002126, WB_ALetter },
+ {0x002128, 0x002128, WB_ALetter },
+ {0x00212a, 0x00212d, WB_ALetter },
+ {0x00212f, 0x002139, WB_ALetter },
+ {0x00213c, 0x00213f, WB_ALetter },
+ {0x002145, 0x002149, WB_ALetter },
+ {0x00214e, 0x00214e, WB_ALetter },
+ {0x002160, 0x002188, WB_ALetter },
+ {0x0024b6, 0x0024e9, WB_ALetter },
+ {0x002c00, 0x002c2e, WB_ALetter },
+ {0x002c30, 0x002c5e, WB_ALetter },
+ {0x002c60, 0x002ce4, WB_ALetter },
+ {0x002ceb, 0x002cee, WB_ALetter },
+ {0x002cef, 0x002cf1, WB_Extend },
+ {0x002cf2, 0x002cf3, WB_ALetter },
+ {0x002d00, 0x002d25, WB_ALetter },
+ {0x002d27, 0x002d27, WB_ALetter },
+ {0x002d2d, 0x002d2d, WB_ALetter },
+ {0x002d30, 0x002d67, WB_ALetter },
+ {0x002d6f, 0x002d6f, WB_ALetter },
+ {0x002d7f, 0x002d7f, WB_Extend },
+ {0x002d80, 0x002d96, WB_ALetter },
+ {0x002da0, 0x002da6, WB_ALetter },
+ {0x002da8, 0x002dae, WB_ALetter },
+ {0x002db0, 0x002db6, WB_ALetter },
+ {0x002db8, 0x002dbe, WB_ALetter },
+ {0x002dc0, 0x002dc6, WB_ALetter },
+ {0x002dc8, 0x002dce, WB_ALetter },
+ {0x002dd0, 0x002dd6, WB_ALetter },
+ {0x002dd8, 0x002dde, WB_ALetter },
+ {0x002de0, 0x002dff, WB_Extend },
+ {0x002e2f, 0x002e2f, WB_ALetter },
+ {0x003000, 0x003000, WB_WSegSpace },
+ {0x003005, 0x003005, WB_ALetter },
+ {0x00302a, 0x00302f, WB_Extend },
+ {0x003031, 0x003035, WB_Katakana },
+ {0x00303b, 0x00303c, WB_ALetter },
+ {0x003099, 0x00309a, WB_Extend },
+ {0x00309b, 0x00309c, WB_Katakana },
+ {0x0030a0, 0x0030fa, WB_Katakana },
+ {0x0030fc, 0x0030ff, WB_Katakana },
+ {0x003105, 0x00312f, WB_ALetter },
+ {0x003131, 0x00318e, WB_ALetter },
+ {0x0031a0, 0x0031ba, WB_ALetter },
+ {0x0031f0, 0x0031ff, WB_Katakana },
+ {0x0032d0, 0x0032fe, WB_Katakana },
+ {0x003300, 0x003357, WB_Katakana },
+ {0x00a000, 0x00a48c, WB_ALetter },
+ {0x00a4d0, 0x00a4fd, WB_ALetter },
+ {0x00a500, 0x00a60c, WB_ALetter },
+ {0x00a610, 0x00a61f, WB_ALetter },
+ {0x00a620, 0x00a629, WB_Numeric },
+ {0x00a62a, 0x00a62b, WB_ALetter },
+ {0x00a640, 0x00a66e, WB_ALetter },
+ {0x00a66f, 0x00a672, WB_Extend },
+ {0x00a674, 0x00a67d, WB_Extend },
+ {0x00a67f, 0x00a69d, WB_ALetter },
+ {0x00a69e, 0x00a69f, WB_Extend },
+ {0x00a6a0, 0x00a6ef, WB_ALetter },
+ {0x00a6f0, 0x00a6f1, WB_Extend },
+ {0x00a717, 0x00a7bf, WB_ALetter },
+ {0x00a7c2, 0x00a7c6, WB_ALetter },
+ {0x00a7f7, 0x00a801, WB_ALetter },
+ {0x00a802, 0x00a802, WB_Extend },
+ {0x00a803, 0x00a805, WB_ALetter },
+ {0x00a806, 0x00a806, WB_Extend },
+ {0x00a807, 0x00a80a, WB_ALetter },
+ {0x00a80b, 0x00a80b, WB_Extend },
+ {0x00a80c, 0x00a822, WB_ALetter },
+ {0x00a823, 0x00a827, WB_Extend },
+ {0x00a840, 0x00a873, WB_ALetter },
+ {0x00a880, 0x00a881, WB_Extend },
+ {0x00a882, 0x00a8b3, WB_ALetter },
+ {0x00a8b4, 0x00a8c5, WB_Extend },
+ {0x00a8d0, 0x00a8d9, WB_Numeric },
+ {0x00a8e0, 0x00a8f1, WB_Extend },
+ {0x00a8f2, 0x00a8f7, WB_ALetter },
+ {0x00a8fb, 0x00a8fb, WB_ALetter },
+ {0x00a8fd, 0x00a8fe, WB_ALetter },
+ {0x00a8ff, 0x00a8ff, WB_Extend },
+ {0x00a900, 0x00a909, WB_Numeric },
+ {0x00a90a, 0x00a925, WB_ALetter },
+ {0x00a926, 0x00a92d, WB_Extend },
+ {0x00a930, 0x00a946, WB_ALetter },
+ {0x00a947, 0x00a953, WB_Extend },
+ {0x00a960, 0x00a97c, WB_ALetter },
+ {0x00a980, 0x00a983, WB_Extend },
+ {0x00a984, 0x00a9b2, WB_ALetter },
+ {0x00a9b3, 0x00a9c0, WB_Extend },
+ {0x00a9cf, 0x00a9cf, WB_ALetter },
+ {0x00a9d0, 0x00a9d9, WB_Numeric },
+ {0x00a9e5, 0x00a9e5, WB_Extend },
+ {0x00a9f0, 0x00a9f9, WB_Numeric },
+ {0x00aa00, 0x00aa28, WB_ALetter },
+ {0x00aa29, 0x00aa36, WB_Extend },
+ {0x00aa40, 0x00aa42, WB_ALetter },
+ {0x00aa43, 0x00aa43, WB_Extend },
+ {0x00aa44, 0x00aa4b, WB_ALetter },
+ {0x00aa4c, 0x00aa4d, WB_Extend },
+ {0x00aa50, 0x00aa59, WB_Numeric },
+ {0x00aa7b, 0x00aa7d, WB_Extend },
+ {0x00aab0, 0x00aab0, WB_Extend },
+ {0x00aab2, 0x00aab4, WB_Extend },
+ {0x00aab7, 0x00aab8, WB_Extend },
+ {0x00aabe, 0x00aabf, WB_Extend },
+ {0x00aac1, 0x00aac1, WB_Extend },
+ {0x00aae0, 0x00aaea, WB_ALetter },
+ {0x00aaeb, 0x00aaef, WB_Extend },
+ {0x00aaf2, 0x00aaf4, WB_ALetter },
+ {0x00aaf5, 0x00aaf6, WB_Extend },
+ {0x00ab01, 0x00ab06, WB_ALetter },
+ {0x00ab09, 0x00ab0e, WB_ALetter },
+ {0x00ab11, 0x00ab16, WB_ALetter },
+ {0x00ab20, 0x00ab26, WB_ALetter },
+ {0x00ab28, 0x00ab2e, WB_ALetter },
+ {0x00ab30, 0x00ab67, WB_ALetter },
+ {0x00ab70, 0x00abe2, WB_ALetter },
+ {0x00abe3, 0x00abea, WB_Extend },
+ {0x00abec, 0x00abed, WB_Extend },
+ {0x00abf0, 0x00abf9, WB_Numeric },
+ {0x00ac00, 0x00d7a3, WB_ALetter },
+ {0x00d7b0, 0x00d7c6, WB_ALetter },
+ {0x00d7cb, 0x00d7fb, WB_ALetter },
+ {0x00fb00, 0x00fb06, WB_ALetter },
+ {0x00fb13, 0x00fb17, WB_ALetter },
+ {0x00fb1d, 0x00fb1d, WB_Hebrew_Letter },
+ {0x00fb1e, 0x00fb1e, WB_Extend },
+ {0x00fb1f, 0x00fb28, WB_Hebrew_Letter },
+ {0x00fb2a, 0x00fb36, WB_Hebrew_Letter },
+ {0x00fb38, 0x00fb3c, WB_Hebrew_Letter },
+ {0x00fb3e, 0x00fb3e, WB_Hebrew_Letter },
+ {0x00fb40, 0x00fb41, WB_Hebrew_Letter },
+ {0x00fb43, 0x00fb44, WB_Hebrew_Letter },
+ {0x00fb46, 0x00fb4f, WB_Hebrew_Letter },
+ {0x00fb50, 0x00fbb1, WB_ALetter },
+ {0x00fbd3, 0x00fd3d, WB_ALetter },
+ {0x00fd50, 0x00fd8f, WB_ALetter },
+ {0x00fd92, 0x00fdc7, WB_ALetter },
+ {0x00fdf0, 0x00fdfb, WB_ALetter },
+ {0x00fe00, 0x00fe0f, WB_Extend },
+ {0x00fe10, 0x00fe10, WB_MidNum },
+ {0x00fe13, 0x00fe13, WB_MidLetter },
+ {0x00fe14, 0x00fe14, WB_MidNum },
+ {0x00fe20, 0x00fe2f, WB_Extend },
+ {0x00fe33, 0x00fe34, WB_ExtendNumLet },
+ {0x00fe4d, 0x00fe4f, WB_ExtendNumLet },
+ {0x00fe50, 0x00fe50, WB_MidNum },
+ {0x00fe52, 0x00fe52, WB_MidNumLet },
+ {0x00fe54, 0x00fe54, WB_MidNum },
+ {0x00fe55, 0x00fe55, WB_MidLetter },
+ {0x00fe70, 0x00fe74, WB_ALetter },
+ {0x00fe76, 0x00fefc, WB_ALetter },
+ {0x00feff, 0x00feff, WB_Format },
+ {0x00ff07, 0x00ff07, WB_MidNumLet },
+ {0x00ff0c, 0x00ff0c, WB_MidNum },
+ {0x00ff0e, 0x00ff0e, WB_MidNumLet },
+ {0x00ff10, 0x00ff19, WB_Numeric },
+ {0x00ff1a, 0x00ff1a, WB_MidLetter },
+ {0x00ff1b, 0x00ff1b, WB_MidNum },
+ {0x00ff21, 0x00ff3a, WB_ALetter },
+ {0x00ff3f, 0x00ff3f, WB_ExtendNumLet },
+ {0x00ff41, 0x00ff5a, WB_ALetter },
+ {0x00ff66, 0x00ff9d, WB_Katakana },
+ {0x00ff9e, 0x00ff9f, WB_Extend },
+ {0x00ffa0, 0x00ffbe, WB_ALetter },
+ {0x00ffc2, 0x00ffc7, WB_ALetter },
+ {0x00ffca, 0x00ffcf, WB_ALetter },
+ {0x00ffd2, 0x00ffd7, WB_ALetter },
+ {0x00ffda, 0x00ffdc, WB_ALetter },
+ {0x00fff9, 0x00fffb, WB_Format },
+ {0x010000, 0x01000b, WB_ALetter },
+ {0x01000d, 0x010026, WB_ALetter },
+ {0x010028, 0x01003a, WB_ALetter },
+ {0x01003c, 0x01003d, WB_ALetter },
+ {0x01003f, 0x01004d, WB_ALetter },
+ {0x010050, 0x01005d, WB_ALetter },
+ {0x010080, 0x0100fa, WB_ALetter },
+ {0x010140, 0x010174, WB_ALetter },
+ {0x0101fd, 0x0101fd, WB_Extend },
+ {0x010280, 0x01029c, WB_ALetter },
+ {0x0102a0, 0x0102d0, WB_ALetter },
+ {0x0102e0, 0x0102e0, WB_Extend },
+ {0x010300, 0x01031f, WB_ALetter },
+ {0x01032d, 0x01034a, WB_ALetter },
+ {0x010350, 0x010375, WB_ALetter },
+ {0x010376, 0x01037a, WB_Extend },
+ {0x010380, 0x01039d, WB_ALetter },
+ {0x0103a0, 0x0103c3, WB_ALetter },
+ {0x0103c8, 0x0103cf, WB_ALetter },
+ {0x0103d1, 0x0103d5, WB_ALetter },
+ {0x010400, 0x01049d, WB_ALetter },
+ {0x0104a0, 0x0104a9, WB_Numeric },
+ {0x0104b0, 0x0104d3, WB_ALetter },
+ {0x0104d8, 0x0104fb, WB_ALetter },
+ {0x010500, 0x010527, WB_ALetter },
+ {0x010530, 0x010563, WB_ALetter },
+ {0x010600, 0x010736, WB_ALetter },
+ {0x010740, 0x010755, WB_ALetter },
+ {0x010760, 0x010767, WB_ALetter },
+ {0x010800, 0x010805, WB_ALetter },
+ {0x010808, 0x010808, WB_ALetter },
+ {0x01080a, 0x010835, WB_ALetter },
+ {0x010837, 0x010838, WB_ALetter },
+ {0x01083c, 0x01083c, WB_ALetter },
+ {0x01083f, 0x010855, WB_ALetter },
+ {0x010860, 0x010876, WB_ALetter },
+ {0x010880, 0x01089e, WB_ALetter },
+ {0x0108e0, 0x0108f2, WB_ALetter },
+ {0x0108f4, 0x0108f5, WB_ALetter },
+ {0x010900, 0x010915, WB_ALetter },
+ {0x010920, 0x010939, WB_ALetter },
+ {0x010980, 0x0109b7, WB_ALetter },
+ {0x0109be, 0x0109bf, WB_ALetter },
+ {0x010a00, 0x010a00, WB_ALetter },
+ {0x010a01, 0x010a03, WB_Extend },
+ {0x010a05, 0x010a06, WB_Extend },
+ {0x010a0c, 0x010a0f, WB_Extend },
+ {0x010a10, 0x010a13, WB_ALetter },
+ {0x010a15, 0x010a17, WB_ALetter },
+ {0x010a19, 0x010a35, WB_ALetter },
+ {0x010a38, 0x010a3a, WB_Extend },
+ {0x010a3f, 0x010a3f, WB_Extend },
+ {0x010a60, 0x010a7c, WB_ALetter },
+ {0x010a80, 0x010a9c, WB_ALetter },
+ {0x010ac0, 0x010ac7, WB_ALetter },
+ {0x010ac9, 0x010ae4, WB_ALetter },
+ {0x010ae5, 0x010ae6, WB_Extend },
+ {0x010b00, 0x010b35, WB_ALetter },
+ {0x010b40, 0x010b55, WB_ALetter },
+ {0x010b60, 0x010b72, WB_ALetter },
+ {0x010b80, 0x010b91, WB_ALetter },
+ {0x010c00, 0x010c48, WB_ALetter },
+ {0x010c80, 0x010cb2, WB_ALetter },
+ {0x010cc0, 0x010cf2, WB_ALetter },
+ {0x010d00, 0x010d23, WB_ALetter },
+ {0x010d24, 0x010d27, WB_Extend },
+ {0x010d30, 0x010d39, WB_Numeric },
+ {0x010f00, 0x010f1c, WB_ALetter },
+ {0x010f27, 0x010f27, WB_ALetter },
+ {0x010f30, 0x010f45, WB_ALetter },
+ {0x010f46, 0x010f50, WB_Extend },
+ {0x010fe0, 0x010ff6, WB_ALetter },
+ {0x011000, 0x011002, WB_Extend },
+ {0x011003, 0x011037, WB_ALetter },
+ {0x011038, 0x011046, WB_Extend },
+ {0x011066, 0x01106f, WB_Numeric },
+ {0x01107f, 0x011082, WB_Extend },
+ {0x011083, 0x0110af, WB_ALetter },
+ {0x0110b0, 0x0110ba, WB_Extend },
+ {0x0110bd, 0x0110bd, WB_Format },
+ {0x0110cd, 0x0110cd, WB_Format },
+ {0x0110d0, 0x0110e8, WB_ALetter },
+ {0x0110f0, 0x0110f9, WB_Numeric },
+ {0x011100, 0x011102, WB_Extend },
+ {0x011103, 0x011126, WB_ALetter },
+ {0x011127, 0x011134, WB_Extend },
+ {0x011136, 0x01113f, WB_Numeric },
+ {0x011144, 0x011144, WB_ALetter },
+ {0x011145, 0x011146, WB_Extend },
+ {0x011150, 0x011172, WB_ALetter },
+ {0x011173, 0x011173, WB_Extend },
+ {0x011176, 0x011176, WB_ALetter },
+ {0x011180, 0x011182, WB_Extend },
+ {0x011183, 0x0111b2, WB_ALetter },
+ {0x0111b3, 0x0111c0, WB_Extend },
+ {0x0111c1, 0x0111c4, WB_ALetter },
+ {0x0111c9, 0x0111cc, WB_Extend },
+ {0x0111d0, 0x0111d9, WB_Numeric },
+ {0x0111da, 0x0111da, WB_ALetter },
+ {0x0111dc, 0x0111dc, WB_ALetter },
+ {0x011200, 0x011211, WB_ALetter },
+ {0x011213, 0x01122b, WB_ALetter },
+ {0x01122c, 0x011237, WB_Extend },
+ {0x01123e, 0x01123e, WB_Extend },
+ {0x011280, 0x011286, WB_ALetter },
+ {0x011288, 0x011288, WB_ALetter },
+ {0x01128a, 0x01128d, WB_ALetter },
+ {0x01128f, 0x01129d, WB_ALetter },
+ {0x01129f, 0x0112a8, WB_ALetter },
+ {0x0112b0, 0x0112de, WB_ALetter },
+ {0x0112df, 0x0112ea, WB_Extend },
+ {0x0112f0, 0x0112f9, WB_Numeric },
+ {0x011300, 0x011303, WB_Extend },
+ {0x011305, 0x01130c, WB_ALetter },
+ {0x01130f, 0x011310, WB_ALetter },
+ {0x011313, 0x011328, WB_ALetter },
+ {0x01132a, 0x011330, WB_ALetter },
+ {0x011332, 0x011333, WB_ALetter },
+ {0x011335, 0x011339, WB_ALetter },
+ {0x01133b, 0x01133c, WB_Extend },
+ {0x01133d, 0x01133d, WB_ALetter },
+ {0x01133e, 0x011344, WB_Extend },
+ {0x011347, 0x011348, WB_Extend },
+ {0x01134b, 0x01134d, WB_Extend },
+ {0x011350, 0x011350, WB_ALetter },
+ {0x011357, 0x011357, WB_Extend },
+ {0x01135d, 0x011361, WB_ALetter },
+ {0x011362, 0x011363, WB_Extend },
+ {0x011366, 0x01136c, WB_Extend },
+ {0x011370, 0x011374, WB_Extend },
+ {0x011400, 0x011434, WB_ALetter },
+ {0x011435, 0x011446, WB_Extend },
+ {0x011447, 0x01144a, WB_ALetter },
+ {0x011450, 0x011459, WB_Numeric },
+ {0x01145e, 0x01145e, WB_Extend },
+ {0x01145f, 0x01145f, WB_ALetter },
+ {0x011480, 0x0114af, WB_ALetter },
+ {0x0114b0, 0x0114c3, WB_Extend },
+ {0x0114c4, 0x0114c5, WB_ALetter },
+ {0x0114c7, 0x0114c7, WB_ALetter },
+ {0x0114d0, 0x0114d9, WB_Numeric },
+ {0x011580, 0x0115ae, WB_ALetter },
+ {0x0115af, 0x0115b5, WB_Extend },
+ {0x0115b8, 0x0115c0, WB_Extend },
+ {0x0115d8, 0x0115db, WB_ALetter },
+ {0x0115dc, 0x0115dd, WB_Extend },
+ {0x011600, 0x01162f, WB_ALetter },
+ {0x011630, 0x011640, WB_Extend },
+ {0x011644, 0x011644, WB_ALetter },
+ {0x011650, 0x011659, WB_Numeric },
+ {0x011680, 0x0116aa, WB_ALetter },
+ {0x0116ab, 0x0116b7, WB_Extend },
+ {0x0116b8, 0x0116b8, WB_ALetter },
+ {0x0116c0, 0x0116c9, WB_Numeric },
+ {0x01171d, 0x01172b, WB_Extend },
+ {0x011730, 0x011739, WB_Numeric },
+ {0x011800, 0x01182b, WB_ALetter },
+ {0x01182c, 0x01183a, WB_Extend },
+ {0x0118a0, 0x0118df, WB_ALetter },
+ {0x0118e0, 0x0118e9, WB_Numeric },
+ {0x0118ff, 0x0118ff, WB_ALetter },
+ {0x0119a0, 0x0119a7, WB_ALetter },
+ {0x0119aa, 0x0119d0, WB_ALetter },
+ {0x0119d1, 0x0119d7, WB_Extend },
+ {0x0119da, 0x0119e0, WB_Extend },
+ {0x0119e1, 0x0119e1, WB_ALetter },
+ {0x0119e3, 0x0119e3, WB_ALetter },
+ {0x0119e4, 0x0119e4, WB_Extend },
+ {0x011a00, 0x011a00, WB_ALetter },
+ {0x011a01, 0x011a0a, WB_Extend },
+ {0x011a0b, 0x011a32, WB_ALetter },
+ {0x011a33, 0x011a39, WB_Extend },
+ {0x011a3a, 0x011a3a, WB_ALetter },
+ {0x011a3b, 0x011a3e, WB_Extend },
+ {0x011a47, 0x011a47, WB_Extend },
+ {0x011a50, 0x011a50, WB_ALetter },
+ {0x011a51, 0x011a5b, WB_Extend },
+ {0x011a5c, 0x011a89, WB_ALetter },
+ {0x011a8a, 0x011a99, WB_Extend },
+ {0x011a9d, 0x011a9d, WB_ALetter },
+ {0x011ac0, 0x011af8, WB_ALetter },
+ {0x011c00, 0x011c08, WB_ALetter },
+ {0x011c0a, 0x011c2e, WB_ALetter },
+ {0x011c2f, 0x011c36, WB_Extend },
+ {0x011c38, 0x011c3f, WB_Extend },
+ {0x011c40, 0x011c40, WB_ALetter },
+ {0x011c50, 0x011c59, WB_Numeric },
+ {0x011c72, 0x011c8f, WB_ALetter },
+ {0x011c92, 0x011ca7, WB_Extend },
+ {0x011ca9, 0x011cb6, WB_Extend },
+ {0x011d00, 0x011d06, WB_ALetter },
+ {0x011d08, 0x011d09, WB_ALetter },
+ {0x011d0b, 0x011d30, WB_ALetter },
+ {0x011d31, 0x011d36, WB_Extend },
+ {0x011d3a, 0x011d3a, WB_Extend },
+ {0x011d3c, 0x011d3d, WB_Extend },
+ {0x011d3f, 0x011d45, WB_Extend },
+ {0x011d46, 0x011d46, WB_ALetter },
+ {0x011d47, 0x011d47, WB_Extend },
+ {0x011d50, 0x011d59, WB_Numeric },
+ {0x011d60, 0x011d65, WB_ALetter },
+ {0x011d67, 0x011d68, WB_ALetter },
+ {0x011d6a, 0x011d89, WB_ALetter },
+ {0x011d8a, 0x011d8e, WB_Extend },
+ {0x011d90, 0x011d91, WB_Extend },
+ {0x011d93, 0x011d97, WB_Extend },
+ {0x011d98, 0x011d98, WB_ALetter },
+ {0x011da0, 0x011da9, WB_Numeric },
+ {0x011ee0, 0x011ef2, WB_ALetter },
+ {0x011ef3, 0x011ef6, WB_Extend },
+ {0x012000, 0x012399, WB_ALetter },
+ {0x012400, 0x01246e, WB_ALetter },
+ {0x012480, 0x012543, WB_ALetter },
+ {0x013000, 0x01342e, WB_ALetter },
+ {0x013430, 0x013438, WB_Format },
+ {0x014400, 0x014646, WB_ALetter },
+ {0x016800, 0x016a38, WB_ALetter },
+ {0x016a40, 0x016a5e, WB_ALetter },
+ {0x016a60, 0x016a69, WB_Numeric },
+ {0x016ad0, 0x016aed, WB_ALetter },
+ {0x016af0, 0x016af4, WB_Extend },
+ {0x016b00, 0x016b2f, WB_ALetter },
+ {0x016b30, 0x016b36, WB_Extend },
+ {0x016b40, 0x016b43, WB_ALetter },
+ {0x016b50, 0x016b59, WB_Numeric },
+ {0x016b63, 0x016b77, WB_ALetter },
+ {0x016b7d, 0x016b8f, WB_ALetter },
+ {0x016e40, 0x016e7f, WB_ALetter },
+ {0x016f00, 0x016f4a, WB_ALetter },
+ {0x016f4f, 0x016f4f, WB_Extend },
+ {0x016f50, 0x016f50, WB_ALetter },
+ {0x016f51, 0x016f87, WB_Extend },
+ {0x016f8f, 0x016f92, WB_Extend },
+ {0x016f93, 0x016f9f, WB_ALetter },
+ {0x016fe0, 0x016fe1, WB_ALetter },
+ {0x016fe3, 0x016fe3, WB_ALetter },
+ {0x01b000, 0x01b000, WB_Katakana },
+ {0x01b164, 0x01b167, WB_Katakana },
+ {0x01bc00, 0x01bc6a, WB_ALetter },
+ {0x01bc70, 0x01bc7c, WB_ALetter },
+ {0x01bc80, 0x01bc88, WB_ALetter },
+ {0x01bc90, 0x01bc99, WB_ALetter },
+ {0x01bc9d, 0x01bc9e, WB_Extend },
+ {0x01bca0, 0x01bca3, WB_Format },
+ {0x01d165, 0x01d169, WB_Extend },
+ {0x01d16d, 0x01d172, WB_Extend },
+ {0x01d173, 0x01d17a, WB_Format },
+ {0x01d17b, 0x01d182, WB_Extend },
+ {0x01d185, 0x01d18b, WB_Extend },
+ {0x01d1aa, 0x01d1ad, WB_Extend },
+ {0x01d242, 0x01d244, WB_Extend },
+ {0x01d400, 0x01d454, WB_ALetter },
+ {0x01d456, 0x01d49c, WB_ALetter },
+ {0x01d49e, 0x01d49f, WB_ALetter },
+ {0x01d4a2, 0x01d4a2, WB_ALetter },
+ {0x01d4a5, 0x01d4a6, WB_ALetter },
+ {0x01d4a9, 0x01d4ac, WB_ALetter },
+ {0x01d4ae, 0x01d4b9, WB_ALetter },
+ {0x01d4bb, 0x01d4bb, WB_ALetter },
+ {0x01d4bd, 0x01d4c3, WB_ALetter },
+ {0x01d4c5, 0x01d505, WB_ALetter },
+ {0x01d507, 0x01d50a, WB_ALetter },
+ {0x01d50d, 0x01d514, WB_ALetter },
+ {0x01d516, 0x01d51c, WB_ALetter },
+ {0x01d51e, 0x01d539, WB_ALetter },
+ {0x01d53b, 0x01d53e, WB_ALetter },
+ {0x01d540, 0x01d544, WB_ALetter },
+ {0x01d546, 0x01d546, WB_ALetter },
+ {0x01d54a, 0x01d550, WB_ALetter },
+ {0x01d552, 0x01d6a5, WB_ALetter },
+ {0x01d6a8, 0x01d6c0, WB_ALetter },
+ {0x01d6c2, 0x01d6da, WB_ALetter },
+ {0x01d6dc, 0x01d6fa, WB_ALetter },
+ {0x01d6fc, 0x01d714, WB_ALetter },
+ {0x01d716, 0x01d734, WB_ALetter },
+ {0x01d736, 0x01d74e, WB_ALetter },
+ {0x01d750, 0x01d76e, WB_ALetter },
+ {0x01d770, 0x01d788, WB_ALetter },
+ {0x01d78a, 0x01d7a8, WB_ALetter },
+ {0x01d7aa, 0x01d7c2, WB_ALetter },
+ {0x01d7c4, 0x01d7cb, WB_ALetter },
+ {0x01d7ce, 0x01d7ff, WB_Numeric },
+ {0x01da00, 0x01da36, WB_Extend },
+ {0x01da3b, 0x01da6c, WB_Extend },
+ {0x01da75, 0x01da75, WB_Extend },
+ {0x01da84, 0x01da84, WB_Extend },
+ {0x01da9b, 0x01da9f, WB_Extend },
+ {0x01daa1, 0x01daaf, WB_Extend },
+ {0x01e000, 0x01e006, WB_Extend },
+ {0x01e008, 0x01e018, WB_Extend },
+ {0x01e01b, 0x01e021, WB_Extend },
+ {0x01e023, 0x01e024, WB_Extend },
+ {0x01e026, 0x01e02a, WB_Extend },
+ {0x01e100, 0x01e12c, WB_ALetter },
+ {0x01e130, 0x01e136, WB_Extend },
+ {0x01e137, 0x01e13d, WB_ALetter },
+ {0x01e140, 0x01e149, WB_Numeric },
+ {0x01e14e, 0x01e14e, WB_ALetter },
+ {0x01e2c0, 0x01e2eb, WB_ALetter },
+ {0x01e2ec, 0x01e2ef, WB_Extend },
+ {0x01e2f0, 0x01e2f9, WB_Numeric },
+ {0x01e800, 0x01e8c4, WB_ALetter },
+ {0x01e8d0, 0x01e8d6, WB_Extend },
+ {0x01e900, 0x01e943, WB_ALetter },
+ {0x01e944, 0x01e94a, WB_Extend },
+ {0x01e94b, 0x01e94b, WB_ALetter },
+ {0x01e950, 0x01e959, WB_Numeric },
+ {0x01ee00, 0x01ee03, WB_ALetter },
+ {0x01ee05, 0x01ee1f, WB_ALetter },
+ {0x01ee21, 0x01ee22, WB_ALetter },
+ {0x01ee24, 0x01ee24, WB_ALetter },
+ {0x01ee27, 0x01ee27, WB_ALetter },
+ {0x01ee29, 0x01ee32, WB_ALetter },
+ {0x01ee34, 0x01ee37, WB_ALetter },
+ {0x01ee39, 0x01ee39, WB_ALetter },
+ {0x01ee3b, 0x01ee3b, WB_ALetter },
+ {0x01ee42, 0x01ee42, WB_ALetter },
+ {0x01ee47, 0x01ee47, WB_ALetter },
+ {0x01ee49, 0x01ee49, WB_ALetter },
+ {0x01ee4b, 0x01ee4b, WB_ALetter },
+ {0x01ee4d, 0x01ee4f, WB_ALetter },
+ {0x01ee51, 0x01ee52, WB_ALetter },
+ {0x01ee54, 0x01ee54, WB_ALetter },
+ {0x01ee57, 0x01ee57, WB_ALetter },
+ {0x01ee59, 0x01ee59, WB_ALetter },
+ {0x01ee5b, 0x01ee5b, WB_ALetter },
+ {0x01ee5d, 0x01ee5d, WB_ALetter },
+ {0x01ee5f, 0x01ee5f, WB_ALetter },
+ {0x01ee61, 0x01ee62, WB_ALetter },
+ {0x01ee64, 0x01ee64, WB_ALetter },
+ {0x01ee67, 0x01ee6a, WB_ALetter },
+ {0x01ee6c, 0x01ee72, WB_ALetter },
+ {0x01ee74, 0x01ee77, WB_ALetter },
+ {0x01ee79, 0x01ee7c, WB_ALetter },
+ {0x01ee7e, 0x01ee7e, WB_ALetter },
+ {0x01ee80, 0x01ee89, WB_ALetter },
+ {0x01ee8b, 0x01ee9b, WB_ALetter },
+ {0x01eea1, 0x01eea3, WB_ALetter },
+ {0x01eea5, 0x01eea9, WB_ALetter },
+ {0x01eeab, 0x01eebb, WB_ALetter },
+ {0x01f130, 0x01f149, WB_ALetter },
+ {0x01f150, 0x01f169, WB_ALetter },
+ {0x01f170, 0x01f189, WB_ALetter },
+ {0x01f1e6, 0x01f1ff, WB_Regional_Indicator },
+ {0x01f3fb, 0x01f3ff, WB_Extend },
+ {0x0e0001, 0x0e0001, WB_Format },
+ {0x0e0020, 0x0e007f, WB_Extend },
+ {0x0e0100, 0x0e01ef, WB_Extend }
+};
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/utf16_le.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/utf16_le.c
index b139f83ff0..535713852f 100644
--- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/utf16_le.c
+++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/utf16_le.c
@@ -2,7 +2,7 @@
utf16_le.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2019 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -95,7 +95,15 @@ static const int EncLen_UTF16[] = {
static int
utf16le_code_to_mbclen(OnigCodePoint code)
{
- return (code > 0xffff ? 4 : 2);
+ if (code > 0xffff) {
+ if (code > 0x10ffff)
+ return ONIGERR_INVALID_CODE_POINT_VALUE;
+ else
+ return 4;
+ }
+ else {
+ return 2;
+ }
}
static int
@@ -110,7 +118,16 @@ is_valid_mbc_string(const UChar* p, const UChar* end)
const UChar* end1 = end - 1;
while (p < end1) {
- p += utf16le_mbc_enc_len(p);
+ int len = utf16le_mbc_enc_len(p);
+ if (len == 4) {
+ if (p + 3 < end && ! UTF16_IS_SURROGATE_SECOND(*(p + 3)))
+ return FALSE;
+ }
+ else
+ if (UTF16_IS_SURROGATE_SECOND(*(p + 1)))
+ return FALSE;
+
+ p += len;
}
if (p != end)
@@ -184,7 +201,7 @@ utf16le_code_to_mbc(OnigCodePoint code, UChar *buf)
static int
utf16le_mbc_case_fold(OnigCaseFoldType flag,
- const UChar** pp, const UChar* end, UChar* fold)
+ const UChar** pp, const UChar* end, UChar* fold)
{
const UChar* p = *pp;
@@ -207,13 +224,13 @@ utf16le_mbc_case_fold(OnigCaseFoldType flag,
}
else
return onigenc_unicode_mbc_case_fold(ONIG_ENCODING_UTF16_LE, flag, pp, end,
- fold);
+ fold);
}
#if 0
static int
utf16le_is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp,
- const UChar* end)
+ const UChar* end)
{
const UChar* p = *pp;
@@ -252,7 +269,8 @@ utf16le_left_adjust_char_head(const UChar* start, const UChar* s)
s--;
}
- if (UTF16_IS_SURROGATE_SECOND(*(s+1)) && s > start + 1)
+ if (UTF16_IS_SURROGATE_SECOND(*(s+1)) && s > start + 1 &&
+ UTF16_IS_SURROGATE_FIRST(*(s-1)))
s -= 2;
return (UChar* )s;
@@ -263,7 +281,7 @@ utf16le_get_case_fold_codes_by_str(OnigCaseFoldType flag,
const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[])
{
return onigenc_unicode_get_case_fold_codes_by_str(ONIG_ENCODING_UTF16_LE,
- flag, p, end, items);
+ flag, p, end, items);
}
OnigEncodingType OnigEncodingUTF16_LE = {
@@ -286,6 +304,6 @@ OnigEncodingType OnigEncodingUTF16_LE = {
init,
0, /* is_initialized */
is_valid_mbc_string,
- ENC_FLAG_UNICODE,
+ ENC_FLAG_UNICODE|ENC_FLAG_SKIP_OFFSET_1,
0, 0
};
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/oniguruma.h b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/oniguruma.h
index 5f31a91c67..a2158e5cf9 100644
--- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/oniguruma.h
+++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/oniguruma.h
@@ -4,7 +4,7 @@
oniguruma.h - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2019 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -38,9 +38,9 @@ extern "C" {
#define ONIGURUMA
#define ONIGURUMA_VERSION_MAJOR 6
#define ONIGURUMA_VERSION_MINOR 9
-#define ONIGURUMA_VERSION_TEENY 0
+#define ONIGURUMA_VERSION_TEENY 3
-#define ONIGURUMA_VERSION_INT 60900
+#define ONIGURUMA_VERSION_INT 60903
#ifndef P_
#if defined(__STDC__) || defined(_WIN32)
@@ -54,6 +54,7 @@ extern "C" {
# define PV_(args) args
#endif
+#ifndef ONIG_STATIC
#ifndef ONIG_EXTERN
#if defined(_WIN32) && !defined(__GNUC__)
#if defined(ONIGURUMA_EXPORT)
@@ -67,6 +68,9 @@ extern "C" {
#ifndef ONIG_EXTERN
#define ONIG_EXTERN extern
#endif
+#else
+#define ONIG_EXTERN extern
+#endif
/* PART: character encoding */
@@ -387,8 +391,10 @@ typedef unsigned int OnigOptionType;
#define ONIG_OPTION_DIGIT_IS_ASCII (ONIG_OPTION_WORD_IS_ASCII << 1)
#define ONIG_OPTION_SPACE_IS_ASCII (ONIG_OPTION_DIGIT_IS_ASCII << 1)
#define ONIG_OPTION_POSIX_IS_ASCII (ONIG_OPTION_SPACE_IS_ASCII << 1)
+#define ONIG_OPTION_TEXT_SEGMENT_EXTENDED_GRAPHEME_CLUSTER (ONIG_OPTION_POSIX_IS_ASCII << 1)
+#define ONIG_OPTION_TEXT_SEGMENT_WORD (ONIG_OPTION_TEXT_SEGMENT_EXTENDED_GRAPHEME_CLUSTER << 1)
-#define ONIG_OPTION_MAXBIT ONIG_OPTION_POSIX_IS_ASCII /* limit */
+#define ONIG_OPTION_MAXBIT ONIG_OPTION_TEXT_SEGMENT_WORD /* limit */
#define ONIG_OPTION_ON(options,regopt) ((options) |= (regopt))
#define ONIG_OPTION_OFF(options,regopt) ((options) &= ~(regopt))
@@ -492,10 +498,12 @@ ONIG_EXTERN OnigSyntaxType* OnigDefaultSyntax;
#define ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE (1U<<23) /* \R \r\n else [\x0a-\x0d] */
#define ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT (1U<<24) /* \N (?-m:.), \O (?m:.) */
#define ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP (1U<<25) /* (?~...) */
-#define ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER (1U<<26) /* \X \y \Y */
+#define ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER (1U<<26) /* obsoleted: use next */
+#define ONIG_SYN_OP2_ESC_X_Y_TEXT_SEGMENT (1U<<26) /* \X \y \Y */
#define ONIG_SYN_OP2_QMARK_PERL_SUBEXP_CALL (1U<<27) /* (?R), (?&name)... */
#define ONIG_SYN_OP2_QMARK_BRACE_CALLOUT_CONTENTS (1U<<28) /* (?{...}) (?{{...}}) */
#define ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME (1U<<29) /* (*name) (*name{a,..}) */
+#define ONIG_SYN_OP2_OPTION_ONIGURUMA (1U<<30) /* (?imxWDSPy) */
/* syntax (behavior) */
#define ONIG_SYN_CONTEXT_INDEP_ANCHORS (1U<<31) /* not implemented */
@@ -515,6 +523,7 @@ ONIG_EXTERN OnigSyntaxType* OnigDefaultSyntax;
#define ONIG_SYN_BACKSLASH_ESCAPE_IN_CC (1U<<21) /* [..\w..] etc.. */
#define ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC (1U<<22)
#define ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC (1U<<23) /* [0-9-a]=[0-9\-a] */
+#define ONIG_SYN_ALLOW_INVALID_CODE_END_OF_RANGE_IN_CC (1U<<26)
/* syntax (behavior) warning */
#define ONIG_SYN_WARN_CC_OP_NOT_ESCAPED (1U<<24) /* [,-,] */
#define ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT (1U<<25) /* (?:a*)+ */
@@ -764,6 +773,8 @@ int onig_init P_((void));
ONIG_EXTERN
int EFIAPI onig_error_code_to_str PV_((OnigUChar* s, int err_code, ...));
ONIG_EXTERN
+int onig_is_error_code_needs_param PV_((int code));
+ONIG_EXTERN
void onig_set_warn_func P_((OnigWarnFunc f));
ONIG_EXTERN
void onig_set_verb_warn_func P_((OnigWarnFunc f));
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regenc.h b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regenc.h
index 46a51421e9..fc0e96bc61 100644
--- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regenc.h
+++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regenc.h
@@ -4,7 +4,7 @@
regenc.h - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2019 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -114,6 +114,7 @@ struct PropertyNameCtype {
/* #define USE_CRNL_AS_LINE_TERMINATOR */
#define USE_UNICODE_PROPERTIES
#define USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER
+#define USE_UNICODE_WORD_BREAK
/* #define USE_UNICODE_CASE_FOLD_TURKISH_AZERI */
/* #define USE_UNICODE_ALL_LINE_TERMINATORS */ /* see Unicode.org UTS #18 */
@@ -121,8 +122,20 @@ struct PropertyNameCtype {
#define ONIG_ENCODING_INIT_DEFAULT ONIG_ENCODING_ASCII
+#define ENC_SKIP_OFFSET_1_OR_0 7
+
#define ENC_FLAG_ASCII_COMPATIBLE (1<<0)
#define ENC_FLAG_UNICODE (1<<1)
+#define ENC_FLAG_SKIP_OFFSET_MASK (7<<2)
+#define ENC_FLAG_SKIP_OFFSET_0 0
+#define ENC_FLAG_SKIP_OFFSET_1 (1<<2)
+#define ENC_FLAG_SKIP_OFFSET_2 (2<<2)
+#define ENC_FLAG_SKIP_OFFSET_3 (3<<2)
+#define ENC_FLAG_SKIP_OFFSET_4 (4<<2)
+#define ENC_FLAG_SKIP_OFFSET_1_OR_0 (ENC_SKIP_OFFSET_1_OR_0<<2)
+
+#define ENC_GET_SKIP_OFFSET(enc) \
+ (((enc)->flag & ENC_FLAG_SKIP_OFFSET_MASK)>>2)
/* for encoding system implementation (internal) */
@@ -162,15 +175,19 @@ extern int onigenc_mb4_is_code_ctype P_((OnigEncoding enc, OnigCodePoint code, u
extern struct PropertyNameCtype* onigenc_euc_jp_lookup_property_name P_((register const char *str, register size_t len));
extern struct PropertyNameCtype* onigenc_sjis_lookup_property_name P_((register const char *str, register size_t len));
-/* in enc/unicode.c */
+/* in unicode.c */
extern int onigenc_unicode_is_code_ctype P_((OnigCodePoint code, unsigned int ctype));
extern int onigenc_utf16_32_get_ctype_code_range P_((OnigCtype ctype, OnigCodePoint *sb_out, const OnigCodePoint* ranges[]));
extern int onigenc_unicode_ctype_code_range P_((OnigCtype ctype, const OnigCodePoint* ranges[]));
extern int onigenc_unicode_get_case_fold_codes_by_str P_((OnigEncoding enc, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]));
extern int onigenc_unicode_mbc_case_fold P_((OnigEncoding enc, OnigCaseFoldType flag, const UChar** pp, const UChar* end, UChar* fold));
extern int onigenc_unicode_apply_all_case_fold P_((OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg));
+
extern int onigenc_egcb_is_break_position P_((OnigEncoding enc, UChar* p, UChar* prev, const UChar* start, const UChar* end));
+#ifdef USE_UNICODE_WORD_BREAK
+extern int onigenc_wb_is_break_position P_((OnigEncoding enc, UChar* p, UChar* prev, const UChar* start, const UChar* end));
+#endif
#define UTF16_IS_SURROGATE_FIRST(c) (((c) & 0xfc) == 0xd8)
#define UTF16_IS_SURROGATE_SECOND(c) (((c) & 0xfc) == 0xdc)
@@ -252,7 +269,7 @@ extern const unsigned short OnigEncAsciiCtypeTable[];
#define ONIGENC_IS_ASCII_CODE_CASE_AMBIG(code) \
(ONIGENC_IS_ASCII_CODE_CTYPE(code, ONIGENC_CTYPE_UPPER) ||\
ONIGENC_IS_ASCII_CODE_CTYPE(code, ONIGENC_CTYPE_LOWER))
-
+
#define ONIGENC_IS_UNICODE_ENCODING(enc) \
(((enc)->flag & ENC_FLAG_UNICODE) != 0)
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regint.h b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regint.h
index acfd1792ef..87704f2be8 100644
--- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regint.h
+++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regint.h
@@ -4,7 +4,7 @@
regint.h - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2019 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -54,43 +54,36 @@
#define PLATFORM_UNALIGNED_WORD_ACCESS
#endif
+#ifdef __GNUC__
+#define USE_GOTO_LABELS_AS_VALUES
+#endif
+
/* config */
/* spec. config */
#define USE_CALL
#define USE_CALLOUT
#define USE_BACKREF_WITH_LEVEL /* \k<name+n>, \k<name-n> */
-#define USE_INSISTENT_CHECK_CAPTURES_IN_EMPTY_REPEAT /* /(?:()|())*\2/ */
+#define USE_STUBBORN_CHECK_CAPTURES_IN_EMPTY_REPEAT /* /(?:()|())*\2/ */
#define USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE /* /\n$/ =~ "\n" */
#define USE_WARNING_REDUNDANT_NESTED_REPEAT_OPERATOR
-
#define USE_RETRY_LIMIT_IN_MATCH
+#ifdef USE_GOTO_LABELS_AS_VALUES
+#define USE_THREADED_CODE
+#define USE_DIRECT_THREADED_CODE
+#endif
/* internal config */
#define USE_OP_PUSH_OR_JUMP_EXACT
#define USE_QUANT_PEEK_NEXT
#define USE_ST_LIBRARY
-#include "regenc.h"
-
-#ifdef __cplusplus
-# ifndef HAVE_STDARG_PROTOTYPES
-# define HAVE_STDARG_PROTOTYPES 1
-# endif
-#endif
-
-/* escape Mac OS X/Xcode 2.4/gcc 4.0.1 problem */
-#if defined(__APPLE__) && defined(__GNUC__) && __GNUC__ >= 4
-# ifndef HAVE_STDARG_PROTOTYPES
-# define HAVE_STDARG_PROTOTYPES 1
-# endif
-#endif
-
-#ifdef HAVE_STDARG_H
-# ifndef HAVE_STDARG_PROTOTYPES
-# define HAVE_STDARG_PROTOTYPES 1
-# endif
-#endif
+#define USE_WORD_BEGIN_END /* "\<", "\>" */
+#define USE_CAPTURE_HISTORY
+#define USE_VARIABLE_META_CHARS
+#define USE_POSIX_API_REGION_OPTION
+#define USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE
+#include "regenc.h"
#define INIT_MATCH_STACK_SIZE 160
#define DEFAULT_MATCH_STACK_LIMIT_SIZE 0 /* unlimited */
@@ -103,12 +96,6 @@
#undef ONIG_ESCAPE_UCHAR_COLLISION
#endif
-#define USE_WORD_BEGIN_END /* "\<", "\>" */
-#define USE_CAPTURE_HISTORY
-#define USE_VARIABLE_META_CHARS
-#define USE_POSIX_API_REGION_OPTION
-#define USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE
-
#define xmalloc malloc
#define xrealloc realloc
#define xcalloc calloc
@@ -150,17 +137,10 @@
#define xstrcat(dest,src,size) strcat(dest,src)
#endif
-
-// #include <stddef.h>
-
-#ifdef HAVE_LIMITS_H
-#include <limits.h>
-#endif
-
#if 0
-#ifdef HAVE_STDLIB_H
+#include <stddef.h>
+#include <limits.h>
#include <stdlib.h>
-#endif
#ifdef HAVE_STDINT_H
#include <stdint.h>
@@ -170,11 +150,7 @@
#include <alloca.h>
#endif
-#ifdef HAVE_STRING_H
-# include <string.h>
-#else
-# include <strings.h>
-#endif
+#include <string.h>
#include <ctype.h>
#ifdef HAVE_SYS_TYPES_H
@@ -226,6 +202,7 @@ typedef UINTN uintptr_t;
#define CHECK_NULL_RETURN_MEMERR(p) if (IS_NULL(p)) return ONIGERR_MEMORY
#define NULL_UCHARP ((UChar* )0)
+#define CHAR_MAP_SIZE 256
#define INFINITE_LEN ONIG_INFINITE_DISTANCE
#ifdef PLATFORM_UNALIGNED_WORD_ACCESS
@@ -290,64 +267,6 @@ typedef struct {
#endif
-typedef struct {
- const UChar* pattern;
- const UChar* pattern_end;
-#ifdef USE_CALLOUT
- void* tag_table;
- int callout_num;
- int callout_list_alloc;
- CalloutListEntry* callout_list; /* index: callout num */
-#endif
-} RegexExt;
-
-#define REG_EXTP(reg) ((RegexExt* )((reg)->chain))
-#define REG_EXTPL(reg) ((reg)->chain)
-
-struct re_pattern_buffer {
- /* common members of BBuf(bytes-buffer) */
- unsigned char* p; /* compiled pattern */
- unsigned int used; /* used space for p */
- unsigned int alloc; /* allocated space for p */
-
- int num_mem; /* used memory(...) num counted from 1 */
- int num_repeat; /* OP_REPEAT/OP_REPEAT_NG id-counter */
- int num_null_check; /* OP_EMPTY_CHECK_START/END id counter */
- int num_comb_exp_check; /* no longer used (combination explosion check) */
- int num_call; /* number of subexp call */
- unsigned int capture_history; /* (?@...) flag (1-31) */
- unsigned int bt_mem_start; /* need backtrack flag */
- unsigned int bt_mem_end; /* need backtrack flag */
- int stack_pop_level;
- int repeat_range_alloc;
- OnigRepeatRange* repeat_range;
-
- OnigEncoding enc;
- OnigOptionType options;
- OnigSyntaxType* syntax;
- OnigCaseFoldType case_fold_flag;
- void* name_table;
-
- /* optimization info (string search, char-map and anchors) */
- int optimize; /* optimize flag */
- int threshold_len; /* search str-length for apply optimize */
- int anchor; /* BEGIN_BUF, BEGIN_POS, (SEMI_)END_BUF */
- OnigLen anchor_dmin; /* (SEMI_)END_BUF anchor distance */
- OnigLen anchor_dmax; /* (SEMI_)END_BUF anchor distance */
- int sub_anchor; /* start-anchor for exact or map */
- unsigned char *exact;
- unsigned char *exact_end;
- unsigned char map[ONIG_CHAR_TABLE_SIZE]; /* used as BM skip or char-map */
- int *int_map; /* BM skip for exact_len > 255 */
- int *int_map_backward; /* BM skip for backward search */
- OnigLen dmin; /* min-distance of exact or map */
- OnigLen dmax; /* max-distance of exact or map */
-
- /* regex_t link chain */
- struct re_pattern_buffer* chain; /* escape compile-conflict */
-};
-
-
/* stack pop level */
enum StackPopLevel {
STACK_POP_LEVEL_FREE = 0,
@@ -357,12 +276,13 @@ enum StackPopLevel {
/* optimize flags */
enum OptimizeType {
- OPTIMIZE_NONE = 0,
- OPTIMIZE_EXACT = 1, /* Slow Search */
- OPTIMIZE_EXACT_BM = 2, /* Boyer Moore Search */
- OPTIMIZE_EXACT_BM_NO_REV = 3, /* BM (but not simple match) */
- OPTIMIZE_EXACT_IC = 4, /* Slow Search (ignore case) */
- OPTIMIZE_MAP = 5 /* char map */
+ OPTIMIZE_NONE = 0,
+ OPTIMIZE_STR, /* Slow Search */
+ OPTIMIZE_STR_FAST, /* Sunday quick search / BMH */
+ OPTIMIZE_STR_FAST_STEP_FORWARD, /* Sunday quick search / BMH */
+ OPTIMIZE_STR_CASE_FOLD_FAST, /* Sunday quick search / BMH (ignore case) */
+ OPTIMIZE_STR_CASE_FOLD, /* Slow Search (ignore case) */
+ OPTIMIZE_MAP /* char map */
};
/* bit status */
@@ -436,8 +356,8 @@ typedef unsigned int MemStatusType;
#define DISABLE_CASE_FOLD_MULTI_CHAR(case_fold_flag) \
((case_fold_flag) & ~INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR)
-#define REPEAT_INFINITE -1
-#define IS_REPEAT_INFINITE(n) ((n) == REPEAT_INFINITE)
+#define INFINITE_REPEAT -1
+#define IS_INFINITE_REPEAT(n) ((n) == INFINITE_REPEAT)
/* bitset */
#define BITS_PER_BYTE 8
@@ -475,7 +395,7 @@ typedef struct _BBuf {
unsigned int alloc;
} BBuf;
-#define BB_INIT(buf,size) onig_bbuf_init((BBuf* )(buf), (size))
+#define BB_INIT(buf,size) bbuf_init((BBuf* )(buf), (size))
#define BB_SIZE_INC(buf,inc) do{\
(buf)->alloc += (inc);\
@@ -551,32 +471,32 @@ typedef struct _BBuf {
/* has body */
-#define ANCHOR_PREC_READ (1<<0)
-#define ANCHOR_PREC_READ_NOT (1<<1)
-#define ANCHOR_LOOK_BEHIND (1<<2)
-#define ANCHOR_LOOK_BEHIND_NOT (1<<3)
+#define ANCR_PREC_READ (1<<0)
+#define ANCR_PREC_READ_NOT (1<<1)
+#define ANCR_LOOK_BEHIND (1<<2)
+#define ANCR_LOOK_BEHIND_NOT (1<<3)
/* no body */
-#define ANCHOR_BEGIN_BUF (1<<4)
-#define ANCHOR_BEGIN_LINE (1<<5)
-#define ANCHOR_BEGIN_POSITION (1<<6)
-#define ANCHOR_END_BUF (1<<7)
-#define ANCHOR_SEMI_END_BUF (1<<8)
-#define ANCHOR_END_LINE (1<<9)
-#define ANCHOR_WORD_BOUNDARY (1<<10)
-#define ANCHOR_NO_WORD_BOUNDARY (1<<11)
-#define ANCHOR_WORD_BEGIN (1<<12)
-#define ANCHOR_WORD_END (1<<13)
-#define ANCHOR_ANYCHAR_INF (1<<14)
-#define ANCHOR_ANYCHAR_INF_ML (1<<15)
-#define ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY (1<<16)
-#define ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY (1<<17)
-
-
-#define ANCHOR_HAS_BODY(a) ((a)->type < ANCHOR_BEGIN_BUF)
+#define ANCR_BEGIN_BUF (1<<4)
+#define ANCR_BEGIN_LINE (1<<5)
+#define ANCR_BEGIN_POSITION (1<<6)
+#define ANCR_END_BUF (1<<7)
+#define ANCR_SEMI_END_BUF (1<<8)
+#define ANCR_END_LINE (1<<9)
+#define ANCR_WORD_BOUNDARY (1<<10)
+#define ANCR_NO_WORD_BOUNDARY (1<<11)
+#define ANCR_WORD_BEGIN (1<<12)
+#define ANCR_WORD_END (1<<13)
+#define ANCR_ANYCHAR_INF (1<<14)
+#define ANCR_ANYCHAR_INF_ML (1<<15)
+#define ANCR_TEXT_SEGMENT_BOUNDARY (1<<16)
+#define ANCR_NO_TEXT_SEGMENT_BOUNDARY (1<<17)
+
+
+#define ANCHOR_HAS_BODY(a) ((a)->type < ANCR_BEGIN_BUF)
#define IS_WORD_ANCHOR_TYPE(type) \
- ((type) == ANCHOR_WORD_BOUNDARY || (type) == ANCHOR_NO_WORD_BOUNDARY || \
- (type) == ANCHOR_WORD_BEGIN || (type) == ANCHOR_WORD_END)
+ ((type) == ANCR_WORD_BOUNDARY || (type) == ANCR_NO_WORD_BOUNDARY || \
+ (type) == ANCR_WORD_BEGIN || (type) == ANCR_WORD_END)
/* operation code */
enum OpCode {
@@ -605,9 +525,6 @@ enum OpCode {
OP_CCLASS_NOT,
OP_CCLASS_MB_NOT,
OP_CCLASS_MIX_NOT,
-#ifdef USE_OP_CCLASS_NODE
- OP_CCLASS_NODE, /* pointer to CClassNode node */
-#endif
OP_ANYCHAR, /* "." */
OP_ANYCHAR_ML, /* "." multi-line */
@@ -625,8 +542,7 @@ enum OpCode {
OP_WORD_BEGIN,
OP_WORD_END,
- OP_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY,
- OP_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY,
+ OP_TEXT_SEGMENT_BOUNDARY,
OP_BEGIN_BUF,
OP_END_BUF,
@@ -642,6 +558,7 @@ enum OpCode {
OP_BACKREF_MULTI,
OP_BACKREF_MULTI_IC,
OP_BACKREF_WITH_LEVEL, /* \k<xxx+n>, \k<xxx-n> */
+ OP_BACKREF_WITH_LEVEL_IC, /* \k<xxx+n>, \k<xxx-n> */
OP_BACKREF_CHECK, /* (?(n)), (?('name')) */
OP_BACKREF_CHECK_WITH_LEVEL, /* (?(n-level)), (?('name-level')) */
@@ -657,7 +574,9 @@ enum OpCode {
OP_PUSH,
OP_PUSH_SUPER,
OP_POP_OUT,
+#ifdef USE_OP_PUSH_OR_JUMP_EXACT
OP_PUSH_OR_JUMP_EXACT1, /* if match exact then push, else jump. */
+#endif
OP_PUSH_IF_PEEK_NEXT, /* if match exact then push, else none. */
OP_REPEAT, /* {n,m} */
OP_REPEAT_NG, /* {n,m}? (non greedy) */
@@ -704,6 +623,11 @@ enum UpdateVarType {
UPDATE_VAR_RIGHT_RANGE_INIT = 4,
};
+enum TextSegmentBoundaryType {
+ EXTENDED_GRAPHEME_CLUSTER_BOUNDARY = 0,
+ WORD_BOUNDARY = 1,
+};
+
typedef int RelAddrType;
typedef int AbsAddrType;
typedef int LengthType;
@@ -747,13 +671,16 @@ typedef int ModeType;
/* op-code + arg size */
+#if 0
#define SIZE_OP_ANYCHAR_STAR SIZE_OPCODE
#define SIZE_OP_ANYCHAR_STAR_PEEK_NEXT (SIZE_OPCODE + 1)
#define SIZE_OP_JUMP (SIZE_OPCODE + SIZE_RELADDR)
#define SIZE_OP_PUSH (SIZE_OPCODE + SIZE_RELADDR)
#define SIZE_OP_PUSH_SUPER (SIZE_OPCODE + SIZE_RELADDR)
#define SIZE_OP_POP_OUT SIZE_OPCODE
+#ifdef USE_OP_PUSH_OR_JUMP_EXACT
#define SIZE_OP_PUSH_OR_JUMP_EXACT1 (SIZE_OPCODE + SIZE_RELADDR + 1)
+#endif
#define SIZE_OP_PUSH_IF_PEEK_NEXT (SIZE_OPCODE + SIZE_RELADDR + 1)
#define SIZE_OP_REPEAT_INC (SIZE_OPCODE + SIZE_MEMNUM)
#define SIZE_OP_REPEAT_INC_NG (SIZE_OPCODE + SIZE_MEMNUM)
@@ -786,6 +713,56 @@ typedef int ModeType;
#define SIZE_OP_CALLOUT_NAME (SIZE_OPCODE + SIZE_MEMNUM + SIZE_MEMNUM)
#endif
+#else /* if 0 */
+
+/* for relative address increment to go next op. */
+#define SIZE_INC_OP 1
+
+#define SIZE_OP_ANYCHAR_STAR 1
+#define SIZE_OP_ANYCHAR_STAR_PEEK_NEXT 1
+#define SIZE_OP_JUMP 1
+#define SIZE_OP_PUSH 1
+#define SIZE_OP_PUSH_SUPER 1
+#define SIZE_OP_POP_OUT 1
+#ifdef USE_OP_PUSH_OR_JUMP_EXACT
+#define SIZE_OP_PUSH_OR_JUMP_EXACT1 1
+#endif
+#define SIZE_OP_PUSH_IF_PEEK_NEXT 1
+#define SIZE_OP_REPEAT 1
+#define SIZE_OP_REPEAT_INC 1
+#define SIZE_OP_REPEAT_INC_NG 1
+#define SIZE_OP_WORD_BOUNDARY 1
+#define SIZE_OP_PREC_READ_START 1
+#define SIZE_OP_PREC_READ_NOT_START 1
+#define SIZE_OP_PREC_READ_END 1
+#define SIZE_OP_PREC_READ_NOT_END 1
+#define SIZE_OP_BACKREF 1
+#define SIZE_OP_FAIL 1
+#define SIZE_OP_MEMORY_START 1
+#define SIZE_OP_MEMORY_START_PUSH 1
+#define SIZE_OP_MEMORY_END_PUSH 1
+#define SIZE_OP_MEMORY_END_PUSH_REC 1
+#define SIZE_OP_MEMORY_END 1
+#define SIZE_OP_MEMORY_END_REC 1
+#define SIZE_OP_ATOMIC_START 1
+#define SIZE_OP_ATOMIC_END 1
+#define SIZE_OP_EMPTY_CHECK_START 1
+#define SIZE_OP_EMPTY_CHECK_END 1
+#define SIZE_OP_LOOK_BEHIND 1
+#define SIZE_OP_LOOK_BEHIND_NOT_START 1
+#define SIZE_OP_LOOK_BEHIND_NOT_END 1
+#define SIZE_OP_CALL 1
+#define SIZE_OP_RETURN 1
+#define SIZE_OP_PUSH_SAVE_VAL 1
+#define SIZE_OP_UPDATE_VAR 1
+
+#ifdef USE_CALLOUT
+#define SIZE_OP_CALLOUT_CONTENTS 1
+#define SIZE_OP_CALLOUT_NAME 1
+#endif
+#endif /* if 0 */
+
+
#define MC_ESC(syn) (syn)->meta_char_table.esc
#define MC_ANYCHAR(syn) (syn)->meta_char_table.anychar
#define MC_ANYTIME(syn) (syn)->meta_char_table.anytime
@@ -837,8 +814,186 @@ typedef int ModeType;
#define NCCLASS_CLEAR_NOT(nd) NCCLASS_FLAG_CLEAR(nd, FLAG_NCCLASS_NOT)
#define IS_NCCLASS_NOT(nd) IS_NCCLASS_FLAG_ON(nd, FLAG_NCCLASS_NOT)
-extern void onig_add_end_call(void (*func)(void));
+typedef struct {
+#ifdef USE_DIRECT_THREADED_CODE
+ const void* opaddr;
+#else
+ enum OpCode opcode;
+#endif
+ union {
+ struct {
+ UChar s[16]; /* Now used first 7 bytes only. */
+ } exact;
+ struct {
+ UChar* s;
+ LengthType n; /* number of chars */
+ } exact_n; /* EXACTN, EXACTN_IC, EXACTMB2N, EXACTMB3N */
+ struct {
+ UChar* s;
+ LengthType n; /* number of chars */
+ LengthType len; /* char byte length */
+ } exact_len_n; /* EXACTMBN */
+ struct {
+ BitSetRef bsp;
+ } cclass;
+ struct {
+ void* mb;
+ } cclass_mb;
+ struct {
+ void* mb; /* mb must be same position with cclass_mb for match_at(). */
+ BitSetRef bsp;
+ } cclass_mix;
+ struct {
+ UChar c;
+ } anychar_star_peek_next;
+ struct {
+ ModeType mode;
+ } word_boundary; /* OP_WORD_BOUNDARY, OP_NO_WORD_BOUNDARY, OP_WORD_BEGIN, OP_WORD_END */
+ struct {
+ enum TextSegmentBoundaryType type;
+ int not;
+ } text_segment_boundary;
+ struct {
+ union {
+ MemNumType n1; /* num == 1 */
+ MemNumType* ns; /* num > 1 */
+ };
+ int num;
+ int nest_level;
+ } backref_general; /* BACKREF_MULTI, BACKREF_MULTI_IC, BACKREF_WITH_LEVEL, BACKREF_CHECK, BACKREF_CHECK_WITH_LEVEL, */
+ struct {
+ MemNumType n1;
+ } backref_n; /* BACKREF_N, BACKREF_N_IC */
+ struct {
+ MemNumType num;
+ } memory_start; /* MEMORY_START, MEMORY_START_PUSH */
+ struct {
+ MemNumType num;
+ } memory_end; /* MEMORY_END, MEMORY_END_REC, MEMORY_END_PUSH, MEMORY_END_PUSH_REC */
+ struct {
+ RelAddrType addr;
+ } jump;
+ struct {
+ RelAddrType addr;
+ } push;
+ struct {
+ RelAddrType addr;
+ UChar c;
+ } push_or_jump_exact1;
+ struct {
+ RelAddrType addr;
+ UChar c;
+ } push_if_peek_next;
+ struct {
+ MemNumType id;
+ RelAddrType addr;
+ } repeat; /* REPEAT, REPEAT_NG */
+ struct {
+ MemNumType id;
+ } repeat_inc; /* REPEAT_INC, REPEAT_INC_SG, REPEAT_INC_NG, REPEAT_INC_NG_SG */
+ struct {
+ MemNumType mem;
+ } empty_check_start;
+ struct {
+ MemNumType mem;
+ } empty_check_end; /* EMPTY_CHECK_END, EMPTY_CHECK_END_MEMST, EMPTY_CHECK_END_MEMST_PUSH */
+ struct {
+ RelAddrType addr;
+ } prec_read_not_start;
+ struct {
+ LengthType len;
+ } look_behind;
+ struct {
+ LengthType len;
+ RelAddrType addr;
+ } look_behind_not_start;
+ struct {
+ AbsAddrType addr;
+ } call;
+ struct {
+ SaveType type;
+ MemNumType id;
+ } push_save_val;
+ struct {
+ UpdateVarType type;
+ MemNumType id;
+ } update_var;
+#ifdef USE_CALLOUT
+ struct {
+ MemNumType num;
+ } callout_contents;
+ struct {
+ MemNumType num;
+ MemNumType id;
+ } callout_name;
+#endif
+ };
+} Operation;
+
+typedef struct {
+ const UChar* pattern;
+ const UChar* pattern_end;
+#ifdef USE_CALLOUT
+ void* tag_table;
+ int callout_num;
+ int callout_list_alloc;
+ CalloutListEntry* callout_list; /* index: callout num */
+#endif
+} RegexExt;
+
+struct re_pattern_buffer {
+ /* common members of BBuf(bytes-buffer) */
+ Operation* ops;
+#ifdef USE_DIRECT_THREADED_CODE
+ enum OpCode* ocs;
+#endif
+ Operation* ops_curr;
+ unsigned int ops_used; /* used space for ops */
+ unsigned int ops_alloc; /* allocated space for ops */
+ unsigned char* string_pool;
+ unsigned char* string_pool_end;
+
+ int num_mem; /* used memory(...) num counted from 1 */
+ int num_repeat; /* OP_REPEAT/OP_REPEAT_NG id-counter */
+ int num_null_check; /* OP_EMPTY_CHECK_START/END id counter */
+ int num_call; /* number of subexp call */
+ unsigned int capture_history; /* (?@...) flag (1-31) */
+ unsigned int bt_mem_start; /* need backtrack flag */
+ unsigned int bt_mem_end; /* need backtrack flag */
+ int stack_pop_level;
+ int repeat_range_alloc;
+ OnigRepeatRange* repeat_range;
+
+ OnigEncoding enc;
+ OnigOptionType options;
+ OnigSyntaxType* syntax;
+ OnigCaseFoldType case_fold_flag;
+ void* name_table;
+
+ /* optimization info (string search, char-map and anchors) */
+ int optimize; /* optimize flag */
+ int threshold_len; /* search str-length for apply optimize */
+ int anchor; /* BEGIN_BUF, BEGIN_POS, (SEMI_)END_BUF */
+ OnigLen anchor_dmin; /* (SEMI_)END_BUF anchor distance */
+ OnigLen anchor_dmax; /* (SEMI_)END_BUF anchor distance */
+ int sub_anchor; /* start-anchor for exact or map */
+ unsigned char *exact;
+ unsigned char *exact_end;
+ unsigned char map[CHAR_MAP_SIZE]; /* used as BMH skip or char-map */
+ int map_offset;
+ OnigLen dmin; /* min-distance of exact or map */
+ OnigLen dmax; /* max-distance of exact or map */
+ RegexExt* extp;
+};
+
+#define COP(reg) ((reg)->ops_curr)
+#define COP_CURR_OFFSET(reg) ((reg)->ops_used - 1)
+#define COP_CURR_OFFSET_BYTES(reg, p) \
+ ((int )((char* )(&((reg)->ops_curr->p)) - (char* )((reg)->ops)))
+
+
+extern void onig_add_end_call(void (*func)(void));
#ifdef ONIG_DEBUG
@@ -854,13 +1009,12 @@ extern int onig_print_statistics P_((FILE* f));
extern void onig_warning(const char* s);
extern UChar* onig_error_code_to_format P_((int code));
-extern void EFIAPI onig_snprintf_with_pattern PV_((UChar buf[], int bufsize, OnigEncoding enc, UChar* pat, UChar* pat_end, const UChar *fmt, ...));
-extern int onig_bbuf_init P_((BBuf* buf, int size));
+extern void EFIAPI onig_snprintf_with_pattern PV_((UChar buf[], int bufsize, OnigEncoding enc, UChar* pat, UChar* pat_end, const UChar *fmt, ...));
extern int onig_compile P_((regex_t* reg, const UChar* pattern, const UChar* pattern_end, OnigErrorInfo* einfo));
-extern void onig_transfer P_((regex_t* to, regex_t* from));
extern int onig_is_code_in_cc_len P_((int enclen, OnigCodePoint code, void* /* CClassNode* */ cc));
extern RegexExt* onig_get_regex_ext(regex_t* reg);
extern int onig_ext_set_pattern(regex_t* reg, const UChar* pattern, const UChar* pattern_end);
+extern int onig_positive_int_multiply(int x, int y);
#ifdef USE_CALLOUT
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.h b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.h
index e0086cd6c9..29e64341df 100644
--- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.h
+++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.h
@@ -4,7 +4,7 @@
regparse.h - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2019 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -31,6 +31,10 @@
#include "regint.h"
+#define NODE_STRING_MARGIN 16
+#define NODE_STRING_BUF_SIZE 24 /* sizeof(CClassNode) - sizeof(int)*4 */
+#define NODE_BACKREFS_SIZE 6
+
/* node type */
typedef enum {
NODE_STRING = 0,
@@ -38,7 +42,7 @@ typedef enum {
NODE_CTYPE = 2,
NODE_BACKREF = 3,
NODE_QUANT = 4,
- NODE_ENCLOSURE = 5,
+ NODE_BAG = 5,
NODE_ANCHOR = 6,
NODE_LIST = 7,
NODE_ALT = 8,
@@ -46,161 +50,29 @@ typedef enum {
NODE_GIMMICK = 10
} NodeType;
+enum BagType {
+ BAG_MEMORY = 0,
+ BAG_OPTION = 1,
+ BAG_STOP_BACKTRACK = 2,
+ BAG_IF_ELSE = 3,
+};
+
enum GimmickType {
- GIMMICK_FAIL = 0,
- GIMMICK_KEEP = 1,
- GIMMICK_SAVE = 2,
- GIMMICK_UPDATE_VAR = 3,
+ GIMMICK_FAIL = 0,
+ GIMMICK_SAVE = 1,
+ GIMMICK_UPDATE_VAR = 2,
#ifdef USE_CALLOUT
- GIMMICK_CALLOUT = 4,
+ GIMMICK_CALLOUT = 3,
#endif
};
-
-/* node type bit */
-#define NODE_TYPE2BIT(type) (1<<(type))
-
-#define NODE_BIT_STRING NODE_TYPE2BIT(NODE_STRING)
-#define NODE_BIT_CCLASS NODE_TYPE2BIT(NODE_CCLASS)
-#define NODE_BIT_CTYPE NODE_TYPE2BIT(NODE_CTYPE)
-#define NODE_BIT_BACKREF NODE_TYPE2BIT(NODE_BACKREF)
-#define NODE_BIT_QUANT NODE_TYPE2BIT(NODE_QUANT)
-#define NODE_BIT_ENCLOSURE NODE_TYPE2BIT(NODE_ENCLOSURE)
-#define NODE_BIT_ANCHOR NODE_TYPE2BIT(NODE_ANCHOR)
-#define NODE_BIT_LIST NODE_TYPE2BIT(NODE_LIST)
-#define NODE_BIT_ALT NODE_TYPE2BIT(NODE_ALT)
-#define NODE_BIT_CALL NODE_TYPE2BIT(NODE_CALL)
-#define NODE_BIT_GIMMICK NODE_TYPE2BIT(NODE_GIMMICK)
-
-#define NODE_IS_SIMPLE_TYPE(node) \
- ((NODE_TYPE2BIT(NODE_TYPE(node)) & \
- (NODE_BIT_STRING | NODE_BIT_CCLASS | NODE_BIT_CTYPE | NODE_BIT_BACKREF)) != 0)
-
-#define NODE_TYPE(node) ((node)->u.base.node_type)
-#define NODE_SET_TYPE(node, ntype) (node)->u.base.node_type = (ntype)
-
-#define STR_(node) (&((node)->u.str))
-#define CCLASS_(node) (&((node)->u.cclass))
-#define CTYPE_(node) (&((node)->u.ctype))
-#define BACKREF_(node) (&((node)->u.backref))
-#define QUANT_(node) (&((node)->u.quant))
-#define ENCLOSURE_(node) (&((node)->u.enclosure))
-#define ANCHOR_(node) (&((node)->u.anchor))
-#define CONS_(node) (&((node)->u.cons))
-#define CALL_(node) (&((node)->u.call))
-#define GIMMICK_(node) (&((node)->u.gimmick))
-
-#define NODE_CAR(node) (CONS_(node)->car)
-#define NODE_CDR(node) (CONS_(node)->cdr)
-
-#define CTYPE_ANYCHAR -1
-#define NODE_IS_ANYCHAR(node) \
- (NODE_TYPE(node) == NODE_CTYPE && CTYPE_(node)->ctype == CTYPE_ANYCHAR)
-
-#define CTYPE_OPTION(node, reg) \
- (NODE_IS_FIXED_OPTION(node) ? CTYPE_(node)->options : reg->options)
-
-
-#define ANCHOR_ANYCHAR_INF_MASK (ANCHOR_ANYCHAR_INF | ANCHOR_ANYCHAR_INF_ML)
-#define ANCHOR_END_BUF_MASK (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF)
-
-enum EnclosureType {
- ENCLOSURE_MEMORY = 0,
- ENCLOSURE_OPTION = 1,
- ENCLOSURE_STOP_BACKTRACK = 2,
- ENCLOSURE_IF_ELSE = 3,
+enum BodyEmptyType {
+ BODY_IS_NOT_EMPTY = 0,
+ BODY_IS_EMPTY_POSSIBILITY = 1,
+ BODY_IS_EMPTY_POSSIBILITY_MEM = 2,
+ BODY_IS_EMPTY_POSSIBILITY_REC = 3
};
-#define NODE_STRING_MARGIN 16
-#define NODE_STRING_BUF_SIZE 24 /* sizeof(CClassNode) - sizeof(int)*4 */
-#define NODE_BACKREFS_SIZE 6
-
-#define NODE_STRING_RAW (1<<0) /* by backslashed number */
-#define NODE_STRING_AMBIG (1<<1)
-#define NODE_STRING_DONT_GET_OPT_INFO (1<<2)
-
-#define NODE_STRING_LEN(node) (int )((node)->u.str.end - (node)->u.str.s)
-#define NODE_STRING_SET_RAW(node) (node)->u.str.flag |= NODE_STRING_RAW
-#define NODE_STRING_CLEAR_RAW(node) (node)->u.str.flag &= ~NODE_STRING_RAW
-#define NODE_STRING_SET_AMBIG(node) (node)->u.str.flag |= NODE_STRING_AMBIG
-#define NODE_STRING_SET_DONT_GET_OPT_INFO(node) \
- (node)->u.str.flag |= NODE_STRING_DONT_GET_OPT_INFO
-#define NODE_STRING_IS_RAW(node) \
- (((node)->u.str.flag & NODE_STRING_RAW) != 0)
-#define NODE_STRING_IS_AMBIG(node) \
- (((node)->u.str.flag & NODE_STRING_AMBIG) != 0)
-#define NODE_STRING_IS_DONT_GET_OPT_INFO(node) \
- (((node)->u.str.flag & NODE_STRING_DONT_GET_OPT_INFO) != 0)
-
-#define BACKREFS_P(br) \
- (IS_NOT_NULL((br)->back_dynamic) ? (br)->back_dynamic : (br)->back_static)
-
-enum QuantBodyEmpty {
- QUANT_BODY_IS_NOT_EMPTY = 0,
- QUANT_BODY_IS_EMPTY = 1,
- QUANT_BODY_IS_EMPTY_MEM = 2,
- QUANT_BODY_IS_EMPTY_REC = 3
-};
-
-/* node status bits */
-#define NODE_ST_MIN_FIXED (1<<0)
-#define NODE_ST_MAX_FIXED (1<<1)
-#define NODE_ST_CLEN_FIXED (1<<2)
-#define NODE_ST_MARK1 (1<<3)
-#define NODE_ST_MARK2 (1<<4)
-#define NODE_ST_STOP_BT_SIMPLE_REPEAT (1<<5)
-#define NODE_ST_RECURSION (1<<6)
-#define NODE_ST_CALLED (1<<7)
-#define NODE_ST_ADDR_FIXED (1<<8)
-#define NODE_ST_NAMED_GROUP (1<<9)
-#define NODE_ST_IN_REAL_REPEAT (1<<10) /* STK_REPEAT is nested in stack. */
-#define NODE_ST_IN_ZERO_REPEAT (1<<11) /* (....){0} */
-#define NODE_ST_IN_MULTI_ENTRY (1<<12)
-#define NODE_ST_NEST_LEVEL (1<<13)
-#define NODE_ST_BY_NUMBER (1<<14) /* {n,m} */
-#define NODE_ST_BY_NAME (1<<15) /* backref by name */
-#define NODE_ST_BACKREF (1<<16)
-#define NODE_ST_CHECKER (1<<17)
-#define NODE_ST_FIXED_OPTION (1<<18)
-#define NODE_ST_PROHIBIT_RECURSION (1<<19)
-#define NODE_ST_SUPER (1<<20)
-
-
-#define NODE_STATUS(node) (((Node* )node)->u.base.status)
-#define NODE_STATUS_ADD(node,f) (NODE_STATUS(node) |= (NODE_ST_ ## f))
-#define NODE_STATUS_REMOVE(node,f) (NODE_STATUS(node) &= ~(NODE_ST_ ## f))
-
-#define NODE_IS_BY_NUMBER(node) ((NODE_STATUS(node) & NODE_ST_BY_NUMBER) != 0)
-#define NODE_IS_IN_REAL_REPEAT(node) ((NODE_STATUS(node) & NODE_ST_IN_REAL_REPEAT) != 0)
-#define NODE_IS_CALLED(node) ((NODE_STATUS(node) & NODE_ST_CALLED) != 0)
-#define NODE_IS_IN_MULTI_ENTRY(node) ((NODE_STATUS(node) & NODE_ST_IN_MULTI_ENTRY) != 0)
-#define NODE_IS_RECURSION(node) ((NODE_STATUS(node) & NODE_ST_RECURSION) != 0)
-#define NODE_IS_IN_ZERO_REPEAT(node) ((NODE_STATUS(node) & NODE_ST_IN_ZERO_REPEAT) != 0)
-#define NODE_IS_NAMED_GROUP(node) ((NODE_STATUS(node) & NODE_ST_NAMED_GROUP) != 0)
-#define NODE_IS_ADDR_FIXED(node) ((NODE_STATUS(node) & NODE_ST_ADDR_FIXED) != 0)
-#define NODE_IS_CLEN_FIXED(node) ((NODE_STATUS(node) & NODE_ST_CLEN_FIXED) != 0)
-#define NODE_IS_MIN_FIXED(node) ((NODE_STATUS(node) & NODE_ST_MIN_FIXED) != 0)
-#define NODE_IS_MAX_FIXED(node) ((NODE_STATUS(node) & NODE_ST_MAX_FIXED) != 0)
-#define NODE_IS_MARK1(node) ((NODE_STATUS(node) & NODE_ST_MARK1) != 0)
-#define NODE_IS_MARK2(node) ((NODE_STATUS(node) & NODE_ST_MARK2) != 0)
-#define NODE_IS_NEST_LEVEL(node) ((NODE_STATUS(node) & NODE_ST_NEST_LEVEL) != 0)
-#define NODE_IS_BY_NAME(node) ((NODE_STATUS(node) & NODE_ST_BY_NAME) != 0)
-#define NODE_IS_BACKREF(node) ((NODE_STATUS(node) & NODE_ST_BACKREF) != 0)
-#define NODE_IS_CHECKER(node) ((NODE_STATUS(node) & NODE_ST_CHECKER) != 0)
-#define NODE_IS_FIXED_OPTION(node) ((NODE_STATUS(node) & NODE_ST_FIXED_OPTION) != 0)
-#define NODE_IS_SUPER(node) ((NODE_STATUS(node) & NODE_ST_SUPER) != 0)
-#define NODE_IS_PROHIBIT_RECURSION(node) \
- ((NODE_STATUS(node) & NODE_ST_PROHIBIT_RECURSION) != 0)
-#define NODE_IS_STOP_BT_SIMPLE_REPEAT(node) \
- ((NODE_STATUS(node) & NODE_ST_STOP_BT_SIMPLE_REPEAT) != 0)
-
-#define NODE_BODY(node) ((node)->u.base.body)
-#define NODE_QUANT_BODY(node) ((node)->body)
-#define NODE_ENCLOSURE_BODY(node) ((node)->body)
-#define NODE_CALL_BODY(node) ((node)->body)
-#define NODE_ANCHOR_BODY(node) ((node)->body)
-
-
typedef struct {
NodeType node_type;
int status;
@@ -208,7 +80,7 @@ typedef struct {
UChar* s;
UChar* end;
unsigned int flag;
- int capa; /* (allocated size - 1) or 0: use buf[] */
+ int capacity; /* (allocated size - 1) or 0: use buf[] */
UChar buf[NODE_STRING_BUF_SIZE];
} StrNode;
@@ -229,7 +101,7 @@ typedef struct {
int lower;
int upper;
int greedy;
- enum QuantBodyEmpty body_empty_info;
+ enum BodyEmptyType emptiness;
struct _Node* head_exact;
struct _Node* next_head_exact;
int is_refered; /* include called node. don't eliminate even if {0} */
@@ -240,7 +112,7 @@ typedef struct {
int status;
struct _Node* body;
- enum EnclosureType type;
+ enum BagType type;
union {
struct {
int regnum;
@@ -262,7 +134,7 @@ typedef struct {
OnigLen max_len; /* max length (byte) */
int char_len; /* character length */
int opt_count; /* referenced count in optimize_nodes() */
-} EnclosureNode;
+} BagNode;
#ifdef USE_CALL
@@ -280,7 +152,7 @@ typedef struct {
typedef struct {
NodeType node_type;
int status;
- struct _Node* body; /* to EnclosureNode : ENCLOSURE_MEMORY */
+ struct _Node* body; /* to BagNode : BAG_MEMORY */
int by_number;
int group_num;
@@ -350,7 +222,7 @@ typedef struct _Node {
StrNode str;
CClassNode cclass;
QuantNode quant;
- EnclosureNode enclosure;
+ BagNode bag;
BackRefNode backref;
AnchorNode anchor;
ConsAltNode cons;
@@ -362,9 +234,134 @@ typedef struct _Node {
} u;
} Node;
-
#define NULL_NODE ((Node* )0)
+
+/* node type bit */
+#define NODE_TYPE2BIT(type) (1<<(type))
+
+#define NODE_BIT_STRING NODE_TYPE2BIT(NODE_STRING)
+#define NODE_BIT_CCLASS NODE_TYPE2BIT(NODE_CCLASS)
+#define NODE_BIT_CTYPE NODE_TYPE2BIT(NODE_CTYPE)
+#define NODE_BIT_BACKREF NODE_TYPE2BIT(NODE_BACKREF)
+#define NODE_BIT_QUANT NODE_TYPE2BIT(NODE_QUANT)
+#define NODE_BIT_BAG NODE_TYPE2BIT(NODE_BAG)
+#define NODE_BIT_ANCHOR NODE_TYPE2BIT(NODE_ANCHOR)
+#define NODE_BIT_LIST NODE_TYPE2BIT(NODE_LIST)
+#define NODE_BIT_ALT NODE_TYPE2BIT(NODE_ALT)
+#define NODE_BIT_CALL NODE_TYPE2BIT(NODE_CALL)
+#define NODE_BIT_GIMMICK NODE_TYPE2BIT(NODE_GIMMICK)
+
+#define NODE_TYPE(node) ((node)->u.base.node_type)
+#define NODE_SET_TYPE(node, ntype) (node)->u.base.node_type = (ntype)
+
+#define STR_(node) (&((node)->u.str))
+#define CCLASS_(node) (&((node)->u.cclass))
+#define CTYPE_(node) (&((node)->u.ctype))
+#define BACKREF_(node) (&((node)->u.backref))
+#define QUANT_(node) (&((node)->u.quant))
+#define BAG_(node) (&((node)->u.bag))
+#define ANCHOR_(node) (&((node)->u.anchor))
+#define CONS_(node) (&((node)->u.cons))
+#define CALL_(node) (&((node)->u.call))
+#define GIMMICK_(node) (&((node)->u.gimmick))
+
+#define NODE_CAR(node) (CONS_(node)->car)
+#define NODE_CDR(node) (CONS_(node)->cdr)
+
+#define CTYPE_ANYCHAR -1
+#define NODE_IS_ANYCHAR(node) \
+ (NODE_TYPE(node) == NODE_CTYPE && CTYPE_(node)->ctype == CTYPE_ANYCHAR)
+
+#define CTYPE_OPTION(node, reg) \
+ (NODE_IS_FIXED_OPTION(node) ? CTYPE_(node)->options : reg->options)
+
+
+#define ANCR_ANYCHAR_INF_MASK (ANCR_ANYCHAR_INF | ANCR_ANYCHAR_INF_ML)
+#define ANCR_END_BUF_MASK (ANCR_END_BUF | ANCR_SEMI_END_BUF)
+
+#define NODE_STRING_RAW (1<<0) /* by backslashed number */
+#define NODE_STRING_AMBIG (1<<1)
+#define NODE_STRING_GOOD_AMBIG (1<<2)
+#define NODE_STRING_DONT_GET_OPT_INFO (1<<3)
+
+#define NODE_STRING_LEN(node) (int )((node)->u.str.end - (node)->u.str.s)
+#define NODE_STRING_SET_RAW(node) (node)->u.str.flag |= NODE_STRING_RAW
+#define NODE_STRING_CLEAR_RAW(node) (node)->u.str.flag &= ~NODE_STRING_RAW
+#define NODE_STRING_SET_AMBIG(node) (node)->u.str.flag |= NODE_STRING_AMBIG
+#define NODE_STRING_SET_GOOD_AMBIG(node) (node)->u.str.flag |= NODE_STRING_GOOD_AMBIG
+#define NODE_STRING_SET_DONT_GET_OPT_INFO(node) \
+ (node)->u.str.flag |= NODE_STRING_DONT_GET_OPT_INFO
+#define NODE_STRING_IS_RAW(node) \
+ (((node)->u.str.flag & NODE_STRING_RAW) != 0)
+#define NODE_STRING_IS_AMBIG(node) \
+ (((node)->u.str.flag & NODE_STRING_AMBIG) != 0)
+#define NODE_STRING_IS_GOOD_AMBIG(node) \
+ (((node)->u.str.flag & NODE_STRING_GOOD_AMBIG) != 0)
+#define NODE_STRING_IS_DONT_GET_OPT_INFO(node) \
+ (((node)->u.str.flag & NODE_STRING_DONT_GET_OPT_INFO) != 0)
+
+#define BACKREFS_P(br) \
+ (IS_NOT_NULL((br)->back_dynamic) ? (br)->back_dynamic : (br)->back_static)
+
+/* node status bits */
+#define NODE_ST_MIN_FIXED (1<<0)
+#define NODE_ST_MAX_FIXED (1<<1)
+#define NODE_ST_CLEN_FIXED (1<<2)
+#define NODE_ST_MARK1 (1<<3)
+#define NODE_ST_MARK2 (1<<4)
+#define NODE_ST_STRICT_REAL_REPEAT (1<<5)
+#define NODE_ST_RECURSION (1<<6)
+#define NODE_ST_CALLED (1<<7)
+#define NODE_ST_ADDR_FIXED (1<<8)
+#define NODE_ST_NAMED_GROUP (1<<9)
+#define NODE_ST_IN_REAL_REPEAT (1<<10) /* STK_REPEAT is nested in stack. */
+#define NODE_ST_IN_ZERO_REPEAT (1<<11) /* (....){0} */
+#define NODE_ST_IN_MULTI_ENTRY (1<<12)
+#define NODE_ST_NEST_LEVEL (1<<13)
+#define NODE_ST_BY_NUMBER (1<<14) /* {n,m} */
+#define NODE_ST_BY_NAME (1<<15) /* backref by name */
+#define NODE_ST_BACKREF (1<<16)
+#define NODE_ST_CHECKER (1<<17)
+#define NODE_ST_FIXED_OPTION (1<<18)
+#define NODE_ST_PROHIBIT_RECURSION (1<<19)
+#define NODE_ST_SUPER (1<<20)
+
+
+#define NODE_STATUS(node) (((Node* )node)->u.base.status)
+#define NODE_STATUS_ADD(node,f) (NODE_STATUS(node) |= (NODE_ST_ ## f))
+#define NODE_STATUS_REMOVE(node,f) (NODE_STATUS(node) &= ~(NODE_ST_ ## f))
+
+#define NODE_IS_BY_NUMBER(node) ((NODE_STATUS(node) & NODE_ST_BY_NUMBER) != 0)
+#define NODE_IS_IN_REAL_REPEAT(node) ((NODE_STATUS(node) & NODE_ST_IN_REAL_REPEAT) != 0)
+#define NODE_IS_CALLED(node) ((NODE_STATUS(node) & NODE_ST_CALLED) != 0)
+#define NODE_IS_IN_MULTI_ENTRY(node) ((NODE_STATUS(node) & NODE_ST_IN_MULTI_ENTRY) != 0)
+#define NODE_IS_RECURSION(node) ((NODE_STATUS(node) & NODE_ST_RECURSION) != 0)
+#define NODE_IS_IN_ZERO_REPEAT(node) ((NODE_STATUS(node) & NODE_ST_IN_ZERO_REPEAT) != 0)
+#define NODE_IS_NAMED_GROUP(node) ((NODE_STATUS(node) & NODE_ST_NAMED_GROUP) != 0)
+#define NODE_IS_ADDR_FIXED(node) ((NODE_STATUS(node) & NODE_ST_ADDR_FIXED) != 0)
+#define NODE_IS_CLEN_FIXED(node) ((NODE_STATUS(node) & NODE_ST_CLEN_FIXED) != 0)
+#define NODE_IS_MIN_FIXED(node) ((NODE_STATUS(node) & NODE_ST_MIN_FIXED) != 0)
+#define NODE_IS_MAX_FIXED(node) ((NODE_STATUS(node) & NODE_ST_MAX_FIXED) != 0)
+#define NODE_IS_MARK1(node) ((NODE_STATUS(node) & NODE_ST_MARK1) != 0)
+#define NODE_IS_MARK2(node) ((NODE_STATUS(node) & NODE_ST_MARK2) != 0)
+#define NODE_IS_NEST_LEVEL(node) ((NODE_STATUS(node) & NODE_ST_NEST_LEVEL) != 0)
+#define NODE_IS_BY_NAME(node) ((NODE_STATUS(node) & NODE_ST_BY_NAME) != 0)
+#define NODE_IS_BACKREF(node) ((NODE_STATUS(node) & NODE_ST_BACKREF) != 0)
+#define NODE_IS_CHECKER(node) ((NODE_STATUS(node) & NODE_ST_CHECKER) != 0)
+#define NODE_IS_FIXED_OPTION(node) ((NODE_STATUS(node) & NODE_ST_FIXED_OPTION) != 0)
+#define NODE_IS_SUPER(node) ((NODE_STATUS(node) & NODE_ST_SUPER) != 0)
+#define NODE_IS_PROHIBIT_RECURSION(node) \
+ ((NODE_STATUS(node) & NODE_ST_PROHIBIT_RECURSION) != 0)
+#define NODE_IS_STRICT_REAL_REPEAT(node) \
+ ((NODE_STATUS(node) & NODE_ST_STRICT_REAL_REPEAT) != 0)
+
+#define NODE_BODY(node) ((node)->u.base.body)
+#define NODE_QUANT_BODY(node) ((node)->body)
+#define NODE_BAG_BODY(node) ((node)->body)
+#define NODE_CALL_BODY(node) ((node)->body)
+#define NODE_ANCHOR_BODY(node) ((node)->body)
+
#define SCANENV_MEMENV_SIZE 8
#define SCANENV_MEMENV(senv) \
(IS_NOT_NULL((senv)->mem_env_dynamic) ? \
@@ -434,7 +431,7 @@ extern void onig_node_conv_to_str_node P_((Node* node, int raw));
extern int onig_node_str_cat P_((Node* node, const UChar* s, const UChar* end));
extern int onig_node_str_set P_((Node* node, const UChar* s, const UChar* end));
extern void onig_node_free P_((Node* node));
-extern Node* onig_node_new_enclosure P_((int type));
+extern Node* onig_node_new_bag P_((enum BagType type));
extern Node* onig_node_new_anchor P_((int type, int ascii_mode));
extern Node* onig_node_new_str P_((const UChar* s, const UChar* end));
extern Node* onig_node_new_list P_((Node* left, Node* right));
--
2.13.0.windows.1
reply other threads:[~2019-08-08 13:34 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1565271078-7716-1-git-send-email-liming.gao@intel.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox