diff options
| author | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2017-09-01 19:54:36 +0200 | 
|---|---|---|
| committer | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2017-09-01 19:54:36 +0200 | 
| commit | a3ec3a8d99a951fc599818b1ea9a2aa218b10fa5 (patch) | |
| tree | 3ee714ca52a54635d91c7e3c10b968e0048022be | |
| parent | 6b31069db6198cd50cc17f2c63917dd2df5775fb (diff) | |
| parent | de5adb21f7224352652be174c66fb88e596bb49c (diff) | |
Merge branch 'feature/upstream' into develop
48 files changed, 14203 insertions, 10850 deletions
@@ -20,8 +20,6 @@ Makefile.in  *~  .libs/  .deps/ -testc -testcu -testp  /build  m4/*.m4 +debian/files diff --git a/CMakeLists.txt b/CMakeLists.txt index b40fb2c..9e1efe8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ cmake_minimum_required(VERSION 2.8)  project(oniguruma C)  set(PACKAGE onig) -set(PACKAGE_VERSION "6.5.0") +set(PACKAGE_VERSION "6.6.0")  set(USE_COMBINATION_EXPLOSION_CHECK 0)  set(USE_CRNL_AS_LINE_TERMINATOR 0) @@ -81,7 +81,7 @@ install_library(onig)  install_header(src/oniguruma.h src/onigposix.h src/oniggnu.h)  install_doc(doc/API doc/API.ja doc/RE doc/RE.ja doc/UNICODE_PROPERTIES) -install_data(AUTHORS COPYING HISTORY README) +install_data(AUTHORS COPYING HISTORY README.md)  install(FILES ${CMAKE_CURRENT_BINARY_DIR}/oniguruma.pc    DESTINATION lib/pkgconfig) @@ -1,5 +1,24 @@  History +2017/08/30: Version 6.6.1 + +2017/08/29: fix definition of \X to (?>\O(?:\Y\O)*) + +2017/08/28: Version 6.6.0 + +2017/08/26: fix #67: can't compile with Visual Studio 2005 +2017/08/24: rename Absent clear to Range clear +2017/08/21: [new] Extended Grapheme Cluster \X and boundary \y, \Y +2017/08/17: fix: invalid index(ctype) value assigned to Unicode Block properties +2017/08/16: --enable-crnl-as-line-terminator to be deprecated +2017/08/15: [new] ASCII only mode options (?WDSP) +2017/08/14: [new] ONIG_OPTION_XXXX_IS_ASCII  options +2017/08/11: disable OP_CCLASS_NODE +2017/08/11: [spec] Absent clear restore previous range value at backtrack +2017/08/07: optimize for simple one char repetition in Absent expression +2017/08/07: fix: invalid impl. for reluctant repetition in Absent expression +2017/08/04: remove compile switch USE_NAMED_GROUP +  2017/08/03: Version 6.5.0  2017/07/30: [new] support Absent clear (Absent functions) diff --git a/Makefile.am b/Makefile.am index b044f93..4703747 100644 --- a/Makefile.am +++ b/Makefile.am @@ -4,7 +4,7 @@ ACLOCAL_AMFLAGS = -I m4  SUBDIRS = src test sample -EXTRA_DIST = oniguruma.pc.in HISTORY README.ja README.md \ +EXTRA_DIST = oniguruma.pc.in HISTORY README_japanese README.md \  	index.html index_ja.html \  	CMakeLists.txt dist.info oniguruma.pc.cmake.in cmake/dist.cmake \  	src/config.h.cmake.in \ @@ -1,6 +1,6 @@ -README  2017/07/08 +README  2017/08/25 -Oniguruma  ----   (C) K.Kosako <kkosako0@gmail.com> +Oniguruma  ----   (C) K.Kosako  https://github.com/kkos/oniguruma @@ -179,16 +179,4 @@ Source Files    win32/config.h     config.h for Win32 - -ToDo - -  ? case fold flag: Katakana <-> Hiragana. -  ? add ONIG_OPTION_NOTBOS/NOTEOS. (\A, \z, \Z) - ?? \X (== \PM\pM*) - ?? implement syntax behavior ONIG_SYN_CONTEXT_INDEP_ANCHORS. - ?? transmission stopper. (return ONIG_STOP from match_at()) -  and I'm thankful to Akinori MUSHA. - - -Mail Address: K.Kosako <kkosako0@gmail.com> @@ -5,8 +5,8 @@ https://github.com/kkos/oniguruma  FIXED Security Issues:  -------------------------- -  CVE-2017-9224, CVE-2017-9225, CVE-2017-9226 -  CVE-2017-9227, CVE-2017-9228, CVE-2017-9229 +  **CVE-2017-9224, CVE-2017-9225, CVE-2017-9226** +  **CVE-2017-9227, CVE-2017-9228, CVE-2017-9229**  Oniguruma is a regular expressions library. @@ -26,6 +26,21 @@ Supported character encodings:  * CP1251:  contributed by Byte +New feature of version 6.6.1 +-------------------------- + +* Fix definition of \X + + +New feature of version 6.6.0 +-------------------------- + +* NEW: ASCII only mode options for character type/property (?WDSP) +* NEW: Extended Grapheme Cluster boundary \y, \Y (*original) +* NEW: Extended Grapheme Cluster \X +* Range-clear (Absent-clear) operator restores previous range in backtrack. + +  New feature of version 6.5.0  -------------------------- @@ -33,24 +48,24 @@ New feature of version 6.5.0  * NEW: \R (general newline) \N (no newline)  * NEW: \O (true anychar)  * NEW: if-then-else syntax   (?(...)...\|...) -* NEW: Backreference validity checker  (*original) +* NEW: Backreference validity checker (?(xxx)) (*original)  * NEW: Absent repeater (?~absent)  * NEW: Absent expression   (?~|absent|expr)  (*original) -* NEW: Absent range cutter (?~|absent)     (*original) +* NEW: Absent stopper (?~|absent)     (*original)  New feature of version 6.4.0  --------------------------  * Fix fatal problem of endless repeat on Windows -* NEW: call zero (call the total regexp) -* NEW: relative backref and relative call by positive number +* NEW: call zero (call the total regexp) \g<0> +* NEW: relative backref/call by positive number \k<+n>, \g<+n>  New feature of version 6.3.0  -------------------------- -* NEW SYNTAX: escape-o-brace for octal codepoint. +* NEW: octal codepoint \o{.....}  New feature of version 6.1.2 diff --git a/README.ja b/README_japanese index 826a8e7..28da31b 100644 --- a/README.ja +++ b/README_japanese @@ -1,4 +1,4 @@ -README.ja  2016/05/06 +README.ja  2017/08/25  µ´¼Ö  ----   (C) K.Kosako <kkosako0@gmail.com> @@ -180,16 +180,4 @@ https://github.com/kkos/oniguruma    win32/config.h     Win32ÍÑ config.h - -»Ä·ï - -  ? case fold flag: Katakana <-> Hiragana -  ? ONIG_OPTION_NOTBOS/NOTEOSÄɲà (\A, \z, \Z) - ?? \X (== \PM\pM*) - ?? ʸˡÍ×ÁÇ ONIG_SYN_CONTEXT_INDEP_ANCHORS¤Î¼ÂÁõ - ?? ¸¡º÷°ÌÃÖ°ÜÆ°Ää»ß±é»»»Ò (match_at()¤«¤éONIG_STOP¤òÊÖ¤¹) -  and I'm thankful to Akinori MUSHA. - - -¥¢¥É¥ì¥¹: K.Kosako <kkosako0@gmail.com> diff --git a/configure.ac b/configure.ac index efaf5e1..d585690 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@  dnl Process this file with autoconf to produce a configure script. -AC_INIT(onig, 6.5.0) +AC_INIT(onig, 6.6.1)  AC_CONFIG_MACRO_DIR([m4]) @@ -24,7 +24,7 @@ fi  dnl check for CRNL_AS_LINE_TERMINATOR  AC_ARG_ENABLE(crnl-as-line-terminator, -	[  --enable-crnl-as-line-terminator   enable CR+NL as line terminator], +	[  --enable-crnl-as-line-terminator   deprecated],  	[crnl_as_line_terminator=$enableval])  if test "${crnl_as_line_terminator}" = yes; then    AC_DEFINE(USE_CRNL_AS_LINE_TERMINATOR,1,[Define if enable CR+NL as line terminator]) diff --git a/debian/changelog b/debian/changelog index d7330ed..37844cf 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +libonig (6.6.1-1) UNRELEASED; urgency=medium + +  * New upstream release. +    - Refresh symbols file. +  * Declare compliance with Debian Policy 4.1.0.0. (No changes needed). +  * Remove missing README.ja from debian/libonig-dev.docs and +    debian/libonig-dev.doc-base. + + -- Jörg Frings-Fürst <debian@jff-webhosting.net>  Fri, 01 Sep 2017 18:54:10 +0200 +  libonig (6.5.0-1) unstable; urgency=medium    * New upstream release. diff --git a/debian/control b/debian/control index 6b25f28..e59bbc4 100644 --- a/debian/control +++ b/debian/control @@ -4,7 +4,7 @@ Priority: extra  Maintainer: Jörg Frings-Fürst <debian@jff-webhosting.net>  Build-Depends:   debhelper (>= 10) -Standards-Version: 4.0.0 +Standards-Version: 4.1.0.0  Homepage: https://github.com/kkos/oniguruma  Vcs-Git: https://anonscm.debian.org/cgit/collab-maint/libonig.git  Vcs-Browser: https://anonscm.debian.org/cgit/collab-maint/libonig.git diff --git a/debian/libonig-dev.doc-base b/debian/libonig-dev.doc-base index 2c6bcf7..8dab269 100644 --- a/debian/libonig-dev.doc-base +++ b/debian/libonig-dev.doc-base @@ -10,7 +10,6 @@ Files: /usr/share/doc/libonig-dev/API.gz         /usr/share/doc/libonig-dev/RE.gz         /usr/share/doc/libonig-dev/RE.ja.gz         /usr/share/doc/libonig-dev/README.gz -       /usr/share/doc/libonig-dev/README.ja.gz  Format: HTML  Index: /usr/share/doc/libonig-dev/index.html diff --git a/debian/libonig-dev.docs b/debian/libonig-dev.docs index 856bacd..b8be5a0 100644 --- a/debian/libonig-dev.docs +++ b/debian/libonig-dev.docs @@ -1,6 +1,5 @@  AUTHORS  README -README.ja  doc/API  doc/API.ja  doc/FAQ diff --git a/debian/symbols b/debian/symbols index d3c085c..dd785d7 100644 --- a/debian/symbols +++ b/debian/symbols @@ -166,6 +166,7 @@ libonig.so.4 libonig4 #MINVER#   onigenc_ascii_apply_all_case_fold@Base 5.9.5   onigenc_ascii_get_case_fold_codes_by_str@Base 5.9.5   onigenc_ascii_mbc_case_fold@Base 5.9.5 + onigenc_egcb_is_break_position@Base 6.6.1   onigenc_get_case_fold_codes_by_str_with_map@Base 5.9.5   onigenc_get_default_encoding@Base 5.9.5   onigenc_get_left_adjust_char_head@Base 5.9.5 @@ -174,6 +175,7 @@ libonig.so.4 libonig4 #MINVER#   onigenc_get_right_adjust_char_head_with_prev@Base 5.9.5   onigenc_init@Base 5.9.5   onigenc_is_mbc_newline_0x0a@Base 5.9.5 + onigenc_is_mbc_word_ascii@Base 6.6.1   onigenc_is_valid_mbc_string@Base 6.1.0   onigenc_length_check_is_valid_mbc_string@Base 6.1.0   onigenc_mb2_code_to_mbc@Base 5.9.5 @@ -1,7 +1,7 @@  --- This file is part of LuaDist project  name = "onig" -version = "6.5.0" +version = "6.6.1"  desc = "Oniguruma is a regular expressions library."  author = "K.Kosako" @@ -1,4 +1,4 @@ -Oniguruma API  Version 6.1.0  2016/08/22 +Oniguruma API  Version 6.6.0  2017/08/15  #include <oniguruma.h> @@ -83,6 +83,16 @@ Oniguruma API  Version 6.1.0  2016/08/22        ONIG_OPTION_DONT_CAPTURE_GROUP only named group captured.        ONIG_OPTION_CAPTURE_GROUP      named and no-named group captured. +      ONIG_OPTION_WORD_IS_ASCII      ASCII only word (\w, \p{Word}, [[:word:]]) +                                     ASCII only word bound (\b) +      ONIG_OPTION_DIGIT_IS_ASCII     ASCII only digit (\d, \p{Digit}, [[:digit:]]) +      ONIG_OPTION_SPACE_IS_ASCII     ASCII only space (\s, \p{Space}, [[:space:]]) +      ONIG_OPTION_POSIX_IS_ASCII     ASCII only POSIX properties +                                     (includes word, digit, space) +                                     (alnum, alpha, blank, cntrl, digit, graph, +                                      lower, print, punct, space, upper, xdigit, +                                      word) +    5 enc:        character encoding.        ONIG_ENCODING_ASCII         ASCII @@ -1,4 +1,4 @@ -鬼車インターフェース Version 6.1.0   2016/08/22 +鬼車インターフェース Version 6.6.0   2017/08/15  #include <oniguruma.h> @@ -82,6 +82,15 @@        ONIG_OPTION_DONT_CAPTURE_GROUP åå‰ä»˜ãæ•ç²å¼é›†åˆã®ã¿æ•ç²        ONIG_OPTION_CAPTURE_GROUP      åå‰ç„¡ã—æ•ç²å¼é›†åˆã‚‚æ•ç² +      ONIG_OPTION_WORD_IS_ASCII      wordãŒASCIIã®ã¿ (\w, \p{Word}, [[:word:]]) +                                     word boundãŒASCIIã®ã¿ (\b) +      ONIG_OPTION_DIGIT_IS_ASCII     digitãŒASCIIã®ã¿ (\d, \p{Digit}, [[:digit:]]) +      ONIG_OPTION_SPACE_IS_ASCII     spaceãŒASCIIã®ã¿ (\s, \p{Space}, [[:space:]]) +      ONIG_OPTION_POSIX_IS_ASCII     POSIXプãƒãƒ‘ティãŒASCIIã®ã¿ +                                     (word, digit, spaceã‚’å…¨ã¦å«ã‚“ã§ã„ã‚‹) +                                     (alnum, alpha, blank, cntrl, digit, graph, +                                      lower, print, punct, space, upper, xdigit, +                                      word)    5 enc:        æ–‡å—エンコーディング @@ -1,4 +1,4 @@ -Oniguruma Regular Expressions Version 6.5.0    2017/07/30 +Oniguruma Regular Expressions Version 6.6.0    2017/08/29  syntax: ONIG_SYNTAX_RUBY (default) @@ -80,6 +80,16 @@ syntax: ONIG_SYNTAX_RUBY (default)    \O       true anychar      (?m:.)    (* original function) +  \X       Extended Grapheme Cluster    (?>\O(?:\Y\O)*) + +           \X doesn't check whether matching start position is boundary. +           Write as \y\X if you want to ensure it. + +           Unicode case: +             See [Unicode Standard Annex #29: http://unicode.org/reports/tr29/] + +           Not Unicode:   (?>\r\n|\O) +    Character Property @@ -139,6 +149,9 @@ syntax: ONIG_SYNTAX_RUBY (default)    $       end of the line    \b      word boundary    \B      non-word boundary +  \y      Extended Grapheme Cluster boundary +  \Y      Extended Grapheme Cluster non-boundary +    \A      beginning of string    \Z      end of string, or before newline at the end    \z      end of string @@ -207,11 +220,19 @@ syntax: ONIG_SYNTAX_RUBY (default)    (?#...)            comment -  (?imx-imx)         option on/off -                         i: ignore case -                         m: multi-line (dot (.) also matches newline) -                         x: extended form -  (?imx-imx:subexp)  option on/off for subexp +  (?imxWDSP-imxWDSP)         option on/off +                               i: ignore case +                               m: multi-line (dot (.) also matches newline) +                               x: extended form +                               W: ASCII only word (\w, \p{Word}, [[:word:]]) +                                  ASCII only word bound (\b) +                               D: ASCII only digit (\d, \p{Digit}, [[:digit:]]) +                               S: ASCII only space (\s, \p{Space}, [[:space:]]) +                               P: ASCII only POSIX properties (includes W,D,S) +                                  (alnum, alpha, blank, cntrl, digit, graph, +                                   lower, print, punct, space, upper, xdigit, word) + +  (?imxWDSP-imxWDSP:subexp)  option on/off for subexp    (?:subexp)         non-capturing group    (subexp)           capturing group @@ -245,24 +266,23 @@ syntax: ONIG_SYNTAX_RUBY (default)    (?~absent)         Absent repeater    (* proposed by Tanaka Akira)                       This works like .* (more precisely \O*), but it is                       limited by the range that does not include the string -                     match with absent. +                     match with <absent>.                       This is a written abbreviation of (?~|absent|\O*).                       \O* is used as a repeater.    (?~|absent|exp)    Absent expression  (* original)                       This works like "exp", but it is limited by the range -                     that does not include the string match with absent. +                     that does not include the string match with <absent>.                       ex. (?~|345|\d*)  "12345678"  ==> "12", "1", "" -  (?~|absent)        Absent cutter (* original) +  (?~|absent)        Absent stopper (* original)                       After passed this operator, string right range is limited                       at the point that does not include the string match whth -                     absent. +                     <absent>. -  (?~|)              Absent clear -                     Clear the effects caused by Absent cutters. -                     (* This operation is not cancelled by backtrack.) +  (?~|)              Range clear +                     Clear the effects caused by Absent stoppers.       * Nested Absent functions are not supported and the behavior         is undefined. @@ -273,7 +293,7 @@ syntax: ONIG_SYNTAX_RUBY (default)                 condition_exp can be a backreference number/name or a normal                 regular expression. -               When condition_exp is a backreference, both then_exp and +               When condition_exp is a backreference number/name, both then_exp and                 else_exp can be omitted.                 Then it works as a backreference validity checker. @@ -420,7 +440,7 @@ A-2. Original extensions  A-3. Missing features compared with perl 5.8.0     + \N{name} -   + \l,\u,\L,\U, \X, \C +   + \l,\u,\L,\U,\C     + (?{code})     + (??{code}) @@ -1,4 +1,4 @@ -鬼車 æ£è¦è¡¨ç¾ Version 6.5.0    2017/07/30 +鬼車 æ£è¦è¡¨ç¾ Version 6.6.0    2017/08/29  使用文法: ONIG_SYNTAX_RUBY (既定値) @@ -80,6 +80,16 @@    \O       çœŸä»»æ„æ–‡å—  (?m:.)      (* 原作) +  \X       拡張書記素房     (?>\O(?:\Y\O)*) + +           \Xã¯ç…§åˆã®é–‹å§‹ä½ç½®ãŒæ‹¡å¼µæ›¸è¨˜ç´ æˆ¿ã®å¢ƒç•Œã‹ã©ã†ã‹ã‚’確èªã—ãªã„。 +           ãれを確実ã«ã—ãŸã‘れã°ã€\y\Xã¨æ›¸ã‘ã°è‰¯ã„。 + +           Unicodeã®å ´åˆ: +             å‚ç…§ [Unicode Standard Annex #29: http://unicode.org/reports/tr29/] + +           Unicode以外ã®å ´åˆ:   (?>\r\n|\O) +    Character Property @@ -139,10 +149,13 @@    $       行末    \b      å˜èªžå¢ƒç•Œ    \B      éžå˜èªžå¢ƒç•Œ +  \y      拡張書記素房 境界 +  \Y      拡張書記素房 éžå¢ƒç•Œ +    \A      æ–‡å—åˆ—å…ˆé     \Z      æ–‡å—列末尾ã€ã¾ãŸã¯æ–‡å—åˆ—æœ«å°¾ã®æ”¹è¡Œã®ç›´å‰    \z      æ–‡å—列末尾 -  \G      ç…§åˆé–‹å§‹ä½ç½® +  \G      探索開始ä½ç½®    \K      ä¿æŒ (çµæžœã®é–‹å§‹ä½ç½®ã‚’ã“ã®ä½ç½®ã«ä¿ã¤) @@ -205,11 +218,19 @@  7. æ‹¡å¼µå¼é›†åˆ    (?#...)           注釈 -  (?imx-imx)        å¤ç«‹ã‚ªãƒ—ション -                      i: 大文å—å°æ–‡å—ç…§åˆ -                      m: 複数行 -                      x: æ‹¡å¼µå½¢å¼ -  (?imx-imx:å¼)     å¼ã‚ªãƒ—ション +  (?imxWDSP-imxWDSP)      å¤ç«‹ã‚ªãƒ—ション +                            i: 大文å—å°æ–‡å—ç…§åˆ +                            m: 複数行 +                            x: æ‹¡å¼µå½¢å¼ +                            W: wordãŒASCIIã®ã¿ (\w, \p{Word}, [[:word:]]) +                               word境界ãŒASCIIã®ã¿ (\b) +                            D: digitãŒASCIIã®ã¿ (\d, \p{Digit}, [[:digit:]]) +                            S: spaceãŒASCIIã®ã¿ (\s, \p{Space}, [[:space:]]) +                            P: POSIXプãƒãƒ‘ティãŒASCIIã®ã¿ (W,D,Sã‚’å…¨ã¦å«ã‚“ã§ã„ã‚‹) +                               (alnum, alpha, blank, cntrl, digit, graph, +                                lower, print, punct, space, upper, xdigit, word) + +  (?imxWDSP-imxWDSP:å¼)   å¼ã‚ªãƒ—ション    (å¼)              æ•ç²å¼é›†åˆ    (?:å¼)            éžæ•ç²å¼é›†åˆ @@ -245,40 +266,39 @@    <ä¸åœ¨æ©Ÿèƒ½ç¾¤>    (?~ä¸åœ¨å¼)        ä¸åœ¨ç¹°ã‚Šè¿”ã—  (*原案 ç”°ä¸å“²) -                    ã“れã¯.*ã®ã‚ˆã†ã«(よりæ£ç¢ºã«ã¯\O*)動作ã™ã‚‹ãŒã€ä¸åœ¨å¼ã« +                    ã“れã¯.*(よりæ£ç¢ºã«ã¯\O*)ã®ã‚ˆã†ã«å‹•作ã™ã‚‹ãŒã€<ä¸åœ¨å¼>ã«                      é©åˆã™ã‚‹æ–‡å—列をå«ã¾ãªã„範囲ã«åˆ¶é™ã•れる。                      ã“れã¯(?~|ä¸åœ¨å¼|\O*)ã®çœç•¥è¡¨è¨˜ã§ã‚る。 -                    \O*ã®éƒ¨åˆ†ã¯ãƒžãƒ«ãƒãƒ©ã‚¤ãƒ³ã‚ªãƒ—ション(?m)ã®å½±éŸ¿ã‚’å—ã‘ãªã„。    (?~|ä¸åœ¨å¼|å¼)    ä¸åœ¨å¼  (* 原作) -                    ã“れã¯"å¼"ã®ã‚ˆã†ã«å‹•作ã™ã‚‹ãŒã€ä¸åœ¨å¼ã«é©åˆã™ã‚‹æ–‡å—列を +                    ã“れã¯<å¼>ã®ã‚ˆã†ã«å‹•作ã™ã‚‹ãŒã€<ä¸åœ¨å¼>ã«é©åˆã™ã‚‹æ–‡å—列を                      å«ã¾ãªã„範囲ã«åˆ¶é™ã•れる。                      例 (?~|345|\d*)  "12345678"  ==> "12", "1", "" -  (?~|ä¸åœ¨å¼)       ä¸åœ¨åˆ‡æ– (* 原作) +  (?~|ä¸åœ¨å¼)       ä¸åœ¨åœæ¢ (* 原作)                      ã“ã®æ¼”ç®—åを通éŽã—ãŸå¾Œã¯ã€å¯¾è±¡æ–‡å—列ã®é©åˆç¯„å›²ã®æœ€å¾ŒãŒ -                    ä¸åœ¨å¼ã«é©åˆã™ã‚‹æ–‡å—列をå«ã¾ãªã„範囲ã«åˆ¶é™ã•れる。 +                    <ä¸åœ¨å¼>ã«é©åˆã™ã‚‹æ–‡å—列をå«ã¾ãªã„範囲ã«åˆ¶é™ã•れる。 -  (?~|)             ä¸åœ¨æ¶ˆåŽ» -                    ä¸åœ¨åˆ‡æ–ã®åŠ¹æžœã‚’æ¶ˆã—ã¦ã€åˆæœŸçŠ¶æ…‹ã«ã™ã‚‹ã€‚ -                    (* ã“ã®æ¼”ç®—åã®åŠ¹æžœã¯å¾Œé€€å†è©¦è¡Œã§ç„¡åŠ¹åŒ–ã•れãªã„) +  (?~|)             範囲消去 +                    ä¸åœ¨åœæ¢ã®åŠ¹æžœã‚’æ¶ˆã—ã¦ã€åˆæœŸçŠ¶æ…‹ã«ã™ã‚‹ã€‚ -     * ä¸åœ¨æ©Ÿèƒ½ã®å…¥ã‚Œåã¯ã‚µãƒãƒ¼ãƒˆã—ã¦ãŠã‚‰ãšã€æŒ™å‹•ã¯ä¸å®šã¨ã™ã‚‹ã€‚ +     * ä¸åœ¨æ©Ÿèƒ½ã®å…¥ã‚Œåã«ã¯å¯¾å¿œã—ã¦ãŠã‚‰ãšã€æŒ™å‹•ã¯ä¸å®šã¨ã™ã‚‹ã€‚    (?(æ¡ä»¶å¼)æˆåŠŸå¼|失敗å¼)    æ¡ä»¶å¼ãŒæˆåŠŸã™ã‚Œã°æˆåŠŸå¼ã€å¤±æ•—ã™ã‚Œã°å¤±æ•—å¼ã‚’実行ã™ã‚‹                               ã“ã®æ©Ÿèƒ½ã®å˜åœ¨ç†ç”±ã¯ã€æˆåŠŸå¼ãŒå¤±æ•—ã—ã¦ã‚‚失敗å¼ã«ã¯                               行ã‹ãªã„ã“ã¨ã€‚ã“れã¯ä»–ã®æ£è¦è¡¨ç¾ã§æ›¸ãã“ã¨ãŒã§ããªã„。 -                             ã‚‚ã†ã²ã¨ã¤ã¯ã€æ¡ä»¶å¼ãŒå¾Œæ–¹å‚ç…§ã®ã¨ãã€å¾Œæ–¹å‚ç…§å€¤ã®æœ‰åŠ¹æ€§ -                             を調ã¹ã‚‹(æ–‡å—列ã¨ãƒžãƒƒãƒãƒ³ã‚°ã¯ã—ãªã„)æ„味ã«ãªã‚‹ã€‚ +                             ã‚‚ã†ã²ã¨ã¤ã¯ã€æ¡ä»¶å¼ãŒå¾Œæ–¹å‚ç…§ã®ç•ªå·/åå‰ã®ã¨ã〠+                             後方å‚ç…§å€¤ã®æœ‰åŠ¹æ€§ã‚’èª¿ã¹ã‚‹(æ–‡å—列ã¨ç…§åˆã¯ã—ãªã„) +                             æ„味ã«ãªã‚‹ã€‚    (?(æ¡ä»¶å¼)æˆåŠŸå¼)           æ¡ä»¶å¼ãŒæˆåŠŸã™ã‚Œã°æˆåŠŸå¼ã‚’実行ã™ã‚‹                               (æ¡ä»¶å¼ãŒé€šå¸¸ã®å¼ã®ã¨ãã«ã¯ã€ã“ã®æ§‹æ–‡ã¯ä¸å¿…è¦ã ãŒ                                今ã®ã¨ã“ã‚エラーã«ã¯ã—ãªã„。) -                    æ¡ä»¶å¼ã¯å¾Œæ–¹å‚ç…§ã¾ãŸã¯é€šå¸¸ã®å¼ã‚’使用ã§ãる。 +                    æ¡ä»¶å¼ã¯å¾Œæ–¹å‚ç…§ã®ç•ªå·/åå‰ã¾ãŸã¯æ™®é€šã®å¼ã‚’使用ã§ãる。                      æ¡ä»¶å¼ãŒå¾Œæ–¹å‚ç…§ã®å ´åˆã€æˆåŠŸå¼ã¨å¤±æ•—å¼ã®ä¸¡æ–¹ã‚’çœç•¥å¯èƒ½ã§ã‚り〠                     ã“ã®å ´åˆã€å¾Œæ–¹å‚照値有効性を調ã¹ã‚‹(æˆåŠŸ/失敗)機能ã®ã¿ã«ãªã‚‹ã€‚ @@ -428,7 +448,7 @@  補記 3. Perl 5.8.0ã¨æ¯”較ã—ã¦å˜åœ¨ã—ãªã„機能     + \N{name} -   + \l,\u,\L,\U, \X, \C +   + \l,\u,\L,\U,\C     + (?{code})     + (??{code}) diff --git a/doc/UNICODE_PROPERTIES b/doc/UNICODE_PROPERTIES index dedc658..8521f0c 100644 --- a/doc/UNICODE_PROPERTIES +++ b/doc/UNICODE_PROPERTIES @@ -1,698 +1,698 @@  Unicode Properties (from Unicode Version: 8.0.0) -  1: Any -  2: Assigned -  3: C -  4: Cc -  5: Cf -  6: Cn -  7: Co -  8: Cs -  9: L - 10: LC - 11: Ll - 12: Lm - 13: Lo - 14: Lt - 15: Lu - 16: M - 17: Mc - 18: Me - 19: Mn - 20: N - 21: Nd - 22: Nl - 23: No - 24: P - 25: Pc - 26: Pd - 27: Pe - 28: Pf - 29: Pi - 30: Po - 31: Ps - 32: S - 33: Sc - 34: Sk - 35: Sm - 36: So - 37: Z - 38: Zl - 39: Zp - 40: Zs - 41: Math - 42: Alphabetic - 43: Lowercase - 44: Uppercase - 45: Cased - 46: Case_Ignorable + 15: ASCII_Hex_Digit + 16: Ahom + 17: Alphabetic + 18: Anatolian_Hieroglyphs + 19: Any + 20: Arabic + 21: Armenian + 22: Assigned + 23: Avestan + 24: Balinese + 25: Bamum + 26: Bassa_Vah + 27: Batak + 28: Bengali + 29: Bidi_Control + 30: Bopomofo + 31: Brahmi + 32: Braille + 33: Buginese + 34: Buhid + 35: C + 36: Canadian_Aboriginal + 37: Carian + 38: Case_Ignorable + 39: Cased + 40: Caucasian_Albanian + 41: Cc + 42: Cf + 43: Chakma + 44: Cham + 45: Changes_When_Casefolded + 46: Changes_When_Casemapped   47: Changes_When_Lowercased - 48: Changes_When_Uppercased - 49: Changes_When_Titlecased - 50: Changes_When_Casefolded - 51: Changes_When_Casemapped - 52: ID_Start - 53: ID_Continue - 54: XID_Start - 55: XID_Continue - 56: Default_Ignorable_Code_Point - 57: Grapheme_Extend - 58: Grapheme_Base - 59: Grapheme_Link - 60: Common - 61: Latin - 62: Greek - 63: Cyrillic - 64: Armenian - 65: Hebrew - 66: Arabic - 67: Syriac - 68: Thaana - 69: Devanagari - 70: Bengali - 71: Gurmukhi - 72: Gujarati - 73: Oriya - 74: Tamil - 75: Telugu - 76: Kannada - 77: Malayalam - 78: Sinhala - 79: Thai - 80: Lao - 81: Tibetan - 82: Myanmar - 83: Georgian - 84: Hangul - 85: Ethiopic - 86: Cherokee - 87: Canadian_Aboriginal - 88: Ogham - 89: Runic - 90: Khmer - 91: Mongolian - 92: Hiragana - 93: Katakana - 94: Bopomofo - 95: Han - 96: Yi - 97: Old_Italic - 98: Gothic - 99: Deseret -100: Inherited -101: Tagalog -102: Hanunoo -103: Buhid -104: Tagbanwa -105: Limbu -106: Tai_Le -107: Linear_B -108: Ugaritic -109: Shavian -110: Osmanya -111: Cypriot -112: Braille -113: Buginese -114: Coptic -115: New_Tai_Lue -116: Glagolitic -117: Tifinagh -118: Syloti_Nagri -119: Old_Persian -120: Kharoshthi -121: Balinese -122: Cuneiform -123: Phoenician -124: Phags_Pa -125: Nko -126: Sundanese -127: Lepcha -128: Ol_Chiki -129: Vai -130: Saurashtra -131: Kayah_Li -132: Rejang -133: Lycian -134: Carian -135: Lydian -136: Cham -137: Tai_Tham -138: Tai_Viet -139: Avestan -140: Egyptian_Hieroglyphs -141: Samaritan -142: Lisu -143: Bamum -144: Javanese -145: Meetei_Mayek -146: Imperial_Aramaic -147: Old_South_Arabian -148: Inscriptional_Parthian -149: Inscriptional_Pahlavi -150: Old_Turkic -151: Kaithi -152: Batak -153: Brahmi -154: Mandaic -155: Chakma -156: Meroitic_Cursive -157: Meroitic_Hieroglyphs -158: Miao -159: Sharada -160: Sora_Sompeng -161: Takri -162: Caucasian_Albanian -163: Bassa_Vah -164: Duployan -165: Elbasan -166: Grantha -167: Pahawh_Hmong -168: Khojki -169: Linear_A -170: Mahajani -171: Manichaean -172: Mende_Kikakui -173: Modi -174: Mro -175: Old_North_Arabian -176: Nabataean -177: Palmyrene -178: Pau_Cin_Hau -179: Old_Permic -180: Psalter_Pahlavi -181: Siddham -182: Khudawadi -183: Tirhuta -184: Warang_Citi -185: Ahom -186: Anatolian_Hieroglyphs -187: Hatran -188: Multani -189: Old_Hungarian -190: SignWriting -191: White_Space -192: Bidi_Control -193: Join_Control -194: Dash -195: Hyphen -196: Quotation_Mark -197: Terminal_Punctuation -198: Other_Math -199: Hex_Digit -200: ASCII_Hex_Digit -201: Other_Alphabetic -202: Ideographic -203: Diacritic -204: Extender -205: Other_Lowercase -206: Other_Uppercase -207: Noncharacter_Code_Point -208: Other_Grapheme_Extend -209: IDS_Binary_Operator -210: IDS_Trinary_Operator -211: Radical -212: Unified_Ideograph -213: Other_Default_Ignorable_Code_Point -214: Deprecated -215: Soft_Dotted -216: Logical_Order_Exception -217: Other_ID_Start -218: Other_ID_Continue -219: STerm -220: Variation_Selector -221: Pattern_White_Space -222: Pattern_Syntax -223: Unknown -224: Aghb -225: AHex -226: Arab -227: Armi -228: Armn -229: Avst -230: Bali -231: Bamu -232: Bass -233: Batk -234: Beng -235: Bidi_C -236: Bopo -237: Brah -238: Brai -239: Bugi -240: Buhd -241: Cakm -242: Cans -243: Cari -244: Cased_Letter -245: Cher -246: CI -247: Close_Punctuation -248: Combining_Mark -249: Connector_Punctuation -250: Control -251: Copt -252: Cprt -253: Currency_Symbol -254: CWCF -255: CWCM -256: CWL -257: CWT -258: CWU -259: Cyrl -260: Dash_Punctuation -261: Decimal_Number -262: Dep -263: Deva -264: DI -265: Dia -266: Dsrt -267: Dupl -268: Egyp -269: Elba -270: Enclosing_Mark -271: Ethi -272: Ext -273: Final_Punctuation -274: Format -275: Geor -276: Glag -277: Goth -278: Gran -279: Gr_Base -280: Grek -281: Gr_Ext -282: Gr_Link -283: Gujr -284: Guru -285: Hang -286: Hani -287: Hano -288: Hatr -289: Hebr -290: Hex -291: Hira -292: Hluw -293: Hmng -294: Hung -295: IDC -296: Ideo -297: IDS -298: IDSB -299: IDST -300: Initial_Punctuation -301: Ital -302: Java -303: Join_C -304: Kali -305: Kana -306: Khar -307: Khmr -308: Khoj -309: Knda -310: Kthi -311: Lana -312: Laoo -313: Latn -314: Lepc -315: Letter -316: Letter_Number -317: Limb -318: Lina -319: Linb -320: Line_Separator -321: LOE -322: Lowercase_Letter -323: Lyci -324: Lydi -325: Mahj -326: Mand -327: Mani -328: Mark -329: Math_Symbol -330: Mend -331: Merc -332: Mero -333: Mlym -334: Modifier_Letter -335: Modifier_Symbol -336: Mong -337: Mroo -338: Mtei -339: Mult -340: Mymr -341: Narb -342: Nbat -343: NChar -344: Nkoo -345: Nonspacing_Mark -346: Number -347: OAlpha -348: ODI -349: Ogam -350: OGr_Ext -351: OIDC -352: OIDS -353: Olck -354: OLower -355: OMath -356: Open_Punctuation -357: Orkh -358: Orya -359: Osma -360: Other -361: Other_Letter -362: Other_Number -363: Other_Punctuation -364: Other_Symbol -365: OUpper -366: Palm -367: Paragraph_Separator -368: Pat_Syn -369: Pat_WS -370: Pauc -371: Perm -372: Phag -373: Phli -374: Phlp -375: Phnx -376: Plrd -377: Private_Use -378: Prti -379: Punctuation -380: Qaac -381: Qaai -382: QMark -383: Rjng -384: Runr -385: Samr -386: Sarb -387: Saur -388: SD -389: Separator -390: Sgnw -391: Shaw -392: Shrd -393: Sidd -394: Sind -395: Sinh -396: Sora -397: Space_Separator -398: Spacing_Mark -399: Sund -400: Surrogate -401: Sylo -402: Symbol -403: Syrc -404: Tagb -405: Takr -406: Tale -407: Talu -408: Taml -409: Tavt -410: Telu -411: Term -412: Tfng -413: Tglg -414: Thaa -415: Tibt -416: Tirh -417: Titlecase_Letter -418: Ugar -419: UIdeo -420: Unassigned -421: Uppercase_Letter -422: Vaii -423: VS -424: Wara -425: WSpace -426: XIDC -427: XIDS -428: Xpeo -429: Xsux -430: Yiii -431: Zinh -432: Zyyy -433: Zzzz -434: In_Basic_Latin -435: In_Latin_1_Supplement -436: In_Latin_Extended_A -437: In_Latin_Extended_B -438: In_IPA_Extensions -439: In_Spacing_Modifier_Letters -440: In_Combining_Diacritical_Marks -441: In_Greek_and_Coptic -442: In_Cyrillic -443: In_Cyrillic_Supplement -444: In_Armenian -445: In_Hebrew -446: In_Arabic -447: In_Syriac -448: In_Arabic_Supplement -449: In_Thaana -450: In_NKo -451: In_Samaritan -452: In_Mandaic -453: In_Arabic_Extended_A -454: In_Devanagari -455: In_Bengali -456: In_Gurmukhi -457: In_Gujarati -458: In_Oriya -459: In_Tamil -460: In_Telugu -461: In_Kannada -462: In_Malayalam -463: In_Sinhala -464: In_Thai -465: In_Lao -466: In_Tibetan -467: In_Myanmar -468: In_Georgian -469: In_Hangul_Jamo -470: In_Ethiopic -471: In_Ethiopic_Supplement -472: In_Cherokee -473: In_Unified_Canadian_Aboriginal_Syllabics -474: In_Ogham -475: In_Runic -476: In_Tagalog -477: In_Hanunoo -478: In_Buhid -479: In_Tagbanwa -480: In_Khmer -481: In_Mongolian -482: In_Unified_Canadian_Aboriginal_Syllabics_Extended -483: In_Limbu -484: In_Tai_Le -485: In_New_Tai_Lue -486: In_Khmer_Symbols -487: In_Buginese -488: In_Tai_Tham -489: In_Combining_Diacritical_Marks_Extended -490: In_Balinese -491: In_Sundanese -492: In_Batak -493: In_Lepcha -494: In_Ol_Chiki -495: In_Sundanese_Supplement -496: In_Vedic_Extensions -497: In_Phonetic_Extensions -498: In_Phonetic_Extensions_Supplement -499: In_Combining_Diacritical_Marks_Supplement -500: In_Latin_Extended_Additional -501: In_Greek_Extended -502: In_General_Punctuation -503: In_Superscripts_and_Subscripts -504: In_Currency_Symbols -505: In_Combining_Diacritical_Marks_for_Symbols -506: In_Letterlike_Symbols -507: In_Number_Forms -508: In_Arrows -509: In_Mathematical_Operators -510: In_Miscellaneous_Technical -511: In_Control_Pictures -512: In_Optical_Character_Recognition -513: In_Enclosed_Alphanumerics -514: In_Box_Drawing -515: In_Block_Elements -516: In_Geometric_Shapes -517: In_Miscellaneous_Symbols -518: In_Dingbats -519: In_Miscellaneous_Mathematical_Symbols_A -520: In_Supplemental_Arrows_A -521: In_Braille_Patterns -522: In_Supplemental_Arrows_B -523: In_Miscellaneous_Mathematical_Symbols_B -524: In_Supplemental_Mathematical_Operators -525: In_Miscellaneous_Symbols_and_Arrows -526: In_Glagolitic -527: In_Latin_Extended_C -528: In_Coptic -529: In_Georgian_Supplement -530: In_Tifinagh -531: In_Ethiopic_Extended -532: In_Cyrillic_Extended_A -533: In_Supplemental_Punctuation -534: In_CJK_Radicals_Supplement -535: In_Kangxi_Radicals -536: In_Ideographic_Description_Characters -537: In_CJK_Symbols_and_Punctuation -538: In_Hiragana -539: In_Katakana -540: In_Bopomofo -541: In_Hangul_Compatibility_Jamo -542: In_Kanbun -543: In_Bopomofo_Extended -544: In_CJK_Strokes -545: In_Katakana_Phonetic_Extensions -546: In_Enclosed_CJK_Letters_and_Months -547: In_CJK_Compatibility -548: In_CJK_Unified_Ideographs_Extension_A -549: In_Yijing_Hexagram_Symbols -550: In_CJK_Unified_Ideographs -551: In_Yi_Syllables -552: In_Yi_Radicals -553: In_Lisu -554: In_Vai -555: In_Cyrillic_Extended_B -556: In_Bamum -557: In_Modifier_Tone_Letters -558: In_Latin_Extended_D -559: In_Syloti_Nagri -560: In_Common_Indic_Number_Forms -561: In_Phags_pa -562: In_Saurashtra -563: In_Devanagari_Extended -564: In_Kayah_Li -565: In_Rejang -566: In_Hangul_Jamo_Extended_A -567: In_Javanese -568: In_Myanmar_Extended_B -569: In_Cham -570: In_Myanmar_Extended_A -571: In_Tai_Viet -572: In_Meetei_Mayek_Extensions -573: In_Ethiopic_Extended_A -574: In_Latin_Extended_E -575: In_Cherokee_Supplement -576: In_Meetei_Mayek -577: In_Hangul_Syllables -578: In_Hangul_Jamo_Extended_B -579: In_High_Surrogates -580: In_High_Private_Use_Surrogates -581: In_Low_Surrogates -582: In_Private_Use_Area -583: In_CJK_Compatibility_Ideographs -584: In_Alphabetic_Presentation_Forms -585: In_Arabic_Presentation_Forms_A -586: In_Variation_Selectors -587: In_Vertical_Forms -588: In_Combining_Half_Marks -589: In_CJK_Compatibility_Forms -590: In_Small_Form_Variants -591: In_Arabic_Presentation_Forms_B -592: In_Halfwidth_and_Fullwidth_Forms -593: In_Specials -594: In_Linear_B_Syllabary -595: In_Linear_B_Ideograms -596: In_Aegean_Numbers -597: In_Ancient_Greek_Numbers -598: In_Ancient_Symbols -599: In_Phaistos_Disc -600: In_Lycian -601: In_Carian -602: In_Coptic_Epact_Numbers -603: In_Old_Italic -604: In_Gothic -605: In_Old_Permic -606: In_Ugaritic -607: In_Old_Persian -608: In_Deseret -609: In_Shavian -610: In_Osmanya -611: In_Elbasan -612: In_Caucasian_Albanian -613: In_Linear_A -614: In_Cypriot_Syllabary -615: In_Imperial_Aramaic -616: In_Palmyrene -617: In_Nabataean -618: In_Hatran -619: In_Phoenician -620: In_Lydian -621: In_Meroitic_Hieroglyphs -622: In_Meroitic_Cursive -623: In_Kharoshthi -624: In_Old_South_Arabian -625: In_Old_North_Arabian -626: In_Manichaean -627: In_Avestan -628: In_Inscriptional_Parthian -629: In_Inscriptional_Pahlavi -630: In_Psalter_Pahlavi -631: In_Old_Turkic -632: In_Old_Hungarian -633: In_Rumi_Numeral_Symbols -634: In_Brahmi -635: In_Kaithi -636: In_Sora_Sompeng -637: In_Chakma -638: In_Mahajani -639: In_Sharada -640: In_Sinhala_Archaic_Numbers -641: In_Khojki -642: In_Multani -643: In_Khudawadi -644: In_Grantha -645: In_Tirhuta -646: In_Siddham -647: In_Modi -648: In_Takri -649: In_Ahom -650: In_Warang_Citi -651: In_Pau_Cin_Hau -652: In_Cuneiform -653: In_Cuneiform_Numbers_and_Punctuation -654: In_Early_Dynastic_Cuneiform -655: In_Egyptian_Hieroglyphs -656: In_Anatolian_Hieroglyphs -657: In_Bamum_Supplement -658: In_Mro -659: In_Bassa_Vah -660: In_Pahawh_Hmong -661: In_Miao -662: In_Kana_Supplement -663: In_Duployan -664: In_Shorthand_Format_Controls -665: In_Byzantine_Musical_Symbols -666: In_Musical_Symbols -667: In_Ancient_Greek_Musical_Notation -668: In_Tai_Xuan_Jing_Symbols -669: In_Counting_Rod_Numerals -670: In_Mathematical_Alphanumeric_Symbols -671: In_Sutton_SignWriting -672: In_Mende_Kikakui -673: In_Arabic_Mathematical_Alphabetic_Symbols -674: In_Mahjong_Tiles -675: In_Domino_Tiles -676: In_Playing_Cards -677: In_Enclosed_Alphanumeric_Supplement -678: In_Enclosed_Ideographic_Supplement -679: In_Miscellaneous_Symbols_and_Pictographs -680: In_Emoticons -681: In_Ornamental_Dingbats -682: In_Transport_and_Map_Symbols -683: In_Alchemical_Symbols -684: In_Geometric_Shapes_Extended -685: In_Supplemental_Arrows_C -686: In_Supplemental_Symbols_and_Pictographs -687: In_CJK_Unified_Ideographs_Extension_B -688: In_CJK_Unified_Ideographs_Extension_C -689: In_CJK_Unified_Ideographs_Extension_D -690: In_CJK_Unified_Ideographs_Extension_E -691: In_CJK_Compatibility_Ideographs_Supplement -692: In_Tags -693: In_Variation_Selectors_Supplement -694: In_Supplementary_Private_Use_Area_A -695: In_Supplementary_Private_Use_Area_B -696: In_No_Block + 48: Changes_When_Titlecased + 49: Changes_When_Uppercased + 50: Cherokee + 51: Cn + 52: Co + 53: Common + 54: Coptic + 55: Cs + 56: Cuneiform + 57: Cypriot + 58: Cyrillic + 59: Dash + 60: Default_Ignorable_Code_Point + 61: Deprecated + 62: Deseret + 63: Devanagari + 64: Diacritic + 65: Duployan + 66: Egyptian_Hieroglyphs + 67: Elbasan + 68: Ethiopic + 69: Extender + 70: Georgian + 71: Glagolitic + 72: Gothic + 73: Grantha + 74: Grapheme_Base + 75: Grapheme_Extend + 76: Grapheme_Link + 77: Greek + 78: Gujarati + 79: Gurmukhi + 80: Han + 81: Hangul + 82: Hanunoo + 83: Hatran + 84: Hebrew + 85: Hex_Digit + 86: Hiragana + 87: Hyphen + 88: IDS_Binary_Operator + 89: IDS_Trinary_Operator + 90: ID_Continue + 91: ID_Start + 92: Ideographic + 93: Imperial_Aramaic + 94: Inherited + 95: Inscriptional_Pahlavi + 96: Inscriptional_Parthian + 97: Javanese + 98: Join_Control + 99: Kaithi +100: Kannada +101: Katakana +102: Kayah_Li +103: Kharoshthi +104: Khmer +105: Khojki +106: Khudawadi +107: L +108: LC +109: Lao +110: Latin +111: Lepcha +112: Limbu +113: Linear_A +114: Linear_B +115: Lisu +116: Ll +117: Lm +118: Lo +119: Logical_Order_Exception +120: Lowercase +121: Lt +122: Lu +123: Lycian +124: Lydian +125: M +126: Mahajani +127: Malayalam +128: Mandaic +129: Manichaean +130: Math +131: Mc +132: Me +133: Meetei_Mayek +134: Mende_Kikakui +135: Meroitic_Cursive +136: Meroitic_Hieroglyphs +137: Miao +138: Mn +139: Modi +140: Mongolian +141: Mro +142: Multani +143: Myanmar +144: N +145: Nabataean +146: Nd +147: New_Tai_Lue +148: Nko +149: Nl +150: No +151: Noncharacter_Code_Point +152: Ogham +153: Ol_Chiki +154: Old_Hungarian +155: Old_Italic +156: Old_North_Arabian +157: Old_Permic +158: Old_Persian +159: Old_South_Arabian +160: Old_Turkic +161: Oriya +162: Osmanya +163: Other_Alphabetic +164: Other_Default_Ignorable_Code_Point +165: Other_Grapheme_Extend +166: Other_ID_Continue +167: Other_ID_Start +168: Other_Lowercase +169: Other_Math +170: Other_Uppercase +171: P +172: Pahawh_Hmong +173: Palmyrene +174: Pattern_Syntax +175: Pattern_White_Space +176: Pau_Cin_Hau +177: Pc +178: Pd +179: Pe +180: Pf +181: Phags_Pa +182: Phoenician +183: Pi +184: Po +185: Ps +186: Psalter_Pahlavi +187: Quotation_Mark +188: Radical +189: Rejang +190: Runic +191: S +192: STerm +193: Samaritan +194: Saurashtra +195: Sc +196: Sharada +197: Shavian +198: Siddham +199: SignWriting +200: Sinhala +201: Sk +202: Sm +203: So +204: Soft_Dotted +205: Sora_Sompeng +206: Sundanese +207: Syloti_Nagri +208: Syriac +209: Tagalog +210: Tagbanwa +211: Tai_Le +212: Tai_Tham +213: Tai_Viet +214: Takri +215: Tamil +216: Telugu +217: Terminal_Punctuation +218: Thaana +219: Thai +220: Tibetan +221: Tifinagh +222: Tirhuta +223: Ugaritic +224: Unified_Ideograph +225: Unknown +226: Uppercase +227: Vai +228: Variation_Selector +229: Warang_Citi +230: White_Space +231: XID_Continue +232: XID_Start +233: Yi +234: Z +235: Zl +236: Zp +237: Zs + 40: Aghb + 15: AHex + 20: Arab + 93: Armi + 21: Armn + 23: Avst + 24: Bali + 25: Bamu + 26: Bass + 27: Batk + 28: Beng + 29: Bidi_C + 30: Bopo + 31: Brah + 32: Brai + 33: Bugi + 34: Buhd + 43: Cakm + 36: Cans + 37: Cari +108: Cased_Letter + 50: Cher + 38: CI +179: Close_Punctuation +125: Combining_Mark +177: Connector_Punctuation + 41: Control + 54: Copt + 57: Cprt +195: Currency_Symbol + 45: CWCF + 46: CWCM + 47: CWL + 48: CWT + 49: CWU + 58: Cyrl +178: Dash_Punctuation +146: Decimal_Number + 61: Dep + 63: Deva + 60: DI + 64: Dia + 62: Dsrt + 65: Dupl + 66: Egyp + 67: Elba +132: Enclosing_Mark + 68: Ethi + 69: Ext +180: Final_Punctuation + 42: Format + 70: Geor + 71: Glag + 72: Goth + 73: Gran + 74: Gr_Base + 77: Grek + 75: Gr_Ext + 76: Gr_Link + 78: Gujr + 79: Guru + 81: Hang + 80: Hani + 82: Hano + 83: Hatr + 84: Hebr + 85: Hex + 86: Hira + 18: Hluw +172: Hmng +154: Hung + 90: IDC + 92: Ideo + 91: IDS + 88: IDSB + 89: IDST +183: Initial_Punctuation +155: Ital + 97: Java + 98: Join_C +102: Kali +101: Kana +103: Khar +104: Khmr +105: Khoj +100: Knda + 99: Kthi +212: Lana +109: Laoo +110: Latn +111: Lepc +107: Letter +149: Letter_Number +112: Limb +113: Lina +114: Linb +235: Line_Separator +119: LOE +116: Lowercase_Letter +123: Lyci +124: Lydi +126: Mahj +128: Mand +129: Mani +125: Mark +202: Math_Symbol +134: Mend +135: Merc +136: Mero +127: Mlym +117: Modifier_Letter +201: Modifier_Symbol +140: Mong +141: Mroo +133: Mtei +142: Mult +143: Mymr +156: Narb +145: Nbat +151: NChar +148: Nkoo +138: Nonspacing_Mark +144: Number +163: OAlpha +164: ODI +152: Ogam +165: OGr_Ext +166: OIDC +167: OIDS +153: Olck +168: OLower +169: OMath +185: Open_Punctuation +160: Orkh +161: Orya +162: Osma + 35: Other +118: Other_Letter +150: Other_Number +184: Other_Punctuation +203: Other_Symbol +170: OUpper +173: Palm +236: Paragraph_Separator +174: Pat_Syn +175: Pat_WS +176: Pauc +157: Perm +181: Phag + 95: Phli +186: Phlp +182: Phnx +137: Plrd + 52: Private_Use + 96: Prti +171: Punctuation + 54: Qaac + 94: Qaai +187: QMark +189: Rjng +190: Runr +193: Samr +159: Sarb +194: Saur +204: SD +234: Separator +199: Sgnw +197: Shaw +196: Shrd +198: Sidd +106: Sind +200: Sinh +205: Sora +237: Space_Separator +131: Spacing_Mark +206: Sund + 55: Surrogate +207: Sylo +191: Symbol +208: Syrc +210: Tagb +214: Takr +211: Tale +147: Talu +215: Taml +213: Tavt +216: Telu +217: Term +221: Tfng +209: Tglg +218: Thaa +220: Tibt +222: Tirh +121: Titlecase_Letter +223: Ugar +224: UIdeo + 51: Unassigned +122: Uppercase_Letter +227: Vaii +228: VS +229: Wara +230: WSpace +231: XIDC +232: XIDS +158: Xpeo + 56: Xsux +233: Yiii + 94: Zinh + 53: Zyyy +225: Zzzz +238: In_Basic_Latin +239: In_Latin_1_Supplement +240: In_Latin_Extended_A +241: In_Latin_Extended_B +242: In_IPA_Extensions +243: In_Spacing_Modifier_Letters +244: In_Combining_Diacritical_Marks +245: In_Greek_and_Coptic +246: In_Cyrillic +247: In_Cyrillic_Supplement +248: In_Armenian +249: In_Hebrew +250: In_Arabic +251: In_Syriac +252: In_Arabic_Supplement +253: In_Thaana +254: In_NKo +255: In_Samaritan +256: In_Mandaic +257: In_Arabic_Extended_A +258: In_Devanagari +259: In_Bengali +260: In_Gurmukhi +261: In_Gujarati +262: In_Oriya +263: In_Tamil +264: In_Telugu +265: In_Kannada +266: In_Malayalam +267: In_Sinhala +268: In_Thai +269: In_Lao +270: In_Tibetan +271: In_Myanmar +272: In_Georgian +273: In_Hangul_Jamo +274: In_Ethiopic +275: In_Ethiopic_Supplement +276: In_Cherokee +277: In_Unified_Canadian_Aboriginal_Syllabics +278: In_Ogham +279: In_Runic +280: In_Tagalog +281: In_Hanunoo +282: In_Buhid +283: In_Tagbanwa +284: In_Khmer +285: In_Mongolian +286: In_Unified_Canadian_Aboriginal_Syllabics_Extended +287: In_Limbu +288: In_Tai_Le +289: In_New_Tai_Lue +290: In_Khmer_Symbols +291: In_Buginese +292: In_Tai_Tham +293: In_Combining_Diacritical_Marks_Extended +294: In_Balinese +295: In_Sundanese +296: In_Batak +297: In_Lepcha +298: In_Ol_Chiki +299: In_Sundanese_Supplement +300: In_Vedic_Extensions +301: In_Phonetic_Extensions +302: In_Phonetic_Extensions_Supplement +303: In_Combining_Diacritical_Marks_Supplement +304: In_Latin_Extended_Additional +305: In_Greek_Extended +306: In_General_Punctuation +307: In_Superscripts_and_Subscripts +308: In_Currency_Symbols +309: In_Combining_Diacritical_Marks_for_Symbols +310: In_Letterlike_Symbols +311: In_Number_Forms +312: In_Arrows +313: In_Mathematical_Operators +314: In_Miscellaneous_Technical +315: In_Control_Pictures +316: In_Optical_Character_Recognition +317: In_Enclosed_Alphanumerics +318: In_Box_Drawing +319: In_Block_Elements +320: In_Geometric_Shapes +321: In_Miscellaneous_Symbols +322: In_Dingbats +323: In_Miscellaneous_Mathematical_Symbols_A +324: In_Supplemental_Arrows_A +325: In_Braille_Patterns +326: In_Supplemental_Arrows_B +327: In_Miscellaneous_Mathematical_Symbols_B +328: In_Supplemental_Mathematical_Operators +329: In_Miscellaneous_Symbols_and_Arrows +330: In_Glagolitic +331: In_Latin_Extended_C +332: In_Coptic +333: In_Georgian_Supplement +334: In_Tifinagh +335: In_Ethiopic_Extended +336: In_Cyrillic_Extended_A +337: In_Supplemental_Punctuation +338: In_CJK_Radicals_Supplement +339: In_Kangxi_Radicals +340: In_Ideographic_Description_Characters +341: In_CJK_Symbols_and_Punctuation +342: In_Hiragana +343: In_Katakana +344: In_Bopomofo +345: In_Hangul_Compatibility_Jamo +346: In_Kanbun +347: In_Bopomofo_Extended +348: In_CJK_Strokes +349: In_Katakana_Phonetic_Extensions +350: In_Enclosed_CJK_Letters_and_Months +351: In_CJK_Compatibility +352: In_CJK_Unified_Ideographs_Extension_A +353: In_Yijing_Hexagram_Symbols +354: In_CJK_Unified_Ideographs +355: In_Yi_Syllables +356: In_Yi_Radicals +357: In_Lisu +358: In_Vai +359: In_Cyrillic_Extended_B +360: In_Bamum +361: In_Modifier_Tone_Letters +362: In_Latin_Extended_D +363: In_Syloti_Nagri +364: In_Common_Indic_Number_Forms +365: In_Phags_pa +366: In_Saurashtra +367: In_Devanagari_Extended +368: In_Kayah_Li +369: In_Rejang +370: In_Hangul_Jamo_Extended_A +371: In_Javanese +372: In_Myanmar_Extended_B +373: In_Cham +374: In_Myanmar_Extended_A +375: In_Tai_Viet +376: In_Meetei_Mayek_Extensions +377: In_Ethiopic_Extended_A +378: In_Latin_Extended_E +379: In_Cherokee_Supplement +380: In_Meetei_Mayek +381: In_Hangul_Syllables +382: In_Hangul_Jamo_Extended_B +383: In_High_Surrogates +384: In_High_Private_Use_Surrogates +385: In_Low_Surrogates +386: In_Private_Use_Area +387: In_CJK_Compatibility_Ideographs +388: In_Alphabetic_Presentation_Forms +389: In_Arabic_Presentation_Forms_A +390: In_Variation_Selectors +391: In_Vertical_Forms +392: In_Combining_Half_Marks +393: In_CJK_Compatibility_Forms +394: In_Small_Form_Variants +395: In_Arabic_Presentation_Forms_B +396: In_Halfwidth_and_Fullwidth_Forms +397: In_Specials +398: In_Linear_B_Syllabary +399: In_Linear_B_Ideograms +400: In_Aegean_Numbers +401: In_Ancient_Greek_Numbers +402: In_Ancient_Symbols +403: In_Phaistos_Disc +404: In_Lycian +405: In_Carian +406: In_Coptic_Epact_Numbers +407: In_Old_Italic +408: In_Gothic +409: In_Old_Permic +410: In_Ugaritic +411: In_Old_Persian +412: In_Deseret +413: In_Shavian +414: In_Osmanya +415: In_Elbasan +416: In_Caucasian_Albanian +417: In_Linear_A +418: In_Cypriot_Syllabary +419: In_Imperial_Aramaic +420: In_Palmyrene +421: In_Nabataean +422: In_Hatran +423: In_Phoenician +424: In_Lydian +425: In_Meroitic_Hieroglyphs +426: In_Meroitic_Cursive +427: In_Kharoshthi +428: In_Old_South_Arabian +429: In_Old_North_Arabian +430: In_Manichaean +431: In_Avestan +432: In_Inscriptional_Parthian +433: In_Inscriptional_Pahlavi +434: In_Psalter_Pahlavi +435: In_Old_Turkic +436: In_Old_Hungarian +437: In_Rumi_Numeral_Symbols +438: In_Brahmi +439: In_Kaithi +440: In_Sora_Sompeng +441: In_Chakma +442: In_Mahajani +443: In_Sharada +444: In_Sinhala_Archaic_Numbers +445: In_Khojki +446: In_Multani +447: In_Khudawadi +448: In_Grantha +449: In_Tirhuta +450: In_Siddham +451: In_Modi +452: In_Takri +453: In_Ahom +454: In_Warang_Citi +455: In_Pau_Cin_Hau +456: In_Cuneiform +457: In_Cuneiform_Numbers_and_Punctuation +458: In_Early_Dynastic_Cuneiform +459: In_Egyptian_Hieroglyphs +460: In_Anatolian_Hieroglyphs +461: In_Bamum_Supplement +462: In_Mro +463: In_Bassa_Vah +464: In_Pahawh_Hmong +465: In_Miao +466: In_Kana_Supplement +467: In_Duployan +468: In_Shorthand_Format_Controls +469: In_Byzantine_Musical_Symbols +470: In_Musical_Symbols +471: In_Ancient_Greek_Musical_Notation +472: In_Tai_Xuan_Jing_Symbols +473: In_Counting_Rod_Numerals +474: In_Mathematical_Alphanumeric_Symbols +475: In_Sutton_SignWriting +476: In_Mende_Kikakui +477: In_Arabic_Mathematical_Alphabetic_Symbols +478: In_Mahjong_Tiles +479: In_Domino_Tiles +480: In_Playing_Cards +481: In_Enclosed_Alphanumeric_Supplement +482: In_Enclosed_Ideographic_Supplement +483: In_Miscellaneous_Symbols_and_Pictographs +484: In_Emoticons +485: In_Ornamental_Dingbats +486: In_Transport_and_Map_Symbols +487: In_Alchemical_Symbols +488: In_Geometric_Shapes_Extended +489: In_Supplemental_Arrows_C +490: In_Supplemental_Symbols_and_Pictographs +491: In_CJK_Unified_Ideographs_Extension_B +492: In_CJK_Unified_Ideographs_Extension_C +493: In_CJK_Unified_Ideographs_Extension_D +494: In_CJK_Unified_Ideographs_Extension_E +495: In_CJK_Compatibility_Ideographs_Supplement +496: In_Tags +497: In_Variation_Selectors_Supplement +498: In_Supplementary_Private_Use_Area_A +499: In_Supplementary_Private_Use_Area_B +500: In_No_Block @@ -8,7 +8,7 @@  <h1>Oniguruma</h1> (<a href="index_ja.html">Japanese</a>)  <p> -(c) K.Kosako, updated at: 2017/08/03 +(c) K.Kosako, updated at: 2017/08/30  </p>  <dl> @@ -16,6 +16,8 @@  <dt><b>What's new</b>  </font>  <ul> +<li>2017/08/30: Version 6.6.1 released.</li> +<li>2017/08/28: Version 6.6.0 released.</li>  <li>2017/08/03: Version 6.5.0 released.</li>  <li>2017/07/03: Version 6.4.0 released.</li>  <li>2017/05/29: Version 6.3.0 released.</li> diff --git a/index_ja.html b/index_ja.html index 52f0412..4e5265c 100644 --- a/index_ja.html +++ b/index_ja.html @@ -8,7 +8,7 @@  <h1>鬼車</h1>  <p> -(c) K.Kosako, 最終更新: 2017/08/03 +(c) K.Kosako, 最終更新: 2017/08/30  </p>  <dl> @@ -16,6 +16,8 @@  <dt><b>更新情報</b>  </font>  <ul> +<li>2017/08/30: Version 6.6.1 リリース</li> +<li>2017/08/28: Version 6.6.0 リリース</li>  <li>2017/08/03: Version 6.5.0 リリース</li>  <li>2017/07/03: Version 6.4.0 リリース</li>  <li>2017/05/29: Version 6.3.0 リリース</li> diff --git a/src/Makefile.am b/src/Makefile.am index 49f5f9f..be35b24 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -38,6 +38,8 @@ libonig_la_LDFLAGS = -version-info $(LTVERSION)  EXTRA_DIST = koi8.c mktable.c \  	unicode_fold_data.c unicode_property_data.c \  	unicode_property_data_posix.c \ +	unicode_egcb_data.c \ +	make_unicode_egcb.sh make_unicode_egcb_data.py \  	make_unicode_fold.sh make_unicode_fold_data.py \  	make_unicode_property.sh make_unicode_property_data.py \  	gperf_fold_key_conv.py gperf_unfold_key_conv.py \ diff --git a/src/euc_jp.c b/src/euc_jp.c index 3b54e95..756bdc7 100644 --- a/src/euc_jp.c +++ b/src/euc_jp.c @@ -2,7 +2,7 @@    euc_jp.c -  Oniguruma (regular expression library)  **********************************************************************/  /*- - * Copyright (c) 2002-2016  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp> + * Copyright (c) 2002-2017  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>   * All rights reserved.   *   * Redistribution and use in source and binary forms, with or without @@ -252,7 +252,7 @@ is_code_ctype(OnigCodePoint code, unsigned int ctype)        return ONIGENC_IS_ASCII_CODE_CTYPE(code, ctype);      else {        if (CTYPE_IS_WORD_GRAPH_PRINT(ctype)) { -	return (code_to_mbclen(code) > 1 ? TRUE : FALSE); +        return (code_to_mbclen(code) > 1 ? TRUE : FALSE);        }      }    } diff --git a/src/gperf_fold_key_conv.py b/src/gperf_fold_key_conv.py index bdf57ad..5267aa4 100755 --- a/src/gperf_fold_key_conv.py +++ b/src/gperf_fold_key_conv.py @@ -1,5 +1,7 @@  #!/usr/bin/python  # -*- coding: utf-8 -*- +# gperf_fold_key_conv.py +# Copyright (c) 2016-2017  K.Kosako  import sys  import re diff --git a/src/gperf_unfold_key_conv.py b/src/gperf_unfold_key_conv.py index 34f9c2f..6f3ccb4 100755 --- a/src/gperf_unfold_key_conv.py +++ b/src/gperf_unfold_key_conv.py @@ -1,5 +1,7 @@  #!/usr/bin/python  # -*- coding: utf-8 -*- +# gperf_unfold_key_conv.py +# Copyright (c) 2016-2017  K.Kosako  import sys  import re diff --git a/src/make_unicode_egcb.sh b/src/make_unicode_egcb.sh new file mode 100755 index 0000000..89cfa18 --- /dev/null +++ b/src/make_unicode_egcb.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +NAME=unicode_egcb_data + +./make_unicode_egcb_data.py > ${NAME}.c + +exit 0 diff --git a/src/make_unicode_egcb_data.py b/src/make_unicode_egcb_data.py new file mode 100755 index 0000000..3f958eb --- /dev/null +++ b/src/make_unicode_egcb_data.py @@ -0,0 +1,236 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# make_unicode_egcb_data.py +# Copyright (c) 2017  K.Kosako + +import sys +import re + +MAX_CODE_POINT = 0x10ffff + +PR_TOTAL_REG = re.compile("#\s*Total\s+(?:code\s+points|elements):") +PR_LINE_REG  = re.compile("([0-9A-Fa-f]+)(?:..([0-9A-Fa-f]+))?\s*;\s*(\w+)") +PA_LINE_REG  = re.compile("(\w+)\s*;\s*(\w+)") +PVA_LINE_REG = re.compile("(sc|gc)\s*;\s*(\w+)\s*;\s*(\w+)(?:\s*;\s*(\w+))?") +BL_LINE_REG  = re.compile("([0-9A-Fa-f]+)\.\.([0-9A-Fa-f]+)\s*;\s*(.*)") +VERSION_REG  = re.compile("#\s*.*-(\d+\.\d+\.\d+)\.txt") + +VERSION_INFO = None +DIC  = { } +PROPS = [] +PropIndex = { } + +def check_version_info(s): +  global VERSION_INFO +  m = VERSION_REG.match(s) +  if m is not None: +    VERSION_INFO = m.group(1) + +def print_ranges(ranges): +  for (start, end) in ranges: +    print "0x%06x, 0x%06x" % (start, end) + +def print_prop_and_index(prop, i): +  print "%-35s %3d" % (prop + ',', i) +  PropIndex[prop] = i + +def dic_find_by_value(dic, v): +  for key, val in dic.items(): +    if val == v: +      return key + +  return None + + +def normalize_ranges(in_ranges, sort=False): +  if sort: +    ranges = sorted(in_ranges) +  else: +    ranges = in_ranges + +  r = [] +  prev = None +  for (start, end) in ranges: +    if prev >= start - 1: +      (pstart, pend) = r.pop() +      end = max(pend, end) +      start = pstart + +    r.append((start, end)) +    prev = end + +  return r + +def inverse_ranges(in_ranges): +  r = [] +  prev = 0x000000 +  for (start, end) in in_ranges: +    if prev < start: +      r.append((prev, start - 1)) + +    prev = end + 1 + +  if prev < MAX_CODE_POINT: +    r.append((prev, MAX_CODE_POINT)) + +  return r + +def add_ranges(r1, r2): +  r = r1 + r2 +  return normalize_ranges(r, True) + +def sub_one_range(one_range, rs): +  r = [] +  (s1, e1) = one_range +  n = len(rs) +  for i in range(0, n): +    (s2, e2) = rs[i] +    if s2 >= s1 and s2 <= e1: +      if s2 > s1: +        r.append((s1, s2 - 1)) +      if e2 >= e1: +        return r + +      s1 = e2 + 1 +    elif s2 < s1 and e2 >= s1: +      if e2 < e1: +        s1 = e2 + 1 +      else: +        return r + +  r.append((s1, e1)) +  return r + +def sub_ranges(r1, r2): +  r = [] +  for one_range in r1: +    rs = sub_one_range(one_range, r2) +    r.extend(rs) + +  return r + +def add_ranges_in_dic(dic): +  r = [] +  for k, v in dic.items(): +    r = r + v + +  return normalize_ranges(r, True) + +def normalize_ranges_in_dic(dic, sort=False): +  for k, v in dic.items(): +    r = normalize_ranges(v, sort) +    dic[k] = r + +def merge_dic(to_dic, from_dic): +  to_keys   = to_dic.keys() +  from_keys = from_dic.keys() +  common = list(set(to_keys) & set(from_keys)) +  if len(common) != 0: +    print >> sys.stderr, "merge_dic: collision: %s" % sorted(common) + +  to_dic.update(from_dic) + +def merge_props(to_props, from_props): +  common = list(set(to_props) & set(from_props)) +  if len(common) != 0: +    print >> sys.stderr, "merge_props: collision: %s" % sorted(common) + +  to_props.extend(from_props) + +def add_range_into_dic(dic, name, start, end): +  d = dic.get(name, None) +  if d is None: +    d = [(start, end)] +    dic[name] = d +  else: +    d.append((start, end)) + +def list_sub(a, b): +  x = set(a) - set(b) +  return list(x) + +def parse_properties(path): +  with open(path, 'r') as f: +    dic = { } +    prop = None +    props = [] +    for line in f: +      s = line.strip() +      if len(s) == 0: +        continue + +      if s[0] == '#': +        if VERSION_INFO is None: +          check_version_info(s) + +      m = PR_LINE_REG.match(s) +      if m: +        prop = m.group(3) +        if m.group(2): +          start = int(m.group(1), 16) +          end   = int(m.group(2), 16) +          add_range_into_dic(dic, prop, start, end) +        else: +          start = int(m.group(1), 16) +          add_range_into_dic(dic, prop, start, start) + +      elif PR_TOTAL_REG.match(s) is not None: +        props.append(prop) + +  normalize_ranges_in_dic(dic) +  return (dic, props) + + +### main ### +argv = sys.argv +argc = len(argv) + +dic, props = parse_properties('GraphemeBreakProperty.txt') +merge_dic(DIC, dic) +merge_props(PROPS, props) + +PROPS = sorted(PROPS) + +print '/* Copyright (c) 2017  K.Kosako */' +print '/* Generated by make_gcb_data.py. */' +print '' +if VERSION_INFO is not None: +  print "#define GRAPHEME_BREAK_PROPERTY_VERSION  %s" % re.sub(r'[\.-]', '_', VERSION_INFO) +  print '' + +ranges = [] +for prop in PROPS: +  rs = DIC[prop] +  for (start, end) in rs: +    ranges.append((start, end, prop)) + +ranges = sorted(ranges, key=lambda x: x[0]) + +prev = -1 +for (start, end, prop) in ranges: +  if prev >= start: +    raise ValueError("{2}:{0} - {1} range overlap prev value {3}".format(start, end, prop, prev)) + + +print '/*' +for prop in PROPS: +  print "%s" % prop +print '*/' +print '' + +num_ranges = len(ranges) +print "static int EGCB_RANGE_NUM = %d;" % num_ranges + +print 'static EGCB_RANGE_TYPE EGCB_RANGES[] = {' +for i, (start, end, prop) in enumerate(ranges): +  if i == num_ranges - 1: +    comma = '' +  else: +    comma = ',' + +  type_name = 'EGCB_' + prop +  print " {0x%06x, 0x%06x, %s }%s" % (start, end, type_name, comma) + +print '};' + +sys.exit(0) diff --git a/src/make_unicode_fold_data.py b/src/make_unicode_fold_data.py index 3f7d416..f4ad321 100755 --- a/src/make_unicode_fold_data.py +++ b/src/make_unicode_fold_data.py @@ -1,5 +1,7 @@  #!/usr/bin/python  # -*- coding: utf-8 -*- +# make_unicode_fold_data.py +# Copyright (c) 2016-2017  K.Kosako  import sys  import re @@ -15,7 +17,7 @@ DataName = 'OnigUnicodeFolds'  ENCODING = 'utf-8'  LINE_REG = re.compile("([0-9A-F]{1,6}); (.); ([0-9A-F]{1,6})(?: ([0-9A-F]{1,6}))?(?: ([0-9A-F]{1,6}))?;(?:\s*#\s*)(.*)") -VERSION_REG  = re.compile("#.*-(\d\.\d\.\d)\.txt") +VERSION_REG  = re.compile("#.*-(\d+\.\d+\.\d+)\.txt")  VERSION_INFO = None diff --git a/src/make_unicode_property_data.py b/src/make_unicode_property_data.py index 25ed092..51986b6 100755 --- a/src/make_unicode_property_data.py +++ b/src/make_unicode_property_data.py @@ -1,9 +1,13 @@  #!/usr/bin/python  # -*- coding: utf-8 -*- +# make_unicode_property_data.py +# Copyright (c) 2016-2017  K.Kosako  import sys  import re +INCLUDE_GRAPHEME_CLUSTER_DATA = False +  POSIX_LIST = [      'NEWLINE', 'Alpha', 'Blank', 'Cntrl', 'Digit', 'Graph', 'Lower',      'Print', 'Punct', 'Space', 'Upper', 'XDigit', 'Word', 'Alnum', 'ASCII' @@ -11,6 +15,8 @@ POSIX_LIST = [  MAX_CODE_POINT = 0x10ffff +GRAPHEME_CLUSTER_BREAK_NAME_PREFIX = 'Grapheme_Cluster_Break_' +  UD_FIRST_REG = re.compile("<.+,\s*First>")  UD_LAST_REG  = re.compile("<.+,\s*Last>")  PR_TOTAL_REG = re.compile("#\s*Total\s+code\s+points:") @@ -18,7 +24,7 @@ PR_LINE_REG  = re.compile("([0-9A-Fa-f]+)(?:..([0-9A-Fa-f]+))?\s*;\s*(\w+)")  PA_LINE_REG  = re.compile("(\w+)\s*;\s*(\w+)")  PVA_LINE_REG = re.compile("(sc|gc)\s*;\s*(\w+)\s*;\s*(\w+)(?:\s*;\s*(\w+))?")  BL_LINE_REG  = re.compile("([0-9A-Fa-f]+)\.\.([0-9A-Fa-f]+)\s*;\s*(.*)") -VERSION_REG  = re.compile("#\s*.*-(\d\.\d\.\d)\.txt") +VERSION_REG  = re.compile("#\s*.*-(\d+\.\d+\.\d+)\.txt")  VERSION_INFO = None  DIC  = { } @@ -27,373 +33,377 @@ PropIndex = { }  PROPERTY_NAME_MAX_LEN = 0  def normalize_prop_name(name): -    name = re.sub(r'[ _]', '', name) -    name = name.lower() -    return name +  name = re.sub(r'[ _]', '', name) +  name = name.lower() +  return name  def fix_block_name(name): -    s = re.sub(r'[- ]+', '_', name) -    return 'In_' + s +  s = re.sub(r'[- ]+', '_', name) +  return 'In_' + s  def check_version_info(s): -    global VERSION_INFO -    m = VERSION_REG.match(s) -    if m is not None: -        VERSION_INFO = m.group(1) +  global VERSION_INFO +  m = VERSION_REG.match(s) +  if m is not None: +    VERSION_INFO = m.group(1)  def print_ranges(ranges): -    for (start, end) in ranges: -        print "0x%06x, 0x%06x" % (start, end) +  for (start, end) in ranges: +    print "0x%06x, 0x%06x" % (start, end) -    print len(ranges) +  print len(ranges)  def print_prop_and_index(prop, i): -    print "%-35s %3d" % (prop + ',', i) -    PropIndex[prop] = i +  print "%-35s %3d" % (prop + ',', i) +  PropIndex[prop] = i -print_cache = { } +PRINT_CACHE = { }  def print_property(prop, data, desc): -    print '' -    print "/* PROPERTY: '%s': %s */" % (prop, desc) +  print '' +  print "/* PROPERTY: '%s': %s */" % (prop, desc) -    prev_prop = dic_find_by_value(print_cache, data) -    if prev_prop is not None: -        print "#define CR_%s CR_%s" % (prop, prev_prop) -    else: -        print_cache[prop] = data -        print "static const OnigCodePoint" -        print "CR_%s[] = { %d," % (prop, len(data)) -        for (start, end) in data: -            print "0x%04x, 0x%04x," % (start, end) +  prev_prop = dic_find_by_value(PRINT_CACHE, data) +  if prev_prop is not None: +    print "#define CR_%s CR_%s" % (prop, prev_prop) +  else: +    PRINT_CACHE[prop] = data +    print "static const OnigCodePoint" +    print "CR_%s[] = { %d," % (prop, len(data)) +    for (start, end) in data: +      print "0x%04x, 0x%04x," % (start, end) -        print "}; /* END of CR_%s */" % prop +    print "}; /* END of CR_%s */" % prop  def dic_find_by_value(dic, v): -    for key, val in dic.items(): -        if val == v: -            return key +  for key, val in dic.items(): +    if val == v: +      return key -    return None +  return None  def normalize_ranges(in_ranges, sort=False): -    if sort: -        ranges = sorted(in_ranges) -    else: -        ranges = in_ranges +  if sort: +    ranges = sorted(in_ranges) +  else: +    ranges = in_ranges -    r = [] -    prev = None -    for (start, end) in ranges: -        if prev >= start - 1: -            (pstart, pend) = r.pop() -            end = max(pend, end) -            start = pstart +  r = [] +  prev = None +  for (start, end) in ranges: +    if prev >= start - 1: +      (pstart, pend) = r.pop() +      end = max(pend, end) +      start = pstart -        r.append((start, end)) -        prev = end +    r.append((start, end)) +    prev = end -    return r +  return r  def inverse_ranges(in_ranges): -    r = [] -    prev = 0x000000 -    for (start, end) in in_ranges: -        if prev < start: -            r.append((prev, start - 1)) +  r = [] +  prev = 0x000000 +  for (start, end) in in_ranges: +    if prev < start: +      r.append((prev, start - 1)) -        prev = end + 1 +    prev = end + 1 -    if prev < MAX_CODE_POINT: -        r.append((prev, MAX_CODE_POINT)) +  if prev < MAX_CODE_POINT: +    r.append((prev, MAX_CODE_POINT)) -    return r +  return r  def add_ranges(r1, r2): -    r = r1 + r2 -    return normalize_ranges(r, True) +  r = r1 + r2 +  return normalize_ranges(r, True)  def sub_one_range(one_range, rs): -    r = [] -    (s1, e1) = one_range -    n = len(rs) -    for i in range(0, n): -        (s2, e2) = rs[i] -        if s2 >= s1 and s2 <= e1: -            if s2 > s1: -                r.append((s1, s2 - 1)) -            if e2 >= e1: -                return r - -            s1 = e2 + 1 -        elif s2 < s1 and e2 >= s1: -            if e2 < e1: -                s1 = e2 + 1 -            else: -                return r - -    r.append((s1, e1)) -    return r +  r = [] +  (s1, e1) = one_range +  n = len(rs) +  for i in range(0, n): +    (s2, e2) = rs[i] +    if s2 >= s1 and s2 <= e1: +      if s2 > s1: +        r.append((s1, s2 - 1)) +      if e2 >= e1: +        return r + +      s1 = e2 + 1 +    elif s2 < s1 and e2 >= s1: +      if e2 < e1: +        s1 = e2 + 1 +      else: +        return r + +  r.append((s1, e1)) +  return r  def sub_ranges(r1, r2): -    r = [] -    for one_range in r1: -        rs = sub_one_range(one_range, r2) -        r.extend(rs) +  r = [] +  for one_range in r1: +    rs = sub_one_range(one_range, r2) +    r.extend(rs) -    return r +  return r  def add_ranges_in_dic(dic): -    r = [] -    for k, v in dic.items(): -        r = r + v +  r = [] +  for k, v in dic.items(): +    r = r + v -    return normalize_ranges(r, True) +  return normalize_ranges(r, True)  def normalize_ranges_in_dic(dic, sort=False): -    for k, v in dic.items(): -        r = normalize_ranges(v, sort) -        dic[k] = r +  for k, v in dic.items(): +    r = normalize_ranges(v, sort) +    dic[k] = r  def merge_dic(to_dic, from_dic): -    to_keys   = to_dic.keys() -    from_keys = from_dic.keys() -    common = list(set(to_keys) & set(from_keys)) -    if len(common) != 0: -        print >> sys.stderr, "merge_dic: collision: %s" % sorted(common) +  to_keys   = to_dic.keys() +  from_keys = from_dic.keys() +  common = list(set(to_keys) & set(from_keys)) +  if len(common) != 0: +    print >> sys.stderr, "merge_dic: collision: %s" % sorted(common) -    to_dic.update(from_dic) +  to_dic.update(from_dic)  def merge_props(to_props, from_props): -    common = list(set(to_props) & set(from_props)) -    if len(common) != 0: -        print >> sys.stderr, "merge_props: collision: %s" % sorted(common) +  common = list(set(to_props) & set(from_props)) +  if len(common) != 0: +    print >> sys.stderr, "merge_props: collision: %s" % sorted(common) -    to_props.extend(from_props) +  to_props.extend(from_props)  def add_range_into_dic(dic, name, start, end): -    d = dic.get(name, None) -    if d is None: -        d = [(start, end)] -        dic[name] = d -    else: -        d.append((start, end)) +  d = dic.get(name, None) +  if d is None: +    d = [(start, end)] +    dic[name] = d +  else: +    d.append((start, end))  def list_sub(a, b): -    x = set(a) - set(b) -    return list(x) +  x = set(a) - set(b) +  return list(x)  def parse_unicode_data_file(f): +  dic = { } +  assigned = [] +  for line in f: +    s = line.strip() +    if len(s) == 0: +      continue +    if s[0] == '#': +      continue + +    a = s.split(';') +    code = int(a[0], 16) +    desc = a[1] +    prop = a[2] +    if UD_FIRST_REG.match(desc) is not None: +      start = code +      end   = None +    elif UD_LAST_REG.match(desc) is not None: +      end = code +    else: +      start = end = code + +    if end is not None: +      assigned.append((start, end)) +      add_range_into_dic(dic, prop, start, end) +      if len(prop) == 2: +        add_range_into_dic(dic, prop[0:1], start, end) + +  normalize_ranges_in_dic(dic) +  return dic, assigned + +def parse_properties(path, klass, prop_prefix = None): +  with open(path, 'r') as f:      dic = { } -    assigned = [] +    prop = None +    props = []      for line in f: -        s = line.strip() -        if len(s) == 0: -            continue -        if s[0] == '#': -            continue - -        a = s.split(';') -        code = int(a[0], 16) -        desc = a[1] -        prop = a[2] -        if UD_FIRST_REG.match(desc) is not None: -            start = code -            end   = None -        elif UD_LAST_REG.match(desc) is not None: -            end = code +      s = line.strip() +      if len(s) == 0: +        continue + +      if s[0] == '#': +        if VERSION_INFO is None: +          check_version_info(s) + +      m = PR_LINE_REG.match(s) +      if m: +        prop = m.group(3) +        if prop_prefix is not None: +          prop = prop_prefix + prop + +        if m.group(2): +          start = int(m.group(1), 16) +          end   = int(m.group(2), 16) +          add_range_into_dic(dic, prop, start, end)          else: -            start = end = code - -        if end is not None: -            assigned.append((start, end)) -            add_range_into_dic(dic, prop, start, end) -            if len(prop) == 2: -                add_range_into_dic(dic, prop[0:1], start, end) - -    normalize_ranges_in_dic(dic) -    return dic, assigned - -def parse_properties(path, klass): -    with open(path, 'r') as f: -        dic = { } -        prop = None -        props = [] -        for line in f: -            s = line.strip() -            if len(s) == 0: -                continue - -            if s[0] == '#': -                if VERSION_INFO is None: -                    check_version_info(s) - -            m = PR_LINE_REG.match(s) -            if m: -                prop = m.group(3) -                if m.group(2): -                    start = int(m.group(1), 16) -                    end   = int(m.group(2), 16) -                    add_range_into_dic(dic, prop, start, end) -                else: -                    start = int(m.group(1), 16) -                    add_range_into_dic(dic, prop, start, start) - -            elif PR_TOTAL_REG.match(s) is not None: -                KDIC[prop] = klass -                props.append(prop) - -    normalize_ranges_in_dic(dic) -    return (dic, props) +          start = int(m.group(1), 16) +          add_range_into_dic(dic, prop, start, start) + +      elif PR_TOTAL_REG.match(s) is not None: +        KDIC[prop] = klass +        props.append(prop) + +  normalize_ranges_in_dic(dic) +  return (dic, props)  def parse_property_aliases(path): -    a = { } -    with open(path, 'r') as f: -        for line in f: -            s = line.strip() -            if len(s) == 0: -                continue +  a = { } +  with open(path, 'r') as f: +    for line in f: +      s = line.strip() +      if len(s) == 0: +        continue -            m = PA_LINE_REG.match(s) -            if not(m): -                continue +      m = PA_LINE_REG.match(s) +      if not(m): +        continue -            if m.group(1) == m.group(2): -                continue +      if m.group(1) == m.group(2): +        continue -            a[m.group(1)] = m.group(2) +      a[m.group(1)] = m.group(2) -    return a +  return a  def parse_property_value_aliases(path): -    a = { } -    with open(path, 'r') as f: -        for line in f: -            s = line.strip() -            if len(s) == 0: -                continue - -            m = PVA_LINE_REG.match(s) -            if not(m): -                continue - -            cat = m.group(1) -            x2  = m.group(2) -            x3  = m.group(3) -            x4  = m.group(4) -            if cat == 'sc': -                if x2 != x3: -                    a[x2] = x3 -                if x4 and x4 != x3: -                    a[x4] = x3 -            else: -                if x2 != x3: -                    a[x3] = x2 -                if x4 and x4 != x2: -                    a[x4] = x2 - -    return a +  a = { } +  with open(path, 'r') as f: +    for line in f: +      s = line.strip() +      if len(s) == 0: +        continue + +      m = PVA_LINE_REG.match(s) +      if not(m): +        continue + +      cat = m.group(1) +      x2  = m.group(2) +      x3  = m.group(3) +      x4  = m.group(4) +      if cat == 'sc': +        if x2 != x3: +          a[x2] = x3 +        if x4 and x4 != x3: +          a[x4] = x3 +      else: +        if x2 != x3: +          a[x3] = x2 +        if x4 and x4 != x2: +          a[x4] = x2 + +  return a  def parse_blocks(path): -    dic = { } -    blocks = [] -    with open(path, 'r') as f: -        for line in f: -            s = line.strip() -            if len(s) == 0: -                continue - -            m = BL_LINE_REG.match(s) -            if not(m): -                continue - -            start = int(m.group(1), 16) -            end   = int(m.group(2), 16) -            block = fix_block_name(m.group(3)) -            add_range_into_dic(dic, block, start, end) -            blocks.append(block) - -    noblock = fix_block_name('No_Block') -    dic[noblock] = inverse_ranges(add_ranges_in_dic(dic)) -    blocks.append(noblock) -    return dic, blocks +  dic = { } +  blocks = [] +  with open(path, 'r') as f: +    for line in f: +      s = line.strip() +      if len(s) == 0: +        continue + +      m = BL_LINE_REG.match(s) +      if not(m): +        continue + +      start = int(m.group(1), 16) +      end   = int(m.group(2), 16) +      block = fix_block_name(m.group(3)) +      add_range_into_dic(dic, block, start, end) +      blocks.append(block) + +  noblock = fix_block_name('No_Block') +  dic[noblock] = inverse_ranges(add_ranges_in_dic(dic)) +  blocks.append(noblock) +  return dic, blocks  def add_primitive_props(assigned): -    DIC['Assigned'] = normalize_ranges(assigned) -    DIC['Any']     = [(0x000000, 0x10ffff)] -    DIC['ASCII']   = [(0x000000, 0x00007f)] -    DIC['NEWLINE'] = [(0x00000a, 0x00000a)] -    DIC['Cn'] = inverse_ranges(DIC['Assigned']) -    DIC['C'].extend(DIC['Cn']) -    DIC['C'] = normalize_ranges(DIC['C'], True) - -    d = [] -    d.extend(DIC['Ll']) -    d.extend(DIC['Lt']) -    d.extend(DIC['Lu']) -    DIC['LC'] = normalize_ranges(d, True) +  DIC['Assigned'] = normalize_ranges(assigned) +  DIC['Any']     = [(0x000000, 0x10ffff)] +  DIC['ASCII']   = [(0x000000, 0x00007f)] +  DIC['NEWLINE'] = [(0x00000a, 0x00000a)] +  DIC['Cn'] = inverse_ranges(DIC['Assigned']) +  DIC['C'].extend(DIC['Cn']) +  DIC['C'] = normalize_ranges(DIC['C'], True) + +  d = [] +  d.extend(DIC['Ll']) +  d.extend(DIC['Lt']) +  d.extend(DIC['Lu']) +  DIC['LC'] = normalize_ranges(d, True)  def add_posix_props(dic): -    alnum = [] -    alnum.extend(dic['Alphabetic']) -    alnum.extend(dic['Nd'])  # Nd == Decimal_Number -    alnum = normalize_ranges(alnum, True) - -    blank = [(0x0009, 0x0009)] -    blank.extend(dic['Zs'])  # Zs == Space_Separator -    blank = normalize_ranges(blank, True) - -    word = [] -    word.extend(dic['Alphabetic']) -    word.extend(dic['M'])   # M == Mark -    word.extend(dic['Nd']) -    word.extend(dic['Pc'])  # Pc == Connector_Punctuation -    word = normalize_ranges(word, True) - -    graph = sub_ranges(dic['Any'], dic['White_Space']) -    graph = sub_ranges(graph, dic['Cc']) -    graph = sub_ranges(graph, dic['Cs'])  # Cs == Surrogate -    graph = sub_ranges(graph, dic['Cn'])  # Cn == Unassigned -    graph = normalize_ranges(graph, True) - -    p = [] -    p.extend(graph) -    p.extend(dic['Zs']) -    p = normalize_ranges(p, True) - -    dic['Alpha']  = dic['Alphabetic'] -    dic['Upper']  = dic['Uppercase'] -    dic['Lower']  = dic['Lowercase'] -    dic['Punct']  = dic['P']  # P == Punctuation -    dic['Digit']  = dic['Nd'] -    dic['XDigit'] = [(0x0030, 0x0039), (0x0041, 0x0046), (0x0061, 0x0066)] -    dic['Alnum']  = alnum -    dic['Space']  = dic['White_Space'] -    dic['Blank']  = blank -    dic['Cntrl']  = dic['Cc'] -    dic['Word']   = word -    dic['Graph']  = graph -    dic['Print']  = p +  alnum = [] +  alnum.extend(dic['Alphabetic']) +  alnum.extend(dic['Nd'])  # Nd == Decimal_Number +  alnum = normalize_ranges(alnum, True) + +  blank = [(0x0009, 0x0009)] +  blank.extend(dic['Zs'])  # Zs == Space_Separator +  blank = normalize_ranges(blank, True) + +  word = [] +  word.extend(dic['Alphabetic']) +  word.extend(dic['M'])   # M == Mark +  word.extend(dic['Nd']) +  word.extend(dic['Pc'])  # Pc == Connector_Punctuation +  word = normalize_ranges(word, True) + +  graph = sub_ranges(dic['Any'], dic['White_Space']) +  graph = sub_ranges(graph, dic['Cc']) +  graph = sub_ranges(graph, dic['Cs'])  # Cs == Surrogate +  graph = sub_ranges(graph, dic['Cn'])  # Cn == Unassigned +  graph = normalize_ranges(graph, True) + +  p = [] +  p.extend(graph) +  p.extend(dic['Zs']) +  p = normalize_ranges(p, True) + +  dic['Alpha']  = dic['Alphabetic'] +  dic['Upper']  = dic['Uppercase'] +  dic['Lower']  = dic['Lowercase'] +  dic['Punct']  = dic['P']  # P == Punctuation +  dic['Digit']  = dic['Nd'] +  dic['XDigit'] = [(0x0030, 0x0039), (0x0041, 0x0046), (0x0061, 0x0066)] +  dic['Alnum']  = alnum +  dic['Space']  = dic['White_Space'] +  dic['Blank']  = blank +  dic['Cntrl']  = dic['Cc'] +  dic['Word']   = word +  dic['Graph']  = graph +  dic['Print']  = p  def set_max_prop_name(name): -    global PROPERTY_NAME_MAX_LEN -    n = len(name) -    if n > PROPERTY_NAME_MAX_LEN: -        PROPERTY_NAME_MAX_LEN = n +  global PROPERTY_NAME_MAX_LEN +  n = len(name) +  if n > PROPERTY_NAME_MAX_LEN: +    PROPERTY_NAME_MAX_LEN = n -LIST_COUNTER = 1  def entry_prop_name(name, index): -    global LIST_COUNTER -    set_max_prop_name(name) -    if OUTPUT_LIST and index >= len(POSIX_LIST): -        print >> UPF, "%3d: %s" % (LIST_COUNTER, name) -        LIST_COUNTER += 1 +  set_max_prop_name(name) +  if OUTPUT_LIST_MODE and index >= len(POSIX_LIST): +    print >> UPF, "%3d: %s" % (index, name) +def entry_and_print_prop_and_index(name, index): +  entry_prop_name(name, index) +  nname = normalize_prop_name(name) +  print_prop_and_index(nname, index)  ### main ###  argv = sys.argv @@ -401,19 +411,18 @@ argc = len(argv)  POSIX_ONLY = False  if argc >= 2: -    if argv[1] == '-posix': -        POSIX_ONLY = True +  if argv[1] == '-posix': +    POSIX_ONLY = True -OUTPUT_LIST = not(POSIX_ONLY) +OUTPUT_LIST_MODE = not(POSIX_ONLY)  with open('UnicodeData.txt', 'r') as f: -    dic, assigned = parse_unicode_data_file(f) -    DIC = dic -    add_primitive_props(assigned) +  dic, assigned = parse_unicode_data_file(f) +  DIC = dic +  add_primitive_props(assigned)  PROPS = DIC.keys()  PROPS = list_sub(PROPS, POSIX_LIST) -PROPS = sorted(PROPS)  dic, props = parse_properties('DerivedCoreProperties.txt', 'Derived Property')  merge_dic(DIC, dic) @@ -437,47 +446,59 @@ merge_dic(ALIASES, a)  dic, BLOCKS = parse_blocks('Blocks.txt')  merge_dic(DIC, dic) +if INCLUDE_GRAPHEME_CLUSTER_DATA: +  dic, props = parse_properties('GraphemeBreakProperty.txt', +                                'GraphemeBreak Property', +                                GRAPHEME_CLUSTER_BREAK_NAME_PREFIX) +  merge_dic(DIC, dic) +  merge_props(PROPS, props) +  #prop = GRAPHEME_CLUSTER_BREAK_NAME_PREFIX + 'Other' +  #DIC[prop] = inverse_ranges(add_ranges_in_dic(dic)) +  #PROPS.append(prop) +  #KDIC[prop] = 'GrapemeBreak Property' +  add_posix_props(DIC) +PROPS = sorted(PROPS)  s = '''%{  /* Generated by make_unicode_property_data.py. */  '''  print s  for prop in POSIX_LIST: -    print_property(prop, DIC[prop], "POSIX [[:%s:]]" % prop) +  print_property(prop, DIC[prop], "POSIX [[:%s:]]" % prop)  print ''  if not(POSIX_ONLY): -    for prop in PROPS: -        klass = KDIC.get(prop, None) -        if klass is None: -            n = len(prop) -            if n == 1: -                klass = 'Major Category' -            elif n == 2: -                klass = 'General Category' -            else: -                klass = '-' +  for prop in PROPS: +    klass = KDIC.get(prop, None) +    if klass is None: +      n = len(prop) +      if n == 1: +        klass = 'Major Category' +      elif n == 2: +        klass = 'General Category' +      else: +        klass = '-' -        print_property(prop, DIC[prop], klass) +    print_property(prop, DIC[prop], klass) -    for block in BLOCKS: -        print_property(block, DIC[block], 'Block') +  for block in BLOCKS: +    print_property(block, DIC[block], 'Block')  print ''  print "static const OnigCodePoint*\nconst CodeRanges[] = {"  for prop in POSIX_LIST: -    print "  CR_%s," % prop +  print "  CR_%s," % prop  if not(POSIX_ONLY): -    for prop in PROPS: -        print "  CR_%s," % prop +  for prop in PROPS: +    print "  CR_%s," % prop -    for prop in BLOCKS: -        print "  CR_%s," % prop +  for prop in BLOCKS: +    print "  CR_%s," % prop  s = '''};  %} @@ -489,57 +510,51 @@ struct PropertyNameCtype {  '''  sys.stdout.write(s) -if OUTPUT_LIST: -    UPF = open("UNICODE_PROPERTIES", "w") -    if VERSION_INFO is not None: -        print >> UPF, "Unicode Properties (from Unicode Version: %s)" % VERSION_INFO -        print >> UPF, '' +if OUTPUT_LIST_MODE: +  UPF = open("UNICODE_PROPERTIES", "w") +  if VERSION_INFO is not None: +    print >> UPF, "Unicode Properties (from Unicode Version: %s)" % VERSION_INFO +    print >> UPF, ''  index = -1  for prop in POSIX_LIST:    index += 1 -  entry_prop_name(prop, index) -  prop = normalize_prop_name(prop) -  print_prop_and_index(prop, index) +  entry_and_print_prop_and_index(prop, index)  if not(POSIX_ONLY): -    for prop in PROPS: -        index += 1 -        entry_prop_name(prop, index) -        prop = normalize_prop_name(prop) -        print_prop_and_index(prop, index) - -    NALIASES = map(lambda (k,v):(normalize_prop_name(k), k, v), ALIASES.items()) -    NALIASES = sorted(NALIASES) -    for (nk, k, v) in NALIASES: -        nv = normalize_prop_name(v) -        if PropIndex.get(nk, None) is not None: -            print >> sys.stderr, "ALIASES: already exists: %s => %s" % (k, v) -            continue -        index = PropIndex.get(nv, None) -        if index is None: -            #print >> sys.stderr, "ALIASES: value is not exist: %s => %s" % (k, v) -            continue - -        entry_prop_name(k, index) -        print_prop_and_index(nk, index) - -    for name in BLOCKS: -        index += 1 -        entry_prop_name(name, index) -        name = normalize_prop_name(name) -        print_prop_and_index(name, index) +  for prop in PROPS: +    index += 1 +    entry_and_print_prop_and_index(prop, index) + +  NALIASES = map(lambda (k,v):(normalize_prop_name(k), k, v), ALIASES.items()) +  NALIASES = sorted(NALIASES) +  for (nk, k, v) in NALIASES: +    nv = normalize_prop_name(v) +    if PropIndex.get(nk, None) is not None: +      print >> sys.stderr, "ALIASES: already exists: %s => %s" % (k, v) +      continue +    aindex = PropIndex.get(nv, None) +    if aindex is None: +      #print >> sys.stderr, "ALIASES: value is not exist: %s => %s" % (k, v) +      continue + +    entry_prop_name(k, aindex) +    print_prop_and_index(nk, aindex) + +  for name in BLOCKS: +    index += 1 +    entry_and_print_prop_and_index(name, index)  print '%%'  print ''  if VERSION_INFO is not None: -    print "#define PROPERTY_VERSION  %s" % re.sub(r'[\.-]', '_', VERSION_INFO) -    print '' +  print "#define PROPERTY_VERSION  %s" % re.sub(r'[\.-]', '_', VERSION_INFO) +  print ''  print "#define PROPERTY_NAME_MAX_SIZE  %d" % (PROPERTY_NAME_MAX_LEN + 10)  print "#define CODE_RANGES_NUM         %d" % (index + 1) -if OUTPUT_LIST: -    UPF.close() +if OUTPUT_LIST_MODE: +  UPF.close()  sys.exit(0) diff --git a/src/oniguruma.h b/src/oniguruma.h index bc8983f..dbcbbdb 100644 --- a/src/oniguruma.h +++ b/src/oniguruma.h @@ -35,8 +35,8 @@ extern "C" {  #define ONIGURUMA  #define ONIGURUMA_VERSION_MAJOR   6 -#define ONIGURUMA_VERSION_MINOR   5 -#define ONIGURUMA_VERSION_TEENY   0 +#define ONIGURUMA_VERSION_MINOR   6 +#define ONIGURUMA_VERSION_TEENY   1  #ifdef __cplusplus  # ifndef  HAVE_PROTOTYPES @@ -270,7 +270,7 @@ ONIG_EXTERN OnigEncodingType OnigEncodingGB18030;  #define ONIGENC_IS_CODE_ASCII(code)       ((code) < 128)  #define ONIGENC_IS_MBC_WORD(enc,s,end) \     ONIGENC_IS_CODE_WORD(enc,ONIGENC_MBC_TO_CODE(enc,s,end)) - +#define ONIGENC_IS_MBC_WORD_ASCII(enc,s,end) onigenc_is_mbc_word_ascii(enc,s,end)  #define ONIGENC_NAME(enc)                      ((enc)->name) @@ -385,6 +385,7 @@ typedef unsigned int        OnigOptionType;  /* options */  #define ONIG_OPTION_NONE                 0U +/* options (compile time) */  #define ONIG_OPTION_IGNORECASE           1U  #define ONIG_OPTION_EXTEND               (ONIG_OPTION_IGNORECASE         << 1)  #define ONIG_OPTION_MULTILINE            (ONIG_OPTION_EXTEND             << 1) @@ -395,11 +396,18 @@ typedef unsigned int        OnigOptionType;  #define ONIG_OPTION_DONT_CAPTURE_GROUP   (ONIG_OPTION_NEGATE_SINGLELINE  << 1)  #define ONIG_OPTION_CAPTURE_GROUP        (ONIG_OPTION_DONT_CAPTURE_GROUP << 1)  /* options (search time) */ -#define ONIG_OPTION_NOTBOL               (ONIG_OPTION_CAPTURE_GROUP << 1) -#define ONIG_OPTION_NOTEOL               (ONIG_OPTION_NOTBOL << 1) -#define ONIG_OPTION_POSIX_REGION         (ONIG_OPTION_NOTEOL << 1) -#define ONIG_OPTION_CHECK_VALIDITY_OF_STRING   (ONIG_OPTION_POSIX_REGION << 1) -#define ONIG_OPTION_MAXBIT               ONIG_OPTION_CHECK_VALIDITY_OF_STRING  /* limit */ +#define ONIG_OPTION_NOTBOL                    (ONIG_OPTION_CAPTURE_GROUP << 1) +#define ONIG_OPTION_NOTEOL                    (ONIG_OPTION_NOTBOL << 1) +#define ONIG_OPTION_POSIX_REGION              (ONIG_OPTION_NOTEOL << 1) +#define ONIG_OPTION_CHECK_VALIDITY_OF_STRING  (ONIG_OPTION_POSIX_REGION << 1) +/* #define ONIG_OPTION_CRLF_AS_LINE_SEPARATOR    (ONIG_OPTION_CHECK_VALIDITY_OF_STRING << 1) */ +/* options (compile time) */ +#define ONIG_OPTION_WORD_IS_ASCII        (ONIG_OPTION_CHECK_VALIDITY_OF_STRING << 4) +#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_MAXBIT               ONIG_OPTION_POSIX_IS_ASCII  /* limit */  #define ONIG_OPTION_ON(options,regopt)      ((options) |= (regopt))  #define ONIG_OPTION_OFF(options,regopt)     ((options) &= ~(regopt)) @@ -501,6 +509,7 @@ 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 */  /* syntax (behavior) */  #define ONIG_SYN_CONTEXT_INDEP_ANCHORS           (1U<<31) /* not implemented */ diff --git a/src/regcomp.c b/src/regcomp.c index 47023cb..ab5701c 100644 --- a/src/regcomp.c +++ b/src/regcomp.c @@ -277,7 +277,7 @@ unset_addr_list_add(UnsetAddrList* list, int offset, struct _Node* node)  static int  add_opcode(regex_t* reg, int opcode)  { -  BBUF_ADD1(reg, opcode); +  BB_ADD1(reg, opcode);    return 0;  } @@ -287,7 +287,7 @@ add_state_check_num(regex_t* reg, int num)  {    StateCheckNumType n = (StateCheckNumType )num; -  BBUF_ADD(reg, &n, SIZE_STATE_CHECK_NUM); +  BB_ADD(reg, &n, SIZE_STATE_CHECK_NUM);    return 0;  }  #endif @@ -297,7 +297,7 @@ add_rel_addr(regex_t* reg, int addr)  {    RelAddrType ra = (RelAddrType )addr; -  BBUF_ADD(reg, &ra, SIZE_RELADDR); +  BB_ADD(reg, &ra, SIZE_RELADDR);    return 0;  } @@ -306,7 +306,7 @@ add_abs_addr(regex_t* reg, int addr)  {    AbsAddrType ra = (AbsAddrType )addr; -  BBUF_ADD(reg, &ra, SIZE_ABSADDR); +  BB_ADD(reg, &ra, SIZE_ABSADDR);    return 0;  } @@ -315,7 +315,7 @@ add_length(regex_t* reg, int len)  {    LengthType l = (LengthType )len; -  BBUF_ADD(reg, &l, SIZE_LENGTH); +  BB_ADD(reg, &l, SIZE_LENGTH);    return 0;  } @@ -324,7 +324,7 @@ add_mem_num(regex_t* reg, int num)  {    MemNumType n = (MemNumType )num; -  BBUF_ADD(reg, &n, SIZE_MEMNUM); +  BB_ADD(reg, &n, SIZE_MEMNUM);    return 0;  } @@ -334,7 +334,7 @@ add_pointer(regex_t* reg, void* addr)  {    PointerType ptr = (PointerType )addr; -  BBUF_ADD(reg, &ptr, SIZE_POINTER); +  BB_ADD(reg, &ptr, SIZE_POINTER);    return 0;  }  #endif @@ -342,7 +342,7 @@ add_pointer(regex_t* reg, void* addr)  static int  add_option(regex_t* reg, OnigOptionType option)  { -  BBUF_ADD(reg, &option, SIZE_OPTION); +  BB_ADD(reg, &option, SIZE_OPTION);    return 0;  } @@ -351,7 +351,7 @@ add_save_type(regex_t* reg, enum SaveType type)  {    SaveType t = (SaveType )type; -  BBUF_ADD(reg, &t, SIZE_SAVE_TYPE); +  BB_ADD(reg, &t, SIZE_SAVE_TYPE);    return 0;  } @@ -360,7 +360,14 @@ add_update_var_type(regex_t* reg, enum UpdateVarType type)  {    UpdateVarType t = (UpdateVarType )type; -  BBUF_ADD(reg, &t, SIZE_UPDATE_VAR_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;  } @@ -378,14 +385,14 @@ add_opcode_rel_addr(regex_t* reg, int opcode, int addr)  static int  add_bytes(regex_t* reg, UChar* bytes, int len)  { -  BBUF_ADD(reg, bytes, len); +  BB_ADD(reg, bytes, len);    return 0;  }  static int  add_bitset(regex_t* reg, BitSetRef bs)  { -  BBUF_ADD(reg, bs, SIZE_BITSET); +  BB_ADD(reg, bs, SIZE_BITSET);    return 0;  } @@ -492,7 +499,7 @@ compile_call(CallNode* node, regex_t* reg, ScanEnv* env)    r = add_opcode(reg, OP_CALL);    if (r != 0) return r; -  r = unset_addr_list_add(env->unset_addr_list, BBUF_GET_OFFSET_POS(reg), +  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.*/); @@ -655,7 +662,7 @@ add_multi_byte_cclass(BBuf* mbuf, regex_t* reg)    return add_bytes(reg, mbuf->p, mbuf->used);  #else    int r, pad_size; -  UChar* p = BBUF_GET_ADD_ADDRESS(reg) + SIZE_LENGTH; +  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)); @@ -1400,7 +1407,7 @@ compile_enclosure_memory_node(EnclosureNode* node, regex_t* reg, ScanEnv* env)    if (node->m.regnum == 0 && NODE_IS_CALLED(node)) {      r = add_opcode(reg, OP_CALL);      if (r != 0) return r; -    node->m.called_addr = BBUF_GET_OFFSET_POS(reg) + SIZE_ABSADDR + SIZE_OP_JUMP; +    node->m.called_addr = BB_GET_OFFSET_POS(reg) + SIZE_ABSADDR + SIZE_OP_JUMP;      NODE_STATUS_ADD(node, NST_ADDR_FIXED);      r = add_abs_addr(reg, (int )node->m.called_addr);      if (r != 0) return r; @@ -1418,7 +1425,7 @@ compile_enclosure_memory_node(EnclosureNode* node, regex_t* reg, ScanEnv* env)    if (NODE_IS_CALLED(node)) {      r = add_opcode(reg, OP_CALL);      if (r != 0) return r; -    node->m.called_addr = BBUF_GET_OFFSET_POS(reg) + SIZE_ABSADDR + SIZE_OP_JUMP; +    node->m.called_addr = BB_GET_OFFSET_POS(reg) + SIZE_ABSADDR + SIZE_OP_JUMP;      NODE_STATUS_ADD(node, NST_ADDR_FIXED);      r = add_abs_addr(reg, (int )node->m.called_addr);      if (r != 0) return r; @@ -1588,6 +1595,20 @@ compile_length_anchor_node(AnchorNode* node, regex_t* reg)      len = SIZE_OP_PUSH_LOOK_BEHIND_NOT + tlen + SIZE_OP_FAIL_LOOK_BEHIND_NOT;      break; +  case ANCHOR_WORD_BOUNDARY: +  case ANCHOR_NO_WORD_BOUNDARY: +#ifdef USE_WORD_BEGIN_END +  case ANCHOR_WORD_BEGIN: +  case ANCHOR_WORD_END: +#endif +    len = SIZE_OP_WORD_BOUNDARY; +    break; + +  case ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY: +  case ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY: +    len = SIZE_OPCODE; +    break; +    default:      len = SIZE_OPCODE;      break; @@ -1600,6 +1621,7 @@ static int  compile_anchor_node(AnchorNode* node, regex_t* reg, ScanEnv* env)  {    int r, len; +  enum OpCode op;    switch (node->type) {    case ANCHOR_BEGIN_BUF:      r = add_opcode(reg, OP_BEGIN_BUF);      break; @@ -1609,13 +1631,34 @@ compile_anchor_node(AnchorNode* node, regex_t* reg, ScanEnv* env)    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_BOUND:     r = add_opcode(reg, OP_WORD_BOUND);     break; -  case ANCHOR_NOT_WORD_BOUND: r = add_opcode(reg, OP_NOT_WORD_BOUND); break; +  case ANCHOR_WORD_BOUNDARY: +    op = OP_WORD_BOUNDARY; +  word: +    r = add_opcode(reg, op); +    if (r != 0) return r; +    r = add_mode(reg, (ModeType )node->ascii_mode); +    break; + +  case ANCHOR_NO_WORD_BOUNDARY: +    op = OP_NO_WORD_BOUNDARY; goto word; +    break;  #ifdef USE_WORD_BEGIN_END -  case ANCHOR_WORD_BEGIN:     r = add_opcode(reg, OP_WORD_BEGIN);     break; -  case ANCHOR_WORD_END:       r = add_opcode(reg, OP_WORD_END);       break; +  case ANCHOR_WORD_BEGIN: +    op = OP_WORD_BEGIN; goto word; +    break; +  case ANCHOR_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 ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY: +    r = add_opcode(reg, OP_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY); +    break; +    case ANCHOR_PREC_READ:      r = add_opcode(reg, OP_PREC_READ_START);      if (r != 0) return r; @@ -1914,9 +1957,12 @@ compile_tree(Node* node, regex_t* reg, ScanEnv* env)          break;        case ONIGENC_CTYPE_WORD: -        if (CTYPE_(node)->not != 0)  op = OP_NOT_WORD; -        else                         op = OP_WORD; - +        if (CTYPE_(node)->ascii_mode == 0) { +          op = CTYPE_(node)->not != 0 ? OP_NO_WORD : OP_WORD; +        } +        else { +          op = CTYPE_(node)->not != 0 ? OP_NO_WORD_ASCII : OP_WORD_ASCII; +        }          r = add_opcode(reg, op);          break; @@ -2038,8 +2084,6 @@ compile_tree(Node* node, regex_t* reg, ScanEnv* env)    return r;  } -#ifdef USE_NAMED_GROUP -  static int  noname_disable_map(Node** plink, GroupNumRemap* map, int* counter)  { @@ -2283,7 +2327,6 @@ disable_noname_group_capture(Node** root, regex_t* reg, ScanEnv* env)    return onig_renumber_name_table(reg, map);  } -#endif /* USE_NAMED_GROUP */  #ifdef USE_CALL  static int @@ -2301,7 +2344,7 @@ unset_addr_list_fix(UnsetAddrList* uslist, regex_t* reg)      addr   = en->m.called_addr;      offset = uslist->us[i].offset; -    BBUF_WRITE(reg, offset, &addr, SIZE_ABSADDR); +    BB_WRITE(reg, offset, &addr, SIZE_ABSADDR);    }    return 0;  } @@ -2394,9 +2437,6 @@ get_char_length_tree1(Node* node, regex_t* reg, int* len, int level)  #endif    case NODE_CTYPE: -    *len = 1; -    break; -    case NODE_CCLASS:      *len = 1;      break; @@ -2496,7 +2536,8 @@ is_exclusive(Node* x, Node* y, regex_t* reg)        switch (ytype) {        case NODE_CTYPE:          if (CTYPE_(y)->ctype == CTYPE_(x)->ctype && -            CTYPE_(y)->not   != CTYPE_(x)->not) +            CTYPE_(y)->not   != CTYPE_(x)->not && +            CTYPE_(y)->ascii_mode == CTYPE_(x)->ascii_mode)            return 1;          else            return 0; @@ -2523,6 +2564,7 @@ is_exclusive(Node* x, Node* y, regex_t* reg)    case NODE_CCLASS:      { +      int range;        CClassNode* xc = CCLASS_(x);        switch (ytype) {        case NODE_CTYPE: @@ -2534,9 +2576,10 @@ is_exclusive(Node* x, Node* y, regex_t* reg)          case ONIGENC_CTYPE_WORD:            if (CTYPE_(y)->not == 0) {              if (IS_NULL(xc->mbuf) && !IS_NCCLASS_NOT(xc)) { -              for (i = 0; i < SINGLE_BYTE_SIZE; i++) { +              range = CTYPE_(y)->ascii_mode != 0 ? 128 : SINGLE_BYTE_SIZE; +              for (i = 0; i < range; i++) {                  if (BITSET_AT(xc->bs, i)) { -                  if (IS_CODE_SB_WORD(reg->enc, i)) return 0; +                  if (ONIGENC_IS_CODE_WORD(reg->enc, i)) return 0;                  }                }                return 1; @@ -2545,18 +2588,18 @@ is_exclusive(Node* x, Node* y, regex_t* reg)            }            else {              if (IS_NOT_NULL(xc->mbuf)) return 0; -            for (i = 0; i < SINGLE_BYTE_SIZE; i++) { -              if (! IS_CODE_SB_WORD(reg->enc, i)) { -                if (!IS_NCCLASS_NOT(xc)) { -                  if (BITSET_AT(xc->bs, i)) -                    return 0; -                } -                else { -                  if (! BITSET_AT(xc->bs, i)) -                    return 0; -                } +            if (IS_NCCLASS_NOT(xc)) return 0; + +            range = CTYPE_(y)->ascii_mode != 0 ? 128 : SINGLE_BYTE_SIZE; +            for (i = 0; i < range; i++) { +              if (! ONIGENC_IS_CODE_WORD(reg->enc, i)) { +                if (BITSET_AT(xc->bs, i)) +                  return 0;                }              } +            for (i = range; i < SINGLE_BYTE_SIZE; i++) { +              if (BITSET_AT(xc->bs, i)) return 0; +            }              return 1;            }            break; @@ -2612,10 +2655,18 @@ is_exclusive(Node* x, Node* y, regex_t* reg)            break;          case ONIGENC_CTYPE_WORD: -          if (ONIGENC_IS_MBC_WORD(reg->enc, xs->s, xs->end)) -            return CTYPE_(y)->not; -          else -            return !(CTYPE_(y)->not); +          if (CTYPE_(y)->ascii_mode == 0) { +            if (ONIGENC_IS_MBC_WORD(reg->enc, xs->s, xs->end)) +              return CTYPE_(y)->not; +            else +              return !(CTYPE_(y)->not); +          } +          else { +            if (ONIGENC_IS_MBC_WORD_ASCII(reg->enc, xs->s, xs->end)) +              return CTYPE_(y)->not; +            else +              return !(CTYPE_(y)->not); +          }            break;          default:            break; @@ -2780,7 +2831,7 @@ check_type_tree(Node* node, int type_mask, int enclosure_mask, int anchor_mask)    case NODE_ENCLOSURE:      {        EnclosureNode* en = ENCLOSURE_(node); -      if ((en->type & enclosure_mask) == 0) +      if (((1<<en->type) & enclosure_mask) == 0)          return 1;        r = check_type_tree(NODE_BODY(node), type_mask, enclosure_mask, anchor_mask); @@ -3512,7 +3563,7 @@ divide_look_behind_alternatives(Node* node)    np = node;    while (IS_NOT_NULL(np = NODE_CDR(np))) { -    insert_node = onig_node_new_anchor(anc_type); +    insert_node = onig_node_new_anchor(anc_type, an->ascii_mode);      CHECK_NULL_RETURN_MEMERR(insert_node);      NODE_BODY(insert_node) = NODE_CAR(np);      NODE_CAR(np) = insert_node; @@ -4150,22 +4201,19 @@ setup_call_node_call(CallNode* cn, ScanEnv* env, int state)    if (cn->by_number != 0) {      int gnum = cn->group_num; -#ifdef USE_NAMED_GROUP      if (env->num_named > 0 &&          IS_SYNTAX_BV(env->syntax, ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP) &&          !ONIG_IS_OPTION_ON(env->options, ONIG_OPTION_CAPTURE_GROUP)) {        return ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED;      } -#endif +      if (gnum > env->num_mem) {        onig_scan_env_set_error_string(env, ONIGERR_UNDEFINED_GROUP_REFERENCE,                                       cn->name, cn->name_end);        return ONIGERR_UNDEFINED_GROUP_REFERENCE;      } -#ifdef USE_NAMED_GROUP    set_call_attr: -#endif      NODE_CALL_BODY(cn) = mem_env[cn->group_num].node;      if (IS_NULL(NODE_CALL_BODY(cn))) {        onig_scan_env_set_error_string(env, ONIGERR_UNDEFINED_NAME_REFERENCE, @@ -4173,7 +4221,6 @@ setup_call_node_call(CallNode* cn, ScanEnv* env, int state)        return ONIGERR_UNDEFINED_NAME_REFERENCE;      }    } -#ifdef USE_NAMED_GROUP    else {      int *refs; @@ -4193,7 +4240,6 @@ setup_call_node_call(CallNode* cn, ScanEnv* env, int state)        goto set_call_attr;      }    } -#endif    return 0;  } @@ -4579,18 +4625,22 @@ setup_anchor(Node* node, regex_t* reg, int state, ScanEnv* env)    | BIT_NODE_CTYPE | BIT_NODE_ANCHOR | BIT_NODE_ENCLOSURE | BIT_NODE_QUANT \    | BIT_NODE_CALL ) -#define ALLOWED_ENCLOSURE_IN_LB       ( ENCLOSURE_MEMORY | ENCLOSURE_OPTION ) -#define ALLOWED_ENCLOSURE_IN_LB_NOT   ENCLOSURE_OPTION +#define ALLOWED_ENCLOSURE_IN_LB       ( 1<<ENCLOSURE_MEMORY | 1<<ENCLOSURE_OPTION ) +#define ALLOWED_ENCLOSURE_IN_LB_NOT   (1<<ENCLOSURE_OPTION)  #define ALLOWED_ANCHOR_IN_LB \    ( ANCHOR_LOOK_BEHIND | ANCHOR_BEGIN_LINE | ANCHOR_END_LINE | ANCHOR_BEGIN_BUF \ -  | ANCHOR_BEGIN_POSITION | ANCHOR_WORD_BOUND | ANCHOR_NOT_WORD_BOUND \ -  | ANCHOR_WORD_BEGIN | ANCHOR_WORD_END ) +  | 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 )  #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_BOUND \ -  | ANCHOR_NOT_WORD_BOUND | ANCHOR_WORD_BEGIN | ANCHOR_WORD_END ) +  | 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 )    int r;    AnchorNode* an = ANCHOR_(node); @@ -5603,6 +5653,7 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env)    case NODE_CTYPE:      {        int i, min, max; +      int range;        max = ONIGENC_MBC_MAXLEN_DIST(env->enc); @@ -5614,15 +5665,19 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env)            break;          case ONIGENC_CTYPE_WORD: +          range = CTYPE_(node)->ascii_mode != 0 ? 128 : SINGLE_BYTE_SIZE;            if (CTYPE_(node)->not != 0) { -            for (i = 0; i < SINGLE_BYTE_SIZE; i++) { +            for (i = 0; i < range; i++) {                if (! ONIGENC_IS_CODE_WORD(env->enc, i)) {                  add_char_opt_map_info(&opt->map, (UChar )i, env->enc);                }              } +            for (i = range; i < SINGLE_BYTE_SIZE; i++) { +              add_char_opt_map_info(&opt->map, (UChar )i, env->enc); +            }            }            else { -            for (i = 0; i < SINGLE_BYTE_SIZE; i++) { +            for (i = 0; i < range; i++) {                if (ONIGENC_IS_CODE_WORD(env->enc, i)) {                  add_char_opt_map_info(&opt->map, (UChar )i, env->enc);                } @@ -6171,9 +6226,7 @@ onig_free_body(regex_t* reg)      if (IS_NOT_NULL(reg->repeat_range))     xfree(reg->repeat_range);      if (IS_NOT_NULL(REG_EXTP(reg)))         xfree(REG_EXTP(reg)); -#ifdef USE_NAMED_GROUP      onig_names_free(reg); -#endif    }  } @@ -6202,7 +6255,7 @@ onig_transfer(regex_t* to, regex_t* from)  #ifdef ONIG_DEBUG_COMPILE  static void print_compiled_byte_code_list P_((FILE* f, regex_t* reg));  #endif -#ifdef ONIG_DEBUG_PARSE_TREE +#ifdef ONIG_DEBUG_PARSE  static void print_tree P_((FILE* f, Node* node));  #endif @@ -6229,7 +6282,7 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,    if (reg->alloc == 0) {      init_size = (pattern_end - pattern) * 2;      if (init_size <= 0) init_size = COMPILE_INIT_SIZE; -    r = BBUF_INIT(reg, init_size); +    r = BB_INIT(reg, init_size);      if (r != 0) goto end;    }    else @@ -6247,7 +6300,6 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,    r = onig_parse_tree(&root, pattern, pattern_end, reg, &scan_env);    if (r != 0) goto err; -#ifdef USE_NAMED_GROUP    /* mixed use named group and no-named group */    if (scan_env.num_named > 0 &&        IS_SYNTAX_BV(scan_env.syntax, ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP) && @@ -6259,7 +6311,6 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,      if (r != 0) goto err;    } -#endif    r = check_backrefs(root, &scan_env);    if (r != 0) goto err; @@ -6287,7 +6338,7 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,    r = setup_tree(root, reg, 0, &scan_env);    if (r != 0) goto err_unset; -#ifdef ONIG_DEBUG_PARSE_TREE +#ifdef ONIG_DEBUG_PARSE    print_tree(stderr, root);  #endif @@ -6377,9 +6428,7 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,    onig_node_free(root);  #ifdef ONIG_DEBUG_COMPILE -#ifdef USE_NAMED_GROUP    onig_print_names(stderr, reg); -#endif    print_compiled_byte_code_list(stderr, reg);  #endif @@ -6642,6 +6691,7 @@ onig_is_code_in_cc(OnigEncoding enc, OnigCodePoint code, CClassNode* cc)  #define ARG_MEMNUM       4  #define ARG_OPTION       5  #define ARG_STATE_CHECK  6 +#define ARG_MODE         7  OnigOpInfoType OnigOpInfo[] = {    { OP_FINISH,            "finish",          ARG_NON }, @@ -6666,7 +6716,9 @@ OnigOpInfoType OnigOpInfo[] = {    { 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 }, +#endif    { OP_ANYCHAR,           "anychar",         ARG_NON },    { OP_ANYCHAR_ML,        "anychar-ml",      ARG_NON },    { OP_ANYCHAR_STAR,      "anychar*",        ARG_NON }, @@ -6674,11 +6726,13 @@ OnigOpInfoType OnigOpInfo[] = {    { 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_NOT_WORD,            "not-word",        ARG_NON }, -  { OP_WORD_BOUND,          "word-bound",      ARG_NON }, -  { OP_NOT_WORD_BOUND,      "not-word-bound",  ARG_NON }, -  { OP_WORD_BEGIN,          "word-begin",      ARG_NON }, -  { OP_WORD_END,            "word-end",        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_BEGIN_BUF,           "begin-buf",       ARG_NON },    { OP_END_BUF,             "end-buf",         ARG_NON },    { OP_BEGIN_LINE,          "begin-line",      ARG_NON }, @@ -6800,6 +6854,7 @@ onig_print_compiled_byte_code(FILE* f, UChar* bp, UChar** nextp, UChar* start,    StateCheckNumType scn;    OnigCodePoint code;    OnigOptionType option; +  ModeType mode;    UChar *q;    fprintf(f, "%s", op2name(*bp)); @@ -6840,6 +6895,12 @@ onig_print_compiled_byte_code(FILE* f, UChar* bp, UChar** nextp, UChar* start,        bp += SIZE_STATE_CHECK_NUM;        fprintf(f, ":%d", scn);        break; + +    case ARG_MODE: +      mode = *((ModeType* )bp); +      bp += SIZE_MODE; +      fprintf(f, ":%d", mode); +      break;      }    }    else { @@ -6939,6 +7000,7 @@ onig_print_compiled_byte_code(FILE* f, UChar* bp, UChar** nextp, UChar* start,        fprintf(f, ":%d:%d:%d", n, (int )code, len);        break; +#ifdef USE_OP_CCLASS_NODE      case OP_CCLASS_NODE:        {          CClassNode *cc; @@ -6948,6 +7010,7 @@ onig_print_compiled_byte_code(FILE* f, UChar* bp, UChar** nextp, UChar* start,          fprintf(f, ":%p:%d", cc, n);        }        break; +#endif      case OP_BACKREF_N_IC:        mem = *((MemNumType* )bp); @@ -7082,7 +7145,7 @@ print_compiled_byte_code_list(FILE* f, regex_t* reg)  }  #endif -#ifdef ONIG_DEBUG_PARSE_TREE +#ifdef ONIG_DEBUG_PARSE  static void  Indent(FILE* f, int indent) @@ -7157,9 +7220,13 @@ print_indent_tree(FILE* f, Node* node, int indent)      case ONIGENC_CTYPE_WORD:        if (CTYPE_(node)->not != 0) -        fputs("not word",       f); +        fputs("not word", f);        else -        fputs("word",           f); +        fputs("word",     f); + +      if (CTYPE_(node)->ascii_mode != 0) +        fputs(" (ascii)", f); +        break;      default: @@ -7171,19 +7238,23 @@ 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_BOUND:      fputs("word bound",     f); break; -    case ANCHOR_NOT_WORD_BOUND:  fputs("not word bound", f); break; +    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;  #ifdef USE_WORD_BEGIN_END -    case ANCHOR_WORD_BEGIN:      fputs("word begin", f);     break; -    case ANCHOR_WORD_END:        fputs("word end", f);       break; +    case ANCHOR_WORD_BEGIN:       fputs("word begin", f);     break; +    case ANCHOR_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:        fprintf(f, "prec read\n");        print_indent_tree(f, NODE_BODY(node), indent + add); diff --git a/src/regenc.c b/src/regenc.c index 554a622..97b5052 100644 --- a/src/regenc.c +++ b/src/regenc.c @@ -841,6 +841,16 @@ onigenc_minimum_property_name_to_ctype(OnigEncoding enc, UChar* p, UChar* end)  }  extern int +onigenc_is_mbc_word_ascii(OnigEncoding enc, UChar* s, const UChar* end) +{ +  OnigCodePoint code = ONIGENC_MBC_TO_CODE(enc, s, end); + +  if (code > 127) return 0; + +  return ONIGENC_IS_ASCII_CODE_WORD(code); +} + +extern int  onigenc_mb2_is_code_ctype(OnigEncoding enc, OnigCodePoint code,  			  unsigned int ctype)  { diff --git a/src/regenc.h b/src/regenc.h index abc26be..cda3bcd 100644 --- a/src/regenc.h +++ b/src/regenc.h @@ -71,6 +71,8 @@ typedef struct {  #define ONIG_CHECK_NULL_RETURN(p)          if (ONIG_IS_NULL(p)) return NULL  #define ONIG_CHECK_NULL_RETURN_VAL(p,val)  if (ONIG_IS_NULL(p)) return (val) +#define MAX_CODE_POINT         (~((OnigCodePoint )0)) +  #define enclen(enc,p)          ONIGENC_MBC_ENC_LEN(enc,p)  /* character types bit flag */ @@ -109,6 +111,7 @@ struct PropertyNameCtype {  /* #define USE_CRNL_AS_LINE_TERMINATOR */  #define USE_UNICODE_PROPERTIES +#define USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER  /* #define USE_UNICODE_CASE_FOLD_TURKISH_AZERI */  /* #define USE_UNICODE_ALL_LINE_TERMINATORS */  /* see Unicode.org UTS #18 */ @@ -143,6 +146,7 @@ ONIG_EXTERN int onigenc_mb2_code_to_mbclen P_((OnigCodePoint code));  ONIG_EXTERN int onigenc_mb2_code_to_mbc P_((OnigEncoding enc, OnigCodePoint code, UChar *buf));  ONIG_EXTERN int onigenc_minimum_property_name_to_ctype P_((OnigEncoding enc, UChar* p, UChar* end));  ONIG_EXTERN int onigenc_unicode_property_name_to_ctype P_((OnigEncoding enc, UChar* p, UChar* end)); +ONIG_EXTERN int onigenc_is_mbc_word_ascii P_((OnigEncoding enc, UChar* s, const UChar* end));  ONIG_EXTERN int onigenc_mb2_is_code_ctype P_((OnigEncoding enc, OnigCodePoint code, unsigned int ctype));  ONIG_EXTERN int onigenc_mb4_code_to_mbclen P_((OnigCodePoint code));  ONIG_EXTERN int onigenc_mb4_code_to_mbc P_((OnigEncoding enc, OnigCodePoint code, UChar *buf)); @@ -158,6 +162,7 @@ ONIG_EXTERN int onigenc_unicode_ctype_code_range P_((OnigCtype ctype, const Onig  ONIG_EXTERN int onigenc_unicode_get_case_fold_codes_by_str P_((OnigEncoding enc, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]));  ONIG_EXTERN int onigenc_unicode_mbc_case_fold P_((OnigEncoding enc, OnigCaseFoldType flag, const UChar** pp, const UChar* end, UChar* fold));  ONIG_EXTERN int onigenc_unicode_apply_all_case_fold P_((OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg)); +ONIG_EXTERN int onigenc_egcb_is_break_position P_((OnigEncoding enc, UChar* p, UChar* prev, const UChar* start, const UChar* end));  #define UTF16_IS_SURROGATE_FIRST(c)    (((c) & 0xfc) == 0xd8) @@ -194,8 +199,8 @@ extern OnigCodePoint OnigUnicodeFolds3[];  struct ByUnfoldKey {    OnigCodePoint code; -  int   index; -  int   fold_len; +  short int     index; +  short int     fold_len;  };  extern const struct ByUnfoldKey* unicode_unfold_key(OnigCodePoint code); @@ -235,6 +240,8 @@ ONIG_EXTERN const unsigned short OnigEncAsciiCtypeTable[];  #define ONIGENC_ASCII_CODE_TO_UPPER_CASE(c) OnigEncAsciiToUpperCaseTable[c]  #define ONIGENC_IS_ASCII_CODE_CTYPE(code,ctype) \    ((OnigEncAsciiCtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) +#define ONIGENC_IS_ASCII_CODE_WORD(code) \ +  ((OnigEncAsciiCtypeTable[code] & CTYPE_TO_BIT(ONIGENC_CTYPE_WORD)) != 0)  #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)) diff --git a/src/regerror.c b/src/regerror.c index a430e60..c0d2346 100644 --- a/src/regerror.c +++ b/src/regerror.c @@ -135,11 +135,7 @@ onig_error_code_to_format(int code)    case ONIGERR_TOO_BIG_BACKREF_NUMBER:      p = "too big backref number"; break;    case ONIGERR_INVALID_BACKREF: -#ifdef USE_NAMED_GROUP      p = "invalid backref number/name"; break; -#else -    p = "invalid backref number"; break; -#endif    case ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED:      p = "numbered backref/call is not allowed. (use name)"; break;    case ONIGERR_TOO_MANY_CAPTURES: @@ -155,11 +151,7 @@ onig_error_code_to_format(int code)    case ONIGERR_INVALID_GROUP_NAME:      p = "invalid group name <%n>"; break;    case ONIGERR_INVALID_CHAR_IN_GROUP_NAME: -#ifdef USE_NAMED_GROUP      p = "invalid char in group name <%n>"; break; -#else -    p = "invalid char in group number <%n>"; break; -#endif    case ONIGERR_UNDEFINED_NAME_REFERENCE:      p = "undefined name <%n> reference"; break;    case ONIGERR_UNDEFINED_GROUP_REFERENCE: diff --git a/src/regexec.c b/src/regexec.c index e7dfb96..9dbef70 100644 --- a/src/regexec.c +++ b/src/regexec.c @@ -31,6 +31,9 @@  #define USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE +#define IS_MBC_WORD_ASCII_MODE(enc,s,end,mode) \ +  ((mode) == 0 ? ONIGENC_IS_MBC_WORD(enc,s,end) : ONIGENC_IS_MBC_WORD_ASCII(enc,s,end)) +  #ifdef USE_CRNL_AS_LINE_TERMINATOR  #define ONIGENC_IS_MBC_CRNL(enc,p,end) \    (ONIGENC_MBC_TO_CODE(enc,p,end) == 13 && \ @@ -2002,6 +2005,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,        MOP_OUT;        break; +#ifdef USE_OP_CCLASS_NODE      case OP_CCLASS_NODE:  MOP_IN(OP_CCLASS_NODE);        {          OnigCodePoint code; @@ -2020,6 +2024,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,        }        MOP_OUT;        break; +#endif      case OP_ANYCHAR:  MOP_IN(OP_ANYCHAR);        DATA_ENSURE(1); @@ -2152,7 +2157,16 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,        MOP_OUT;        break; -    case OP_NOT_WORD:  MOP_IN(OP_NOT_WORD); +    case OP_WORD_ASCII:  MOP_IN(OP_WORD_ASCII); +      DATA_ENSURE(1); +      if (! ONIGENC_IS_MBC_WORD_ASCII(encode, s, end)) +        goto fail; + +      s += enclen(encode, s); +      MOP_OUT; +      break; + +    case OP_NO_WORD:  MOP_IN(OP_NO_WORD);        DATA_ENSURE(1);        if (ONIGENC_IS_MBC_WORD(encode, s, end))          goto fail; @@ -2161,38 +2175,57 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,        MOP_OUT;        break; -    case OP_WORD_BOUND:  MOP_IN(OP_WORD_BOUND); -      if (ON_STR_BEGIN(s)) { -        DATA_ENSURE(1); -        if (! ONIGENC_IS_MBC_WORD(encode, s, end)) -          goto fail; -      } -      else if (ON_STR_END(s)) { -        if (! ONIGENC_IS_MBC_WORD(encode, sprev, end)) -          goto fail; -      } -      else { -        if (ONIGENC_IS_MBC_WORD(encode, s, end) -            == ONIGENC_IS_MBC_WORD(encode, sprev, end)) -          goto fail; +    case OP_NO_WORD_ASCII:  MOP_IN(OP_NO_WORD_ASCII); +      DATA_ENSURE(1); +      if (ONIGENC_IS_MBC_WORD_ASCII(encode, s, end)) +        goto fail; + +      s += enclen(encode, s); +      MOP_OUT; +      break; + +    case OP_WORD_BOUNDARY:  MOP_IN(OP_WORD_BOUNDARY); +      { +        ModeType mode; +        GET_MODE_INC(mode, p); // ascii_mode + +        if (ON_STR_BEGIN(s)) { +          DATA_ENSURE(1); +          if (! IS_MBC_WORD_ASCII_MODE(encode, s, end, mode)) +            goto fail; +        } +        else if (ON_STR_END(s)) { +          if (! IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode)) +            goto fail; +        } +        else { +          if (IS_MBC_WORD_ASCII_MODE(encode, s, end, mode) +              == IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode)) +            goto fail; +        }        }        MOP_OUT;        continue;        break; -    case OP_NOT_WORD_BOUND:  MOP_IN(OP_NOT_WORD_BOUND); -      if (ON_STR_BEGIN(s)) { -        if (DATA_ENSURE_CHECK1 && ONIGENC_IS_MBC_WORD(encode, s, end)) -          goto fail; -      } -      else if (ON_STR_END(s)) { -        if (ONIGENC_IS_MBC_WORD(encode, sprev, end)) -          goto fail; -      } -      else { -        if (ONIGENC_IS_MBC_WORD(encode, s, end) -            != ONIGENC_IS_MBC_WORD(encode, sprev, end)) -          goto fail; +    case OP_NO_WORD_BOUNDARY:  MOP_IN(OP_NO_WORD_BOUNDARY); +      { +        ModeType mode; +        GET_MODE_INC(mode, p); // ascii_mode + +        if (ON_STR_BEGIN(s)) { +          if (DATA_ENSURE_CHECK1 && IS_MBC_WORD_ASCII_MODE(encode, s, end, mode)) +            goto fail; +        } +        else if (ON_STR_END(s)) { +          if (IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode)) +            goto fail; +        } +        else { +          if (IS_MBC_WORD_ASCII_MODE(encode, s, end, mode) +              != IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode)) +            goto fail; +        }        }        MOP_OUT;        continue; @@ -2200,26 +2233,55 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,  #ifdef USE_WORD_BEGIN_END      case OP_WORD_BEGIN:  MOP_IN(OP_WORD_BEGIN); -      if (DATA_ENSURE_CHECK1 && ONIGENC_IS_MBC_WORD(encode, s, end)) { -        if (ON_STR_BEGIN(s) || !ONIGENC_IS_MBC_WORD(encode, sprev, end)) { -          MOP_OUT; -          continue; +      { +        ModeType mode; +        GET_MODE_INC(mode, p); // ascii_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)) { +            MOP_OUT; +            continue; +          }          }        }        goto fail;        break;      case OP_WORD_END:  MOP_IN(OP_WORD_END); -      if (!ON_STR_BEGIN(s) && ONIGENC_IS_MBC_WORD(encode, sprev, end)) { -        if (ON_STR_END(s) || !ONIGENC_IS_MBC_WORD(encode, s, end)) { -          MOP_OUT; -          continue; +      { +        ModeType mode; +        GET_MODE_INC(mode, p); // ascii_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)) { +            MOP_OUT; +            continue; +          }          }        }        goto fail;        break;  #endif +    case OP_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY: +      MOP_IN(OP_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY); +      if (onigenc_egcb_is_break_position(encode, s, sprev, str, end)) { +        MOP_OUT; +        continue; +      } +      goto fail; +      break; + +    case OP_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY: +      MOP_IN(OP_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY); +      if (onigenc_egcb_is_break_position(encode, s, sprev, str, end)) +        goto fail; + +      MOP_OUT; +      continue; +      break; +      case OP_BEGIN_BUF:  MOP_IN(OP_BEGIN_BUF);        if (! ON_STR_BEGIN(s)) goto fail; diff --git a/src/regint.h b/src/regint.h index 185f4b6..9dc1723 100644 --- a/src/regint.h +++ b/src/regint.h @@ -30,7 +30,7 @@   */  /* for debug */ -/* #define ONIG_DEBUG_PARSE_TREE */ +/* #define ONIG_DEBUG_PARSE */  /* #define ONIG_DEBUG_COMPILE */  /* #define ONIG_DEBUG_SEARCH */  /* #define ONIG_DEBUG_MATCH */ @@ -39,7 +39,7 @@  /* for byte-code statistical data. */  /* #define ONIG_DEBUG_STATISTICS */ -#if defined(ONIG_DEBUG_PARSE_TREE) || defined(ONIG_DEBUG_MATCH) || \ +#if defined(ONIG_DEBUG_PARSE) || defined(ONIG_DEBUG_MATCH) || \      defined(ONIG_DEBUG_SEARCH) || defined(ONIG_DEBUG_COMPILE) || \      defined(ONIG_DEBUG_STATISTICS)  #ifndef ONIG_DEBUG @@ -56,7 +56,6 @@  /* config */  /* spec. config */ -#define USE_NAMED_GROUP  #define USE_CALL  #define USE_BACKREF_WITH_LEVEL        /* \k<name+n>, \k<name-n> */  #define USE_INSISTENT_CHECK_CAPTURES_STATUS_IN_ENDLESS_REPEAT  /* /(?:()|())*\2/ */ @@ -283,10 +282,17 @@ typedef unsigned int  MemStatusType;  #define INT_MAX_LIMIT           ((1UL << (SIZEOF_INT * 8 - 1)) - 1) +#define IS_CODE_WORD_ASCII(enc,code) \ +  (ONIGENC_IS_CODE_ASCII(code) && ONIGENC_IS_CODE_WORD(enc,code)) +#define IS_CODE_DIGIT_ASCII(enc, code) \ +  (ONIGENC_IS_CODE_ASCII(code) && ONIGENC_IS_CODE_DIGIT(enc,code)) +#define IS_CODE_XDIGIT_ASCII(enc, code) \ +  (ONIGENC_IS_CODE_ASCII(code) && ONIGENC_IS_CODE_XDIGIT(enc,code)) +  #define DIGITVAL(code)    ((code) - '0')  #define ODIGITVAL(code)   DIGITVAL(code)  #define XDIGITVAL(enc,code) \ -  (ONIGENC_IS_CODE_DIGIT(enc,code) ? DIGITVAL(code) \ +  (IS_CODE_DIGIT_ASCII(enc,code) ? DIGITVAL(code) \     : (ONIGENC_IS_CODE_UPPER(enc,code) ? (code) - 'A' + 10 : (code) - 'a' + 10))  #define IS_SINGLELINE(option)     ((option) & ONIG_OPTION_SINGLELINE) @@ -301,6 +307,21 @@ typedef unsigned int  MemStatusType;  #define IS_NOTEOL(option)         ((option) & ONIG_OPTION_NOTEOL)  #define IS_POSIX_REGION(option)   ((option) & ONIG_OPTION_POSIX_REGION) +#define IS_WORD_ASCII(option) \ +  ((option) & (ONIG_OPTION_WORD_IS_ASCII | ONIG_OPTION_POSIX_IS_ASCII)) +#define IS_DIGIT_ASCII(option) \ +  ((option) & (ONIG_OPTION_DIGIT_IS_ASCII | ONIG_OPTION_POSIX_IS_ASCII)) +#define IS_SPACE_ASCII(option) \ +  ((option) & (ONIG_OPTION_SPACE_IS_ASCII | ONIG_OPTION_POSIX_IS_ASCII)) +#define IS_POSIX_ASCII(option)    ((option) & ONIG_OPTION_POSIX_IS_ASCII) + +#define IS_ASCII_MODE_CTYPE_OPTION(ctype, options) \ +  ((ctype) >= 0 && \ +  (((ctype) < ONIGENC_CTYPE_ASCII  && IS_POSIX_ASCII(options)) ||\ +   ((ctype) == ONIGENC_CTYPE_WORD  && IS_WORD_ASCII(options))  ||\ +   ((ctype) == ONIGENC_CTYPE_DIGIT && IS_DIGIT_ASCII(options)) ||\ +   ((ctype) == ONIGENC_CTYPE_SPACE && IS_SPACE_ASCII(options)))) +  /* OP_SET_OPTION is required for these options.  #define IS_DYNAMIC_OPTION(option) \    (((option) & (ONIG_OPTION_MULTILINE | ONIG_OPTION_IGNORECASE)) != 0) @@ -350,21 +371,21 @@ typedef struct _BBuf {    unsigned int alloc;  } BBuf; -#define BBUF_INIT(buf,size)    onig_bbuf_init((BBuf* )(buf), (size)) +#define BB_INIT(buf,size)    onig_bbuf_init((BBuf* )(buf), (size)) -#define BBUF_SIZE_INC(buf,inc) do{\ +#define BB_SIZE_INC(buf,inc) do{\    (buf)->alloc += (inc);\    (buf)->p = (UChar* )xrealloc((buf)->p, (buf)->alloc);\    if (IS_NULL((buf)->p)) return(ONIGERR_MEMORY);\  } while (0) -#define BBUF_EXPAND(buf,low) do{\ +#define BB_EXPAND(buf,low) do{\    do { (buf)->alloc *= 2; } while ((buf)->alloc < (unsigned int )low);\    (buf)->p = (UChar* )xrealloc((buf)->p, (buf)->alloc);\    if (IS_NULL((buf)->p)) return(ONIGERR_MEMORY);\  } while (0) -#define BBUF_ENSURE_SIZE(buf,size) do{\ +#define BB_ENSURE_SIZE(buf,size) do{\    unsigned int new_alloc = (buf)->alloc;\    while (new_alloc < (unsigned int )(size)) { new_alloc *= 2; }\    if ((buf)->alloc != new_alloc) {\ @@ -374,54 +395,54 @@ typedef struct _BBuf {    }\  } while (0) -#define BBUF_WRITE(buf,pos,bytes,n) do{\ +#define BB_WRITE(buf,pos,bytes,n) do{\    int used = (pos) + (n);\ -  if ((buf)->alloc < (unsigned int )used) BBUF_EXPAND((buf),used);\ +  if ((buf)->alloc < (unsigned int )used) BB_EXPAND((buf),used);\    xmemcpy((buf)->p + (pos), (bytes), (n));\    if ((buf)->used < (unsigned int )used) (buf)->used = used;\  } while (0) -#define BBUF_WRITE1(buf,pos,byte) do{\ +#define BB_WRITE1(buf,pos,byte) do{\    int used = (pos) + 1;\ -  if ((buf)->alloc < (unsigned int )used) BBUF_EXPAND((buf),used);\ +  if ((buf)->alloc < (unsigned int )used) BB_EXPAND((buf),used);\    (buf)->p[(pos)] = (byte);\    if ((buf)->used < (unsigned int )used) (buf)->used = used;\  } while (0) -#define BBUF_ADD(buf,bytes,n)       BBUF_WRITE((buf),(buf)->used,(bytes),(n)) -#define BBUF_ADD1(buf,byte)         BBUF_WRITE1((buf),(buf)->used,(byte)) -#define BBUF_GET_ADD_ADDRESS(buf)   ((buf)->p + (buf)->used) -#define BBUF_GET_OFFSET_POS(buf)    ((buf)->used) +#define BB_ADD(buf,bytes,n)       BB_WRITE((buf),(buf)->used,(bytes),(n)) +#define BB_ADD1(buf,byte)         BB_WRITE1((buf),(buf)->used,(byte)) +#define BB_GET_ADD_ADDRESS(buf)   ((buf)->p + (buf)->used) +#define BB_GET_OFFSET_POS(buf)    ((buf)->used)  /* from < to */ -#define BBUF_MOVE_RIGHT(buf,from,to,n) do {\ -  if ((unsigned int )((to)+(n)) > (buf)->alloc) BBUF_EXPAND((buf),(to) + (n));\ +#define BB_MOVE_RIGHT(buf,from,to,n) do {\ +  if ((unsigned int )((to)+(n)) > (buf)->alloc) BB_EXPAND((buf),(to) + (n));\    xmemmove((buf)->p + (to), (buf)->p + (from), (n));\    if ((unsigned int )((to)+(n)) > (buf)->used) (buf)->used = (to) + (n);\  } while (0)  /* from > to */ -#define BBUF_MOVE_LEFT(buf,from,to,n) do {\ +#define BB_MOVE_LEFT(buf,from,to,n) do {\    xmemmove((buf)->p + (to), (buf)->p + (from), (n));\  } while (0)  /* from > to */ -#define BBUF_MOVE_LEFT_REDUCE(buf,from,to) do {\ +#define BB_MOVE_LEFT_REDUCE(buf,from,to) do {\    xmemmove((buf)->p + (to), (buf)->p + (from), (buf)->used - (from));\    (buf)->used -= (from - to);\  } while (0) -#define BBUF_INSERT(buf,pos,bytes,n) do {\ +#define BB_INSERT(buf,pos,bytes,n) do {\    if (pos >= (buf)->used) {\ -    BBUF_WRITE(buf,pos,bytes,n);\ +    BB_WRITE(buf,pos,bytes,n);\    }\    else {\ -    BBUF_MOVE_RIGHT((buf),(pos),(pos) + (n),((buf)->used - (pos)));\ +    BB_MOVE_RIGHT((buf),(pos),(pos) + (n),((buf)->used - (pos)));\      xmemcpy((buf)->p + (pos), (bytes), (n));\    }\  } while (0) -#define BBUF_GET_BYTE(buf, pos) (buf)->p[(pos)] +#define BB_GET_BYTE(buf, pos) (buf)->p[(pos)]  /* has body */ @@ -436,15 +457,21 @@ typedef struct _BBuf {  #define ANCHOR_END_BUF          (1<<7)  #define ANCHOR_SEMI_END_BUF     (1<<8)  #define ANCHOR_END_LINE         (1<<9) -#define ANCHOR_WORD_BOUND       (1<<10) -#define ANCHOR_NOT_WORD_BOUND   (1<<11) +#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_STAR     (1<<14)   /* ".*" optimize info */  #define ANCHOR_ANYCHAR_STAR_ML  (1<<15)   /* ".*" optimize info (multi-line) */ +#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 IS_WORD_ANCHOR_TYPE(type) \ +  ((type) == ANCHOR_WORD_BOUNDARY || (type) == ANCHOR_NO_WORD_BOUNDARY || \ +   (type) == ANCHOR_WORD_BEGIN || (type) == ANCHOR_WORD_END)  /* operation code */  enum OpCode { @@ -473,7 +500,9 @@ 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 */ @@ -483,12 +512,17 @@ enum OpCode {    OP_ANYCHAR_ML_STAR_PEEK_NEXT,    OP_WORD, -  OP_NOT_WORD, -  OP_WORD_BOUND, -  OP_NOT_WORD_BOUND, +  OP_WORD_ASCII, +  OP_NO_WORD, +  OP_NO_WORD_ASCII, +  OP_WORD_BOUNDARY, +  OP_NO_WORD_BOUNDARY,    OP_WORD_BEGIN,    OP_WORD_END, +  OP_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY, +  OP_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY, +    OP_BEGIN_BUF,    OP_END_BUF,    OP_BEGIN_LINE, @@ -580,6 +614,7 @@ typedef short int StateCheckNumType;  typedef void* PointerType;  typedef int SaveType;  typedef int UpdateVarType; +typedef int ModeType;  #define SIZE_OPCODE           1  #define SIZE_RELADDR          sizeof(RelAddrType) @@ -593,6 +628,7 @@ typedef int UpdateVarType;  #define SIZE_POINTER          sizeof(PointerType)  #define SIZE_SAVE_TYPE        sizeof(SaveType)  #define SIZE_UPDATE_VAR_TYPE  sizeof(UpdateVarType) +#define SIZE_MODE             sizeof(ModeType)  #define GET_RELADDR_INC(addr,p)    PLATFORM_GET_INC(addr,   p, RelAddrType)  #define GET_ABSADDR_INC(addr,p)    PLATFORM_GET_INC(addr,   p, AbsAddrType) @@ -604,6 +640,7 @@ typedef int UpdateVarType;  #define GET_STATE_CHECK_NUM_INC(num,p)  PLATFORM_GET_INC(num, p, StateCheckNumType)  #define GET_SAVE_TYPE_INC(type,p)       PLATFORM_GET_INC(type, p, SaveType)  #define GET_UPDATE_VAR_TYPE_INC(type,p) PLATFORM_GET_INC(type, p, UpdateVarType) +#define GET_MODE_INC(mode,p)            PLATFORM_GET_INC(mode, p, ModeType)  /* code point's address must be aligned address. */  #define GET_CODE_POINT(code,p)   code = *((OnigCodePoint* )(p)) @@ -624,6 +661,7 @@ typedef int UpdateVarType;  #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) +#define SIZE_OP_WORD_BOUNDARY          (SIZE_OPCODE + SIZE_MODE)  #define SIZE_OP_PREC_READ_START         SIZE_OPCODE  #define SIZE_OP_PUSH_PREC_READ_NOT     (SIZE_OPCODE + SIZE_RELADDR)  #define SIZE_OP_PREC_READ_END           SIZE_OPCODE @@ -725,9 +763,6 @@ typedef struct {  } OnigMatchArg; -#define IS_CODE_SB_WORD(enc,code) \ -  (ONIGENC_IS_CODE_ASCII(code) && ONIGENC_IS_CODE_WORD(enc,code)) -  typedef struct OnigEndCallListItem {    struct OnigEndCallListItem* next;    void (*func)(void); diff --git a/src/regparse.c b/src/regparse.c index 25291c5..1fb2357 100644 --- a/src/regparse.c +++ b/src/regparse.c @@ -50,6 +50,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_CAPITAL_R_GENERAL_NEWLINE |        ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT |        ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP | @@ -163,7 +164,7 @@ bbuf_clone(BBuf** rto, BBuf* from)    *rto = to = (BBuf* )xmalloc(sizeof(BBuf));    CHECK_NULL_RETURN_MEMERR(to); -  r = BBUF_INIT(to, from->alloc); +  r = BB_INIT(to, from->alloc);    if (r != 0) {      xfree(to->p);      *rto = 0; @@ -288,7 +289,6 @@ onig_strcpy(UChar* dest, const UChar* src, const UChar* end)    }  } -#ifdef USE_NAMED_GROUP  static UChar*  strdup_with_null(OnigEncoding enc, UChar* s, UChar* end)  { @@ -307,7 +307,6 @@ strdup_with_null(OnigEncoding enc, UChar* s, UChar* end)    return r;  } -#endif  static int  save_entry(ScanEnv* env, enum SaveType type, int* id) @@ -483,8 +482,6 @@ onig_st_insert_strend(hash_table_type* table, const UChar* str_key,  #endif /* USE_ST_LIBRARY */ -#ifdef USE_NAMED_GROUP -  #define INIT_NAME_BACKREFS_ALLOC_NUM   8  typedef struct { @@ -965,49 +962,17 @@ onig_name_to_backref_number(regex_t* reg, const UChar* name,    }  } -#else /* USE_NAMED_GROUP */ - -extern int -onig_name_to_group_numbers(regex_t* reg, const UChar* name, -                           const UChar* name_end, int** nums) -{ -  return ONIG_NO_SUPPORT_CONFIG; -} - -extern int -onig_name_to_backref_number(regex_t* reg, const UChar* name, -                            const UChar* name_end, OnigRegion* region) -{ -  return ONIG_NO_SUPPORT_CONFIG; -} - -extern int -onig_foreach_name(regex_t* reg, -  int (*func)(const UChar*, const UChar*,int,int*,regex_t*,void*), void* arg) -{ -  return ONIG_NO_SUPPORT_CONFIG; -} - -extern int -onig_number_of_names(regex_t* reg) -{ -  return 0; -} -#endif /* else USE_NAMED_GROUP */ -  extern int  onig_noname_group_capture_is_active(regex_t* reg)  {    if (ONIG_IS_OPTION_ON(reg->options, ONIG_OPTION_DONT_CAPTURE_GROUP))      return 0; -#ifdef USE_NAMED_GROUP    if (onig_number_of_names(reg) > 0 &&        IS_SYNTAX_BV(reg->syntax, ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP) &&        !ONIG_IS_OPTION_ON(reg->options, ONIG_OPTION_CAPTURE_GROUP)) {      return 0;    } -#endif    return 1;  } @@ -1032,10 +997,8 @@ scan_env_clear(ScanEnv* env)  #endif    env->num_mem    = 0; -#ifdef USE_NAMED_GROUP    env->num_named  = 0; -#endif -  env->mem_alloc       = 0; +  env->mem_alloc  = 0;    env->mem_env_dynamic = (MemEnv* )NULL;    xmemset(env->mem_env_static, 0, sizeof(env->mem_env_static)); @@ -1204,7 +1167,6 @@ node_new(void)    Node* node;    node = (Node* )xmalloc(sizeof(Node)); -  //xmemset(node, 0, sizeof(node->u.base));    xmemset(node, 0, sizeof(*node));  #ifdef DEBUG_NODE_FREE @@ -1218,7 +1180,6 @@ static void  initialize_cclass(CClassNode* cc)  {    BITSET_CLEAR(cc->bs); -  /* cc->base.flags = 0; */    cc->flags = 0;    cc->mbuf  = NULL;  } @@ -1235,21 +1196,23 @@ node_new_cclass(void)  }  static Node* -node_new_ctype(int type, int not) +node_new_ctype(int type, int not, OnigOptionType options)  {    Node* node = node_new();    CHECK_NULL_RETURN(node);    NODE_SET_TYPE(node, NODE_CTYPE); -  CTYPE_(node)->ctype = type; -  CTYPE_(node)->not   = not; +  CTYPE_(node)->ctype   = type; +  CTYPE_(node)->not     = not; +  CTYPE_(node)->options = options; +  CTYPE_(node)->ascii_mode = IS_ASCII_MODE_CTYPE_OPTION(type, options);    return node;  }  static Node*  node_new_anychar(void)  { -  Node* node = node_new_ctype(CTYPE_ANYCHAR, 0); +  Node* node = node_new_ctype(CTYPE_ANYCHAR, 0, ONIG_OPTION_NONE);    return node;  } @@ -1383,14 +1346,15 @@ make_alt(int n, Node* ns[])  }  extern Node* -onig_node_new_anchor(int type) +onig_node_new_anchor(int type, int ascii_mode)  {    Node* node = node_new();    CHECK_NULL_RETURN(node);    NODE_SET_TYPE(node, NODE_ANCHOR); -  ANCHOR_(node)->type     = type; -  ANCHOR_(node)->char_len = -1; +  ANCHOR_(node)->type       = type; +  ANCHOR_(node)->char_len   = -1; +  ANCHOR_(node)->ascii_mode = ascii_mode;    return node;  } @@ -1506,7 +1470,7 @@ node_new_quantifier(int lower, int upper, int by_number)  }  static Node* -node_new_enclosure(int type) +node_new_enclosure(enum EnclosureType type)  {    Node* node = node_new();    CHECK_NULL_RETURN(node); @@ -1637,6 +1601,61 @@ node_new_keep(Node** node, ScanEnv* env)  }  static int +make_extended_grapheme_cluster(Node** node, ScanEnv* env) +{ +  int r; +  int i; +  Node* x; +  Node* ns[2]; + +  /* \X == (?>\O(?:\Y\O)*) */ + +  ns[1] = NULL_NODE; + +  r = ONIGERR_MEMORY; +  ns[0] = onig_node_new_anchor(ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY, 0); +  if (IS_NULL(ns[0])) goto err; + +  r = node_new_true_anychar(&ns[1], env); +  if (r != 0) goto err1; + +  x = make_list(2, ns); +  if (IS_NULL(x)) goto err; +  ns[0] = x; +  ns[1] = NULL_NODE; + +  x = node_new_quantifier(0, REPEAT_INFINITE, 1); +  if (IS_NULL(x)) goto err; + +  NODE_BODY(x) = ns[0]; +  ns[0] = NULL_NODE; +  ns[1] = x; + +  r = node_new_true_anychar(&ns[0], env); +  if (r != 0) goto err1; + +  x = make_list(2, ns); +  if (IS_NULL(x)) goto err; + +  ns[0] = x; +  ns[1] = NULL_NODE; + +  x = node_new_enclosure(ENCLOSURE_STOP_BACKTRACK); +  if (IS_NULL(x)) goto err; + +  NODE_BODY(x) = ns[0]; + +  *node = x; +  return ONIG_NORMAL; + + err: +  r = ONIGERR_MEMORY; + err1: +  for (i = 0; i < 2; i++) onig_node_free(ns[i]); +  return r; +} + +static int  make_absent_engine(Node** node, int pre_save_right_id, Node* absent,                     Node* step_one, int lower, int upper, int possessive,                     int is_range_cutter, ScanEnv* env) @@ -1663,26 +1682,26 @@ make_absent_engine(Node** node, int pre_save_right_id, Node* absent,    if (r != 0) goto err;    x = make_list(4, ns); -  if (IS_NULL(x)) goto err; +  if (IS_NULL(x)) goto err0;    ns[0] = x;    ns[1] = step_one;    ns[2] = ns[3] = NULL_NODE;    x = make_alt(2, ns); -  if (IS_NULL(x)) goto err; +  if (IS_NULL(x)) goto err0;    ns[0] = x;    x = node_new_quantifier(lower, upper, 0); -  if (IS_NULL(x)) goto err; +  if (IS_NULL(x)) goto err0;    NODE_BODY(x) = ns[0];    ns[0] = x;    if (possessive != 0) {      x = node_new_enclosure(ENCLOSURE_STOP_BACKTRACK); -    if (IS_NULL(x)) goto err; +    if (IS_NULL(x)) goto err0;      NODE_BODY(x) = ns[0];      ns[0] = x; @@ -1696,12 +1715,12 @@ make_absent_engine(Node** node, int pre_save_right_id, Node* absent,    if (r != 0) goto err;    x = make_list(2, ns + 1); -  if (IS_NULL(x)) goto err; +  if (IS_NULL(x)) goto err0;    ns[1] = x; ns[2] = NULL_NODE;    x = make_alt(2, ns); -  if (IS_NULL(x)) goto err; +  if (IS_NULL(x)) goto err0;    if (is_range_cutter != 0)      NODE_STATUS_ADD(x, NST_SUPER); @@ -1709,6 +1728,8 @@ make_absent_engine(Node** node, int pre_save_right_id, Node* absent,    *node = x;    return ONIG_NORMAL; + err0: +  r = ONIGERR_MEMORY;   err:    for (i = 0; i < 4; i++) onig_node_free(ns[i]);    return r; @@ -1739,7 +1760,7 @@ make_absent_tail(Node** node1, Node** node2, int pre_save_right_id,    if (r != 0) goto err;    x = make_list(2, ns); -  if (IS_NULL(x)) goto err; +  if (IS_NULL(x)) goto err0;    ns[0] = NULL_NODE; ns[1] = x; @@ -1748,12 +1769,68 @@ make_absent_tail(Node** node1, Node** node2, int pre_save_right_id,    if (r != 0) goto err;    x = make_alt(2, ns); -  if (IS_NULL(x)) goto err; +  if (IS_NULL(x)) goto err0;    *node1 = save;    *node2 = x;    return ONIG_NORMAL; + err0: +  r = ONIGERR_MEMORY; + err: +  onig_node_free(save); +  onig_node_free(ns[0]); +  onig_node_free(ns[1]); +  return r; +} + +static int +make_range_clear(Node** node, ScanEnv* env) +{ +  int r; +  int id; +  Node* save; +  Node* x; +  Node* ns[2]; + +  *node = NULL_NODE; +  save = ns[0] = ns[1] = NULL_NODE; + +  r = node_new_save_gimmick(&save, SAVE_RIGHT_RANGE, env); +  if (r != 0) goto err; + +  id = GIMMICK_(save)->id; +  r = node_new_update_var_gimmick(&ns[0], UPDATE_VAR_RIGHT_RANGE_FROM_STACK, +                                  id, env); +  if (r != 0) goto err; + +  r = node_new_fail(&ns[1], env); +  if (r != 0) goto err; + +  x = make_list(2, ns); +  if (IS_NULL(x)) goto err0; + +  ns[0] = NULL_NODE; ns[1] = x; + +  r = node_new_update_var_gimmick(&ns[0], UPDATE_VAR_RIGHT_RANGE_INIT, 0, env); +  if (r != 0) goto err; + +  x = make_alt(2, ns); +  if (IS_NULL(x)) goto err0; + +  NODE_STATUS_ADD(x, NST_SUPER); + +  ns[0] = save; +  ns[1] = x; +  save = NULL_NODE; +  x = make_list(2, ns); +  if (IS_NULL(x)) goto err0; + +  *node = x; +  return ONIG_NORMAL; + + err0: +  r = ONIGERR_MEMORY;   err:    onig_node_free(save);    onig_node_free(ns[0]); @@ -1790,6 +1867,9 @@ is_simple_one_char_repeat(Node* node, Node** rquant, Node** rbody,        return 0;    } +  if (QUANT_(quant)->greedy == 0) +    return 0; +    body = NODE_BODY(quant);    switch (NODE_TYPE(body)) {    case NODE_STRING: @@ -1856,15 +1936,18 @@ make_absent_tree_for_simple_one_char_repeat(Node** node, Node* absent, Node* qua    ns[2] = ns[3] = NULL_NODE; -  r = make_absent_tail(&ns[2], &ns[3], id1, env); +  r = node_new_update_var_gimmick(&ns[2], UPDATE_VAR_RIGHT_RANGE_FROM_STACK, +                                  id1, env);    if (r != 0) goto err; -  x = make_list(4, ns); -  if (IS_NULL(x)) goto err; +  x = make_list(3, ns); +  if (IS_NULL(x)) goto err0;    *node = x;    return ONIG_NORMAL; + err0: +  r = ONIGERR_MEMORY;   err:    for (i = 0; i < 4; i++) onig_node_free(ns[i]);    return r; @@ -1892,7 +1975,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); -      if (IS_NULL(quant)) goto err; +      if (IS_NULL(quant)) goto err0;        r = node_new_true_anychar(&body, env);        if (r != 0) { @@ -1945,19 +2028,21 @@ make_absent_tree(Node** node, Node* absent, Node* expr, int is_range_cutter,    if (is_range_cutter != 0) {      x = make_list(4, ns); -    if (IS_NULL(x)) goto err; +    if (IS_NULL(x)) goto err0;    }    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 err; +    if (IS_NULL(x)) goto err0;    }    *node = x;    return ONIG_NORMAL; + err0: +  r = ONIGERR_MEMORY;   err:    for (i = 0; i < 7; i++) onig_node_free(ns[i]);    return r;   @@ -2143,7 +2228,7 @@ onig_scan_unsigned_number(UChar** src, const UChar* end, OnigEncoding enc)    num = 0;    while (! PEND) {      PFETCH(c); -    if (ONIGENC_IS_CODE_DIGIT(enc, c)) { +    if (IS_CODE_DIGIT_ASCII(enc, c)) {        val = (unsigned int )DIGITVAL(c);        if ((INT_MAX_LIMIT - val) / 10UL < num)          return -1;  /* overflow */ @@ -2161,7 +2246,7 @@ onig_scan_unsigned_number(UChar** src, const UChar* end, OnigEncoding enc)  static int  scan_unsigned_hexadecimal_number(UChar** src, UChar* end, int maxlen, -				 OnigEncoding enc) +                                 OnigEncoding enc)  {    OnigCodePoint c;    unsigned int num, val; @@ -2171,7 +2256,7 @@ scan_unsigned_hexadecimal_number(UChar** src, UChar* end, int maxlen,    num = 0;    while (! PEND && maxlen-- != 0) {      PFETCH(c); -    if (ONIGENC_IS_CODE_XDIGIT(enc, c)) { +    if (IS_CODE_XDIGIT_ASCII(enc, c)) {        val = (unsigned int )XDIGITVAL(enc,c);        if ((INT_MAX_LIMIT - val) / 16UL < num)          return -1;  /* overflow */ @@ -2189,7 +2274,7 @@ scan_unsigned_hexadecimal_number(UChar** src, UChar* end, int maxlen,  static int  scan_unsigned_octal_number(UChar** src, UChar* end, int maxlen, -			   OnigEncoding enc) +                           OnigEncoding enc)  {    OnigCodePoint c;    unsigned int num, val; @@ -2199,7 +2284,7 @@ scan_unsigned_octal_number(UChar** src, UChar* end, int maxlen,    num = 0;    while (! PEND && maxlen-- != 0) {      PFETCH(c); -    if (ONIGENC_IS_CODE_DIGIT(enc, c) && c < '8') { +    if (IS_CODE_DIGIT_ASCII(enc, c) && c < '8') {        val = ODIGITVAL(c);        if ((INT_MAX_LIMIT - val) / 8UL < num)          return -1;  /* overflow */ @@ -2216,8 +2301,8 @@ scan_unsigned_octal_number(UChar** src, UChar* end, int maxlen,  } -#define BBUF_WRITE_CODE_POINT(bbuf,pos,code) \ -    BBUF_WRITE(bbuf, pos, &(code), SIZE_CODE_POINT) +#define BB_WRITE_CODE_POINT(bbuf,pos,code) \ +    BB_WRITE(bbuf, pos, &(code), SIZE_CODE_POINT)  /* data format:       [n][from-1][to-1][from-2][to-2] ... [from-n][to-n] @@ -2233,7 +2318,7 @@ new_code_range(BBuf** pbuf)    bbuf = *pbuf = (BBuf* )xmalloc(sizeof(BBuf));    CHECK_NULL_RETURN_MEMERR(bbuf); -  r = BBUF_INIT(bbuf, INIT_MULTI_BYTE_RANGE_SIZE); +  r = BB_INIT(bbuf, INIT_MULTI_BYTE_RANGE_SIZE);    if (r != 0) {      xfree(bbuf);      *pbuf = 0; @@ -2241,7 +2326,7 @@ new_code_range(BBuf** pbuf)    }    n = 0; -  BBUF_WRITE_CODE_POINT(bbuf, 0, n); +  BB_WRITE_CODE_POINT(bbuf, 0, n);    return 0;  } @@ -2304,19 +2389,19 @@ add_code_range_to_buf(BBuf** pbuf, OnigCodePoint from, OnigCodePoint to)      int size = (n - high) * 2 * SIZE_CODE_POINT;      if (inc_n > 0) { -      BBUF_MOVE_RIGHT(bbuf, from_pos, to_pos, size); +      BB_MOVE_RIGHT(bbuf, from_pos, to_pos, size);      }      else { -      BBUF_MOVE_LEFT_REDUCE(bbuf, from_pos, to_pos); +      BB_MOVE_LEFT_REDUCE(bbuf, from_pos, to_pos);      }    }    pos = SIZE_CODE_POINT * (1 + low * 2); -  BBUF_ENSURE_SIZE(bbuf, pos + SIZE_CODE_POINT * 2); -  BBUF_WRITE_CODE_POINT(bbuf, pos, from); -  BBUF_WRITE_CODE_POINT(bbuf, pos + SIZE_CODE_POINT, to); +  BB_ENSURE_SIZE(bbuf, pos + SIZE_CODE_POINT * 2); +  BB_WRITE_CODE_POINT(bbuf, pos, from); +  BB_WRITE_CODE_POINT(bbuf, pos + SIZE_CODE_POINT, to);    n += inc_n; -  BBUF_WRITE_CODE_POINT(bbuf, 0, n); +  BB_WRITE_CODE_POINT(bbuf, 0, n);    return 0;  } @@ -2369,7 +2454,7 @@ not_code_range_buf(OnigEncoding enc, BBuf* bbuf, BBuf** pbuf)    return r;  } -#define SWAP_BBUF_NOT(bbuf1, not1, bbuf2, not2) do {\ +#define SWAP_BB_NOT(bbuf1, not1, bbuf2, not2) do {\    BBuf *tbuf; \    int  tnot; \    tnot = not1;  not1  = not2;  not2  = tnot; \ @@ -2393,7 +2478,7 @@ or_code_range_buf(OnigEncoding enc, BBuf* bbuf1, int not1,    r = 0;    if (IS_NULL(bbuf2)) -    SWAP_BBUF_NOT(bbuf1, not1, bbuf2, not2); +    SWAP_BB_NOT(bbuf1, not1, bbuf2, not2);    if (IS_NULL(bbuf1)) {      if (not1 != 0) { @@ -2410,7 +2495,7 @@ or_code_range_buf(OnigEncoding enc, BBuf* bbuf1, int not1,    }    if (not1 != 0) -    SWAP_BBUF_NOT(bbuf1, not1, bbuf2, not2); +    SWAP_BB_NOT(bbuf1, not1, bbuf2, not2);    data1 = (OnigCodePoint* )(bbuf1->p);    GET_CODE_POINT(n1, data1); @@ -2435,7 +2520,7 @@ or_code_range_buf(OnigEncoding enc, BBuf* bbuf1, int not1,  static int  and_code_range1(BBuf** pbuf, OnigCodePoint from1, OnigCodePoint to1, -	        OnigCodePoint* data, int n) +                OnigCodePoint* data, int n)  {    int i, r;    OnigCodePoint from2, to2; @@ -2493,7 +2578,7 @@ and_code_range_buf(BBuf* bbuf1, int not1, BBuf* bbuf2, int not2, BBuf** pbuf)    }    if (not1 != 0) -    SWAP_BBUF_NOT(bbuf1, not1, bbuf2, not2); +    SWAP_BB_NOT(bbuf1, not1, bbuf2, not2);    data1 = (OnigCodePoint* )(bbuf1->p);    data2 = (OnigCodePoint* )(bbuf2->p); @@ -2556,7 +2641,6 @@ and_cclass(CClassNode* dest, CClassNode* cc, OnigEncoding enc)    bitset_and(bsr1, bsr2);    if (bsr1 != dest->bs) {      bitset_copy(dest->bs, bsr1); -    bsr1 = dest->bs;    }    if (not1 != 0) {      bitset_invert(dest->bs); @@ -2614,7 +2698,6 @@ or_cclass(CClassNode* dest, CClassNode* cc, OnigEncoding enc)    bitset_or(bsr1, bsr2);    if (bsr1 != dest->bs) {      bitset_copy(dest->bs, bsr1); -    bsr1 = dest->bs;    }    if (not1 != 0) {      bitset_invert(dest->bs); @@ -2661,7 +2744,7 @@ conv_backslash_value(OnigCodePoint c, ScanEnv* env)      case 'e': return '\033';      case 'v':        if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ESC_V_VTAB)) -	return '\v'; +        return '\v';        break;      default: @@ -2874,6 +2957,7 @@ enum TokenSyms {    TK_GENERAL_NEWLINE,  /* \R */    TK_NO_NEWLINE,       /* \N */    TK_TRUE_ANYCHAR,     /* \O */ +  TK_EXTENDED_GRAPHEME_CLUSTER, /* \X */    /* in cc */    TK_CC_CLOSE, @@ -3110,7 +3194,6 @@ enum REF_NUM {    IS_REL_NUM = 2  }; -#ifdef USE_NAMED_GROUP  #ifdef USE_BACKREF_WITH_LEVEL  /*     \k<name+n>, \k<name-n> @@ -3152,7 +3235,7 @@ fetch_name_with_level(OnigCodePoint start_code, UChar** src, UChar* end,      if (c == end_code)        return ONIGERR_EMPTY_GROUP_NAME; -    if (ONIGENC_IS_CODE_DIGIT(enc, c)) { +    if (IS_CODE_DIGIT_ASCII(enc, c)) {        *num_type = IS_ABS_NUM;        digit_count++;      } @@ -3181,7 +3264,7 @@ fetch_name_with_level(OnigCodePoint start_code, UChar** src, UChar* end,      }      if (*num_type != IS_NOT_NUM) { -      if (ONIGENC_IS_CODE_DIGIT(enc, c)) { +      if (IS_CODE_DIGIT_ASCII(enc, c)) {          digit_count++;        }        else { @@ -3204,7 +3287,7 @@ fetch_name_with_level(OnigCodePoint start_code, UChar** src, UChar* end,          goto end;        }        PFETCH(c); -      if (! ONIGENC_IS_CODE_DIGIT(enc, c)) goto err; +      if (! IS_CODE_DIGIT_ASCII(enc, c)) goto err;        PUNFETCH;        level = onig_scan_unsigned_number(&p, end, enc);        if (level < 0) return ONIGERR_TOO_BIG_NUMBER; @@ -3284,7 +3367,7 @@ fetch_name(OnigCodePoint start_code, UChar** src, UChar* end,      if (c == end_code)        return ONIGERR_EMPTY_GROUP_NAME; -    if (ONIGENC_IS_CODE_DIGIT(enc, c)) { +    if (IS_CODE_DIGIT_ASCII(enc, c)) {        if (ref == 1)          *num_type = IS_ABS_NUM;        else { @@ -3328,7 +3411,7 @@ fetch_name(OnigCodePoint start_code, UChar** src, UChar* end,        }        if (*num_type != IS_NOT_NUM) { -        if (ONIGENC_IS_CODE_DIGIT(enc, c)) { +        if (IS_CODE_DIGIT_ASCII(enc, c)) {            digit_count++;          }          else { @@ -3384,111 +3467,6 @@ fetch_name(OnigCodePoint start_code, UChar** src, UChar* end,      return r;    }  } -#else -static int -fetch_name(OnigCodePoint start_code, UChar** src, UChar* end, -           UChar** rname_end, ScanEnv* env, int* rback_num, -           enum REF_NUM* num_type, int ref) -{ -  int r, sign; -  int digit_count; -  OnigCodePoint end_code; -  OnigCodePoint c = 0; -  UChar *name_end; -  OnigEncoding enc = env->enc; -  UChar *pnum_head; -  UChar *p = *src; -  PFETCH_READY; - -  *rback_num = 0; - -  end_code = get_name_end_code_point(start_code); - -  digit_count = 0; -  *rname_end = name_end = end; -  r = 0; -  pnum_head = *src; -  *num_type = IS_ABS_NUM; -  sign = 1; - -  if (PEND) { -    return ONIGERR_EMPTY_GROUP_NAME; -  } -  else { -    PFETCH(c); -    if (c == end_code) -      return ONIGERR_EMPTY_GROUP_NAME; - -    if (ONIGENC_IS_CODE_DIGIT(enc, c)) { -      *num_type = IS_ABS_NUM; -      digit_count++; -    } -    else if (c == '-') { -      if (ref == 1) { -        *num_type = IS_REL_NUM; -        sign = -1; -        pnum_head = p; -      } -      else { -        r = ONIGERR_INVALID_GROUP_NAME; -      } -    } -    else if (c == '+') { -      if (ref == 1) { -        *num_type = IS_REL_NUM; -        sign = 1; -        pnum_head = p; -      } -      else { -        r = ONIGERR_INVALID_GROUP_NAME; -      } -    } -    else { -      r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME; -    } -  } - -  while (! PEND) { -    name_end = p; - -    PFETCH(c); -    if (c == end_code || c == ')') break; - -    if (ONIGENC_IS_CODE_DIGIT(enc, c)) -      digit_count++; -    else -      r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME; -  } -  if (r == 0 && c != end_code) { -    r = ONIGERR_INVALID_GROUP_NAME; -    name_end = end; -  } -  if (r == 0 && digit_count == 0) { -    r = ONIGERR_INVALID_GROUP_NAME; -  } - -  if (r == 0) { -    *rback_num = onig_scan_unsigned_number(&pnum_head, name_end, enc); -    if (*rback_num < 0) return ONIGERR_TOO_BIG_NUMBER; -    else if (*rback_num == 0) { -      if (*num_type == IS_REL_NUM) { -        r = ONIGERR_INVALID_GROUP_NAME; -        goto err; -      } -    } -    *rback_num *= sign; - -    *rname_end = name_end; -    *src = p; -    return 0; -  } -  else { -  err: -    onig_scan_env_set_error_string(env, r, *src, name_end); -    return r; -  } -} -#endif /* USE_NAMED_GROUP */  static void  CC_ESC_WARN(ScanEnv* env, UChar *c) @@ -3521,7 +3499,7 @@ CLOSE_BRACKET_WITHOUT_ESC_WARN(ScanEnv* env, UChar* c)  static UChar*  find_str_position(OnigCodePoint s[], int n, UChar* from, UChar* to, -		  UChar **next, OnigEncoding enc) +                  UChar **next, OnigEncoding enc)  {    int i;    OnigCodePoint x; @@ -3550,7 +3528,7 @@ find_str_position(OnigCodePoint s[], int n, UChar* from, UChar* to,  static int  str_exist_check_with_esc(OnigCodePoint s[], int n, UChar* from, UChar* to, -		 OnigCodePoint bad, OnigEncoding enc, OnigSyntaxType* syn) +                         OnigCodePoint bad, OnigEncoding enc, OnigSyntaxType* syn)  {    int i, in_esc;    OnigCodePoint x; @@ -3699,7 +3677,7 @@ fetch_token_in_cc(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)          if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE;          if (!PEND) {            c2 = PPEEK; -          if (ONIGENC_IS_CODE_DIGIT(enc, c2)) +          if (IS_CODE_DIGIT_ASCII(enc, c2))              return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE;          } @@ -3726,7 +3704,7 @@ fetch_token_in_cc(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)          if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE;          if (!PEND) {            c2 = PPEEK; -          if (ONIGENC_IS_CODE_XDIGIT(enc, c2)) +          if (IS_CODE_XDIGIT_ASCII(enc, c2))              return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE;          } @@ -3956,13 +3934,25 @@ 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_BOUND; +      tok->u.anchor = ANCHOR_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_NOT_WORD_BOUND; +      tok->u.anchor = ANCHOR_NO_WORD_BOUNDARY; +      break; + +    case 'y': +      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER)) break; +      tok->type = TK_ANCHOR; +      tok->u.anchor = ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY; +      break; + +    case 'Y': +      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER)) break; +      tok->type = TK_ANCHOR; +      tok->u.anchor = ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY;        break;  #ifdef USE_WORD_BEGIN_END @@ -4041,6 +4031,11 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)        tok->type = TK_TRUE_ANYCHAR;        break; +    case 'X': +      if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER)) break; +      tok->type = TK_EXTENDED_GRAPHEME_CLUSTER; +      break; +      case 'A':        if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR)) break;      begin_buf: @@ -4086,7 +4081,7 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)          num = scan_unsigned_octal_number(&p, end, 11, enc);          if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE;          if (!PEND) { -          if (ONIGENC_IS_CODE_DIGIT(enc, PPEEK)) +          if (IS_CODE_DIGIT_ASCII(enc, PPEEK))              return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE;          } @@ -4111,7 +4106,7 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)          num = scan_unsigned_hexadecimal_number(&p, end, 8, enc);          if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE;          if (!PEND) { -          if (ONIGENC_IS_CODE_XDIGIT(enc, PPEEK)) +          if (IS_CODE_XDIGIT_ASCII(enc, PPEEK))              return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE;          } @@ -4205,7 +4200,6 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)        }        break; -#ifdef USE_NAMED_GROUP      case 'k':        if (!PEND && IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_K_NAMED_BACKREF)) {          PFETCH(c); @@ -4277,7 +4271,6 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)            PUNFETCH;        }        break; -#endif  #ifdef USE_CALL      case 'g': @@ -4531,8 +4524,8 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)  static int  add_ctype_to_cc_by_range(CClassNode* cc, int ctype ARG_UNUSED, int not, -			 OnigEncoding enc ARG_UNUSED, -                         OnigCodePoint sb_out, const OnigCodePoint mbr[]) +                         OnigEncoding enc ARG_UNUSED, OnigCodePoint sb_out, +                         const OnigCodePoint mbr[])  {    int i, r;    OnigCodePoint j; @@ -4591,33 +4584,140 @@ add_ctype_to_cc_by_range(CClassNode* cc, int ctype ARG_UNUSED, int not,          if (r != 0) return r;        }        prev = ONIGENC_CODE_RANGE_TO(mbr, i) + 1; +      if (prev == 0) goto end;      } -    if (prev < 0x7fffffff) { -      r = add_code_range_to_buf(&(cc->mbuf), prev, 0x7fffffff); + +    r = add_code_range_to_buf(&(cc->mbuf), prev, MAX_CODE_POINT); +    if (r != 0) return r; +  } + + end: +  return 0; +} + +static int +add_ctype_to_cc_by_range_limit(CClassNode* cc, int ctype ARG_UNUSED, int not, +                               OnigEncoding enc ARG_UNUSED, +                               OnigCodePoint sb_out, +                               const OnigCodePoint mbr[], OnigCodePoint limit) +{ +  int i, r; +  OnigCodePoint j; +  OnigCodePoint from; +  OnigCodePoint to; + +  int n = ONIGENC_CODE_RANGE_NUM(mbr); + +  if (not == 0) { +    for (i = 0; i < n; i++) { +      for (j  = ONIGENC_CODE_RANGE_FROM(mbr, i); +           j <= ONIGENC_CODE_RANGE_TO(mbr, i); j++) { +        if (j > limit) goto end; +        if (j >= sb_out) { +          if (j > ONIGENC_CODE_RANGE_FROM(mbr, i)) { +            to = ONIGENC_CODE_RANGE_TO(mbr, i); +            if (to > limit) to = limit; +            r = add_code_range_to_buf(&(cc->mbuf), j, to); +            if (r != 0) return r; +            i++; +          } + +          goto sb_end; +        } +        BITSET_SET_BIT(cc->bs, j); +      } +    } + +  sb_end: +    for ( ; i < n; i++) { +      from = ONIGENC_CODE_RANGE_FROM(mbr, i); +      to   = ONIGENC_CODE_RANGE_TO(mbr, i); +      if (from > limit) break; +      if (to   > limit) to = limit; +      r = add_code_range_to_buf(&(cc->mbuf), from, to);        if (r != 0) return r;      }    } +  else { +    OnigCodePoint prev = 0; + +    for (i = 0; i < n; i++) { +      from = ONIGENC_CODE_RANGE_FROM(mbr, i); +      if (from > limit) { +        for (j = prev; j < sb_out; j++) { +          BITSET_SET_BIT(cc->bs, j); +        } +        goto sb_end2; +      } +      for (j = prev; j < from; j++) { +        if (j >= sb_out) goto sb_end2; +        BITSET_SET_BIT(cc->bs, j); +      } +      prev = ONIGENC_CODE_RANGE_TO(mbr, i); +      if (prev > limit) prev = limit; +      prev++; +      if (prev == 0) goto end; +    } +    for (j = prev; j < sb_out; j++) { +      BITSET_SET_BIT(cc->bs, j); +    } + +  sb_end2: +    prev = sb_out; + +    for (i = 0; i < n; i++) { +      from = ONIGENC_CODE_RANGE_FROM(mbr, i); +      if (from > limit) goto last; + +      if (prev < from) { +        r = add_code_range_to_buf(&(cc->mbuf), prev, from - 1); +        if (r != 0) return r; +      } +      prev = ONIGENC_CODE_RANGE_TO(mbr, i); +      if (prev > limit) prev = limit; +      prev++; +      if (prev == 0) goto end; +    } + +  last: +    r = add_code_range_to_buf(&(cc->mbuf), prev, MAX_CODE_POINT); +    if (r != 0) return r; +  } + end:    return 0;  }  static int  add_ctype_to_cc(CClassNode* cc, int ctype, int not, ScanEnv* env)  { +#define ASCII_LIMIT    127 +    int c, r; +  int ascii_mode;    const OnigCodePoint *ranges; +  OnigCodePoint limit;    OnigCodePoint sb_out;    OnigEncoding enc = env->enc; +  ascii_mode = IS_ASCII_MODE_CTYPE_OPTION(ctype, env->options); +    r = ONIGENC_GET_CTYPE_CODE_RANGE(enc, ctype, &sb_out, &ranges);    if (r == 0) { -    return add_ctype_to_cc_by_range(cc, ctype, not, env->enc, sb_out, ranges); +    if (ascii_mode == 0) +      r = add_ctype_to_cc_by_range(cc, ctype, not, env->enc, sb_out, ranges); +    else +      r = add_ctype_to_cc_by_range_limit(cc, ctype, not, env->enc, sb_out, +                                         ranges, ASCII_LIMIT); +    return r;    }    else if (r != ONIG_NO_SUPPORT_CONFIG) {      return r;    }    r = 0; +  limit = ascii_mode ? ASCII_LIMIT : SINGLE_BYTE_SIZE; +    switch (ctype) {    case ONIGENC_CTYPE_ALPHA:    case ONIGENC_CTYPE_BLANK: @@ -4631,14 +4731,18 @@ add_ctype_to_cc(CClassNode* cc, int ctype, int not, ScanEnv* env)    case ONIGENC_CTYPE_ASCII:    case ONIGENC_CTYPE_ALNUM:      if (not != 0) { -      for (c = 0; c < SINGLE_BYTE_SIZE; c++) { +      for (c = 0; c < limit; c++) {          if (! ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype))            BITSET_SET_BIT(cc->bs, c);        } +      for (c = limit; c < SINGLE_BYTE_SIZE; c++) { +        BITSET_SET_BIT(cc->bs, c); +      } +        ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf);      }      else { -      for (c = 0; c < SINGLE_BYTE_SIZE; c++) { +      for (c = 0; c < limit; c++) {          if (ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype))            BITSET_SET_BIT(cc->bs, c);        } @@ -4647,34 +4751,25 @@ add_ctype_to_cc(CClassNode* cc, int ctype, int not, ScanEnv* env)    case ONIGENC_CTYPE_GRAPH:    case ONIGENC_CTYPE_PRINT: +  case ONIGENC_CTYPE_WORD:      if (not != 0) { -      for (c = 0; c < SINGLE_BYTE_SIZE; c++) { -        if (! ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype)) +      for (c = 0; c < limit; c++) { +        if (ONIGENC_CODE_TO_MBCLEN(enc, c) > 0 /* check invalid code point */ +            && ! ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype))            BITSET_SET_BIT(cc->bs, c);        } -    } -    else { -      for (c = 0; c < SINGLE_BYTE_SIZE; c++) { -        if (ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype)) +      for (c = limit; c < SINGLE_BYTE_SIZE; c++) { +        if (ONIGENC_CODE_TO_MBCLEN(enc, c) > 0)            BITSET_SET_BIT(cc->bs, c);        } -      ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf); -    } -    break; - -  case ONIGENC_CTYPE_WORD: -    if (not == 0) { -      for (c = 0; c < SINGLE_BYTE_SIZE; c++) { -        if (IS_CODE_SB_WORD(enc, c)) BITSET_SET_BIT(cc->bs, c); -      } -      ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf);      }      else { -      for (c = 0; c < SINGLE_BYTE_SIZE; c++) { -        if ((ONIGENC_CODE_TO_MBCLEN(enc, c) > 0) /* check invalid code point */ -            && ! ONIGENC_IS_CODE_WORD(enc, c)) +      for (c = 0; c < limit; c++) { +        if (ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype))            BITSET_SET_BIT(cc->bs, c);        } +      if (ascii_mode == 0) +        ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf);      }      break; @@ -4792,8 +4887,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, OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)  {    int r, ctype;    CClassNode* cc; @@ -4827,7 +4921,7 @@ enum CCVALTYPE {  static int  next_state_class(CClassNode* cc, OnigCodePoint* vs, enum CCVALTYPE* type, -		 enum CCSTATE* state, ScanEnv* env) +                 enum CCSTATE* state, ScanEnv* env)  {    int r; @@ -4850,9 +4944,9 @@ next_state_class(CClassNode* cc, OnigCodePoint* vs, enum CCVALTYPE* type,  static int  next_state_val(CClassNode* cc, OnigCodePoint *from, OnigCodePoint to, -	       int* from_israw, int to_israw, -	       enum CCVALTYPE intype, enum CCVALTYPE* type, -	       enum CCSTATE* state, ScanEnv* env) +               int* from_israw, int to_israw, +               enum CCVALTYPE intype, enum CCVALTYPE* type, +               enum CCSTATE* state, ScanEnv* env)  {    int r; @@ -4921,7 +5015,7 @@ next_state_val(CClassNode* cc, OnigCodePoint *from, OnigCodePoint to,  static int  code_exist_check(OnigCodePoint c, UChar* from, UChar* end, int ignore_escaped, -		 ScanEnv* env) +                 ScanEnv* env)  {    int in_esc;    OnigCodePoint code; @@ -5282,19 +5376,17 @@ parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end,  }  static int parse_subexp(Node** top, OnigToken* tok, int term, -			UChar** src, UChar* end, ScanEnv* env); +                        UChar** src, UChar* end, ScanEnv* env);  static int  parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, -	      ScanEnv* env) +                ScanEnv* env)  {    int r, num;    Node *target;    OnigOptionType option;    OnigCodePoint c; -#ifdef USE_NAMED_GROUP    int list_capture; -#endif    OnigEncoding enc = env->enc;    UChar* p = *src; @@ -5322,16 +5414,15 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,        break;      case '=': -      *np = onig_node_new_anchor(ANCHOR_PREC_READ); +      *np = onig_node_new_anchor(ANCHOR_PREC_READ, 0);        break;      case '!':  /*         preceding read */ -      *np = onig_node_new_anchor(ANCHOR_PREC_READ_NOT); +      *np = onig_node_new_anchor(ANCHOR_PREC_READ_NOT, 0);        break;      case '>':            /* (?>...) stop backtrack */        *np = node_new_enclosure(ENCLOSURE_STOP_BACKTRACK);        break; -#ifdef USE_NAMED_GROUP      case '\'':        if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) {          goto named_group1; @@ -5339,16 +5430,14 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,        else          return ONIGERR_UNDEFINED_GROUP_OPTION;        break; -#endif      case '<':   /* look behind (?<=...), (?<!...) */        if (PEND) return ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS;        PFETCH(c);        if (c == '=') -        *np = onig_node_new_anchor(ANCHOR_LOOK_BEHIND); +        *np = onig_node_new_anchor(ANCHOR_LOOK_BEHIND, 0);        else if (c == '!') -        *np = onig_node_new_anchor(ANCHOR_LOOK_BEHIND_NOT); -#ifdef USE_NAMED_GROUP +        *np = onig_node_new_anchor(ANCHOR_LOOK_BEHIND_NOT, 0);        else {          if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) {            UChar *name; @@ -5385,11 +5474,6 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,            return ONIGERR_UNDEFINED_GROUP_OPTION;          }        } -#else -      else { -        return ONIGERR_UNDEFINED_GROUP_OPTION; -      } -#endif        break;      case '~': @@ -5406,10 +5490,9 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,            if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;            head_bar = 1; -          if (PPEEK_IS(')')) { // (?~|)  : absent clear +          if (PPEEK_IS(')')) { // (?~|)  : range clear              PINC; -            r = node_new_update_var_gimmick(np, UPDATE_VAR_RIGHT_RANGE_INIT, -                                            0, env); +            r = make_range_clear(np, env);              if (r != 0) return r;              goto end;            } @@ -5471,7 +5554,7 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,          PFETCH(c);          if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; -        if (ONIGENC_IS_CODE_DIGIT(enc, c) +        if (IS_CODE_DIGIT_ASCII(enc, c)              || c == '-' || c == '+' || c == '<' || c == '\'') {            UChar* name_end;            int back_num; @@ -5647,7 +5730,6 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,      case '@':        if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY)) { -#ifdef USE_NAMED_GROUP          if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) {            PFETCH(c);            if (c == '<' || c == '\'') { @@ -5656,7 +5738,7 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,            }            PUNFETCH;          } -#endif +          *np = node_new_memory(0);          CHECK_NULL_RETURN_MEMERR(*np);          num = scan_env_add_mem_entry(env); @@ -5678,6 +5760,7 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,      case 'p':  #endif      case '-': case 'i': case 'm': case 's': case 'x': +    case 'W': case 'D': case 'S': case 'P':        {          int neg = 0; @@ -5713,6 +5796,11 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,              OPTION_NEGATE(option, ONIG_OPTION_MULTILINE|ONIG_OPTION_SINGLELINE, neg);              break;  #endif +          case 'W': OPTION_NEGATE(option, ONIG_OPTION_WORD_IS_ASCII, neg); break; +          case 'D': OPTION_NEGATE(option, ONIG_OPTION_DIGIT_IS_ASCII, neg); break; +          case 'S': OPTION_NEGATE(option, ONIG_OPTION_SPACE_IS_ASCII, neg); break; +          case 'P': OPTION_NEGATE(option, ONIG_OPTION_POSIX_IS_ASCII, neg); break; +            default:              return ONIGERR_UNDEFINED_GROUP_OPTION;            } @@ -5918,8 +6006,7 @@ typedef struct {  } IApplyCaseFoldArg;  static int -i_apply_case_fold(OnigCodePoint from, OnigCodePoint to[], -		  int to_len, void* arg) +i_apply_case_fold(OnigCodePoint from, OnigCodePoint to[], int to_len, void* arg)  {    IApplyCaseFoldArg* iarg;    ScanEnv* env; @@ -5998,8 +6085,8 @@ i_apply_case_fold(OnigCodePoint from, OnigCodePoint to[],  }  static int -parse_exp(Node** np, OnigToken* tok, int term, -	  UChar** src, UChar* end, ScanEnv* env) +parse_exp(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, +          ScanEnv* env)  {    int r, len, group = 0;    Node* qn; @@ -6145,7 +6232,7 @@ parse_exp(Node** np, OnigToken* tok, int term,      {        switch (tok->u.prop.ctype) {        case ONIGENC_CTYPE_WORD: -        *np = node_new_ctype(tok->u.prop.ctype, tok->u.prop.not); +        *np = node_new_ctype(tok->u.prop.ctype, tok->u.prop.not, env->options);          CHECK_NULL_RETURN_MEMERR(*np);          break; @@ -6253,7 +6340,11 @@ parse_exp(Node** np, OnigToken* tok, int term,  #endif    case TK_ANCHOR: -    *np = onig_node_new_anchor(tok->u.anchor); +    { +      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); +    }      break;    case TK_OP_REPEAT: @@ -6289,6 +6380,11 @@ parse_exp(Node** np, OnigToken* tok, int term,      if (r < 0) return r;      break; +  case TK_EXTENDED_GRAPHEME_CLUSTER: +    r = make_extended_grapheme_cluster(np, env); +    if (r < 0) return r; +    break; +    default:      return ONIGERR_PARSER_BUG;      break; @@ -6356,8 +6452,8 @@ parse_exp(Node** np, OnigToken* tok, int term,  }  static int -parse_branch(Node** top, OnigToken* tok, int term, -	     UChar** src, UChar* end, ScanEnv* env) +parse_branch(Node** top, OnigToken* tok, int term, UChar** src, UChar* end, +             ScanEnv* env)  {    int r;    Node *node, **headp; @@ -6399,8 +6495,8 @@ parse_branch(Node** top, OnigToken* tok, int term,  /* 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, OnigToken* tok, int term, UChar** src, UChar* end, +             ScanEnv* env)  {    int r;    Node *node, **headp; @@ -6492,9 +6588,7 @@ onig_parse_tree(Node** root, const UChar* pattern, const UChar* end,    int r;    UChar* p; -#ifdef USE_NAMED_GROUP    names_clear(reg); -#endif    scan_env_clear(env);    env->options        = reg->options; @@ -6531,7 +6625,7 @@ onig_parse_tree(Node** root, const UChar* pattern, const UChar* end,  extern void  onig_scan_env_set_error_string(ScanEnv* env, int ecode ARG_UNUSED, -				UChar* arg, UChar* arg_end) +                               UChar* arg, UChar* arg_end)  {    env->error     = arg;    env->error_end = arg_end; diff --git a/src/regparse.h b/src/regparse.h index b7260ea..57219a4 100644 --- a/src/regparse.h +++ b/src/regparse.h @@ -100,10 +100,12 @@ enum GimmickType {  #define ANCHOR_ANYCHAR_STAR_MASK (ANCHOR_ANYCHAR_STAR | ANCHOR_ANYCHAR_STAR_ML)  #define ANCHOR_END_BUF_MASK      (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF) -#define ENCLOSURE_MEMORY           (1<<0) -#define ENCLOSURE_OPTION           (1<<1) -#define ENCLOSURE_STOP_BACKTRACK   (1<<2) -#define ENCLOSURE_IF_ELSE          (1<<3) +enum EnclosureType { +  ENCLOSURE_MEMORY = 0, +  ENCLOSURE_OPTION = 1, +  ENCLOSURE_STOP_BACKTRACK = 2, +  ENCLOSURE_IF_ELSE = 3, +};  #define NODE_STRING_MARGIN         16  #define NODE_STRING_BUF_SIZE       24  /* sizeof(CClassNode) - sizeof(int)*4 */ @@ -125,7 +127,7 @@ enum GimmickType {    (((node)->u.str.flag & STRING_DONT_GET_OPT_INFO) != 0)  #define BACKREFS_P(br) \ -  (IS_NOT_NULL((br)->back_dynamic) ? (br)->back_dynamic : (br)->back_static); +  (IS_NOT_NULL((br)->back_dynamic) ? (br)->back_dynamic : (br)->back_static)  #define QUANT_BODY_IS_NOT_EMPTY    0  #define QUANT_BODY_IS_EMPTY        1 @@ -233,7 +235,7 @@ typedef struct {    int status;    struct _Node* body; -  int type; +  enum EnclosureType type;    union {      struct {        int regnum; @@ -301,6 +303,7 @@ typedef struct {    int type;    int char_len; +  int ascii_mode;  } AnchorNode;  typedef struct { @@ -318,6 +321,7 @@ typedef struct {    int ctype;    int not;    OnigOptionType options; +  int ascii_mode;  } CtypeNode;  typedef struct { @@ -392,9 +396,7 @@ typedef struct {    int              has_call_zero;  #endif    int              num_mem; -#ifdef USE_NAMED_GROUP    int              num_named; -#endif    int              mem_alloc;    MemEnv            mem_env_static[SCANENV_MEMENV_SIZE];    MemEnv*           mem_env_dynamic; @@ -417,13 +419,11 @@ typedef struct {  #define IS_SYNTAX_OP2(syn, opm)   (((syn)->op2 & (opm)) != 0)  #define IS_SYNTAX_BV(syn, bvm)    (((syn)->behavior & (bvm)) != 0) -#ifdef USE_NAMED_GROUP  typedef struct {    int new_val;  } GroupNumRemap;  extern int    onig_renumber_name_table P_((regex_t* reg, GroupNumRemap* map)); -#endif  extern int    onig_strncmp P_((const UChar* s1, const UChar* s2, int n));  extern void   onig_strcpy P_((UChar* dest, const UChar* src, const UChar* end)); @@ -435,7 +435,7 @@ 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_anchor P_((int 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));  extern Node*  onig_node_list_add P_((Node* list, Node* x)); @@ -448,9 +448,7 @@ extern int    onig_is_code_in_cc P_((OnigEncoding enc, OnigCodePoint code, CClas  extern OnigLen onig_get_tiny_min_len(Node* node, unsigned int inhibit_node_types, int* invalid_node);  #ifdef ONIG_DEBUG -#ifdef USE_NAMED_GROUP  extern int onig_print_names(FILE*, regex_t*);  #endif -#endif  #endif /* REGPARSE_H */ diff --git a/src/regsyntax.c b/src/regsyntax.c index 6833e1d..83989b6 100644 --- a/src/regsyntax.c +++ b/src/regsyntax.c @@ -176,6 +176,7 @@ OnigSyntaxType OnigSyntaxPerl = {        ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL |        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_P_BRACE_CHAR_PROPERTY |        ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT |        ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP | @@ -206,6 +207,7 @@ OnigSyntaxType OnigSyntaxPerl_NG = {        ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL |        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_P_BRACE_CHAR_PROPERTY  |        ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT |        ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP       | diff --git a/src/unicode.c b/src/unicode.c index 5b6b3e7..65de74a 100644 --- a/src/unicode.c +++ b/src/unicode.c @@ -664,3 +664,203 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc,    return n;  } + + +#ifdef USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER + +enum EGCB_BREAK_TYPE { +  EGCB_NOT_BREAK = 0, +  EGCB_BREAK     = 1, +  EGCB_BREAK_UNDEF_E_MODIFIER = 2, +  EGCB_BREAK_UNDEF_RI_RI = 3 +}; + +enum EGCB_TYPE { +  EGCB_Other   = 0, +  EGCB_CR      = 1, +  EGCB_LF      = 2, +  EGCB_Control = 3, +  EGCB_Extend  = 4, +  EGCB_Prepend = 5, +  EGCB_Regional_Indicator = 6, +  EGCB_SpacingMark = 7, +  EGCB_ZWJ         = 8, +  EGCB_E_Base         = 9, +  EGCB_E_Base_GAZ     = 10, +  EGCB_E_Modifier     = 11, +  EGCB_Glue_After_Zwj = 12, +  EGCB_L   = 13, +  EGCB_LV  = 14, +  EGCB_LVT = 15, +  EGCB_T   = 16, +  EGCB_V   = 17 +}; + +typedef struct { +  OnigCodePoint  start; +  OnigCodePoint  end; +  enum EGCB_TYPE type; +} EGCB_RANGE_TYPE; + +#include "unicode_egcb_data.c" + +static enum EGCB_TYPE +egcb_get_type(OnigCodePoint code) +{ +  OnigCodePoint low, high, x; +  enum EGCB_TYPE type; + +  for (low = 0, high = EGCB_RANGE_NUM; low < high; ) { +    x = (low + high) >> 1; +    if (code > EGCB_RANGES[x].end) +      low = x + 1; +    else +      high = x; +  } + +  type = (low < EGCB_RANGE_NUM && code >= EGCB_RANGES[low].start) ? +    EGCB_RANGES[low].type : EGCB_Other; +  return type; +} + +#define IS_CONTROL_CR_LF(code)   ((code) <= EGCB_Control && (code) >= EGCB_CR) +#define IS_HANGUL(code)          ((code) >= EGCB_L) + +/* GB1 and GB2 are outside of this function. */ +static enum EGCB_BREAK_TYPE +unicode_egcb_is_break_2code(OnigCodePoint from_code, OnigCodePoint to_code) +{ +  enum EGCB_TYPE from; +  enum EGCB_TYPE to; + +  from = egcb_get_type(from_code); +  to   = egcb_get_type(to_code); + +  /* short cut */ +  if (from == 0 && to == 0) goto GB999; + +  /* GB3 */ +  if (from == EGCB_CR && to == EGCB_LF) return EGCB_NOT_BREAK; +  /* GB4 */ +  if (IS_CONTROL_CR_LF(from)) return EGCB_BREAK; +  /* GB5 */ +  if (IS_CONTROL_CR_LF(to)) return EGCB_BREAK; + +  if (IS_HANGUL(from) && IS_HANGUL(to)) { +    /* GB6 */ +    if (from == EGCB_L && to != EGCB_T) return EGCB_NOT_BREAK; +    /* GB7 */ +    if ((from == EGCB_LV || from == EGCB_V) +        && (to == EGCB_V || to == EGCB_T)) return EGCB_NOT_BREAK; + +    /* GB8 */ +    if ((from == EGCB_LVT || from == EGCB_T) && (to == EGCB_T)) +      return EGCB_NOT_BREAK; + +    goto GB999; +  } + +  /* GB9 */ +  if (to == EGCB_Extend || to == EGCB_ZWJ) return EGCB_NOT_BREAK; + +  /* GB9a */ +  if (to == EGCB_SpacingMark) return EGCB_NOT_BREAK; +  /* GB9b */ +  if (from == EGCB_Prepend) return EGCB_NOT_BREAK; + +  /* GB10 */ +  if (to == EGCB_E_Modifier) { +    if (from == EGCB_E_Base || from == EGCB_E_Base_GAZ) return EGCB_NOT_BREAK; +    if (from == EGCB_Extend) return EGCB_BREAK_UNDEF_E_MODIFIER; +    goto GB999; +  } + +  /* GB11 */ +  if (from == EGCB_ZWJ) { +    if (to == EGCB_Glue_After_Zwj || to == EGCB_E_Base_GAZ) return EGCB_NOT_BREAK; +    goto GB999; +  } + +  /* GB12, GB13 */ +  if (from == EGCB_Regional_Indicator && to == EGCB_Regional_Indicator) { +    return EGCB_BREAK_UNDEF_RI_RI; +  } + + GB999: +  return EGCB_BREAK; +} + +#endif /* USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER */ + +extern int +onigenc_egcb_is_break_position(OnigEncoding enc, UChar* p, UChar* prev, +                               const UChar* start, const UChar* end) +{ +  OnigCodePoint from; +  OnigCodePoint to; +#ifdef USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER +  enum EGCB_BREAK_TYPE btype; +  enum EGCB_TYPE type; +#endif + +  /* GB1 and GB2 */ +  if (p == start) return 1; +  if (p == end)   return 1; + +  if (IS_NULL(prev)) { +    prev = onigenc_get_prev_char_head(enc, start, p); +    if (IS_NULL(prev)) return 1; +  } + +  from = ONIGENC_MBC_TO_CODE(enc, prev, end); +  to   = ONIGENC_MBC_TO_CODE(enc, p, end); + +#ifdef USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER +  if (! ONIGENC_IS_UNICODE_ENCODING(enc)) { +    if (from == 0x000d && to == 0x000a) return 0; +    else return 1; +  } + +  btype = unicode_egcb_is_break_2code(from, to); +  switch (btype) { +  case EGCB_NOT_BREAK: +    return 0; +    break; +  case EGCB_BREAK: +    return 1; +    break; + +  case EGCB_BREAK_UNDEF_E_MODIFIER: +    while ((prev = onigenc_get_prev_char_head(enc, start, prev)) != NULL) { +      from = ONIGENC_MBC_TO_CODE(enc, prev, end); +      type = egcb_get_type(from); +      if (type == EGCB_E_Base || type == EGCB_E_Base_GAZ) +        return 0; +      if (type != EGCB_Extend) +        break; +    } +    break; + +  case EGCB_BREAK_UNDEF_RI_RI: +    { +      int n = 0; +      while ((prev = onigenc_get_prev_char_head(enc, start, prev)) != NULL) { +        from = ONIGENC_MBC_TO_CODE(enc, prev, end); +        type = egcb_get_type(from); +        if (type != EGCB_Regional_Indicator) +          break; + +        n++; +      } +      if ((n % 2) == 0) return 0; +    } +    break; +  } + +  return 1; + +#else +  if (from == 0x000d && to == 0x000a) return 0; +  else return 1; +#endif /* USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER */ +} diff --git a/src/unicode_egcb_data.c b/src/unicode_egcb_data.c new file mode 100644 index 0000000..144d9b3 --- /dev/null +++ b/src/unicode_egcb_data.c @@ -0,0 +1,1382 @@ +/* Copyright (c) 2017  K.Kosako */ +/* Generated by make_gcb_data.py. */ + +#define GRAPHEME_BREAK_PROPERTY_VERSION  10_0_0 + +/* +CR +Control +E_Base +E_Base_GAZ +E_Modifier +Extend +Glue_After_Zwj +L +LF +LV +LVT +Prepend +Regional_Indicator +SpacingMark +T +V +ZWJ +*/ + +static int EGCB_RANGE_NUM = 1354; +static EGCB_RANGE_TYPE EGCB_RANGES[] = { + {0x000000, 0x000009, EGCB_Control }, + {0x00000a, 0x00000a, EGCB_LF }, + {0x00000b, 0x00000c, EGCB_Control }, + {0x00000d, 0x00000d, EGCB_CR }, + {0x00000e, 0x00001f, EGCB_Control }, + {0x00007f, 0x00009f, EGCB_Control }, + {0x0000ad, 0x0000ad, EGCB_Control }, + {0x000300, 0x00036f, EGCB_Extend }, + {0x000483, 0x000489, EGCB_Extend }, + {0x000591, 0x0005bd, EGCB_Extend }, + {0x0005bf, 0x0005bf, EGCB_Extend }, + {0x0005c1, 0x0005c2, EGCB_Extend }, + {0x0005c4, 0x0005c5, EGCB_Extend }, + {0x0005c7, 0x0005c7, EGCB_Extend }, + {0x000600, 0x000605, EGCB_Prepend }, + {0x000610, 0x00061a, EGCB_Extend }, + {0x00061c, 0x00061c, EGCB_Control }, + {0x00064b, 0x00065f, EGCB_Extend }, + {0x000670, 0x000670, EGCB_Extend }, + {0x0006d6, 0x0006dc, EGCB_Extend }, + {0x0006dd, 0x0006dd, EGCB_Prepend }, + {0x0006df, 0x0006e4, EGCB_Extend }, + {0x0006e7, 0x0006e8, EGCB_Extend }, + {0x0006ea, 0x0006ed, EGCB_Extend }, + {0x00070f, 0x00070f, EGCB_Prepend }, + {0x000711, 0x000711, EGCB_Extend }, + {0x000730, 0x00074a, EGCB_Extend }, + {0x0007a6, 0x0007b0, EGCB_Extend }, + {0x0007eb, 0x0007f3, EGCB_Extend }, + {0x000816, 0x000819, EGCB_Extend }, + {0x00081b, 0x000823, EGCB_Extend }, + {0x000825, 0x000827, EGCB_Extend }, + {0x000829, 0x00082d, EGCB_Extend }, + {0x000859, 0x00085b, EGCB_Extend }, + {0x0008d4, 0x0008e1, EGCB_Extend }, + {0x0008e2, 0x0008e2, EGCB_Prepend }, + {0x0008e3, 0x000902, EGCB_Extend }, + {0x000903, 0x000903, EGCB_SpacingMark }, + {0x00093a, 0x00093a, EGCB_Extend }, + {0x00093b, 0x00093b, EGCB_SpacingMark }, + {0x00093c, 0x00093c, EGCB_Extend }, + {0x00093e, 0x000940, EGCB_SpacingMark }, + {0x000941, 0x000948, EGCB_Extend }, + {0x000949, 0x00094c, EGCB_SpacingMark }, + {0x00094d, 0x00094d, EGCB_Extend }, + {0x00094e, 0x00094f, EGCB_SpacingMark }, + {0x000951, 0x000957, EGCB_Extend }, + {0x000962, 0x000963, EGCB_Extend }, + {0x000981, 0x000981, EGCB_Extend }, + {0x000982, 0x000983, EGCB_SpacingMark }, + {0x0009bc, 0x0009bc, EGCB_Extend }, + {0x0009be, 0x0009be, EGCB_Extend }, + {0x0009bf, 0x0009c0, EGCB_SpacingMark }, + {0x0009c1, 0x0009c4, EGCB_Extend }, + {0x0009c7, 0x0009c8, EGCB_SpacingMark }, + {0x0009cb, 0x0009cc, EGCB_SpacingMark }, + {0x0009cd, 0x0009cd, EGCB_Extend }, + {0x0009d7, 0x0009d7, EGCB_Extend }, + {0x0009e2, 0x0009e3, EGCB_Extend }, + {0x000a01, 0x000a02, EGCB_Extend }, + {0x000a03, 0x000a03, EGCB_SpacingMark }, + {0x000a3c, 0x000a3c, EGCB_Extend }, + {0x000a3e, 0x000a40, EGCB_SpacingMark }, + {0x000a41, 0x000a42, EGCB_Extend }, + {0x000a47, 0x000a48, EGCB_Extend }, + {0x000a4b, 0x000a4d, EGCB_Extend }, + {0x000a51, 0x000a51, EGCB_Extend }, + {0x000a70, 0x000a71, EGCB_Extend }, + {0x000a75, 0x000a75, EGCB_Extend }, + {0x000a81, 0x000a82, EGCB_Extend }, + {0x000a83, 0x000a83, EGCB_SpacingMark }, + {0x000abc, 0x000abc, EGCB_Extend }, + {0x000abe, 0x000ac0, EGCB_SpacingMark }, + {0x000ac1, 0x000ac5, EGCB_Extend }, + {0x000ac7, 0x000ac8, EGCB_Extend }, + {0x000ac9, 0x000ac9, EGCB_SpacingMark }, + {0x000acb, 0x000acc, EGCB_SpacingMark }, + {0x000acd, 0x000acd, EGCB_Extend }, + {0x000ae2, 0x000ae3, EGCB_Extend }, + {0x000afa, 0x000aff, EGCB_Extend }, + {0x000b01, 0x000b01, EGCB_Extend }, + {0x000b02, 0x000b03, EGCB_SpacingMark }, + {0x000b3c, 0x000b3c, EGCB_Extend }, + {0x000b3e, 0x000b3f, EGCB_Extend }, + {0x000b40, 0x000b40, EGCB_SpacingMark }, + {0x000b41, 0x000b44, EGCB_Extend }, + {0x000b47, 0x000b48, EGCB_SpacingMark }, + {0x000b4b, 0x000b4c, EGCB_SpacingMark }, + {0x000b4d, 0x000b4d, EGCB_Extend }, + {0x000b56, 0x000b57, EGCB_Extend }, + {0x000b62, 0x000b63, EGCB_Extend }, + {0x000b82, 0x000b82, EGCB_Extend }, + {0x000bbe, 0x000bbe, EGCB_Extend }, + {0x000bbf, 0x000bbf, EGCB_SpacingMark }, + {0x000bc0, 0x000bc0, EGCB_Extend }, + {0x000bc1, 0x000bc2, EGCB_SpacingMark }, + {0x000bc6, 0x000bc8, EGCB_SpacingMark }, + {0x000bca, 0x000bcc, EGCB_SpacingMark }, + {0x000bcd, 0x000bcd, EGCB_Extend }, + {0x000bd7, 0x000bd7, EGCB_Extend }, + {0x000c00, 0x000c00, EGCB_Extend }, + {0x000c01, 0x000c03, EGCB_SpacingMark }, + {0x000c3e, 0x000c40, EGCB_Extend }, + {0x000c41, 0x000c44, EGCB_SpacingMark }, + {0x000c46, 0x000c48, EGCB_Extend }, + {0x000c4a, 0x000c4d, EGCB_Extend }, + {0x000c55, 0x000c56, EGCB_Extend }, + {0x000c62, 0x000c63, EGCB_Extend }, + {0x000c81, 0x000c81, EGCB_Extend }, + {0x000c82, 0x000c83, EGCB_SpacingMark }, + {0x000cbc, 0x000cbc, EGCB_Extend }, + {0x000cbe, 0x000cbe, EGCB_SpacingMark }, + {0x000cbf, 0x000cbf, EGCB_Extend }, + {0x000cc0, 0x000cc1, EGCB_SpacingMark }, + {0x000cc2, 0x000cc2, EGCB_Extend }, + {0x000cc3, 0x000cc4, EGCB_SpacingMark }, + {0x000cc6, 0x000cc6, EGCB_Extend }, + {0x000cc7, 0x000cc8, EGCB_SpacingMark }, + {0x000cca, 0x000ccb, EGCB_SpacingMark }, + {0x000ccc, 0x000ccd, EGCB_Extend }, + {0x000cd5, 0x000cd6, EGCB_Extend }, + {0x000ce2, 0x000ce3, EGCB_Extend }, + {0x000d00, 0x000d01, EGCB_Extend }, + {0x000d02, 0x000d03, EGCB_SpacingMark }, + {0x000d3b, 0x000d3c, EGCB_Extend }, + {0x000d3e, 0x000d3e, EGCB_Extend }, + {0x000d3f, 0x000d40, EGCB_SpacingMark }, + {0x000d41, 0x000d44, EGCB_Extend }, + {0x000d46, 0x000d48, EGCB_SpacingMark }, + {0x000d4a, 0x000d4c, EGCB_SpacingMark }, + {0x000d4d, 0x000d4d, EGCB_Extend }, + {0x000d4e, 0x000d4e, EGCB_Prepend }, + {0x000d57, 0x000d57, EGCB_Extend }, + {0x000d62, 0x000d63, EGCB_Extend }, + {0x000d82, 0x000d83, EGCB_SpacingMark }, + {0x000dca, 0x000dca, EGCB_Extend }, + {0x000dcf, 0x000dcf, EGCB_Extend }, + {0x000dd0, 0x000dd1, EGCB_SpacingMark }, + {0x000dd2, 0x000dd4, EGCB_Extend }, + {0x000dd6, 0x000dd6, EGCB_Extend }, + {0x000dd8, 0x000dde, EGCB_SpacingMark }, + {0x000ddf, 0x000ddf, EGCB_Extend }, + {0x000df2, 0x000df3, EGCB_SpacingMark }, + {0x000e31, 0x000e31, EGCB_Extend }, + {0x000e33, 0x000e33, EGCB_SpacingMark }, + {0x000e34, 0x000e3a, EGCB_Extend }, + {0x000e47, 0x000e4e, EGCB_Extend }, + {0x000eb1, 0x000eb1, EGCB_Extend }, + {0x000eb3, 0x000eb3, EGCB_SpacingMark }, + {0x000eb4, 0x000eb9, EGCB_Extend }, + {0x000ebb, 0x000ebc, EGCB_Extend }, + {0x000ec8, 0x000ecd, EGCB_Extend }, + {0x000f18, 0x000f19, EGCB_Extend }, + {0x000f35, 0x000f35, EGCB_Extend }, + {0x000f37, 0x000f37, EGCB_Extend }, + {0x000f39, 0x000f39, EGCB_Extend }, + {0x000f3e, 0x000f3f, EGCB_SpacingMark }, + {0x000f71, 0x000f7e, EGCB_Extend }, + {0x000f7f, 0x000f7f, EGCB_SpacingMark }, + {0x000f80, 0x000f84, EGCB_Extend }, + {0x000f86, 0x000f87, EGCB_Extend }, + {0x000f8d, 0x000f97, EGCB_Extend }, + {0x000f99, 0x000fbc, EGCB_Extend }, + {0x000fc6, 0x000fc6, EGCB_Extend }, + {0x00102d, 0x001030, EGCB_Extend }, + {0x001031, 0x001031, EGCB_SpacingMark }, + {0x001032, 0x001037, EGCB_Extend }, + {0x001039, 0x00103a, EGCB_Extend }, + {0x00103b, 0x00103c, EGCB_SpacingMark }, + {0x00103d, 0x00103e, EGCB_Extend }, + {0x001056, 0x001057, EGCB_SpacingMark }, + {0x001058, 0x001059, EGCB_Extend }, + {0x00105e, 0x001060, EGCB_Extend }, + {0x001071, 0x001074, EGCB_Extend }, + {0x001082, 0x001082, EGCB_Extend }, + {0x001084, 0x001084, EGCB_SpacingMark }, + {0x001085, 0x001086, EGCB_Extend }, + {0x00108d, 0x00108d, EGCB_Extend }, + {0x00109d, 0x00109d, EGCB_Extend }, + {0x001100, 0x00115f, EGCB_L }, + {0x001160, 0x0011a7, EGCB_V }, + {0x0011a8, 0x0011ff, EGCB_T }, + {0x00135d, 0x00135f, EGCB_Extend }, + {0x001712, 0x001714, EGCB_Extend }, + {0x001732, 0x001734, EGCB_Extend }, + {0x001752, 0x001753, EGCB_Extend }, + {0x001772, 0x001773, EGCB_Extend }, + {0x0017b4, 0x0017b5, EGCB_Extend }, + {0x0017b6, 0x0017b6, EGCB_SpacingMark }, + {0x0017b7, 0x0017bd, EGCB_Extend }, + {0x0017be, 0x0017c5, EGCB_SpacingMark }, + {0x0017c6, 0x0017c6, EGCB_Extend }, + {0x0017c7, 0x0017c8, EGCB_SpacingMark }, + {0x0017c9, 0x0017d3, EGCB_Extend }, + {0x0017dd, 0x0017dd, EGCB_Extend }, + {0x00180b, 0x00180d, EGCB_Extend }, + {0x00180e, 0x00180e, EGCB_Control }, + {0x001885, 0x001886, EGCB_Extend }, + {0x0018a9, 0x0018a9, EGCB_Extend }, + {0x001920, 0x001922, EGCB_Extend }, + {0x001923, 0x001926, EGCB_SpacingMark }, + {0x001927, 0x001928, EGCB_Extend }, + {0x001929, 0x00192b, EGCB_SpacingMark }, + {0x001930, 0x001931, EGCB_SpacingMark }, + {0x001932, 0x001932, EGCB_Extend }, + {0x001933, 0x001938, EGCB_SpacingMark }, + {0x001939, 0x00193b, EGCB_Extend }, + {0x001a17, 0x001a18, EGCB_Extend }, + {0x001a19, 0x001a1a, EGCB_SpacingMark }, + {0x001a1b, 0x001a1b, EGCB_Extend }, + {0x001a55, 0x001a55, EGCB_SpacingMark }, + {0x001a56, 0x001a56, EGCB_Extend }, + {0x001a57, 0x001a57, EGCB_SpacingMark }, + {0x001a58, 0x001a5e, EGCB_Extend }, + {0x001a60, 0x001a60, EGCB_Extend }, + {0x001a62, 0x001a62, EGCB_Extend }, + {0x001a65, 0x001a6c, EGCB_Extend }, + {0x001a6d, 0x001a72, EGCB_SpacingMark }, + {0x001a73, 0x001a7c, EGCB_Extend }, + {0x001a7f, 0x001a7f, EGCB_Extend }, + {0x001ab0, 0x001abe, EGCB_Extend }, + {0x001b00, 0x001b03, EGCB_Extend }, + {0x001b04, 0x001b04, EGCB_SpacingMark }, + {0x001b34, 0x001b34, EGCB_Extend }, + {0x001b35, 0x001b35, EGCB_SpacingMark }, + {0x001b36, 0x001b3a, EGCB_Extend }, + {0x001b3b, 0x001b3b, EGCB_SpacingMark }, + {0x001b3c, 0x001b3c, EGCB_Extend }, + {0x001b3d, 0x001b41, EGCB_SpacingMark }, + {0x001b42, 0x001b42, EGCB_Extend }, + {0x001b43, 0x001b44, EGCB_SpacingMark }, + {0x001b6b, 0x001b73, EGCB_Extend }, + {0x001b80, 0x001b81, EGCB_Extend }, + {0x001b82, 0x001b82, EGCB_SpacingMark }, + {0x001ba1, 0x001ba1, EGCB_SpacingMark }, + {0x001ba2, 0x001ba5, EGCB_Extend }, + {0x001ba6, 0x001ba7, EGCB_SpacingMark }, + {0x001ba8, 0x001ba9, EGCB_Extend }, + {0x001baa, 0x001baa, EGCB_SpacingMark }, + {0x001bab, 0x001bad, EGCB_Extend }, + {0x001be6, 0x001be6, EGCB_Extend }, + {0x001be7, 0x001be7, EGCB_SpacingMark }, + {0x001be8, 0x001be9, EGCB_Extend }, + {0x001bea, 0x001bec, EGCB_SpacingMark }, + {0x001bed, 0x001bed, EGCB_Extend }, + {0x001bee, 0x001bee, EGCB_SpacingMark }, + {0x001bef, 0x001bf1, EGCB_Extend }, + {0x001bf2, 0x001bf3, EGCB_SpacingMark }, + {0x001c24, 0x001c2b, EGCB_SpacingMark }, + {0x001c2c, 0x001c33, EGCB_Extend }, + {0x001c34, 0x001c35, EGCB_SpacingMark }, + {0x001c36, 0x001c37, EGCB_Extend }, + {0x001cd0, 0x001cd2, EGCB_Extend }, + {0x001cd4, 0x001ce0, EGCB_Extend }, + {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 }, + {0x001dc0, 0x001df9, EGCB_Extend }, + {0x001dfb, 0x001dff, EGCB_Extend }, + {0x00200b, 0x00200b, EGCB_Control }, + {0x00200c, 0x00200c, EGCB_Extend }, + {0x00200d, 0x00200d, EGCB_ZWJ }, + {0x00200e, 0x00200f, EGCB_Control }, + {0x002028, 0x00202e, EGCB_Control }, + {0x002060, 0x00206f, EGCB_Control }, + {0x0020d0, 0x0020f0, EGCB_Extend }, + {0x00261d, 0x00261d, EGCB_E_Base }, + {0x002640, 0x002640, EGCB_Glue_After_Zwj }, + {0x002642, 0x002642, EGCB_Glue_After_Zwj }, + {0x002695, 0x002696, EGCB_Glue_After_Zwj }, + {0x0026f9, 0x0026f9, EGCB_E_Base }, + {0x002708, 0x002708, EGCB_Glue_After_Zwj }, + {0x00270a, 0x00270d, EGCB_E_Base }, + {0x002764, 0x002764, EGCB_Glue_After_Zwj }, + {0x002cef, 0x002cf1, EGCB_Extend }, + {0x002d7f, 0x002d7f, EGCB_Extend }, + {0x002de0, 0x002dff, EGCB_Extend }, + {0x00302a, 0x00302f, EGCB_Extend }, + {0x003099, 0x00309a, EGCB_Extend }, + {0x00a66f, 0x00a672, EGCB_Extend }, + {0x00a674, 0x00a67d, EGCB_Extend }, + {0x00a69e, 0x00a69f, EGCB_Extend }, + {0x00a6f0, 0x00a6f1, EGCB_Extend }, + {0x00a802, 0x00a802, EGCB_Extend }, + {0x00a806, 0x00a806, EGCB_Extend }, + {0x00a80b, 0x00a80b, EGCB_Extend }, + {0x00a823, 0x00a824, EGCB_SpacingMark }, + {0x00a825, 0x00a826, EGCB_Extend }, + {0x00a827, 0x00a827, EGCB_SpacingMark }, + {0x00a880, 0x00a881, EGCB_SpacingMark }, + {0x00a8b4, 0x00a8c3, EGCB_SpacingMark }, + {0x00a8c4, 0x00a8c5, EGCB_Extend }, + {0x00a8e0, 0x00a8f1, EGCB_Extend }, + {0x00a926, 0x00a92d, EGCB_Extend }, + {0x00a947, 0x00a951, EGCB_Extend }, + {0x00a952, 0x00a953, EGCB_SpacingMark }, + {0x00a960, 0x00a97c, EGCB_L }, + {0x00a980, 0x00a982, EGCB_Extend }, + {0x00a983, 0x00a983, EGCB_SpacingMark }, + {0x00a9b3, 0x00a9b3, EGCB_Extend }, + {0x00a9b4, 0x00a9b5, EGCB_SpacingMark }, + {0x00a9b6, 0x00a9b9, EGCB_Extend }, + {0x00a9ba, 0x00a9bb, EGCB_SpacingMark }, + {0x00a9bc, 0x00a9bc, EGCB_Extend }, + {0x00a9bd, 0x00a9c0, EGCB_SpacingMark }, + {0x00a9e5, 0x00a9e5, EGCB_Extend }, + {0x00aa29, 0x00aa2e, EGCB_Extend }, + {0x00aa2f, 0x00aa30, EGCB_SpacingMark }, + {0x00aa31, 0x00aa32, EGCB_Extend }, + {0x00aa33, 0x00aa34, EGCB_SpacingMark }, + {0x00aa35, 0x00aa36, EGCB_Extend }, + {0x00aa43, 0x00aa43, EGCB_Extend }, + {0x00aa4c, 0x00aa4c, EGCB_Extend }, + {0x00aa4d, 0x00aa4d, EGCB_SpacingMark }, + {0x00aa7c, 0x00aa7c, EGCB_Extend }, + {0x00aab0, 0x00aab0, EGCB_Extend }, + {0x00aab2, 0x00aab4, EGCB_Extend }, + {0x00aab7, 0x00aab8, EGCB_Extend }, + {0x00aabe, 0x00aabf, EGCB_Extend }, + {0x00aac1, 0x00aac1, EGCB_Extend }, + {0x00aaeb, 0x00aaeb, EGCB_SpacingMark }, + {0x00aaec, 0x00aaed, EGCB_Extend }, + {0x00aaee, 0x00aaef, EGCB_SpacingMark }, + {0x00aaf5, 0x00aaf5, EGCB_SpacingMark }, + {0x00aaf6, 0x00aaf6, EGCB_Extend }, + {0x00abe3, 0x00abe4, EGCB_SpacingMark }, + {0x00abe5, 0x00abe5, EGCB_Extend }, + {0x00abe6, 0x00abe7, EGCB_SpacingMark }, + {0x00abe8, 0x00abe8, EGCB_Extend }, + {0x00abe9, 0x00abea, EGCB_SpacingMark }, + {0x00abec, 0x00abec, EGCB_SpacingMark }, + {0x00abed, 0x00abed, EGCB_Extend }, + {0x00ac00, 0x00ac00, EGCB_LV }, + {0x00ac01, 0x00ac1b, EGCB_LVT }, + {0x00ac1c, 0x00ac1c, EGCB_LV }, + {0x00ac1d, 0x00ac37, EGCB_LVT }, + {0x00ac38, 0x00ac38, EGCB_LV }, + {0x00ac39, 0x00ac53, EGCB_LVT }, + {0x00ac54, 0x00ac54, EGCB_LV }, + {0x00ac55, 0x00ac6f, EGCB_LVT }, + {0x00ac70, 0x00ac70, EGCB_LV }, + {0x00ac71, 0x00ac8b, EGCB_LVT }, + {0x00ac8c, 0x00ac8c, EGCB_LV }, + {0x00ac8d, 0x00aca7, EGCB_LVT }, + {0x00aca8, 0x00aca8, EGCB_LV }, + {0x00aca9, 0x00acc3, EGCB_LVT }, + {0x00acc4, 0x00acc4, EGCB_LV }, + {0x00acc5, 0x00acdf, EGCB_LVT }, + {0x00ace0, 0x00ace0, EGCB_LV }, + {0x00ace1, 0x00acfb, EGCB_LVT }, + {0x00acfc, 0x00acfc, EGCB_LV }, + {0x00acfd, 0x00ad17, EGCB_LVT }, + {0x00ad18, 0x00ad18, EGCB_LV }, + {0x00ad19, 0x00ad33, EGCB_LVT }, + {0x00ad34, 0x00ad34, EGCB_LV }, + {0x00ad35, 0x00ad4f, EGCB_LVT }, + {0x00ad50, 0x00ad50, EGCB_LV }, + {0x00ad51, 0x00ad6b, EGCB_LVT }, + {0x00ad6c, 0x00ad6c, EGCB_LV }, + {0x00ad6d, 0x00ad87, EGCB_LVT }, + {0x00ad88, 0x00ad88, EGCB_LV }, + {0x00ad89, 0x00ada3, EGCB_LVT }, + {0x00ada4, 0x00ada4, EGCB_LV }, + {0x00ada5, 0x00adbf, EGCB_LVT }, + {0x00adc0, 0x00adc0, EGCB_LV }, + {0x00adc1, 0x00addb, EGCB_LVT }, + {0x00addc, 0x00addc, EGCB_LV }, + {0x00addd, 0x00adf7, EGCB_LVT }, + {0x00adf8, 0x00adf8, EGCB_LV }, + {0x00adf9, 0x00ae13, EGCB_LVT }, + {0x00ae14, 0x00ae14, EGCB_LV }, + {0x00ae15, 0x00ae2f, EGCB_LVT }, + {0x00ae30, 0x00ae30, EGCB_LV }, + {0x00ae31, 0x00ae4b, EGCB_LVT }, + {0x00ae4c, 0x00ae4c, EGCB_LV }, + {0x00ae4d, 0x00ae67, EGCB_LVT }, + {0x00ae68, 0x00ae68, EGCB_LV }, + {0x00ae69, 0x00ae83, EGCB_LVT }, + {0x00ae84, 0x00ae84, EGCB_LV }, + {0x00ae85, 0x00ae9f, EGCB_LVT }, + {0x00aea0, 0x00aea0, EGCB_LV }, + {0x00aea1, 0x00aebb, EGCB_LVT }, + {0x00aebc, 0x00aebc, EGCB_LV }, + {0x00aebd, 0x00aed7, EGCB_LVT }, + {0x00aed8, 0x00aed8, EGCB_LV }, + {0x00aed9, 0x00aef3, EGCB_LVT }, + {0x00aef4, 0x00aef4, EGCB_LV }, + {0x00aef5, 0x00af0f, EGCB_LVT }, + {0x00af10, 0x00af10, EGCB_LV }, + {0x00af11, 0x00af2b, EGCB_LVT }, + {0x00af2c, 0x00af2c, EGCB_LV }, + {0x00af2d, 0x00af47, EGCB_LVT }, + {0x00af48, 0x00af48, EGCB_LV }, + {0x00af49, 0x00af63, EGCB_LVT }, + {0x00af64, 0x00af64, EGCB_LV }, + {0x00af65, 0x00af7f, EGCB_LVT }, + {0x00af80, 0x00af80, EGCB_LV }, + {0x00af81, 0x00af9b, EGCB_LVT }, + {0x00af9c, 0x00af9c, EGCB_LV }, + {0x00af9d, 0x00afb7, EGCB_LVT }, + {0x00afb8, 0x00afb8, EGCB_LV }, + {0x00afb9, 0x00afd3, EGCB_LVT }, + {0x00afd4, 0x00afd4, EGCB_LV }, + {0x00afd5, 0x00afef, EGCB_LVT }, + {0x00aff0, 0x00aff0, EGCB_LV }, + {0x00aff1, 0x00b00b, EGCB_LVT }, + {0x00b00c, 0x00b00c, EGCB_LV }, + {0x00b00d, 0x00b027, EGCB_LVT }, + {0x00b028, 0x00b028, EGCB_LV }, + {0x00b029, 0x00b043, EGCB_LVT }, + {0x00b044, 0x00b044, EGCB_LV }, + {0x00b045, 0x00b05f, EGCB_LVT }, + {0x00b060, 0x00b060, EGCB_LV }, + {0x00b061, 0x00b07b, EGCB_LVT }, + {0x00b07c, 0x00b07c, EGCB_LV }, + {0x00b07d, 0x00b097, EGCB_LVT }, + {0x00b098, 0x00b098, EGCB_LV }, + {0x00b099, 0x00b0b3, EGCB_LVT }, + {0x00b0b4, 0x00b0b4, EGCB_LV }, + {0x00b0b5, 0x00b0cf, EGCB_LVT }, + {0x00b0d0, 0x00b0d0, EGCB_LV }, + {0x00b0d1, 0x00b0eb, EGCB_LVT }, + {0x00b0ec, 0x00b0ec, EGCB_LV }, + {0x00b0ed, 0x00b107, EGCB_LVT }, + {0x00b108, 0x00b108, EGCB_LV }, + {0x00b109, 0x00b123, EGCB_LVT }, + {0x00b124, 0x00b124, EGCB_LV }, + {0x00b125, 0x00b13f, EGCB_LVT }, + {0x00b140, 0x00b140, EGCB_LV }, + {0x00b141, 0x00b15b, EGCB_LVT }, + {0x00b15c, 0x00b15c, EGCB_LV }, + {0x00b15d, 0x00b177, EGCB_LVT }, + {0x00b178, 0x00b178, EGCB_LV }, + {0x00b179, 0x00b193, EGCB_LVT }, + {0x00b194, 0x00b194, EGCB_LV }, + {0x00b195, 0x00b1af, EGCB_LVT }, + {0x00b1b0, 0x00b1b0, EGCB_LV }, + {0x00b1b1, 0x00b1cb, EGCB_LVT }, + {0x00b1cc, 0x00b1cc, EGCB_LV }, + {0x00b1cd, 0x00b1e7, EGCB_LVT }, + {0x00b1e8, 0x00b1e8, EGCB_LV }, + {0x00b1e9, 0x00b203, EGCB_LVT }, + {0x00b204, 0x00b204, EGCB_LV }, + {0x00b205, 0x00b21f, EGCB_LVT }, + {0x00b220, 0x00b220, EGCB_LV }, + {0x00b221, 0x00b23b, EGCB_LVT }, + {0x00b23c, 0x00b23c, EGCB_LV }, + {0x00b23d, 0x00b257, EGCB_LVT }, + {0x00b258, 0x00b258, EGCB_LV }, + {0x00b259, 0x00b273, EGCB_LVT }, + {0x00b274, 0x00b274, EGCB_LV }, + {0x00b275, 0x00b28f, EGCB_LVT }, + {0x00b290, 0x00b290, EGCB_LV }, + {0x00b291, 0x00b2ab, EGCB_LVT }, + {0x00b2ac, 0x00b2ac, EGCB_LV }, + {0x00b2ad, 0x00b2c7, EGCB_LVT }, + {0x00b2c8, 0x00b2c8, EGCB_LV }, + {0x00b2c9, 0x00b2e3, EGCB_LVT }, + {0x00b2e4, 0x00b2e4, EGCB_LV }, + {0x00b2e5, 0x00b2ff, EGCB_LVT }, + {0x00b300, 0x00b300, EGCB_LV }, + {0x00b301, 0x00b31b, EGCB_LVT }, + {0x00b31c, 0x00b31c, EGCB_LV }, + {0x00b31d, 0x00b337, EGCB_LVT }, + {0x00b338, 0x00b338, EGCB_LV }, + {0x00b339, 0x00b353, EGCB_LVT }, + {0x00b354, 0x00b354, EGCB_LV }, + {0x00b355, 0x00b36f, EGCB_LVT }, + {0x00b370, 0x00b370, EGCB_LV }, + {0x00b371, 0x00b38b, EGCB_LVT }, + {0x00b38c, 0x00b38c, EGCB_LV }, + {0x00b38d, 0x00b3a7, EGCB_LVT }, + {0x00b3a8, 0x00b3a8, EGCB_LV }, + {0x00b3a9, 0x00b3c3, EGCB_LVT }, + {0x00b3c4, 0x00b3c4, EGCB_LV }, + {0x00b3c5, 0x00b3df, EGCB_LVT }, + {0x00b3e0, 0x00b3e0, EGCB_LV }, + {0x00b3e1, 0x00b3fb, EGCB_LVT }, + {0x00b3fc, 0x00b3fc, EGCB_LV }, + {0x00b3fd, 0x00b417, EGCB_LVT }, + {0x00b418, 0x00b418, EGCB_LV }, + {0x00b419, 0x00b433, EGCB_LVT }, + {0x00b434, 0x00b434, EGCB_LV }, + {0x00b435, 0x00b44f, EGCB_LVT }, + {0x00b450, 0x00b450, EGCB_LV }, + {0x00b451, 0x00b46b, EGCB_LVT }, + {0x00b46c, 0x00b46c, EGCB_LV }, + {0x00b46d, 0x00b487, EGCB_LVT }, + {0x00b488, 0x00b488, EGCB_LV }, + {0x00b489, 0x00b4a3, EGCB_LVT }, + {0x00b4a4, 0x00b4a4, EGCB_LV }, + {0x00b4a5, 0x00b4bf, EGCB_LVT }, + {0x00b4c0, 0x00b4c0, EGCB_LV }, + {0x00b4c1, 0x00b4db, EGCB_LVT }, + {0x00b4dc, 0x00b4dc, EGCB_LV }, + {0x00b4dd, 0x00b4f7, EGCB_LVT }, + {0x00b4f8, 0x00b4f8, EGCB_LV }, + {0x00b4f9, 0x00b513, EGCB_LVT }, + {0x00b514, 0x00b514, EGCB_LV }, + {0x00b515, 0x00b52f, EGCB_LVT }, + {0x00b530, 0x00b530, EGCB_LV }, + {0x00b531, 0x00b54b, EGCB_LVT }, + {0x00b54c, 0x00b54c, EGCB_LV }, + {0x00b54d, 0x00b567, EGCB_LVT }, + {0x00b568, 0x00b568, EGCB_LV }, + {0x00b569, 0x00b583, EGCB_LVT }, + {0x00b584, 0x00b584, EGCB_LV }, + {0x00b585, 0x00b59f, EGCB_LVT }, + {0x00b5a0, 0x00b5a0, EGCB_LV }, + {0x00b5a1, 0x00b5bb, EGCB_LVT }, + {0x00b5bc, 0x00b5bc, EGCB_LV }, + {0x00b5bd, 0x00b5d7, EGCB_LVT }, + {0x00b5d8, 0x00b5d8, EGCB_LV }, + {0x00b5d9, 0x00b5f3, EGCB_LVT }, + {0x00b5f4, 0x00b5f4, EGCB_LV }, + {0x00b5f5, 0x00b60f, EGCB_LVT }, + {0x00b610, 0x00b610, EGCB_LV }, + {0x00b611, 0x00b62b, EGCB_LVT }, + {0x00b62c, 0x00b62c, EGCB_LV }, + {0x00b62d, 0x00b647, EGCB_LVT }, + {0x00b648, 0x00b648, EGCB_LV }, + {0x00b649, 0x00b663, EGCB_LVT }, + {0x00b664, 0x00b664, EGCB_LV }, + {0x00b665, 0x00b67f, EGCB_LVT }, + {0x00b680, 0x00b680, EGCB_LV }, + {0x00b681, 0x00b69b, EGCB_LVT }, + {0x00b69c, 0x00b69c, EGCB_LV }, + {0x00b69d, 0x00b6b7, EGCB_LVT }, + {0x00b6b8, 0x00b6b8, EGCB_LV }, + {0x00b6b9, 0x00b6d3, EGCB_LVT }, + {0x00b6d4, 0x00b6d4, EGCB_LV }, + {0x00b6d5, 0x00b6ef, EGCB_LVT }, + {0x00b6f0, 0x00b6f0, EGCB_LV }, + {0x00b6f1, 0x00b70b, EGCB_LVT }, + {0x00b70c, 0x00b70c, EGCB_LV }, + {0x00b70d, 0x00b727, EGCB_LVT }, + {0x00b728, 0x00b728, EGCB_LV }, + {0x00b729, 0x00b743, EGCB_LVT }, + {0x00b744, 0x00b744, EGCB_LV }, + {0x00b745, 0x00b75f, EGCB_LVT }, + {0x00b760, 0x00b760, EGCB_LV }, + {0x00b761, 0x00b77b, EGCB_LVT }, + {0x00b77c, 0x00b77c, EGCB_LV }, + {0x00b77d, 0x00b797, EGCB_LVT }, + {0x00b798, 0x00b798, EGCB_LV }, + {0x00b799, 0x00b7b3, EGCB_LVT }, + {0x00b7b4, 0x00b7b4, EGCB_LV }, + {0x00b7b5, 0x00b7cf, EGCB_LVT }, + {0x00b7d0, 0x00b7d0, EGCB_LV }, + {0x00b7d1, 0x00b7eb, EGCB_LVT }, + {0x00b7ec, 0x00b7ec, EGCB_LV }, + {0x00b7ed, 0x00b807, EGCB_LVT }, + {0x00b808, 0x00b808, EGCB_LV }, + {0x00b809, 0x00b823, EGCB_LVT }, + {0x00b824, 0x00b824, EGCB_LV }, + {0x00b825, 0x00b83f, EGCB_LVT }, + {0x00b840, 0x00b840, EGCB_LV }, + {0x00b841, 0x00b85b, EGCB_LVT }, + {0x00b85c, 0x00b85c, EGCB_LV }, + {0x00b85d, 0x00b877, EGCB_LVT }, + {0x00b878, 0x00b878, EGCB_LV }, + {0x00b879, 0x00b893, EGCB_LVT }, + {0x00b894, 0x00b894, EGCB_LV }, + {0x00b895, 0x00b8af, EGCB_LVT }, + {0x00b8b0, 0x00b8b0, EGCB_LV }, + {0x00b8b1, 0x00b8cb, EGCB_LVT }, + {0x00b8cc, 0x00b8cc, EGCB_LV }, + {0x00b8cd, 0x00b8e7, EGCB_LVT }, + {0x00b8e8, 0x00b8e8, EGCB_LV }, + {0x00b8e9, 0x00b903, EGCB_LVT }, + {0x00b904, 0x00b904, EGCB_LV }, + {0x00b905, 0x00b91f, EGCB_LVT }, + {0x00b920, 0x00b920, EGCB_LV }, + {0x00b921, 0x00b93b, EGCB_LVT }, + {0x00b93c, 0x00b93c, EGCB_LV }, + {0x00b93d, 0x00b957, EGCB_LVT }, + {0x00b958, 0x00b958, EGCB_LV }, + {0x00b959, 0x00b973, EGCB_LVT }, + {0x00b974, 0x00b974, EGCB_LV }, + {0x00b975, 0x00b98f, EGCB_LVT }, + {0x00b990, 0x00b990, EGCB_LV }, + {0x00b991, 0x00b9ab, EGCB_LVT }, + {0x00b9ac, 0x00b9ac, EGCB_LV }, + {0x00b9ad, 0x00b9c7, EGCB_LVT }, + {0x00b9c8, 0x00b9c8, EGCB_LV }, + {0x00b9c9, 0x00b9e3, EGCB_LVT }, + {0x00b9e4, 0x00b9e4, EGCB_LV }, + {0x00b9e5, 0x00b9ff, EGCB_LVT }, + {0x00ba00, 0x00ba00, EGCB_LV }, + {0x00ba01, 0x00ba1b, EGCB_LVT }, + {0x00ba1c, 0x00ba1c, EGCB_LV }, + {0x00ba1d, 0x00ba37, EGCB_LVT }, + {0x00ba38, 0x00ba38, EGCB_LV }, + {0x00ba39, 0x00ba53, EGCB_LVT }, + {0x00ba54, 0x00ba54, EGCB_LV }, + {0x00ba55, 0x00ba6f, EGCB_LVT }, + {0x00ba70, 0x00ba70, EGCB_LV }, + {0x00ba71, 0x00ba8b, EGCB_LVT }, + {0x00ba8c, 0x00ba8c, EGCB_LV }, + {0x00ba8d, 0x00baa7, EGCB_LVT }, + {0x00baa8, 0x00baa8, EGCB_LV }, + {0x00baa9, 0x00bac3, EGCB_LVT }, + {0x00bac4, 0x00bac4, EGCB_LV }, + {0x00bac5, 0x00badf, EGCB_LVT }, + {0x00bae0, 0x00bae0, EGCB_LV }, + {0x00bae1, 0x00bafb, EGCB_LVT }, + {0x00bafc, 0x00bafc, EGCB_LV }, + {0x00bafd, 0x00bb17, EGCB_LVT }, + {0x00bb18, 0x00bb18, EGCB_LV }, + {0x00bb19, 0x00bb33, EGCB_LVT }, + {0x00bb34, 0x00bb34, EGCB_LV }, + {0x00bb35, 0x00bb4f, EGCB_LVT }, + {0x00bb50, 0x00bb50, EGCB_LV }, + {0x00bb51, 0x00bb6b, EGCB_LVT }, + {0x00bb6c, 0x00bb6c, EGCB_LV }, + {0x00bb6d, 0x00bb87, EGCB_LVT }, + {0x00bb88, 0x00bb88, EGCB_LV }, + {0x00bb89, 0x00bba3, EGCB_LVT }, + {0x00bba4, 0x00bba4, EGCB_LV }, + {0x00bba5, 0x00bbbf, EGCB_LVT }, + {0x00bbc0, 0x00bbc0, EGCB_LV }, + {0x00bbc1, 0x00bbdb, EGCB_LVT }, + {0x00bbdc, 0x00bbdc, EGCB_LV }, + {0x00bbdd, 0x00bbf7, EGCB_LVT }, + {0x00bbf8, 0x00bbf8, EGCB_LV }, + {0x00bbf9, 0x00bc13, EGCB_LVT }, + {0x00bc14, 0x00bc14, EGCB_LV }, + {0x00bc15, 0x00bc2f, EGCB_LVT }, + {0x00bc30, 0x00bc30, EGCB_LV }, + {0x00bc31, 0x00bc4b, EGCB_LVT }, + {0x00bc4c, 0x00bc4c, EGCB_LV }, + {0x00bc4d, 0x00bc67, EGCB_LVT }, + {0x00bc68, 0x00bc68, EGCB_LV }, + {0x00bc69, 0x00bc83, EGCB_LVT }, + {0x00bc84, 0x00bc84, EGCB_LV }, + {0x00bc85, 0x00bc9f, EGCB_LVT }, + {0x00bca0, 0x00bca0, EGCB_LV }, + {0x00bca1, 0x00bcbb, EGCB_LVT }, + {0x00bcbc, 0x00bcbc, EGCB_LV }, + {0x00bcbd, 0x00bcd7, EGCB_LVT }, + {0x00bcd8, 0x00bcd8, EGCB_LV }, + {0x00bcd9, 0x00bcf3, EGCB_LVT }, + {0x00bcf4, 0x00bcf4, EGCB_LV }, + {0x00bcf5, 0x00bd0f, EGCB_LVT }, + {0x00bd10, 0x00bd10, EGCB_LV }, + {0x00bd11, 0x00bd2b, EGCB_LVT }, + {0x00bd2c, 0x00bd2c, EGCB_LV }, + {0x00bd2d, 0x00bd47, EGCB_LVT }, + {0x00bd48, 0x00bd48, EGCB_LV }, + {0x00bd49, 0x00bd63, EGCB_LVT }, + {0x00bd64, 0x00bd64, EGCB_LV }, + {0x00bd65, 0x00bd7f, EGCB_LVT }, + {0x00bd80, 0x00bd80, EGCB_LV }, + {0x00bd81, 0x00bd9b, EGCB_LVT }, + {0x00bd9c, 0x00bd9c, EGCB_LV }, + {0x00bd9d, 0x00bdb7, EGCB_LVT }, + {0x00bdb8, 0x00bdb8, EGCB_LV }, + {0x00bdb9, 0x00bdd3, EGCB_LVT }, + {0x00bdd4, 0x00bdd4, EGCB_LV }, + {0x00bdd5, 0x00bdef, EGCB_LVT }, + {0x00bdf0, 0x00bdf0, EGCB_LV }, + {0x00bdf1, 0x00be0b, EGCB_LVT }, + {0x00be0c, 0x00be0c, EGCB_LV }, + {0x00be0d, 0x00be27, EGCB_LVT }, + {0x00be28, 0x00be28, EGCB_LV }, + {0x00be29, 0x00be43, EGCB_LVT }, + {0x00be44, 0x00be44, EGCB_LV }, + {0x00be45, 0x00be5f, EGCB_LVT }, + {0x00be60, 0x00be60, EGCB_LV }, + {0x00be61, 0x00be7b, EGCB_LVT }, + {0x00be7c, 0x00be7c, EGCB_LV }, + {0x00be7d, 0x00be97, EGCB_LVT }, + {0x00be98, 0x00be98, EGCB_LV }, + {0x00be99, 0x00beb3, EGCB_LVT }, + {0x00beb4, 0x00beb4, EGCB_LV }, + {0x00beb5, 0x00becf, EGCB_LVT }, + {0x00bed0, 0x00bed0, EGCB_LV }, + {0x00bed1, 0x00beeb, EGCB_LVT }, + {0x00beec, 0x00beec, EGCB_LV }, + {0x00beed, 0x00bf07, EGCB_LVT }, + {0x00bf08, 0x00bf08, EGCB_LV }, + {0x00bf09, 0x00bf23, EGCB_LVT }, + {0x00bf24, 0x00bf24, EGCB_LV }, + {0x00bf25, 0x00bf3f, EGCB_LVT }, + {0x00bf40, 0x00bf40, EGCB_LV }, + {0x00bf41, 0x00bf5b, EGCB_LVT }, + {0x00bf5c, 0x00bf5c, EGCB_LV }, + {0x00bf5d, 0x00bf77, EGCB_LVT }, + {0x00bf78, 0x00bf78, EGCB_LV }, + {0x00bf79, 0x00bf93, EGCB_LVT }, + {0x00bf94, 0x00bf94, EGCB_LV }, + {0x00bf95, 0x00bfaf, EGCB_LVT }, + {0x00bfb0, 0x00bfb0, EGCB_LV }, + {0x00bfb1, 0x00bfcb, EGCB_LVT }, + {0x00bfcc, 0x00bfcc, EGCB_LV }, + {0x00bfcd, 0x00bfe7, EGCB_LVT }, + {0x00bfe8, 0x00bfe8, EGCB_LV }, + {0x00bfe9, 0x00c003, EGCB_LVT }, + {0x00c004, 0x00c004, EGCB_LV }, + {0x00c005, 0x00c01f, EGCB_LVT }, + {0x00c020, 0x00c020, EGCB_LV }, + {0x00c021, 0x00c03b, EGCB_LVT }, + {0x00c03c, 0x00c03c, EGCB_LV }, + {0x00c03d, 0x00c057, EGCB_LVT }, + {0x00c058, 0x00c058, EGCB_LV }, + {0x00c059, 0x00c073, EGCB_LVT }, + {0x00c074, 0x00c074, EGCB_LV }, + {0x00c075, 0x00c08f, EGCB_LVT }, + {0x00c090, 0x00c090, EGCB_LV }, + {0x00c091, 0x00c0ab, EGCB_LVT }, + {0x00c0ac, 0x00c0ac, EGCB_LV }, + {0x00c0ad, 0x00c0c7, EGCB_LVT }, + {0x00c0c8, 0x00c0c8, EGCB_LV }, + {0x00c0c9, 0x00c0e3, EGCB_LVT }, + {0x00c0e4, 0x00c0e4, EGCB_LV }, + {0x00c0e5, 0x00c0ff, EGCB_LVT }, + {0x00c100, 0x00c100, EGCB_LV }, + {0x00c101, 0x00c11b, EGCB_LVT }, + {0x00c11c, 0x00c11c, EGCB_LV }, + {0x00c11d, 0x00c137, EGCB_LVT }, + {0x00c138, 0x00c138, EGCB_LV }, + {0x00c139, 0x00c153, EGCB_LVT }, + {0x00c154, 0x00c154, EGCB_LV }, + {0x00c155, 0x00c16f, EGCB_LVT }, + {0x00c170, 0x00c170, EGCB_LV }, + {0x00c171, 0x00c18b, EGCB_LVT }, + {0x00c18c, 0x00c18c, EGCB_LV }, + {0x00c18d, 0x00c1a7, EGCB_LVT }, + {0x00c1a8, 0x00c1a8, EGCB_LV }, + {0x00c1a9, 0x00c1c3, EGCB_LVT }, + {0x00c1c4, 0x00c1c4, EGCB_LV }, + {0x00c1c5, 0x00c1df, EGCB_LVT }, + {0x00c1e0, 0x00c1e0, EGCB_LV }, + {0x00c1e1, 0x00c1fb, EGCB_LVT }, + {0x00c1fc, 0x00c1fc, EGCB_LV }, + {0x00c1fd, 0x00c217, EGCB_LVT }, + {0x00c218, 0x00c218, EGCB_LV }, + {0x00c219, 0x00c233, EGCB_LVT }, + {0x00c234, 0x00c234, EGCB_LV }, + {0x00c235, 0x00c24f, EGCB_LVT }, + {0x00c250, 0x00c250, EGCB_LV }, + {0x00c251, 0x00c26b, EGCB_LVT }, + {0x00c26c, 0x00c26c, EGCB_LV }, + {0x00c26d, 0x00c287, EGCB_LVT }, + {0x00c288, 0x00c288, EGCB_LV }, + {0x00c289, 0x00c2a3, EGCB_LVT }, + {0x00c2a4, 0x00c2a4, EGCB_LV }, + {0x00c2a5, 0x00c2bf, EGCB_LVT }, + {0x00c2c0, 0x00c2c0, EGCB_LV }, + {0x00c2c1, 0x00c2db, EGCB_LVT }, + {0x00c2dc, 0x00c2dc, EGCB_LV }, + {0x00c2dd, 0x00c2f7, EGCB_LVT }, + {0x00c2f8, 0x00c2f8, EGCB_LV }, + {0x00c2f9, 0x00c313, EGCB_LVT }, + {0x00c314, 0x00c314, EGCB_LV }, + {0x00c315, 0x00c32f, EGCB_LVT }, + {0x00c330, 0x00c330, EGCB_LV }, + {0x00c331, 0x00c34b, EGCB_LVT }, + {0x00c34c, 0x00c34c, EGCB_LV }, + {0x00c34d, 0x00c367, EGCB_LVT }, + {0x00c368, 0x00c368, EGCB_LV }, + {0x00c369, 0x00c383, EGCB_LVT }, + {0x00c384, 0x00c384, EGCB_LV }, + {0x00c385, 0x00c39f, EGCB_LVT }, + {0x00c3a0, 0x00c3a0, EGCB_LV }, + {0x00c3a1, 0x00c3bb, EGCB_LVT }, + {0x00c3bc, 0x00c3bc, EGCB_LV }, + {0x00c3bd, 0x00c3d7, EGCB_LVT }, + {0x00c3d8, 0x00c3d8, EGCB_LV }, + {0x00c3d9, 0x00c3f3, EGCB_LVT }, + {0x00c3f4, 0x00c3f4, EGCB_LV }, + {0x00c3f5, 0x00c40f, EGCB_LVT }, + {0x00c410, 0x00c410, EGCB_LV }, + {0x00c411, 0x00c42b, EGCB_LVT }, + {0x00c42c, 0x00c42c, EGCB_LV }, + {0x00c42d, 0x00c447, EGCB_LVT }, + {0x00c448, 0x00c448, EGCB_LV }, + {0x00c449, 0x00c463, EGCB_LVT }, + {0x00c464, 0x00c464, EGCB_LV }, + {0x00c465, 0x00c47f, EGCB_LVT }, + {0x00c480, 0x00c480, EGCB_LV }, + {0x00c481, 0x00c49b, EGCB_LVT }, + {0x00c49c, 0x00c49c, EGCB_LV }, + {0x00c49d, 0x00c4b7, EGCB_LVT }, + {0x00c4b8, 0x00c4b8, EGCB_LV }, + {0x00c4b9, 0x00c4d3, EGCB_LVT }, + {0x00c4d4, 0x00c4d4, EGCB_LV }, + {0x00c4d5, 0x00c4ef, EGCB_LVT }, + {0x00c4f0, 0x00c4f0, EGCB_LV }, + {0x00c4f1, 0x00c50b, EGCB_LVT }, + {0x00c50c, 0x00c50c, EGCB_LV }, + {0x00c50d, 0x00c527, EGCB_LVT }, + {0x00c528, 0x00c528, EGCB_LV }, + {0x00c529, 0x00c543, EGCB_LVT }, + {0x00c544, 0x00c544, EGCB_LV }, + {0x00c545, 0x00c55f, EGCB_LVT }, + {0x00c560, 0x00c560, EGCB_LV }, + {0x00c561, 0x00c57b, EGCB_LVT }, + {0x00c57c, 0x00c57c, EGCB_LV }, + {0x00c57d, 0x00c597, EGCB_LVT }, + {0x00c598, 0x00c598, EGCB_LV }, + {0x00c599, 0x00c5b3, EGCB_LVT }, + {0x00c5b4, 0x00c5b4, EGCB_LV }, + {0x00c5b5, 0x00c5cf, EGCB_LVT }, + {0x00c5d0, 0x00c5d0, EGCB_LV }, + {0x00c5d1, 0x00c5eb, EGCB_LVT }, + {0x00c5ec, 0x00c5ec, EGCB_LV }, + {0x00c5ed, 0x00c607, EGCB_LVT }, + {0x00c608, 0x00c608, EGCB_LV }, + {0x00c609, 0x00c623, EGCB_LVT }, + {0x00c624, 0x00c624, EGCB_LV }, + {0x00c625, 0x00c63f, EGCB_LVT }, + {0x00c640, 0x00c640, EGCB_LV }, + {0x00c641, 0x00c65b, EGCB_LVT }, + {0x00c65c, 0x00c65c, EGCB_LV }, + {0x00c65d, 0x00c677, EGCB_LVT }, + {0x00c678, 0x00c678, EGCB_LV }, + {0x00c679, 0x00c693, EGCB_LVT }, + {0x00c694, 0x00c694, EGCB_LV }, + {0x00c695, 0x00c6af, EGCB_LVT }, + {0x00c6b0, 0x00c6b0, EGCB_LV }, + {0x00c6b1, 0x00c6cb, EGCB_LVT }, + {0x00c6cc, 0x00c6cc, EGCB_LV }, + {0x00c6cd, 0x00c6e7, EGCB_LVT }, + {0x00c6e8, 0x00c6e8, EGCB_LV }, + {0x00c6e9, 0x00c703, EGCB_LVT }, + {0x00c704, 0x00c704, EGCB_LV }, + {0x00c705, 0x00c71f, EGCB_LVT }, + {0x00c720, 0x00c720, EGCB_LV }, + {0x00c721, 0x00c73b, EGCB_LVT }, + {0x00c73c, 0x00c73c, EGCB_LV }, + {0x00c73d, 0x00c757, EGCB_LVT }, + {0x00c758, 0x00c758, EGCB_LV }, + {0x00c759, 0x00c773, EGCB_LVT }, + {0x00c774, 0x00c774, EGCB_LV }, + {0x00c775, 0x00c78f, EGCB_LVT }, + {0x00c790, 0x00c790, EGCB_LV }, + {0x00c791, 0x00c7ab, EGCB_LVT }, + {0x00c7ac, 0x00c7ac, EGCB_LV }, + {0x00c7ad, 0x00c7c7, EGCB_LVT }, + {0x00c7c8, 0x00c7c8, EGCB_LV }, + {0x00c7c9, 0x00c7e3, EGCB_LVT }, + {0x00c7e4, 0x00c7e4, EGCB_LV }, + {0x00c7e5, 0x00c7ff, EGCB_LVT }, + {0x00c800, 0x00c800, EGCB_LV }, + {0x00c801, 0x00c81b, EGCB_LVT }, + {0x00c81c, 0x00c81c, EGCB_LV }, + {0x00c81d, 0x00c837, EGCB_LVT }, + {0x00c838, 0x00c838, EGCB_LV }, + {0x00c839, 0x00c853, EGCB_LVT }, + {0x00c854, 0x00c854, EGCB_LV }, + {0x00c855, 0x00c86f, EGCB_LVT }, + {0x00c870, 0x00c870, EGCB_LV }, + {0x00c871, 0x00c88b, EGCB_LVT }, + {0x00c88c, 0x00c88c, EGCB_LV }, + {0x00c88d, 0x00c8a7, EGCB_LVT }, + {0x00c8a8, 0x00c8a8, EGCB_LV }, + {0x00c8a9, 0x00c8c3, EGCB_LVT }, + {0x00c8c4, 0x00c8c4, EGCB_LV }, + {0x00c8c5, 0x00c8df, EGCB_LVT }, + {0x00c8e0, 0x00c8e0, EGCB_LV }, + {0x00c8e1, 0x00c8fb, EGCB_LVT }, + {0x00c8fc, 0x00c8fc, EGCB_LV }, + {0x00c8fd, 0x00c917, EGCB_LVT }, + {0x00c918, 0x00c918, EGCB_LV }, + {0x00c919, 0x00c933, EGCB_LVT }, + {0x00c934, 0x00c934, EGCB_LV }, + {0x00c935, 0x00c94f, EGCB_LVT }, + {0x00c950, 0x00c950, EGCB_LV }, + {0x00c951, 0x00c96b, EGCB_LVT }, + {0x00c96c, 0x00c96c, EGCB_LV }, + {0x00c96d, 0x00c987, EGCB_LVT }, + {0x00c988, 0x00c988, EGCB_LV }, + {0x00c989, 0x00c9a3, EGCB_LVT }, + {0x00c9a4, 0x00c9a4, EGCB_LV }, + {0x00c9a5, 0x00c9bf, EGCB_LVT }, + {0x00c9c0, 0x00c9c0, EGCB_LV }, + {0x00c9c1, 0x00c9db, EGCB_LVT }, + {0x00c9dc, 0x00c9dc, EGCB_LV }, + {0x00c9dd, 0x00c9f7, EGCB_LVT }, + {0x00c9f8, 0x00c9f8, EGCB_LV }, + {0x00c9f9, 0x00ca13, EGCB_LVT }, + {0x00ca14, 0x00ca14, EGCB_LV }, + {0x00ca15, 0x00ca2f, EGCB_LVT }, + {0x00ca30, 0x00ca30, EGCB_LV }, + {0x00ca31, 0x00ca4b, EGCB_LVT }, + {0x00ca4c, 0x00ca4c, EGCB_LV }, + {0x00ca4d, 0x00ca67, EGCB_LVT }, + {0x00ca68, 0x00ca68, EGCB_LV }, + {0x00ca69, 0x00ca83, EGCB_LVT }, + {0x00ca84, 0x00ca84, EGCB_LV }, + {0x00ca85, 0x00ca9f, EGCB_LVT }, + {0x00caa0, 0x00caa0, EGCB_LV }, + {0x00caa1, 0x00cabb, EGCB_LVT }, + {0x00cabc, 0x00cabc, EGCB_LV }, + {0x00cabd, 0x00cad7, EGCB_LVT }, + {0x00cad8, 0x00cad8, EGCB_LV }, + {0x00cad9, 0x00caf3, EGCB_LVT }, + {0x00caf4, 0x00caf4, EGCB_LV }, + {0x00caf5, 0x00cb0f, EGCB_LVT }, + {0x00cb10, 0x00cb10, EGCB_LV }, + {0x00cb11, 0x00cb2b, EGCB_LVT }, + {0x00cb2c, 0x00cb2c, EGCB_LV }, + {0x00cb2d, 0x00cb47, EGCB_LVT }, + {0x00cb48, 0x00cb48, EGCB_LV }, + {0x00cb49, 0x00cb63, EGCB_LVT }, + {0x00cb64, 0x00cb64, EGCB_LV }, + {0x00cb65, 0x00cb7f, EGCB_LVT }, + {0x00cb80, 0x00cb80, EGCB_LV }, + {0x00cb81, 0x00cb9b, EGCB_LVT }, + {0x00cb9c, 0x00cb9c, EGCB_LV }, + {0x00cb9d, 0x00cbb7, EGCB_LVT }, + {0x00cbb8, 0x00cbb8, EGCB_LV }, + {0x00cbb9, 0x00cbd3, EGCB_LVT }, + {0x00cbd4, 0x00cbd4, EGCB_LV }, + {0x00cbd5, 0x00cbef, EGCB_LVT }, + {0x00cbf0, 0x00cbf0, EGCB_LV }, + {0x00cbf1, 0x00cc0b, EGCB_LVT }, + {0x00cc0c, 0x00cc0c, EGCB_LV }, + {0x00cc0d, 0x00cc27, EGCB_LVT }, + {0x00cc28, 0x00cc28, EGCB_LV }, + {0x00cc29, 0x00cc43, EGCB_LVT }, + {0x00cc44, 0x00cc44, EGCB_LV }, + {0x00cc45, 0x00cc5f, EGCB_LVT }, + {0x00cc60, 0x00cc60, EGCB_LV }, + {0x00cc61, 0x00cc7b, EGCB_LVT }, + {0x00cc7c, 0x00cc7c, EGCB_LV }, + {0x00cc7d, 0x00cc97, EGCB_LVT }, + {0x00cc98, 0x00cc98, EGCB_LV }, + {0x00cc99, 0x00ccb3, EGCB_LVT }, + {0x00ccb4, 0x00ccb4, EGCB_LV }, + {0x00ccb5, 0x00cccf, EGCB_LVT }, + {0x00ccd0, 0x00ccd0, EGCB_LV }, + {0x00ccd1, 0x00cceb, EGCB_LVT }, + {0x00ccec, 0x00ccec, EGCB_LV }, + {0x00cced, 0x00cd07, EGCB_LVT }, + {0x00cd08, 0x00cd08, EGCB_LV }, + {0x00cd09, 0x00cd23, EGCB_LVT }, + {0x00cd24, 0x00cd24, EGCB_LV }, + {0x00cd25, 0x00cd3f, EGCB_LVT }, + {0x00cd40, 0x00cd40, EGCB_LV }, + {0x00cd41, 0x00cd5b, EGCB_LVT }, + {0x00cd5c, 0x00cd5c, EGCB_LV }, + {0x00cd5d, 0x00cd77, EGCB_LVT }, + {0x00cd78, 0x00cd78, EGCB_LV }, + {0x00cd79, 0x00cd93, EGCB_LVT }, + {0x00cd94, 0x00cd94, EGCB_LV }, + {0x00cd95, 0x00cdaf, EGCB_LVT }, + {0x00cdb0, 0x00cdb0, EGCB_LV }, + {0x00cdb1, 0x00cdcb, EGCB_LVT }, + {0x00cdcc, 0x00cdcc, EGCB_LV }, + {0x00cdcd, 0x00cde7, EGCB_LVT }, + {0x00cde8, 0x00cde8, EGCB_LV }, + {0x00cde9, 0x00ce03, EGCB_LVT }, + {0x00ce04, 0x00ce04, EGCB_LV }, + {0x00ce05, 0x00ce1f, EGCB_LVT }, + {0x00ce20, 0x00ce20, EGCB_LV }, + {0x00ce21, 0x00ce3b, EGCB_LVT }, + {0x00ce3c, 0x00ce3c, EGCB_LV }, + {0x00ce3d, 0x00ce57, EGCB_LVT }, + {0x00ce58, 0x00ce58, EGCB_LV }, + {0x00ce59, 0x00ce73, EGCB_LVT }, + {0x00ce74, 0x00ce74, EGCB_LV }, + {0x00ce75, 0x00ce8f, EGCB_LVT }, + {0x00ce90, 0x00ce90, EGCB_LV }, + {0x00ce91, 0x00ceab, EGCB_LVT }, + {0x00ceac, 0x00ceac, EGCB_LV }, + {0x00cead, 0x00cec7, EGCB_LVT }, + {0x00cec8, 0x00cec8, EGCB_LV }, + {0x00cec9, 0x00cee3, EGCB_LVT }, + {0x00cee4, 0x00cee4, EGCB_LV }, + {0x00cee5, 0x00ceff, EGCB_LVT }, + {0x00cf00, 0x00cf00, EGCB_LV }, + {0x00cf01, 0x00cf1b, EGCB_LVT }, + {0x00cf1c, 0x00cf1c, EGCB_LV }, + {0x00cf1d, 0x00cf37, EGCB_LVT }, + {0x00cf38, 0x00cf38, EGCB_LV }, + {0x00cf39, 0x00cf53, EGCB_LVT }, + {0x00cf54, 0x00cf54, EGCB_LV }, + {0x00cf55, 0x00cf6f, EGCB_LVT }, + {0x00cf70, 0x00cf70, EGCB_LV }, + {0x00cf71, 0x00cf8b, EGCB_LVT }, + {0x00cf8c, 0x00cf8c, EGCB_LV }, + {0x00cf8d, 0x00cfa7, EGCB_LVT }, + {0x00cfa8, 0x00cfa8, EGCB_LV }, + {0x00cfa9, 0x00cfc3, EGCB_LVT }, + {0x00cfc4, 0x00cfc4, EGCB_LV }, + {0x00cfc5, 0x00cfdf, EGCB_LVT }, + {0x00cfe0, 0x00cfe0, EGCB_LV }, + {0x00cfe1, 0x00cffb, EGCB_LVT }, + {0x00cffc, 0x00cffc, EGCB_LV }, + {0x00cffd, 0x00d017, EGCB_LVT }, + {0x00d018, 0x00d018, EGCB_LV }, + {0x00d019, 0x00d033, EGCB_LVT }, + {0x00d034, 0x00d034, EGCB_LV }, + {0x00d035, 0x00d04f, EGCB_LVT }, + {0x00d050, 0x00d050, EGCB_LV }, + {0x00d051, 0x00d06b, EGCB_LVT }, + {0x00d06c, 0x00d06c, EGCB_LV }, + {0x00d06d, 0x00d087, EGCB_LVT }, + {0x00d088, 0x00d088, EGCB_LV }, + {0x00d089, 0x00d0a3, EGCB_LVT }, + {0x00d0a4, 0x00d0a4, EGCB_LV }, + {0x00d0a5, 0x00d0bf, EGCB_LVT }, + {0x00d0c0, 0x00d0c0, EGCB_LV }, + {0x00d0c1, 0x00d0db, EGCB_LVT }, + {0x00d0dc, 0x00d0dc, EGCB_LV }, + {0x00d0dd, 0x00d0f7, EGCB_LVT }, + {0x00d0f8, 0x00d0f8, EGCB_LV }, + {0x00d0f9, 0x00d113, EGCB_LVT }, + {0x00d114, 0x00d114, EGCB_LV }, + {0x00d115, 0x00d12f, EGCB_LVT }, + {0x00d130, 0x00d130, EGCB_LV }, + {0x00d131, 0x00d14b, EGCB_LVT }, + {0x00d14c, 0x00d14c, EGCB_LV }, + {0x00d14d, 0x00d167, EGCB_LVT }, + {0x00d168, 0x00d168, EGCB_LV }, + {0x00d169, 0x00d183, EGCB_LVT }, + {0x00d184, 0x00d184, EGCB_LV }, + {0x00d185, 0x00d19f, EGCB_LVT }, + {0x00d1a0, 0x00d1a0, EGCB_LV }, + {0x00d1a1, 0x00d1bb, EGCB_LVT }, + {0x00d1bc, 0x00d1bc, EGCB_LV }, + {0x00d1bd, 0x00d1d7, EGCB_LVT }, + {0x00d1d8, 0x00d1d8, EGCB_LV }, + {0x00d1d9, 0x00d1f3, EGCB_LVT }, + {0x00d1f4, 0x00d1f4, EGCB_LV }, + {0x00d1f5, 0x00d20f, EGCB_LVT }, + {0x00d210, 0x00d210, EGCB_LV }, + {0x00d211, 0x00d22b, EGCB_LVT }, + {0x00d22c, 0x00d22c, EGCB_LV }, + {0x00d22d, 0x00d247, EGCB_LVT }, + {0x00d248, 0x00d248, EGCB_LV }, + {0x00d249, 0x00d263, EGCB_LVT }, + {0x00d264, 0x00d264, EGCB_LV }, + {0x00d265, 0x00d27f, EGCB_LVT }, + {0x00d280, 0x00d280, EGCB_LV }, + {0x00d281, 0x00d29b, EGCB_LVT }, + {0x00d29c, 0x00d29c, EGCB_LV }, + {0x00d29d, 0x00d2b7, EGCB_LVT }, + {0x00d2b8, 0x00d2b8, EGCB_LV }, + {0x00d2b9, 0x00d2d3, EGCB_LVT }, + {0x00d2d4, 0x00d2d4, EGCB_LV }, + {0x00d2d5, 0x00d2ef, EGCB_LVT }, + {0x00d2f0, 0x00d2f0, EGCB_LV }, + {0x00d2f1, 0x00d30b, EGCB_LVT }, + {0x00d30c, 0x00d30c, EGCB_LV }, + {0x00d30d, 0x00d327, EGCB_LVT }, + {0x00d328, 0x00d328, EGCB_LV }, + {0x00d329, 0x00d343, EGCB_LVT }, + {0x00d344, 0x00d344, EGCB_LV }, + {0x00d345, 0x00d35f, EGCB_LVT }, + {0x00d360, 0x00d360, EGCB_LV }, + {0x00d361, 0x00d37b, EGCB_LVT }, + {0x00d37c, 0x00d37c, EGCB_LV }, + {0x00d37d, 0x00d397, EGCB_LVT }, + {0x00d398, 0x00d398, EGCB_LV }, + {0x00d399, 0x00d3b3, EGCB_LVT }, + {0x00d3b4, 0x00d3b4, EGCB_LV }, + {0x00d3b5, 0x00d3cf, EGCB_LVT }, + {0x00d3d0, 0x00d3d0, EGCB_LV }, + {0x00d3d1, 0x00d3eb, EGCB_LVT }, + {0x00d3ec, 0x00d3ec, EGCB_LV }, + {0x00d3ed, 0x00d407, EGCB_LVT }, + {0x00d408, 0x00d408, EGCB_LV }, + {0x00d409, 0x00d423, EGCB_LVT }, + {0x00d424, 0x00d424, EGCB_LV }, + {0x00d425, 0x00d43f, EGCB_LVT }, + {0x00d440, 0x00d440, EGCB_LV }, + {0x00d441, 0x00d45b, EGCB_LVT }, + {0x00d45c, 0x00d45c, EGCB_LV }, + {0x00d45d, 0x00d477, EGCB_LVT }, + {0x00d478, 0x00d478, EGCB_LV }, + {0x00d479, 0x00d493, EGCB_LVT }, + {0x00d494, 0x00d494, EGCB_LV }, + {0x00d495, 0x00d4af, EGCB_LVT }, + {0x00d4b0, 0x00d4b0, EGCB_LV }, + {0x00d4b1, 0x00d4cb, EGCB_LVT }, + {0x00d4cc, 0x00d4cc, EGCB_LV }, + {0x00d4cd, 0x00d4e7, EGCB_LVT }, + {0x00d4e8, 0x00d4e8, EGCB_LV }, + {0x00d4e9, 0x00d503, EGCB_LVT }, + {0x00d504, 0x00d504, EGCB_LV }, + {0x00d505, 0x00d51f, EGCB_LVT }, + {0x00d520, 0x00d520, EGCB_LV }, + {0x00d521, 0x00d53b, EGCB_LVT }, + {0x00d53c, 0x00d53c, EGCB_LV }, + {0x00d53d, 0x00d557, EGCB_LVT }, + {0x00d558, 0x00d558, EGCB_LV }, + {0x00d559, 0x00d573, EGCB_LVT }, + {0x00d574, 0x00d574, EGCB_LV }, + {0x00d575, 0x00d58f, EGCB_LVT }, + {0x00d590, 0x00d590, EGCB_LV }, + {0x00d591, 0x00d5ab, EGCB_LVT }, + {0x00d5ac, 0x00d5ac, EGCB_LV }, + {0x00d5ad, 0x00d5c7, EGCB_LVT }, + {0x00d5c8, 0x00d5c8, EGCB_LV }, + {0x00d5c9, 0x00d5e3, EGCB_LVT }, + {0x00d5e4, 0x00d5e4, EGCB_LV }, + {0x00d5e5, 0x00d5ff, EGCB_LVT }, + {0x00d600, 0x00d600, EGCB_LV }, + {0x00d601, 0x00d61b, EGCB_LVT }, + {0x00d61c, 0x00d61c, EGCB_LV }, + {0x00d61d, 0x00d637, EGCB_LVT }, + {0x00d638, 0x00d638, EGCB_LV }, + {0x00d639, 0x00d653, EGCB_LVT }, + {0x00d654, 0x00d654, EGCB_LV }, + {0x00d655, 0x00d66f, EGCB_LVT }, + {0x00d670, 0x00d670, EGCB_LV }, + {0x00d671, 0x00d68b, EGCB_LVT }, + {0x00d68c, 0x00d68c, EGCB_LV }, + {0x00d68d, 0x00d6a7, EGCB_LVT }, + {0x00d6a8, 0x00d6a8, EGCB_LV }, + {0x00d6a9, 0x00d6c3, EGCB_LVT }, + {0x00d6c4, 0x00d6c4, EGCB_LV }, + {0x00d6c5, 0x00d6df, EGCB_LVT }, + {0x00d6e0, 0x00d6e0, EGCB_LV }, + {0x00d6e1, 0x00d6fb, EGCB_LVT }, + {0x00d6fc, 0x00d6fc, EGCB_LV }, + {0x00d6fd, 0x00d717, EGCB_LVT }, + {0x00d718, 0x00d718, EGCB_LV }, + {0x00d719, 0x00d733, EGCB_LVT }, + {0x00d734, 0x00d734, EGCB_LV }, + {0x00d735, 0x00d74f, EGCB_LVT }, + {0x00d750, 0x00d750, EGCB_LV }, + {0x00d751, 0x00d76b, EGCB_LVT }, + {0x00d76c, 0x00d76c, EGCB_LV }, + {0x00d76d, 0x00d787, EGCB_LVT }, + {0x00d788, 0x00d788, EGCB_LV }, + {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 }, + {0x00feff, 0x00feff, EGCB_Control }, + {0x00ff9e, 0x00ff9f, EGCB_Extend }, + {0x00fff0, 0x00fffb, EGCB_Control }, + {0x0101fd, 0x0101fd, EGCB_Extend }, + {0x0102e0, 0x0102e0, EGCB_Extend }, + {0x010376, 0x01037a, EGCB_Extend }, + {0x010a01, 0x010a03, EGCB_Extend }, + {0x010a05, 0x010a06, EGCB_Extend }, + {0x010a0c, 0x010a0f, EGCB_Extend }, + {0x010a38, 0x010a3a, EGCB_Extend }, + {0x010a3f, 0x010a3f, EGCB_Extend }, + {0x010ae5, 0x010ae6, EGCB_Extend }, + {0x011000, 0x011000, EGCB_SpacingMark }, + {0x011001, 0x011001, EGCB_Extend }, + {0x011002, 0x011002, EGCB_SpacingMark }, + {0x011038, 0x011046, EGCB_Extend }, + {0x01107f, 0x011081, EGCB_Extend }, + {0x011082, 0x011082, EGCB_SpacingMark }, + {0x0110b0, 0x0110b2, EGCB_SpacingMark }, + {0x0110b3, 0x0110b6, EGCB_Extend }, + {0x0110b7, 0x0110b8, EGCB_SpacingMark }, + {0x0110b9, 0x0110ba, EGCB_Extend }, + {0x0110bd, 0x0110bd, EGCB_Prepend }, + {0x011100, 0x011102, EGCB_Extend }, + {0x011127, 0x01112b, EGCB_Extend }, + {0x01112c, 0x01112c, EGCB_SpacingMark }, + {0x01112d, 0x011134, EGCB_Extend }, + {0x011173, 0x011173, EGCB_Extend }, + {0x011180, 0x011181, EGCB_Extend }, + {0x011182, 0x011182, EGCB_SpacingMark }, + {0x0111b3, 0x0111b5, EGCB_SpacingMark }, + {0x0111b6, 0x0111be, EGCB_Extend }, + {0x0111bf, 0x0111c0, EGCB_SpacingMark }, + {0x0111c2, 0x0111c3, EGCB_Prepend }, + {0x0111ca, 0x0111cc, EGCB_Extend }, + {0x01122c, 0x01122e, EGCB_SpacingMark }, + {0x01122f, 0x011231, EGCB_Extend }, + {0x011232, 0x011233, EGCB_SpacingMark }, + {0x011234, 0x011234, EGCB_Extend }, + {0x011235, 0x011235, EGCB_SpacingMark }, + {0x011236, 0x011237, EGCB_Extend }, + {0x01123e, 0x01123e, EGCB_Extend }, + {0x0112df, 0x0112df, EGCB_Extend }, + {0x0112e0, 0x0112e2, EGCB_SpacingMark }, + {0x0112e3, 0x0112ea, EGCB_Extend }, + {0x011300, 0x011301, EGCB_Extend }, + {0x011302, 0x011303, EGCB_SpacingMark }, + {0x01133c, 0x01133c, EGCB_Extend }, + {0x01133e, 0x01133e, EGCB_Extend }, + {0x01133f, 0x01133f, EGCB_SpacingMark }, + {0x011340, 0x011340, EGCB_Extend }, + {0x011341, 0x011344, EGCB_SpacingMark }, + {0x011347, 0x011348, EGCB_SpacingMark }, + {0x01134b, 0x01134d, EGCB_SpacingMark }, + {0x011357, 0x011357, EGCB_Extend }, + {0x011362, 0x011363, EGCB_SpacingMark }, + {0x011366, 0x01136c, EGCB_Extend }, + {0x011370, 0x011374, EGCB_Extend }, + {0x011435, 0x011437, EGCB_SpacingMark }, + {0x011438, 0x01143f, EGCB_Extend }, + {0x011440, 0x011441, EGCB_SpacingMark }, + {0x011442, 0x011444, EGCB_Extend }, + {0x011445, 0x011445, EGCB_SpacingMark }, + {0x011446, 0x011446, EGCB_Extend }, + {0x0114b0, 0x0114b0, EGCB_Extend }, + {0x0114b1, 0x0114b2, EGCB_SpacingMark }, + {0x0114b3, 0x0114b8, EGCB_Extend }, + {0x0114b9, 0x0114b9, EGCB_SpacingMark }, + {0x0114ba, 0x0114ba, EGCB_Extend }, + {0x0114bb, 0x0114bc, EGCB_SpacingMark }, + {0x0114bd, 0x0114bd, EGCB_Extend }, + {0x0114be, 0x0114be, EGCB_SpacingMark }, + {0x0114bf, 0x0114c0, EGCB_Extend }, + {0x0114c1, 0x0114c1, EGCB_SpacingMark }, + {0x0114c2, 0x0114c3, EGCB_Extend }, + {0x0115af, 0x0115af, EGCB_Extend }, + {0x0115b0, 0x0115b1, EGCB_SpacingMark }, + {0x0115b2, 0x0115b5, EGCB_Extend }, + {0x0115b8, 0x0115bb, EGCB_SpacingMark }, + {0x0115bc, 0x0115bd, EGCB_Extend }, + {0x0115be, 0x0115be, EGCB_SpacingMark }, + {0x0115bf, 0x0115c0, EGCB_Extend }, + {0x0115dc, 0x0115dd, EGCB_Extend }, + {0x011630, 0x011632, EGCB_SpacingMark }, + {0x011633, 0x01163a, EGCB_Extend }, + {0x01163b, 0x01163c, EGCB_SpacingMark }, + {0x01163d, 0x01163d, EGCB_Extend }, + {0x01163e, 0x01163e, EGCB_SpacingMark }, + {0x01163f, 0x011640, EGCB_Extend }, + {0x0116ab, 0x0116ab, EGCB_Extend }, + {0x0116ac, 0x0116ac, EGCB_SpacingMark }, + {0x0116ad, 0x0116ad, EGCB_Extend }, + {0x0116ae, 0x0116af, EGCB_SpacingMark }, + {0x0116b0, 0x0116b5, EGCB_Extend }, + {0x0116b6, 0x0116b6, EGCB_SpacingMark }, + {0x0116b7, 0x0116b7, EGCB_Extend }, + {0x01171d, 0x01171f, EGCB_Extend }, + {0x011720, 0x011721, EGCB_SpacingMark }, + {0x011722, 0x011725, EGCB_Extend }, + {0x011726, 0x011726, EGCB_SpacingMark }, + {0x011727, 0x01172b, EGCB_Extend }, + {0x011a01, 0x011a06, EGCB_Extend }, + {0x011a07, 0x011a08, EGCB_SpacingMark }, + {0x011a09, 0x011a0a, EGCB_Extend }, + {0x011a33, 0x011a38, EGCB_Extend }, + {0x011a39, 0x011a39, EGCB_SpacingMark }, + {0x011a3a, 0x011a3a, EGCB_Prepend }, + {0x011a3b, 0x011a3e, EGCB_Extend }, + {0x011a47, 0x011a47, EGCB_Extend }, + {0x011a51, 0x011a56, EGCB_Extend }, + {0x011a57, 0x011a58, EGCB_SpacingMark }, + {0x011a59, 0x011a5b, EGCB_Extend }, + {0x011a86, 0x011a89, EGCB_Prepend }, + {0x011a8a, 0x011a96, EGCB_Extend }, + {0x011a97, 0x011a97, EGCB_SpacingMark }, + {0x011a98, 0x011a99, EGCB_Extend }, + {0x011c2f, 0x011c2f, EGCB_SpacingMark }, + {0x011c30, 0x011c36, EGCB_Extend }, + {0x011c38, 0x011c3d, EGCB_Extend }, + {0x011c3e, 0x011c3e, EGCB_SpacingMark }, + {0x011c3f, 0x011c3f, EGCB_Extend }, + {0x011c92, 0x011ca7, EGCB_Extend }, + {0x011ca9, 0x011ca9, EGCB_SpacingMark }, + {0x011caa, 0x011cb0, EGCB_Extend }, + {0x011cb1, 0x011cb1, EGCB_SpacingMark }, + {0x011cb2, 0x011cb3, EGCB_Extend }, + {0x011cb4, 0x011cb4, EGCB_SpacingMark }, + {0x011cb5, 0x011cb6, EGCB_Extend }, + {0x011d31, 0x011d36, EGCB_Extend }, + {0x011d3a, 0x011d3a, EGCB_Extend }, + {0x011d3c, 0x011d3d, EGCB_Extend }, + {0x011d3f, 0x011d45, EGCB_Extend }, + {0x011d46, 0x011d46, EGCB_Prepend }, + {0x011d47, 0x011d47, EGCB_Extend }, + {0x016af0, 0x016af4, EGCB_Extend }, + {0x016b30, 0x016b36, EGCB_Extend }, + {0x016f51, 0x016f7e, EGCB_SpacingMark }, + {0x016f8f, 0x016f92, EGCB_Extend }, + {0x01bc9d, 0x01bc9e, EGCB_Extend }, + {0x01bca0, 0x01bca3, EGCB_Control }, + {0x01d165, 0x01d165, EGCB_Extend }, + {0x01d166, 0x01d166, EGCB_SpacingMark }, + {0x01d167, 0x01d169, EGCB_Extend }, + {0x01d16d, 0x01d16d, EGCB_SpacingMark }, + {0x01d16e, 0x01d172, EGCB_Extend }, + {0x01d173, 0x01d17a, EGCB_Control }, + {0x01d17b, 0x01d182, EGCB_Extend }, + {0x01d185, 0x01d18b, EGCB_Extend }, + {0x01d1aa, 0x01d1ad, EGCB_Extend }, + {0x01d242, 0x01d244, EGCB_Extend }, + {0x01da00, 0x01da36, EGCB_Extend }, + {0x01da3b, 0x01da6c, EGCB_Extend }, + {0x01da75, 0x01da75, EGCB_Extend }, + {0x01da84, 0x01da84, EGCB_Extend }, + {0x01da9b, 0x01da9f, EGCB_Extend }, + {0x01daa1, 0x01daaf, EGCB_Extend }, + {0x01e000, 0x01e006, EGCB_Extend }, + {0x01e008, 0x01e018, EGCB_Extend }, + {0x01e01b, 0x01e021, EGCB_Extend }, + {0x01e023, 0x01e024, EGCB_Extend }, + {0x01e026, 0x01e02a, EGCB_Extend }, + {0x01e8d0, 0x01e8d6, EGCB_Extend }, + {0x01e944, 0x01e94a, EGCB_Extend }, + {0x01f1e6, 0x01f1ff, EGCB_Regional_Indicator }, + {0x01f308, 0x01f308, EGCB_Glue_After_Zwj }, + {0x01f33e, 0x01f33e, EGCB_Glue_After_Zwj }, + {0x01f373, 0x01f373, EGCB_Glue_After_Zwj }, + {0x01f385, 0x01f385, EGCB_E_Base }, + {0x01f393, 0x01f393, EGCB_Glue_After_Zwj }, + {0x01f3a4, 0x01f3a4, EGCB_Glue_After_Zwj }, + {0x01f3a8, 0x01f3a8, EGCB_Glue_After_Zwj }, + {0x01f3c2, 0x01f3c4, EGCB_E_Base }, + {0x01f3c7, 0x01f3c7, EGCB_E_Base }, + {0x01f3ca, 0x01f3cc, EGCB_E_Base }, + {0x01f3eb, 0x01f3eb, EGCB_Glue_After_Zwj }, + {0x01f3ed, 0x01f3ed, EGCB_Glue_After_Zwj }, + {0x01f3fb, 0x01f3ff, EGCB_E_Modifier }, + {0x01f442, 0x01f443, EGCB_E_Base }, + {0x01f446, 0x01f450, EGCB_E_Base }, + {0x01f466, 0x01f469, EGCB_E_Base_GAZ }, + {0x01f46e, 0x01f46e, EGCB_E_Base }, + {0x01f470, 0x01f478, EGCB_E_Base }, + {0x01f47c, 0x01f47c, EGCB_E_Base }, + {0x01f481, 0x01f483, EGCB_E_Base }, + {0x01f485, 0x01f487, EGCB_E_Base }, + {0x01f48b, 0x01f48b, EGCB_Glue_After_Zwj }, + {0x01f4aa, 0x01f4aa, EGCB_E_Base }, + {0x01f4bb, 0x01f4bc, EGCB_Glue_After_Zwj }, + {0x01f527, 0x01f527, EGCB_Glue_After_Zwj }, + {0x01f52c, 0x01f52c, EGCB_Glue_After_Zwj }, + {0x01f574, 0x01f575, EGCB_E_Base }, + {0x01f57a, 0x01f57a, EGCB_E_Base }, + {0x01f590, 0x01f590, EGCB_E_Base }, + {0x01f595, 0x01f596, EGCB_E_Base }, + {0x01f5e8, 0x01f5e8, EGCB_Glue_After_Zwj }, + {0x01f645, 0x01f647, EGCB_E_Base }, + {0x01f64b, 0x01f64f, EGCB_E_Base }, + {0x01f680, 0x01f680, EGCB_Glue_After_Zwj }, + {0x01f692, 0x01f692, EGCB_Glue_After_Zwj }, + {0x01f6a3, 0x01f6a3, EGCB_E_Base }, + {0x01f6b4, 0x01f6b6, EGCB_E_Base }, + {0x01f6c0, 0x01f6c0, EGCB_E_Base }, + {0x01f6cc, 0x01f6cc, EGCB_E_Base }, + {0x01f918, 0x01f91c, EGCB_E_Base }, + {0x01f91e, 0x01f91f, EGCB_E_Base }, + {0x01f926, 0x01f926, EGCB_E_Base }, + {0x01f930, 0x01f939, EGCB_E_Base }, + {0x01f93d, 0x01f93e, EGCB_E_Base }, + {0x01f9d1, 0x01f9dd, EGCB_E_Base }, + {0x0e0000, 0x0e001f, EGCB_Control }, + {0x0e0020, 0x0e007f, EGCB_Extend }, + {0x0e0080, 0x0e00ff, EGCB_Control }, + {0x0e0100, 0x0e01ef, EGCB_Extend }, + {0x0e01f0, 0x0e0fff, EGCB_Control } +}; diff --git a/src/unicode_property_data.c b/src/unicode_property_data.c index 4ca438f..1807de4 100644 --- a/src/unicode_property_data.c +++ b/src/unicode_property_data.c @@ -1,5 +1,5 @@ -/* ANSI-C code produced by gperf version 3.0.3 */ -/* Command-line: /Library/Developer/CommandLineTools/usr/bin/gperf -T -C -c -t -j1 -L ANSI-C --ignore-case -N unicode_lookup_property_name --output-file gperf.tmp unicode_property_data.gperf  */ +/* ANSI-C code produced by gperf version 3.0.4 */ +/* Command-line: gperf -T -C -c -t -j1 -L ANSI-C --ignore-case -N unicode_lookup_property_name --output-file gperf.tmp unicode_property_data.gperf  */  /* Computed positions: -k'1-3,5-6,12,16,$' */  #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ @@ -4766,12 +4766,102 @@ CR_ASCII[] = { 1,  }; /* END of CR_ASCII */ +/* PROPERTY: 'ASCII_Hex_Digit': Binary Property */ +#define CR_ASCII_Hex_Digit CR_XDigit + +/* PROPERTY: 'Ahom': Script */ +static const OnigCodePoint +CR_Ahom[] = { 3, +0x11700, 0x11719, +0x1171d, 0x1172b, +0x11730, 0x1173f, +}; /* END of CR_Ahom */ + +/* PROPERTY: 'Alphabetic': Derived Property */ +#define CR_Alphabetic CR_Alpha + +/* PROPERTY: 'Anatolian_Hieroglyphs': Script */ +static const OnigCodePoint +CR_Anatolian_Hieroglyphs[] = { 1, +0x14400, 0x14646, +}; /* END of CR_Anatolian_Hieroglyphs */ +  /* PROPERTY: 'Any': - */  static const OnigCodePoint  CR_Any[] = { 1,  0x0000, 0x10ffff,  }; /* END of CR_Any */ +/* PROPERTY: 'Arabic': Script */ +static const OnigCodePoint +CR_Arabic[] = { 54, +0x0600, 0x0604, +0x0606, 0x060b, +0x060d, 0x061a, +0x061e, 0x061e, +0x0620, 0x063f, +0x0641, 0x064a, +0x0656, 0x066f, +0x0671, 0x06dc, +0x06de, 0x06ff, +0x0750, 0x077f, +0x08a0, 0x08b4, +0x08e3, 0x08ff, +0xfb50, 0xfbc1, +0xfbd3, 0xfd3d, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdfd, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0x10e60, 0x10e7e, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x1eef0, 0x1eef1, +}; /* END of CR_Arabic */ + +/* PROPERTY: 'Armenian': Script */ +static const OnigCodePoint +CR_Armenian[] = { 6, +0x0531, 0x0556, +0x0559, 0x055f, +0x0561, 0x0587, +0x058a, 0x058a, +0x058d, 0x058f, +0xfb13, 0xfb17, +}; /* END of CR_Armenian */ +  /* PROPERTY: 'Assigned': - */  static const OnigCodePoint  CR_Assigned[] = { 613, @@ -5390,6 +5480,104 @@ CR_Assigned[] = { 613,  0x100000, 0x10fffd,  }; /* END of CR_Assigned */ +/* PROPERTY: 'Avestan': Script */ +static const OnigCodePoint +CR_Avestan[] = { 2, +0x10b00, 0x10b35, +0x10b39, 0x10b3f, +}; /* END of CR_Avestan */ + +/* PROPERTY: 'Balinese': Script */ +static const OnigCodePoint +CR_Balinese[] = { 2, +0x1b00, 0x1b4b, +0x1b50, 0x1b7c, +}; /* END of CR_Balinese */ + +/* PROPERTY: 'Bamum': Script */ +static const OnigCodePoint +CR_Bamum[] = { 2, +0xa6a0, 0xa6f7, +0x16800, 0x16a38, +}; /* END of CR_Bamum */ + +/* PROPERTY: 'Bassa_Vah': Script */ +static const OnigCodePoint +CR_Bassa_Vah[] = { 2, +0x16ad0, 0x16aed, +0x16af0, 0x16af5, +}; /* END of CR_Bassa_Vah */ + +/* PROPERTY: 'Batak': Script */ +static const OnigCodePoint +CR_Batak[] = { 2, +0x1bc0, 0x1bf3, +0x1bfc, 0x1bff, +}; /* END of CR_Batak */ + +/* PROPERTY: 'Bengali': Script */ +static const OnigCodePoint +CR_Bengali[] = { 14, +0x0980, 0x0983, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bc, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09ce, +0x09d7, 0x09d7, +0x09dc, 0x09dd, +0x09df, 0x09e3, +0x09e6, 0x09fb, +}; /* END of CR_Bengali */ + +/* PROPERTY: 'Bidi_Control': Binary Property */ +static const OnigCodePoint +CR_Bidi_Control[] = { 4, +0x061c, 0x061c, +0x200e, 0x200f, +0x202a, 0x202e, +0x2066, 0x2069, +}; /* END of CR_Bidi_Control */ + +/* PROPERTY: 'Bopomofo': Script */ +static const OnigCodePoint +CR_Bopomofo[] = { 3, +0x02ea, 0x02eb, +0x3105, 0x312d, +0x31a0, 0x31ba, +}; /* END of CR_Bopomofo */ + +/* PROPERTY: 'Brahmi': Script */ +static const OnigCodePoint +CR_Brahmi[] = { 3, +0x11000, 0x1104d, +0x11052, 0x1106f, +0x1107f, 0x1107f, +}; /* END of CR_Brahmi */ + +/* PROPERTY: 'Braille': Script */ +static const OnigCodePoint +CR_Braille[] = { 1, +0x2800, 0x28ff, +}; /* END of CR_Braille */ + +/* PROPERTY: 'Buginese': Script */ +static const OnigCodePoint +CR_Buginese[] = { 2, +0x1a00, 0x1a1b, +0x1a1e, 0x1a1f, +}; /* END of CR_Buginese */ + +/* PROPERTY: 'Buhid': Script */ +static const OnigCodePoint +CR_Buhid[] = { 1, +0x1740, 0x1753, +}; /* END of CR_Buhid */ +  /* PROPERTY: 'C': Major Category */  static const OnigCodePoint  CR_C[] = { 616, @@ -6011,6 +6199,513 @@ CR_C[] = { 616,  0xe01f0, 0x10ffff,  }; /* END of CR_C */ +/* PROPERTY: 'Canadian_Aboriginal': Script */ +static const OnigCodePoint +CR_Canadian_Aboriginal[] = { 2, +0x1400, 0x167f, +0x18b0, 0x18f5, +}; /* END of CR_Canadian_Aboriginal */ + +/* PROPERTY: 'Carian': Script */ +static const OnigCodePoint +CR_Carian[] = { 1, +0x102a0, 0x102d0, +}; /* END of CR_Carian */ + +/* PROPERTY: 'Case_Ignorable': Derived Property */ +static const OnigCodePoint +CR_Case_Ignorable[] = { 346, +0x0027, 0x0027, +0x002e, 0x002e, +0x003a, 0x003a, +0x005e, 0x005e, +0x0060, 0x0060, +0x00a8, 0x00a8, +0x00ad, 0x00ad, +0x00af, 0x00af, +0x00b4, 0x00b4, +0x00b7, 0x00b8, +0x02b0, 0x036f, +0x0374, 0x0375, +0x037a, 0x037a, +0x0384, 0x0385, +0x0387, 0x0387, +0x0483, 0x0489, +0x0559, 0x0559, +0x0591, 0x05bd, +0x05bf, 0x05bf, +0x05c1, 0x05c2, +0x05c4, 0x05c5, +0x05c7, 0x05c7, +0x05f4, 0x05f4, +0x0600, 0x0605, +0x0610, 0x061a, +0x061c, 0x061c, +0x0640, 0x0640, +0x064b, 0x065f, +0x0670, 0x0670, +0x06d6, 0x06dd, +0x06df, 0x06e8, +0x06ea, 0x06ed, +0x070f, 0x070f, +0x0711, 0x0711, +0x0730, 0x074a, +0x07a6, 0x07b0, +0x07eb, 0x07f5, +0x07fa, 0x07fa, +0x0816, 0x082d, +0x0859, 0x085b, +0x08e3, 0x0902, +0x093a, 0x093a, +0x093c, 0x093c, +0x0941, 0x0948, +0x094d, 0x094d, +0x0951, 0x0957, +0x0962, 0x0963, +0x0971, 0x0971, +0x0981, 0x0981, +0x09bc, 0x09bc, +0x09c1, 0x09c4, +0x09cd, 0x09cd, +0x09e2, 0x09e3, +0x0a01, 0x0a02, +0x0a3c, 0x0a3c, +0x0a41, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4d, +0x0a51, 0x0a51, +0x0a70, 0x0a71, +0x0a75, 0x0a75, +0x0a81, 0x0a82, +0x0abc, 0x0abc, +0x0ac1, 0x0ac5, +0x0ac7, 0x0ac8, +0x0acd, 0x0acd, +0x0ae2, 0x0ae3, +0x0b01, 0x0b01, +0x0b3c, 0x0b3c, +0x0b3f, 0x0b3f, +0x0b41, 0x0b44, +0x0b4d, 0x0b4d, +0x0b56, 0x0b56, +0x0b62, 0x0b63, +0x0b82, 0x0b82, +0x0bc0, 0x0bc0, +0x0bcd, 0x0bcd, +0x0c00, 0x0c00, +0x0c3e, 0x0c40, +0x0c46, 0x0c48, +0x0c4a, 0x0c4d, +0x0c55, 0x0c56, +0x0c62, 0x0c63, +0x0c81, 0x0c81, +0x0cbc, 0x0cbc, +0x0cbf, 0x0cbf, +0x0cc6, 0x0cc6, +0x0ccc, 0x0ccd, +0x0ce2, 0x0ce3, +0x0d01, 0x0d01, +0x0d41, 0x0d44, +0x0d4d, 0x0d4d, +0x0d62, 0x0d63, +0x0dca, 0x0dca, +0x0dd2, 0x0dd4, +0x0dd6, 0x0dd6, +0x0e31, 0x0e31, +0x0e34, 0x0e3a, +0x0e46, 0x0e4e, +0x0eb1, 0x0eb1, +0x0eb4, 0x0eb9, +0x0ebb, 0x0ebc, +0x0ec6, 0x0ec6, +0x0ec8, 0x0ecd, +0x0f18, 0x0f19, +0x0f35, 0x0f35, +0x0f37, 0x0f37, +0x0f39, 0x0f39, +0x0f71, 0x0f7e, +0x0f80, 0x0f84, +0x0f86, 0x0f87, +0x0f8d, 0x0f97, +0x0f99, 0x0fbc, +0x0fc6, 0x0fc6, +0x102d, 0x1030, +0x1032, 0x1037, +0x1039, 0x103a, +0x103d, 0x103e, +0x1058, 0x1059, +0x105e, 0x1060, +0x1071, 0x1074, +0x1082, 0x1082, +0x1085, 0x1086, +0x108d, 0x108d, +0x109d, 0x109d, +0x10fc, 0x10fc, +0x135d, 0x135f, +0x1712, 0x1714, +0x1732, 0x1734, +0x1752, 0x1753, +0x1772, 0x1773, +0x17b4, 0x17b5, +0x17b7, 0x17bd, +0x17c6, 0x17c6, +0x17c9, 0x17d3, +0x17d7, 0x17d7, +0x17dd, 0x17dd, +0x180b, 0x180e, +0x1843, 0x1843, +0x18a9, 0x18a9, +0x1920, 0x1922, +0x1927, 0x1928, +0x1932, 0x1932, +0x1939, 0x193b, +0x1a17, 0x1a18, +0x1a1b, 0x1a1b, +0x1a56, 0x1a56, +0x1a58, 0x1a5e, +0x1a60, 0x1a60, +0x1a62, 0x1a62, +0x1a65, 0x1a6c, +0x1a73, 0x1a7c, +0x1a7f, 0x1a7f, +0x1aa7, 0x1aa7, +0x1ab0, 0x1abe, +0x1b00, 0x1b03, +0x1b34, 0x1b34, +0x1b36, 0x1b3a, +0x1b3c, 0x1b3c, +0x1b42, 0x1b42, +0x1b6b, 0x1b73, +0x1b80, 0x1b81, +0x1ba2, 0x1ba5, +0x1ba8, 0x1ba9, +0x1bab, 0x1bad, +0x1be6, 0x1be6, +0x1be8, 0x1be9, +0x1bed, 0x1bed, +0x1bef, 0x1bf1, +0x1c2c, 0x1c33, +0x1c36, 0x1c37, +0x1c78, 0x1c7d, +0x1cd0, 0x1cd2, +0x1cd4, 0x1ce0, +0x1ce2, 0x1ce8, +0x1ced, 0x1ced, +0x1cf4, 0x1cf4, +0x1cf8, 0x1cf9, +0x1d2c, 0x1d6a, +0x1d78, 0x1d78, +0x1d9b, 0x1df5, +0x1dfc, 0x1dff, +0x1fbd, 0x1fbd, +0x1fbf, 0x1fc1, +0x1fcd, 0x1fcf, +0x1fdd, 0x1fdf, +0x1fed, 0x1fef, +0x1ffd, 0x1ffe, +0x200b, 0x200f, +0x2018, 0x2019, +0x2024, 0x2024, +0x2027, 0x2027, +0x202a, 0x202e, +0x2060, 0x2064, +0x2066, 0x206f, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x20d0, 0x20f0, +0x2c7c, 0x2c7d, +0x2cef, 0x2cf1, +0x2d6f, 0x2d6f, +0x2d7f, 0x2d7f, +0x2de0, 0x2dff, +0x2e2f, 0x2e2f, +0x3005, 0x3005, +0x302a, 0x302d, +0x3031, 0x3035, +0x303b, 0x303b, +0x3099, 0x309e, +0x30fc, 0x30fe, +0xa015, 0xa015, +0xa4f8, 0xa4fd, +0xa60c, 0xa60c, +0xa66f, 0xa672, +0xa674, 0xa67d, +0xa67f, 0xa67f, +0xa69c, 0xa69f, +0xa6f0, 0xa6f1, +0xa700, 0xa721, +0xa770, 0xa770, +0xa788, 0xa78a, +0xa7f8, 0xa7f9, +0xa802, 0xa802, +0xa806, 0xa806, +0xa80b, 0xa80b, +0xa825, 0xa826, +0xa8c4, 0xa8c4, +0xa8e0, 0xa8f1, +0xa926, 0xa92d, +0xa947, 0xa951, +0xa980, 0xa982, +0xa9b3, 0xa9b3, +0xa9b6, 0xa9b9, +0xa9bc, 0xa9bc, +0xa9cf, 0xa9cf, +0xa9e5, 0xa9e6, +0xaa29, 0xaa2e, +0xaa31, 0xaa32, +0xaa35, 0xaa36, +0xaa43, 0xaa43, +0xaa4c, 0xaa4c, +0xaa70, 0xaa70, +0xaa7c, 0xaa7c, +0xaab0, 0xaab0, +0xaab2, 0xaab4, +0xaab7, 0xaab8, +0xaabe, 0xaabf, +0xaac1, 0xaac1, +0xaadd, 0xaadd, +0xaaec, 0xaaed, +0xaaf3, 0xaaf4, +0xaaf6, 0xaaf6, +0xab5b, 0xab5f, +0xabe5, 0xabe5, +0xabe8, 0xabe8, +0xabed, 0xabed, +0xfb1e, 0xfb1e, +0xfbb2, 0xfbc1, +0xfe00, 0xfe0f, +0xfe13, 0xfe13, +0xfe20, 0xfe2f, +0xfe52, 0xfe52, +0xfe55, 0xfe55, +0xfeff, 0xfeff, +0xff07, 0xff07, +0xff0e, 0xff0e, +0xff1a, 0xff1a, +0xff3e, 0xff3e, +0xff40, 0xff40, +0xff70, 0xff70, +0xff9e, 0xff9f, +0xffe3, 0xffe3, +0xfff9, 0xfffb, +0x101fd, 0x101fd, +0x102e0, 0x102e0, +0x10376, 0x1037a, +0x10a01, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a0f, +0x10a38, 0x10a3a, +0x10a3f, 0x10a3f, +0x10ae5, 0x10ae6, +0x11001, 0x11001, +0x11038, 0x11046, +0x1107f, 0x11081, +0x110b3, 0x110b6, +0x110b9, 0x110ba, +0x110bd, 0x110bd, +0x11100, 0x11102, +0x11127, 0x1112b, +0x1112d, 0x11134, +0x11173, 0x11173, +0x11180, 0x11181, +0x111b6, 0x111be, +0x111ca, 0x111cc, +0x1122f, 0x11231, +0x11234, 0x11234, +0x11236, 0x11237, +0x112df, 0x112df, +0x112e3, 0x112ea, +0x11300, 0x11301, +0x1133c, 0x1133c, +0x11340, 0x11340, +0x11366, 0x1136c, +0x11370, 0x11374, +0x114b3, 0x114b8, +0x114ba, 0x114ba, +0x114bf, 0x114c0, +0x114c2, 0x114c3, +0x115b2, 0x115b5, +0x115bc, 0x115bd, +0x115bf, 0x115c0, +0x115dc, 0x115dd, +0x11633, 0x1163a, +0x1163d, 0x1163d, +0x1163f, 0x11640, +0x116ab, 0x116ab, +0x116ad, 0x116ad, +0x116b0, 0x116b5, +0x116b7, 0x116b7, +0x1171d, 0x1171f, +0x11722, 0x11725, +0x11727, 0x1172b, +0x16af0, 0x16af4, +0x16b30, 0x16b36, +0x16b40, 0x16b43, +0x16f8f, 0x16f9f, +0x1bc9d, 0x1bc9e, +0x1bca0, 0x1bca3, +0x1d167, 0x1d169, +0x1d173, 0x1d182, +0x1d185, 0x1d18b, +0x1d1aa, 0x1d1ad, +0x1d242, 0x1d244, +0x1da00, 0x1da36, +0x1da3b, 0x1da6c, +0x1da75, 0x1da75, +0x1da84, 0x1da84, +0x1da9b, 0x1da9f, +0x1daa1, 0x1daaf, +0x1e8d0, 0x1e8d6, +0x1f3fb, 0x1f3ff, +0xe0001, 0xe0001, +0xe0020, 0xe007f, +0xe0100, 0xe01ef, +}; /* END of CR_Case_Ignorable */ + +/* PROPERTY: 'Cased': Derived Property */ +static const OnigCodePoint +CR_Cased[] = { 131, +0x0041, 0x005a, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00b5, 0x00b5, +0x00ba, 0x00ba, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x01ba, +0x01bc, 0x01bf, +0x01c4, 0x0293, +0x0295, 0x02b8, +0x02c0, 0x02c1, +0x02e0, 0x02e4, +0x0345, 0x0345, +0x0370, 0x0373, +0x0376, 0x0377, +0x037a, 0x037d, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03f5, +0x03f7, 0x0481, +0x048a, 0x052f, +0x0531, 0x0556, +0x0561, 0x0587, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1d00, 0x1dbf, +0x1e00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fe0, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffc, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2119, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x212d, +0x212f, 0x2134, +0x2139, 0x2139, +0x213c, 0x213f, +0x2145, 0x2149, +0x214e, 0x214e, +0x2160, 0x217f, +0x2183, 0x2184, +0x24b6, 0x24e9, +0x2c00, 0x2c2e, +0x2c30, 0x2c5e, +0x2c60, 0x2ce4, +0x2ceb, 0x2cee, +0x2cf2, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0xa640, 0xa66d, +0xa680, 0xa69d, +0xa722, 0xa787, +0xa78b, 0xa78e, +0xa790, 0xa7ad, +0xa7b0, 0xa7b7, +0xa7f8, 0xa7fa, +0xab30, 0xab5a, +0xab5c, 0xab65, +0xab70, 0xabbf, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xff21, 0xff3a, +0xff41, 0xff5a, +0x10400, 0x1044f, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x118a0, 0x118df, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d6c0, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6fa, +0x1d6fc, 0x1d714, +0x1d716, 0x1d734, +0x1d736, 0x1d74e, +0x1d750, 0x1d76e, +0x1d770, 0x1d788, +0x1d78a, 0x1d7a8, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7cb, +0x1f130, 0x1f149, +0x1f150, 0x1f169, +0x1f170, 0x1f189, +}; /* END of CR_Cased */ + +/* PROPERTY: 'Caucasian_Albanian': Script */ +static const OnigCodePoint +CR_Caucasian_Albanian[] = { 2, +0x10530, 0x10563, +0x1056f, 0x1056f, +}; /* END of CR_Caucasian_Albanian */ +  /* PROPERTY: 'Cc': General Category */  #define CR_Cc CR_Cntrl @@ -6036,6 +6731,2567 @@ CR_Cf[] = { 17,  0xe0020, 0xe007f,  }; /* END of CR_Cf */ +/* PROPERTY: 'Chakma': Script */ +static const OnigCodePoint +CR_Chakma[] = { 2, +0x11100, 0x11134, +0x11136, 0x11143, +}; /* END of CR_Chakma */ + +/* PROPERTY: 'Cham': Script */ +static const OnigCodePoint +CR_Cham[] = { 4, +0xaa00, 0xaa36, +0xaa40, 0xaa4d, +0xaa50, 0xaa59, +0xaa5c, 0xaa5f, +}; /* END of CR_Cham */ + +/* PROPERTY: 'Changes_When_Casefolded': Derived Property */ +static const OnigCodePoint +CR_Changes_When_Casefolded[] = { 600, +0x0041, 0x005a, +0x00b5, 0x00b5, +0x00c0, 0x00d6, +0x00d8, 0x00df, +0x0100, 0x0100, +0x0102, 0x0102, +0x0104, 0x0104, +0x0106, 0x0106, +0x0108, 0x0108, +0x010a, 0x010a, +0x010c, 0x010c, +0x010e, 0x010e, +0x0110, 0x0110, +0x0112, 0x0112, +0x0114, 0x0114, +0x0116, 0x0116, +0x0118, 0x0118, +0x011a, 0x011a, +0x011c, 0x011c, +0x011e, 0x011e, +0x0120, 0x0120, +0x0122, 0x0122, +0x0124, 0x0124, +0x0126, 0x0126, +0x0128, 0x0128, +0x012a, 0x012a, +0x012c, 0x012c, +0x012e, 0x012e, +0x0130, 0x0130, +0x0132, 0x0132, +0x0134, 0x0134, +0x0136, 0x0136, +0x0139, 0x0139, +0x013b, 0x013b, +0x013d, 0x013d, +0x013f, 0x013f, +0x0141, 0x0141, +0x0143, 0x0143, +0x0145, 0x0145, +0x0147, 0x0147, +0x0149, 0x014a, +0x014c, 0x014c, +0x014e, 0x014e, +0x0150, 0x0150, +0x0152, 0x0152, +0x0154, 0x0154, +0x0156, 0x0156, +0x0158, 0x0158, +0x015a, 0x015a, +0x015c, 0x015c, +0x015e, 0x015e, +0x0160, 0x0160, +0x0162, 0x0162, +0x0164, 0x0164, +0x0166, 0x0166, +0x0168, 0x0168, +0x016a, 0x016a, +0x016c, 0x016c, +0x016e, 0x016e, +0x0170, 0x0170, +0x0172, 0x0172, +0x0174, 0x0174, +0x0176, 0x0176, +0x0178, 0x0179, +0x017b, 0x017b, +0x017d, 0x017d, +0x017f, 0x017f, +0x0181, 0x0182, +0x0184, 0x0184, +0x0186, 0x0187, +0x0189, 0x018b, +0x018e, 0x0191, +0x0193, 0x0194, +0x0196, 0x0198, +0x019c, 0x019d, +0x019f, 0x01a0, +0x01a2, 0x01a2, +0x01a4, 0x01a4, +0x01a6, 0x01a7, +0x01a9, 0x01a9, +0x01ac, 0x01ac, +0x01ae, 0x01af, +0x01b1, 0x01b3, +0x01b5, 0x01b5, +0x01b7, 0x01b8, +0x01bc, 0x01bc, +0x01c4, 0x01c5, +0x01c7, 0x01c8, +0x01ca, 0x01cb, +0x01cd, 0x01cd, +0x01cf, 0x01cf, +0x01d1, 0x01d1, +0x01d3, 0x01d3, +0x01d5, 0x01d5, +0x01d7, 0x01d7, +0x01d9, 0x01d9, +0x01db, 0x01db, +0x01de, 0x01de, +0x01e0, 0x01e0, +0x01e2, 0x01e2, +0x01e4, 0x01e4, +0x01e6, 0x01e6, +0x01e8, 0x01e8, +0x01ea, 0x01ea, +0x01ec, 0x01ec, +0x01ee, 0x01ee, +0x01f1, 0x01f2, +0x01f4, 0x01f4, +0x01f6, 0x01f8, +0x01fa, 0x01fa, +0x01fc, 0x01fc, +0x01fe, 0x01fe, +0x0200, 0x0200, +0x0202, 0x0202, +0x0204, 0x0204, +0x0206, 0x0206, +0x0208, 0x0208, +0x020a, 0x020a, +0x020c, 0x020c, +0x020e, 0x020e, +0x0210, 0x0210, +0x0212, 0x0212, +0x0214, 0x0214, +0x0216, 0x0216, +0x0218, 0x0218, +0x021a, 0x021a, +0x021c, 0x021c, +0x021e, 0x021e, +0x0220, 0x0220, +0x0222, 0x0222, +0x0224, 0x0224, +0x0226, 0x0226, +0x0228, 0x0228, +0x022a, 0x022a, +0x022c, 0x022c, +0x022e, 0x022e, +0x0230, 0x0230, +0x0232, 0x0232, +0x023a, 0x023b, +0x023d, 0x023e, +0x0241, 0x0241, +0x0243, 0x0246, +0x0248, 0x0248, +0x024a, 0x024a, +0x024c, 0x024c, +0x024e, 0x024e, +0x0345, 0x0345, +0x0370, 0x0370, +0x0372, 0x0372, +0x0376, 0x0376, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x038f, +0x0391, 0x03a1, +0x03a3, 0x03ab, +0x03c2, 0x03c2, +0x03cf, 0x03d1, +0x03d5, 0x03d6, +0x03d8, 0x03d8, +0x03da, 0x03da, +0x03dc, 0x03dc, +0x03de, 0x03de, +0x03e0, 0x03e0, +0x03e2, 0x03e2, +0x03e4, 0x03e4, +0x03e6, 0x03e6, +0x03e8, 0x03e8, +0x03ea, 0x03ea, +0x03ec, 0x03ec, +0x03ee, 0x03ee, +0x03f0, 0x03f1, +0x03f4, 0x03f5, +0x03f7, 0x03f7, +0x03f9, 0x03fa, +0x03fd, 0x042f, +0x0460, 0x0460, +0x0462, 0x0462, +0x0464, 0x0464, +0x0466, 0x0466, +0x0468, 0x0468, +0x046a, 0x046a, +0x046c, 0x046c, +0x046e, 0x046e, +0x0470, 0x0470, +0x0472, 0x0472, +0x0474, 0x0474, +0x0476, 0x0476, +0x0478, 0x0478, +0x047a, 0x047a, +0x047c, 0x047c, +0x047e, 0x047e, +0x0480, 0x0480, +0x048a, 0x048a, +0x048c, 0x048c, +0x048e, 0x048e, +0x0490, 0x0490, +0x0492, 0x0492, +0x0494, 0x0494, +0x0496, 0x0496, +0x0498, 0x0498, +0x049a, 0x049a, +0x049c, 0x049c, +0x049e, 0x049e, +0x04a0, 0x04a0, +0x04a2, 0x04a2, +0x04a4, 0x04a4, +0x04a6, 0x04a6, +0x04a8, 0x04a8, +0x04aa, 0x04aa, +0x04ac, 0x04ac, +0x04ae, 0x04ae, +0x04b0, 0x04b0, +0x04b2, 0x04b2, +0x04b4, 0x04b4, +0x04b6, 0x04b6, +0x04b8, 0x04b8, +0x04ba, 0x04ba, +0x04bc, 0x04bc, +0x04be, 0x04be, +0x04c0, 0x04c1, +0x04c3, 0x04c3, +0x04c5, 0x04c5, +0x04c7, 0x04c7, +0x04c9, 0x04c9, +0x04cb, 0x04cb, +0x04cd, 0x04cd, +0x04d0, 0x04d0, +0x04d2, 0x04d2, +0x04d4, 0x04d4, +0x04d6, 0x04d6, +0x04d8, 0x04d8, +0x04da, 0x04da, +0x04dc, 0x04dc, +0x04de, 0x04de, +0x04e0, 0x04e0, +0x04e2, 0x04e2, +0x04e4, 0x04e4, +0x04e6, 0x04e6, +0x04e8, 0x04e8, +0x04ea, 0x04ea, +0x04ec, 0x04ec, +0x04ee, 0x04ee, +0x04f0, 0x04f0, +0x04f2, 0x04f2, +0x04f4, 0x04f4, +0x04f6, 0x04f6, +0x04f8, 0x04f8, +0x04fa, 0x04fa, +0x04fc, 0x04fc, +0x04fe, 0x04fe, +0x0500, 0x0500, +0x0502, 0x0502, +0x0504, 0x0504, +0x0506, 0x0506, +0x0508, 0x0508, +0x050a, 0x050a, +0x050c, 0x050c, +0x050e, 0x050e, +0x0510, 0x0510, +0x0512, 0x0512, +0x0514, 0x0514, +0x0516, 0x0516, +0x0518, 0x0518, +0x051a, 0x051a, +0x051c, 0x051c, +0x051e, 0x051e, +0x0520, 0x0520, +0x0522, 0x0522, +0x0524, 0x0524, +0x0526, 0x0526, +0x0528, 0x0528, +0x052a, 0x052a, +0x052c, 0x052c, +0x052e, 0x052e, +0x0531, 0x0556, +0x0587, 0x0587, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x13f8, 0x13fd, +0x1e00, 0x1e00, +0x1e02, 0x1e02, +0x1e04, 0x1e04, +0x1e06, 0x1e06, +0x1e08, 0x1e08, +0x1e0a, 0x1e0a, +0x1e0c, 0x1e0c, +0x1e0e, 0x1e0e, +0x1e10, 0x1e10, +0x1e12, 0x1e12, +0x1e14, 0x1e14, +0x1e16, 0x1e16, +0x1e18, 0x1e18, +0x1e1a, 0x1e1a, +0x1e1c, 0x1e1c, +0x1e1e, 0x1e1e, +0x1e20, 0x1e20, +0x1e22, 0x1e22, +0x1e24, 0x1e24, +0x1e26, 0x1e26, +0x1e28, 0x1e28, +0x1e2a, 0x1e2a, +0x1e2c, 0x1e2c, +0x1e2e, 0x1e2e, +0x1e30, 0x1e30, +0x1e32, 0x1e32, +0x1e34, 0x1e34, +0x1e36, 0x1e36, +0x1e38, 0x1e38, +0x1e3a, 0x1e3a, +0x1e3c, 0x1e3c, +0x1e3e, 0x1e3e, +0x1e40, 0x1e40, +0x1e42, 0x1e42, +0x1e44, 0x1e44, +0x1e46, 0x1e46, +0x1e48, 0x1e48, +0x1e4a, 0x1e4a, +0x1e4c, 0x1e4c, +0x1e4e, 0x1e4e, +0x1e50, 0x1e50, +0x1e52, 0x1e52, +0x1e54, 0x1e54, +0x1e56, 0x1e56, +0x1e58, 0x1e58, +0x1e5a, 0x1e5a, +0x1e5c, 0x1e5c, +0x1e5e, 0x1e5e, +0x1e60, 0x1e60, +0x1e62, 0x1e62, +0x1e64, 0x1e64, +0x1e66, 0x1e66, +0x1e68, 0x1e68, +0x1e6a, 0x1e6a, +0x1e6c, 0x1e6c, +0x1e6e, 0x1e6e, +0x1e70, 0x1e70, +0x1e72, 0x1e72, +0x1e74, 0x1e74, +0x1e76, 0x1e76, +0x1e78, 0x1e78, +0x1e7a, 0x1e7a, +0x1e7c, 0x1e7c, +0x1e7e, 0x1e7e, +0x1e80, 0x1e80, +0x1e82, 0x1e82, +0x1e84, 0x1e84, +0x1e86, 0x1e86, +0x1e88, 0x1e88, +0x1e8a, 0x1e8a, +0x1e8c, 0x1e8c, +0x1e8e, 0x1e8e, +0x1e90, 0x1e90, +0x1e92, 0x1e92, +0x1e94, 0x1e94, +0x1e9a, 0x1e9b, +0x1e9e, 0x1e9e, +0x1ea0, 0x1ea0, +0x1ea2, 0x1ea2, +0x1ea4, 0x1ea4, +0x1ea6, 0x1ea6, +0x1ea8, 0x1ea8, +0x1eaa, 0x1eaa, +0x1eac, 0x1eac, +0x1eae, 0x1eae, +0x1eb0, 0x1eb0, +0x1eb2, 0x1eb2, +0x1eb4, 0x1eb4, +0x1eb6, 0x1eb6, +0x1eb8, 0x1eb8, +0x1eba, 0x1eba, +0x1ebc, 0x1ebc, +0x1ebe, 0x1ebe, +0x1ec0, 0x1ec0, +0x1ec2, 0x1ec2, +0x1ec4, 0x1ec4, +0x1ec6, 0x1ec6, +0x1ec8, 0x1ec8, +0x1eca, 0x1eca, +0x1ecc, 0x1ecc, +0x1ece, 0x1ece, +0x1ed0, 0x1ed0, +0x1ed2, 0x1ed2, +0x1ed4, 0x1ed4, +0x1ed6, 0x1ed6, +0x1ed8, 0x1ed8, +0x1eda, 0x1eda, +0x1edc, 0x1edc, +0x1ede, 0x1ede, +0x1ee0, 0x1ee0, +0x1ee2, 0x1ee2, +0x1ee4, 0x1ee4, +0x1ee6, 0x1ee6, +0x1ee8, 0x1ee8, +0x1eea, 0x1eea, +0x1eec, 0x1eec, +0x1eee, 0x1eee, +0x1ef0, 0x1ef0, +0x1ef2, 0x1ef2, +0x1ef4, 0x1ef4, +0x1ef6, 0x1ef6, +0x1ef8, 0x1ef8, +0x1efa, 0x1efa, +0x1efc, 0x1efc, +0x1efe, 0x1efe, +0x1f08, 0x1f0f, +0x1f18, 0x1f1d, +0x1f28, 0x1f2f, +0x1f38, 0x1f3f, +0x1f48, 0x1f4d, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f5f, +0x1f68, 0x1f6f, +0x1f80, 0x1faf, +0x1fb2, 0x1fb4, +0x1fb7, 0x1fbc, +0x1fc2, 0x1fc4, +0x1fc7, 0x1fcc, +0x1fd8, 0x1fdb, +0x1fe8, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff7, 0x1ffc, +0x2126, 0x2126, +0x212a, 0x212b, +0x2132, 0x2132, +0x2160, 0x216f, +0x2183, 0x2183, +0x24b6, 0x24cf, +0x2c00, 0x2c2e, +0x2c60, 0x2c60, +0x2c62, 0x2c64, +0x2c67, 0x2c67, +0x2c69, 0x2c69, +0x2c6b, 0x2c6b, +0x2c6d, 0x2c70, +0x2c72, 0x2c72, +0x2c75, 0x2c75, +0x2c7e, 0x2c80, +0x2c82, 0x2c82, +0x2c84, 0x2c84, +0x2c86, 0x2c86, +0x2c88, 0x2c88, +0x2c8a, 0x2c8a, +0x2c8c, 0x2c8c, +0x2c8e, 0x2c8e, +0x2c90, 0x2c90, +0x2c92, 0x2c92, +0x2c94, 0x2c94, +0x2c96, 0x2c96, +0x2c98, 0x2c98, +0x2c9a, 0x2c9a, +0x2c9c, 0x2c9c, +0x2c9e, 0x2c9e, +0x2ca0, 0x2ca0, +0x2ca2, 0x2ca2, +0x2ca4, 0x2ca4, +0x2ca6, 0x2ca6, +0x2ca8, 0x2ca8, +0x2caa, 0x2caa, +0x2cac, 0x2cac, +0x2cae, 0x2cae, +0x2cb0, 0x2cb0, +0x2cb2, 0x2cb2, +0x2cb4, 0x2cb4, +0x2cb6, 0x2cb6, +0x2cb8, 0x2cb8, +0x2cba, 0x2cba, +0x2cbc, 0x2cbc, +0x2cbe, 0x2cbe, +0x2cc0, 0x2cc0, +0x2cc2, 0x2cc2, +0x2cc4, 0x2cc4, +0x2cc6, 0x2cc6, +0x2cc8, 0x2cc8, +0x2cca, 0x2cca, +0x2ccc, 0x2ccc, +0x2cce, 0x2cce, +0x2cd0, 0x2cd0, +0x2cd2, 0x2cd2, +0x2cd4, 0x2cd4, +0x2cd6, 0x2cd6, +0x2cd8, 0x2cd8, +0x2cda, 0x2cda, +0x2cdc, 0x2cdc, +0x2cde, 0x2cde, +0x2ce0, 0x2ce0, +0x2ce2, 0x2ce2, +0x2ceb, 0x2ceb, +0x2ced, 0x2ced, +0x2cf2, 0x2cf2, +0xa640, 0xa640, +0xa642, 0xa642, +0xa644, 0xa644, +0xa646, 0xa646, +0xa648, 0xa648, +0xa64a, 0xa64a, +0xa64c, 0xa64c, +0xa64e, 0xa64e, +0xa650, 0xa650, +0xa652, 0xa652, +0xa654, 0xa654, +0xa656, 0xa656, +0xa658, 0xa658, +0xa65a, 0xa65a, +0xa65c, 0xa65c, +0xa65e, 0xa65e, +0xa660, 0xa660, +0xa662, 0xa662, +0xa664, 0xa664, +0xa666, 0xa666, +0xa668, 0xa668, +0xa66a, 0xa66a, +0xa66c, 0xa66c, +0xa680, 0xa680, +0xa682, 0xa682, +0xa684, 0xa684, +0xa686, 0xa686, +0xa688, 0xa688, +0xa68a, 0xa68a, +0xa68c, 0xa68c, +0xa68e, 0xa68e, +0xa690, 0xa690, +0xa692, 0xa692, +0xa694, 0xa694, +0xa696, 0xa696, +0xa698, 0xa698, +0xa69a, 0xa69a, +0xa722, 0xa722, +0xa724, 0xa724, +0xa726, 0xa726, +0xa728, 0xa728, +0xa72a, 0xa72a, +0xa72c, 0xa72c, +0xa72e, 0xa72e, +0xa732, 0xa732, +0xa734, 0xa734, +0xa736, 0xa736, +0xa738, 0xa738, +0xa73a, 0xa73a, +0xa73c, 0xa73c, +0xa73e, 0xa73e, +0xa740, 0xa740, +0xa742, 0xa742, +0xa744, 0xa744, +0xa746, 0xa746, +0xa748, 0xa748, +0xa74a, 0xa74a, +0xa74c, 0xa74c, +0xa74e, 0xa74e, +0xa750, 0xa750, +0xa752, 0xa752, +0xa754, 0xa754, +0xa756, 0xa756, +0xa758, 0xa758, +0xa75a, 0xa75a, +0xa75c, 0xa75c, +0xa75e, 0xa75e, +0xa760, 0xa760, +0xa762, 0xa762, +0xa764, 0xa764, +0xa766, 0xa766, +0xa768, 0xa768, +0xa76a, 0xa76a, +0xa76c, 0xa76c, +0xa76e, 0xa76e, +0xa779, 0xa779, +0xa77b, 0xa77b, +0xa77d, 0xa77e, +0xa780, 0xa780, +0xa782, 0xa782, +0xa784, 0xa784, +0xa786, 0xa786, +0xa78b, 0xa78b, +0xa78d, 0xa78d, +0xa790, 0xa790, +0xa792, 0xa792, +0xa796, 0xa796, +0xa798, 0xa798, +0xa79a, 0xa79a, +0xa79c, 0xa79c, +0xa79e, 0xa79e, +0xa7a0, 0xa7a0, +0xa7a2, 0xa7a2, +0xa7a4, 0xa7a4, +0xa7a6, 0xa7a6, +0xa7a8, 0xa7a8, +0xa7aa, 0xa7ad, +0xa7b0, 0xa7b4, +0xa7b6, 0xa7b6, +0xab70, 0xabbf, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xff21, 0xff3a, +0x10400, 0x10427, +0x10c80, 0x10cb2, +0x118a0, 0x118bf, +}; /* END of CR_Changes_When_Casefolded */ + +/* PROPERTY: 'Changes_When_Casemapped': Derived Property */ +static const OnigCodePoint +CR_Changes_When_Casemapped[] = { 113, +0x0041, 0x005a, +0x0061, 0x007a, +0x00b5, 0x00b5, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x0137, +0x0139, 0x018c, +0x018e, 0x019a, +0x019c, 0x01a9, +0x01ac, 0x01b9, +0x01bc, 0x01bd, +0x01bf, 0x01bf, +0x01c4, 0x0220, +0x0222, 0x0233, +0x023a, 0x0254, +0x0256, 0x0257, +0x0259, 0x0259, +0x025b, 0x025c, +0x0260, 0x0261, +0x0263, 0x0263, +0x0265, 0x0266, +0x0268, 0x0269, +0x026b, 0x026c, +0x026f, 0x026f, +0x0271, 0x0272, +0x0275, 0x0275, +0x027d, 0x027d, +0x0280, 0x0280, +0x0283, 0x0283, +0x0287, 0x028c, +0x0292, 0x0292, +0x029d, 0x029e, +0x0345, 0x0345, +0x0370, 0x0373, +0x0376, 0x0377, +0x037b, 0x037d, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03d1, +0x03d5, 0x03f5, +0x03f7, 0x03fb, +0x03fd, 0x0481, +0x048a, 0x052f, +0x0531, 0x0556, +0x0561, 0x0587, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1d79, 0x1d79, +0x1d7d, 0x1d7d, +0x1e00, 0x1e9b, +0x1e9e, 0x1e9e, +0x1ea0, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fe0, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffc, +0x2126, 0x2126, +0x212a, 0x212b, +0x2132, 0x2132, +0x214e, 0x214e, +0x2160, 0x217f, +0x2183, 0x2184, +0x24b6, 0x24e9, +0x2c00, 0x2c2e, +0x2c30, 0x2c5e, +0x2c60, 0x2c70, +0x2c72, 0x2c73, +0x2c75, 0x2c76, +0x2c7e, 0x2ce3, +0x2ceb, 0x2cee, +0x2cf2, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0xa640, 0xa66d, +0xa680, 0xa69b, +0xa722, 0xa72f, +0xa732, 0xa76f, +0xa779, 0xa787, +0xa78b, 0xa78d, +0xa790, 0xa793, +0xa796, 0xa7ad, +0xa7b0, 0xa7b7, +0xab53, 0xab53, +0xab70, 0xabbf, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xff21, 0xff3a, +0xff41, 0xff5a, +0x10400, 0x1044f, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x118a0, 0x118df, +}; /* END of CR_Changes_When_Casemapped */ + +/* PROPERTY: 'Changes_When_Lowercased': Derived Property */ +static const OnigCodePoint +CR_Changes_When_Lowercased[] = { 588, +0x0041, 0x005a, +0x00c0, 0x00d6, +0x00d8, 0x00de, +0x0100, 0x0100, +0x0102, 0x0102, +0x0104, 0x0104, +0x0106, 0x0106, +0x0108, 0x0108, +0x010a, 0x010a, +0x010c, 0x010c, +0x010e, 0x010e, +0x0110, 0x0110, +0x0112, 0x0112, +0x0114, 0x0114, +0x0116, 0x0116, +0x0118, 0x0118, +0x011a, 0x011a, +0x011c, 0x011c, +0x011e, 0x011e, +0x0120, 0x0120, +0x0122, 0x0122, +0x0124, 0x0124, +0x0126, 0x0126, +0x0128, 0x0128, +0x012a, 0x012a, +0x012c, 0x012c, +0x012e, 0x012e, +0x0130, 0x0130, +0x0132, 0x0132, +0x0134, 0x0134, +0x0136, 0x0136, +0x0139, 0x0139, +0x013b, 0x013b, +0x013d, 0x013d, +0x013f, 0x013f, +0x0141, 0x0141, +0x0143, 0x0143, +0x0145, 0x0145, +0x0147, 0x0147, +0x014a, 0x014a, +0x014c, 0x014c, +0x014e, 0x014e, +0x0150, 0x0150, +0x0152, 0x0152, +0x0154, 0x0154, +0x0156, 0x0156, +0x0158, 0x0158, +0x015a, 0x015a, +0x015c, 0x015c, +0x015e, 0x015e, +0x0160, 0x0160, +0x0162, 0x0162, +0x0164, 0x0164, +0x0166, 0x0166, +0x0168, 0x0168, +0x016a, 0x016a, +0x016c, 0x016c, +0x016e, 0x016e, +0x0170, 0x0170, +0x0172, 0x0172, +0x0174, 0x0174, +0x0176, 0x0176, +0x0178, 0x0179, +0x017b, 0x017b, +0x017d, 0x017d, +0x0181, 0x0182, +0x0184, 0x0184, +0x0186, 0x0187, +0x0189, 0x018b, +0x018e, 0x0191, +0x0193, 0x0194, +0x0196, 0x0198, +0x019c, 0x019d, +0x019f, 0x01a0, +0x01a2, 0x01a2, +0x01a4, 0x01a4, +0x01a6, 0x01a7, +0x01a9, 0x01a9, +0x01ac, 0x01ac, +0x01ae, 0x01af, +0x01b1, 0x01b3, +0x01b5, 0x01b5, +0x01b7, 0x01b8, +0x01bc, 0x01bc, +0x01c4, 0x01c5, +0x01c7, 0x01c8, +0x01ca, 0x01cb, +0x01cd, 0x01cd, +0x01cf, 0x01cf, +0x01d1, 0x01d1, +0x01d3, 0x01d3, +0x01d5, 0x01d5, +0x01d7, 0x01d7, +0x01d9, 0x01d9, +0x01db, 0x01db, +0x01de, 0x01de, +0x01e0, 0x01e0, +0x01e2, 0x01e2, +0x01e4, 0x01e4, +0x01e6, 0x01e6, +0x01e8, 0x01e8, +0x01ea, 0x01ea, +0x01ec, 0x01ec, +0x01ee, 0x01ee, +0x01f1, 0x01f2, +0x01f4, 0x01f4, +0x01f6, 0x01f8, +0x01fa, 0x01fa, +0x01fc, 0x01fc, +0x01fe, 0x01fe, +0x0200, 0x0200, +0x0202, 0x0202, +0x0204, 0x0204, +0x0206, 0x0206, +0x0208, 0x0208, +0x020a, 0x020a, +0x020c, 0x020c, +0x020e, 0x020e, +0x0210, 0x0210, +0x0212, 0x0212, +0x0214, 0x0214, +0x0216, 0x0216, +0x0218, 0x0218, +0x021a, 0x021a, +0x021c, 0x021c, +0x021e, 0x021e, +0x0220, 0x0220, +0x0222, 0x0222, +0x0224, 0x0224, +0x0226, 0x0226, +0x0228, 0x0228, +0x022a, 0x022a, +0x022c, 0x022c, +0x022e, 0x022e, +0x0230, 0x0230, +0x0232, 0x0232, +0x023a, 0x023b, +0x023d, 0x023e, +0x0241, 0x0241, +0x0243, 0x0246, +0x0248, 0x0248, +0x024a, 0x024a, +0x024c, 0x024c, +0x024e, 0x024e, +0x0370, 0x0370, +0x0372, 0x0372, +0x0376, 0x0376, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x038f, +0x0391, 0x03a1, +0x03a3, 0x03ab, +0x03cf, 0x03cf, +0x03d8, 0x03d8, +0x03da, 0x03da, +0x03dc, 0x03dc, +0x03de, 0x03de, +0x03e0, 0x03e0, +0x03e2, 0x03e2, +0x03e4, 0x03e4, +0x03e6, 0x03e6, +0x03e8, 0x03e8, +0x03ea, 0x03ea, +0x03ec, 0x03ec, +0x03ee, 0x03ee, +0x03f4, 0x03f4, +0x03f7, 0x03f7, +0x03f9, 0x03fa, +0x03fd, 0x042f, +0x0460, 0x0460, +0x0462, 0x0462, +0x0464, 0x0464, +0x0466, 0x0466, +0x0468, 0x0468, +0x046a, 0x046a, +0x046c, 0x046c, +0x046e, 0x046e, +0x0470, 0x0470, +0x0472, 0x0472, +0x0474, 0x0474, +0x0476, 0x0476, +0x0478, 0x0478, +0x047a, 0x047a, +0x047c, 0x047c, +0x047e, 0x047e, +0x0480, 0x0480, +0x048a, 0x048a, +0x048c, 0x048c, +0x048e, 0x048e, +0x0490, 0x0490, +0x0492, 0x0492, +0x0494, 0x0494, +0x0496, 0x0496, +0x0498, 0x0498, +0x049a, 0x049a, +0x049c, 0x049c, +0x049e, 0x049e, +0x04a0, 0x04a0, +0x04a2, 0x04a2, +0x04a4, 0x04a4, +0x04a6, 0x04a6, +0x04a8, 0x04a8, +0x04aa, 0x04aa, +0x04ac, 0x04ac, +0x04ae, 0x04ae, +0x04b0, 0x04b0, +0x04b2, 0x04b2, +0x04b4, 0x04b4, +0x04b6, 0x04b6, +0x04b8, 0x04b8, +0x04ba, 0x04ba, +0x04bc, 0x04bc, +0x04be, 0x04be, +0x04c0, 0x04c1, +0x04c3, 0x04c3, +0x04c5, 0x04c5, +0x04c7, 0x04c7, +0x04c9, 0x04c9, +0x04cb, 0x04cb, +0x04cd, 0x04cd, +0x04d0, 0x04d0, +0x04d2, 0x04d2, +0x04d4, 0x04d4, +0x04d6, 0x04d6, +0x04d8, 0x04d8, +0x04da, 0x04da, +0x04dc, 0x04dc, +0x04de, 0x04de, +0x04e0, 0x04e0, +0x04e2, 0x04e2, +0x04e4, 0x04e4, +0x04e6, 0x04e6, +0x04e8, 0x04e8, +0x04ea, 0x04ea, +0x04ec, 0x04ec, +0x04ee, 0x04ee, +0x04f0, 0x04f0, +0x04f2, 0x04f2, +0x04f4, 0x04f4, +0x04f6, 0x04f6, +0x04f8, 0x04f8, +0x04fa, 0x04fa, +0x04fc, 0x04fc, +0x04fe, 0x04fe, +0x0500, 0x0500, +0x0502, 0x0502, +0x0504, 0x0504, +0x0506, 0x0506, +0x0508, 0x0508, +0x050a, 0x050a, +0x050c, 0x050c, +0x050e, 0x050e, +0x0510, 0x0510, +0x0512, 0x0512, +0x0514, 0x0514, +0x0516, 0x0516, +0x0518, 0x0518, +0x051a, 0x051a, +0x051c, 0x051c, +0x051e, 0x051e, +0x0520, 0x0520, +0x0522, 0x0522, +0x0524, 0x0524, +0x0526, 0x0526, +0x0528, 0x0528, +0x052a, 0x052a, +0x052c, 0x052c, +0x052e, 0x052e, +0x0531, 0x0556, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x13a0, 0x13f5, +0x1e00, 0x1e00, +0x1e02, 0x1e02, +0x1e04, 0x1e04, +0x1e06, 0x1e06, +0x1e08, 0x1e08, +0x1e0a, 0x1e0a, +0x1e0c, 0x1e0c, +0x1e0e, 0x1e0e, +0x1e10, 0x1e10, +0x1e12, 0x1e12, +0x1e14, 0x1e14, +0x1e16, 0x1e16, +0x1e18, 0x1e18, +0x1e1a, 0x1e1a, +0x1e1c, 0x1e1c, +0x1e1e, 0x1e1e, +0x1e20, 0x1e20, +0x1e22, 0x1e22, +0x1e24, 0x1e24, +0x1e26, 0x1e26, +0x1e28, 0x1e28, +0x1e2a, 0x1e2a, +0x1e2c, 0x1e2c, +0x1e2e, 0x1e2e, +0x1e30, 0x1e30, +0x1e32, 0x1e32, +0x1e34, 0x1e34, +0x1e36, 0x1e36, +0x1e38, 0x1e38, +0x1e3a, 0x1e3a, +0x1e3c, 0x1e3c, +0x1e3e, 0x1e3e, +0x1e40, 0x1e40, +0x1e42, 0x1e42, +0x1e44, 0x1e44, +0x1e46, 0x1e46, +0x1e48, 0x1e48, +0x1e4a, 0x1e4a, +0x1e4c, 0x1e4c, +0x1e4e, 0x1e4e, +0x1e50, 0x1e50, +0x1e52, 0x1e52, +0x1e54, 0x1e54, +0x1e56, 0x1e56, +0x1e58, 0x1e58, +0x1e5a, 0x1e5a, +0x1e5c, 0x1e5c, +0x1e5e, 0x1e5e, +0x1e60, 0x1e60, +0x1e62, 0x1e62, +0x1e64, 0x1e64, +0x1e66, 0x1e66, +0x1e68, 0x1e68, +0x1e6a, 0x1e6a, +0x1e6c, 0x1e6c, +0x1e6e, 0x1e6e, +0x1e70, 0x1e70, +0x1e72, 0x1e72, +0x1e74, 0x1e74, +0x1e76, 0x1e76, +0x1e78, 0x1e78, +0x1e7a, 0x1e7a, +0x1e7c, 0x1e7c, +0x1e7e, 0x1e7e, +0x1e80, 0x1e80, +0x1e82, 0x1e82, +0x1e84, 0x1e84, +0x1e86, 0x1e86, +0x1e88, 0x1e88, +0x1e8a, 0x1e8a, +0x1e8c, 0x1e8c, +0x1e8e, 0x1e8e, +0x1e90, 0x1e90, +0x1e92, 0x1e92, +0x1e94, 0x1e94, +0x1e9e, 0x1e9e, +0x1ea0, 0x1ea0, +0x1ea2, 0x1ea2, +0x1ea4, 0x1ea4, +0x1ea6, 0x1ea6, +0x1ea8, 0x1ea8, +0x1eaa, 0x1eaa, +0x1eac, 0x1eac, +0x1eae, 0x1eae, +0x1eb0, 0x1eb0, +0x1eb2, 0x1eb2, +0x1eb4, 0x1eb4, +0x1eb6, 0x1eb6, +0x1eb8, 0x1eb8, +0x1eba, 0x1eba, +0x1ebc, 0x1ebc, +0x1ebe, 0x1ebe, +0x1ec0, 0x1ec0, +0x1ec2, 0x1ec2, +0x1ec4, 0x1ec4, +0x1ec6, 0x1ec6, +0x1ec8, 0x1ec8, +0x1eca, 0x1eca, +0x1ecc, 0x1ecc, +0x1ece, 0x1ece, +0x1ed0, 0x1ed0, +0x1ed2, 0x1ed2, +0x1ed4, 0x1ed4, +0x1ed6, 0x1ed6, +0x1ed8, 0x1ed8, +0x1eda, 0x1eda, +0x1edc, 0x1edc, +0x1ede, 0x1ede, +0x1ee0, 0x1ee0, +0x1ee2, 0x1ee2, +0x1ee4, 0x1ee4, +0x1ee6, 0x1ee6, +0x1ee8, 0x1ee8, +0x1eea, 0x1eea, +0x1eec, 0x1eec, +0x1eee, 0x1eee, +0x1ef0, 0x1ef0, +0x1ef2, 0x1ef2, +0x1ef4, 0x1ef4, +0x1ef6, 0x1ef6, +0x1ef8, 0x1ef8, +0x1efa, 0x1efa, +0x1efc, 0x1efc, +0x1efe, 0x1efe, +0x1f08, 0x1f0f, +0x1f18, 0x1f1d, +0x1f28, 0x1f2f, +0x1f38, 0x1f3f, +0x1f48, 0x1f4d, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f5f, +0x1f68, 0x1f6f, +0x1f88, 0x1f8f, +0x1f98, 0x1f9f, +0x1fa8, 0x1faf, +0x1fb8, 0x1fbc, +0x1fc8, 0x1fcc, +0x1fd8, 0x1fdb, +0x1fe8, 0x1fec, +0x1ff8, 0x1ffc, +0x2126, 0x2126, +0x212a, 0x212b, +0x2132, 0x2132, +0x2160, 0x216f, +0x2183, 0x2183, +0x24b6, 0x24cf, +0x2c00, 0x2c2e, +0x2c60, 0x2c60, +0x2c62, 0x2c64, +0x2c67, 0x2c67, +0x2c69, 0x2c69, +0x2c6b, 0x2c6b, +0x2c6d, 0x2c70, +0x2c72, 0x2c72, +0x2c75, 0x2c75, +0x2c7e, 0x2c80, +0x2c82, 0x2c82, +0x2c84, 0x2c84, +0x2c86, 0x2c86, +0x2c88, 0x2c88, +0x2c8a, 0x2c8a, +0x2c8c, 0x2c8c, +0x2c8e, 0x2c8e, +0x2c90, 0x2c90, +0x2c92, 0x2c92, +0x2c94, 0x2c94, +0x2c96, 0x2c96, +0x2c98, 0x2c98, +0x2c9a, 0x2c9a, +0x2c9c, 0x2c9c, +0x2c9e, 0x2c9e, +0x2ca0, 0x2ca0, +0x2ca2, 0x2ca2, +0x2ca4, 0x2ca4, +0x2ca6, 0x2ca6, +0x2ca8, 0x2ca8, +0x2caa, 0x2caa, +0x2cac, 0x2cac, +0x2cae, 0x2cae, +0x2cb0, 0x2cb0, +0x2cb2, 0x2cb2, +0x2cb4, 0x2cb4, +0x2cb6, 0x2cb6, +0x2cb8, 0x2cb8, +0x2cba, 0x2cba, +0x2cbc, 0x2cbc, +0x2cbe, 0x2cbe, +0x2cc0, 0x2cc0, +0x2cc2, 0x2cc2, +0x2cc4, 0x2cc4, +0x2cc6, 0x2cc6, +0x2cc8, 0x2cc8, +0x2cca, 0x2cca, +0x2ccc, 0x2ccc, +0x2cce, 0x2cce, +0x2cd0, 0x2cd0, +0x2cd2, 0x2cd2, +0x2cd4, 0x2cd4, +0x2cd6, 0x2cd6, +0x2cd8, 0x2cd8, +0x2cda, 0x2cda, +0x2cdc, 0x2cdc, +0x2cde, 0x2cde, +0x2ce0, 0x2ce0, +0x2ce2, 0x2ce2, +0x2ceb, 0x2ceb, +0x2ced, 0x2ced, +0x2cf2, 0x2cf2, +0xa640, 0xa640, +0xa642, 0xa642, +0xa644, 0xa644, +0xa646, 0xa646, +0xa648, 0xa648, +0xa64a, 0xa64a, +0xa64c, 0xa64c, +0xa64e, 0xa64e, +0xa650, 0xa650, +0xa652, 0xa652, +0xa654, 0xa654, +0xa656, 0xa656, +0xa658, 0xa658, +0xa65a, 0xa65a, +0xa65c, 0xa65c, +0xa65e, 0xa65e, +0xa660, 0xa660, +0xa662, 0xa662, +0xa664, 0xa664, +0xa666, 0xa666, +0xa668, 0xa668, +0xa66a, 0xa66a, +0xa66c, 0xa66c, +0xa680, 0xa680, +0xa682, 0xa682, +0xa684, 0xa684, +0xa686, 0xa686, +0xa688, 0xa688, +0xa68a, 0xa68a, +0xa68c, 0xa68c, +0xa68e, 0xa68e, +0xa690, 0xa690, +0xa692, 0xa692, +0xa694, 0xa694, +0xa696, 0xa696, +0xa698, 0xa698, +0xa69a, 0xa69a, +0xa722, 0xa722, +0xa724, 0xa724, +0xa726, 0xa726, +0xa728, 0xa728, +0xa72a, 0xa72a, +0xa72c, 0xa72c, +0xa72e, 0xa72e, +0xa732, 0xa732, +0xa734, 0xa734, +0xa736, 0xa736, +0xa738, 0xa738, +0xa73a, 0xa73a, +0xa73c, 0xa73c, +0xa73e, 0xa73e, +0xa740, 0xa740, +0xa742, 0xa742, +0xa744, 0xa744, +0xa746, 0xa746, +0xa748, 0xa748, +0xa74a, 0xa74a, +0xa74c, 0xa74c, +0xa74e, 0xa74e, +0xa750, 0xa750, +0xa752, 0xa752, +0xa754, 0xa754, +0xa756, 0xa756, +0xa758, 0xa758, +0xa75a, 0xa75a, +0xa75c, 0xa75c, +0xa75e, 0xa75e, +0xa760, 0xa760, +0xa762, 0xa762, +0xa764, 0xa764, +0xa766, 0xa766, +0xa768, 0xa768, +0xa76a, 0xa76a, +0xa76c, 0xa76c, +0xa76e, 0xa76e, +0xa779, 0xa779, +0xa77b, 0xa77b, +0xa77d, 0xa77e, +0xa780, 0xa780, +0xa782, 0xa782, +0xa784, 0xa784, +0xa786, 0xa786, +0xa78b, 0xa78b, +0xa78d, 0xa78d, +0xa790, 0xa790, +0xa792, 0xa792, +0xa796, 0xa796, +0xa798, 0xa798, +0xa79a, 0xa79a, +0xa79c, 0xa79c, +0xa79e, 0xa79e, +0xa7a0, 0xa7a0, +0xa7a2, 0xa7a2, +0xa7a4, 0xa7a4, +0xa7a6, 0xa7a6, +0xa7a8, 0xa7a8, +0xa7aa, 0xa7ad, +0xa7b0, 0xa7b4, +0xa7b6, 0xa7b6, +0xff21, 0xff3a, +0x10400, 0x10427, +0x10c80, 0x10cb2, +0x118a0, 0x118bf, +}; /* END of CR_Changes_When_Lowercased */ + +/* PROPERTY: 'Changes_When_Titlecased': Derived Property */ +static const OnigCodePoint +CR_Changes_When_Titlecased[] = { 606, +0x0061, 0x007a, +0x00b5, 0x00b5, +0x00df, 0x00f6, +0x00f8, 0x00ff, +0x0101, 0x0101, +0x0103, 0x0103, +0x0105, 0x0105, +0x0107, 0x0107, +0x0109, 0x0109, +0x010b, 0x010b, +0x010d, 0x010d, +0x010f, 0x010f, +0x0111, 0x0111, +0x0113, 0x0113, +0x0115, 0x0115, +0x0117, 0x0117, +0x0119, 0x0119, +0x011b, 0x011b, +0x011d, 0x011d, +0x011f, 0x011f, +0x0121, 0x0121, +0x0123, 0x0123, +0x0125, 0x0125, +0x0127, 0x0127, +0x0129, 0x0129, +0x012b, 0x012b, +0x012d, 0x012d, +0x012f, 0x012f, +0x0131, 0x0131, +0x0133, 0x0133, +0x0135, 0x0135, +0x0137, 0x0137, +0x013a, 0x013a, +0x013c, 0x013c, +0x013e, 0x013e, +0x0140, 0x0140, +0x0142, 0x0142, +0x0144, 0x0144, +0x0146, 0x0146, +0x0148, 0x0149, +0x014b, 0x014b, +0x014d, 0x014d, +0x014f, 0x014f, +0x0151, 0x0151, +0x0153, 0x0153, +0x0155, 0x0155, +0x0157, 0x0157, +0x0159, 0x0159, +0x015b, 0x015b, +0x015d, 0x015d, +0x015f, 0x015f, +0x0161, 0x0161, +0x0163, 0x0163, +0x0165, 0x0165, +0x0167, 0x0167, +0x0169, 0x0169, +0x016b, 0x016b, +0x016d, 0x016d, +0x016f, 0x016f, +0x0171, 0x0171, +0x0173, 0x0173, +0x0175, 0x0175, +0x0177, 0x0177, +0x017a, 0x017a, +0x017c, 0x017c, +0x017e, 0x0180, +0x0183, 0x0183, +0x0185, 0x0185, +0x0188, 0x0188, +0x018c, 0x018c, +0x0192, 0x0192, +0x0195, 0x0195, +0x0199, 0x019a, +0x019e, 0x019e, +0x01a1, 0x01a1, +0x01a3, 0x01a3, +0x01a5, 0x01a5, +0x01a8, 0x01a8, +0x01ad, 0x01ad, +0x01b0, 0x01b0, +0x01b4, 0x01b4, +0x01b6, 0x01b6, +0x01b9, 0x01b9, +0x01bd, 0x01bd, +0x01bf, 0x01bf, +0x01c4, 0x01c4, +0x01c6, 0x01c7, +0x01c9, 0x01ca, +0x01cc, 0x01cc, +0x01ce, 0x01ce, +0x01d0, 0x01d0, +0x01d2, 0x01d2, +0x01d4, 0x01d4, +0x01d6, 0x01d6, +0x01d8, 0x01d8, +0x01da, 0x01da, +0x01dc, 0x01dd, +0x01df, 0x01df, +0x01e1, 0x01e1, +0x01e3, 0x01e3, +0x01e5, 0x01e5, +0x01e7, 0x01e7, +0x01e9, 0x01e9, +0x01eb, 0x01eb, +0x01ed, 0x01ed, +0x01ef, 0x01f1, +0x01f3, 0x01f3, +0x01f5, 0x01f5, +0x01f9, 0x01f9, +0x01fb, 0x01fb, +0x01fd, 0x01fd, +0x01ff, 0x01ff, +0x0201, 0x0201, +0x0203, 0x0203, +0x0205, 0x0205, +0x0207, 0x0207, +0x0209, 0x0209, +0x020b, 0x020b, +0x020d, 0x020d, +0x020f, 0x020f, +0x0211, 0x0211, +0x0213, 0x0213, +0x0215, 0x0215, +0x0217, 0x0217, +0x0219, 0x0219, +0x021b, 0x021b, +0x021d, 0x021d, +0x021f, 0x021f, +0x0223, 0x0223, +0x0225, 0x0225, +0x0227, 0x0227, +0x0229, 0x0229, +0x022b, 0x022b, +0x022d, 0x022d, +0x022f, 0x022f, +0x0231, 0x0231, +0x0233, 0x0233, +0x023c, 0x023c, +0x023f, 0x0240, +0x0242, 0x0242, +0x0247, 0x0247, +0x0249, 0x0249, +0x024b, 0x024b, +0x024d, 0x024d, +0x024f, 0x0254, +0x0256, 0x0257, +0x0259, 0x0259, +0x025b, 0x025c, +0x0260, 0x0261, +0x0263, 0x0263, +0x0265, 0x0266, +0x0268, 0x0269, +0x026b, 0x026c, +0x026f, 0x026f, +0x0271, 0x0272, +0x0275, 0x0275, +0x027d, 0x027d, +0x0280, 0x0280, +0x0283, 0x0283, +0x0287, 0x028c, +0x0292, 0x0292, +0x029d, 0x029e, +0x0345, 0x0345, +0x0371, 0x0371, +0x0373, 0x0373, +0x0377, 0x0377, +0x037b, 0x037d, +0x0390, 0x0390, +0x03ac, 0x03ce, +0x03d0, 0x03d1, +0x03d5, 0x03d7, +0x03d9, 0x03d9, +0x03db, 0x03db, +0x03dd, 0x03dd, +0x03df, 0x03df, +0x03e1, 0x03e1, +0x03e3, 0x03e3, +0x03e5, 0x03e5, +0x03e7, 0x03e7, +0x03e9, 0x03e9, +0x03eb, 0x03eb, +0x03ed, 0x03ed, +0x03ef, 0x03f3, +0x03f5, 0x03f5, +0x03f8, 0x03f8, +0x03fb, 0x03fb, +0x0430, 0x045f, +0x0461, 0x0461, +0x0463, 0x0463, +0x0465, 0x0465, +0x0467, 0x0467, +0x0469, 0x0469, +0x046b, 0x046b, +0x046d, 0x046d, +0x046f, 0x046f, +0x0471, 0x0471, +0x0473, 0x0473, +0x0475, 0x0475, +0x0477, 0x0477, +0x0479, 0x0479, +0x047b, 0x047b, +0x047d, 0x047d, +0x047f, 0x047f, +0x0481, 0x0481, +0x048b, 0x048b, +0x048d, 0x048d, +0x048f, 0x048f, +0x0491, 0x0491, +0x0493, 0x0493, +0x0495, 0x0495, +0x0497, 0x0497, +0x0499, 0x0499, +0x049b, 0x049b, +0x049d, 0x049d, +0x049f, 0x049f, +0x04a1, 0x04a1, +0x04a3, 0x04a3, +0x04a5, 0x04a5, +0x04a7, 0x04a7, +0x04a9, 0x04a9, +0x04ab, 0x04ab, +0x04ad, 0x04ad, +0x04af, 0x04af, +0x04b1, 0x04b1, +0x04b3, 0x04b3, +0x04b5, 0x04b5, +0x04b7, 0x04b7, +0x04b9, 0x04b9, +0x04bb, 0x04bb, +0x04bd, 0x04bd, +0x04bf, 0x04bf, +0x04c2, 0x04c2, +0x04c4, 0x04c4, +0x04c6, 0x04c6, +0x04c8, 0x04c8, +0x04ca, 0x04ca, +0x04cc, 0x04cc, +0x04ce, 0x04cf, +0x04d1, 0x04d1, +0x04d3, 0x04d3, +0x04d5, 0x04d5, +0x04d7, 0x04d7, +0x04d9, 0x04d9, +0x04db, 0x04db, +0x04dd, 0x04dd, +0x04df, 0x04df, +0x04e1, 0x04e1, +0x04e3, 0x04e3, +0x04e5, 0x04e5, +0x04e7, 0x04e7, +0x04e9, 0x04e9, +0x04eb, 0x04eb, +0x04ed, 0x04ed, +0x04ef, 0x04ef, +0x04f1, 0x04f1, +0x04f3, 0x04f3, +0x04f5, 0x04f5, +0x04f7, 0x04f7, +0x04f9, 0x04f9, +0x04fb, 0x04fb, +0x04fd, 0x04fd, +0x04ff, 0x04ff, +0x0501, 0x0501, +0x0503, 0x0503, +0x0505, 0x0505, +0x0507, 0x0507, +0x0509, 0x0509, +0x050b, 0x050b, +0x050d, 0x050d, +0x050f, 0x050f, +0x0511, 0x0511, +0x0513, 0x0513, +0x0515, 0x0515, +0x0517, 0x0517, +0x0519, 0x0519, +0x051b, 0x051b, +0x051d, 0x051d, +0x051f, 0x051f, +0x0521, 0x0521, +0x0523, 0x0523, +0x0525, 0x0525, +0x0527, 0x0527, +0x0529, 0x0529, +0x052b, 0x052b, +0x052d, 0x052d, +0x052f, 0x052f, +0x0561, 0x0587, +0x13f8, 0x13fd, +0x1d79, 0x1d79, +0x1d7d, 0x1d7d, +0x1e01, 0x1e01, +0x1e03, 0x1e03, +0x1e05, 0x1e05, +0x1e07, 0x1e07, +0x1e09, 0x1e09, +0x1e0b, 0x1e0b, +0x1e0d, 0x1e0d, +0x1e0f, 0x1e0f, +0x1e11, 0x1e11, +0x1e13, 0x1e13, +0x1e15, 0x1e15, +0x1e17, 0x1e17, +0x1e19, 0x1e19, +0x1e1b, 0x1e1b, +0x1e1d, 0x1e1d, +0x1e1f, 0x1e1f, +0x1e21, 0x1e21, +0x1e23, 0x1e23, +0x1e25, 0x1e25, +0x1e27, 0x1e27, +0x1e29, 0x1e29, +0x1e2b, 0x1e2b, +0x1e2d, 0x1e2d, +0x1e2f, 0x1e2f, +0x1e31, 0x1e31, +0x1e33, 0x1e33, +0x1e35, 0x1e35, +0x1e37, 0x1e37, +0x1e39, 0x1e39, +0x1e3b, 0x1e3b, +0x1e3d, 0x1e3d, +0x1e3f, 0x1e3f, +0x1e41, 0x1e41, +0x1e43, 0x1e43, +0x1e45, 0x1e45, +0x1e47, 0x1e47, +0x1e49, 0x1e49, +0x1e4b, 0x1e4b, +0x1e4d, 0x1e4d, +0x1e4f, 0x1e4f, +0x1e51, 0x1e51, +0x1e53, 0x1e53, +0x1e55, 0x1e55, +0x1e57, 0x1e57, +0x1e59, 0x1e59, +0x1e5b, 0x1e5b, +0x1e5d, 0x1e5d, +0x1e5f, 0x1e5f, +0x1e61, 0x1e61, +0x1e63, 0x1e63, +0x1e65, 0x1e65, +0x1e67, 0x1e67, +0x1e69, 0x1e69, +0x1e6b, 0x1e6b, +0x1e6d, 0x1e6d, +0x1e6f, 0x1e6f, +0x1e71, 0x1e71, +0x1e73, 0x1e73, +0x1e75, 0x1e75, +0x1e77, 0x1e77, +0x1e79, 0x1e79, +0x1e7b, 0x1e7b, +0x1e7d, 0x1e7d, +0x1e7f, 0x1e7f, +0x1e81, 0x1e81, +0x1e83, 0x1e83, +0x1e85, 0x1e85, +0x1e87, 0x1e87, +0x1e89, 0x1e89, +0x1e8b, 0x1e8b, +0x1e8d, 0x1e8d, +0x1e8f, 0x1e8f, +0x1e91, 0x1e91, +0x1e93, 0x1e93, +0x1e95, 0x1e9b, +0x1ea1, 0x1ea1, +0x1ea3, 0x1ea3, +0x1ea5, 0x1ea5, +0x1ea7, 0x1ea7, +0x1ea9, 0x1ea9, +0x1eab, 0x1eab, +0x1ead, 0x1ead, +0x1eaf, 0x1eaf, +0x1eb1, 0x1eb1, +0x1eb3, 0x1eb3, +0x1eb5, 0x1eb5, +0x1eb7, 0x1eb7, +0x1eb9, 0x1eb9, +0x1ebb, 0x1ebb, +0x1ebd, 0x1ebd, +0x1ebf, 0x1ebf, +0x1ec1, 0x1ec1, +0x1ec3, 0x1ec3, +0x1ec5, 0x1ec5, +0x1ec7, 0x1ec7, +0x1ec9, 0x1ec9, +0x1ecb, 0x1ecb, +0x1ecd, 0x1ecd, +0x1ecf, 0x1ecf, +0x1ed1, 0x1ed1, +0x1ed3, 0x1ed3, +0x1ed5, 0x1ed5, +0x1ed7, 0x1ed7, +0x1ed9, 0x1ed9, +0x1edb, 0x1edb, +0x1edd, 0x1edd, +0x1edf, 0x1edf, +0x1ee1, 0x1ee1, +0x1ee3, 0x1ee3, +0x1ee5, 0x1ee5, +0x1ee7, 0x1ee7, +0x1ee9, 0x1ee9, +0x1eeb, 0x1eeb, +0x1eed, 0x1eed, +0x1eef, 0x1eef, +0x1ef1, 0x1ef1, +0x1ef3, 0x1ef3, +0x1ef5, 0x1ef5, +0x1ef7, 0x1ef7, +0x1ef9, 0x1ef9, +0x1efb, 0x1efb, +0x1efd, 0x1efd, +0x1eff, 0x1f07, +0x1f10, 0x1f15, +0x1f20, 0x1f27, +0x1f30, 0x1f37, +0x1f40, 0x1f45, +0x1f50, 0x1f57, +0x1f60, 0x1f67, +0x1f70, 0x1f7d, +0x1f80, 0x1f87, +0x1f90, 0x1f97, +0x1fa0, 0x1fa7, +0x1fb0, 0x1fb4, +0x1fb6, 0x1fb7, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fc7, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fd7, +0x1fe0, 0x1fe7, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ff7, +0x214e, 0x214e, +0x2170, 0x217f, +0x2184, 0x2184, +0x24d0, 0x24e9, +0x2c30, 0x2c5e, +0x2c61, 0x2c61, +0x2c65, 0x2c66, +0x2c68, 0x2c68, +0x2c6a, 0x2c6a, +0x2c6c, 0x2c6c, +0x2c73, 0x2c73, +0x2c76, 0x2c76, +0x2c81, 0x2c81, +0x2c83, 0x2c83, +0x2c85, 0x2c85, +0x2c87, 0x2c87, +0x2c89, 0x2c89, +0x2c8b, 0x2c8b, +0x2c8d, 0x2c8d, +0x2c8f, 0x2c8f, +0x2c91, 0x2c91, +0x2c93, 0x2c93, +0x2c95, 0x2c95, +0x2c97, 0x2c97, +0x2c99, 0x2c99, +0x2c9b, 0x2c9b, +0x2c9d, 0x2c9d, +0x2c9f, 0x2c9f, +0x2ca1, 0x2ca1, +0x2ca3, 0x2ca3, +0x2ca5, 0x2ca5, +0x2ca7, 0x2ca7, +0x2ca9, 0x2ca9, +0x2cab, 0x2cab, +0x2cad, 0x2cad, +0x2caf, 0x2caf, +0x2cb1, 0x2cb1, +0x2cb3, 0x2cb3, +0x2cb5, 0x2cb5, +0x2cb7, 0x2cb7, +0x2cb9, 0x2cb9, +0x2cbb, 0x2cbb, +0x2cbd, 0x2cbd, +0x2cbf, 0x2cbf, +0x2cc1, 0x2cc1, +0x2cc3, 0x2cc3, +0x2cc5, 0x2cc5, +0x2cc7, 0x2cc7, +0x2cc9, 0x2cc9, +0x2ccb, 0x2ccb, +0x2ccd, 0x2ccd, +0x2ccf, 0x2ccf, +0x2cd1, 0x2cd1, +0x2cd3, 0x2cd3, +0x2cd5, 0x2cd5, +0x2cd7, 0x2cd7, +0x2cd9, 0x2cd9, +0x2cdb, 0x2cdb, +0x2cdd, 0x2cdd, +0x2cdf, 0x2cdf, +0x2ce1, 0x2ce1, +0x2ce3, 0x2ce3, +0x2cec, 0x2cec, +0x2cee, 0x2cee, +0x2cf3, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0xa641, 0xa641, +0xa643, 0xa643, +0xa645, 0xa645, +0xa647, 0xa647, +0xa649, 0xa649, +0xa64b, 0xa64b, +0xa64d, 0xa64d, +0xa64f, 0xa64f, +0xa651, 0xa651, +0xa653, 0xa653, +0xa655, 0xa655, +0xa657, 0xa657, +0xa659, 0xa659, +0xa65b, 0xa65b, +0xa65d, 0xa65d, +0xa65f, 0xa65f, +0xa661, 0xa661, +0xa663, 0xa663, +0xa665, 0xa665, +0xa667, 0xa667, +0xa669, 0xa669, +0xa66b, 0xa66b, +0xa66d, 0xa66d, +0xa681, 0xa681, +0xa683, 0xa683, +0xa685, 0xa685, +0xa687, 0xa687, +0xa689, 0xa689, +0xa68b, 0xa68b, +0xa68d, 0xa68d, +0xa68f, 0xa68f, +0xa691, 0xa691, +0xa693, 0xa693, +0xa695, 0xa695, +0xa697, 0xa697, +0xa699, 0xa699, +0xa69b, 0xa69b, +0xa723, 0xa723, +0xa725, 0xa725, +0xa727, 0xa727, +0xa729, 0xa729, +0xa72b, 0xa72b, +0xa72d, 0xa72d, +0xa72f, 0xa72f, +0xa733, 0xa733, +0xa735, 0xa735, +0xa737, 0xa737, +0xa739, 0xa739, +0xa73b, 0xa73b, +0xa73d, 0xa73d, +0xa73f, 0xa73f, +0xa741, 0xa741, +0xa743, 0xa743, +0xa745, 0xa745, +0xa747, 0xa747, +0xa749, 0xa749, +0xa74b, 0xa74b, +0xa74d, 0xa74d, +0xa74f, 0xa74f, +0xa751, 0xa751, +0xa753, 0xa753, +0xa755, 0xa755, +0xa757, 0xa757, +0xa759, 0xa759, +0xa75b, 0xa75b, +0xa75d, 0xa75d, +0xa75f, 0xa75f, +0xa761, 0xa761, +0xa763, 0xa763, +0xa765, 0xa765, +0xa767, 0xa767, +0xa769, 0xa769, +0xa76b, 0xa76b, +0xa76d, 0xa76d, +0xa76f, 0xa76f, +0xa77a, 0xa77a, +0xa77c, 0xa77c, +0xa77f, 0xa77f, +0xa781, 0xa781, +0xa783, 0xa783, +0xa785, 0xa785, +0xa787, 0xa787, +0xa78c, 0xa78c, +0xa791, 0xa791, +0xa793, 0xa793, +0xa797, 0xa797, +0xa799, 0xa799, +0xa79b, 0xa79b, +0xa79d, 0xa79d, +0xa79f, 0xa79f, +0xa7a1, 0xa7a1, +0xa7a3, 0xa7a3, +0xa7a5, 0xa7a5, +0xa7a7, 0xa7a7, +0xa7a9, 0xa7a9, +0xa7b5, 0xa7b5, +0xa7b7, 0xa7b7, +0xab53, 0xab53, +0xab70, 0xabbf, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xff41, 0xff5a, +0x10428, 0x1044f, +0x10cc0, 0x10cf2, +0x118c0, 0x118df, +}; /* END of CR_Changes_When_Titlecased */ + +/* PROPERTY: 'Changes_When_Uppercased': Derived Property */ +static const OnigCodePoint +CR_Changes_When_Uppercased[] = { 605, +0x0061, 0x007a, +0x00b5, 0x00b5, +0x00df, 0x00f6, +0x00f8, 0x00ff, +0x0101, 0x0101, +0x0103, 0x0103, +0x0105, 0x0105, +0x0107, 0x0107, +0x0109, 0x0109, +0x010b, 0x010b, +0x010d, 0x010d, +0x010f, 0x010f, +0x0111, 0x0111, +0x0113, 0x0113, +0x0115, 0x0115, +0x0117, 0x0117, +0x0119, 0x0119, +0x011b, 0x011b, +0x011d, 0x011d, +0x011f, 0x011f, +0x0121, 0x0121, +0x0123, 0x0123, +0x0125, 0x0125, +0x0127, 0x0127, +0x0129, 0x0129, +0x012b, 0x012b, +0x012d, 0x012d, +0x012f, 0x012f, +0x0131, 0x0131, +0x0133, 0x0133, +0x0135, 0x0135, +0x0137, 0x0137, +0x013a, 0x013a, +0x013c, 0x013c, +0x013e, 0x013e, +0x0140, 0x0140, +0x0142, 0x0142, +0x0144, 0x0144, +0x0146, 0x0146, +0x0148, 0x0149, +0x014b, 0x014b, +0x014d, 0x014d, +0x014f, 0x014f, +0x0151, 0x0151, +0x0153, 0x0153, +0x0155, 0x0155, +0x0157, 0x0157, +0x0159, 0x0159, +0x015b, 0x015b, +0x015d, 0x015d, +0x015f, 0x015f, +0x0161, 0x0161, +0x0163, 0x0163, +0x0165, 0x0165, +0x0167, 0x0167, +0x0169, 0x0169, +0x016b, 0x016b, +0x016d, 0x016d, +0x016f, 0x016f, +0x0171, 0x0171, +0x0173, 0x0173, +0x0175, 0x0175, +0x0177, 0x0177, +0x017a, 0x017a, +0x017c, 0x017c, +0x017e, 0x0180, +0x0183, 0x0183, +0x0185, 0x0185, +0x0188, 0x0188, +0x018c, 0x018c, +0x0192, 0x0192, +0x0195, 0x0195, +0x0199, 0x019a, +0x019e, 0x019e, +0x01a1, 0x01a1, +0x01a3, 0x01a3, +0x01a5, 0x01a5, +0x01a8, 0x01a8, +0x01ad, 0x01ad, +0x01b0, 0x01b0, +0x01b4, 0x01b4, +0x01b6, 0x01b6, +0x01b9, 0x01b9, +0x01bd, 0x01bd, +0x01bf, 0x01bf, +0x01c5, 0x01c6, +0x01c8, 0x01c9, +0x01cb, 0x01cc, +0x01ce, 0x01ce, +0x01d0, 0x01d0, +0x01d2, 0x01d2, +0x01d4, 0x01d4, +0x01d6, 0x01d6, +0x01d8, 0x01d8, +0x01da, 0x01da, +0x01dc, 0x01dd, +0x01df, 0x01df, +0x01e1, 0x01e1, +0x01e3, 0x01e3, +0x01e5, 0x01e5, +0x01e7, 0x01e7, +0x01e9, 0x01e9, +0x01eb, 0x01eb, +0x01ed, 0x01ed, +0x01ef, 0x01f0, +0x01f2, 0x01f3, +0x01f5, 0x01f5, +0x01f9, 0x01f9, +0x01fb, 0x01fb, +0x01fd, 0x01fd, +0x01ff, 0x01ff, +0x0201, 0x0201, +0x0203, 0x0203, +0x0205, 0x0205, +0x0207, 0x0207, +0x0209, 0x0209, +0x020b, 0x020b, +0x020d, 0x020d, +0x020f, 0x020f, +0x0211, 0x0211, +0x0213, 0x0213, +0x0215, 0x0215, +0x0217, 0x0217, +0x0219, 0x0219, +0x021b, 0x021b, +0x021d, 0x021d, +0x021f, 0x021f, +0x0223, 0x0223, +0x0225, 0x0225, +0x0227, 0x0227, +0x0229, 0x0229, +0x022b, 0x022b, +0x022d, 0x022d, +0x022f, 0x022f, +0x0231, 0x0231, +0x0233, 0x0233, +0x023c, 0x023c, +0x023f, 0x0240, +0x0242, 0x0242, +0x0247, 0x0247, +0x0249, 0x0249, +0x024b, 0x024b, +0x024d, 0x024d, +0x024f, 0x0254, +0x0256, 0x0257, +0x0259, 0x0259, +0x025b, 0x025c, +0x0260, 0x0261, +0x0263, 0x0263, +0x0265, 0x0266, +0x0268, 0x0269, +0x026b, 0x026c, +0x026f, 0x026f, +0x0271, 0x0272, +0x0275, 0x0275, +0x027d, 0x027d, +0x0280, 0x0280, +0x0283, 0x0283, +0x0287, 0x028c, +0x0292, 0x0292, +0x029d, 0x029e, +0x0345, 0x0345, +0x0371, 0x0371, +0x0373, 0x0373, +0x0377, 0x0377, +0x037b, 0x037d, +0x0390, 0x0390, +0x03ac, 0x03ce, +0x03d0, 0x03d1, +0x03d5, 0x03d7, +0x03d9, 0x03d9, +0x03db, 0x03db, +0x03dd, 0x03dd, +0x03df, 0x03df, +0x03e1, 0x03e1, +0x03e3, 0x03e3, +0x03e5, 0x03e5, +0x03e7, 0x03e7, +0x03e9, 0x03e9, +0x03eb, 0x03eb, +0x03ed, 0x03ed, +0x03ef, 0x03f3, +0x03f5, 0x03f5, +0x03f8, 0x03f8, +0x03fb, 0x03fb, +0x0430, 0x045f, +0x0461, 0x0461, +0x0463, 0x0463, +0x0465, 0x0465, +0x0467, 0x0467, +0x0469, 0x0469, +0x046b, 0x046b, +0x046d, 0x046d, +0x046f, 0x046f, +0x0471, 0x0471, +0x0473, 0x0473, +0x0475, 0x0475, +0x0477, 0x0477, +0x0479, 0x0479, +0x047b, 0x047b, +0x047d, 0x047d, +0x047f, 0x047f, +0x0481, 0x0481, +0x048b, 0x048b, +0x048d, 0x048d, +0x048f, 0x048f, +0x0491, 0x0491, +0x0493, 0x0493, +0x0495, 0x0495, +0x0497, 0x0497, +0x0499, 0x0499, +0x049b, 0x049b, +0x049d, 0x049d, +0x049f, 0x049f, +0x04a1, 0x04a1, +0x04a3, 0x04a3, +0x04a5, 0x04a5, +0x04a7, 0x04a7, +0x04a9, 0x04a9, +0x04ab, 0x04ab, +0x04ad, 0x04ad, +0x04af, 0x04af, +0x04b1, 0x04b1, +0x04b3, 0x04b3, +0x04b5, 0x04b5, +0x04b7, 0x04b7, +0x04b9, 0x04b9, +0x04bb, 0x04bb, +0x04bd, 0x04bd, +0x04bf, 0x04bf, +0x04c2, 0x04c2, +0x04c4, 0x04c4, +0x04c6, 0x04c6, +0x04c8, 0x04c8, +0x04ca, 0x04ca, +0x04cc, 0x04cc, +0x04ce, 0x04cf, +0x04d1, 0x04d1, +0x04d3, 0x04d3, +0x04d5, 0x04d5, +0x04d7, 0x04d7, +0x04d9, 0x04d9, +0x04db, 0x04db, +0x04dd, 0x04dd, +0x04df, 0x04df, +0x04e1, 0x04e1, +0x04e3, 0x04e3, +0x04e5, 0x04e5, +0x04e7, 0x04e7, +0x04e9, 0x04e9, +0x04eb, 0x04eb, +0x04ed, 0x04ed, +0x04ef, 0x04ef, +0x04f1, 0x04f1, +0x04f3, 0x04f3, +0x04f5, 0x04f5, +0x04f7, 0x04f7, +0x04f9, 0x04f9, +0x04fb, 0x04fb, +0x04fd, 0x04fd, +0x04ff, 0x04ff, +0x0501, 0x0501, +0x0503, 0x0503, +0x0505, 0x0505, +0x0507, 0x0507, +0x0509, 0x0509, +0x050b, 0x050b, +0x050d, 0x050d, +0x050f, 0x050f, +0x0511, 0x0511, +0x0513, 0x0513, +0x0515, 0x0515, +0x0517, 0x0517, +0x0519, 0x0519, +0x051b, 0x051b, +0x051d, 0x051d, +0x051f, 0x051f, +0x0521, 0x0521, +0x0523, 0x0523, +0x0525, 0x0525, +0x0527, 0x0527, +0x0529, 0x0529, +0x052b, 0x052b, +0x052d, 0x052d, +0x052f, 0x052f, +0x0561, 0x0587, +0x13f8, 0x13fd, +0x1d79, 0x1d79, +0x1d7d, 0x1d7d, +0x1e01, 0x1e01, +0x1e03, 0x1e03, +0x1e05, 0x1e05, +0x1e07, 0x1e07, +0x1e09, 0x1e09, +0x1e0b, 0x1e0b, +0x1e0d, 0x1e0d, +0x1e0f, 0x1e0f, +0x1e11, 0x1e11, +0x1e13, 0x1e13, +0x1e15, 0x1e15, +0x1e17, 0x1e17, +0x1e19, 0x1e19, +0x1e1b, 0x1e1b, +0x1e1d, 0x1e1d, +0x1e1f, 0x1e1f, +0x1e21, 0x1e21, +0x1e23, 0x1e23, +0x1e25, 0x1e25, +0x1e27, 0x1e27, +0x1e29, 0x1e29, +0x1e2b, 0x1e2b, +0x1e2d, 0x1e2d, +0x1e2f, 0x1e2f, +0x1e31, 0x1e31, +0x1e33, 0x1e33, +0x1e35, 0x1e35, +0x1e37, 0x1e37, +0x1e39, 0x1e39, +0x1e3b, 0x1e3b, +0x1e3d, 0x1e3d, +0x1e3f, 0x1e3f, +0x1e41, 0x1e41, +0x1e43, 0x1e43, +0x1e45, 0x1e45, +0x1e47, 0x1e47, +0x1e49, 0x1e49, +0x1e4b, 0x1e4b, +0x1e4d, 0x1e4d, +0x1e4f, 0x1e4f, +0x1e51, 0x1e51, +0x1e53, 0x1e53, +0x1e55, 0x1e55, +0x1e57, 0x1e57, +0x1e59, 0x1e59, +0x1e5b, 0x1e5b, +0x1e5d, 0x1e5d, +0x1e5f, 0x1e5f, +0x1e61, 0x1e61, +0x1e63, 0x1e63, +0x1e65, 0x1e65, +0x1e67, 0x1e67, +0x1e69, 0x1e69, +0x1e6b, 0x1e6b, +0x1e6d, 0x1e6d, +0x1e6f, 0x1e6f, +0x1e71, 0x1e71, +0x1e73, 0x1e73, +0x1e75, 0x1e75, +0x1e77, 0x1e77, +0x1e79, 0x1e79, +0x1e7b, 0x1e7b, +0x1e7d, 0x1e7d, +0x1e7f, 0x1e7f, +0x1e81, 0x1e81, +0x1e83, 0x1e83, +0x1e85, 0x1e85, +0x1e87, 0x1e87, +0x1e89, 0x1e89, +0x1e8b, 0x1e8b, +0x1e8d, 0x1e8d, +0x1e8f, 0x1e8f, +0x1e91, 0x1e91, +0x1e93, 0x1e93, +0x1e95, 0x1e9b, +0x1ea1, 0x1ea1, +0x1ea3, 0x1ea3, +0x1ea5, 0x1ea5, +0x1ea7, 0x1ea7, +0x1ea9, 0x1ea9, +0x1eab, 0x1eab, +0x1ead, 0x1ead, +0x1eaf, 0x1eaf, +0x1eb1, 0x1eb1, +0x1eb3, 0x1eb3, +0x1eb5, 0x1eb5, +0x1eb7, 0x1eb7, +0x1eb9, 0x1eb9, +0x1ebb, 0x1ebb, +0x1ebd, 0x1ebd, +0x1ebf, 0x1ebf, +0x1ec1, 0x1ec1, +0x1ec3, 0x1ec3, +0x1ec5, 0x1ec5, +0x1ec7, 0x1ec7, +0x1ec9, 0x1ec9, +0x1ecb, 0x1ecb, +0x1ecd, 0x1ecd, +0x1ecf, 0x1ecf, +0x1ed1, 0x1ed1, +0x1ed3, 0x1ed3, +0x1ed5, 0x1ed5, +0x1ed7, 0x1ed7, +0x1ed9, 0x1ed9, +0x1edb, 0x1edb, +0x1edd, 0x1edd, +0x1edf, 0x1edf, +0x1ee1, 0x1ee1, +0x1ee3, 0x1ee3, +0x1ee5, 0x1ee5, +0x1ee7, 0x1ee7, +0x1ee9, 0x1ee9, +0x1eeb, 0x1eeb, +0x1eed, 0x1eed, +0x1eef, 0x1eef, +0x1ef1, 0x1ef1, +0x1ef3, 0x1ef3, +0x1ef5, 0x1ef5, +0x1ef7, 0x1ef7, +0x1ef9, 0x1ef9, +0x1efb, 0x1efb, +0x1efd, 0x1efd, +0x1eff, 0x1f07, +0x1f10, 0x1f15, +0x1f20, 0x1f27, +0x1f30, 0x1f37, +0x1f40, 0x1f45, +0x1f50, 0x1f57, +0x1f60, 0x1f67, +0x1f70, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fb7, +0x1fbc, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fc7, +0x1fcc, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fd7, +0x1fe0, 0x1fe7, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ff7, +0x1ffc, 0x1ffc, +0x214e, 0x214e, +0x2170, 0x217f, +0x2184, 0x2184, +0x24d0, 0x24e9, +0x2c30, 0x2c5e, +0x2c61, 0x2c61, +0x2c65, 0x2c66, +0x2c68, 0x2c68, +0x2c6a, 0x2c6a, +0x2c6c, 0x2c6c, +0x2c73, 0x2c73, +0x2c76, 0x2c76, +0x2c81, 0x2c81, +0x2c83, 0x2c83, +0x2c85, 0x2c85, +0x2c87, 0x2c87, +0x2c89, 0x2c89, +0x2c8b, 0x2c8b, +0x2c8d, 0x2c8d, +0x2c8f, 0x2c8f, +0x2c91, 0x2c91, +0x2c93, 0x2c93, +0x2c95, 0x2c95, +0x2c97, 0x2c97, +0x2c99, 0x2c99, +0x2c9b, 0x2c9b, +0x2c9d, 0x2c9d, +0x2c9f, 0x2c9f, +0x2ca1, 0x2ca1, +0x2ca3, 0x2ca3, +0x2ca5, 0x2ca5, +0x2ca7, 0x2ca7, +0x2ca9, 0x2ca9, +0x2cab, 0x2cab, +0x2cad, 0x2cad, +0x2caf, 0x2caf, +0x2cb1, 0x2cb1, +0x2cb3, 0x2cb3, +0x2cb5, 0x2cb5, +0x2cb7, 0x2cb7, +0x2cb9, 0x2cb9, +0x2cbb, 0x2cbb, +0x2cbd, 0x2cbd, +0x2cbf, 0x2cbf, +0x2cc1, 0x2cc1, +0x2cc3, 0x2cc3, +0x2cc5, 0x2cc5, +0x2cc7, 0x2cc7, +0x2cc9, 0x2cc9, +0x2ccb, 0x2ccb, +0x2ccd, 0x2ccd, +0x2ccf, 0x2ccf, +0x2cd1, 0x2cd1, +0x2cd3, 0x2cd3, +0x2cd5, 0x2cd5, +0x2cd7, 0x2cd7, +0x2cd9, 0x2cd9, +0x2cdb, 0x2cdb, +0x2cdd, 0x2cdd, +0x2cdf, 0x2cdf, +0x2ce1, 0x2ce1, +0x2ce3, 0x2ce3, +0x2cec, 0x2cec, +0x2cee, 0x2cee, +0x2cf3, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0xa641, 0xa641, +0xa643, 0xa643, +0xa645, 0xa645, +0xa647, 0xa647, +0xa649, 0xa649, +0xa64b, 0xa64b, +0xa64d, 0xa64d, +0xa64f, 0xa64f, +0xa651, 0xa651, +0xa653, 0xa653, +0xa655, 0xa655, +0xa657, 0xa657, +0xa659, 0xa659, +0xa65b, 0xa65b, +0xa65d, 0xa65d, +0xa65f, 0xa65f, +0xa661, 0xa661, +0xa663, 0xa663, +0xa665, 0xa665, +0xa667, 0xa667, +0xa669, 0xa669, +0xa66b, 0xa66b, +0xa66d, 0xa66d, +0xa681, 0xa681, +0xa683, 0xa683, +0xa685, 0xa685, +0xa687, 0xa687, +0xa689, 0xa689, +0xa68b, 0xa68b, +0xa68d, 0xa68d, +0xa68f, 0xa68f, +0xa691, 0xa691, +0xa693, 0xa693, +0xa695, 0xa695, +0xa697, 0xa697, +0xa699, 0xa699, +0xa69b, 0xa69b, +0xa723, 0xa723, +0xa725, 0xa725, +0xa727, 0xa727, +0xa729, 0xa729, +0xa72b, 0xa72b, +0xa72d, 0xa72d, +0xa72f, 0xa72f, +0xa733, 0xa733, +0xa735, 0xa735, +0xa737, 0xa737, +0xa739, 0xa739, +0xa73b, 0xa73b, +0xa73d, 0xa73d, +0xa73f, 0xa73f, +0xa741, 0xa741, +0xa743, 0xa743, +0xa745, 0xa745, +0xa747, 0xa747, +0xa749, 0xa749, +0xa74b, 0xa74b, +0xa74d, 0xa74d, +0xa74f, 0xa74f, +0xa751, 0xa751, +0xa753, 0xa753, +0xa755, 0xa755, +0xa757, 0xa757, +0xa759, 0xa759, +0xa75b, 0xa75b, +0xa75d, 0xa75d, +0xa75f, 0xa75f, +0xa761, 0xa761, +0xa763, 0xa763, +0xa765, 0xa765, +0xa767, 0xa767, +0xa769, 0xa769, +0xa76b, 0xa76b, +0xa76d, 0xa76d, +0xa76f, 0xa76f, +0xa77a, 0xa77a, +0xa77c, 0xa77c, +0xa77f, 0xa77f, +0xa781, 0xa781, +0xa783, 0xa783, +0xa785, 0xa785, +0xa787, 0xa787, +0xa78c, 0xa78c, +0xa791, 0xa791, +0xa793, 0xa793, +0xa797, 0xa797, +0xa799, 0xa799, +0xa79b, 0xa79b, +0xa79d, 0xa79d, +0xa79f, 0xa79f, +0xa7a1, 0xa7a1, +0xa7a3, 0xa7a3, +0xa7a5, 0xa7a5, +0xa7a7, 0xa7a7, +0xa7a9, 0xa7a9, +0xa7b5, 0xa7b5, +0xa7b7, 0xa7b7, +0xab53, 0xab53, +0xab70, 0xabbf, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xff41, 0xff5a, +0x10428, 0x1044f, +0x10cc0, 0x10cf2, +0x118c0, 0x118df, +}; /* END of CR_Changes_When_Uppercased */ + +/* PROPERTY: 'Cherokee': Script */ +static const OnigCodePoint +CR_Cherokee[] = { 3, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0xab70, 0xabbf, +}; /* END of CR_Cherokee */ +  /* PROPERTY: 'Cn': General Category */  static const OnigCodePoint  CR_Cn[] = { 613, @@ -6662,12 +9918,3243 @@ CR_Co[] = { 3,  0x100000, 0x10fffd,  }; /* END of CR_Co */ +/* PROPERTY: 'Common': Script */ +static const OnigCodePoint +CR_Common[] = { 161, +0x0000, 0x0040, +0x005b, 0x0060, +0x007b, 0x00a9, +0x00ab, 0x00b9, +0x00bb, 0x00bf, +0x00d7, 0x00d7, +0x00f7, 0x00f7, +0x02b9, 0x02df, +0x02e5, 0x02e9, +0x02ec, 0x02ff, +0x0374, 0x0374, +0x037e, 0x037e, +0x0385, 0x0385, +0x0387, 0x0387, +0x0589, 0x0589, +0x0605, 0x0605, +0x060c, 0x060c, +0x061b, 0x061c, +0x061f, 0x061f, +0x0640, 0x0640, +0x06dd, 0x06dd, +0x0964, 0x0965, +0x0e3f, 0x0e3f, +0x0fd5, 0x0fd8, +0x10fb, 0x10fb, +0x16eb, 0x16ed, +0x1735, 0x1736, +0x1802, 0x1803, +0x1805, 0x1805, +0x1cd3, 0x1cd3, +0x1ce1, 0x1ce1, +0x1ce9, 0x1cec, +0x1cee, 0x1cf3, +0x1cf5, 0x1cf6, +0x2000, 0x200b, +0x200e, 0x2064, +0x2066, 0x2070, +0x2074, 0x207e, +0x2080, 0x208e, +0x20a0, 0x20be, +0x2100, 0x2125, +0x2127, 0x2129, +0x212c, 0x2131, +0x2133, 0x214d, +0x214f, 0x215f, +0x2189, 0x218b, +0x2190, 0x23fa, +0x2400, 0x2426, +0x2440, 0x244a, +0x2460, 0x27ff, +0x2900, 0x2b73, +0x2b76, 0x2b95, +0x2b98, 0x2bb9, +0x2bbd, 0x2bc8, +0x2bca, 0x2bd1, +0x2bec, 0x2bef, +0x2e00, 0x2e42, +0x2ff0, 0x2ffb, +0x3000, 0x3004, +0x3006, 0x3006, +0x3008, 0x3020, +0x3030, 0x3037, +0x303c, 0x303f, +0x309b, 0x309c, +0x30a0, 0x30a0, +0x30fb, 0x30fc, +0x3190, 0x319f, +0x31c0, 0x31e3, +0x3220, 0x325f, +0x327f, 0x32cf, +0x3358, 0x33ff, +0x4dc0, 0x4dff, +0xa700, 0xa721, +0xa788, 0xa78a, +0xa830, 0xa839, +0xa92e, 0xa92e, +0xa9cf, 0xa9cf, +0xab5b, 0xab5b, +0xfd3e, 0xfd3f, +0xfe10, 0xfe19, +0xfe30, 0xfe52, +0xfe54, 0xfe66, +0xfe68, 0xfe6b, +0xfeff, 0xfeff, +0xff01, 0xff20, +0xff3b, 0xff40, +0xff5b, 0xff65, +0xff70, 0xff70, +0xff9e, 0xff9f, +0xffe0, 0xffe6, +0xffe8, 0xffee, +0xfff9, 0xfffd, +0x10100, 0x10102, +0x10107, 0x10133, +0x10137, 0x1013f, +0x10190, 0x1019b, +0x101d0, 0x101fc, +0x102e1, 0x102fb, +0x1bca0, 0x1bca3, +0x1d000, 0x1d0f5, +0x1d100, 0x1d126, +0x1d129, 0x1d166, +0x1d16a, 0x1d17a, +0x1d183, 0x1d184, +0x1d18c, 0x1d1a9, +0x1d1ae, 0x1d1e8, +0x1d300, 0x1d356, +0x1d360, 0x1d371, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d7cb, +0x1d7ce, 0x1d7ff, +0x1f000, 0x1f02b, +0x1f030, 0x1f093, +0x1f0a0, 0x1f0ae, +0x1f0b1, 0x1f0bf, +0x1f0c1, 0x1f0cf, +0x1f0d1, 0x1f0f5, +0x1f100, 0x1f10c, +0x1f110, 0x1f12e, +0x1f130, 0x1f16b, +0x1f170, 0x1f19a, +0x1f1e6, 0x1f1ff, +0x1f201, 0x1f202, +0x1f210, 0x1f23a, +0x1f240, 0x1f248, +0x1f250, 0x1f251, +0x1f300, 0x1f579, +0x1f57b, 0x1f5a3, +0x1f5a5, 0x1f6d0, +0x1f6e0, 0x1f6ec, +0x1f6f0, 0x1f6f3, +0x1f700, 0x1f773, +0x1f780, 0x1f7d4, +0x1f800, 0x1f80b, +0x1f810, 0x1f847, +0x1f850, 0x1f859, +0x1f860, 0x1f887, +0x1f890, 0x1f8ad, +0x1f910, 0x1f918, +0x1f980, 0x1f984, +0x1f9c0, 0x1f9c0, +0xe0001, 0xe0001, +0xe0020, 0xe007f, +}; /* END of CR_Common */ + +/* PROPERTY: 'Coptic': Script */ +static const OnigCodePoint +CR_Coptic[] = { 3, +0x03e2, 0x03ef, +0x2c80, 0x2cf3, +0x2cf9, 0x2cff, +}; /* END of CR_Coptic */ +  /* PROPERTY: 'Cs': General Category */  static const OnigCodePoint  CR_Cs[] = { 1,  0xd800, 0xdfff,  }; /* END of CR_Cs */ +/* PROPERTY: 'Cuneiform': Script */ +static const OnigCodePoint +CR_Cuneiform[] = { 4, +0x12000, 0x12399, +0x12400, 0x1246e, +0x12470, 0x12474, +0x12480, 0x12543, +}; /* END of CR_Cuneiform */ + +/* PROPERTY: 'Cypriot': Script */ +static const OnigCodePoint +CR_Cypriot[] = { 6, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x1083f, +}; /* END of CR_Cypriot */ + +/* PROPERTY: 'Cyrillic': Script */ +static const OnigCodePoint +CR_Cyrillic[] = { 7, +0x0400, 0x0484, +0x0487, 0x052f, +0x1d2b, 0x1d2b, +0x1d78, 0x1d78, +0x2de0, 0x2dff, +0xa640, 0xa69f, +0xfe2e, 0xfe2f, +}; /* END of CR_Cyrillic */ + +/* PROPERTY: 'Dash': Binary Property */ +static const OnigCodePoint +CR_Dash[] = { 21, +0x002d, 0x002d, +0x058a, 0x058a, +0x05be, 0x05be, +0x1400, 0x1400, +0x1806, 0x1806, +0x2010, 0x2015, +0x2053, 0x2053, +0x207b, 0x207b, +0x208b, 0x208b, +0x2212, 0x2212, +0x2e17, 0x2e17, +0x2e1a, 0x2e1a, +0x2e3a, 0x2e3b, +0x2e40, 0x2e40, +0x301c, 0x301c, +0x3030, 0x3030, +0x30a0, 0x30a0, +0xfe31, 0xfe32, +0xfe58, 0xfe58, +0xfe63, 0xfe63, +0xff0d, 0xff0d, +}; /* END of CR_Dash */ + +/* PROPERTY: 'Default_Ignorable_Code_Point': Derived Property */ +static const OnigCodePoint +CR_Default_Ignorable_Code_Point[] = { 17, +0x00ad, 0x00ad, +0x034f, 0x034f, +0x061c, 0x061c, +0x115f, 0x1160, +0x17b4, 0x17b5, +0x180b, 0x180e, +0x200b, 0x200f, +0x202a, 0x202e, +0x2060, 0x206f, +0x3164, 0x3164, +0xfe00, 0xfe0f, +0xfeff, 0xfeff, +0xffa0, 0xffa0, +0xfff0, 0xfff8, +0x1bca0, 0x1bca3, +0x1d173, 0x1d17a, +0xe0000, 0xe0fff, +}; /* END of CR_Default_Ignorable_Code_Point */ + +/* PROPERTY: 'Deprecated': Binary Property */ +static const OnigCodePoint +CR_Deprecated[] = { 9, +0x0149, 0x0149, +0x0673, 0x0673, +0x0f77, 0x0f77, +0x0f79, 0x0f79, +0x17a3, 0x17a4, +0x206a, 0x206f, +0x2329, 0x232a, +0xe0001, 0xe0001, +0xe007f, 0xe007f, +}; /* END of CR_Deprecated */ + +/* PROPERTY: 'Deseret': Script */ +static const OnigCodePoint +CR_Deseret[] = { 1, +0x10400, 0x1044f, +}; /* END of CR_Deseret */ + +/* PROPERTY: 'Devanagari': Script */ +static const OnigCodePoint +CR_Devanagari[] = { 4, +0x0900, 0x0950, +0x0953, 0x0963, +0x0966, 0x097f, +0xa8e0, 0xa8fd, +}; /* END of CR_Devanagari */ + +/* PROPERTY: 'Diacritic': Binary Property */ +static const OnigCodePoint +CR_Diacritic[] = { 147, +0x005e, 0x005e, +0x0060, 0x0060, +0x00a8, 0x00a8, +0x00af, 0x00af, +0x00b4, 0x00b4, +0x00b7, 0x00b8, +0x02b0, 0x034e, +0x0350, 0x0357, +0x035d, 0x0362, +0x0374, 0x0375, +0x037a, 0x037a, +0x0384, 0x0385, +0x0483, 0x0487, +0x0559, 0x0559, +0x0591, 0x05a1, +0x05a3, 0x05bd, +0x05bf, 0x05bf, +0x05c1, 0x05c2, +0x05c4, 0x05c4, +0x064b, 0x0652, +0x0657, 0x0658, +0x06df, 0x06e0, +0x06e5, 0x06e6, +0x06ea, 0x06ec, +0x0730, 0x074a, +0x07a6, 0x07b0, +0x07eb, 0x07f5, +0x0818, 0x0819, +0x08e3, 0x08fe, +0x093c, 0x093c, +0x094d, 0x094d, +0x0951, 0x0954, +0x0971, 0x0971, +0x09bc, 0x09bc, +0x09cd, 0x09cd, +0x0a3c, 0x0a3c, +0x0a4d, 0x0a4d, +0x0abc, 0x0abc, +0x0acd, 0x0acd, +0x0b3c, 0x0b3c, +0x0b4d, 0x0b4d, +0x0bcd, 0x0bcd, +0x0c4d, 0x0c4d, +0x0cbc, 0x0cbc, +0x0ccd, 0x0ccd, +0x0d4d, 0x0d4d, +0x0dca, 0x0dca, +0x0e47, 0x0e4c, +0x0e4e, 0x0e4e, +0x0ec8, 0x0ecc, +0x0f18, 0x0f19, +0x0f35, 0x0f35, +0x0f37, 0x0f37, +0x0f39, 0x0f39, +0x0f3e, 0x0f3f, +0x0f82, 0x0f84, +0x0f86, 0x0f87, +0x0fc6, 0x0fc6, +0x1037, 0x1037, +0x1039, 0x103a, +0x1087, 0x108d, +0x108f, 0x108f, +0x109a, 0x109b, +0x17c9, 0x17d3, +0x17dd, 0x17dd, +0x1939, 0x193b, +0x1a75, 0x1a7c, +0x1a7f, 0x1a7f, +0x1ab0, 0x1abd, +0x1b34, 0x1b34, +0x1b44, 0x1b44, +0x1b6b, 0x1b73, +0x1baa, 0x1bab, +0x1c36, 0x1c37, +0x1c78, 0x1c7d, +0x1cd0, 0x1ce8, +0x1ced, 0x1ced, +0x1cf4, 0x1cf4, +0x1cf8, 0x1cf9, +0x1d2c, 0x1d6a, +0x1dc4, 0x1dcf, +0x1df5, 0x1df5, +0x1dfd, 0x1dff, +0x1fbd, 0x1fbd, +0x1fbf, 0x1fc1, +0x1fcd, 0x1fcf, +0x1fdd, 0x1fdf, +0x1fed, 0x1fef, +0x1ffd, 0x1ffe, +0x2cef, 0x2cf1, +0x2e2f, 0x2e2f, +0x302a, 0x302f, +0x3099, 0x309c, +0x30fc, 0x30fc, +0xa66f, 0xa66f, +0xa67c, 0xa67d, +0xa67f, 0xa67f, +0xa69c, 0xa69d, +0xa6f0, 0xa6f1, +0xa717, 0xa721, +0xa788, 0xa788, +0xa7f8, 0xa7f9, +0xa8c4, 0xa8c4, +0xa8e0, 0xa8f1, +0xa92b, 0xa92e, +0xa953, 0xa953, +0xa9b3, 0xa9b3, +0xa9c0, 0xa9c0, +0xa9e5, 0xa9e5, +0xaa7b, 0xaa7d, +0xaabf, 0xaac2, +0xaaf6, 0xaaf6, +0xab5b, 0xab5f, +0xabec, 0xabed, +0xfb1e, 0xfb1e, +0xfe20, 0xfe2f, +0xff3e, 0xff3e, +0xff40, 0xff40, +0xff70, 0xff70, +0xff9e, 0xff9f, +0xffe3, 0xffe3, +0x102e0, 0x102e0, +0x10ae5, 0x10ae6, +0x110b9, 0x110ba, +0x11133, 0x11134, +0x11173, 0x11173, +0x111c0, 0x111c0, +0x111ca, 0x111cc, +0x11235, 0x11236, +0x112e9, 0x112ea, +0x1133c, 0x1133c, +0x1134d, 0x1134d, +0x11366, 0x1136c, +0x11370, 0x11374, +0x114c2, 0x114c3, +0x115bf, 0x115c0, +0x1163f, 0x1163f, +0x116b6, 0x116b7, +0x1172b, 0x1172b, +0x16af0, 0x16af4, +0x16f8f, 0x16f9f, +0x1d167, 0x1d169, +0x1d16d, 0x1d172, +0x1d17b, 0x1d182, +0x1d185, 0x1d18b, +0x1d1aa, 0x1d1ad, +0x1e8d0, 0x1e8d6, +}; /* END of CR_Diacritic */ + +/* PROPERTY: 'Duployan': Script */ +static const OnigCodePoint +CR_Duployan[] = { 5, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1bc9c, 0x1bc9f, +}; /* END of CR_Duployan */ + +/* PROPERTY: 'Egyptian_Hieroglyphs': Script */ +static const OnigCodePoint +CR_Egyptian_Hieroglyphs[] = { 1, +0x13000, 0x1342e, +}; /* END of CR_Egyptian_Hieroglyphs */ + +/* PROPERTY: 'Elbasan': Script */ +static const OnigCodePoint +CR_Elbasan[] = { 1, +0x10500, 0x10527, +}; /* END of CR_Elbasan */ + +/* PROPERTY: 'Ethiopic': Script */ +static const OnigCodePoint +CR_Ethiopic[] = { 32, +0x1200, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x135d, 0x137c, +0x1380, 0x1399, +0x2d80, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +}; /* END of CR_Ethiopic */ + +/* PROPERTY: 'Extender': Binary Property */ +static const OnigCodePoint +CR_Extender[] = { 26, +0x00b7, 0x00b7, +0x02d0, 0x02d1, +0x0640, 0x0640, +0x07fa, 0x07fa, +0x0e46, 0x0e46, +0x0ec6, 0x0ec6, +0x180a, 0x180a, +0x1843, 0x1843, +0x1aa7, 0x1aa7, +0x1c36, 0x1c36, +0x1c7b, 0x1c7b, +0x3005, 0x3005, +0x3031, 0x3035, +0x309d, 0x309e, +0x30fc, 0x30fe, +0xa015, 0xa015, +0xa60c, 0xa60c, +0xa9cf, 0xa9cf, +0xa9e6, 0xa9e6, +0xaa70, 0xaa70, +0xaadd, 0xaadd, +0xaaf3, 0xaaf4, +0xff70, 0xff70, +0x1135d, 0x1135d, +0x115c6, 0x115c8, +0x16b42, 0x16b43, +}; /* END of CR_Extender */ + +/* PROPERTY: 'Georgian': Script */ +static const OnigCodePoint +CR_Georgian[] = { 8, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x10fa, +0x10fc, 0x10ff, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +}; /* END of CR_Georgian */ + +/* PROPERTY: 'Glagolitic': Script */ +static const OnigCodePoint +CR_Glagolitic[] = { 2, +0x2c00, 0x2c2e, +0x2c30, 0x2c5e, +}; /* END of CR_Glagolitic */ + +/* PROPERTY: 'Gothic': Script */ +static const OnigCodePoint +CR_Gothic[] = { 1, +0x10330, 0x1034a, +}; /* END of CR_Gothic */ + +/* PROPERTY: 'Grantha': Script */ +static const OnigCodePoint +CR_Grantha[] = { 15, +0x11300, 0x11303, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133c, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134d, +0x11350, 0x11350, +0x11357, 0x11357, +0x1135d, 0x11363, +0x11366, 0x1136c, +0x11370, 0x11374, +}; /* END of CR_Grantha */ + +/* PROPERTY: 'Grapheme_Base': Derived Property */ +static const OnigCodePoint +CR_Grapheme_Base[] = { 743, +0x0020, 0x007e, +0x00a0, 0x00ac, +0x00ae, 0x02ff, +0x0370, 0x0377, +0x037a, 0x037f, +0x0384, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x0482, +0x048a, 0x052f, +0x0531, 0x0556, +0x0559, 0x055f, +0x0561, 0x0587, +0x0589, 0x058a, +0x058d, 0x058f, +0x05be, 0x05be, +0x05c0, 0x05c0, +0x05c3, 0x05c3, +0x05c6, 0x05c6, +0x05d0, 0x05ea, +0x05f0, 0x05f4, +0x0606, 0x060f, +0x061b, 0x061b, +0x061e, 0x064a, +0x0660, 0x066f, +0x0671, 0x06d5, +0x06de, 0x06de, +0x06e5, 0x06e6, +0x06e9, 0x06e9, +0x06ee, 0x070d, +0x0710, 0x0710, +0x0712, 0x072f, +0x074d, 0x07a5, +0x07b1, 0x07b1, +0x07c0, 0x07ea, +0x07f4, 0x07fa, +0x0800, 0x0815, +0x081a, 0x081a, +0x0824, 0x0824, +0x0828, 0x0828, +0x0830, 0x083e, +0x0840, 0x0858, +0x085e, 0x085e, +0x08a0, 0x08b4, +0x0903, 0x0939, +0x093b, 0x093b, +0x093d, 0x0940, +0x0949, 0x094c, +0x094e, 0x0950, +0x0958, 0x0961, +0x0964, 0x0980, +0x0982, 0x0983, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bd, 0x09bd, +0x09bf, 0x09c0, +0x09c7, 0x09c8, +0x09cb, 0x09cc, +0x09ce, 0x09ce, +0x09dc, 0x09dd, +0x09df, 0x09e1, +0x09e6, 0x09fb, +0x0a03, 0x0a03, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a3e, 0x0a40, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a66, 0x0a6f, +0x0a72, 0x0a74, +0x0a83, 0x0a83, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abd, 0x0ac0, +0x0ac9, 0x0ac9, +0x0acb, 0x0acc, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae1, +0x0ae6, 0x0af1, +0x0af9, 0x0af9, +0x0b02, 0x0b03, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3d, 0x0b3d, +0x0b40, 0x0b40, +0x0b47, 0x0b48, +0x0b4b, 0x0b4c, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b61, +0x0b66, 0x0b77, +0x0b83, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bbf, 0x0bbf, +0x0bc1, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcc, +0x0bd0, 0x0bd0, +0x0be6, 0x0bfa, +0x0c01, 0x0c03, +0x0c05, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3d, 0x0c3d, +0x0c41, 0x0c44, +0x0c58, 0x0c5a, +0x0c60, 0x0c61, +0x0c66, 0x0c6f, +0x0c78, 0x0c7f, +0x0c82, 0x0c83, +0x0c85, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbd, 0x0cbe, +0x0cc0, 0x0cc1, +0x0cc3, 0x0cc4, +0x0cc7, 0x0cc8, +0x0cca, 0x0ccb, +0x0cde, 0x0cde, +0x0ce0, 0x0ce1, +0x0ce6, 0x0cef, +0x0cf1, 0x0cf2, +0x0d02, 0x0d03, +0x0d05, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d3a, +0x0d3d, 0x0d3d, +0x0d3f, 0x0d40, +0x0d46, 0x0d48, +0x0d4a, 0x0d4c, +0x0d4e, 0x0d4e, +0x0d5f, 0x0d61, +0x0d66, 0x0d75, +0x0d79, 0x0d7f, +0x0d82, 0x0d83, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0dd0, 0x0dd1, +0x0dd8, 0x0dde, +0x0de6, 0x0def, +0x0df2, 0x0df4, +0x0e01, 0x0e30, +0x0e32, 0x0e33, +0x0e3f, 0x0e46, +0x0e4f, 0x0e5b, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e87, 0x0e88, +0x0e8a, 0x0e8a, +0x0e8d, 0x0e8d, +0x0e94, 0x0e97, +0x0e99, 0x0e9f, +0x0ea1, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0ea7, +0x0eaa, 0x0eab, +0x0ead, 0x0eb0, +0x0eb2, 0x0eb3, +0x0ebd, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0ed0, 0x0ed9, +0x0edc, 0x0edf, +0x0f00, 0x0f17, +0x0f1a, 0x0f34, +0x0f36, 0x0f36, +0x0f38, 0x0f38, +0x0f3a, 0x0f47, +0x0f49, 0x0f6c, +0x0f7f, 0x0f7f, +0x0f85, 0x0f85, +0x0f88, 0x0f8c, +0x0fbe, 0x0fc5, +0x0fc7, 0x0fcc, +0x0fce, 0x0fda, +0x1000, 0x102c, +0x1031, 0x1031, +0x1038, 0x1038, +0x103b, 0x103c, +0x103f, 0x1057, +0x105a, 0x105d, +0x1061, 0x1070, +0x1075, 0x1081, +0x1083, 0x1084, +0x1087, 0x108c, +0x108e, 0x109c, +0x109e, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x1360, 0x137c, +0x1380, 0x1399, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1400, 0x169c, +0x16a0, 0x16f8, +0x1700, 0x170c, +0x170e, 0x1711, +0x1720, 0x1731, +0x1735, 0x1736, +0x1740, 0x1751, +0x1760, 0x176c, +0x176e, 0x1770, +0x1780, 0x17b3, +0x17b6, 0x17b6, +0x17be, 0x17c5, +0x17c7, 0x17c8, +0x17d4, 0x17dc, +0x17e0, 0x17e9, +0x17f0, 0x17f9, +0x1800, 0x180a, +0x1810, 0x1819, +0x1820, 0x1877, +0x1880, 0x18a8, +0x18aa, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1923, 0x1926, +0x1929, 0x192b, +0x1930, 0x1931, +0x1933, 0x1938, +0x1940, 0x1940, +0x1944, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x19d0, 0x19da, +0x19de, 0x1a16, +0x1a19, 0x1a1a, +0x1a1e, 0x1a55, +0x1a57, 0x1a57, +0x1a61, 0x1a61, +0x1a63, 0x1a64, +0x1a6d, 0x1a72, +0x1a80, 0x1a89, +0x1a90, 0x1a99, +0x1aa0, 0x1aad, +0x1b04, 0x1b33, +0x1b35, 0x1b35, +0x1b3b, 0x1b3b, +0x1b3d, 0x1b41, +0x1b43, 0x1b4b, +0x1b50, 0x1b6a, +0x1b74, 0x1b7c, +0x1b82, 0x1ba1, +0x1ba6, 0x1ba7, +0x1baa, 0x1baa, +0x1bae, 0x1be5, +0x1be7, 0x1be7, +0x1bea, 0x1bec, +0x1bee, 0x1bee, +0x1bf2, 0x1bf3, +0x1bfc, 0x1c2b, +0x1c34, 0x1c35, +0x1c3b, 0x1c49, +0x1c4d, 0x1c7f, +0x1cc0, 0x1cc7, +0x1cd3, 0x1cd3, +0x1ce1, 0x1ce1, +0x1ce9, 0x1cec, +0x1cee, 0x1cf3, +0x1cf5, 0x1cf6, +0x1d00, 0x1dbf, +0x1e00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fc4, +0x1fc6, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fdd, 0x1fef, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffe, +0x2000, 0x200a, +0x2010, 0x2027, +0x202f, 0x205f, +0x2070, 0x2071, +0x2074, 0x208e, +0x2090, 0x209c, +0x20a0, 0x20be, +0x2100, 0x218b, +0x2190, 0x23fa, +0x2400, 0x2426, +0x2440, 0x244a, +0x2460, 0x2b73, +0x2b76, 0x2b95, +0x2b98, 0x2bb9, +0x2bbd, 0x2bc8, +0x2bca, 0x2bd1, +0x2bec, 0x2bef, +0x2c00, 0x2c2e, +0x2c30, 0x2c5e, +0x2c60, 0x2cee, +0x2cf2, 0x2cf3, +0x2cf9, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d70, +0x2d80, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x2e00, 0x2e42, +0x2e80, 0x2e99, +0x2e9b, 0x2ef3, +0x2f00, 0x2fd5, +0x2ff0, 0x2ffb, +0x3000, 0x3029, +0x3030, 0x303f, +0x3041, 0x3096, +0x309b, 0x30ff, +0x3105, 0x312d, +0x3131, 0x318e, +0x3190, 0x31ba, +0x31c0, 0x31e3, +0x31f0, 0x321e, +0x3220, 0x32fe, +0x3300, 0x4db5, +0x4dc0, 0x9fd5, +0xa000, 0xa48c, +0xa490, 0xa4c6, +0xa4d0, 0xa62b, +0xa640, 0xa66e, +0xa673, 0xa673, +0xa67e, 0xa69d, +0xa6a0, 0xa6ef, +0xa6f2, 0xa6f7, +0xa700, 0xa7ad, +0xa7b0, 0xa7b7, +0xa7f7, 0xa801, +0xa803, 0xa805, +0xa807, 0xa80a, +0xa80c, 0xa824, +0xa827, 0xa82b, +0xa830, 0xa839, +0xa840, 0xa877, +0xa880, 0xa8c3, +0xa8ce, 0xa8d9, +0xa8f2, 0xa8fd, +0xa900, 0xa925, +0xa92e, 0xa946, +0xa952, 0xa953, +0xa95f, 0xa97c, +0xa983, 0xa9b2, +0xa9b4, 0xa9b5, +0xa9ba, 0xa9bb, +0xa9bd, 0xa9cd, +0xa9cf, 0xa9d9, +0xa9de, 0xa9e4, +0xa9e6, 0xa9fe, +0xaa00, 0xaa28, +0xaa2f, 0xaa30, +0xaa33, 0xaa34, +0xaa40, 0xaa42, +0xaa44, 0xaa4b, +0xaa4d, 0xaa4d, +0xaa50, 0xaa59, +0xaa5c, 0xaa7b, +0xaa7d, 0xaaaf, +0xaab1, 0xaab1, +0xaab5, 0xaab6, +0xaab9, 0xaabd, +0xaac0, 0xaac0, +0xaac2, 0xaac2, +0xaadb, 0xaaeb, +0xaaee, 0xaaf5, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab65, +0xab70, 0xabe4, +0xabe6, 0xabe7, +0xabe9, 0xabec, +0xabf0, 0xabf9, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb1d, +0xfb1f, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbc1, +0xfbd3, 0xfd3f, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdfd, +0xfe10, 0xfe19, +0xfe30, 0xfe52, +0xfe54, 0xfe66, +0xfe68, 0xfe6b, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xff01, 0xff9d, +0xffa0, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0xffe0, 0xffe6, +0xffe8, 0xffee, +0xfffc, 0xfffd, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10100, 0x10102, +0x10107, 0x10133, +0x10137, 0x1018c, +0x10190, 0x1019b, +0x101a0, 0x101a0, +0x101d0, 0x101fc, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x102e1, 0x102fb, +0x10300, 0x10323, +0x10330, 0x1034a, +0x10350, 0x10375, +0x10380, 0x1039d, +0x1039f, 0x103c3, +0x103c8, 0x103d5, +0x10400, 0x1049d, +0x104a0, 0x104a9, +0x10500, 0x10527, +0x10530, 0x10563, +0x1056f, 0x1056f, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10857, 0x1089e, +0x108a7, 0x108af, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x108fb, 0x1091b, +0x1091f, 0x10939, +0x1093f, 0x1093f, +0x10980, 0x109b7, +0x109bc, 0x109cf, +0x109d2, 0x10a00, +0x10a10, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a33, +0x10a40, 0x10a47, +0x10a50, 0x10a58, +0x10a60, 0x10a9f, +0x10ac0, 0x10ae4, +0x10aeb, 0x10af6, +0x10b00, 0x10b35, +0x10b39, 0x10b55, +0x10b58, 0x10b72, +0x10b78, 0x10b91, +0x10b99, 0x10b9c, +0x10ba9, 0x10baf, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10cfa, 0x10cff, +0x10e60, 0x10e7e, +0x11000, 0x11000, +0x11002, 0x11037, +0x11047, 0x1104d, +0x11052, 0x1106f, +0x11082, 0x110b2, +0x110b7, 0x110b8, +0x110bb, 0x110bc, +0x110be, 0x110c1, +0x110d0, 0x110e8, +0x110f0, 0x110f9, +0x11103, 0x11126, +0x1112c, 0x1112c, +0x11136, 0x11143, +0x11150, 0x11172, +0x11174, 0x11176, +0x11182, 0x111b5, +0x111bf, 0x111c9, +0x111cd, 0x111cd, +0x111d0, 0x111df, +0x111e1, 0x111f4, +0x11200, 0x11211, +0x11213, 0x1122e, +0x11232, 0x11233, +0x11235, 0x11235, +0x11238, 0x1123d, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a9, +0x112b0, 0x112de, +0x112e0, 0x112e2, +0x112f0, 0x112f9, +0x11302, 0x11303, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133d, 0x1133d, +0x1133f, 0x1133f, +0x11341, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134d, +0x11350, 0x11350, +0x1135d, 0x11363, +0x11480, 0x114af, +0x114b1, 0x114b2, +0x114b9, 0x114b9, +0x114bb, 0x114bc, +0x114be, 0x114be, +0x114c1, 0x114c1, +0x114c4, 0x114c7, +0x114d0, 0x114d9, +0x11580, 0x115ae, +0x115b0, 0x115b1, +0x115b8, 0x115bb, +0x115be, 0x115be, +0x115c1, 0x115db, +0x11600, 0x11632, +0x1163b, 0x1163c, +0x1163e, 0x1163e, +0x11641, 0x11644, +0x11650, 0x11659, +0x11680, 0x116aa, +0x116ac, 0x116ac, +0x116ae, 0x116af, +0x116b6, 0x116b6, +0x116c0, 0x116c9, +0x11700, 0x11719, +0x11720, 0x11721, +0x11726, 0x11726, +0x11730, 0x1173f, +0x118a0, 0x118f2, +0x118ff, 0x118ff, +0x11ac0, 0x11af8, +0x12000, 0x12399, +0x12400, 0x1246e, +0x12470, 0x12474, +0x12480, 0x12543, +0x13000, 0x1342e, +0x14400, 0x14646, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16a60, 0x16a69, +0x16a6e, 0x16a6f, +0x16ad0, 0x16aed, +0x16af5, 0x16af5, +0x16b00, 0x16b2f, +0x16b37, 0x16b45, +0x16b50, 0x16b59, +0x16b5b, 0x16b61, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16f00, 0x16f44, +0x16f50, 0x16f7e, +0x16f93, 0x16f9f, +0x1b000, 0x1b001, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1bc9c, 0x1bc9c, +0x1bc9f, 0x1bc9f, +0x1d000, 0x1d0f5, +0x1d100, 0x1d126, +0x1d129, 0x1d164, +0x1d166, 0x1d166, +0x1d16a, 0x1d16d, +0x1d183, 0x1d184, +0x1d18c, 0x1d1a9, +0x1d1ae, 0x1d1e8, +0x1d200, 0x1d241, +0x1d245, 0x1d245, +0x1d300, 0x1d356, +0x1d360, 0x1d371, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d7cb, +0x1d7ce, 0x1d9ff, +0x1da37, 0x1da3a, +0x1da6d, 0x1da74, +0x1da76, 0x1da83, +0x1da85, 0x1da8b, +0x1e800, 0x1e8c4, +0x1e8c7, 0x1e8cf, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x1eef0, 0x1eef1, +0x1f000, 0x1f02b, +0x1f030, 0x1f093, +0x1f0a0, 0x1f0ae, +0x1f0b1, 0x1f0bf, +0x1f0c1, 0x1f0cf, +0x1f0d1, 0x1f0f5, +0x1f100, 0x1f10c, +0x1f110, 0x1f12e, +0x1f130, 0x1f16b, +0x1f170, 0x1f19a, +0x1f1e6, 0x1f202, +0x1f210, 0x1f23a, +0x1f240, 0x1f248, +0x1f250, 0x1f251, +0x1f300, 0x1f579, +0x1f57b, 0x1f5a3, +0x1f5a5, 0x1f6d0, +0x1f6e0, 0x1f6ec, +0x1f6f0, 0x1f6f3, +0x1f700, 0x1f773, +0x1f780, 0x1f7d4, +0x1f800, 0x1f80b, +0x1f810, 0x1f847, +0x1f850, 0x1f859, +0x1f860, 0x1f887, +0x1f890, 0x1f8ad, +0x1f910, 0x1f918, +0x1f980, 0x1f984, +0x1f9c0, 0x1f9c0, +0x20000, 0x2a6d6, +0x2a700, 0x2b734, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2f800, 0x2fa1d, +}; /* END of CR_Grapheme_Base */ + +/* PROPERTY: 'Grapheme_Extend': Derived Property */ +static const OnigCodePoint +CR_Grapheme_Extend[] = { 283, +0x0300, 0x036f, +0x0483, 0x0489, +0x0591, 0x05bd, +0x05bf, 0x05bf, +0x05c1, 0x05c2, +0x05c4, 0x05c5, +0x05c7, 0x05c7, +0x0610, 0x061a, +0x064b, 0x065f, +0x0670, 0x0670, +0x06d6, 0x06dc, +0x06df, 0x06e4, +0x06e7, 0x06e8, +0x06ea, 0x06ed, +0x0711, 0x0711, +0x0730, 0x074a, +0x07a6, 0x07b0, +0x07eb, 0x07f3, +0x0816, 0x0819, +0x081b, 0x0823, +0x0825, 0x0827, +0x0829, 0x082d, +0x0859, 0x085b, +0x08e3, 0x0902, +0x093a, 0x093a, +0x093c, 0x093c, +0x0941, 0x0948, +0x094d, 0x094d, +0x0951, 0x0957, +0x0962, 0x0963, +0x0981, 0x0981, +0x09bc, 0x09bc, +0x09be, 0x09be, +0x09c1, 0x09c4, +0x09cd, 0x09cd, +0x09d7, 0x09d7, +0x09e2, 0x09e3, +0x0a01, 0x0a02, +0x0a3c, 0x0a3c, +0x0a41, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4d, +0x0a51, 0x0a51, +0x0a70, 0x0a71, +0x0a75, 0x0a75, +0x0a81, 0x0a82, +0x0abc, 0x0abc, +0x0ac1, 0x0ac5, +0x0ac7, 0x0ac8, +0x0acd, 0x0acd, +0x0ae2, 0x0ae3, +0x0b01, 0x0b01, +0x0b3c, 0x0b3c, +0x0b3e, 0x0b3f, +0x0b41, 0x0b44, +0x0b4d, 0x0b4d, +0x0b56, 0x0b57, +0x0b62, 0x0b63, +0x0b82, 0x0b82, +0x0bbe, 0x0bbe, +0x0bc0, 0x0bc0, +0x0bcd, 0x0bcd, +0x0bd7, 0x0bd7, +0x0c00, 0x0c00, +0x0c3e, 0x0c40, +0x0c46, 0x0c48, +0x0c4a, 0x0c4d, +0x0c55, 0x0c56, +0x0c62, 0x0c63, +0x0c81, 0x0c81, +0x0cbc, 0x0cbc, +0x0cbf, 0x0cbf, +0x0cc2, 0x0cc2, +0x0cc6, 0x0cc6, +0x0ccc, 0x0ccd, +0x0cd5, 0x0cd6, +0x0ce2, 0x0ce3, +0x0d01, 0x0d01, +0x0d3e, 0x0d3e, +0x0d41, 0x0d44, +0x0d4d, 0x0d4d, +0x0d57, 0x0d57, +0x0d62, 0x0d63, +0x0dca, 0x0dca, +0x0dcf, 0x0dcf, +0x0dd2, 0x0dd4, +0x0dd6, 0x0dd6, +0x0ddf, 0x0ddf, +0x0e31, 0x0e31, +0x0e34, 0x0e3a, +0x0e47, 0x0e4e, +0x0eb1, 0x0eb1, +0x0eb4, 0x0eb9, +0x0ebb, 0x0ebc, +0x0ec8, 0x0ecd, +0x0f18, 0x0f19, +0x0f35, 0x0f35, +0x0f37, 0x0f37, +0x0f39, 0x0f39, +0x0f71, 0x0f7e, +0x0f80, 0x0f84, +0x0f86, 0x0f87, +0x0f8d, 0x0f97, +0x0f99, 0x0fbc, +0x0fc6, 0x0fc6, +0x102d, 0x1030, +0x1032, 0x1037, +0x1039, 0x103a, +0x103d, 0x103e, +0x1058, 0x1059, +0x105e, 0x1060, +0x1071, 0x1074, +0x1082, 0x1082, +0x1085, 0x1086, +0x108d, 0x108d, +0x109d, 0x109d, +0x135d, 0x135f, +0x1712, 0x1714, +0x1732, 0x1734, +0x1752, 0x1753, +0x1772, 0x1773, +0x17b4, 0x17b5, +0x17b7, 0x17bd, +0x17c6, 0x17c6, +0x17c9, 0x17d3, +0x17dd, 0x17dd, +0x180b, 0x180d, +0x18a9, 0x18a9, +0x1920, 0x1922, +0x1927, 0x1928, +0x1932, 0x1932, +0x1939, 0x193b, +0x1a17, 0x1a18, +0x1a1b, 0x1a1b, +0x1a56, 0x1a56, +0x1a58, 0x1a5e, +0x1a60, 0x1a60, +0x1a62, 0x1a62, +0x1a65, 0x1a6c, +0x1a73, 0x1a7c, +0x1a7f, 0x1a7f, +0x1ab0, 0x1abe, +0x1b00, 0x1b03, +0x1b34, 0x1b34, +0x1b36, 0x1b3a, +0x1b3c, 0x1b3c, +0x1b42, 0x1b42, +0x1b6b, 0x1b73, +0x1b80, 0x1b81, +0x1ba2, 0x1ba5, +0x1ba8, 0x1ba9, +0x1bab, 0x1bad, +0x1be6, 0x1be6, +0x1be8, 0x1be9, +0x1bed, 0x1bed, +0x1bef, 0x1bf1, +0x1c2c, 0x1c33, +0x1c36, 0x1c37, +0x1cd0, 0x1cd2, +0x1cd4, 0x1ce0, +0x1ce2, 0x1ce8, +0x1ced, 0x1ced, +0x1cf4, 0x1cf4, +0x1cf8, 0x1cf9, +0x1dc0, 0x1df5, +0x1dfc, 0x1dff, +0x200c, 0x200d, +0x20d0, 0x20f0, +0x2cef, 0x2cf1, +0x2d7f, 0x2d7f, +0x2de0, 0x2dff, +0x302a, 0x302f, +0x3099, 0x309a, +0xa66f, 0xa672, +0xa674, 0xa67d, +0xa69e, 0xa69f, +0xa6f0, 0xa6f1, +0xa802, 0xa802, +0xa806, 0xa806, +0xa80b, 0xa80b, +0xa825, 0xa826, +0xa8c4, 0xa8c4, +0xa8e0, 0xa8f1, +0xa926, 0xa92d, +0xa947, 0xa951, +0xa980, 0xa982, +0xa9b3, 0xa9b3, +0xa9b6, 0xa9b9, +0xa9bc, 0xa9bc, +0xa9e5, 0xa9e5, +0xaa29, 0xaa2e, +0xaa31, 0xaa32, +0xaa35, 0xaa36, +0xaa43, 0xaa43, +0xaa4c, 0xaa4c, +0xaa7c, 0xaa7c, +0xaab0, 0xaab0, +0xaab2, 0xaab4, +0xaab7, 0xaab8, +0xaabe, 0xaabf, +0xaac1, 0xaac1, +0xaaec, 0xaaed, +0xaaf6, 0xaaf6, +0xabe5, 0xabe5, +0xabe8, 0xabe8, +0xabed, 0xabed, +0xfb1e, 0xfb1e, +0xfe00, 0xfe0f, +0xfe20, 0xfe2f, +0xff9e, 0xff9f, +0x101fd, 0x101fd, +0x102e0, 0x102e0, +0x10376, 0x1037a, +0x10a01, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a0f, +0x10a38, 0x10a3a, +0x10a3f, 0x10a3f, +0x10ae5, 0x10ae6, +0x11001, 0x11001, +0x11038, 0x11046, +0x1107f, 0x11081, +0x110b3, 0x110b6, +0x110b9, 0x110ba, +0x11100, 0x11102, +0x11127, 0x1112b, +0x1112d, 0x11134, +0x11173, 0x11173, +0x11180, 0x11181, +0x111b6, 0x111be, +0x111ca, 0x111cc, +0x1122f, 0x11231, +0x11234, 0x11234, +0x11236, 0x11237, +0x112df, 0x112df, +0x112e3, 0x112ea, +0x11300, 0x11301, +0x1133c, 0x1133c, +0x1133e, 0x1133e, +0x11340, 0x11340, +0x11357, 0x11357, +0x11366, 0x1136c, +0x11370, 0x11374, +0x114b0, 0x114b0, +0x114b3, 0x114b8, +0x114ba, 0x114ba, +0x114bd, 0x114bd, +0x114bf, 0x114c0, +0x114c2, 0x114c3, +0x115af, 0x115af, +0x115b2, 0x115b5, +0x115bc, 0x115bd, +0x115bf, 0x115c0, +0x115dc, 0x115dd, +0x11633, 0x1163a, +0x1163d, 0x1163d, +0x1163f, 0x11640, +0x116ab, 0x116ab, +0x116ad, 0x116ad, +0x116b0, 0x116b5, +0x116b7, 0x116b7, +0x1171d, 0x1171f, +0x11722, 0x11725, +0x11727, 0x1172b, +0x16af0, 0x16af4, +0x16b30, 0x16b36, +0x16f8f, 0x16f92, +0x1bc9d, 0x1bc9e, +0x1d165, 0x1d165, +0x1d167, 0x1d169, +0x1d16e, 0x1d172, +0x1d17b, 0x1d182, +0x1d185, 0x1d18b, +0x1d1aa, 0x1d1ad, +0x1d242, 0x1d244, +0x1da00, 0x1da36, +0x1da3b, 0x1da6c, +0x1da75, 0x1da75, +0x1da84, 0x1da84, +0x1da9b, 0x1da9f, +0x1daa1, 0x1daaf, +0x1e8d0, 0x1e8d6, +0xe0100, 0xe01ef, +}; /* END of CR_Grapheme_Extend */ + +/* PROPERTY: 'Grapheme_Link': Derived Property */ +static const OnigCodePoint +CR_Grapheme_Link[] = { 41, +0x094d, 0x094d, +0x09cd, 0x09cd, +0x0a4d, 0x0a4d, +0x0acd, 0x0acd, +0x0b4d, 0x0b4d, +0x0bcd, 0x0bcd, +0x0c4d, 0x0c4d, +0x0ccd, 0x0ccd, +0x0d4d, 0x0d4d, +0x0dca, 0x0dca, +0x0e3a, 0x0e3a, +0x0f84, 0x0f84, +0x1039, 0x103a, +0x1714, 0x1714, +0x1734, 0x1734, +0x17d2, 0x17d2, +0x1a60, 0x1a60, +0x1b44, 0x1b44, +0x1baa, 0x1bab, +0x1bf2, 0x1bf3, +0x2d7f, 0x2d7f, +0xa806, 0xa806, +0xa8c4, 0xa8c4, +0xa953, 0xa953, +0xa9c0, 0xa9c0, +0xaaf6, 0xaaf6, +0xabed, 0xabed, +0x10a3f, 0x10a3f, +0x11046, 0x11046, +0x1107f, 0x1107f, +0x110b9, 0x110b9, +0x11133, 0x11134, +0x111c0, 0x111c0, +0x11235, 0x11235, +0x112ea, 0x112ea, +0x1134d, 0x1134d, +0x114c2, 0x114c2, +0x115bf, 0x115bf, +0x1163f, 0x1163f, +0x116b6, 0x116b6, +0x1172b, 0x1172b, +}; /* END of CR_Grapheme_Link */ + +/* PROPERTY: 'Greek': Script */ +static const OnigCodePoint +CR_Greek[] = { 36, +0x0370, 0x0373, +0x0375, 0x0377, +0x037a, 0x037d, +0x037f, 0x037f, +0x0384, 0x0384, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03e1, +0x03f0, 0x03ff, +0x1d26, 0x1d2a, +0x1d5d, 0x1d61, +0x1d66, 0x1d6a, +0x1dbf, 0x1dbf, +0x1f00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fc4, +0x1fc6, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fdd, 0x1fef, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffe, +0x2126, 0x2126, +0xab65, 0xab65, +0x10140, 0x1018c, +0x101a0, 0x101a0, +0x1d200, 0x1d245, +}; /* END of CR_Greek */ + +/* PROPERTY: 'Gujarati': Script */ +static const OnigCodePoint +CR_Gujarati[] = { 14, +0x0a81, 0x0a83, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abc, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acd, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae3, +0x0ae6, 0x0af1, +0x0af9, 0x0af9, +}; /* END of CR_Gujarati */ + +/* PROPERTY: 'Gurmukhi': Script */ +static const OnigCodePoint +CR_Gurmukhi[] = { 16, +0x0a01, 0x0a03, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a3c, 0x0a3c, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4d, +0x0a51, 0x0a51, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a66, 0x0a75, +}; /* END of CR_Gurmukhi */ + +/* PROPERTY: 'Han': Script */ +static const OnigCodePoint +CR_Han[] = { 16, +0x2e80, 0x2e99, +0x2e9b, 0x2ef3, +0x2f00, 0x2fd5, +0x3005, 0x3005, +0x3007, 0x3007, +0x3021, 0x3029, +0x3038, 0x303b, +0x3400, 0x4db5, +0x4e00, 0x9fd5, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0x20000, 0x2a6d6, +0x2a700, 0x2b734, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2f800, 0x2fa1d, +}; /* END of CR_Han */ + +/* PROPERTY: 'Hangul': Script */ +static const OnigCodePoint +CR_Hangul[] = { 14, +0x1100, 0x11ff, +0x302e, 0x302f, +0x3131, 0x318e, +0x3200, 0x321e, +0x3260, 0x327e, +0xa960, 0xa97c, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xffa0, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +}; /* END of CR_Hangul */ + +/* PROPERTY: 'Hanunoo': Script */ +static const OnigCodePoint +CR_Hanunoo[] = { 1, +0x1720, 0x1734, +}; /* END of CR_Hanunoo */ + +/* PROPERTY: 'Hatran': Script */ +static const OnigCodePoint +CR_Hatran[] = { 3, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x108fb, 0x108ff, +}; /* END of CR_Hatran */ + +/* PROPERTY: 'Hebrew': Script */ +static const OnigCodePoint +CR_Hebrew[] = { 9, +0x0591, 0x05c7, +0x05d0, 0x05ea, +0x05f0, 0x05f4, +0xfb1d, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfb4f, +}; /* END of CR_Hebrew */ + +/* PROPERTY: 'Hex_Digit': Binary Property */ +static const OnigCodePoint +CR_Hex_Digit[] = { 6, +0x0030, 0x0039, +0x0041, 0x0046, +0x0061, 0x0066, +0xff10, 0xff19, +0xff21, 0xff26, +0xff41, 0xff46, +}; /* END of CR_Hex_Digit */ + +/* PROPERTY: 'Hiragana': Script */ +static const OnigCodePoint +CR_Hiragana[] = { 4, +0x3041, 0x3096, +0x309d, 0x309f, +0x1b001, 0x1b001, +0x1f200, 0x1f200, +}; /* END of CR_Hiragana */ + +/* PROPERTY: 'Hyphen': Binary Property */ +static const OnigCodePoint +CR_Hyphen[] = { 10, +0x002d, 0x002d, +0x00ad, 0x00ad, +0x058a, 0x058a, +0x1806, 0x1806, +0x2010, 0x2011, +0x2e17, 0x2e17, +0x30fb, 0x30fb, +0xfe63, 0xfe63, +0xff0d, 0xff0d, +0xff65, 0xff65, +}; /* END of CR_Hyphen */ + +/* PROPERTY: 'IDS_Binary_Operator': Binary Property */ +static const OnigCodePoint +CR_IDS_Binary_Operator[] = { 2, +0x2ff0, 0x2ff1, +0x2ff4, 0x2ffb, +}; /* END of CR_IDS_Binary_Operator */ + +/* PROPERTY: 'IDS_Trinary_Operator': Binary Property */ +static const OnigCodePoint +CR_IDS_Trinary_Operator[] = { 1, +0x2ff2, 0x2ff3, +}; /* END of CR_IDS_Trinary_Operator */ + +/* PROPERTY: 'ID_Continue': Derived Property */ +static const OnigCodePoint +CR_ID_Continue[] = { 651, +0x0030, 0x0039, +0x0041, 0x005a, +0x005f, 0x005f, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00b5, 0x00b5, +0x00b7, 0x00b7, +0x00ba, 0x00ba, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x02c1, +0x02c6, 0x02d1, +0x02e0, 0x02e4, +0x02ec, 0x02ec, +0x02ee, 0x02ee, +0x0300, 0x0374, +0x0376, 0x0377, +0x037a, 0x037d, +0x037f, 0x037f, +0x0386, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03f5, +0x03f7, 0x0481, +0x0483, 0x0487, +0x048a, 0x052f, +0x0531, 0x0556, +0x0559, 0x0559, +0x0561, 0x0587, +0x0591, 0x05bd, +0x05bf, 0x05bf, +0x05c1, 0x05c2, +0x05c4, 0x05c5, +0x05c7, 0x05c7, +0x05d0, 0x05ea, +0x05f0, 0x05f2, +0x0610, 0x061a, +0x0620, 0x0669, +0x066e, 0x06d3, +0x06d5, 0x06dc, +0x06df, 0x06e8, +0x06ea, 0x06fc, +0x06ff, 0x06ff, +0x0710, 0x074a, +0x074d, 0x07b1, +0x07c0, 0x07f5, +0x07fa, 0x07fa, +0x0800, 0x082d, +0x0840, 0x085b, +0x08a0, 0x08b4, +0x08e3, 0x0963, +0x0966, 0x096f, +0x0971, 0x0983, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bc, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09ce, +0x09d7, 0x09d7, +0x09dc, 0x09dd, +0x09df, 0x09e3, +0x09e6, 0x09f1, +0x0a01, 0x0a03, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a3c, 0x0a3c, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4d, +0x0a51, 0x0a51, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a66, 0x0a75, +0x0a81, 0x0a83, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abc, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acd, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae3, +0x0ae6, 0x0aef, +0x0af9, 0x0af9, +0x0b01, 0x0b03, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3c, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4d, +0x0b56, 0x0b57, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b63, +0x0b66, 0x0b6f, +0x0b71, 0x0b71, +0x0b82, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcd, +0x0bd0, 0x0bd0, +0x0bd7, 0x0bd7, +0x0be6, 0x0bef, +0x0c00, 0x0c03, +0x0c05, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3d, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4d, +0x0c55, 0x0c56, +0x0c58, 0x0c5a, +0x0c60, 0x0c63, +0x0c66, 0x0c6f, +0x0c81, 0x0c83, +0x0c85, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbc, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccd, +0x0cd5, 0x0cd6, +0x0cde, 0x0cde, +0x0ce0, 0x0ce3, +0x0ce6, 0x0cef, +0x0cf1, 0x0cf2, +0x0d01, 0x0d03, +0x0d05, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d3a, +0x0d3d, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4e, +0x0d57, 0x0d57, +0x0d5f, 0x0d63, +0x0d66, 0x0d6f, +0x0d7a, 0x0d7f, +0x0d82, 0x0d83, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0dca, 0x0dca, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0de6, 0x0def, +0x0df2, 0x0df3, +0x0e01, 0x0e3a, +0x0e40, 0x0e4e, +0x0e50, 0x0e59, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e87, 0x0e88, +0x0e8a, 0x0e8a, +0x0e8d, 0x0e8d, +0x0e94, 0x0e97, +0x0e99, 0x0e9f, +0x0ea1, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0ea7, +0x0eaa, 0x0eab, +0x0ead, 0x0eb9, +0x0ebb, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0ec8, 0x0ecd, +0x0ed0, 0x0ed9, +0x0edc, 0x0edf, +0x0f00, 0x0f00, +0x0f18, 0x0f19, +0x0f20, 0x0f29, +0x0f35, 0x0f35, +0x0f37, 0x0f37, +0x0f39, 0x0f39, +0x0f3e, 0x0f47, +0x0f49, 0x0f6c, +0x0f71, 0x0f84, +0x0f86, 0x0f97, +0x0f99, 0x0fbc, +0x0fc6, 0x0fc6, +0x1000, 0x1049, +0x1050, 0x109d, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x10fa, +0x10fc, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x135d, 0x135f, +0x1369, 0x1371, +0x1380, 0x138f, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1401, 0x166c, +0x166f, 0x167f, +0x1681, 0x169a, +0x16a0, 0x16ea, +0x16ee, 0x16f8, +0x1700, 0x170c, +0x170e, 0x1714, +0x1720, 0x1734, +0x1740, 0x1753, +0x1760, 0x176c, +0x176e, 0x1770, +0x1772, 0x1773, +0x1780, 0x17d3, +0x17d7, 0x17d7, +0x17dc, 0x17dd, +0x17e0, 0x17e9, +0x180b, 0x180d, +0x1810, 0x1819, +0x1820, 0x1877, +0x1880, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1920, 0x192b, +0x1930, 0x193b, +0x1946, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x19d0, 0x19da, +0x1a00, 0x1a1b, +0x1a20, 0x1a5e, +0x1a60, 0x1a7c, +0x1a7f, 0x1a89, +0x1a90, 0x1a99, +0x1aa7, 0x1aa7, +0x1ab0, 0x1abd, +0x1b00, 0x1b4b, +0x1b50, 0x1b59, +0x1b6b, 0x1b73, +0x1b80, 0x1bf3, +0x1c00, 0x1c37, +0x1c40, 0x1c49, +0x1c4d, 0x1c7d, +0x1cd0, 0x1cd2, +0x1cd4, 0x1cf6, +0x1cf8, 0x1cf9, +0x1d00, 0x1df5, +0x1dfc, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fe0, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffc, +0x203f, 0x2040, +0x2054, 0x2054, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x20d0, 0x20dc, +0x20e1, 0x20e1, +0x20e5, 0x20f0, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2118, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x2139, +0x213c, 0x213f, +0x2145, 0x2149, +0x214e, 0x214e, +0x2160, 0x2188, +0x2c00, 0x2c2e, +0x2c30, 0x2c5e, +0x2c60, 0x2ce4, +0x2ceb, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d6f, +0x2d7f, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x2de0, 0x2dff, +0x3005, 0x3007, +0x3021, 0x302f, +0x3031, 0x3035, +0x3038, 0x303c, +0x3041, 0x3096, +0x3099, 0x309f, +0x30a1, 0x30fa, +0x30fc, 0x30ff, +0x3105, 0x312d, +0x3131, 0x318e, +0x31a0, 0x31ba, +0x31f0, 0x31ff, +0x3400, 0x4db5, +0x4e00, 0x9fd5, +0xa000, 0xa48c, +0xa4d0, 0xa4fd, +0xa500, 0xa60c, +0xa610, 0xa62b, +0xa640, 0xa66f, +0xa674, 0xa67d, +0xa67f, 0xa6f1, +0xa717, 0xa71f, +0xa722, 0xa788, +0xa78b, 0xa7ad, +0xa7b0, 0xa7b7, +0xa7f7, 0xa827, +0xa840, 0xa873, +0xa880, 0xa8c4, +0xa8d0, 0xa8d9, +0xa8e0, 0xa8f7, +0xa8fb, 0xa8fb, +0xa8fd, 0xa8fd, +0xa900, 0xa92d, +0xa930, 0xa953, +0xa960, 0xa97c, +0xa980, 0xa9c0, +0xa9cf, 0xa9d9, +0xa9e0, 0xa9fe, +0xaa00, 0xaa36, +0xaa40, 0xaa4d, +0xaa50, 0xaa59, +0xaa60, 0xaa76, +0xaa7a, 0xaac2, +0xaadb, 0xaadd, +0xaae0, 0xaaef, +0xaaf2, 0xaaf6, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab5a, +0xab5c, 0xab65, +0xab70, 0xabea, +0xabec, 0xabed, +0xabf0, 0xabf9, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb28, +0xfb2a, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbb1, +0xfbd3, 0xfd3d, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdfb, +0xfe00, 0xfe0f, +0xfe20, 0xfe2f, +0xfe33, 0xfe34, +0xfe4d, 0xfe4f, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xff10, 0xff19, +0xff21, 0xff3a, +0xff3f, 0xff3f, +0xff41, 0xff5a, +0xff66, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10140, 0x10174, +0x101fd, 0x101fd, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x102e0, 0x102e0, +0x10300, 0x1031f, +0x10330, 0x1034a, +0x10350, 0x1037a, +0x10380, 0x1039d, +0x103a0, 0x103c3, +0x103c8, 0x103cf, +0x103d1, 0x103d5, +0x10400, 0x1049d, +0x104a0, 0x104a9, +0x10500, 0x10527, +0x10530, 0x10563, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10860, 0x10876, +0x10880, 0x1089e, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x10900, 0x10915, +0x10920, 0x10939, +0x10980, 0x109b7, +0x109be, 0x109bf, +0x10a00, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a33, +0x10a38, 0x10a3a, +0x10a3f, 0x10a3f, +0x10a60, 0x10a7c, +0x10a80, 0x10a9c, +0x10ac0, 0x10ac7, +0x10ac9, 0x10ae6, +0x10b00, 0x10b35, +0x10b40, 0x10b55, +0x10b60, 0x10b72, +0x10b80, 0x10b91, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x11000, 0x11046, +0x11066, 0x1106f, +0x1107f, 0x110ba, +0x110d0, 0x110e8, +0x110f0, 0x110f9, +0x11100, 0x11134, +0x11136, 0x1113f, +0x11150, 0x11173, +0x11176, 0x11176, +0x11180, 0x111c4, +0x111ca, 0x111cc, +0x111d0, 0x111da, +0x111dc, 0x111dc, +0x11200, 0x11211, +0x11213, 0x11237, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a8, +0x112b0, 0x112ea, +0x112f0, 0x112f9, +0x11300, 0x11303, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133c, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134d, +0x11350, 0x11350, +0x11357, 0x11357, +0x1135d, 0x11363, +0x11366, 0x1136c, +0x11370, 0x11374, +0x11480, 0x114c5, +0x114c7, 0x114c7, +0x114d0, 0x114d9, +0x11580, 0x115b5, +0x115b8, 0x115c0, +0x115d8, 0x115dd, +0x11600, 0x11640, +0x11644, 0x11644, +0x11650, 0x11659, +0x11680, 0x116b7, +0x116c0, 0x116c9, +0x11700, 0x11719, +0x1171d, 0x1172b, +0x11730, 0x11739, +0x118a0, 0x118e9, +0x118ff, 0x118ff, +0x11ac0, 0x11af8, +0x12000, 0x12399, +0x12400, 0x1246e, +0x12480, 0x12543, +0x13000, 0x1342e, +0x14400, 0x14646, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16a60, 0x16a69, +0x16ad0, 0x16aed, +0x16af0, 0x16af4, +0x16b00, 0x16b36, +0x16b40, 0x16b43, +0x16b50, 0x16b59, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16f00, 0x16f44, +0x16f50, 0x16f7e, +0x16f8f, 0x16f9f, +0x1b000, 0x1b001, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1bc9d, 0x1bc9e, +0x1d165, 0x1d169, +0x1d16d, 0x1d172, +0x1d17b, 0x1d182, +0x1d185, 0x1d18b, +0x1d1aa, 0x1d1ad, +0x1d242, 0x1d244, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d6c0, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6fa, +0x1d6fc, 0x1d714, +0x1d716, 0x1d734, +0x1d736, 0x1d74e, +0x1d750, 0x1d76e, +0x1d770, 0x1d788, +0x1d78a, 0x1d7a8, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7cb, +0x1d7ce, 0x1d7ff, +0x1da00, 0x1da36, +0x1da3b, 0x1da6c, +0x1da75, 0x1da75, +0x1da84, 0x1da84, +0x1da9b, 0x1da9f, +0x1daa1, 0x1daaf, +0x1e800, 0x1e8c4, +0x1e8d0, 0x1e8d6, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x20000, 0x2a6d6, +0x2a700, 0x2b734, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2f800, 0x2fa1d, +0xe0100, 0xe01ef, +}; /* END of CR_ID_Continue */ + +/* PROPERTY: 'ID_Start': Derived Property */ +static const OnigCodePoint +CR_ID_Start[] = { 555, +0x0041, 0x005a, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00b5, 0x00b5, +0x00ba, 0x00ba, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x02c1, +0x02c6, 0x02d1, +0x02e0, 0x02e4, +0x02ec, 0x02ec, +0x02ee, 0x02ee, +0x0370, 0x0374, +0x0376, 0x0377, +0x037a, 0x037d, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03f5, +0x03f7, 0x0481, +0x048a, 0x052f, +0x0531, 0x0556, +0x0559, 0x0559, +0x0561, 0x0587, +0x05d0, 0x05ea, +0x05f0, 0x05f2, +0x0620, 0x064a, +0x066e, 0x066f, +0x0671, 0x06d3, +0x06d5, 0x06d5, +0x06e5, 0x06e6, +0x06ee, 0x06ef, +0x06fa, 0x06fc, +0x06ff, 0x06ff, +0x0710, 0x0710, +0x0712, 0x072f, +0x074d, 0x07a5, +0x07b1, 0x07b1, +0x07ca, 0x07ea, +0x07f4, 0x07f5, +0x07fa, 0x07fa, +0x0800, 0x0815, +0x081a, 0x081a, +0x0824, 0x0824, +0x0828, 0x0828, +0x0840, 0x0858, +0x08a0, 0x08b4, +0x0904, 0x0939, +0x093d, 0x093d, +0x0950, 0x0950, +0x0958, 0x0961, +0x0971, 0x0980, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bd, 0x09bd, +0x09ce, 0x09ce, +0x09dc, 0x09dd, +0x09df, 0x09e1, +0x09f0, 0x09f1, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a72, 0x0a74, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abd, 0x0abd, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae1, +0x0af9, 0x0af9, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3d, 0x0b3d, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b61, +0x0b71, 0x0b71, +0x0b83, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bd0, 0x0bd0, +0x0c05, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3d, 0x0c3d, +0x0c58, 0x0c5a, +0x0c60, 0x0c61, +0x0c85, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbd, 0x0cbd, +0x0cde, 0x0cde, +0x0ce0, 0x0ce1, +0x0cf1, 0x0cf2, +0x0d05, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d3a, +0x0d3d, 0x0d3d, +0x0d4e, 0x0d4e, +0x0d5f, 0x0d61, +0x0d7a, 0x0d7f, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0e01, 0x0e30, +0x0e32, 0x0e33, +0x0e40, 0x0e46, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e87, 0x0e88, +0x0e8a, 0x0e8a, +0x0e8d, 0x0e8d, +0x0e94, 0x0e97, +0x0e99, 0x0e9f, +0x0ea1, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0ea7, +0x0eaa, 0x0eab, +0x0ead, 0x0eb0, +0x0eb2, 0x0eb3, +0x0ebd, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0edc, 0x0edf, +0x0f00, 0x0f00, +0x0f40, 0x0f47, +0x0f49, 0x0f6c, +0x0f88, 0x0f8c, +0x1000, 0x102a, +0x103f, 0x103f, +0x1050, 0x1055, +0x105a, 0x105d, +0x1061, 0x1061, +0x1065, 0x1066, +0x106e, 0x1070, +0x1075, 0x1081, +0x108e, 0x108e, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x10fa, +0x10fc, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x1380, 0x138f, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1401, 0x166c, +0x166f, 0x167f, +0x1681, 0x169a, +0x16a0, 0x16ea, +0x16ee, 0x16f8, +0x1700, 0x170c, +0x170e, 0x1711, +0x1720, 0x1731, +0x1740, 0x1751, +0x1760, 0x176c, +0x176e, 0x1770, +0x1780, 0x17b3, +0x17d7, 0x17d7, +0x17dc, 0x17dc, +0x1820, 0x1877, +0x1880, 0x18a8, +0x18aa, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1950, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x1a00, 0x1a16, +0x1a20, 0x1a54, +0x1aa7, 0x1aa7, +0x1b05, 0x1b33, +0x1b45, 0x1b4b, +0x1b83, 0x1ba0, +0x1bae, 0x1baf, +0x1bba, 0x1be5, +0x1c00, 0x1c23, +0x1c4d, 0x1c4f, +0x1c5a, 0x1c7d, +0x1ce9, 0x1cec, +0x1cee, 0x1cf1, +0x1cf5, 0x1cf6, +0x1d00, 0x1dbf, +0x1e00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fe0, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffc, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2118, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x2139, +0x213c, 0x213f, +0x2145, 0x2149, +0x214e, 0x214e, +0x2160, 0x2188, +0x2c00, 0x2c2e, +0x2c30, 0x2c5e, +0x2c60, 0x2ce4, +0x2ceb, 0x2cee, +0x2cf2, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d6f, +0x2d80, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x3005, 0x3007, +0x3021, 0x3029, +0x3031, 0x3035, +0x3038, 0x303c, +0x3041, 0x3096, +0x309b, 0x309f, +0x30a1, 0x30fa, +0x30fc, 0x30ff, +0x3105, 0x312d, +0x3131, 0x318e, +0x31a0, 0x31ba, +0x31f0, 0x31ff, +0x3400, 0x4db5, +0x4e00, 0x9fd5, +0xa000, 0xa48c, +0xa4d0, 0xa4fd, +0xa500, 0xa60c, +0xa610, 0xa61f, +0xa62a, 0xa62b, +0xa640, 0xa66e, +0xa67f, 0xa69d, +0xa6a0, 0xa6ef, +0xa717, 0xa71f, +0xa722, 0xa788, +0xa78b, 0xa7ad, +0xa7b0, 0xa7b7, +0xa7f7, 0xa801, +0xa803, 0xa805, +0xa807, 0xa80a, +0xa80c, 0xa822, +0xa840, 0xa873, +0xa882, 0xa8b3, +0xa8f2, 0xa8f7, +0xa8fb, 0xa8fb, +0xa8fd, 0xa8fd, +0xa90a, 0xa925, +0xa930, 0xa946, +0xa960, 0xa97c, +0xa984, 0xa9b2, +0xa9cf, 0xa9cf, +0xa9e0, 0xa9e4, +0xa9e6, 0xa9ef, +0xa9fa, 0xa9fe, +0xaa00, 0xaa28, +0xaa40, 0xaa42, +0xaa44, 0xaa4b, +0xaa60, 0xaa76, +0xaa7a, 0xaa7a, +0xaa7e, 0xaaaf, +0xaab1, 0xaab1, +0xaab5, 0xaab6, +0xaab9, 0xaabd, +0xaac0, 0xaac0, +0xaac2, 0xaac2, +0xaadb, 0xaadd, +0xaae0, 0xaaea, +0xaaf2, 0xaaf4, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab5a, +0xab5c, 0xab65, +0xab70, 0xabe2, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb1d, +0xfb1f, 0xfb28, +0xfb2a, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbb1, +0xfbd3, 0xfd3d, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdfb, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xff21, 0xff3a, +0xff41, 0xff5a, +0xff66, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10140, 0x10174, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x10300, 0x1031f, +0x10330, 0x1034a, +0x10350, 0x10375, +0x10380, 0x1039d, +0x103a0, 0x103c3, +0x103c8, 0x103cf, +0x103d1, 0x103d5, +0x10400, 0x1049d, +0x10500, 0x10527, +0x10530, 0x10563, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10860, 0x10876, +0x10880, 0x1089e, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x10900, 0x10915, +0x10920, 0x10939, +0x10980, 0x109b7, +0x109be, 0x109bf, +0x10a00, 0x10a00, +0x10a10, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a33, +0x10a60, 0x10a7c, +0x10a80, 0x10a9c, +0x10ac0, 0x10ac7, +0x10ac9, 0x10ae4, +0x10b00, 0x10b35, +0x10b40, 0x10b55, +0x10b60, 0x10b72, +0x10b80, 0x10b91, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x11003, 0x11037, +0x11083, 0x110af, +0x110d0, 0x110e8, +0x11103, 0x11126, +0x11150, 0x11172, +0x11176, 0x11176, +0x11183, 0x111b2, +0x111c1, 0x111c4, +0x111da, 0x111da, +0x111dc, 0x111dc, +0x11200, 0x11211, +0x11213, 0x1122b, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a8, +0x112b0, 0x112de, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133d, 0x1133d, +0x11350, 0x11350, +0x1135d, 0x11361, +0x11480, 0x114af, +0x114c4, 0x114c5, +0x114c7, 0x114c7, +0x11580, 0x115ae, +0x115d8, 0x115db, +0x11600, 0x1162f, +0x11644, 0x11644, +0x11680, 0x116aa, +0x11700, 0x11719, +0x118a0, 0x118df, +0x118ff, 0x118ff, +0x11ac0, 0x11af8, +0x12000, 0x12399, +0x12400, 0x1246e, +0x12480, 0x12543, +0x13000, 0x1342e, +0x14400, 0x14646, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16ad0, 0x16aed, +0x16b00, 0x16b2f, +0x16b40, 0x16b43, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16f00, 0x16f44, +0x16f50, 0x16f50, +0x16f93, 0x16f9f, +0x1b000, 0x1b001, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d6c0, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6fa, +0x1d6fc, 0x1d714, +0x1d716, 0x1d734, +0x1d736, 0x1d74e, +0x1d750, 0x1d76e, +0x1d770, 0x1d788, +0x1d78a, 0x1d7a8, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7cb, +0x1e800, 0x1e8c4, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x20000, 0x2a6d6, +0x2a700, 0x2b734, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2f800, 0x2fa1d, +}; /* END of CR_ID_Start */ + +/* PROPERTY: 'Ideographic': Binary Property */ +static const OnigCodePoint +CR_Ideographic[] = { 12, +0x3006, 0x3007, +0x3021, 0x3029, +0x3038, 0x303a, +0x3400, 0x4db5, +0x4e00, 0x9fd5, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0x20000, 0x2a6d6, +0x2a700, 0x2b734, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2f800, 0x2fa1d, +}; /* END of CR_Ideographic */ + +/* PROPERTY: 'Imperial_Aramaic': Script */ +static const OnigCodePoint +CR_Imperial_Aramaic[] = { 2, +0x10840, 0x10855, +0x10857, 0x1085f, +}; /* END of CR_Imperial_Aramaic */ + +/* PROPERTY: 'Inherited': Script */ +static const OnigCodePoint +CR_Inherited[] = { 27, +0x0300, 0x036f, +0x0485, 0x0486, +0x064b, 0x0655, +0x0670, 0x0670, +0x0951, 0x0952, +0x1ab0, 0x1abe, +0x1cd0, 0x1cd2, +0x1cd4, 0x1ce0, +0x1ce2, 0x1ce8, +0x1ced, 0x1ced, +0x1cf4, 0x1cf4, +0x1cf8, 0x1cf9, +0x1dc0, 0x1df5, +0x1dfc, 0x1dff, +0x200c, 0x200d, +0x20d0, 0x20f0, +0x302a, 0x302d, +0x3099, 0x309a, +0xfe00, 0xfe0f, +0xfe20, 0xfe2d, +0x101fd, 0x101fd, +0x102e0, 0x102e0, +0x1d167, 0x1d169, +0x1d17b, 0x1d182, +0x1d185, 0x1d18b, +0x1d1aa, 0x1d1ad, +0xe0100, 0xe01ef, +}; /* END of CR_Inherited */ + +/* PROPERTY: 'Inscriptional_Pahlavi': Script */ +static const OnigCodePoint +CR_Inscriptional_Pahlavi[] = { 2, +0x10b60, 0x10b72, +0x10b78, 0x10b7f, +}; /* END of CR_Inscriptional_Pahlavi */ + +/* PROPERTY: 'Inscriptional_Parthian': Script */ +static const OnigCodePoint +CR_Inscriptional_Parthian[] = { 2, +0x10b40, 0x10b55, +0x10b58, 0x10b5f, +}; /* END of CR_Inscriptional_Parthian */ + +/* PROPERTY: 'Javanese': Script */ +static const OnigCodePoint +CR_Javanese[] = { 3, +0xa980, 0xa9cd, +0xa9d0, 0xa9d9, +0xa9de, 0xa9df, +}; /* END of CR_Javanese */ + +/* PROPERTY: 'Join_Control': Binary Property */ +static const OnigCodePoint +CR_Join_Control[] = { 1, +0x200c, 0x200d, +}; /* END of CR_Join_Control */ + +/* PROPERTY: 'Kaithi': Script */ +static const OnigCodePoint +CR_Kaithi[] = { 1, +0x11080, 0x110c1, +}; /* END of CR_Kaithi */ + +/* PROPERTY: 'Kannada': Script */ +static const OnigCodePoint +CR_Kannada[] = { 14, +0x0c81, 0x0c83, +0x0c85, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbc, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccd, +0x0cd5, 0x0cd6, +0x0cde, 0x0cde, +0x0ce0, 0x0ce3, +0x0ce6, 0x0cef, +0x0cf1, 0x0cf2, +}; /* END of CR_Kannada */ + +/* PROPERTY: 'Katakana': Script */ +static const OnigCodePoint +CR_Katakana[] = { 8, +0x30a1, 0x30fa, +0x30fd, 0x30ff, +0x31f0, 0x31ff, +0x32d0, 0x32fe, +0x3300, 0x3357, +0xff66, 0xff6f, +0xff71, 0xff9d, +0x1b000, 0x1b000, +}; /* END of CR_Katakana */ + +/* PROPERTY: 'Kayah_Li': Script */ +static const OnigCodePoint +CR_Kayah_Li[] = { 2, +0xa900, 0xa92d, +0xa92f, 0xa92f, +}; /* END of CR_Kayah_Li */ + +/* PROPERTY: 'Kharoshthi': Script */ +static const OnigCodePoint +CR_Kharoshthi[] = { 8, +0x10a00, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a33, +0x10a38, 0x10a3a, +0x10a3f, 0x10a47, +0x10a50, 0x10a58, +}; /* END of CR_Kharoshthi */ + +/* PROPERTY: 'Khmer': Script */ +static const OnigCodePoint +CR_Khmer[] = { 4, +0x1780, 0x17dd, +0x17e0, 0x17e9, +0x17f0, 0x17f9, +0x19e0, 0x19ff, +}; /* END of CR_Khmer */ + +/* PROPERTY: 'Khojki': Script */ +static const OnigCodePoint +CR_Khojki[] = { 2, +0x11200, 0x11211, +0x11213, 0x1123d, +}; /* END of CR_Khojki */ + +/* PROPERTY: 'Khudawadi': Script */ +static const OnigCodePoint +CR_Khudawadi[] = { 2, +0x112b0, 0x112ea, +0x112f0, 0x112f9, +}; /* END of CR_Khudawadi */ +  /* PROPERTY: 'L': Major Category */  static const OnigCodePoint  CR_L[] = { 554, @@ -7354,6 +13841,109 @@ CR_LC[] = { 122,  0x1d7c4, 0x1d7cb,  }; /* END of CR_LC */ +/* PROPERTY: 'Lao': Script */ +static const OnigCodePoint +CR_Lao[] = { 18, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e87, 0x0e88, +0x0e8a, 0x0e8a, +0x0e8d, 0x0e8d, +0x0e94, 0x0e97, +0x0e99, 0x0e9f, +0x0ea1, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0ea7, +0x0eaa, 0x0eab, +0x0ead, 0x0eb9, +0x0ebb, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0ec8, 0x0ecd, +0x0ed0, 0x0ed9, +0x0edc, 0x0edf, +}; /* END of CR_Lao */ + +/* PROPERTY: 'Latin': Script */ +static const OnigCodePoint +CR_Latin[] = { 31, +0x0041, 0x005a, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00ba, 0x00ba, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x02b8, +0x02e0, 0x02e4, +0x1d00, 0x1d25, +0x1d2c, 0x1d5c, +0x1d62, 0x1d65, +0x1d6b, 0x1d77, +0x1d79, 0x1dbe, +0x1e00, 0x1eff, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x212a, 0x212b, +0x2132, 0x2132, +0x214e, 0x214e, +0x2160, 0x2188, +0x2c60, 0x2c7f, +0xa722, 0xa787, +0xa78b, 0xa7ad, +0xa7b0, 0xa7b7, +0xa7f7, 0xa7ff, +0xab30, 0xab5a, +0xab5c, 0xab64, +0xfb00, 0xfb06, +0xff21, 0xff3a, +0xff41, 0xff5a, +}; /* END of CR_Latin */ + +/* PROPERTY: 'Lepcha': Script */ +static const OnigCodePoint +CR_Lepcha[] = { 3, +0x1c00, 0x1c37, +0x1c3b, 0x1c49, +0x1c4d, 0x1c4f, +}; /* END of CR_Lepcha */ + +/* PROPERTY: 'Limbu': Script */ +static const OnigCodePoint +CR_Limbu[] = { 5, +0x1900, 0x191e, +0x1920, 0x192b, +0x1930, 0x193b, +0x1940, 0x1940, +0x1944, 0x194f, +}; /* END of CR_Limbu */ + +/* PROPERTY: 'Linear_A': Script */ +static const OnigCodePoint +CR_Linear_A[] = { 3, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +}; /* END of CR_Linear_A */ + +/* PROPERTY: 'Linear_B': Script */ +static const OnigCodePoint +CR_Linear_B[] = { 7, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +}; /* END of CR_Linear_B */ + +/* PROPERTY: 'Lisu': Script */ +static const OnigCodePoint +CR_Lisu[] = { 1, +0xa4d0, 0xa4ff, +}; /* END of CR_Lisu */ +  /* PROPERTY: 'Ll': General Category */  static const OnigCodePoint  CR_Ll[] = { 630, @@ -8488,6 +15078,21 @@ CR_Lo[] = { 433,  0x2f800, 0x2fa1d,  }; /* END of CR_Lo */ +/* PROPERTY: 'Logical_Order_Exception': Binary Property */ +static const OnigCodePoint +CR_Logical_Order_Exception[] = { 7, +0x0e40, 0x0e44, +0x0ec0, 0x0ec4, +0x19b5, 0x19b7, +0x19ba, 0x19ba, +0xaab5, 0xaab6, +0xaab9, 0xaab9, +0xaabb, 0xaabc, +}; /* END of CR_Logical_Order_Exception */ + +/* PROPERTY: 'Lowercase': Derived Property */ +#define CR_Lowercase CR_Lower +  /* PROPERTY: 'Lt': General Category */  static const OnigCodePoint  CR_Lt[] = { 10, @@ -9133,6 +15738,19 @@ CR_Lu[] = { 625,  0x1d7ca, 0x1d7ca,  }; /* END of CR_Lu */ +/* PROPERTY: 'Lycian': Script */ +static const OnigCodePoint +CR_Lycian[] = { 1, +0x10280, 0x1029c, +}; /* END of CR_Lycian */ + +/* PROPERTY: 'Lydian': Script */ +static const OnigCodePoint +CR_Lydian[] = { 2, +0x10920, 0x10939, +0x1093f, 0x1093f, +}; /* END of CR_Lydian */ +  /* PROPERTY: 'M': Major Category */  static const OnigCodePoint  CR_M[] = { 236, @@ -9374,6 +15992,185 @@ CR_M[] = { 236,  0xe0100, 0xe01ef,  }; /* END of CR_M */ +/* PROPERTY: 'Mahajani': Script */ +static const OnigCodePoint +CR_Mahajani[] = { 1, +0x11150, 0x11176, +}; /* END of CR_Mahajani */ + +/* PROPERTY: 'Malayalam': Script */ +static const OnigCodePoint +CR_Malayalam[] = { 11, +0x0d01, 0x0d03, +0x0d05, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d3a, +0x0d3d, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4e, +0x0d57, 0x0d57, +0x0d5f, 0x0d63, +0x0d66, 0x0d75, +0x0d79, 0x0d7f, +}; /* END of CR_Malayalam */ + +/* PROPERTY: 'Mandaic': Script */ +static const OnigCodePoint +CR_Mandaic[] = { 2, +0x0840, 0x085b, +0x085e, 0x085e, +}; /* END of CR_Mandaic */ + +/* PROPERTY: 'Manichaean': Script */ +static const OnigCodePoint +CR_Manichaean[] = { 2, +0x10ac0, 0x10ae6, +0x10aeb, 0x10af6, +}; /* END of CR_Manichaean */ + +/* PROPERTY: 'Math': Derived Property */ +static const OnigCodePoint +CR_Math[] = { 138, +0x002b, 0x002b, +0x003c, 0x003e, +0x005e, 0x005e, +0x007c, 0x007c, +0x007e, 0x007e, +0x00ac, 0x00ac, +0x00b1, 0x00b1, +0x00d7, 0x00d7, +0x00f7, 0x00f7, +0x03d0, 0x03d2, +0x03d5, 0x03d5, +0x03f0, 0x03f1, +0x03f4, 0x03f6, +0x0606, 0x0608, +0x2016, 0x2016, +0x2032, 0x2034, +0x2040, 0x2040, +0x2044, 0x2044, +0x2052, 0x2052, +0x2061, 0x2064, +0x207a, 0x207e, +0x208a, 0x208e, +0x20d0, 0x20dc, +0x20e1, 0x20e1, +0x20e5, 0x20e6, +0x20eb, 0x20ef, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2118, 0x211d, +0x2124, 0x2124, +0x2128, 0x2129, +0x212c, 0x212d, +0x212f, 0x2131, +0x2133, 0x2138, +0x213c, 0x2149, +0x214b, 0x214b, +0x2190, 0x21a7, +0x21a9, 0x21ae, +0x21b0, 0x21b1, +0x21b6, 0x21b7, +0x21bc, 0x21db, +0x21dd, 0x21dd, +0x21e4, 0x21e5, +0x21f4, 0x22ff, +0x2308, 0x230b, +0x2320, 0x2321, +0x237c, 0x237c, +0x239b, 0x23b5, +0x23b7, 0x23b7, +0x23d0, 0x23d0, +0x23dc, 0x23e2, +0x25a0, 0x25a1, +0x25ae, 0x25b7, +0x25bc, 0x25c1, +0x25c6, 0x25c7, +0x25ca, 0x25cb, +0x25cf, 0x25d3, +0x25e2, 0x25e2, +0x25e4, 0x25e4, +0x25e7, 0x25ec, +0x25f8, 0x25ff, +0x2605, 0x2606, +0x2640, 0x2640, +0x2642, 0x2642, +0x2660, 0x2663, +0x266d, 0x266f, +0x27c0, 0x27ff, +0x2900, 0x2aff, +0x2b30, 0x2b44, +0x2b47, 0x2b4c, +0xfb29, 0xfb29, +0xfe61, 0xfe66, +0xfe68, 0xfe68, +0xff0b, 0xff0b, +0xff1c, 0xff1e, +0xff3c, 0xff3c, +0xff3e, 0xff3e, +0xff5c, 0xff5c, +0xff5e, 0xff5e, +0xffe2, 0xffe2, +0xffe9, 0xffec, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d7cb, +0x1d7ce, 0x1d7ff, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x1eef0, 0x1eef1, +}; /* END of CR_Math */ +  /* PROPERTY: 'Mc': General Category */  static const OnigCodePoint  CR_Mc[] = { 147, @@ -9536,6 +16333,43 @@ CR_Me[] = { 5,  0xa670, 0xa672,  }; /* END of CR_Me */ +/* PROPERTY: 'Meetei_Mayek': Script */ +static const OnigCodePoint +CR_Meetei_Mayek[] = { 3, +0xaae0, 0xaaf6, +0xabc0, 0xabed, +0xabf0, 0xabf9, +}; /* END of CR_Meetei_Mayek */ + +/* PROPERTY: 'Mende_Kikakui': Script */ +static const OnigCodePoint +CR_Mende_Kikakui[] = { 2, +0x1e800, 0x1e8c4, +0x1e8c7, 0x1e8d6, +}; /* END of CR_Mende_Kikakui */ + +/* PROPERTY: 'Meroitic_Cursive': Script */ +static const OnigCodePoint +CR_Meroitic_Cursive[] = { 3, +0x109a0, 0x109b7, +0x109bc, 0x109cf, +0x109d2, 0x109ff, +}; /* END of CR_Meroitic_Cursive */ + +/* PROPERTY: 'Meroitic_Hieroglyphs': Script */ +static const OnigCodePoint +CR_Meroitic_Hieroglyphs[] = { 1, +0x10980, 0x1099f, +}; /* END of CR_Meroitic_Hieroglyphs */ + +/* PROPERTY: 'Miao': Script */ +static const OnigCodePoint +CR_Miao[] = { 3, +0x16f00, 0x16f44, +0x16f50, 0x16f7e, +0x16f8f, 0x16f9f, +}; /* END of CR_Miao */ +  /* PROPERTY: 'Mn': General Category */  static const OnigCodePoint  CR_Mn[] = { 266, @@ -9807,6 +16641,50 @@ CR_Mn[] = { 266,  0xe0100, 0xe01ef,  }; /* END of CR_Mn */ +/* PROPERTY: 'Modi': Script */ +static const OnigCodePoint +CR_Modi[] = { 2, +0x11600, 0x11644, +0x11650, 0x11659, +}; /* END of CR_Modi */ + +/* PROPERTY: 'Mongolian': Script */ +static const OnigCodePoint +CR_Mongolian[] = { 6, +0x1800, 0x1801, +0x1804, 0x1804, +0x1806, 0x180e, +0x1810, 0x1819, +0x1820, 0x1877, +0x1880, 0x18aa, +}; /* END of CR_Mongolian */ + +/* PROPERTY: 'Mro': Script */ +static const OnigCodePoint +CR_Mro[] = { 3, +0x16a40, 0x16a5e, +0x16a60, 0x16a69, +0x16a6e, 0x16a6f, +}; /* END of CR_Mro */ + +/* PROPERTY: 'Multani': Script */ +static const OnigCodePoint +CR_Multani[] = { 5, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a9, +}; /* END of CR_Multani */ + +/* PROPERTY: 'Myanmar': Script */ +static const OnigCodePoint +CR_Myanmar[] = { 3, +0x1000, 0x109f, +0xa9e0, 0xa9fe, +0xaa60, 0xaa7f, +}; /* END of CR_Myanmar */ +  /* PROPERTY: 'N': Major Category */  static const OnigCodePoint  CR_N[] = { 111, @@ -9923,9 +16801,31 @@ CR_N[] = { 111,  0x1f100, 0x1f10c,  }; /* END of CR_N */ +/* PROPERTY: 'Nabataean': Script */ +static const OnigCodePoint +CR_Nabataean[] = { 2, +0x10880, 0x1089e, +0x108a7, 0x108af, +}; /* END of CR_Nabataean */ +  /* PROPERTY: 'Nd': General Category */  #define CR_Nd CR_Digit +/* PROPERTY: 'New_Tai_Lue': Script */ +static const OnigCodePoint +CR_New_Tai_Lue[] = { 4, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x19d0, 0x19da, +0x19de, 0x19df, +}; /* END of CR_New_Tai_Lue */ + +/* PROPERTY: 'Nko': Script */ +static const OnigCodePoint +CR_Nko[] = { 1, +0x07c0, 0x07fa, +}; /* END of CR_Nko */ +  /* PROPERTY: 'Nl': General Category */  static const OnigCodePoint  CR_Nl[] = { 12, @@ -10006,9 +16906,597 @@ CR_No[] = { 58,  0x1f100, 0x1f10c,  }; /* END of CR_No */ +/* PROPERTY: 'Noncharacter_Code_Point': Binary Property */ +static const OnigCodePoint +CR_Noncharacter_Code_Point[] = { 18, +0xfdd0, 0xfdef, +0xfffe, 0xffff, +0x1fffe, 0x1ffff, +0x2fffe, 0x2ffff, +0x3fffe, 0x3ffff, +0x4fffe, 0x4ffff, +0x5fffe, 0x5ffff, +0x6fffe, 0x6ffff, +0x7fffe, 0x7ffff, +0x8fffe, 0x8ffff, +0x9fffe, 0x9ffff, +0xafffe, 0xaffff, +0xbfffe, 0xbffff, +0xcfffe, 0xcffff, +0xdfffe, 0xdffff, +0xefffe, 0xeffff, +0xffffe, 0xfffff, +0x10fffe, 0x10ffff, +}; /* END of CR_Noncharacter_Code_Point */ + +/* PROPERTY: 'Ogham': Script */ +static const OnigCodePoint +CR_Ogham[] = { 1, +0x1680, 0x169c, +}; /* END of CR_Ogham */ + +/* PROPERTY: 'Ol_Chiki': Script */ +static const OnigCodePoint +CR_Ol_Chiki[] = { 1, +0x1c50, 0x1c7f, +}; /* END of CR_Ol_Chiki */ + +/* PROPERTY: 'Old_Hungarian': Script */ +static const OnigCodePoint +CR_Old_Hungarian[] = { 3, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10cfa, 0x10cff, +}; /* END of CR_Old_Hungarian */ + +/* PROPERTY: 'Old_Italic': Script */ +static const OnigCodePoint +CR_Old_Italic[] = { 1, +0x10300, 0x10323, +}; /* END of CR_Old_Italic */ + +/* PROPERTY: 'Old_North_Arabian': Script */ +static const OnigCodePoint +CR_Old_North_Arabian[] = { 1, +0x10a80, 0x10a9f, +}; /* END of CR_Old_North_Arabian */ + +/* PROPERTY: 'Old_Permic': Script */ +static const OnigCodePoint +CR_Old_Permic[] = { 1, +0x10350, 0x1037a, +}; /* END of CR_Old_Permic */ + +/* PROPERTY: 'Old_Persian': Script */ +static const OnigCodePoint +CR_Old_Persian[] = { 2, +0x103a0, 0x103c3, +0x103c8, 0x103d5, +}; /* END of CR_Old_Persian */ + +/* PROPERTY: 'Old_South_Arabian': Script */ +static const OnigCodePoint +CR_Old_South_Arabian[] = { 1, +0x10a60, 0x10a7f, +}; /* END of CR_Old_South_Arabian */ + +/* PROPERTY: 'Old_Turkic': Script */ +static const OnigCodePoint +CR_Old_Turkic[] = { 1, +0x10c00, 0x10c48, +}; /* END of CR_Old_Turkic */ + +/* PROPERTY: 'Oriya': Script */ +static const OnigCodePoint +CR_Oriya[] = { 14, +0x0b01, 0x0b03, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3c, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4d, +0x0b56, 0x0b57, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b63, +0x0b66, 0x0b77, +}; /* END of CR_Oriya */ + +/* PROPERTY: 'Osmanya': Script */ +static const OnigCodePoint +CR_Osmanya[] = { 2, +0x10480, 0x1049d, +0x104a0, 0x104a9, +}; /* END of CR_Osmanya */ + +/* PROPERTY: 'Other_Alphabetic': Binary Property */ +static const OnigCodePoint +CR_Other_Alphabetic[] = { 178, +0x0345, 0x0345, +0x05b0, 0x05bd, +0x05bf, 0x05bf, +0x05c1, 0x05c2, +0x05c4, 0x05c5, +0x05c7, 0x05c7, +0x0610, 0x061a, +0x064b, 0x0657, +0x0659, 0x065f, +0x0670, 0x0670, +0x06d6, 0x06dc, +0x06e1, 0x06e4, +0x06e7, 0x06e8, +0x06ed, 0x06ed, +0x0711, 0x0711, +0x0730, 0x073f, +0x07a6, 0x07b0, +0x0816, 0x0817, +0x081b, 0x0823, +0x0825, 0x0827, +0x0829, 0x082c, +0x08e3, 0x08e9, +0x08f0, 0x0903, +0x093a, 0x093b, +0x093e, 0x094c, +0x094e, 0x094f, +0x0955, 0x0957, +0x0962, 0x0963, +0x0981, 0x0983, +0x09be, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09cc, +0x09d7, 0x09d7, +0x09e2, 0x09e3, +0x0a01, 0x0a03, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4c, +0x0a51, 0x0a51, +0x0a70, 0x0a71, +0x0a75, 0x0a75, +0x0a81, 0x0a83, +0x0abe, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acc, +0x0ae2, 0x0ae3, +0x0b01, 0x0b03, +0x0b3e, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4c, +0x0b56, 0x0b57, +0x0b62, 0x0b63, +0x0b82, 0x0b82, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcc, +0x0bd7, 0x0bd7, +0x0c00, 0x0c03, +0x0c3e, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4c, +0x0c55, 0x0c56, +0x0c62, 0x0c63, +0x0c81, 0x0c83, +0x0cbe, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccc, +0x0cd5, 0x0cd6, +0x0ce2, 0x0ce3, +0x0d01, 0x0d03, +0x0d3e, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4c, +0x0d57, 0x0d57, +0x0d62, 0x0d63, +0x0d82, 0x0d83, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0df2, 0x0df3, +0x0e31, 0x0e31, +0x0e34, 0x0e3a, +0x0e4d, 0x0e4d, +0x0eb1, 0x0eb1, +0x0eb4, 0x0eb9, +0x0ebb, 0x0ebc, +0x0ecd, 0x0ecd, +0x0f71, 0x0f81, +0x0f8d, 0x0f97, +0x0f99, 0x0fbc, +0x102b, 0x1036, +0x1038, 0x1038, +0x103b, 0x103e, +0x1056, 0x1059, +0x105e, 0x1060, +0x1062, 0x1062, +0x1067, 0x1068, +0x1071, 0x1074, +0x1082, 0x1086, +0x109c, 0x109d, +0x135f, 0x135f, +0x1712, 0x1713, +0x1732, 0x1733, +0x1752, 0x1753, +0x1772, 0x1773, +0x17b6, 0x17c8, +0x18a9, 0x18a9, +0x1920, 0x192b, +0x1930, 0x1938, +0x1a17, 0x1a1b, +0x1a55, 0x1a5e, +0x1a61, 0x1a74, +0x1b00, 0x1b04, +0x1b35, 0x1b43, +0x1b80, 0x1b82, +0x1ba1, 0x1ba9, +0x1bac, 0x1bad, +0x1be7, 0x1bf1, +0x1c24, 0x1c35, +0x1cf2, 0x1cf3, +0x1de7, 0x1df4, +0x24b6, 0x24e9, +0x2de0, 0x2dff, +0xa674, 0xa67b, +0xa69e, 0xa69f, +0xa823, 0xa827, +0xa880, 0xa881, +0xa8b4, 0xa8c3, +0xa926, 0xa92a, +0xa947, 0xa952, +0xa980, 0xa983, +0xa9b4, 0xa9bf, +0xaa29, 0xaa36, +0xaa43, 0xaa43, +0xaa4c, 0xaa4d, +0xaab0, 0xaab0, +0xaab2, 0xaab4, +0xaab7, 0xaab8, +0xaabe, 0xaabe, +0xaaeb, 0xaaef, +0xaaf5, 0xaaf5, +0xabe3, 0xabea, +0xfb1e, 0xfb1e, +0x10376, 0x1037a, +0x10a01, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a0f, +0x11000, 0x11002, +0x11038, 0x11045, +0x11082, 0x11082, +0x110b0, 0x110b8, +0x11100, 0x11102, +0x11127, 0x11132, +0x11180, 0x11182, +0x111b3, 0x111bf, +0x1122c, 0x11234, +0x11237, 0x11237, +0x112df, 0x112e8, +0x11300, 0x11303, +0x1133e, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134c, +0x11357, 0x11357, +0x11362, 0x11363, +0x114b0, 0x114c1, +0x115af, 0x115b5, +0x115b8, 0x115be, +0x115dc, 0x115dd, +0x11630, 0x1163e, +0x11640, 0x11640, +0x116ab, 0x116b5, +0x1171d, 0x1172a, +0x16b30, 0x16b36, +0x16f51, 0x16f7e, +0x1bc9e, 0x1bc9e, +0x1f130, 0x1f149, +0x1f150, 0x1f169, +0x1f170, 0x1f189, +}; /* END of CR_Other_Alphabetic */ + +/* PROPERTY: 'Other_Default_Ignorable_Code_Point': Binary Property */ +static const OnigCodePoint +CR_Other_Default_Ignorable_Code_Point[] = { 11, +0x034f, 0x034f, +0x115f, 0x1160, +0x17b4, 0x17b5, +0x2065, 0x2065, +0x3164, 0x3164, +0xffa0, 0xffa0, +0xfff0, 0xfff8, +0xe0000, 0xe0000, +0xe0002, 0xe001f, +0xe0080, 0xe00ff, +0xe01f0, 0xe0fff, +}; /* END of CR_Other_Default_Ignorable_Code_Point */ + +/* PROPERTY: 'Other_Grapheme_Extend': Binary Property */ +static const OnigCodePoint +CR_Other_Grapheme_Extend[] = { 22, +0x09be, 0x09be, +0x09d7, 0x09d7, +0x0b3e, 0x0b3e, +0x0b57, 0x0b57, +0x0bbe, 0x0bbe, +0x0bd7, 0x0bd7, +0x0cc2, 0x0cc2, +0x0cd5, 0x0cd6, +0x0d3e, 0x0d3e, +0x0d57, 0x0d57, +0x0dcf, 0x0dcf, +0x0ddf, 0x0ddf, +0x200c, 0x200d, +0x302e, 0x302f, +0xff9e, 0xff9f, +0x1133e, 0x1133e, +0x11357, 0x11357, +0x114b0, 0x114b0, +0x114bd, 0x114bd, +0x115af, 0x115af, +0x1d165, 0x1d165, +0x1d16e, 0x1d172, +}; /* END of CR_Other_Grapheme_Extend */ + +/* PROPERTY: 'Other_ID_Continue': Binary Property */ +static const OnigCodePoint +CR_Other_ID_Continue[] = { 4, +0x00b7, 0x00b7, +0x0387, 0x0387, +0x1369, 0x1371, +0x19da, 0x19da, +}; /* END of CR_Other_ID_Continue */ + +/* PROPERTY: 'Other_ID_Start': Binary Property */ +static const OnigCodePoint +CR_Other_ID_Start[] = { 3, +0x2118, 0x2118, +0x212e, 0x212e, +0x309b, 0x309c, +}; /* END of CR_Other_ID_Start */ + +/* PROPERTY: 'Other_Lowercase': Binary Property */ +static const OnigCodePoint +CR_Other_Lowercase[] = { 20, +0x00aa, 0x00aa, +0x00ba, 0x00ba, +0x02b0, 0x02b8, +0x02c0, 0x02c1, +0x02e0, 0x02e4, +0x0345, 0x0345, +0x037a, 0x037a, +0x1d2c, 0x1d6a, +0x1d78, 0x1d78, +0x1d9b, 0x1dbf, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x2170, 0x217f, +0x24d0, 0x24e9, +0x2c7c, 0x2c7d, +0xa69c, 0xa69d, +0xa770, 0xa770, +0xa7f8, 0xa7f9, +0xab5c, 0xab5f, +}; /* END of CR_Other_Lowercase */ + +/* PROPERTY: 'Other_Math': Binary Property */ +static const OnigCodePoint +CR_Other_Math[] = { 134, +0x005e, 0x005e, +0x03d0, 0x03d2, +0x03d5, 0x03d5, +0x03f0, 0x03f1, +0x03f4, 0x03f5, +0x2016, 0x2016, +0x2032, 0x2034, +0x2040, 0x2040, +0x2061, 0x2064, +0x207d, 0x207e, +0x208d, 0x208e, +0x20d0, 0x20dc, +0x20e1, 0x20e1, +0x20e5, 0x20e6, +0x20eb, 0x20ef, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2119, 0x211d, +0x2124, 0x2124, +0x2128, 0x2129, +0x212c, 0x212d, +0x212f, 0x2131, +0x2133, 0x2138, +0x213c, 0x213f, +0x2145, 0x2149, +0x2195, 0x2199, +0x219c, 0x219f, +0x21a1, 0x21a2, +0x21a4, 0x21a5, +0x21a7, 0x21a7, +0x21a9, 0x21ad, +0x21b0, 0x21b1, +0x21b6, 0x21b7, +0x21bc, 0x21cd, +0x21d0, 0x21d1, +0x21d3, 0x21d3, +0x21d5, 0x21db, +0x21dd, 0x21dd, +0x21e4, 0x21e5, +0x2308, 0x230b, +0x23b4, 0x23b5, +0x23b7, 0x23b7, +0x23d0, 0x23d0, +0x23e2, 0x23e2, +0x25a0, 0x25a1, +0x25ae, 0x25b6, +0x25bc, 0x25c0, +0x25c6, 0x25c7, +0x25ca, 0x25cb, +0x25cf, 0x25d3, +0x25e2, 0x25e2, +0x25e4, 0x25e4, +0x25e7, 0x25ec, +0x2605, 0x2606, +0x2640, 0x2640, +0x2642, 0x2642, +0x2660, 0x2663, +0x266d, 0x266e, +0x27c5, 0x27c6, +0x27e6, 0x27ef, +0x2983, 0x2998, +0x29d8, 0x29db, +0x29fc, 0x29fd, +0xfe61, 0xfe61, +0xfe63, 0xfe63, +0xfe68, 0xfe68, +0xff3c, 0xff3c, +0xff3e, 0xff3e, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d6c0, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6fa, +0x1d6fc, 0x1d714, +0x1d716, 0x1d734, +0x1d736, 0x1d74e, +0x1d750, 0x1d76e, +0x1d770, 0x1d788, +0x1d78a, 0x1d7a8, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7cb, +0x1d7ce, 0x1d7ff, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +}; /* END of CR_Other_Math */ + +/* PROPERTY: 'Other_Uppercase': Binary Property */ +static const OnigCodePoint +CR_Other_Uppercase[] = { 5, +0x2160, 0x216f, +0x24b6, 0x24cf, +0x1f130, 0x1f149, +0x1f150, 0x1f169, +0x1f170, 0x1f189, +}; /* END of CR_Other_Uppercase */ +  /* PROPERTY: 'P': Major Category */  #define CR_P CR_Punct +/* PROPERTY: 'Pahawh_Hmong': Script */ +static const OnigCodePoint +CR_Pahawh_Hmong[] = { 5, +0x16b00, 0x16b45, +0x16b50, 0x16b59, +0x16b5b, 0x16b61, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +}; /* END of CR_Pahawh_Hmong */ + +/* PROPERTY: 'Palmyrene': Script */ +static const OnigCodePoint +CR_Palmyrene[] = { 1, +0x10860, 0x1087f, +}; /* END of CR_Palmyrene */ + +/* PROPERTY: 'Pattern_Syntax': Binary Property */ +static const OnigCodePoint +CR_Pattern_Syntax[] = { 28, +0x0021, 0x002f, +0x003a, 0x0040, +0x005b, 0x005e, +0x0060, 0x0060, +0x007b, 0x007e, +0x00a1, 0x00a7, +0x00a9, 0x00a9, +0x00ab, 0x00ac, +0x00ae, 0x00ae, +0x00b0, 0x00b1, +0x00b6, 0x00b6, +0x00bb, 0x00bb, +0x00bf, 0x00bf, +0x00d7, 0x00d7, +0x00f7, 0x00f7, +0x2010, 0x2027, +0x2030, 0x203e, +0x2041, 0x2053, +0x2055, 0x205e, +0x2190, 0x245f, +0x2500, 0x2775, +0x2794, 0x2bff, +0x2e00, 0x2e7f, +0x3001, 0x3003, +0x3008, 0x3020, +0x3030, 0x3030, +0xfd3e, 0xfd3f, +0xfe45, 0xfe46, +}; /* END of CR_Pattern_Syntax */ + +/* PROPERTY: 'Pattern_White_Space': Binary Property */ +static const OnigCodePoint +CR_Pattern_White_Space[] = { 5, +0x0009, 0x000d, +0x0020, 0x0020, +0x0085, 0x0085, +0x200e, 0x200f, +0x2028, 0x2029, +}; /* END of CR_Pattern_White_Space */ + +/* PROPERTY: 'Pau_Cin_Hau': Script */ +static const OnigCodePoint +CR_Pau_Cin_Hau[] = { 1, +0x11ac0, 0x11af8, +}; /* END of CR_Pau_Cin_Hau */ +  /* PROPERTY: 'Pc': General Category */  static const OnigCodePoint  CR_Pc[] = { 6, @@ -10134,6 +17622,19 @@ CR_Pf[] = { 10,  0x2e21, 0x2e21,  }; /* END of CR_Pf */ +/* PROPERTY: 'Phags_Pa': Script */ +static const OnigCodePoint +CR_Phags_Pa[] = { 1, +0xa840, 0xa877, +}; /* END of CR_Phags_Pa */ + +/* PROPERTY: 'Phoenician': Script */ +static const OnigCodePoint +CR_Phoenician[] = { 2, +0x10900, 0x1091b, +0x1091f, 0x1091f, +}; /* END of CR_Phoenician */ +  /* PROPERTY: 'Pi': General Category */  static const OnigCodePoint  CR_Pi[] = { 11, @@ -10392,6 +17893,54 @@ CR_Ps[] = { 75,  0xff62, 0xff62,  }; /* END of CR_Ps */ +/* PROPERTY: 'Psalter_Pahlavi': Script */ +static const OnigCodePoint +CR_Psalter_Pahlavi[] = { 3, +0x10b80, 0x10b91, +0x10b99, 0x10b9c, +0x10ba9, 0x10baf, +}; /* END of CR_Psalter_Pahlavi */ + +/* PROPERTY: 'Quotation_Mark': Binary Property */ +static const OnigCodePoint +CR_Quotation_Mark[] = { 13, +0x0022, 0x0022, +0x0027, 0x0027, +0x00ab, 0x00ab, +0x00bb, 0x00bb, +0x2018, 0x201f, +0x2039, 0x203a, +0x2e42, 0x2e42, +0x300c, 0x300f, +0x301d, 0x301f, +0xfe41, 0xfe44, +0xff02, 0xff02, +0xff07, 0xff07, +0xff62, 0xff63, +}; /* END of CR_Quotation_Mark */ + +/* PROPERTY: 'Radical': Binary Property */ +static const OnigCodePoint +CR_Radical[] = { 3, +0x2e80, 0x2e99, +0x2e9b, 0x2ef3, +0x2f00, 0x2fd5, +}; /* END of CR_Radical */ + +/* PROPERTY: 'Rejang': Script */ +static const OnigCodePoint +CR_Rejang[] = { 2, +0xa930, 0xa953, +0xa95f, 0xa95f, +}; /* END of CR_Rejang */ + +/* PROPERTY: 'Runic': Script */ +static const OnigCodePoint +CR_Runic[] = { 2, +0x16a0, 0x16ea, +0x16ee, 0x16f8, +}; /* END of CR_Runic */ +  /* PROPERTY: 'S': Major Category */  static const OnigCodePoint  CR_S[] = { 214, @@ -10611,6 +18160,89 @@ CR_S[] = { 214,  0x1f9c0, 0x1f9c0,  }; /* END of CR_S */ +/* PROPERTY: 'STerm': Binary Property */ +static const OnigCodePoint +CR_STerm[] = { 64, +0x0021, 0x0021, +0x002e, 0x002e, +0x003f, 0x003f, +0x0589, 0x0589, +0x061f, 0x061f, +0x06d4, 0x06d4, +0x0700, 0x0702, +0x07f9, 0x07f9, +0x0964, 0x0965, +0x104a, 0x104b, +0x1362, 0x1362, +0x1367, 0x1368, +0x166e, 0x166e, +0x1735, 0x1736, +0x1803, 0x1803, +0x1809, 0x1809, +0x1944, 0x1945, +0x1aa8, 0x1aab, +0x1b5a, 0x1b5b, +0x1b5e, 0x1b5f, +0x1c3b, 0x1c3c, +0x1c7e, 0x1c7f, +0x203c, 0x203d, +0x2047, 0x2049, +0x2e2e, 0x2e2e, +0x2e3c, 0x2e3c, +0x3002, 0x3002, +0xa4ff, 0xa4ff, +0xa60e, 0xa60f, +0xa6f3, 0xa6f3, +0xa6f7, 0xa6f7, +0xa876, 0xa877, +0xa8ce, 0xa8cf, +0xa92f, 0xa92f, +0xa9c8, 0xa9c9, +0xaa5d, 0xaa5f, +0xaaf0, 0xaaf1, +0xabeb, 0xabeb, +0xfe52, 0xfe52, +0xfe56, 0xfe57, +0xff01, 0xff01, +0xff0e, 0xff0e, +0xff1f, 0xff1f, +0xff61, 0xff61, +0x10a56, 0x10a57, +0x11047, 0x11048, +0x110be, 0x110c1, +0x11141, 0x11143, +0x111c5, 0x111c6, +0x111cd, 0x111cd, +0x111de, 0x111df, +0x11238, 0x11239, +0x1123b, 0x1123c, +0x112a9, 0x112a9, +0x115c2, 0x115c3, +0x115c9, 0x115d7, +0x11641, 0x11642, +0x1173c, 0x1173e, +0x16a6e, 0x16a6f, +0x16af5, 0x16af5, +0x16b37, 0x16b38, +0x16b44, 0x16b44, +0x1bc9f, 0x1bc9f, +0x1da88, 0x1da88, +}; /* END of CR_STerm */ + +/* PROPERTY: 'Samaritan': Script */ +static const OnigCodePoint +CR_Samaritan[] = { 2, +0x0800, 0x082d, +0x0830, 0x083e, +}; /* END of CR_Samaritan */ + +/* PROPERTY: 'Saurashtra': Script */ +static const OnigCodePoint +CR_Saurashtra[] = { 2, +0xa880, 0xa8c4, +0xa8ce, 0xa8d9, +}; /* END of CR_Saurashtra */ +  /* PROPERTY: 'Sc': General Category */  static const OnigCodePoint  CR_Sc[] = { 17, @@ -10633,6 +18265,52 @@ CR_Sc[] = { 17,  0xffe5, 0xffe6,  }; /* END of CR_Sc */ +/* PROPERTY: 'Sharada': Script */ +static const OnigCodePoint +CR_Sharada[] = { 2, +0x11180, 0x111cd, +0x111d0, 0x111df, +}; /* END of CR_Sharada */ + +/* PROPERTY: 'Shavian': Script */ +static const OnigCodePoint +CR_Shavian[] = { 1, +0x10450, 0x1047f, +}; /* END of CR_Shavian */ + +/* PROPERTY: 'Siddham': Script */ +static const OnigCodePoint +CR_Siddham[] = { 2, +0x11580, 0x115b5, +0x115b8, 0x115dd, +}; /* END of CR_Siddham */ + +/* PROPERTY: 'SignWriting': Script */ +static const OnigCodePoint +CR_SignWriting[] = { 3, +0x1d800, 0x1da8b, +0x1da9b, 0x1da9f, +0x1daa1, 0x1daaf, +}; /* END of CR_SignWriting */ + +/* PROPERTY: 'Sinhala': Script */ +static const OnigCodePoint +CR_Sinhala[] = { 13, +0x0d82, 0x0d83, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0dca, 0x0dca, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0de6, 0x0def, +0x0df2, 0x0df4, +0x111e1, 0x111f4, +}; /* END of CR_Sinhala */ +  /* PROPERTY: 'Sk': General Category */  static const OnigCodePoint  CR_Sk[] = { 29, @@ -10911,3318 +18589,120 @@ CR_So[] = { 170,  0x1f9c0, 0x1f9c0,  }; /* END of CR_So */ -/* PROPERTY: 'Z': Major Category */ +/* PROPERTY: 'Soft_Dotted': Binary Property */  static const OnigCodePoint -CR_Z[] = { 8, -0x0020, 0x0020, -0x00a0, 0x00a0, -0x1680, 0x1680, -0x2000, 0x200a, -0x2028, 0x2029, -0x202f, 0x202f, -0x205f, 0x205f, -0x3000, 0x3000, -}; /* END of CR_Z */ +CR_Soft_Dotted[] = { 31, +0x0069, 0x006a, +0x012f, 0x012f, +0x0249, 0x0249, +0x0268, 0x0268, +0x029d, 0x029d, +0x02b2, 0x02b2, +0x03f3, 0x03f3, +0x0456, 0x0456, +0x0458, 0x0458, +0x1d62, 0x1d62, +0x1d96, 0x1d96, +0x1da4, 0x1da4, +0x1da8, 0x1da8, +0x1e2d, 0x1e2d, +0x1ecb, 0x1ecb, +0x2071, 0x2071, +0x2148, 0x2149, +0x2c7c, 0x2c7c, +0x1d422, 0x1d423, +0x1d456, 0x1d457, +0x1d48a, 0x1d48b, +0x1d4be, 0x1d4bf, +0x1d4f2, 0x1d4f3, +0x1d526, 0x1d527, +0x1d55a, 0x1d55b, +0x1d58e, 0x1d58f, +0x1d5c2, 0x1d5c3, +0x1d5f6, 0x1d5f7, +0x1d62a, 0x1d62b, +0x1d65e, 0x1d65f, +0x1d692, 0x1d693, +}; /* END of CR_Soft_Dotted */ -/* PROPERTY: 'Zl': General Category */ +/* PROPERTY: 'Sora_Sompeng': Script */  static const OnigCodePoint -CR_Zl[] = { 1, -0x2028, 0x2028, -}; /* END of CR_Zl */ +CR_Sora_Sompeng[] = { 2, +0x110d0, 0x110e8, +0x110f0, 0x110f9, +}; /* END of CR_Sora_Sompeng */ -/* PROPERTY: 'Zp': General Category */ +/* PROPERTY: 'Sundanese': Script */  static const OnigCodePoint -CR_Zp[] = { 1, -0x2029, 0x2029, -}; /* END of CR_Zp */ +CR_Sundanese[] = { 2, +0x1b80, 0x1bbf, +0x1cc0, 0x1cc7, +}; /* END of CR_Sundanese */ -/* PROPERTY: 'Zs': General Category */ +/* PROPERTY: 'Syloti_Nagri': Script */  static const OnigCodePoint -CR_Zs[] = { 7, -0x0020, 0x0020, -0x00a0, 0x00a0, -0x1680, 0x1680, -0x2000, 0x200a, -0x202f, 0x202f, -0x205f, 0x205f, -0x3000, 0x3000, -}; /* END of CR_Zs */ +CR_Syloti_Nagri[] = { 1, +0xa800, 0xa82b, +}; /* END of CR_Syloti_Nagri */ -/* PROPERTY: 'Math': Derived Property */ +/* PROPERTY: 'Syriac': Script */  static const OnigCodePoint -CR_Math[] = { 138, -0x002b, 0x002b, -0x003c, 0x003e, -0x005e, 0x005e, -0x007c, 0x007c, -0x007e, 0x007e, -0x00ac, 0x00ac, -0x00b1, 0x00b1, -0x00d7, 0x00d7, -0x00f7, 0x00f7, -0x03d0, 0x03d2, -0x03d5, 0x03d5, -0x03f0, 0x03f1, -0x03f4, 0x03f6, -0x0606, 0x0608, -0x2016, 0x2016, -0x2032, 0x2034, -0x2040, 0x2040, -0x2044, 0x2044, -0x2052, 0x2052, -0x2061, 0x2064, -0x207a, 0x207e, -0x208a, 0x208e, -0x20d0, 0x20dc, -0x20e1, 0x20e1, -0x20e5, 0x20e6, -0x20eb, 0x20ef, -0x2102, 0x2102, -0x2107, 0x2107, -0x210a, 0x2113, -0x2115, 0x2115, -0x2118, 0x211d, -0x2124, 0x2124, -0x2128, 0x2129, -0x212c, 0x212d, -0x212f, 0x2131, -0x2133, 0x2138, -0x213c, 0x2149, -0x214b, 0x214b, -0x2190, 0x21a7, -0x21a9, 0x21ae, -0x21b0, 0x21b1, -0x21b6, 0x21b7, -0x21bc, 0x21db, -0x21dd, 0x21dd, -0x21e4, 0x21e5, -0x21f4, 0x22ff, -0x2308, 0x230b, -0x2320, 0x2321, -0x237c, 0x237c, -0x239b, 0x23b5, -0x23b7, 0x23b7, -0x23d0, 0x23d0, -0x23dc, 0x23e2, -0x25a0, 0x25a1, -0x25ae, 0x25b7, -0x25bc, 0x25c1, -0x25c6, 0x25c7, -0x25ca, 0x25cb, -0x25cf, 0x25d3, -0x25e2, 0x25e2, -0x25e4, 0x25e4, -0x25e7, 0x25ec, -0x25f8, 0x25ff, -0x2605, 0x2606, -0x2640, 0x2640, -0x2642, 0x2642, -0x2660, 0x2663, -0x266d, 0x266f, -0x27c0, 0x27ff, -0x2900, 0x2aff, -0x2b30, 0x2b44, -0x2b47, 0x2b4c, -0xfb29, 0xfb29, -0xfe61, 0xfe66, -0xfe68, 0xfe68, -0xff0b, 0xff0b, -0xff1c, 0xff1e, -0xff3c, 0xff3c, -0xff3e, 0xff3e, -0xff5c, 0xff5c, -0xff5e, 0xff5e, -0xffe2, 0xffe2, -0xffe9, 0xffec, -0x1d400, 0x1d454, -0x1d456, 0x1d49c, -0x1d49e, 0x1d49f, -0x1d4a2, 0x1d4a2, -0x1d4a5, 0x1d4a6, -0x1d4a9, 0x1d4ac, -0x1d4ae, 0x1d4b9, -0x1d4bb, 0x1d4bb, -0x1d4bd, 0x1d4c3, -0x1d4c5, 0x1d505, -0x1d507, 0x1d50a, -0x1d50d, 0x1d514, -0x1d516, 0x1d51c, -0x1d51e, 0x1d539, -0x1d53b, 0x1d53e, -0x1d540, 0x1d544, -0x1d546, 0x1d546, -0x1d54a, 0x1d550, -0x1d552, 0x1d6a5, -0x1d6a8, 0x1d7cb, -0x1d7ce, 0x1d7ff, -0x1ee00, 0x1ee03, -0x1ee05, 0x1ee1f, -0x1ee21, 0x1ee22, -0x1ee24, 0x1ee24, -0x1ee27, 0x1ee27, -0x1ee29, 0x1ee32, -0x1ee34, 0x1ee37, -0x1ee39, 0x1ee39, -0x1ee3b, 0x1ee3b, -0x1ee42, 0x1ee42, -0x1ee47, 0x1ee47, -0x1ee49, 0x1ee49, -0x1ee4b, 0x1ee4b, -0x1ee4d, 0x1ee4f, -0x1ee51, 0x1ee52, -0x1ee54, 0x1ee54, -0x1ee57, 0x1ee57, -0x1ee59, 0x1ee59, -0x1ee5b, 0x1ee5b, -0x1ee5d, 0x1ee5d, -0x1ee5f, 0x1ee5f, -0x1ee61, 0x1ee62, -0x1ee64, 0x1ee64, -0x1ee67, 0x1ee6a, -0x1ee6c, 0x1ee72, -0x1ee74, 0x1ee77, -0x1ee79, 0x1ee7c, -0x1ee7e, 0x1ee7e, -0x1ee80, 0x1ee89, -0x1ee8b, 0x1ee9b, -0x1eea1, 0x1eea3, -0x1eea5, 0x1eea9, -0x1eeab, 0x1eebb, -0x1eef0, 0x1eef1, -}; /* END of CR_Math */ - -/* PROPERTY: 'Alphabetic': Derived Property */ -#define CR_Alphabetic CR_Alpha - -/* PROPERTY: 'Lowercase': Derived Property */ -#define CR_Lowercase CR_Lower - -/* PROPERTY: 'Uppercase': Derived Property */ -#define CR_Uppercase CR_Upper +CR_Syriac[] = { 3, +0x0700, 0x070d, +0x070f, 0x074a, +0x074d, 0x074f, +}; /* END of CR_Syriac */ -/* PROPERTY: 'Cased': Derived Property */ +/* PROPERTY: 'Tagalog': Script */  static const OnigCodePoint -CR_Cased[] = { 131, -0x0041, 0x005a, -0x0061, 0x007a, -0x00aa, 0x00aa, -0x00b5, 0x00b5, -0x00ba, 0x00ba, -0x00c0, 0x00d6, -0x00d8, 0x00f6, -0x00f8, 0x01ba, -0x01bc, 0x01bf, -0x01c4, 0x0293, -0x0295, 0x02b8, -0x02c0, 0x02c1, -0x02e0, 0x02e4, -0x0345, 0x0345, -0x0370, 0x0373, -0x0376, 0x0377, -0x037a, 0x037d, -0x037f, 0x037f, -0x0386, 0x0386, -0x0388, 0x038a, -0x038c, 0x038c, -0x038e, 0x03a1, -0x03a3, 0x03f5, -0x03f7, 0x0481, -0x048a, 0x052f, -0x0531, 0x0556, -0x0561, 0x0587, -0x10a0, 0x10c5, -0x10c7, 0x10c7, -0x10cd, 0x10cd, -0x13a0, 0x13f5, -0x13f8, 0x13fd, -0x1d00, 0x1dbf, -0x1e00, 0x1f15, -0x1f18, 0x1f1d, -0x1f20, 0x1f45, -0x1f48, 0x1f4d, -0x1f50, 0x1f57, -0x1f59, 0x1f59, -0x1f5b, 0x1f5b, -0x1f5d, 0x1f5d, -0x1f5f, 0x1f7d, -0x1f80, 0x1fb4, -0x1fb6, 0x1fbc, -0x1fbe, 0x1fbe, -0x1fc2, 0x1fc4, -0x1fc6, 0x1fcc, -0x1fd0, 0x1fd3, -0x1fd6, 0x1fdb, -0x1fe0, 0x1fec, -0x1ff2, 0x1ff4, -0x1ff6, 0x1ffc, -0x2071, 0x2071, -0x207f, 0x207f, -0x2090, 0x209c, -0x2102, 0x2102, -0x2107, 0x2107, -0x210a, 0x2113, -0x2115, 0x2115, -0x2119, 0x211d, -0x2124, 0x2124, -0x2126, 0x2126, -0x2128, 0x2128, -0x212a, 0x212d, -0x212f, 0x2134, -0x2139, 0x2139, -0x213c, 0x213f, -0x2145, 0x2149, -0x214e, 0x214e, -0x2160, 0x217f, -0x2183, 0x2184, -0x24b6, 0x24e9, -0x2c00, 0x2c2e, -0x2c30, 0x2c5e, -0x2c60, 0x2ce4, -0x2ceb, 0x2cee, -0x2cf2, 0x2cf3, -0x2d00, 0x2d25, -0x2d27, 0x2d27, -0x2d2d, 0x2d2d, -0xa640, 0xa66d, -0xa680, 0xa69d, -0xa722, 0xa787, -0xa78b, 0xa78e, -0xa790, 0xa7ad, -0xa7b0, 0xa7b7, -0xa7f8, 0xa7fa, -0xab30, 0xab5a, -0xab5c, 0xab65, -0xab70, 0xabbf, -0xfb00, 0xfb06, -0xfb13, 0xfb17, -0xff21, 0xff3a, -0xff41, 0xff5a, -0x10400, 0x1044f, -0x10c80, 0x10cb2, -0x10cc0, 0x10cf2, -0x118a0, 0x118df, -0x1d400, 0x1d454, -0x1d456, 0x1d49c, -0x1d49e, 0x1d49f, -0x1d4a2, 0x1d4a2, -0x1d4a5, 0x1d4a6, -0x1d4a9, 0x1d4ac, -0x1d4ae, 0x1d4b9, -0x1d4bb, 0x1d4bb, -0x1d4bd, 0x1d4c3, -0x1d4c5, 0x1d505, -0x1d507, 0x1d50a, -0x1d50d, 0x1d514, -0x1d516, 0x1d51c, -0x1d51e, 0x1d539, -0x1d53b, 0x1d53e, -0x1d540, 0x1d544, -0x1d546, 0x1d546, -0x1d54a, 0x1d550, -0x1d552, 0x1d6a5, -0x1d6a8, 0x1d6c0, -0x1d6c2, 0x1d6da, -0x1d6dc, 0x1d6fa, -0x1d6fc, 0x1d714, -0x1d716, 0x1d734, -0x1d736, 0x1d74e, -0x1d750, 0x1d76e, -0x1d770, 0x1d788, -0x1d78a, 0x1d7a8, -0x1d7aa, 0x1d7c2, -0x1d7c4, 0x1d7cb, -0x1f130, 0x1f149, -0x1f150, 0x1f169, -0x1f170, 0x1f189, -}; /* END of CR_Cased */ +CR_Tagalog[] = { 2, +0x1700, 0x170c, +0x170e, 0x1714, +}; /* END of CR_Tagalog */ -/* PROPERTY: 'Case_Ignorable': Derived Property */ +/* PROPERTY: 'Tagbanwa': Script */  static const OnigCodePoint -CR_Case_Ignorable[] = { 346, -0x0027, 0x0027, -0x002e, 0x002e, -0x003a, 0x003a, -0x005e, 0x005e, -0x0060, 0x0060, -0x00a8, 0x00a8, -0x00ad, 0x00ad, -0x00af, 0x00af, -0x00b4, 0x00b4, -0x00b7, 0x00b8, -0x02b0, 0x036f, -0x0374, 0x0375, -0x037a, 0x037a, -0x0384, 0x0385, -0x0387, 0x0387, -0x0483, 0x0489, -0x0559, 0x0559, -0x0591, 0x05bd, -0x05bf, 0x05bf, -0x05c1, 0x05c2, -0x05c4, 0x05c5, -0x05c7, 0x05c7, -0x05f4, 0x05f4, -0x0600, 0x0605, -0x0610, 0x061a, -0x061c, 0x061c, -0x0640, 0x0640, -0x064b, 0x065f, -0x0670, 0x0670, -0x06d6, 0x06dd, -0x06df, 0x06e8, -0x06ea, 0x06ed, -0x070f, 0x070f, -0x0711, 0x0711, -0x0730, 0x074a, -0x07a6, 0x07b0, -0x07eb, 0x07f5, -0x07fa, 0x07fa, -0x0816, 0x082d, -0x0859, 0x085b, -0x08e3, 0x0902, -0x093a, 0x093a, -0x093c, 0x093c, -0x0941, 0x0948, -0x094d, 0x094d, -0x0951, 0x0957, -0x0962, 0x0963, -0x0971, 0x0971, -0x0981, 0x0981, -0x09bc, 0x09bc, -0x09c1, 0x09c4, -0x09cd, 0x09cd, -0x09e2, 0x09e3, -0x0a01, 0x0a02, -0x0a3c, 0x0a3c, -0x0a41, 0x0a42, -0x0a47, 0x0a48, -0x0a4b, 0x0a4d, -0x0a51, 0x0a51, -0x0a70, 0x0a71, -0x0a75, 0x0a75, -0x0a81, 0x0a82, -0x0abc, 0x0abc, -0x0ac1, 0x0ac5, -0x0ac7, 0x0ac8, -0x0acd, 0x0acd, -0x0ae2, 0x0ae3, -0x0b01, 0x0b01, -0x0b3c, 0x0b3c, -0x0b3f, 0x0b3f, -0x0b41, 0x0b44, -0x0b4d, 0x0b4d, -0x0b56, 0x0b56, -0x0b62, 0x0b63, -0x0b82, 0x0b82, -0x0bc0, 0x0bc0, -0x0bcd, 0x0bcd, -0x0c00, 0x0c00, -0x0c3e, 0x0c40, -0x0c46, 0x0c48, -0x0c4a, 0x0c4d, -0x0c55, 0x0c56, -0x0c62, 0x0c63, -0x0c81, 0x0c81, -0x0cbc, 0x0cbc, -0x0cbf, 0x0cbf, -0x0cc6, 0x0cc6, -0x0ccc, 0x0ccd, -0x0ce2, 0x0ce3, -0x0d01, 0x0d01, -0x0d41, 0x0d44, -0x0d4d, 0x0d4d, -0x0d62, 0x0d63, -0x0dca, 0x0dca, -0x0dd2, 0x0dd4, -0x0dd6, 0x0dd6, -0x0e31, 0x0e31, -0x0e34, 0x0e3a, -0x0e46, 0x0e4e, -0x0eb1, 0x0eb1, -0x0eb4, 0x0eb9, -0x0ebb, 0x0ebc, -0x0ec6, 0x0ec6, -0x0ec8, 0x0ecd, -0x0f18, 0x0f19, -0x0f35, 0x0f35, -0x0f37, 0x0f37, -0x0f39, 0x0f39, -0x0f71, 0x0f7e, -0x0f80, 0x0f84, -0x0f86, 0x0f87, -0x0f8d, 0x0f97, -0x0f99, 0x0fbc, -0x0fc6, 0x0fc6, -0x102d, 0x1030, -0x1032, 0x1037, -0x1039, 0x103a, -0x103d, 0x103e, -0x1058, 0x1059, -0x105e, 0x1060, -0x1071, 0x1074, -0x1082, 0x1082, -0x1085, 0x1086, -0x108d, 0x108d, -0x109d, 0x109d, -0x10fc, 0x10fc, -0x135d, 0x135f, -0x1712, 0x1714, -0x1732, 0x1734, -0x1752, 0x1753, +CR_Tagbanwa[] = { 3, +0x1760, 0x176c, +0x176e, 0x1770,  0x1772, 0x1773, -0x17b4, 0x17b5, -0x17b7, 0x17bd, -0x17c6, 0x17c6, -0x17c9, 0x17d3, -0x17d7, 0x17d7, -0x17dd, 0x17dd, -0x180b, 0x180e, -0x1843, 0x1843, -0x18a9, 0x18a9, -0x1920, 0x1922, -0x1927, 0x1928, -0x1932, 0x1932, -0x1939, 0x193b, -0x1a17, 0x1a18, -0x1a1b, 0x1a1b, -0x1a56, 0x1a56, -0x1a58, 0x1a5e, -0x1a60, 0x1a60, -0x1a62, 0x1a62, -0x1a65, 0x1a6c, -0x1a73, 0x1a7c, -0x1a7f, 0x1a7f, -0x1aa7, 0x1aa7, -0x1ab0, 0x1abe, -0x1b00, 0x1b03, -0x1b34, 0x1b34, -0x1b36, 0x1b3a, -0x1b3c, 0x1b3c, -0x1b42, 0x1b42, -0x1b6b, 0x1b73, -0x1b80, 0x1b81, -0x1ba2, 0x1ba5, -0x1ba8, 0x1ba9, -0x1bab, 0x1bad, -0x1be6, 0x1be6, -0x1be8, 0x1be9, -0x1bed, 0x1bed, -0x1bef, 0x1bf1, -0x1c2c, 0x1c33, -0x1c36, 0x1c37, -0x1c78, 0x1c7d, -0x1cd0, 0x1cd2, -0x1cd4, 0x1ce0, -0x1ce2, 0x1ce8, -0x1ced, 0x1ced, -0x1cf4, 0x1cf4, -0x1cf8, 0x1cf9, -0x1d2c, 0x1d6a, -0x1d78, 0x1d78, -0x1d9b, 0x1df5, -0x1dfc, 0x1dff, -0x1fbd, 0x1fbd, -0x1fbf, 0x1fc1, -0x1fcd, 0x1fcf, -0x1fdd, 0x1fdf, -0x1fed, 0x1fef, -0x1ffd, 0x1ffe, -0x200b, 0x200f, -0x2018, 0x2019, -0x2024, 0x2024, -0x2027, 0x2027, -0x202a, 0x202e, -0x2060, 0x2064, -0x2066, 0x206f, -0x2071, 0x2071, -0x207f, 0x207f, -0x2090, 0x209c, -0x20d0, 0x20f0, -0x2c7c, 0x2c7d, -0x2cef, 0x2cf1, -0x2d6f, 0x2d6f, -0x2d7f, 0x2d7f, -0x2de0, 0x2dff, -0x2e2f, 0x2e2f, -0x3005, 0x3005, -0x302a, 0x302d, -0x3031, 0x3035, -0x303b, 0x303b, -0x3099, 0x309e, -0x30fc, 0x30fe, -0xa015, 0xa015, -0xa4f8, 0xa4fd, -0xa60c, 0xa60c, -0xa66f, 0xa672, -0xa674, 0xa67d, -0xa67f, 0xa67f, -0xa69c, 0xa69f, -0xa6f0, 0xa6f1, -0xa700, 0xa721, -0xa770, 0xa770, -0xa788, 0xa78a, -0xa7f8, 0xa7f9, -0xa802, 0xa802, -0xa806, 0xa806, -0xa80b, 0xa80b, -0xa825, 0xa826, -0xa8c4, 0xa8c4, -0xa8e0, 0xa8f1, -0xa926, 0xa92d, -0xa947, 0xa951, -0xa980, 0xa982, -0xa9b3, 0xa9b3, -0xa9b6, 0xa9b9, -0xa9bc, 0xa9bc, -0xa9cf, 0xa9cf, -0xa9e5, 0xa9e6, -0xaa29, 0xaa2e, -0xaa31, 0xaa32, -0xaa35, 0xaa36, -0xaa43, 0xaa43, -0xaa4c, 0xaa4c, -0xaa70, 0xaa70, -0xaa7c, 0xaa7c, -0xaab0, 0xaab0, -0xaab2, 0xaab4, -0xaab7, 0xaab8, -0xaabe, 0xaabf, -0xaac1, 0xaac1, -0xaadd, 0xaadd, -0xaaec, 0xaaed, -0xaaf3, 0xaaf4, -0xaaf6, 0xaaf6, -0xab5b, 0xab5f, -0xabe5, 0xabe5, -0xabe8, 0xabe8, -0xabed, 0xabed, -0xfb1e, 0xfb1e, -0xfbb2, 0xfbc1, -0xfe00, 0xfe0f, -0xfe13, 0xfe13, -0xfe20, 0xfe2f, -0xfe52, 0xfe52, -0xfe55, 0xfe55, -0xfeff, 0xfeff, -0xff07, 0xff07, -0xff0e, 0xff0e, -0xff1a, 0xff1a, -0xff3e, 0xff3e, -0xff40, 0xff40, -0xff70, 0xff70, -0xff9e, 0xff9f, -0xffe3, 0xffe3, -0xfff9, 0xfffb, -0x101fd, 0x101fd, -0x102e0, 0x102e0, -0x10376, 0x1037a, -0x10a01, 0x10a03, -0x10a05, 0x10a06, -0x10a0c, 0x10a0f, -0x10a38, 0x10a3a, -0x10a3f, 0x10a3f, -0x10ae5, 0x10ae6, -0x11001, 0x11001, -0x11038, 0x11046, -0x1107f, 0x11081, -0x110b3, 0x110b6, -0x110b9, 0x110ba, -0x110bd, 0x110bd, -0x11100, 0x11102, -0x11127, 0x1112b, -0x1112d, 0x11134, -0x11173, 0x11173, -0x11180, 0x11181, -0x111b6, 0x111be, -0x111ca, 0x111cc, -0x1122f, 0x11231, -0x11234, 0x11234, -0x11236, 0x11237, -0x112df, 0x112df, -0x112e3, 0x112ea, -0x11300, 0x11301, -0x1133c, 0x1133c, -0x11340, 0x11340, -0x11366, 0x1136c, -0x11370, 0x11374, -0x114b3, 0x114b8, -0x114ba, 0x114ba, -0x114bf, 0x114c0, -0x114c2, 0x114c3, -0x115b2, 0x115b5, -0x115bc, 0x115bd, -0x115bf, 0x115c0, -0x115dc, 0x115dd, -0x11633, 0x1163a, -0x1163d, 0x1163d, -0x1163f, 0x11640, -0x116ab, 0x116ab, -0x116ad, 0x116ad, -0x116b0, 0x116b5, -0x116b7, 0x116b7, -0x1171d, 0x1171f, -0x11722, 0x11725, -0x11727, 0x1172b, -0x16af0, 0x16af4, -0x16b30, 0x16b36, -0x16b40, 0x16b43, -0x16f8f, 0x16f9f, -0x1bc9d, 0x1bc9e, -0x1bca0, 0x1bca3, -0x1d167, 0x1d169, -0x1d173, 0x1d182, -0x1d185, 0x1d18b, -0x1d1aa, 0x1d1ad, -0x1d242, 0x1d244, -0x1da00, 0x1da36, -0x1da3b, 0x1da6c, -0x1da75, 0x1da75, -0x1da84, 0x1da84, -0x1da9b, 0x1da9f, -0x1daa1, 0x1daaf, -0x1e8d0, 0x1e8d6, -0x1f3fb, 0x1f3ff, -0xe0001, 0xe0001, -0xe0020, 0xe007f, -0xe0100, 0xe01ef, -}; /* END of CR_Case_Ignorable */ - -/* PROPERTY: 'Changes_When_Lowercased': Derived Property */ -static const OnigCodePoint -CR_Changes_When_Lowercased[] = { 588, -0x0041, 0x005a, -0x00c0, 0x00d6, -0x00d8, 0x00de, -0x0100, 0x0100, -0x0102, 0x0102, -0x0104, 0x0104, -0x0106, 0x0106, -0x0108, 0x0108, -0x010a, 0x010a, -0x010c, 0x010c, -0x010e, 0x010e, -0x0110, 0x0110, -0x0112, 0x0112, -0x0114, 0x0114, -0x0116, 0x0116, -0x0118, 0x0118, -0x011a, 0x011a, -0x011c, 0x011c, -0x011e, 0x011e, -0x0120, 0x0120, -0x0122, 0x0122, -0x0124, 0x0124, -0x0126, 0x0126, -0x0128, 0x0128, -0x012a, 0x012a, -0x012c, 0x012c, -0x012e, 0x012e, -0x0130, 0x0130, -0x0132, 0x0132, -0x0134, 0x0134, -0x0136, 0x0136, -0x0139, 0x0139, -0x013b, 0x013b, -0x013d, 0x013d, -0x013f, 0x013f, -0x0141, 0x0141, -0x0143, 0x0143, -0x0145, 0x0145, -0x0147, 0x0147, -0x014a, 0x014a, -0x014c, 0x014c, -0x014e, 0x014e, -0x0150, 0x0150, -0x0152, 0x0152, -0x0154, 0x0154, -0x0156, 0x0156, -0x0158, 0x0158, -0x015a, 0x015a, -0x015c, 0x015c, -0x015e, 0x015e, -0x0160, 0x0160, -0x0162, 0x0162, -0x0164, 0x0164, -0x0166, 0x0166, -0x0168, 0x0168, -0x016a, 0x016a, -0x016c, 0x016c, -0x016e, 0x016e, -0x0170, 0x0170, -0x0172, 0x0172, -0x0174, 0x0174, -0x0176, 0x0176, -0x0178, 0x0179, -0x017b, 0x017b, -0x017d, 0x017d, -0x0181, 0x0182, -0x0184, 0x0184, -0x0186, 0x0187, -0x0189, 0x018b, -0x018e, 0x0191, -0x0193, 0x0194, -0x0196, 0x0198, -0x019c, 0x019d, -0x019f, 0x01a0, -0x01a2, 0x01a2, -0x01a4, 0x01a4, -0x01a6, 0x01a7, -0x01a9, 0x01a9, -0x01ac, 0x01ac, -0x01ae, 0x01af, -0x01b1, 0x01b3, -0x01b5, 0x01b5, -0x01b7, 0x01b8, -0x01bc, 0x01bc, -0x01c4, 0x01c5, -0x01c7, 0x01c8, -0x01ca, 0x01cb, -0x01cd, 0x01cd, -0x01cf, 0x01cf, -0x01d1, 0x01d1, -0x01d3, 0x01d3, -0x01d5, 0x01d5, -0x01d7, 0x01d7, -0x01d9, 0x01d9, -0x01db, 0x01db, -0x01de, 0x01de, -0x01e0, 0x01e0, -0x01e2, 0x01e2, -0x01e4, 0x01e4, -0x01e6, 0x01e6, -0x01e8, 0x01e8, -0x01ea, 0x01ea, -0x01ec, 0x01ec, -0x01ee, 0x01ee, -0x01f1, 0x01f2, -0x01f4, 0x01f4, -0x01f6, 0x01f8, -0x01fa, 0x01fa, -0x01fc, 0x01fc, -0x01fe, 0x01fe, -0x0200, 0x0200, -0x0202, 0x0202, -0x0204, 0x0204, -0x0206, 0x0206, -0x0208, 0x0208, -0x020a, 0x020a, -0x020c, 0x020c, -0x020e, 0x020e, -0x0210, 0x0210, -0x0212, 0x0212, -0x0214, 0x0214, -0x0216, 0x0216, -0x0218, 0x0218, -0x021a, 0x021a, -0x021c, 0x021c, -0x021e, 0x021e, -0x0220, 0x0220, -0x0222, 0x0222, -0x0224, 0x0224, -0x0226, 0x0226, -0x0228, 0x0228, -0x022a, 0x022a, -0x022c, 0x022c, -0x022e, 0x022e, -0x0230, 0x0230, -0x0232, 0x0232, -0x023a, 0x023b, -0x023d, 0x023e, -0x0241, 0x0241, -0x0243, 0x0246, -0x0248, 0x0248, -0x024a, 0x024a, -0x024c, 0x024c, -0x024e, 0x024e, -0x0370, 0x0370, -0x0372, 0x0372, -0x0376, 0x0376, -0x037f, 0x037f, -0x0386, 0x0386, -0x0388, 0x038a, -0x038c, 0x038c, -0x038e, 0x038f, -0x0391, 0x03a1, -0x03a3, 0x03ab, -0x03cf, 0x03cf, -0x03d8, 0x03d8, -0x03da, 0x03da, -0x03dc, 0x03dc, -0x03de, 0x03de, -0x03e0, 0x03e0, -0x03e2, 0x03e2, -0x03e4, 0x03e4, -0x03e6, 0x03e6, -0x03e8, 0x03e8, -0x03ea, 0x03ea, -0x03ec, 0x03ec, -0x03ee, 0x03ee, -0x03f4, 0x03f4, -0x03f7, 0x03f7, -0x03f9, 0x03fa, -0x03fd, 0x042f, -0x0460, 0x0460, -0x0462, 0x0462, -0x0464, 0x0464, -0x0466, 0x0466, -0x0468, 0x0468, -0x046a, 0x046a, -0x046c, 0x046c, -0x046e, 0x046e, -0x0470, 0x0470, -0x0472, 0x0472, -0x0474, 0x0474, -0x0476, 0x0476, -0x0478, 0x0478, -0x047a, 0x047a, -0x047c, 0x047c, -0x047e, 0x047e, -0x0480, 0x0480, -0x048a, 0x048a, -0x048c, 0x048c, -0x048e, 0x048e, -0x0490, 0x0490, -0x0492, 0x0492, -0x0494, 0x0494, -0x0496, 0x0496, -0x0498, 0x0498, -0x049a, 0x049a, -0x049c, 0x049c, -0x049e, 0x049e, -0x04a0, 0x04a0, -0x04a2, 0x04a2, -0x04a4, 0x04a4, -0x04a6, 0x04a6, -0x04a8, 0x04a8, -0x04aa, 0x04aa, -0x04ac, 0x04ac, -0x04ae, 0x04ae, -0x04b0, 0x04b0, -0x04b2, 0x04b2, -0x04b4, 0x04b4, -0x04b6, 0x04b6, -0x04b8, 0x04b8, -0x04ba, 0x04ba, -0x04bc, 0x04bc, -0x04be, 0x04be, -0x04c0, 0x04c1, -0x04c3, 0x04c3, -0x04c5, 0x04c5, -0x04c7, 0x04c7, -0x04c9, 0x04c9, -0x04cb, 0x04cb, -0x04cd, 0x04cd, -0x04d0, 0x04d0, -0x04d2, 0x04d2, -0x04d4, 0x04d4, -0x04d6, 0x04d6, -0x04d8, 0x04d8, -0x04da, 0x04da, -0x04dc, 0x04dc, -0x04de, 0x04de, -0x04e0, 0x04e0, -0x04e2, 0x04e2, -0x04e4, 0x04e4, -0x04e6, 0x04e6, -0x04e8, 0x04e8, -0x04ea, 0x04ea, -0x04ec, 0x04ec, -0x04ee, 0x04ee, -0x04f0, 0x04f0, -0x04f2, 0x04f2, -0x04f4, 0x04f4, -0x04f6, 0x04f6, -0x04f8, 0x04f8, -0x04fa, 0x04fa, -0x04fc, 0x04fc, -0x04fe, 0x04fe, -0x0500, 0x0500, -0x0502, 0x0502, -0x0504, 0x0504, -0x0506, 0x0506, -0x0508, 0x0508, -0x050a, 0x050a, -0x050c, 0x050c, -0x050e, 0x050e, -0x0510, 0x0510, -0x0512, 0x0512, -0x0514, 0x0514, -0x0516, 0x0516, -0x0518, 0x0518, -0x051a, 0x051a, -0x051c, 0x051c, -0x051e, 0x051e, -0x0520, 0x0520, -0x0522, 0x0522, -0x0524, 0x0524, -0x0526, 0x0526, -0x0528, 0x0528, -0x052a, 0x052a, -0x052c, 0x052c, -0x052e, 0x052e, -0x0531, 0x0556, -0x10a0, 0x10c5, -0x10c7, 0x10c7, -0x10cd, 0x10cd, -0x13a0, 0x13f5, -0x1e00, 0x1e00, -0x1e02, 0x1e02, -0x1e04, 0x1e04, -0x1e06, 0x1e06, -0x1e08, 0x1e08, -0x1e0a, 0x1e0a, -0x1e0c, 0x1e0c, -0x1e0e, 0x1e0e, -0x1e10, 0x1e10, -0x1e12, 0x1e12, -0x1e14, 0x1e14, -0x1e16, 0x1e16, -0x1e18, 0x1e18, -0x1e1a, 0x1e1a, -0x1e1c, 0x1e1c, -0x1e1e, 0x1e1e, -0x1e20, 0x1e20, -0x1e22, 0x1e22, -0x1e24, 0x1e24, -0x1e26, 0x1e26, -0x1e28, 0x1e28, -0x1e2a, 0x1e2a, -0x1e2c, 0x1e2c, -0x1e2e, 0x1e2e, -0x1e30, 0x1e30, -0x1e32, 0x1e32, -0x1e34, 0x1e34, -0x1e36, 0x1e36, -0x1e38, 0x1e38, -0x1e3a, 0x1e3a, -0x1e3c, 0x1e3c, -0x1e3e, 0x1e3e, -0x1e40, 0x1e40, -0x1e42, 0x1e42, -0x1e44, 0x1e44, -0x1e46, 0x1e46, -0x1e48, 0x1e48, -0x1e4a, 0x1e4a, -0x1e4c, 0x1e4c, -0x1e4e, 0x1e4e, -0x1e50, 0x1e50, -0x1e52, 0x1e52, -0x1e54, 0x1e54, -0x1e56, 0x1e56, -0x1e58, 0x1e58, -0x1e5a, 0x1e5a, -0x1e5c, 0x1e5c, -0x1e5e, 0x1e5e, -0x1e60, 0x1e60, -0x1e62, 0x1e62, -0x1e64, 0x1e64, -0x1e66, 0x1e66, -0x1e68, 0x1e68, -0x1e6a, 0x1e6a, -0x1e6c, 0x1e6c, -0x1e6e, 0x1e6e, -0x1e70, 0x1e70, -0x1e72, 0x1e72, -0x1e74, 0x1e74, -0x1e76, 0x1e76, -0x1e78, 0x1e78, -0x1e7a, 0x1e7a, -0x1e7c, 0x1e7c, -0x1e7e, 0x1e7e, -0x1e80, 0x1e80, -0x1e82, 0x1e82, -0x1e84, 0x1e84, -0x1e86, 0x1e86, -0x1e88, 0x1e88, -0x1e8a, 0x1e8a, -0x1e8c, 0x1e8c, -0x1e8e, 0x1e8e, -0x1e90, 0x1e90, -0x1e92, 0x1e92, -0x1e94, 0x1e94, -0x1e9e, 0x1e9e, -0x1ea0, 0x1ea0, -0x1ea2, 0x1ea2, -0x1ea4, 0x1ea4, -0x1ea6, 0x1ea6, -0x1ea8, 0x1ea8, -0x1eaa, 0x1eaa, -0x1eac, 0x1eac, -0x1eae, 0x1eae, -0x1eb0, 0x1eb0, -0x1eb2, 0x1eb2, -0x1eb4, 0x1eb4, -0x1eb6, 0x1eb6, -0x1eb8, 0x1eb8, -0x1eba, 0x1eba, -0x1ebc, 0x1ebc, -0x1ebe, 0x1ebe, -0x1ec0, 0x1ec0, -0x1ec2, 0x1ec2, -0x1ec4, 0x1ec4, -0x1ec6, 0x1ec6, -0x1ec8, 0x1ec8, -0x1eca, 0x1eca, -0x1ecc, 0x1ecc, -0x1ece, 0x1ece, -0x1ed0, 0x1ed0, -0x1ed2, 0x1ed2, -0x1ed4, 0x1ed4, -0x1ed6, 0x1ed6, -0x1ed8, 0x1ed8, -0x1eda, 0x1eda, -0x1edc, 0x1edc, -0x1ede, 0x1ede, -0x1ee0, 0x1ee0, -0x1ee2, 0x1ee2, -0x1ee4, 0x1ee4, -0x1ee6, 0x1ee6, -0x1ee8, 0x1ee8, -0x1eea, 0x1eea, -0x1eec, 0x1eec, -0x1eee, 0x1eee, -0x1ef0, 0x1ef0, -0x1ef2, 0x1ef2, -0x1ef4, 0x1ef4, -0x1ef6, 0x1ef6, -0x1ef8, 0x1ef8, -0x1efa, 0x1efa, -0x1efc, 0x1efc, -0x1efe, 0x1efe, -0x1f08, 0x1f0f, -0x1f18, 0x1f1d, -0x1f28, 0x1f2f, -0x1f38, 0x1f3f, -0x1f48, 0x1f4d, -0x1f59, 0x1f59, -0x1f5b, 0x1f5b, -0x1f5d, 0x1f5d, -0x1f5f, 0x1f5f, -0x1f68, 0x1f6f, -0x1f88, 0x1f8f, -0x1f98, 0x1f9f, -0x1fa8, 0x1faf, -0x1fb8, 0x1fbc, -0x1fc8, 0x1fcc, -0x1fd8, 0x1fdb, -0x1fe8, 0x1fec, -0x1ff8, 0x1ffc, -0x2126, 0x2126, -0x212a, 0x212b, -0x2132, 0x2132, -0x2160, 0x216f, -0x2183, 0x2183, -0x24b6, 0x24cf, -0x2c00, 0x2c2e, -0x2c60, 0x2c60, -0x2c62, 0x2c64, -0x2c67, 0x2c67, -0x2c69, 0x2c69, -0x2c6b, 0x2c6b, -0x2c6d, 0x2c70, -0x2c72, 0x2c72, -0x2c75, 0x2c75, -0x2c7e, 0x2c80, -0x2c82, 0x2c82, -0x2c84, 0x2c84, -0x2c86, 0x2c86, -0x2c88, 0x2c88, -0x2c8a, 0x2c8a, -0x2c8c, 0x2c8c, -0x2c8e, 0x2c8e, -0x2c90, 0x2c90, -0x2c92, 0x2c92, -0x2c94, 0x2c94, -0x2c96, 0x2c96, -0x2c98, 0x2c98, -0x2c9a, 0x2c9a, -0x2c9c, 0x2c9c, -0x2c9e, 0x2c9e, -0x2ca0, 0x2ca0, -0x2ca2, 0x2ca2, -0x2ca4, 0x2ca4, -0x2ca6, 0x2ca6, -0x2ca8, 0x2ca8, -0x2caa, 0x2caa, -0x2cac, 0x2cac, -0x2cae, 0x2cae, -0x2cb0, 0x2cb0, -0x2cb2, 0x2cb2, -0x2cb4, 0x2cb4, -0x2cb6, 0x2cb6, -0x2cb8, 0x2cb8, -0x2cba, 0x2cba, -0x2cbc, 0x2cbc, -0x2cbe, 0x2cbe, -0x2cc0, 0x2cc0, -0x2cc2, 0x2cc2, -0x2cc4, 0x2cc4, -0x2cc6, 0x2cc6, -0x2cc8, 0x2cc8, -0x2cca, 0x2cca, -0x2ccc, 0x2ccc, -0x2cce, 0x2cce, -0x2cd0, 0x2cd0, -0x2cd2, 0x2cd2, -0x2cd4, 0x2cd4, -0x2cd6, 0x2cd6, -0x2cd8, 0x2cd8, -0x2cda, 0x2cda, -0x2cdc, 0x2cdc, -0x2cde, 0x2cde, -0x2ce0, 0x2ce0, -0x2ce2, 0x2ce2, -0x2ceb, 0x2ceb, -0x2ced, 0x2ced, -0x2cf2, 0x2cf2, -0xa640, 0xa640, -0xa642, 0xa642, -0xa644, 0xa644, -0xa646, 0xa646, -0xa648, 0xa648, -0xa64a, 0xa64a, -0xa64c, 0xa64c, -0xa64e, 0xa64e, -0xa650, 0xa650, -0xa652, 0xa652, -0xa654, 0xa654, -0xa656, 0xa656, -0xa658, 0xa658, -0xa65a, 0xa65a, -0xa65c, 0xa65c, -0xa65e, 0xa65e, -0xa660, 0xa660, -0xa662, 0xa662, -0xa664, 0xa664, -0xa666, 0xa666, -0xa668, 0xa668, -0xa66a, 0xa66a, -0xa66c, 0xa66c, -0xa680, 0xa680, -0xa682, 0xa682, -0xa684, 0xa684, -0xa686, 0xa686, -0xa688, 0xa688, -0xa68a, 0xa68a, -0xa68c, 0xa68c, -0xa68e, 0xa68e, -0xa690, 0xa690, -0xa692, 0xa692, -0xa694, 0xa694, -0xa696, 0xa696, -0xa698, 0xa698, -0xa69a, 0xa69a, -0xa722, 0xa722, -0xa724, 0xa724, -0xa726, 0xa726, -0xa728, 0xa728, -0xa72a, 0xa72a, -0xa72c, 0xa72c, -0xa72e, 0xa72e, -0xa732, 0xa732, -0xa734, 0xa734, -0xa736, 0xa736, -0xa738, 0xa738, -0xa73a, 0xa73a, -0xa73c, 0xa73c, -0xa73e, 0xa73e, -0xa740, 0xa740, -0xa742, 0xa742, -0xa744, 0xa744, -0xa746, 0xa746, -0xa748, 0xa748, -0xa74a, 0xa74a, -0xa74c, 0xa74c, -0xa74e, 0xa74e, -0xa750, 0xa750, -0xa752, 0xa752, -0xa754, 0xa754, -0xa756, 0xa756, -0xa758, 0xa758, -0xa75a, 0xa75a, -0xa75c, 0xa75c, -0xa75e, 0xa75e, -0xa760, 0xa760, -0xa762, 0xa762, -0xa764, 0xa764, -0xa766, 0xa766, -0xa768, 0xa768, -0xa76a, 0xa76a, -0xa76c, 0xa76c, -0xa76e, 0xa76e, -0xa779, 0xa779, -0xa77b, 0xa77b, -0xa77d, 0xa77e, -0xa780, 0xa780, -0xa782, 0xa782, -0xa784, 0xa784, -0xa786, 0xa786, -0xa78b, 0xa78b, -0xa78d, 0xa78d, -0xa790, 0xa790, -0xa792, 0xa792, -0xa796, 0xa796, -0xa798, 0xa798, -0xa79a, 0xa79a, -0xa79c, 0xa79c, -0xa79e, 0xa79e, -0xa7a0, 0xa7a0, -0xa7a2, 0xa7a2, -0xa7a4, 0xa7a4, -0xa7a6, 0xa7a6, -0xa7a8, 0xa7a8, -0xa7aa, 0xa7ad, -0xa7b0, 0xa7b4, -0xa7b6, 0xa7b6, -0xff21, 0xff3a, -0x10400, 0x10427, -0x10c80, 0x10cb2, -0x118a0, 0x118bf, -}; /* END of CR_Changes_When_Lowercased */ +}; /* END of CR_Tagbanwa */ -/* PROPERTY: 'Changes_When_Uppercased': Derived Property */ +/* PROPERTY: 'Tai_Le': Script */  static const OnigCodePoint -CR_Changes_When_Uppercased[] = { 605, -0x0061, 0x007a, -0x00b5, 0x00b5, -0x00df, 0x00f6, -0x00f8, 0x00ff, -0x0101, 0x0101, -0x0103, 0x0103, -0x0105, 0x0105, -0x0107, 0x0107, -0x0109, 0x0109, -0x010b, 0x010b, -0x010d, 0x010d, -0x010f, 0x010f, -0x0111, 0x0111, -0x0113, 0x0113, -0x0115, 0x0115, -0x0117, 0x0117, -0x0119, 0x0119, -0x011b, 0x011b, -0x011d, 0x011d, -0x011f, 0x011f, -0x0121, 0x0121, -0x0123, 0x0123, -0x0125, 0x0125, -0x0127, 0x0127, -0x0129, 0x0129, -0x012b, 0x012b, -0x012d, 0x012d, -0x012f, 0x012f, -0x0131, 0x0131, -0x0133, 0x0133, -0x0135, 0x0135, -0x0137, 0x0137, -0x013a, 0x013a, -0x013c, 0x013c, -0x013e, 0x013e, -0x0140, 0x0140, -0x0142, 0x0142, -0x0144, 0x0144, -0x0146, 0x0146, -0x0148, 0x0149, -0x014b, 0x014b, -0x014d, 0x014d, -0x014f, 0x014f, -0x0151, 0x0151, -0x0153, 0x0153, -0x0155, 0x0155, -0x0157, 0x0157, -0x0159, 0x0159, -0x015b, 0x015b, -0x015d, 0x015d, -0x015f, 0x015f, -0x0161, 0x0161, -0x0163, 0x0163, -0x0165, 0x0165, -0x0167, 0x0167, -0x0169, 0x0169, -0x016b, 0x016b, -0x016d, 0x016d, -0x016f, 0x016f, -0x0171, 0x0171, -0x0173, 0x0173, -0x0175, 0x0175, -0x0177, 0x0177, -0x017a, 0x017a, -0x017c, 0x017c, -0x017e, 0x0180, -0x0183, 0x0183, -0x0185, 0x0185, -0x0188, 0x0188, -0x018c, 0x018c, -0x0192, 0x0192, -0x0195, 0x0195, -0x0199, 0x019a, -0x019e, 0x019e, -0x01a1, 0x01a1, -0x01a3, 0x01a3, -0x01a5, 0x01a5, -0x01a8, 0x01a8, -0x01ad, 0x01ad, -0x01b0, 0x01b0, -0x01b4, 0x01b4, -0x01b6, 0x01b6, -0x01b9, 0x01b9, -0x01bd, 0x01bd, -0x01bf, 0x01bf, -0x01c5, 0x01c6, -0x01c8, 0x01c9, -0x01cb, 0x01cc, -0x01ce, 0x01ce, -0x01d0, 0x01d0, -0x01d2, 0x01d2, -0x01d4, 0x01d4, -0x01d6, 0x01d6, -0x01d8, 0x01d8, -0x01da, 0x01da, -0x01dc, 0x01dd, -0x01df, 0x01df, -0x01e1, 0x01e1, -0x01e3, 0x01e3, -0x01e5, 0x01e5, -0x01e7, 0x01e7, -0x01e9, 0x01e9, -0x01eb, 0x01eb, -0x01ed, 0x01ed, -0x01ef, 0x01f0, -0x01f2, 0x01f3, -0x01f5, 0x01f5, -0x01f9, 0x01f9, -0x01fb, 0x01fb, -0x01fd, 0x01fd, -0x01ff, 0x01ff, -0x0201, 0x0201, -0x0203, 0x0203, -0x0205, 0x0205, -0x0207, 0x0207, -0x0209, 0x0209, -0x020b, 0x020b, -0x020d, 0x020d, -0x020f, 0x020f, -0x0211, 0x0211, -0x0213, 0x0213, -0x0215, 0x0215, -0x0217, 0x0217, -0x0219, 0x0219, -0x021b, 0x021b, -0x021d, 0x021d, -0x021f, 0x021f, -0x0223, 0x0223, -0x0225, 0x0225, -0x0227, 0x0227, -0x0229, 0x0229, -0x022b, 0x022b, -0x022d, 0x022d, -0x022f, 0x022f, -0x0231, 0x0231, -0x0233, 0x0233, -0x023c, 0x023c, -0x023f, 0x0240, -0x0242, 0x0242, -0x0247, 0x0247, -0x0249, 0x0249, -0x024b, 0x024b, -0x024d, 0x024d, -0x024f, 0x0254, -0x0256, 0x0257, -0x0259, 0x0259, -0x025b, 0x025c, -0x0260, 0x0261, -0x0263, 0x0263, -0x0265, 0x0266, -0x0268, 0x0269, -0x026b, 0x026c, -0x026f, 0x026f, -0x0271, 0x0272, -0x0275, 0x0275, -0x027d, 0x027d, -0x0280, 0x0280, -0x0283, 0x0283, -0x0287, 0x028c, -0x0292, 0x0292, -0x029d, 0x029e, -0x0345, 0x0345, -0x0371, 0x0371, -0x0373, 0x0373, -0x0377, 0x0377, -0x037b, 0x037d, -0x0390, 0x0390, -0x03ac, 0x03ce, -0x03d0, 0x03d1, -0x03d5, 0x03d7, -0x03d9, 0x03d9, -0x03db, 0x03db, -0x03dd, 0x03dd, -0x03df, 0x03df, -0x03e1, 0x03e1, -0x03e3, 0x03e3, -0x03e5, 0x03e5, -0x03e7, 0x03e7, -0x03e9, 0x03e9, -0x03eb, 0x03eb, -0x03ed, 0x03ed, -0x03ef, 0x03f3, -0x03f5, 0x03f5, -0x03f8, 0x03f8, -0x03fb, 0x03fb, -0x0430, 0x045f, -0x0461, 0x0461, -0x0463, 0x0463, -0x0465, 0x0465, -0x0467, 0x0467, -0x0469, 0x0469, -0x046b, 0x046b, -0x046d, 0x046d, -0x046f, 0x046f, -0x0471, 0x0471, -0x0473, 0x0473, -0x0475, 0x0475, -0x0477, 0x0477, -0x0479, 0x0479, -0x047b, 0x047b, -0x047d, 0x047d, -0x047f, 0x047f, -0x0481, 0x0481, -0x048b, 0x048b, -0x048d, 0x048d, -0x048f, 0x048f, -0x0491, 0x0491, -0x0493, 0x0493, -0x0495, 0x0495, -0x0497, 0x0497, -0x0499, 0x0499, -0x049b, 0x049b, -0x049d, 0x049d, -0x049f, 0x049f, -0x04a1, 0x04a1, -0x04a3, 0x04a3, -0x04a5, 0x04a5, -0x04a7, 0x04a7, -0x04a9, 0x04a9, -0x04ab, 0x04ab, -0x04ad, 0x04ad, -0x04af, 0x04af, -0x04b1, 0x04b1, -0x04b3, 0x04b3, -0x04b5, 0x04b5, -0x04b7, 0x04b7, -0x04b9, 0x04b9, -0x04bb, 0x04bb, -0x04bd, 0x04bd, -0x04bf, 0x04bf, -0x04c2, 0x04c2, -0x04c4, 0x04c4, -0x04c6, 0x04c6, -0x04c8, 0x04c8, -0x04ca, 0x04ca, -0x04cc, 0x04cc, -0x04ce, 0x04cf, -0x04d1, 0x04d1, -0x04d3, 0x04d3, -0x04d5, 0x04d5, -0x04d7, 0x04d7, -0x04d9, 0x04d9, -0x04db, 0x04db, -0x04dd, 0x04dd, -0x04df, 0x04df, -0x04e1, 0x04e1, -0x04e3, 0x04e3, -0x04e5, 0x04e5, -0x04e7, 0x04e7, -0x04e9, 0x04e9, -0x04eb, 0x04eb, -0x04ed, 0x04ed, -0x04ef, 0x04ef, -0x04f1, 0x04f1, -0x04f3, 0x04f3, -0x04f5, 0x04f5, -0x04f7, 0x04f7, -0x04f9, 0x04f9, -0x04fb, 0x04fb, -0x04fd, 0x04fd, -0x04ff, 0x04ff, -0x0501, 0x0501, -0x0503, 0x0503, -0x0505, 0x0505, -0x0507, 0x0507, -0x0509, 0x0509, -0x050b, 0x050b, -0x050d, 0x050d, -0x050f, 0x050f, -0x0511, 0x0511, -0x0513, 0x0513, -0x0515, 0x0515, -0x0517, 0x0517, -0x0519, 0x0519, -0x051b, 0x051b, -0x051d, 0x051d, -0x051f, 0x051f, -0x0521, 0x0521, -0x0523, 0x0523, -0x0525, 0x0525, -0x0527, 0x0527, -0x0529, 0x0529, -0x052b, 0x052b, -0x052d, 0x052d, -0x052f, 0x052f, -0x0561, 0x0587, -0x13f8, 0x13fd, -0x1d79, 0x1d79, -0x1d7d, 0x1d7d, -0x1e01, 0x1e01, -0x1e03, 0x1e03, -0x1e05, 0x1e05, -0x1e07, 0x1e07, -0x1e09, 0x1e09, -0x1e0b, 0x1e0b, -0x1e0d, 0x1e0d, -0x1e0f, 0x1e0f, -0x1e11, 0x1e11, -0x1e13, 0x1e13, -0x1e15, 0x1e15, -0x1e17, 0x1e17, -0x1e19, 0x1e19, -0x1e1b, 0x1e1b, -0x1e1d, 0x1e1d, -0x1e1f, 0x1e1f, -0x1e21, 0x1e21, -0x1e23, 0x1e23, -0x1e25, 0x1e25, -0x1e27, 0x1e27, -0x1e29, 0x1e29, -0x1e2b, 0x1e2b, -0x1e2d, 0x1e2d, -0x1e2f, 0x1e2f, -0x1e31, 0x1e31, -0x1e33, 0x1e33, -0x1e35, 0x1e35, -0x1e37, 0x1e37, -0x1e39, 0x1e39, -0x1e3b, 0x1e3b, -0x1e3d, 0x1e3d, -0x1e3f, 0x1e3f, -0x1e41, 0x1e41, -0x1e43, 0x1e43, -0x1e45, 0x1e45, -0x1e47, 0x1e47, -0x1e49, 0x1e49, -0x1e4b, 0x1e4b, -0x1e4d, 0x1e4d, -0x1e4f, 0x1e4f, -0x1e51, 0x1e51, -0x1e53, 0x1e53, -0x1e55, 0x1e55, -0x1e57, 0x1e57, -0x1e59, 0x1e59, -0x1e5b, 0x1e5b, -0x1e5d, 0x1e5d, -0x1e5f, 0x1e5f, -0x1e61, 0x1e61, -0x1e63, 0x1e63, -0x1e65, 0x1e65, -0x1e67, 0x1e67, -0x1e69, 0x1e69, -0x1e6b, 0x1e6b, -0x1e6d, 0x1e6d, -0x1e6f, 0x1e6f, -0x1e71, 0x1e71, -0x1e73, 0x1e73, -0x1e75, 0x1e75, -0x1e77, 0x1e77, -0x1e79, 0x1e79, -0x1e7b, 0x1e7b, -0x1e7d, 0x1e7d, -0x1e7f, 0x1e7f, -0x1e81, 0x1e81, -0x1e83, 0x1e83, -0x1e85, 0x1e85, -0x1e87, 0x1e87, -0x1e89, 0x1e89, -0x1e8b, 0x1e8b, -0x1e8d, 0x1e8d, -0x1e8f, 0x1e8f, -0x1e91, 0x1e91, -0x1e93, 0x1e93, -0x1e95, 0x1e9b, -0x1ea1, 0x1ea1, -0x1ea3, 0x1ea3, -0x1ea5, 0x1ea5, -0x1ea7, 0x1ea7, -0x1ea9, 0x1ea9, -0x1eab, 0x1eab, -0x1ead, 0x1ead, -0x1eaf, 0x1eaf, -0x1eb1, 0x1eb1, -0x1eb3, 0x1eb3, -0x1eb5, 0x1eb5, -0x1eb7, 0x1eb7, -0x1eb9, 0x1eb9, -0x1ebb, 0x1ebb, -0x1ebd, 0x1ebd, -0x1ebf, 0x1ebf, -0x1ec1, 0x1ec1, -0x1ec3, 0x1ec3, -0x1ec5, 0x1ec5, -0x1ec7, 0x1ec7, -0x1ec9, 0x1ec9, -0x1ecb, 0x1ecb, -0x1ecd, 0x1ecd, -0x1ecf, 0x1ecf, -0x1ed1, 0x1ed1, -0x1ed3, 0x1ed3, -0x1ed5, 0x1ed5, -0x1ed7, 0x1ed7, -0x1ed9, 0x1ed9, -0x1edb, 0x1edb, -0x1edd, 0x1edd, -0x1edf, 0x1edf, -0x1ee1, 0x1ee1, -0x1ee3, 0x1ee3, -0x1ee5, 0x1ee5, -0x1ee7, 0x1ee7, -0x1ee9, 0x1ee9, -0x1eeb, 0x1eeb, -0x1eed, 0x1eed, -0x1eef, 0x1eef, -0x1ef1, 0x1ef1, -0x1ef3, 0x1ef3, -0x1ef5, 0x1ef5, -0x1ef7, 0x1ef7, -0x1ef9, 0x1ef9, -0x1efb, 0x1efb, -0x1efd, 0x1efd, -0x1eff, 0x1f07, -0x1f10, 0x1f15, -0x1f20, 0x1f27, -0x1f30, 0x1f37, -0x1f40, 0x1f45, -0x1f50, 0x1f57, -0x1f60, 0x1f67, -0x1f70, 0x1f7d, -0x1f80, 0x1fb4, -0x1fb6, 0x1fb7, -0x1fbc, 0x1fbc, -0x1fbe, 0x1fbe, -0x1fc2, 0x1fc4, -0x1fc6, 0x1fc7, -0x1fcc, 0x1fcc, -0x1fd0, 0x1fd3, -0x1fd6, 0x1fd7, -0x1fe0, 0x1fe7, -0x1ff2, 0x1ff4, -0x1ff6, 0x1ff7, -0x1ffc, 0x1ffc, -0x214e, 0x214e, -0x2170, 0x217f, -0x2184, 0x2184, -0x24d0, 0x24e9, -0x2c30, 0x2c5e, -0x2c61, 0x2c61, -0x2c65, 0x2c66, -0x2c68, 0x2c68, -0x2c6a, 0x2c6a, -0x2c6c, 0x2c6c, -0x2c73, 0x2c73, -0x2c76, 0x2c76, -0x2c81, 0x2c81, -0x2c83, 0x2c83, -0x2c85, 0x2c85, -0x2c87, 0x2c87, -0x2c89, 0x2c89, -0x2c8b, 0x2c8b, -0x2c8d, 0x2c8d, -0x2c8f, 0x2c8f, -0x2c91, 0x2c91, -0x2c93, 0x2c93, -0x2c95, 0x2c95, -0x2c97, 0x2c97, -0x2c99, 0x2c99, -0x2c9b, 0x2c9b, -0x2c9d, 0x2c9d, -0x2c9f, 0x2c9f, -0x2ca1, 0x2ca1, -0x2ca3, 0x2ca3, -0x2ca5, 0x2ca5, -0x2ca7, 0x2ca7, -0x2ca9, 0x2ca9, -0x2cab, 0x2cab, -0x2cad, 0x2cad, -0x2caf, 0x2caf, -0x2cb1, 0x2cb1, -0x2cb3, 0x2cb3, -0x2cb5, 0x2cb5, -0x2cb7, 0x2cb7, -0x2cb9, 0x2cb9, -0x2cbb, 0x2cbb, -0x2cbd, 0x2cbd, -0x2cbf, 0x2cbf, -0x2cc1, 0x2cc1, -0x2cc3, 0x2cc3, -0x2cc5, 0x2cc5, -0x2cc7, 0x2cc7, -0x2cc9, 0x2cc9, -0x2ccb, 0x2ccb, -0x2ccd, 0x2ccd, -0x2ccf, 0x2ccf, -0x2cd1, 0x2cd1, -0x2cd3, 0x2cd3, -0x2cd5, 0x2cd5, -0x2cd7, 0x2cd7, -0x2cd9, 0x2cd9, -0x2cdb, 0x2cdb, -0x2cdd, 0x2cdd, -0x2cdf, 0x2cdf, -0x2ce1, 0x2ce1, -0x2ce3, 0x2ce3, -0x2cec, 0x2cec, -0x2cee, 0x2cee, -0x2cf3, 0x2cf3, -0x2d00, 0x2d25, -0x2d27, 0x2d27, -0x2d2d, 0x2d2d, -0xa641, 0xa641, -0xa643, 0xa643, -0xa645, 0xa645, -0xa647, 0xa647, -0xa649, 0xa649, -0xa64b, 0xa64b, -0xa64d, 0xa64d, -0xa64f, 0xa64f, -0xa651, 0xa651, -0xa653, 0xa653, -0xa655, 0xa655, -0xa657, 0xa657, -0xa659, 0xa659, -0xa65b, 0xa65b, -0xa65d, 0xa65d, -0xa65f, 0xa65f, -0xa661, 0xa661, -0xa663, 0xa663, -0xa665, 0xa665, -0xa667, 0xa667, -0xa669, 0xa669, -0xa66b, 0xa66b, -0xa66d, 0xa66d, -0xa681, 0xa681, -0xa683, 0xa683, -0xa685, 0xa685, -0xa687, 0xa687, -0xa689, 0xa689, -0xa68b, 0xa68b, -0xa68d, 0xa68d, -0xa68f, 0xa68f, -0xa691, 0xa691, -0xa693, 0xa693, -0xa695, 0xa695, -0xa697, 0xa697, -0xa699, 0xa699, -0xa69b, 0xa69b, -0xa723, 0xa723, -0xa725, 0xa725, -0xa727, 0xa727, -0xa729, 0xa729, -0xa72b, 0xa72b, -0xa72d, 0xa72d, -0xa72f, 0xa72f, -0xa733, 0xa733, -0xa735, 0xa735, -0xa737, 0xa737, -0xa739, 0xa739, -0xa73b, 0xa73b, -0xa73d, 0xa73d, -0xa73f, 0xa73f, -0xa741, 0xa741, -0xa743, 0xa743, -0xa745, 0xa745, -0xa747, 0xa747, -0xa749, 0xa749, -0xa74b, 0xa74b, -0xa74d, 0xa74d, -0xa74f, 0xa74f, -0xa751, 0xa751, -0xa753, 0xa753, -0xa755, 0xa755, -0xa757, 0xa757, -0xa759, 0xa759, -0xa75b, 0xa75b, -0xa75d, 0xa75d, -0xa75f, 0xa75f, -0xa761, 0xa761, -0xa763, 0xa763, -0xa765, 0xa765, -0xa767, 0xa767, -0xa769, 0xa769, -0xa76b, 0xa76b, -0xa76d, 0xa76d, -0xa76f, 0xa76f, -0xa77a, 0xa77a, -0xa77c, 0xa77c, -0xa77f, 0xa77f, -0xa781, 0xa781, -0xa783, 0xa783, -0xa785, 0xa785, -0xa787, 0xa787, -0xa78c, 0xa78c, -0xa791, 0xa791, -0xa793, 0xa793, -0xa797, 0xa797, -0xa799, 0xa799, -0xa79b, 0xa79b, -0xa79d, 0xa79d, -0xa79f, 0xa79f, -0xa7a1, 0xa7a1, -0xa7a3, 0xa7a3, -0xa7a5, 0xa7a5, -0xa7a7, 0xa7a7, -0xa7a9, 0xa7a9, -0xa7b5, 0xa7b5, -0xa7b7, 0xa7b7, -0xab53, 0xab53, -0xab70, 0xabbf, -0xfb00, 0xfb06, -0xfb13, 0xfb17, -0xff41, 0xff5a, -0x10428, 0x1044f, -0x10cc0, 0x10cf2, -0x118c0, 0x118df, -}; /* END of CR_Changes_When_Uppercased */ +CR_Tai_Le[] = { 2, +0x1950, 0x196d, +0x1970, 0x1974, +}; /* END of CR_Tai_Le */ -/* PROPERTY: 'Changes_When_Titlecased': Derived Property */ +/* PROPERTY: 'Tai_Tham': Script */  static const OnigCodePoint -CR_Changes_When_Titlecased[] = { 606, -0x0061, 0x007a, -0x00b5, 0x00b5, -0x00df, 0x00f6, -0x00f8, 0x00ff, -0x0101, 0x0101, -0x0103, 0x0103, -0x0105, 0x0105, -0x0107, 0x0107, -0x0109, 0x0109, -0x010b, 0x010b, -0x010d, 0x010d, -0x010f, 0x010f, -0x0111, 0x0111, -0x0113, 0x0113, -0x0115, 0x0115, -0x0117, 0x0117, -0x0119, 0x0119, -0x011b, 0x011b, -0x011d, 0x011d, -0x011f, 0x011f, -0x0121, 0x0121, -0x0123, 0x0123, -0x0125, 0x0125, -0x0127, 0x0127, -0x0129, 0x0129, -0x012b, 0x012b, -0x012d, 0x012d, -0x012f, 0x012f, -0x0131, 0x0131, -0x0133, 0x0133, -0x0135, 0x0135, -0x0137, 0x0137, -0x013a, 0x013a, -0x013c, 0x013c, -0x013e, 0x013e, -0x0140, 0x0140, -0x0142, 0x0142, -0x0144, 0x0144, -0x0146, 0x0146, -0x0148, 0x0149, -0x014b, 0x014b, -0x014d, 0x014d, -0x014f, 0x014f, -0x0151, 0x0151, -0x0153, 0x0153, -0x0155, 0x0155, -0x0157, 0x0157, -0x0159, 0x0159, -0x015b, 0x015b, -0x015d, 0x015d, -0x015f, 0x015f, -0x0161, 0x0161, -0x0163, 0x0163, -0x0165, 0x0165, -0x0167, 0x0167, -0x0169, 0x0169, -0x016b, 0x016b, -0x016d, 0x016d, -0x016f, 0x016f, -0x0171, 0x0171, -0x0173, 0x0173, -0x0175, 0x0175, -0x0177, 0x0177, -0x017a, 0x017a, -0x017c, 0x017c, -0x017e, 0x0180, -0x0183, 0x0183, -0x0185, 0x0185, -0x0188, 0x0188, -0x018c, 0x018c, -0x0192, 0x0192, -0x0195, 0x0195, -0x0199, 0x019a, -0x019e, 0x019e, -0x01a1, 0x01a1, -0x01a3, 0x01a3, -0x01a5, 0x01a5, -0x01a8, 0x01a8, -0x01ad, 0x01ad, -0x01b0, 0x01b0, -0x01b4, 0x01b4, -0x01b6, 0x01b6, -0x01b9, 0x01b9, -0x01bd, 0x01bd, -0x01bf, 0x01bf, -0x01c4, 0x01c4, -0x01c6, 0x01c7, -0x01c9, 0x01ca, -0x01cc, 0x01cc, -0x01ce, 0x01ce, -0x01d0, 0x01d0, -0x01d2, 0x01d2, -0x01d4, 0x01d4, -0x01d6, 0x01d6, -0x01d8, 0x01d8, -0x01da, 0x01da, -0x01dc, 0x01dd, -0x01df, 0x01df, -0x01e1, 0x01e1, -0x01e3, 0x01e3, -0x01e5, 0x01e5, -0x01e7, 0x01e7, -0x01e9, 0x01e9, -0x01eb, 0x01eb, -0x01ed, 0x01ed, -0x01ef, 0x01f1, -0x01f3, 0x01f3, -0x01f5, 0x01f5, -0x01f9, 0x01f9, -0x01fb, 0x01fb, -0x01fd, 0x01fd, -0x01ff, 0x01ff, -0x0201, 0x0201, -0x0203, 0x0203, -0x0205, 0x0205, -0x0207, 0x0207, -0x0209, 0x0209, -0x020b, 0x020b, -0x020d, 0x020d, -0x020f, 0x020f, -0x0211, 0x0211, -0x0213, 0x0213, -0x0215, 0x0215, -0x0217, 0x0217, -0x0219, 0x0219, -0x021b, 0x021b, -0x021d, 0x021d, -0x021f, 0x021f, -0x0223, 0x0223, -0x0225, 0x0225, -0x0227, 0x0227, -0x0229, 0x0229, -0x022b, 0x022b, -0x022d, 0x022d, -0x022f, 0x022f, -0x0231, 0x0231, -0x0233, 0x0233, -0x023c, 0x023c, -0x023f, 0x0240, -0x0242, 0x0242, -0x0247, 0x0247, -0x0249, 0x0249, -0x024b, 0x024b, -0x024d, 0x024d, -0x024f, 0x0254, -0x0256, 0x0257, -0x0259, 0x0259, -0x025b, 0x025c, -0x0260, 0x0261, -0x0263, 0x0263, -0x0265, 0x0266, -0x0268, 0x0269, -0x026b, 0x026c, -0x026f, 0x026f, -0x0271, 0x0272, -0x0275, 0x0275, -0x027d, 0x027d, -0x0280, 0x0280, -0x0283, 0x0283, -0x0287, 0x028c, -0x0292, 0x0292, -0x029d, 0x029e, -0x0345, 0x0345, -0x0371, 0x0371, -0x0373, 0x0373, -0x0377, 0x0377, -0x037b, 0x037d, -0x0390, 0x0390, -0x03ac, 0x03ce, -0x03d0, 0x03d1, -0x03d5, 0x03d7, -0x03d9, 0x03d9, -0x03db, 0x03db, -0x03dd, 0x03dd, -0x03df, 0x03df, -0x03e1, 0x03e1, -0x03e3, 0x03e3, -0x03e5, 0x03e5, -0x03e7, 0x03e7, -0x03e9, 0x03e9, -0x03eb, 0x03eb, -0x03ed, 0x03ed, -0x03ef, 0x03f3, -0x03f5, 0x03f5, -0x03f8, 0x03f8, -0x03fb, 0x03fb, -0x0430, 0x045f, -0x0461, 0x0461, -0x0463, 0x0463, -0x0465, 0x0465, -0x0467, 0x0467, -0x0469, 0x0469, -0x046b, 0x046b, -0x046d, 0x046d, -0x046f, 0x046f, -0x0471, 0x0471, -0x0473, 0x0473, -0x0475, 0x0475, -0x0477, 0x0477, -0x0479, 0x0479, -0x047b, 0x047b, -0x047d, 0x047d, -0x047f, 0x047f, -0x0481, 0x0481, -0x048b, 0x048b, -0x048d, 0x048d, -0x048f, 0x048f, -0x0491, 0x0491, -0x0493, 0x0493, -0x0495, 0x0495, -0x0497, 0x0497, -0x0499, 0x0499, -0x049b, 0x049b, -0x049d, 0x049d, -0x049f, 0x049f, -0x04a1, 0x04a1, -0x04a3, 0x04a3, -0x04a5, 0x04a5, -0x04a7, 0x04a7, -0x04a9, 0x04a9, -0x04ab, 0x04ab, -0x04ad, 0x04ad, -0x04af, 0x04af, -0x04b1, 0x04b1, -0x04b3, 0x04b3, -0x04b5, 0x04b5, -0x04b7, 0x04b7, -0x04b9, 0x04b9, -0x04bb, 0x04bb, -0x04bd, 0x04bd, -0x04bf, 0x04bf, -0x04c2, 0x04c2, -0x04c4, 0x04c4, -0x04c6, 0x04c6, -0x04c8, 0x04c8, -0x04ca, 0x04ca, -0x04cc, 0x04cc, -0x04ce, 0x04cf, -0x04d1, 0x04d1, -0x04d3, 0x04d3, -0x04d5, 0x04d5, -0x04d7, 0x04d7, -0x04d9, 0x04d9, -0x04db, 0x04db, -0x04dd, 0x04dd, -0x04df, 0x04df, -0x04e1, 0x04e1, -0x04e3, 0x04e3, -0x04e5, 0x04e5, -0x04e7, 0x04e7, -0x04e9, 0x04e9, -0x04eb, 0x04eb, -0x04ed, 0x04ed, -0x04ef, 0x04ef, -0x04f1, 0x04f1, -0x04f3, 0x04f3, -0x04f5, 0x04f5, -0x04f7, 0x04f7, -0x04f9, 0x04f9, -0x04fb, 0x04fb, -0x04fd, 0x04fd, -0x04ff, 0x04ff, -0x0501, 0x0501, -0x0503, 0x0503, -0x0505, 0x0505, -0x0507, 0x0507, -0x0509, 0x0509, -0x050b, 0x050b, -0x050d, 0x050d, -0x050f, 0x050f, -0x0511, 0x0511, -0x0513, 0x0513, -0x0515, 0x0515, -0x0517, 0x0517, -0x0519, 0x0519, -0x051b, 0x051b, -0x051d, 0x051d, -0x051f, 0x051f, -0x0521, 0x0521, -0x0523, 0x0523, -0x0525, 0x0525, -0x0527, 0x0527, -0x0529, 0x0529, -0x052b, 0x052b, -0x052d, 0x052d, -0x052f, 0x052f, -0x0561, 0x0587, -0x13f8, 0x13fd, -0x1d79, 0x1d79, -0x1d7d, 0x1d7d, -0x1e01, 0x1e01, -0x1e03, 0x1e03, -0x1e05, 0x1e05, -0x1e07, 0x1e07, -0x1e09, 0x1e09, -0x1e0b, 0x1e0b, -0x1e0d, 0x1e0d, -0x1e0f, 0x1e0f, -0x1e11, 0x1e11, -0x1e13, 0x1e13, -0x1e15, 0x1e15, -0x1e17, 0x1e17, -0x1e19, 0x1e19, -0x1e1b, 0x1e1b, -0x1e1d, 0x1e1d, -0x1e1f, 0x1e1f, -0x1e21, 0x1e21, -0x1e23, 0x1e23, -0x1e25, 0x1e25, -0x1e27, 0x1e27, -0x1e29, 0x1e29, -0x1e2b, 0x1e2b, -0x1e2d, 0x1e2d, -0x1e2f, 0x1e2f, -0x1e31, 0x1e31, -0x1e33, 0x1e33, -0x1e35, 0x1e35, -0x1e37, 0x1e37, -0x1e39, 0x1e39, -0x1e3b, 0x1e3b, -0x1e3d, 0x1e3d, -0x1e3f, 0x1e3f, -0x1e41, 0x1e41, -0x1e43, 0x1e43, -0x1e45, 0x1e45, -0x1e47, 0x1e47, -0x1e49, 0x1e49, -0x1e4b, 0x1e4b, -0x1e4d, 0x1e4d, -0x1e4f, 0x1e4f, -0x1e51, 0x1e51, -0x1e53, 0x1e53, -0x1e55, 0x1e55, -0x1e57, 0x1e57, -0x1e59, 0x1e59, -0x1e5b, 0x1e5b, -0x1e5d, 0x1e5d, -0x1e5f, 0x1e5f, -0x1e61, 0x1e61, -0x1e63, 0x1e63, -0x1e65, 0x1e65, -0x1e67, 0x1e67, -0x1e69, 0x1e69, -0x1e6b, 0x1e6b, -0x1e6d, 0x1e6d, -0x1e6f, 0x1e6f, -0x1e71, 0x1e71, -0x1e73, 0x1e73, -0x1e75, 0x1e75, -0x1e77, 0x1e77, -0x1e79, 0x1e79, -0x1e7b, 0x1e7b, -0x1e7d, 0x1e7d, -0x1e7f, 0x1e7f, -0x1e81, 0x1e81, -0x1e83, 0x1e83, -0x1e85, 0x1e85, -0x1e87, 0x1e87, -0x1e89, 0x1e89, -0x1e8b, 0x1e8b, -0x1e8d, 0x1e8d, -0x1e8f, 0x1e8f, -0x1e91, 0x1e91, -0x1e93, 0x1e93, -0x1e95, 0x1e9b, -0x1ea1, 0x1ea1, -0x1ea3, 0x1ea3, -0x1ea5, 0x1ea5, -0x1ea7, 0x1ea7, -0x1ea9, 0x1ea9, -0x1eab, 0x1eab, -0x1ead, 0x1ead, -0x1eaf, 0x1eaf, -0x1eb1, 0x1eb1, -0x1eb3, 0x1eb3, -0x1eb5, 0x1eb5, -0x1eb7, 0x1eb7, -0x1eb9, 0x1eb9, -0x1ebb, 0x1ebb, -0x1ebd, 0x1ebd, -0x1ebf, 0x1ebf, -0x1ec1, 0x1ec1, -0x1ec3, 0x1ec3, -0x1ec5, 0x1ec5, -0x1ec7, 0x1ec7, -0x1ec9, 0x1ec9, -0x1ecb, 0x1ecb, -0x1ecd, 0x1ecd, -0x1ecf, 0x1ecf, -0x1ed1, 0x1ed1, -0x1ed3, 0x1ed3, -0x1ed5, 0x1ed5, -0x1ed7, 0x1ed7, -0x1ed9, 0x1ed9, -0x1edb, 0x1edb, -0x1edd, 0x1edd, -0x1edf, 0x1edf, -0x1ee1, 0x1ee1, -0x1ee3, 0x1ee3, -0x1ee5, 0x1ee5, -0x1ee7, 0x1ee7, -0x1ee9, 0x1ee9, -0x1eeb, 0x1eeb, -0x1eed, 0x1eed, -0x1eef, 0x1eef, -0x1ef1, 0x1ef1, -0x1ef3, 0x1ef3, -0x1ef5, 0x1ef5, -0x1ef7, 0x1ef7, -0x1ef9, 0x1ef9, -0x1efb, 0x1efb, -0x1efd, 0x1efd, -0x1eff, 0x1f07, -0x1f10, 0x1f15, -0x1f20, 0x1f27, -0x1f30, 0x1f37, -0x1f40, 0x1f45, -0x1f50, 0x1f57, -0x1f60, 0x1f67, -0x1f70, 0x1f7d, -0x1f80, 0x1f87, -0x1f90, 0x1f97, -0x1fa0, 0x1fa7, -0x1fb0, 0x1fb4, -0x1fb6, 0x1fb7, -0x1fbe, 0x1fbe, -0x1fc2, 0x1fc4, -0x1fc6, 0x1fc7, -0x1fd0, 0x1fd3, -0x1fd6, 0x1fd7, -0x1fe0, 0x1fe7, -0x1ff2, 0x1ff4, -0x1ff6, 0x1ff7, -0x214e, 0x214e, -0x2170, 0x217f, -0x2184, 0x2184, -0x24d0, 0x24e9, -0x2c30, 0x2c5e, -0x2c61, 0x2c61, -0x2c65, 0x2c66, -0x2c68, 0x2c68, -0x2c6a, 0x2c6a, -0x2c6c, 0x2c6c, -0x2c73, 0x2c73, -0x2c76, 0x2c76, -0x2c81, 0x2c81, -0x2c83, 0x2c83, -0x2c85, 0x2c85, -0x2c87, 0x2c87, -0x2c89, 0x2c89, -0x2c8b, 0x2c8b, -0x2c8d, 0x2c8d, -0x2c8f, 0x2c8f, -0x2c91, 0x2c91, -0x2c93, 0x2c93, -0x2c95, 0x2c95, -0x2c97, 0x2c97, -0x2c99, 0x2c99, -0x2c9b, 0x2c9b, -0x2c9d, 0x2c9d, -0x2c9f, 0x2c9f, -0x2ca1, 0x2ca1, -0x2ca3, 0x2ca3, -0x2ca5, 0x2ca5, -0x2ca7, 0x2ca7, -0x2ca9, 0x2ca9, -0x2cab, 0x2cab, -0x2cad, 0x2cad, -0x2caf, 0x2caf, -0x2cb1, 0x2cb1, -0x2cb3, 0x2cb3, -0x2cb5, 0x2cb5, -0x2cb7, 0x2cb7, -0x2cb9, 0x2cb9, -0x2cbb, 0x2cbb, -0x2cbd, 0x2cbd, -0x2cbf, 0x2cbf, -0x2cc1, 0x2cc1, -0x2cc3, 0x2cc3, -0x2cc5, 0x2cc5, -0x2cc7, 0x2cc7, -0x2cc9, 0x2cc9, -0x2ccb, 0x2ccb, -0x2ccd, 0x2ccd, -0x2ccf, 0x2ccf, -0x2cd1, 0x2cd1, -0x2cd3, 0x2cd3, -0x2cd5, 0x2cd5, -0x2cd7, 0x2cd7, -0x2cd9, 0x2cd9, -0x2cdb, 0x2cdb, -0x2cdd, 0x2cdd, -0x2cdf, 0x2cdf, -0x2ce1, 0x2ce1, -0x2ce3, 0x2ce3, -0x2cec, 0x2cec, -0x2cee, 0x2cee, -0x2cf3, 0x2cf3, -0x2d00, 0x2d25, -0x2d27, 0x2d27, -0x2d2d, 0x2d2d, -0xa641, 0xa641, -0xa643, 0xa643, -0xa645, 0xa645, -0xa647, 0xa647, -0xa649, 0xa649, -0xa64b, 0xa64b, -0xa64d, 0xa64d, -0xa64f, 0xa64f, -0xa651, 0xa651, -0xa653, 0xa653, -0xa655, 0xa655, -0xa657, 0xa657, -0xa659, 0xa659, -0xa65b, 0xa65b, -0xa65d, 0xa65d, -0xa65f, 0xa65f, -0xa661, 0xa661, -0xa663, 0xa663, -0xa665, 0xa665, -0xa667, 0xa667, -0xa669, 0xa669, -0xa66b, 0xa66b, -0xa66d, 0xa66d, -0xa681, 0xa681, -0xa683, 0xa683, -0xa685, 0xa685, -0xa687, 0xa687, -0xa689, 0xa689, -0xa68b, 0xa68b, -0xa68d, 0xa68d, -0xa68f, 0xa68f, -0xa691, 0xa691, -0xa693, 0xa693, -0xa695, 0xa695, -0xa697, 0xa697, -0xa699, 0xa699, -0xa69b, 0xa69b, -0xa723, 0xa723, -0xa725, 0xa725, -0xa727, 0xa727, -0xa729, 0xa729, -0xa72b, 0xa72b, -0xa72d, 0xa72d, -0xa72f, 0xa72f, -0xa733, 0xa733, -0xa735, 0xa735, -0xa737, 0xa737, -0xa739, 0xa739, -0xa73b, 0xa73b, -0xa73d, 0xa73d, -0xa73f, 0xa73f, -0xa741, 0xa741, -0xa743, 0xa743, -0xa745, 0xa745, -0xa747, 0xa747, -0xa749, 0xa749, -0xa74b, 0xa74b, -0xa74d, 0xa74d, -0xa74f, 0xa74f, -0xa751, 0xa751, -0xa753, 0xa753, -0xa755, 0xa755, -0xa757, 0xa757, -0xa759, 0xa759, -0xa75b, 0xa75b, -0xa75d, 0xa75d, -0xa75f, 0xa75f, -0xa761, 0xa761, -0xa763, 0xa763, -0xa765, 0xa765, -0xa767, 0xa767, -0xa769, 0xa769, -0xa76b, 0xa76b, -0xa76d, 0xa76d, -0xa76f, 0xa76f, -0xa77a, 0xa77a, -0xa77c, 0xa77c, -0xa77f, 0xa77f, -0xa781, 0xa781, -0xa783, 0xa783, -0xa785, 0xa785, -0xa787, 0xa787, -0xa78c, 0xa78c, -0xa791, 0xa791, -0xa793, 0xa793, -0xa797, 0xa797, -0xa799, 0xa799, -0xa79b, 0xa79b, -0xa79d, 0xa79d, -0xa79f, 0xa79f, -0xa7a1, 0xa7a1, -0xa7a3, 0xa7a3, -0xa7a5, 0xa7a5, -0xa7a7, 0xa7a7, -0xa7a9, 0xa7a9, -0xa7b5, 0xa7b5, -0xa7b7, 0xa7b7, -0xab53, 0xab53, -0xab70, 0xabbf, -0xfb00, 0xfb06, -0xfb13, 0xfb17, -0xff41, 0xff5a, -0x10428, 0x1044f, -0x10cc0, 0x10cf2, -0x118c0, 0x118df, -}; /* END of CR_Changes_When_Titlecased */ +CR_Tai_Tham[] = { 5, +0x1a20, 0x1a5e, +0x1a60, 0x1a7c, +0x1a7f, 0x1a89, +0x1a90, 0x1a99, +0x1aa0, 0x1aad, +}; /* END of CR_Tai_Tham */ -/* PROPERTY: 'Changes_When_Casefolded': Derived Property */ +/* PROPERTY: 'Tai_Viet': Script */  static const OnigCodePoint -CR_Changes_When_Casefolded[] = { 600, -0x0041, 0x005a, -0x00b5, 0x00b5, -0x00c0, 0x00d6, -0x00d8, 0x00df, -0x0100, 0x0100, -0x0102, 0x0102, -0x0104, 0x0104, -0x0106, 0x0106, -0x0108, 0x0108, -0x010a, 0x010a, -0x010c, 0x010c, -0x010e, 0x010e, -0x0110, 0x0110, -0x0112, 0x0112, -0x0114, 0x0114, -0x0116, 0x0116, -0x0118, 0x0118, -0x011a, 0x011a, -0x011c, 0x011c, -0x011e, 0x011e, -0x0120, 0x0120, -0x0122, 0x0122, -0x0124, 0x0124, -0x0126, 0x0126, -0x0128, 0x0128, -0x012a, 0x012a, -0x012c, 0x012c, -0x012e, 0x012e, -0x0130, 0x0130, -0x0132, 0x0132, -0x0134, 0x0134, -0x0136, 0x0136, -0x0139, 0x0139, -0x013b, 0x013b, -0x013d, 0x013d, -0x013f, 0x013f, -0x0141, 0x0141, -0x0143, 0x0143, -0x0145, 0x0145, -0x0147, 0x0147, -0x0149, 0x014a, -0x014c, 0x014c, -0x014e, 0x014e, -0x0150, 0x0150, -0x0152, 0x0152, -0x0154, 0x0154, -0x0156, 0x0156, -0x0158, 0x0158, -0x015a, 0x015a, -0x015c, 0x015c, -0x015e, 0x015e, -0x0160, 0x0160, -0x0162, 0x0162, -0x0164, 0x0164, -0x0166, 0x0166, -0x0168, 0x0168, -0x016a, 0x016a, -0x016c, 0x016c, -0x016e, 0x016e, -0x0170, 0x0170, -0x0172, 0x0172, -0x0174, 0x0174, -0x0176, 0x0176, -0x0178, 0x0179, -0x017b, 0x017b, -0x017d, 0x017d, -0x017f, 0x017f, -0x0181, 0x0182, -0x0184, 0x0184, -0x0186, 0x0187, -0x0189, 0x018b, -0x018e, 0x0191, -0x0193, 0x0194, -0x0196, 0x0198, -0x019c, 0x019d, -0x019f, 0x01a0, -0x01a2, 0x01a2, -0x01a4, 0x01a4, -0x01a6, 0x01a7, -0x01a9, 0x01a9, -0x01ac, 0x01ac, -0x01ae, 0x01af, -0x01b1, 0x01b3, -0x01b5, 0x01b5, -0x01b7, 0x01b8, -0x01bc, 0x01bc, -0x01c4, 0x01c5, -0x01c7, 0x01c8, -0x01ca, 0x01cb, -0x01cd, 0x01cd, -0x01cf, 0x01cf, -0x01d1, 0x01d1, -0x01d3, 0x01d3, -0x01d5, 0x01d5, -0x01d7, 0x01d7, -0x01d9, 0x01d9, -0x01db, 0x01db, -0x01de, 0x01de, -0x01e0, 0x01e0, -0x01e2, 0x01e2, -0x01e4, 0x01e4, -0x01e6, 0x01e6, -0x01e8, 0x01e8, -0x01ea, 0x01ea, -0x01ec, 0x01ec, -0x01ee, 0x01ee, -0x01f1, 0x01f2, -0x01f4, 0x01f4, -0x01f6, 0x01f8, -0x01fa, 0x01fa, -0x01fc, 0x01fc, -0x01fe, 0x01fe, -0x0200, 0x0200, -0x0202, 0x0202, -0x0204, 0x0204, -0x0206, 0x0206, -0x0208, 0x0208, -0x020a, 0x020a, -0x020c, 0x020c, -0x020e, 0x020e, -0x0210, 0x0210, -0x0212, 0x0212, -0x0214, 0x0214, -0x0216, 0x0216, -0x0218, 0x0218, -0x021a, 0x021a, -0x021c, 0x021c, -0x021e, 0x021e, -0x0220, 0x0220, -0x0222, 0x0222, -0x0224, 0x0224, -0x0226, 0x0226, -0x0228, 0x0228, -0x022a, 0x022a, -0x022c, 0x022c, -0x022e, 0x022e, -0x0230, 0x0230, -0x0232, 0x0232, -0x023a, 0x023b, -0x023d, 0x023e, -0x0241, 0x0241, -0x0243, 0x0246, -0x0248, 0x0248, -0x024a, 0x024a, -0x024c, 0x024c, -0x024e, 0x024e, -0x0345, 0x0345, -0x0370, 0x0370, -0x0372, 0x0372, -0x0376, 0x0376, -0x037f, 0x037f, -0x0386, 0x0386, -0x0388, 0x038a, -0x038c, 0x038c, -0x038e, 0x038f, -0x0391, 0x03a1, -0x03a3, 0x03ab, -0x03c2, 0x03c2, -0x03cf, 0x03d1, -0x03d5, 0x03d6, -0x03d8, 0x03d8, -0x03da, 0x03da, -0x03dc, 0x03dc, -0x03de, 0x03de, -0x03e0, 0x03e0, -0x03e2, 0x03e2, -0x03e4, 0x03e4, -0x03e6, 0x03e6, -0x03e8, 0x03e8, -0x03ea, 0x03ea, -0x03ec, 0x03ec, -0x03ee, 0x03ee, -0x03f0, 0x03f1, -0x03f4, 0x03f5, -0x03f7, 0x03f7, -0x03f9, 0x03fa, -0x03fd, 0x042f, -0x0460, 0x0460, -0x0462, 0x0462, -0x0464, 0x0464, -0x0466, 0x0466, -0x0468, 0x0468, -0x046a, 0x046a, -0x046c, 0x046c, -0x046e, 0x046e, -0x0470, 0x0470, -0x0472, 0x0472, -0x0474, 0x0474, -0x0476, 0x0476, -0x0478, 0x0478, -0x047a, 0x047a, -0x047c, 0x047c, -0x047e, 0x047e, -0x0480, 0x0480, -0x048a, 0x048a, -0x048c, 0x048c, -0x048e, 0x048e, -0x0490, 0x0490, -0x0492, 0x0492, -0x0494, 0x0494, -0x0496, 0x0496, -0x0498, 0x0498, -0x049a, 0x049a, -0x049c, 0x049c, -0x049e, 0x049e, -0x04a0, 0x04a0, -0x04a2, 0x04a2, -0x04a4, 0x04a4, -0x04a6, 0x04a6, -0x04a8, 0x04a8, -0x04aa, 0x04aa, -0x04ac, 0x04ac, -0x04ae, 0x04ae, -0x04b0, 0x04b0, -0x04b2, 0x04b2, -0x04b4, 0x04b4, -0x04b6, 0x04b6, -0x04b8, 0x04b8, -0x04ba, 0x04ba, -0x04bc, 0x04bc, -0x04be, 0x04be, -0x04c0, 0x04c1, -0x04c3, 0x04c3, -0x04c5, 0x04c5, -0x04c7, 0x04c7, -0x04c9, 0x04c9, -0x04cb, 0x04cb, -0x04cd, 0x04cd, -0x04d0, 0x04d0, -0x04d2, 0x04d2, -0x04d4, 0x04d4, -0x04d6, 0x04d6, -0x04d8, 0x04d8, -0x04da, 0x04da, -0x04dc, 0x04dc, -0x04de, 0x04de, -0x04e0, 0x04e0, -0x04e2, 0x04e2, -0x04e4, 0x04e4, -0x04e6, 0x04e6, -0x04e8, 0x04e8, -0x04ea, 0x04ea, -0x04ec, 0x04ec, -0x04ee, 0x04ee, -0x04f0, 0x04f0, -0x04f2, 0x04f2, -0x04f4, 0x04f4, -0x04f6, 0x04f6, -0x04f8, 0x04f8, -0x04fa, 0x04fa, -0x04fc, 0x04fc, -0x04fe, 0x04fe, -0x0500, 0x0500, -0x0502, 0x0502, -0x0504, 0x0504, -0x0506, 0x0506, -0x0508, 0x0508, -0x050a, 0x050a, -0x050c, 0x050c, -0x050e, 0x050e, -0x0510, 0x0510, -0x0512, 0x0512, -0x0514, 0x0514, -0x0516, 0x0516, -0x0518, 0x0518, -0x051a, 0x051a, -0x051c, 0x051c, -0x051e, 0x051e, -0x0520, 0x0520, -0x0522, 0x0522, -0x0524, 0x0524, -0x0526, 0x0526, -0x0528, 0x0528, -0x052a, 0x052a, -0x052c, 0x052c, -0x052e, 0x052e, -0x0531, 0x0556, -0x0587, 0x0587, -0x10a0, 0x10c5, -0x10c7, 0x10c7, -0x10cd, 0x10cd, -0x13f8, 0x13fd, -0x1e00, 0x1e00, -0x1e02, 0x1e02, -0x1e04, 0x1e04, -0x1e06, 0x1e06, -0x1e08, 0x1e08, -0x1e0a, 0x1e0a, -0x1e0c, 0x1e0c, -0x1e0e, 0x1e0e, -0x1e10, 0x1e10, -0x1e12, 0x1e12, -0x1e14, 0x1e14, -0x1e16, 0x1e16, -0x1e18, 0x1e18, -0x1e1a, 0x1e1a, -0x1e1c, 0x1e1c, -0x1e1e, 0x1e1e, -0x1e20, 0x1e20, -0x1e22, 0x1e22, -0x1e24, 0x1e24, -0x1e26, 0x1e26, -0x1e28, 0x1e28, -0x1e2a, 0x1e2a, -0x1e2c, 0x1e2c, -0x1e2e, 0x1e2e, -0x1e30, 0x1e30, -0x1e32, 0x1e32, -0x1e34, 0x1e34, -0x1e36, 0x1e36, -0x1e38, 0x1e38, -0x1e3a, 0x1e3a, -0x1e3c, 0x1e3c, -0x1e3e, 0x1e3e, -0x1e40, 0x1e40, -0x1e42, 0x1e42, -0x1e44, 0x1e44, -0x1e46, 0x1e46, -0x1e48, 0x1e48, -0x1e4a, 0x1e4a, -0x1e4c, 0x1e4c, -0x1e4e, 0x1e4e, -0x1e50, 0x1e50, -0x1e52, 0x1e52, -0x1e54, 0x1e54, -0x1e56, 0x1e56, -0x1e58, 0x1e58, -0x1e5a, 0x1e5a, -0x1e5c, 0x1e5c, -0x1e5e, 0x1e5e, -0x1e60, 0x1e60, -0x1e62, 0x1e62, -0x1e64, 0x1e64, -0x1e66, 0x1e66, -0x1e68, 0x1e68, -0x1e6a, 0x1e6a, -0x1e6c, 0x1e6c, -0x1e6e, 0x1e6e, -0x1e70, 0x1e70, -0x1e72, 0x1e72, -0x1e74, 0x1e74, -0x1e76, 0x1e76, -0x1e78, 0x1e78, -0x1e7a, 0x1e7a, -0x1e7c, 0x1e7c, -0x1e7e, 0x1e7e, -0x1e80, 0x1e80, -0x1e82, 0x1e82, -0x1e84, 0x1e84, -0x1e86, 0x1e86, -0x1e88, 0x1e88, -0x1e8a, 0x1e8a, -0x1e8c, 0x1e8c, -0x1e8e, 0x1e8e, -0x1e90, 0x1e90, -0x1e92, 0x1e92, -0x1e94, 0x1e94, -0x1e9a, 0x1e9b, -0x1e9e, 0x1e9e, -0x1ea0, 0x1ea0, -0x1ea2, 0x1ea2, -0x1ea4, 0x1ea4, -0x1ea6, 0x1ea6, -0x1ea8, 0x1ea8, -0x1eaa, 0x1eaa, -0x1eac, 0x1eac, -0x1eae, 0x1eae, -0x1eb0, 0x1eb0, -0x1eb2, 0x1eb2, -0x1eb4, 0x1eb4, -0x1eb6, 0x1eb6, -0x1eb8, 0x1eb8, -0x1eba, 0x1eba, -0x1ebc, 0x1ebc, -0x1ebe, 0x1ebe, -0x1ec0, 0x1ec0, -0x1ec2, 0x1ec2, -0x1ec4, 0x1ec4, -0x1ec6, 0x1ec6, -0x1ec8, 0x1ec8, -0x1eca, 0x1eca, -0x1ecc, 0x1ecc, -0x1ece, 0x1ece, -0x1ed0, 0x1ed0, -0x1ed2, 0x1ed2, -0x1ed4, 0x1ed4, -0x1ed6, 0x1ed6, -0x1ed8, 0x1ed8, -0x1eda, 0x1eda, -0x1edc, 0x1edc, -0x1ede, 0x1ede, -0x1ee0, 0x1ee0, -0x1ee2, 0x1ee2, -0x1ee4, 0x1ee4, -0x1ee6, 0x1ee6, -0x1ee8, 0x1ee8, -0x1eea, 0x1eea, -0x1eec, 0x1eec, -0x1eee, 0x1eee, -0x1ef0, 0x1ef0, -0x1ef2, 0x1ef2, -0x1ef4, 0x1ef4, -0x1ef6, 0x1ef6, -0x1ef8, 0x1ef8, -0x1efa, 0x1efa, -0x1efc, 0x1efc, -0x1efe, 0x1efe, -0x1f08, 0x1f0f, -0x1f18, 0x1f1d, -0x1f28, 0x1f2f, -0x1f38, 0x1f3f, -0x1f48, 0x1f4d, -0x1f59, 0x1f59, -0x1f5b, 0x1f5b, -0x1f5d, 0x1f5d, -0x1f5f, 0x1f5f, -0x1f68, 0x1f6f, -0x1f80, 0x1faf, -0x1fb2, 0x1fb4, -0x1fb7, 0x1fbc, -0x1fc2, 0x1fc4, -0x1fc7, 0x1fcc, -0x1fd8, 0x1fdb, -0x1fe8, 0x1fec, -0x1ff2, 0x1ff4, -0x1ff7, 0x1ffc, -0x2126, 0x2126, -0x212a, 0x212b, -0x2132, 0x2132, -0x2160, 0x216f, -0x2183, 0x2183, -0x24b6, 0x24cf, -0x2c00, 0x2c2e, -0x2c60, 0x2c60, -0x2c62, 0x2c64, -0x2c67, 0x2c67, -0x2c69, 0x2c69, -0x2c6b, 0x2c6b, -0x2c6d, 0x2c70, -0x2c72, 0x2c72, -0x2c75, 0x2c75, -0x2c7e, 0x2c80, -0x2c82, 0x2c82, -0x2c84, 0x2c84, -0x2c86, 0x2c86, -0x2c88, 0x2c88, -0x2c8a, 0x2c8a, -0x2c8c, 0x2c8c, -0x2c8e, 0x2c8e, -0x2c90, 0x2c90, -0x2c92, 0x2c92, -0x2c94, 0x2c94, -0x2c96, 0x2c96, -0x2c98, 0x2c98, -0x2c9a, 0x2c9a, -0x2c9c, 0x2c9c, -0x2c9e, 0x2c9e, -0x2ca0, 0x2ca0, -0x2ca2, 0x2ca2, -0x2ca4, 0x2ca4, -0x2ca6, 0x2ca6, -0x2ca8, 0x2ca8, -0x2caa, 0x2caa, -0x2cac, 0x2cac, -0x2cae, 0x2cae, -0x2cb0, 0x2cb0, -0x2cb2, 0x2cb2, -0x2cb4, 0x2cb4, -0x2cb6, 0x2cb6, -0x2cb8, 0x2cb8, -0x2cba, 0x2cba, -0x2cbc, 0x2cbc, -0x2cbe, 0x2cbe, -0x2cc0, 0x2cc0, -0x2cc2, 0x2cc2, -0x2cc4, 0x2cc4, -0x2cc6, 0x2cc6, -0x2cc8, 0x2cc8, -0x2cca, 0x2cca, -0x2ccc, 0x2ccc, -0x2cce, 0x2cce, -0x2cd0, 0x2cd0, -0x2cd2, 0x2cd2, -0x2cd4, 0x2cd4, -0x2cd6, 0x2cd6, -0x2cd8, 0x2cd8, -0x2cda, 0x2cda, -0x2cdc, 0x2cdc, -0x2cde, 0x2cde, -0x2ce0, 0x2ce0, -0x2ce2, 0x2ce2, -0x2ceb, 0x2ceb, -0x2ced, 0x2ced, -0x2cf2, 0x2cf2, -0xa640, 0xa640, -0xa642, 0xa642, -0xa644, 0xa644, -0xa646, 0xa646, -0xa648, 0xa648, -0xa64a, 0xa64a, -0xa64c, 0xa64c, -0xa64e, 0xa64e, -0xa650, 0xa650, -0xa652, 0xa652, -0xa654, 0xa654, -0xa656, 0xa656, -0xa658, 0xa658, -0xa65a, 0xa65a, -0xa65c, 0xa65c, -0xa65e, 0xa65e, -0xa660, 0xa660, -0xa662, 0xa662, -0xa664, 0xa664, -0xa666, 0xa666, -0xa668, 0xa668, -0xa66a, 0xa66a, -0xa66c, 0xa66c, -0xa680, 0xa680, -0xa682, 0xa682, -0xa684, 0xa684, -0xa686, 0xa686, -0xa688, 0xa688, -0xa68a, 0xa68a, -0xa68c, 0xa68c, -0xa68e, 0xa68e, -0xa690, 0xa690, -0xa692, 0xa692, -0xa694, 0xa694, -0xa696, 0xa696, -0xa698, 0xa698, -0xa69a, 0xa69a, -0xa722, 0xa722, -0xa724, 0xa724, -0xa726, 0xa726, -0xa728, 0xa728, -0xa72a, 0xa72a, -0xa72c, 0xa72c, -0xa72e, 0xa72e, -0xa732, 0xa732, -0xa734, 0xa734, -0xa736, 0xa736, -0xa738, 0xa738, -0xa73a, 0xa73a, -0xa73c, 0xa73c, -0xa73e, 0xa73e, -0xa740, 0xa740, -0xa742, 0xa742, -0xa744, 0xa744, -0xa746, 0xa746, -0xa748, 0xa748, -0xa74a, 0xa74a, -0xa74c, 0xa74c, -0xa74e, 0xa74e, -0xa750, 0xa750, -0xa752, 0xa752, -0xa754, 0xa754, -0xa756, 0xa756, -0xa758, 0xa758, -0xa75a, 0xa75a, -0xa75c, 0xa75c, -0xa75e, 0xa75e, -0xa760, 0xa760, -0xa762, 0xa762, -0xa764, 0xa764, -0xa766, 0xa766, -0xa768, 0xa768, -0xa76a, 0xa76a, -0xa76c, 0xa76c, -0xa76e, 0xa76e, -0xa779, 0xa779, -0xa77b, 0xa77b, -0xa77d, 0xa77e, -0xa780, 0xa780, -0xa782, 0xa782, -0xa784, 0xa784, -0xa786, 0xa786, -0xa78b, 0xa78b, -0xa78d, 0xa78d, -0xa790, 0xa790, -0xa792, 0xa792, -0xa796, 0xa796, -0xa798, 0xa798, -0xa79a, 0xa79a, -0xa79c, 0xa79c, -0xa79e, 0xa79e, -0xa7a0, 0xa7a0, -0xa7a2, 0xa7a2, -0xa7a4, 0xa7a4, -0xa7a6, 0xa7a6, -0xa7a8, 0xa7a8, -0xa7aa, 0xa7ad, -0xa7b0, 0xa7b4, -0xa7b6, 0xa7b6, -0xab70, 0xabbf, -0xfb00, 0xfb06, -0xfb13, 0xfb17, -0xff21, 0xff3a, -0x10400, 0x10427, -0x10c80, 0x10cb2, -0x118a0, 0x118bf, -}; /* END of CR_Changes_When_Casefolded */ +CR_Tai_Viet[] = { 2, +0xaa80, 0xaac2, +0xaadb, 0xaadf, +}; /* END of CR_Tai_Viet */ -/* PROPERTY: 'Changes_When_Casemapped': Derived Property */ +/* PROPERTY: 'Takri': Script */  static const OnigCodePoint -CR_Changes_When_Casemapped[] = { 113, -0x0041, 0x005a, -0x0061, 0x007a, -0x00b5, 0x00b5, -0x00c0, 0x00d6, -0x00d8, 0x00f6, -0x00f8, 0x0137, -0x0139, 0x018c, -0x018e, 0x019a, -0x019c, 0x01a9, -0x01ac, 0x01b9, -0x01bc, 0x01bd, -0x01bf, 0x01bf, -0x01c4, 0x0220, -0x0222, 0x0233, -0x023a, 0x0254, -0x0256, 0x0257, -0x0259, 0x0259, -0x025b, 0x025c, -0x0260, 0x0261, -0x0263, 0x0263, -0x0265, 0x0266, -0x0268, 0x0269, -0x026b, 0x026c, -0x026f, 0x026f, -0x0271, 0x0272, -0x0275, 0x0275, -0x027d, 0x027d, -0x0280, 0x0280, -0x0283, 0x0283, -0x0287, 0x028c, -0x0292, 0x0292, -0x029d, 0x029e, -0x0345, 0x0345, -0x0370, 0x0373, -0x0376, 0x0377, -0x037b, 0x037d, -0x037f, 0x037f, -0x0386, 0x0386, -0x0388, 0x038a, -0x038c, 0x038c, -0x038e, 0x03a1, -0x03a3, 0x03d1, -0x03d5, 0x03f5, -0x03f7, 0x03fb, -0x03fd, 0x0481, -0x048a, 0x052f, -0x0531, 0x0556, -0x0561, 0x0587, -0x10a0, 0x10c5, -0x10c7, 0x10c7, -0x10cd, 0x10cd, -0x13a0, 0x13f5, -0x13f8, 0x13fd, -0x1d79, 0x1d79, -0x1d7d, 0x1d7d, -0x1e00, 0x1e9b, -0x1e9e, 0x1e9e, -0x1ea0, 0x1f15, -0x1f18, 0x1f1d, -0x1f20, 0x1f45, -0x1f48, 0x1f4d, -0x1f50, 0x1f57, -0x1f59, 0x1f59, -0x1f5b, 0x1f5b, -0x1f5d, 0x1f5d, -0x1f5f, 0x1f7d, -0x1f80, 0x1fb4, -0x1fb6, 0x1fbc, -0x1fbe, 0x1fbe, -0x1fc2, 0x1fc4, -0x1fc6, 0x1fcc, -0x1fd0, 0x1fd3, -0x1fd6, 0x1fdb, -0x1fe0, 0x1fec, -0x1ff2, 0x1ff4, -0x1ff6, 0x1ffc, -0x2126, 0x2126, -0x212a, 0x212b, -0x2132, 0x2132, -0x214e, 0x214e, -0x2160, 0x217f, -0x2183, 0x2184, -0x24b6, 0x24e9, -0x2c00, 0x2c2e, -0x2c30, 0x2c5e, -0x2c60, 0x2c70, -0x2c72, 0x2c73, -0x2c75, 0x2c76, -0x2c7e, 0x2ce3, -0x2ceb, 0x2cee, -0x2cf2, 0x2cf3, -0x2d00, 0x2d25, -0x2d27, 0x2d27, -0x2d2d, 0x2d2d, -0xa640, 0xa66d, -0xa680, 0xa69b, -0xa722, 0xa72f, -0xa732, 0xa76f, -0xa779, 0xa787, -0xa78b, 0xa78d, -0xa790, 0xa793, -0xa796, 0xa7ad, -0xa7b0, 0xa7b7, -0xab53, 0xab53, -0xab70, 0xabbf, -0xfb00, 0xfb06, -0xfb13, 0xfb17, -0xff21, 0xff3a, -0xff41, 0xff5a, -0x10400, 0x1044f, -0x10c80, 0x10cb2, -0x10cc0, 0x10cf2, -0x118a0, 0x118df, -}; /* END of CR_Changes_When_Casemapped */ +CR_Takri[] = { 2, +0x11680, 0x116b7, +0x116c0, 0x116c9, +}; /* END of CR_Takri */ -/* PROPERTY: 'ID_Start': Derived Property */ +/* PROPERTY: 'Tamil': Script */  static const OnigCodePoint -CR_ID_Start[] = { 555, -0x0041, 0x005a, -0x0061, 0x007a, -0x00aa, 0x00aa, -0x00b5, 0x00b5, -0x00ba, 0x00ba, -0x00c0, 0x00d6, -0x00d8, 0x00f6, -0x00f8, 0x02c1, -0x02c6, 0x02d1, -0x02e0, 0x02e4, -0x02ec, 0x02ec, -0x02ee, 0x02ee, -0x0370, 0x0374, -0x0376, 0x0377, -0x037a, 0x037d, -0x037f, 0x037f, -0x0386, 0x0386, -0x0388, 0x038a, -0x038c, 0x038c, -0x038e, 0x03a1, -0x03a3, 0x03f5, -0x03f7, 0x0481, -0x048a, 0x052f, -0x0531, 0x0556, -0x0559, 0x0559, -0x0561, 0x0587, -0x05d0, 0x05ea, -0x05f0, 0x05f2, -0x0620, 0x064a, -0x066e, 0x066f, -0x0671, 0x06d3, -0x06d5, 0x06d5, -0x06e5, 0x06e6, -0x06ee, 0x06ef, -0x06fa, 0x06fc, -0x06ff, 0x06ff, -0x0710, 0x0710, -0x0712, 0x072f, -0x074d, 0x07a5, -0x07b1, 0x07b1, -0x07ca, 0x07ea, -0x07f4, 0x07f5, -0x07fa, 0x07fa, -0x0800, 0x0815, -0x081a, 0x081a, -0x0824, 0x0824, -0x0828, 0x0828, -0x0840, 0x0858, -0x08a0, 0x08b4, -0x0904, 0x0939, -0x093d, 0x093d, -0x0950, 0x0950, -0x0958, 0x0961, -0x0971, 0x0980, -0x0985, 0x098c, -0x098f, 0x0990, -0x0993, 0x09a8, -0x09aa, 0x09b0, -0x09b2, 0x09b2, -0x09b6, 0x09b9, -0x09bd, 0x09bd, -0x09ce, 0x09ce, -0x09dc, 0x09dd, -0x09df, 0x09e1, -0x09f0, 0x09f1, -0x0a05, 0x0a0a, -0x0a0f, 0x0a10, -0x0a13, 0x0a28, -0x0a2a, 0x0a30, -0x0a32, 0x0a33, -0x0a35, 0x0a36, -0x0a38, 0x0a39, -0x0a59, 0x0a5c, -0x0a5e, 0x0a5e, -0x0a72, 0x0a74, -0x0a85, 0x0a8d, -0x0a8f, 0x0a91, -0x0a93, 0x0aa8, -0x0aaa, 0x0ab0, -0x0ab2, 0x0ab3, -0x0ab5, 0x0ab9, -0x0abd, 0x0abd, -0x0ad0, 0x0ad0, -0x0ae0, 0x0ae1, -0x0af9, 0x0af9, -0x0b05, 0x0b0c, -0x0b0f, 0x0b10, -0x0b13, 0x0b28, -0x0b2a, 0x0b30, -0x0b32, 0x0b33, -0x0b35, 0x0b39, -0x0b3d, 0x0b3d, -0x0b5c, 0x0b5d, -0x0b5f, 0x0b61, -0x0b71, 0x0b71, -0x0b83, 0x0b83, +CR_Tamil[] = { 16, +0x0b82, 0x0b83,  0x0b85, 0x0b8a,  0x0b8e, 0x0b90,  0x0b92, 0x0b95, @@ -14232,461 +18712,838 @@ CR_ID_Start[] = { 555,  0x0ba3, 0x0ba4,  0x0ba8, 0x0baa,  0x0bae, 0x0bb9, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcd,  0x0bd0, 0x0bd0, +0x0bd7, 0x0bd7, +0x0be6, 0x0bfa, +}; /* END of CR_Tamil */ + +/* PROPERTY: 'Telugu': Script */ +static const OnigCodePoint +CR_Telugu[] = { 13, +0x0c00, 0x0c03,  0x0c05, 0x0c0c,  0x0c0e, 0x0c10,  0x0c12, 0x0c28,  0x0c2a, 0x0c39, -0x0c3d, 0x0c3d, +0x0c3d, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4d, +0x0c55, 0x0c56,  0x0c58, 0x0c5a, -0x0c60, 0x0c61, -0x0c85, 0x0c8c, -0x0c8e, 0x0c90, -0x0c92, 0x0ca8, -0x0caa, 0x0cb3, -0x0cb5, 0x0cb9, -0x0cbd, 0x0cbd, -0x0cde, 0x0cde, -0x0ce0, 0x0ce1, -0x0cf1, 0x0cf2, -0x0d05, 0x0d0c, -0x0d0e, 0x0d10, -0x0d12, 0x0d3a, -0x0d3d, 0x0d3d, -0x0d4e, 0x0d4e, -0x0d5f, 0x0d61, -0x0d7a, 0x0d7f, -0x0d85, 0x0d96, -0x0d9a, 0x0db1, -0x0db3, 0x0dbb, -0x0dbd, 0x0dbd, -0x0dc0, 0x0dc6, -0x0e01, 0x0e30, -0x0e32, 0x0e33, -0x0e40, 0x0e46, -0x0e81, 0x0e82, -0x0e84, 0x0e84, -0x0e87, 0x0e88, -0x0e8a, 0x0e8a, -0x0e8d, 0x0e8d, -0x0e94, 0x0e97, -0x0e99, 0x0e9f, -0x0ea1, 0x0ea3, -0x0ea5, 0x0ea5, -0x0ea7, 0x0ea7, -0x0eaa, 0x0eab, -0x0ead, 0x0eb0, -0x0eb2, 0x0eb3, -0x0ebd, 0x0ebd, -0x0ec0, 0x0ec4, -0x0ec6, 0x0ec6, -0x0edc, 0x0edf, -0x0f00, 0x0f00, -0x0f40, 0x0f47, +0x0c60, 0x0c63, +0x0c66, 0x0c6f, +0x0c78, 0x0c7f, +}; /* END of CR_Telugu */ + +/* PROPERTY: 'Terminal_Punctuation': Binary Property */ +static const OnigCodePoint +CR_Terminal_Punctuation[] = { 90, +0x0021, 0x0021, +0x002c, 0x002c, +0x002e, 0x002e, +0x003a, 0x003b, +0x003f, 0x003f, +0x037e, 0x037e, +0x0387, 0x0387, +0x0589, 0x0589, +0x05c3, 0x05c3, +0x060c, 0x060c, +0x061b, 0x061b, +0x061f, 0x061f, +0x06d4, 0x06d4, +0x0700, 0x070a, +0x070c, 0x070c, +0x07f8, 0x07f9, +0x0830, 0x083e, +0x085e, 0x085e, +0x0964, 0x0965, +0x0e5a, 0x0e5b, +0x0f08, 0x0f08, +0x0f0d, 0x0f12, +0x104a, 0x104b, +0x1361, 0x1368, +0x166d, 0x166e, +0x16eb, 0x16ed, +0x1735, 0x1736, +0x17d4, 0x17d6, +0x17da, 0x17da, +0x1802, 0x1805, +0x1808, 0x1809, +0x1944, 0x1945, +0x1aa8, 0x1aab, +0x1b5a, 0x1b5b, +0x1b5d, 0x1b5f, +0x1c3b, 0x1c3f, +0x1c7e, 0x1c7f, +0x203c, 0x203d, +0x2047, 0x2049, +0x2e2e, 0x2e2e, +0x2e3c, 0x2e3c, +0x2e41, 0x2e41, +0x3001, 0x3002, +0xa4fe, 0xa4ff, +0xa60d, 0xa60f, +0xa6f3, 0xa6f7, +0xa876, 0xa877, +0xa8ce, 0xa8cf, +0xa92f, 0xa92f, +0xa9c7, 0xa9c9, +0xaa5d, 0xaa5f, +0xaadf, 0xaadf, +0xaaf0, 0xaaf1, +0xabeb, 0xabeb, +0xfe50, 0xfe52, +0xfe54, 0xfe57, +0xff01, 0xff01, +0xff0c, 0xff0c, +0xff0e, 0xff0e, +0xff1a, 0xff1b, +0xff1f, 0xff1f, +0xff61, 0xff61, +0xff64, 0xff64, +0x1039f, 0x1039f, +0x103d0, 0x103d0, +0x10857, 0x10857, +0x1091f, 0x1091f, +0x10a56, 0x10a57, +0x10af0, 0x10af5, +0x10b3a, 0x10b3f, +0x10b99, 0x10b9c, +0x11047, 0x1104d, +0x110be, 0x110c1, +0x11141, 0x11143, +0x111c5, 0x111c6, +0x111cd, 0x111cd, +0x111de, 0x111df, +0x11238, 0x1123c, +0x112a9, 0x112a9, +0x115c2, 0x115c5, +0x115c9, 0x115d7, +0x11641, 0x11642, +0x1173c, 0x1173e, +0x12470, 0x12474, +0x16a6e, 0x16a6f, +0x16af5, 0x16af5, +0x16b37, 0x16b39, +0x16b44, 0x16b44, +0x1bc9f, 0x1bc9f, +0x1da87, 0x1da8a, +}; /* END of CR_Terminal_Punctuation */ + +/* PROPERTY: 'Thaana': Script */ +static const OnigCodePoint +CR_Thaana[] = { 1, +0x0780, 0x07b1, +}; /* END of CR_Thaana */ + +/* PROPERTY: 'Thai': Script */ +static const OnigCodePoint +CR_Thai[] = { 2, +0x0e01, 0x0e3a, +0x0e40, 0x0e5b, +}; /* END of CR_Thai */ + +/* PROPERTY: 'Tibetan': Script */ +static const OnigCodePoint +CR_Tibetan[] = { 7, +0x0f00, 0x0f47,  0x0f49, 0x0f6c, -0x0f88, 0x0f8c, -0x1000, 0x102a, -0x103f, 0x103f, -0x1050, 0x1055, -0x105a, 0x105d, -0x1061, 0x1061, -0x1065, 0x1066, -0x106e, 0x1070, -0x1075, 0x1081, -0x108e, 0x108e, -0x10a0, 0x10c5, -0x10c7, 0x10c7, -0x10cd, 0x10cd, -0x10d0, 0x10fa, -0x10fc, 0x1248, -0x124a, 0x124d, -0x1250, 0x1256, -0x1258, 0x1258, -0x125a, 0x125d, -0x1260, 0x1288, -0x128a, 0x128d, -0x1290, 0x12b0, -0x12b2, 0x12b5, -0x12b8, 0x12be, -0x12c0, 0x12c0, -0x12c2, 0x12c5, -0x12c8, 0x12d6, -0x12d8, 0x1310, -0x1312, 0x1315, -0x1318, 0x135a, -0x1380, 0x138f, -0x13a0, 0x13f5, -0x13f8, 0x13fd, -0x1401, 0x166c, -0x166f, 0x167f, -0x1681, 0x169a, -0x16a0, 0x16ea, -0x16ee, 0x16f8, -0x1700, 0x170c, -0x170e, 0x1711, -0x1720, 0x1731, -0x1740, 0x1751, -0x1760, 0x176c, -0x176e, 0x1770, -0x1780, 0x17b3, -0x17d7, 0x17d7, -0x17dc, 0x17dc, -0x1820, 0x1877, -0x1880, 0x18a8, -0x18aa, 0x18aa, -0x18b0, 0x18f5, -0x1900, 0x191e, -0x1950, 0x196d, -0x1970, 0x1974, -0x1980, 0x19ab, -0x19b0, 0x19c9, -0x1a00, 0x1a16, -0x1a20, 0x1a54, -0x1aa7, 0x1aa7, -0x1b05, 0x1b33, -0x1b45, 0x1b4b, -0x1b83, 0x1ba0, -0x1bae, 0x1baf, -0x1bba, 0x1be5, -0x1c00, 0x1c23, -0x1c4d, 0x1c4f, -0x1c5a, 0x1c7d, -0x1ce9, 0x1cec, -0x1cee, 0x1cf1, -0x1cf5, 0x1cf6, -0x1d00, 0x1dbf, -0x1e00, 0x1f15, -0x1f18, 0x1f1d, -0x1f20, 0x1f45, -0x1f48, 0x1f4d, -0x1f50, 0x1f57, -0x1f59, 0x1f59, -0x1f5b, 0x1f5b, -0x1f5d, 0x1f5d, -0x1f5f, 0x1f7d, -0x1f80, 0x1fb4, -0x1fb6, 0x1fbc, -0x1fbe, 0x1fbe, -0x1fc2, 0x1fc4, -0x1fc6, 0x1fcc, -0x1fd0, 0x1fd3, -0x1fd6, 0x1fdb, -0x1fe0, 0x1fec, -0x1ff2, 0x1ff4, -0x1ff6, 0x1ffc, -0x2071, 0x2071, -0x207f, 0x207f, -0x2090, 0x209c, -0x2102, 0x2102, -0x2107, 0x2107, -0x210a, 0x2113, -0x2115, 0x2115, -0x2118, 0x211d, -0x2124, 0x2124, -0x2126, 0x2126, -0x2128, 0x2128, -0x212a, 0x2139, -0x213c, 0x213f, -0x2145, 0x2149, -0x214e, 0x214e, -0x2160, 0x2188, -0x2c00, 0x2c2e, -0x2c30, 0x2c5e, -0x2c60, 0x2ce4, -0x2ceb, 0x2cee, -0x2cf2, 0x2cf3, -0x2d00, 0x2d25, -0x2d27, 0x2d27, -0x2d2d, 0x2d2d, +0x0f71, 0x0f97, +0x0f99, 0x0fbc, +0x0fbe, 0x0fcc, +0x0fce, 0x0fd4, +0x0fd9, 0x0fda, +}; /* END of CR_Tibetan */ + +/* PROPERTY: 'Tifinagh': Script */ +static const OnigCodePoint +CR_Tifinagh[] = { 3,  0x2d30, 0x2d67, -0x2d6f, 0x2d6f, -0x2d80, 0x2d96, -0x2da0, 0x2da6, -0x2da8, 0x2dae, -0x2db0, 0x2db6, -0x2db8, 0x2dbe, -0x2dc0, 0x2dc6, -0x2dc8, 0x2dce, -0x2dd0, 0x2dd6, -0x2dd8, 0x2dde, -0x3005, 0x3007, -0x3021, 0x3029, -0x3031, 0x3035, -0x3038, 0x303c, -0x3041, 0x3096, -0x309b, 0x309f, -0x30a1, 0x30fa, -0x30fc, 0x30ff, -0x3105, 0x312d, -0x3131, 0x318e, -0x31a0, 0x31ba, -0x31f0, 0x31ff, +0x2d6f, 0x2d70, +0x2d7f, 0x2d7f, +}; /* END of CR_Tifinagh */ + +/* PROPERTY: 'Tirhuta': Script */ +static const OnigCodePoint +CR_Tirhuta[] = { 2, +0x11480, 0x114c7, +0x114d0, 0x114d9, +}; /* END of CR_Tirhuta */ + +/* PROPERTY: 'Ugaritic': Script */ +static const OnigCodePoint +CR_Ugaritic[] = { 2, +0x10380, 0x1039d, +0x1039f, 0x1039f, +}; /* END of CR_Ugaritic */ + +/* PROPERTY: 'Unified_Ideograph': Binary Property */ +static const OnigCodePoint +CR_Unified_Ideograph[] = { 13,  0x3400, 0x4db5,  0x4e00, 0x9fd5, -0xa000, 0xa48c, -0xa4d0, 0xa4fd, -0xa500, 0xa60c, -0xa610, 0xa61f, -0xa62a, 0xa62b, -0xa640, 0xa66e, -0xa67f, 0xa69d, -0xa6a0, 0xa6ef, -0xa717, 0xa71f, -0xa722, 0xa788, -0xa78b, 0xa7ad, -0xa7b0, 0xa7b7, -0xa7f7, 0xa801, -0xa803, 0xa805, -0xa807, 0xa80a, -0xa80c, 0xa822, -0xa840, 0xa873, -0xa882, 0xa8b3, -0xa8f2, 0xa8f7, -0xa8fb, 0xa8fb, -0xa8fd, 0xa8fd, -0xa90a, 0xa925, -0xa930, 0xa946, -0xa960, 0xa97c, -0xa984, 0xa9b2, -0xa9cf, 0xa9cf, -0xa9e0, 0xa9e4, -0xa9e6, 0xa9ef, -0xa9fa, 0xa9fe, -0xaa00, 0xaa28, -0xaa40, 0xaa42, -0xaa44, 0xaa4b, -0xaa60, 0xaa76, -0xaa7a, 0xaa7a, -0xaa7e, 0xaaaf, -0xaab1, 0xaab1, -0xaab5, 0xaab6, -0xaab9, 0xaabd, -0xaac0, 0xaac0, -0xaac2, 0xaac2, -0xaadb, 0xaadd, -0xaae0, 0xaaea, -0xaaf2, 0xaaf4, -0xab01, 0xab06, -0xab09, 0xab0e, -0xab11, 0xab16, -0xab20, 0xab26, -0xab28, 0xab2e, -0xab30, 0xab5a, -0xab5c, 0xab65, -0xab70, 0xabe2, -0xac00, 0xd7a3, -0xd7b0, 0xd7c6, -0xd7cb, 0xd7fb, -0xf900, 0xfa6d, -0xfa70, 0xfad9, -0xfb00, 0xfb06, -0xfb13, 0xfb17, -0xfb1d, 0xfb1d, -0xfb1f, 0xfb28, -0xfb2a, 0xfb36, -0xfb38, 0xfb3c, -0xfb3e, 0xfb3e, -0xfb40, 0xfb41, -0xfb43, 0xfb44, -0xfb46, 0xfbb1, -0xfbd3, 0xfd3d, -0xfd50, 0xfd8f, -0xfd92, 0xfdc7, -0xfdf0, 0xfdfb, -0xfe70, 0xfe74, -0xfe76, 0xfefc, -0xff21, 0xff3a, -0xff41, 0xff5a, -0xff66, 0xffbe, -0xffc2, 0xffc7, -0xffca, 0xffcf, -0xffd2, 0xffd7, -0xffda, 0xffdc, -0x10000, 0x1000b, -0x1000d, 0x10026, -0x10028, 0x1003a, -0x1003c, 0x1003d, -0x1003f, 0x1004d, -0x10050, 0x1005d, -0x10080, 0x100fa, -0x10140, 0x10174, -0x10280, 0x1029c, -0x102a0, 0x102d0, -0x10300, 0x1031f, -0x10330, 0x1034a, -0x10350, 0x10375, -0x10380, 0x1039d, -0x103a0, 0x103c3, -0x103c8, 0x103cf, -0x103d1, 0x103d5, -0x10400, 0x1049d, -0x10500, 0x10527, -0x10530, 0x10563, -0x10600, 0x10736, -0x10740, 0x10755, -0x10760, 0x10767, -0x10800, 0x10805, -0x10808, 0x10808, -0x1080a, 0x10835, -0x10837, 0x10838, -0x1083c, 0x1083c, -0x1083f, 0x10855, -0x10860, 0x10876, -0x10880, 0x1089e, -0x108e0, 0x108f2, -0x108f4, 0x108f5, -0x10900, 0x10915, -0x10920, 0x10939, -0x10980, 0x109b7, -0x109be, 0x109bf, -0x10a00, 0x10a00, -0x10a10, 0x10a13, -0x10a15, 0x10a17, -0x10a19, 0x10a33, -0x10a60, 0x10a7c, -0x10a80, 0x10a9c, -0x10ac0, 0x10ac7, -0x10ac9, 0x10ae4, -0x10b00, 0x10b35, -0x10b40, 0x10b55, -0x10b60, 0x10b72, -0x10b80, 0x10b91, -0x10c00, 0x10c48, -0x10c80, 0x10cb2, -0x10cc0, 0x10cf2, -0x11003, 0x11037, -0x11083, 0x110af, -0x110d0, 0x110e8, -0x11103, 0x11126, -0x11150, 0x11172, -0x11176, 0x11176, -0x11183, 0x111b2, -0x111c1, 0x111c4, -0x111da, 0x111da, -0x111dc, 0x111dc, -0x11200, 0x11211, -0x11213, 0x1122b, -0x11280, 0x11286, -0x11288, 0x11288, -0x1128a, 0x1128d, -0x1128f, 0x1129d, -0x1129f, 0x112a8, -0x112b0, 0x112de, -0x11305, 0x1130c, -0x1130f, 0x11310, -0x11313, 0x11328, -0x1132a, 0x11330, -0x11332, 0x11333, -0x11335, 0x11339, -0x1133d, 0x1133d, -0x11350, 0x11350, -0x1135d, 0x11361, -0x11480, 0x114af, -0x114c4, 0x114c5, -0x114c7, 0x114c7, -0x11580, 0x115ae, -0x115d8, 0x115db, -0x11600, 0x1162f, -0x11644, 0x11644, -0x11680, 0x116aa, -0x11700, 0x11719, -0x118a0, 0x118df, -0x118ff, 0x118ff, -0x11ac0, 0x11af8, -0x12000, 0x12399, -0x12400, 0x1246e, -0x12480, 0x12543, -0x13000, 0x1342e, -0x14400, 0x14646, -0x16800, 0x16a38, -0x16a40, 0x16a5e, -0x16ad0, 0x16aed, -0x16b00, 0x16b2f, -0x16b40, 0x16b43, -0x16b63, 0x16b77, -0x16b7d, 0x16b8f, -0x16f00, 0x16f44, -0x16f50, 0x16f50, -0x16f93, 0x16f9f, -0x1b000, 0x1b001, -0x1bc00, 0x1bc6a, -0x1bc70, 0x1bc7c, -0x1bc80, 0x1bc88, -0x1bc90, 0x1bc99, -0x1d400, 0x1d454, -0x1d456, 0x1d49c, -0x1d49e, 0x1d49f, -0x1d4a2, 0x1d4a2, -0x1d4a5, 0x1d4a6, -0x1d4a9, 0x1d4ac, -0x1d4ae, 0x1d4b9, -0x1d4bb, 0x1d4bb, -0x1d4bd, 0x1d4c3, -0x1d4c5, 0x1d505, -0x1d507, 0x1d50a, -0x1d50d, 0x1d514, -0x1d516, 0x1d51c, -0x1d51e, 0x1d539, -0x1d53b, 0x1d53e, -0x1d540, 0x1d544, -0x1d546, 0x1d546, -0x1d54a, 0x1d550, -0x1d552, 0x1d6a5, -0x1d6a8, 0x1d6c0, -0x1d6c2, 0x1d6da, -0x1d6dc, 0x1d6fa, -0x1d6fc, 0x1d714, -0x1d716, 0x1d734, -0x1d736, 0x1d74e, -0x1d750, 0x1d76e, -0x1d770, 0x1d788, -0x1d78a, 0x1d7a8, -0x1d7aa, 0x1d7c2, -0x1d7c4, 0x1d7cb, -0x1e800, 0x1e8c4, -0x1ee00, 0x1ee03, -0x1ee05, 0x1ee1f, -0x1ee21, 0x1ee22, -0x1ee24, 0x1ee24, -0x1ee27, 0x1ee27, -0x1ee29, 0x1ee32, -0x1ee34, 0x1ee37, -0x1ee39, 0x1ee39, -0x1ee3b, 0x1ee3b, -0x1ee42, 0x1ee42, -0x1ee47, 0x1ee47, -0x1ee49, 0x1ee49, -0x1ee4b, 0x1ee4b, -0x1ee4d, 0x1ee4f, -0x1ee51, 0x1ee52, -0x1ee54, 0x1ee54, -0x1ee57, 0x1ee57, -0x1ee59, 0x1ee59, -0x1ee5b, 0x1ee5b, -0x1ee5d, 0x1ee5d, -0x1ee5f, 0x1ee5f, -0x1ee61, 0x1ee62, -0x1ee64, 0x1ee64, -0x1ee67, 0x1ee6a, -0x1ee6c, 0x1ee72, -0x1ee74, 0x1ee77, -0x1ee79, 0x1ee7c, -0x1ee7e, 0x1ee7e, -0x1ee80, 0x1ee89, -0x1ee8b, 0x1ee9b, -0x1eea1, 0x1eea3, -0x1eea5, 0x1eea9, -0x1eeab, 0x1eebb, +0xfa0e, 0xfa0f, +0xfa11, 0xfa11, +0xfa13, 0xfa14, +0xfa1f, 0xfa1f, +0xfa21, 0xfa21, +0xfa23, 0xfa24, +0xfa27, 0xfa29,  0x20000, 0x2a6d6,  0x2a700, 0x2b734,  0x2b740, 0x2b81d,  0x2b820, 0x2cea1, -0x2f800, 0x2fa1d, -}; /* END of CR_ID_Start */ +}; /* END of CR_Unified_Ideograph */ -/* PROPERTY: 'ID_Continue': Derived Property */ +/* PROPERTY: 'Unknown': Script */  static const OnigCodePoint -CR_ID_Continue[] = { 651, +CR_Unknown[] = { 611, +0x0378, 0x0379, +0x0380, 0x0383, +0x038b, 0x038b, +0x038d, 0x038d, +0x03a2, 0x03a2, +0x0530, 0x0530, +0x0557, 0x0558, +0x0560, 0x0560, +0x0588, 0x0588, +0x058b, 0x058c, +0x0590, 0x0590, +0x05c8, 0x05cf, +0x05eb, 0x05ef, +0x05f5, 0x05ff, +0x061d, 0x061d, +0x070e, 0x070e, +0x074b, 0x074c, +0x07b2, 0x07bf, +0x07fb, 0x07ff, +0x082e, 0x082f, +0x083f, 0x083f, +0x085c, 0x085d, +0x085f, 0x089f, +0x08b5, 0x08e2, +0x0984, 0x0984, +0x098d, 0x098e, +0x0991, 0x0992, +0x09a9, 0x09a9, +0x09b1, 0x09b1, +0x09b3, 0x09b5, +0x09ba, 0x09bb, +0x09c5, 0x09c6, +0x09c9, 0x09ca, +0x09cf, 0x09d6, +0x09d8, 0x09db, +0x09de, 0x09de, +0x09e4, 0x09e5, +0x09fc, 0x0a00, +0x0a04, 0x0a04, +0x0a0b, 0x0a0e, +0x0a11, 0x0a12, +0x0a29, 0x0a29, +0x0a31, 0x0a31, +0x0a34, 0x0a34, +0x0a37, 0x0a37, +0x0a3a, 0x0a3b, +0x0a3d, 0x0a3d, +0x0a43, 0x0a46, +0x0a49, 0x0a4a, +0x0a4e, 0x0a50, +0x0a52, 0x0a58, +0x0a5d, 0x0a5d, +0x0a5f, 0x0a65, +0x0a76, 0x0a80, +0x0a84, 0x0a84, +0x0a8e, 0x0a8e, +0x0a92, 0x0a92, +0x0aa9, 0x0aa9, +0x0ab1, 0x0ab1, +0x0ab4, 0x0ab4, +0x0aba, 0x0abb, +0x0ac6, 0x0ac6, +0x0aca, 0x0aca, +0x0ace, 0x0acf, +0x0ad1, 0x0adf, +0x0ae4, 0x0ae5, +0x0af2, 0x0af8, +0x0afa, 0x0b00, +0x0b04, 0x0b04, +0x0b0d, 0x0b0e, +0x0b11, 0x0b12, +0x0b29, 0x0b29, +0x0b31, 0x0b31, +0x0b34, 0x0b34, +0x0b3a, 0x0b3b, +0x0b45, 0x0b46, +0x0b49, 0x0b4a, +0x0b4e, 0x0b55, +0x0b58, 0x0b5b, +0x0b5e, 0x0b5e, +0x0b64, 0x0b65, +0x0b78, 0x0b81, +0x0b84, 0x0b84, +0x0b8b, 0x0b8d, +0x0b91, 0x0b91, +0x0b96, 0x0b98, +0x0b9b, 0x0b9b, +0x0b9d, 0x0b9d, +0x0ba0, 0x0ba2, +0x0ba5, 0x0ba7, +0x0bab, 0x0bad, +0x0bba, 0x0bbd, +0x0bc3, 0x0bc5, +0x0bc9, 0x0bc9, +0x0bce, 0x0bcf, +0x0bd1, 0x0bd6, +0x0bd8, 0x0be5, +0x0bfb, 0x0bff, +0x0c04, 0x0c04, +0x0c0d, 0x0c0d, +0x0c11, 0x0c11, +0x0c29, 0x0c29, +0x0c3a, 0x0c3c, +0x0c45, 0x0c45, +0x0c49, 0x0c49, +0x0c4e, 0x0c54, +0x0c57, 0x0c57, +0x0c5b, 0x0c5f, +0x0c64, 0x0c65, +0x0c70, 0x0c77, +0x0c80, 0x0c80, +0x0c84, 0x0c84, +0x0c8d, 0x0c8d, +0x0c91, 0x0c91, +0x0ca9, 0x0ca9, +0x0cb4, 0x0cb4, +0x0cba, 0x0cbb, +0x0cc5, 0x0cc5, +0x0cc9, 0x0cc9, +0x0cce, 0x0cd4, +0x0cd7, 0x0cdd, +0x0cdf, 0x0cdf, +0x0ce4, 0x0ce5, +0x0cf0, 0x0cf0, +0x0cf3, 0x0d00, +0x0d04, 0x0d04, +0x0d0d, 0x0d0d, +0x0d11, 0x0d11, +0x0d3b, 0x0d3c, +0x0d45, 0x0d45, +0x0d49, 0x0d49, +0x0d4f, 0x0d56, +0x0d58, 0x0d5e, +0x0d64, 0x0d65, +0x0d76, 0x0d78, +0x0d80, 0x0d81, +0x0d84, 0x0d84, +0x0d97, 0x0d99, +0x0db2, 0x0db2, +0x0dbc, 0x0dbc, +0x0dbe, 0x0dbf, +0x0dc7, 0x0dc9, +0x0dcb, 0x0dce, +0x0dd5, 0x0dd5, +0x0dd7, 0x0dd7, +0x0de0, 0x0de5, +0x0df0, 0x0df1, +0x0df5, 0x0e00, +0x0e3b, 0x0e3e, +0x0e5c, 0x0e80, +0x0e83, 0x0e83, +0x0e85, 0x0e86, +0x0e89, 0x0e89, +0x0e8b, 0x0e8c, +0x0e8e, 0x0e93, +0x0e98, 0x0e98, +0x0ea0, 0x0ea0, +0x0ea4, 0x0ea4, +0x0ea6, 0x0ea6, +0x0ea8, 0x0ea9, +0x0eac, 0x0eac, +0x0eba, 0x0eba, +0x0ebe, 0x0ebf, +0x0ec5, 0x0ec5, +0x0ec7, 0x0ec7, +0x0ece, 0x0ecf, +0x0eda, 0x0edb, +0x0ee0, 0x0eff, +0x0f48, 0x0f48, +0x0f6d, 0x0f70, +0x0f98, 0x0f98, +0x0fbd, 0x0fbd, +0x0fcd, 0x0fcd, +0x0fdb, 0x0fff, +0x10c6, 0x10c6, +0x10c8, 0x10cc, +0x10ce, 0x10cf, +0x1249, 0x1249, +0x124e, 0x124f, +0x1257, 0x1257, +0x1259, 0x1259, +0x125e, 0x125f, +0x1289, 0x1289, +0x128e, 0x128f, +0x12b1, 0x12b1, +0x12b6, 0x12b7, +0x12bf, 0x12bf, +0x12c1, 0x12c1, +0x12c6, 0x12c7, +0x12d7, 0x12d7, +0x1311, 0x1311, +0x1316, 0x1317, +0x135b, 0x135c, +0x137d, 0x137f, +0x139a, 0x139f, +0x13f6, 0x13f7, +0x13fe, 0x13ff, +0x169d, 0x169f, +0x16f9, 0x16ff, +0x170d, 0x170d, +0x1715, 0x171f, +0x1737, 0x173f, +0x1754, 0x175f, +0x176d, 0x176d, +0x1771, 0x1771, +0x1774, 0x177f, +0x17de, 0x17df, +0x17ea, 0x17ef, +0x17fa, 0x17ff, +0x180f, 0x180f, +0x181a, 0x181f, +0x1878, 0x187f, +0x18ab, 0x18af, +0x18f6, 0x18ff, +0x191f, 0x191f, +0x192c, 0x192f, +0x193c, 0x193f, +0x1941, 0x1943, +0x196e, 0x196f, +0x1975, 0x197f, +0x19ac, 0x19af, +0x19ca, 0x19cf, +0x19db, 0x19dd, +0x1a1c, 0x1a1d, +0x1a5f, 0x1a5f, +0x1a7d, 0x1a7e, +0x1a8a, 0x1a8f, +0x1a9a, 0x1a9f, +0x1aae, 0x1aaf, +0x1abf, 0x1aff, +0x1b4c, 0x1b4f, +0x1b7d, 0x1b7f, +0x1bf4, 0x1bfb, +0x1c38, 0x1c3a, +0x1c4a, 0x1c4c, +0x1c80, 0x1cbf, +0x1cc8, 0x1ccf, +0x1cf7, 0x1cf7, +0x1cfa, 0x1cff, +0x1df6, 0x1dfb, +0x1f16, 0x1f17, +0x1f1e, 0x1f1f, +0x1f46, 0x1f47, +0x1f4e, 0x1f4f, +0x1f58, 0x1f58, +0x1f5a, 0x1f5a, +0x1f5c, 0x1f5c, +0x1f5e, 0x1f5e, +0x1f7e, 0x1f7f, +0x1fb5, 0x1fb5, +0x1fc5, 0x1fc5, +0x1fd4, 0x1fd5, +0x1fdc, 0x1fdc, +0x1ff0, 0x1ff1, +0x1ff5, 0x1ff5, +0x1fff, 0x1fff, +0x2065, 0x2065, +0x2072, 0x2073, +0x208f, 0x208f, +0x209d, 0x209f, +0x20bf, 0x20cf, +0x20f1, 0x20ff, +0x218c, 0x218f, +0x23fb, 0x23ff, +0x2427, 0x243f, +0x244b, 0x245f, +0x2b74, 0x2b75, +0x2b96, 0x2b97, +0x2bba, 0x2bbc, +0x2bc9, 0x2bc9, +0x2bd2, 0x2beb, +0x2bf0, 0x2bff, +0x2c2f, 0x2c2f, +0x2c5f, 0x2c5f, +0x2cf4, 0x2cf8, +0x2d26, 0x2d26, +0x2d28, 0x2d2c, +0x2d2e, 0x2d2f, +0x2d68, 0x2d6e, +0x2d71, 0x2d7e, +0x2d97, 0x2d9f, +0x2da7, 0x2da7, +0x2daf, 0x2daf, +0x2db7, 0x2db7, +0x2dbf, 0x2dbf, +0x2dc7, 0x2dc7, +0x2dcf, 0x2dcf, +0x2dd7, 0x2dd7, +0x2ddf, 0x2ddf, +0x2e43, 0x2e7f, +0x2e9a, 0x2e9a, +0x2ef4, 0x2eff, +0x2fd6, 0x2fef, +0x2ffc, 0x2fff, +0x3040, 0x3040, +0x3097, 0x3098, +0x3100, 0x3104, +0x312e, 0x3130, +0x318f, 0x318f, +0x31bb, 0x31bf, +0x31e4, 0x31ef, +0x321f, 0x321f, +0x32ff, 0x32ff, +0x4db6, 0x4dbf, +0x9fd6, 0x9fff, +0xa48d, 0xa48f, +0xa4c7, 0xa4cf, +0xa62c, 0xa63f, +0xa6f8, 0xa6ff, +0xa7ae, 0xa7af, +0xa7b8, 0xa7f6, +0xa82c, 0xa82f, +0xa83a, 0xa83f, +0xa878, 0xa87f, +0xa8c5, 0xa8cd, +0xa8da, 0xa8df, +0xa8fe, 0xa8ff, +0xa954, 0xa95e, +0xa97d, 0xa97f, +0xa9ce, 0xa9ce, +0xa9da, 0xa9dd, +0xa9ff, 0xa9ff, +0xaa37, 0xaa3f, +0xaa4e, 0xaa4f, +0xaa5a, 0xaa5b, +0xaac3, 0xaada, +0xaaf7, 0xab00, +0xab07, 0xab08, +0xab0f, 0xab10, +0xab17, 0xab1f, +0xab27, 0xab27, +0xab2f, 0xab2f, +0xab66, 0xab6f, +0xabee, 0xabef, +0xabfa, 0xabff, +0xd7a4, 0xd7af, +0xd7c7, 0xd7ca, +0xd7fc, 0xf8ff, +0xfa6e, 0xfa6f, +0xfada, 0xfaff, +0xfb07, 0xfb12, +0xfb18, 0xfb1c, +0xfb37, 0xfb37, +0xfb3d, 0xfb3d, +0xfb3f, 0xfb3f, +0xfb42, 0xfb42, +0xfb45, 0xfb45, +0xfbc2, 0xfbd2, +0xfd40, 0xfd4f, +0xfd90, 0xfd91, +0xfdc8, 0xfdef, +0xfdfe, 0xfdff, +0xfe1a, 0xfe1f, +0xfe53, 0xfe53, +0xfe67, 0xfe67, +0xfe6c, 0xfe6f, +0xfe75, 0xfe75, +0xfefd, 0xfefe, +0xff00, 0xff00, +0xffbf, 0xffc1, +0xffc8, 0xffc9, +0xffd0, 0xffd1, +0xffd8, 0xffd9, +0xffdd, 0xffdf, +0xffe7, 0xffe7, +0xffef, 0xfff8, +0xfffe, 0xffff, +0x1000c, 0x1000c, +0x10027, 0x10027, +0x1003b, 0x1003b, +0x1003e, 0x1003e, +0x1004e, 0x1004f, +0x1005e, 0x1007f, +0x100fb, 0x100ff, +0x10103, 0x10106, +0x10134, 0x10136, +0x1018d, 0x1018f, +0x1019c, 0x1019f, +0x101a1, 0x101cf, +0x101fe, 0x1027f, +0x1029d, 0x1029f, +0x102d1, 0x102df, +0x102fc, 0x102ff, +0x10324, 0x1032f, +0x1034b, 0x1034f, +0x1037b, 0x1037f, +0x1039e, 0x1039e, +0x103c4, 0x103c7, +0x103d6, 0x103ff, +0x1049e, 0x1049f, +0x104aa, 0x104ff, +0x10528, 0x1052f, +0x10564, 0x1056e, +0x10570, 0x105ff, +0x10737, 0x1073f, +0x10756, 0x1075f, +0x10768, 0x107ff, +0x10806, 0x10807, +0x10809, 0x10809, +0x10836, 0x10836, +0x10839, 0x1083b, +0x1083d, 0x1083e, +0x10856, 0x10856, +0x1089f, 0x108a6, +0x108b0, 0x108df, +0x108f3, 0x108f3, +0x108f6, 0x108fa, +0x1091c, 0x1091e, +0x1093a, 0x1093e, +0x10940, 0x1097f, +0x109b8, 0x109bb, +0x109d0, 0x109d1, +0x10a04, 0x10a04, +0x10a07, 0x10a0b, +0x10a14, 0x10a14, +0x10a18, 0x10a18, +0x10a34, 0x10a37, +0x10a3b, 0x10a3e, +0x10a48, 0x10a4f, +0x10a59, 0x10a5f, +0x10aa0, 0x10abf, +0x10ae7, 0x10aea, +0x10af7, 0x10aff, +0x10b36, 0x10b38, +0x10b56, 0x10b57, +0x10b73, 0x10b77, +0x10b92, 0x10b98, +0x10b9d, 0x10ba8, +0x10bb0, 0x10bff, +0x10c49, 0x10c7f, +0x10cb3, 0x10cbf, +0x10cf3, 0x10cf9, +0x10d00, 0x10e5f, +0x10e7f, 0x10fff, +0x1104e, 0x11051, +0x11070, 0x1107e, +0x110c2, 0x110cf, +0x110e9, 0x110ef, +0x110fa, 0x110ff, +0x11135, 0x11135, +0x11144, 0x1114f, +0x11177, 0x1117f, +0x111ce, 0x111cf, +0x111e0, 0x111e0, +0x111f5, 0x111ff, +0x11212, 0x11212, +0x1123e, 0x1127f, +0x11287, 0x11287, +0x11289, 0x11289, +0x1128e, 0x1128e, +0x1129e, 0x1129e, +0x112aa, 0x112af, +0x112eb, 0x112ef, +0x112fa, 0x112ff, +0x11304, 0x11304, +0x1130d, 0x1130e, +0x11311, 0x11312, +0x11329, 0x11329, +0x11331, 0x11331, +0x11334, 0x11334, +0x1133a, 0x1133b, +0x11345, 0x11346, +0x11349, 0x1134a, +0x1134e, 0x1134f, +0x11351, 0x11356, +0x11358, 0x1135c, +0x11364, 0x11365, +0x1136d, 0x1136f, +0x11375, 0x1147f, +0x114c8, 0x114cf, +0x114da, 0x1157f, +0x115b6, 0x115b7, +0x115de, 0x115ff, +0x11645, 0x1164f, +0x1165a, 0x1167f, +0x116b8, 0x116bf, +0x116ca, 0x116ff, +0x1171a, 0x1171c, +0x1172c, 0x1172f, +0x11740, 0x1189f, +0x118f3, 0x118fe, +0x11900, 0x11abf, +0x11af9, 0x11fff, +0x1239a, 0x123ff, +0x1246f, 0x1246f, +0x12475, 0x1247f, +0x12544, 0x12fff, +0x1342f, 0x143ff, +0x14647, 0x167ff, +0x16a39, 0x16a3f, +0x16a5f, 0x16a5f, +0x16a6a, 0x16a6d, +0x16a70, 0x16acf, +0x16aee, 0x16aef, +0x16af6, 0x16aff, +0x16b46, 0x16b4f, +0x16b5a, 0x16b5a, +0x16b62, 0x16b62, +0x16b78, 0x16b7c, +0x16b90, 0x16eff, +0x16f45, 0x16f4f, +0x16f7f, 0x16f8e, +0x16fa0, 0x1afff, +0x1b002, 0x1bbff, +0x1bc6b, 0x1bc6f, +0x1bc7d, 0x1bc7f, +0x1bc89, 0x1bc8f, +0x1bc9a, 0x1bc9b, +0x1bca4, 0x1cfff, +0x1d0f6, 0x1d0ff, +0x1d127, 0x1d128, +0x1d1e9, 0x1d1ff, +0x1d246, 0x1d2ff, +0x1d357, 0x1d35f, +0x1d372, 0x1d3ff, +0x1d455, 0x1d455, +0x1d49d, 0x1d49d, +0x1d4a0, 0x1d4a1, +0x1d4a3, 0x1d4a4, +0x1d4a7, 0x1d4a8, +0x1d4ad, 0x1d4ad, +0x1d4ba, 0x1d4ba, +0x1d4bc, 0x1d4bc, +0x1d4c4, 0x1d4c4, +0x1d506, 0x1d506, +0x1d50b, 0x1d50c, +0x1d515, 0x1d515, +0x1d51d, 0x1d51d, +0x1d53a, 0x1d53a, +0x1d53f, 0x1d53f, +0x1d545, 0x1d545, +0x1d547, 0x1d549, +0x1d551, 0x1d551, +0x1d6a6, 0x1d6a7, +0x1d7cc, 0x1d7cd, +0x1da8c, 0x1da9a, +0x1daa0, 0x1daa0, +0x1dab0, 0x1e7ff, +0x1e8c5, 0x1e8c6, +0x1e8d7, 0x1edff, +0x1ee04, 0x1ee04, +0x1ee20, 0x1ee20, +0x1ee23, 0x1ee23, +0x1ee25, 0x1ee26, +0x1ee28, 0x1ee28, +0x1ee33, 0x1ee33, +0x1ee38, 0x1ee38, +0x1ee3a, 0x1ee3a, +0x1ee3c, 0x1ee41, +0x1ee43, 0x1ee46, +0x1ee48, 0x1ee48, +0x1ee4a, 0x1ee4a, +0x1ee4c, 0x1ee4c, +0x1ee50, 0x1ee50, +0x1ee53, 0x1ee53, +0x1ee55, 0x1ee56, +0x1ee58, 0x1ee58, +0x1ee5a, 0x1ee5a, +0x1ee5c, 0x1ee5c, +0x1ee5e, 0x1ee5e, +0x1ee60, 0x1ee60, +0x1ee63, 0x1ee63, +0x1ee65, 0x1ee66, +0x1ee6b, 0x1ee6b, +0x1ee73, 0x1ee73, +0x1ee78, 0x1ee78, +0x1ee7d, 0x1ee7d, +0x1ee7f, 0x1ee7f, +0x1ee8a, 0x1ee8a, +0x1ee9c, 0x1eea0, +0x1eea4, 0x1eea4, +0x1eeaa, 0x1eeaa, +0x1eebc, 0x1eeef, +0x1eef2, 0x1efff, +0x1f02c, 0x1f02f, +0x1f094, 0x1f09f, +0x1f0af, 0x1f0b0, +0x1f0c0, 0x1f0c0, +0x1f0d0, 0x1f0d0, +0x1f0f6, 0x1f0ff, +0x1f10d, 0x1f10f, +0x1f12f, 0x1f12f, +0x1f16c, 0x1f16f, +0x1f19b, 0x1f1e5, +0x1f203, 0x1f20f, +0x1f23b, 0x1f23f, +0x1f249, 0x1f24f, +0x1f252, 0x1f2ff, +0x1f57a, 0x1f57a, +0x1f5a4, 0x1f5a4, +0x1f6d1, 0x1f6df, +0x1f6ed, 0x1f6ef, +0x1f6f4, 0x1f6ff, +0x1f774, 0x1f77f, +0x1f7d5, 0x1f7ff, +0x1f80c, 0x1f80f, +0x1f848, 0x1f84f, +0x1f85a, 0x1f85f, +0x1f888, 0x1f88f, +0x1f8ae, 0x1f90f, +0x1f919, 0x1f97f, +0x1f985, 0x1f9bf, +0x1f9c1, 0x1ffff, +0x2a6d7, 0x2a6ff, +0x2b735, 0x2b73f, +0x2b81e, 0x2b81f, +0x2cea2, 0x2f7ff, +0x2fa1e, 0xe0000, +0xe0002, 0xe001f, +0xe0080, 0xe00ff, +0xe01f0, 0x10ffff, +}; /* END of CR_Unknown */ + +/* PROPERTY: 'Uppercase': Derived Property */ +#define CR_Uppercase CR_Upper + +/* PROPERTY: 'Vai': Script */ +static const OnigCodePoint +CR_Vai[] = { 1, +0xa500, 0xa62b, +}; /* END of CR_Vai */ + +/* PROPERTY: 'Variation_Selector': Binary Property */ +static const OnigCodePoint +CR_Variation_Selector[] = { 3, +0x180b, 0x180d, +0xfe00, 0xfe0f, +0xe0100, 0xe01ef, +}; /* END of CR_Variation_Selector */ + +/* PROPERTY: 'Warang_Citi': Script */ +static const OnigCodePoint +CR_Warang_Citi[] = { 2, +0x118a0, 0x118f2, +0x118ff, 0x118ff, +}; /* END of CR_Warang_Citi */ + +/* PROPERTY: 'White_Space': Binary Property */ +#define CR_White_Space CR_Space + +/* PROPERTY: 'XID_Continue': Derived Property */ +static const OnigCodePoint +CR_XID_Continue[] = { 658,  0x0030, 0x0039,  0x0041, 0x005a,  0x005f, 0x005f, @@ -14704,7 +19561,7 @@ CR_ID_Continue[] = { 651,  0x02ee, 0x02ee,  0x0300, 0x0374,  0x0376, 0x0377, -0x037a, 0x037d, +0x037b, 0x037d,  0x037f, 0x037f,  0x0386, 0x038a,  0x038c, 0x038c, @@ -15034,7 +19891,8 @@ CR_ID_Continue[] = { 651,  0x3031, 0x3035,  0x3038, 0x303c,  0x3041, 0x3096, -0x3099, 0x309f, +0x3099, 0x309a, +0x309d, 0x309f,  0x30a1, 0x30fa,  0x30fc, 0x30ff,  0x3105, 0x312d, @@ -15099,16 +19957,22 @@ CR_ID_Continue[] = { 651,  0xfb40, 0xfb41,  0xfb43, 0xfb44,  0xfb46, 0xfbb1, -0xfbd3, 0xfd3d, +0xfbd3, 0xfc5d, +0xfc64, 0xfd3d,  0xfd50, 0xfd8f,  0xfd92, 0xfdc7, -0xfdf0, 0xfdfb, +0xfdf0, 0xfdf9,  0xfe00, 0xfe0f,  0xfe20, 0xfe2f,  0xfe33, 0xfe34,  0xfe4d, 0xfe4f, -0xfe70, 0xfe74, -0xfe76, 0xfefc, +0xfe71, 0xfe71, +0xfe73, 0xfe73, +0xfe77, 0xfe77, +0xfe79, 0xfe79, +0xfe7b, 0xfe7b, +0xfe7d, 0xfe7d, +0xfe7f, 0xfefc,  0xff10, 0xff19,  0xff21, 0xff3a,  0xff3f, 0xff3f, @@ -15338,7 +20202,7 @@ CR_ID_Continue[] = { 651,  0x2b820, 0x2cea1,  0x2f800, 0x2fa1d,  0xe0100, 0xe01ef, -}; /* END of CR_ID_Continue */ +}; /* END of CR_XID_Continue */  /* PROPERTY: 'XID_Start': Derived Property */  static const OnigCodePoint @@ -15907,2523 +20771,6 @@ CR_XID_Start[] = { 562,  0x2f800, 0x2fa1d,  }; /* END of CR_XID_Start */ -/* PROPERTY: 'XID_Continue': Derived Property */ -static const OnigCodePoint -CR_XID_Continue[] = { 658, -0x0030, 0x0039, -0x0041, 0x005a, -0x005f, 0x005f, -0x0061, 0x007a, -0x00aa, 0x00aa, -0x00b5, 0x00b5, -0x00b7, 0x00b7, -0x00ba, 0x00ba, -0x00c0, 0x00d6, -0x00d8, 0x00f6, -0x00f8, 0x02c1, -0x02c6, 0x02d1, -0x02e0, 0x02e4, -0x02ec, 0x02ec, -0x02ee, 0x02ee, -0x0300, 0x0374, -0x0376, 0x0377, -0x037b, 0x037d, -0x037f, 0x037f, -0x0386, 0x038a, -0x038c, 0x038c, -0x038e, 0x03a1, -0x03a3, 0x03f5, -0x03f7, 0x0481, -0x0483, 0x0487, -0x048a, 0x052f, -0x0531, 0x0556, -0x0559, 0x0559, -0x0561, 0x0587, -0x0591, 0x05bd, -0x05bf, 0x05bf, -0x05c1, 0x05c2, -0x05c4, 0x05c5, -0x05c7, 0x05c7, -0x05d0, 0x05ea, -0x05f0, 0x05f2, -0x0610, 0x061a, -0x0620, 0x0669, -0x066e, 0x06d3, -0x06d5, 0x06dc, -0x06df, 0x06e8, -0x06ea, 0x06fc, -0x06ff, 0x06ff, -0x0710, 0x074a, -0x074d, 0x07b1, -0x07c0, 0x07f5, -0x07fa, 0x07fa, -0x0800, 0x082d, -0x0840, 0x085b, -0x08a0, 0x08b4, -0x08e3, 0x0963, -0x0966, 0x096f, -0x0971, 0x0983, -0x0985, 0x098c, -0x098f, 0x0990, -0x0993, 0x09a8, -0x09aa, 0x09b0, -0x09b2, 0x09b2, -0x09b6, 0x09b9, -0x09bc, 0x09c4, -0x09c7, 0x09c8, -0x09cb, 0x09ce, -0x09d7, 0x09d7, -0x09dc, 0x09dd, -0x09df, 0x09e3, -0x09e6, 0x09f1, -0x0a01, 0x0a03, -0x0a05, 0x0a0a, -0x0a0f, 0x0a10, -0x0a13, 0x0a28, -0x0a2a, 0x0a30, -0x0a32, 0x0a33, -0x0a35, 0x0a36, -0x0a38, 0x0a39, -0x0a3c, 0x0a3c, -0x0a3e, 0x0a42, -0x0a47, 0x0a48, -0x0a4b, 0x0a4d, -0x0a51, 0x0a51, -0x0a59, 0x0a5c, -0x0a5e, 0x0a5e, -0x0a66, 0x0a75, -0x0a81, 0x0a83, -0x0a85, 0x0a8d, -0x0a8f, 0x0a91, -0x0a93, 0x0aa8, -0x0aaa, 0x0ab0, -0x0ab2, 0x0ab3, -0x0ab5, 0x0ab9, -0x0abc, 0x0ac5, -0x0ac7, 0x0ac9, -0x0acb, 0x0acd, -0x0ad0, 0x0ad0, -0x0ae0, 0x0ae3, -0x0ae6, 0x0aef, -0x0af9, 0x0af9, -0x0b01, 0x0b03, -0x0b05, 0x0b0c, -0x0b0f, 0x0b10, -0x0b13, 0x0b28, -0x0b2a, 0x0b30, -0x0b32, 0x0b33, -0x0b35, 0x0b39, -0x0b3c, 0x0b44, -0x0b47, 0x0b48, -0x0b4b, 0x0b4d, -0x0b56, 0x0b57, -0x0b5c, 0x0b5d, -0x0b5f, 0x0b63, -0x0b66, 0x0b6f, -0x0b71, 0x0b71, -0x0b82, 0x0b83, -0x0b85, 0x0b8a, -0x0b8e, 0x0b90, -0x0b92, 0x0b95, -0x0b99, 0x0b9a, -0x0b9c, 0x0b9c, -0x0b9e, 0x0b9f, -0x0ba3, 0x0ba4, -0x0ba8, 0x0baa, -0x0bae, 0x0bb9, -0x0bbe, 0x0bc2, -0x0bc6, 0x0bc8, -0x0bca, 0x0bcd, -0x0bd0, 0x0bd0, -0x0bd7, 0x0bd7, -0x0be6, 0x0bef, -0x0c00, 0x0c03, -0x0c05, 0x0c0c, -0x0c0e, 0x0c10, -0x0c12, 0x0c28, -0x0c2a, 0x0c39, -0x0c3d, 0x0c44, -0x0c46, 0x0c48, -0x0c4a, 0x0c4d, -0x0c55, 0x0c56, -0x0c58, 0x0c5a, -0x0c60, 0x0c63, -0x0c66, 0x0c6f, -0x0c81, 0x0c83, -0x0c85, 0x0c8c, -0x0c8e, 0x0c90, -0x0c92, 0x0ca8, -0x0caa, 0x0cb3, -0x0cb5, 0x0cb9, -0x0cbc, 0x0cc4, -0x0cc6, 0x0cc8, -0x0cca, 0x0ccd, -0x0cd5, 0x0cd6, -0x0cde, 0x0cde, -0x0ce0, 0x0ce3, -0x0ce6, 0x0cef, -0x0cf1, 0x0cf2, -0x0d01, 0x0d03, -0x0d05, 0x0d0c, -0x0d0e, 0x0d10, -0x0d12, 0x0d3a, -0x0d3d, 0x0d44, -0x0d46, 0x0d48, -0x0d4a, 0x0d4e, -0x0d57, 0x0d57, -0x0d5f, 0x0d63, -0x0d66, 0x0d6f, -0x0d7a, 0x0d7f, -0x0d82, 0x0d83, -0x0d85, 0x0d96, -0x0d9a, 0x0db1, -0x0db3, 0x0dbb, -0x0dbd, 0x0dbd, -0x0dc0, 0x0dc6, -0x0dca, 0x0dca, -0x0dcf, 0x0dd4, -0x0dd6, 0x0dd6, -0x0dd8, 0x0ddf, -0x0de6, 0x0def, -0x0df2, 0x0df3, -0x0e01, 0x0e3a, -0x0e40, 0x0e4e, -0x0e50, 0x0e59, -0x0e81, 0x0e82, -0x0e84, 0x0e84, -0x0e87, 0x0e88, -0x0e8a, 0x0e8a, -0x0e8d, 0x0e8d, -0x0e94, 0x0e97, -0x0e99, 0x0e9f, -0x0ea1, 0x0ea3, -0x0ea5, 0x0ea5, -0x0ea7, 0x0ea7, -0x0eaa, 0x0eab, -0x0ead, 0x0eb9, -0x0ebb, 0x0ebd, -0x0ec0, 0x0ec4, -0x0ec6, 0x0ec6, -0x0ec8, 0x0ecd, -0x0ed0, 0x0ed9, -0x0edc, 0x0edf, -0x0f00, 0x0f00, -0x0f18, 0x0f19, -0x0f20, 0x0f29, -0x0f35, 0x0f35, -0x0f37, 0x0f37, -0x0f39, 0x0f39, -0x0f3e, 0x0f47, -0x0f49, 0x0f6c, -0x0f71, 0x0f84, -0x0f86, 0x0f97, -0x0f99, 0x0fbc, -0x0fc6, 0x0fc6, -0x1000, 0x1049, -0x1050, 0x109d, -0x10a0, 0x10c5, -0x10c7, 0x10c7, -0x10cd, 0x10cd, -0x10d0, 0x10fa, -0x10fc, 0x1248, -0x124a, 0x124d, -0x1250, 0x1256, -0x1258, 0x1258, -0x125a, 0x125d, -0x1260, 0x1288, -0x128a, 0x128d, -0x1290, 0x12b0, -0x12b2, 0x12b5, -0x12b8, 0x12be, -0x12c0, 0x12c0, -0x12c2, 0x12c5, -0x12c8, 0x12d6, -0x12d8, 0x1310, -0x1312, 0x1315, -0x1318, 0x135a, -0x135d, 0x135f, -0x1369, 0x1371, -0x1380, 0x138f, -0x13a0, 0x13f5, -0x13f8, 0x13fd, -0x1401, 0x166c, -0x166f, 0x167f, -0x1681, 0x169a, -0x16a0, 0x16ea, -0x16ee, 0x16f8, -0x1700, 0x170c, -0x170e, 0x1714, -0x1720, 0x1734, -0x1740, 0x1753, -0x1760, 0x176c, -0x176e, 0x1770, -0x1772, 0x1773, -0x1780, 0x17d3, -0x17d7, 0x17d7, -0x17dc, 0x17dd, -0x17e0, 0x17e9, -0x180b, 0x180d, -0x1810, 0x1819, -0x1820, 0x1877, -0x1880, 0x18aa, -0x18b0, 0x18f5, -0x1900, 0x191e, -0x1920, 0x192b, -0x1930, 0x193b, -0x1946, 0x196d, -0x1970, 0x1974, -0x1980, 0x19ab, -0x19b0, 0x19c9, -0x19d0, 0x19da, -0x1a00, 0x1a1b, -0x1a20, 0x1a5e, -0x1a60, 0x1a7c, -0x1a7f, 0x1a89, -0x1a90, 0x1a99, -0x1aa7, 0x1aa7, -0x1ab0, 0x1abd, -0x1b00, 0x1b4b, -0x1b50, 0x1b59, -0x1b6b, 0x1b73, -0x1b80, 0x1bf3, -0x1c00, 0x1c37, -0x1c40, 0x1c49, -0x1c4d, 0x1c7d, -0x1cd0, 0x1cd2, -0x1cd4, 0x1cf6, -0x1cf8, 0x1cf9, -0x1d00, 0x1df5, -0x1dfc, 0x1f15, -0x1f18, 0x1f1d, -0x1f20, 0x1f45, -0x1f48, 0x1f4d, -0x1f50, 0x1f57, -0x1f59, 0x1f59, -0x1f5b, 0x1f5b, -0x1f5d, 0x1f5d, -0x1f5f, 0x1f7d, -0x1f80, 0x1fb4, -0x1fb6, 0x1fbc, -0x1fbe, 0x1fbe, -0x1fc2, 0x1fc4, -0x1fc6, 0x1fcc, -0x1fd0, 0x1fd3, -0x1fd6, 0x1fdb, -0x1fe0, 0x1fec, -0x1ff2, 0x1ff4, -0x1ff6, 0x1ffc, -0x203f, 0x2040, -0x2054, 0x2054, -0x2071, 0x2071, -0x207f, 0x207f, -0x2090, 0x209c, -0x20d0, 0x20dc, -0x20e1, 0x20e1, -0x20e5, 0x20f0, -0x2102, 0x2102, -0x2107, 0x2107, -0x210a, 0x2113, -0x2115, 0x2115, -0x2118, 0x211d, -0x2124, 0x2124, -0x2126, 0x2126, -0x2128, 0x2128, -0x212a, 0x2139, -0x213c, 0x213f, -0x2145, 0x2149, -0x214e, 0x214e, -0x2160, 0x2188, -0x2c00, 0x2c2e, -0x2c30, 0x2c5e, -0x2c60, 0x2ce4, -0x2ceb, 0x2cf3, -0x2d00, 0x2d25, -0x2d27, 0x2d27, -0x2d2d, 0x2d2d, -0x2d30, 0x2d67, -0x2d6f, 0x2d6f, -0x2d7f, 0x2d96, -0x2da0, 0x2da6, -0x2da8, 0x2dae, -0x2db0, 0x2db6, -0x2db8, 0x2dbe, -0x2dc0, 0x2dc6, -0x2dc8, 0x2dce, -0x2dd0, 0x2dd6, -0x2dd8, 0x2dde, -0x2de0, 0x2dff, -0x3005, 0x3007, -0x3021, 0x302f, -0x3031, 0x3035, -0x3038, 0x303c, -0x3041, 0x3096, -0x3099, 0x309a, -0x309d, 0x309f, -0x30a1, 0x30fa, -0x30fc, 0x30ff, -0x3105, 0x312d, -0x3131, 0x318e, -0x31a0, 0x31ba, -0x31f0, 0x31ff, -0x3400, 0x4db5, -0x4e00, 0x9fd5, -0xa000, 0xa48c, -0xa4d0, 0xa4fd, -0xa500, 0xa60c, -0xa610, 0xa62b, -0xa640, 0xa66f, -0xa674, 0xa67d, -0xa67f, 0xa6f1, -0xa717, 0xa71f, -0xa722, 0xa788, -0xa78b, 0xa7ad, -0xa7b0, 0xa7b7, -0xa7f7, 0xa827, -0xa840, 0xa873, -0xa880, 0xa8c4, -0xa8d0, 0xa8d9, -0xa8e0, 0xa8f7, -0xa8fb, 0xa8fb, -0xa8fd, 0xa8fd, -0xa900, 0xa92d, -0xa930, 0xa953, -0xa960, 0xa97c, -0xa980, 0xa9c0, -0xa9cf, 0xa9d9, -0xa9e0, 0xa9fe, -0xaa00, 0xaa36, -0xaa40, 0xaa4d, -0xaa50, 0xaa59, -0xaa60, 0xaa76, -0xaa7a, 0xaac2, -0xaadb, 0xaadd, -0xaae0, 0xaaef, -0xaaf2, 0xaaf6, -0xab01, 0xab06, -0xab09, 0xab0e, -0xab11, 0xab16, -0xab20, 0xab26, -0xab28, 0xab2e, -0xab30, 0xab5a, -0xab5c, 0xab65, -0xab70, 0xabea, -0xabec, 0xabed, -0xabf0, 0xabf9, -0xac00, 0xd7a3, -0xd7b0, 0xd7c6, -0xd7cb, 0xd7fb, -0xf900, 0xfa6d, -0xfa70, 0xfad9, -0xfb00, 0xfb06, -0xfb13, 0xfb17, -0xfb1d, 0xfb28, -0xfb2a, 0xfb36, -0xfb38, 0xfb3c, -0xfb3e, 0xfb3e, -0xfb40, 0xfb41, -0xfb43, 0xfb44, -0xfb46, 0xfbb1, -0xfbd3, 0xfc5d, -0xfc64, 0xfd3d, -0xfd50, 0xfd8f, -0xfd92, 0xfdc7, -0xfdf0, 0xfdf9, -0xfe00, 0xfe0f, -0xfe20, 0xfe2f, -0xfe33, 0xfe34, -0xfe4d, 0xfe4f, -0xfe71, 0xfe71, -0xfe73, 0xfe73, -0xfe77, 0xfe77, -0xfe79, 0xfe79, -0xfe7b, 0xfe7b, -0xfe7d, 0xfe7d, -0xfe7f, 0xfefc, -0xff10, 0xff19, -0xff21, 0xff3a, -0xff3f, 0xff3f, -0xff41, 0xff5a, -0xff66, 0xffbe, -0xffc2, 0xffc7, -0xffca, 0xffcf, -0xffd2, 0xffd7, -0xffda, 0xffdc, -0x10000, 0x1000b, -0x1000d, 0x10026, -0x10028, 0x1003a, -0x1003c, 0x1003d, -0x1003f, 0x1004d, -0x10050, 0x1005d, -0x10080, 0x100fa, -0x10140, 0x10174, -0x101fd, 0x101fd, -0x10280, 0x1029c, -0x102a0, 0x102d0, -0x102e0, 0x102e0, -0x10300, 0x1031f, -0x10330, 0x1034a, -0x10350, 0x1037a, -0x10380, 0x1039d, -0x103a0, 0x103c3, -0x103c8, 0x103cf, -0x103d1, 0x103d5, -0x10400, 0x1049d, -0x104a0, 0x104a9, -0x10500, 0x10527, -0x10530, 0x10563, -0x10600, 0x10736, -0x10740, 0x10755, -0x10760, 0x10767, -0x10800, 0x10805, -0x10808, 0x10808, -0x1080a, 0x10835, -0x10837, 0x10838, -0x1083c, 0x1083c, -0x1083f, 0x10855, -0x10860, 0x10876, -0x10880, 0x1089e, -0x108e0, 0x108f2, -0x108f4, 0x108f5, -0x10900, 0x10915, -0x10920, 0x10939, -0x10980, 0x109b7, -0x109be, 0x109bf, -0x10a00, 0x10a03, -0x10a05, 0x10a06, -0x10a0c, 0x10a13, -0x10a15, 0x10a17, -0x10a19, 0x10a33, -0x10a38, 0x10a3a, -0x10a3f, 0x10a3f, -0x10a60, 0x10a7c, -0x10a80, 0x10a9c, -0x10ac0, 0x10ac7, -0x10ac9, 0x10ae6, -0x10b00, 0x10b35, -0x10b40, 0x10b55, -0x10b60, 0x10b72, -0x10b80, 0x10b91, -0x10c00, 0x10c48, -0x10c80, 0x10cb2, -0x10cc0, 0x10cf2, -0x11000, 0x11046, -0x11066, 0x1106f, -0x1107f, 0x110ba, -0x110d0, 0x110e8, -0x110f0, 0x110f9, -0x11100, 0x11134, -0x11136, 0x1113f, -0x11150, 0x11173, -0x11176, 0x11176, -0x11180, 0x111c4, -0x111ca, 0x111cc, -0x111d0, 0x111da, -0x111dc, 0x111dc, -0x11200, 0x11211, -0x11213, 0x11237, -0x11280, 0x11286, -0x11288, 0x11288, -0x1128a, 0x1128d, -0x1128f, 0x1129d, -0x1129f, 0x112a8, -0x112b0, 0x112ea, -0x112f0, 0x112f9, -0x11300, 0x11303, -0x11305, 0x1130c, -0x1130f, 0x11310, -0x11313, 0x11328, -0x1132a, 0x11330, -0x11332, 0x11333, -0x11335, 0x11339, -0x1133c, 0x11344, -0x11347, 0x11348, -0x1134b, 0x1134d, -0x11350, 0x11350, -0x11357, 0x11357, -0x1135d, 0x11363, -0x11366, 0x1136c, -0x11370, 0x11374, -0x11480, 0x114c5, -0x114c7, 0x114c7, -0x114d0, 0x114d9, -0x11580, 0x115b5, -0x115b8, 0x115c0, -0x115d8, 0x115dd, -0x11600, 0x11640, -0x11644, 0x11644, -0x11650, 0x11659, -0x11680, 0x116b7, -0x116c0, 0x116c9, -0x11700, 0x11719, -0x1171d, 0x1172b, -0x11730, 0x11739, -0x118a0, 0x118e9, -0x118ff, 0x118ff, -0x11ac0, 0x11af8, -0x12000, 0x12399, -0x12400, 0x1246e, -0x12480, 0x12543, -0x13000, 0x1342e, -0x14400, 0x14646, -0x16800, 0x16a38, -0x16a40, 0x16a5e, -0x16a60, 0x16a69, -0x16ad0, 0x16aed, -0x16af0, 0x16af4, -0x16b00, 0x16b36, -0x16b40, 0x16b43, -0x16b50, 0x16b59, -0x16b63, 0x16b77, -0x16b7d, 0x16b8f, -0x16f00, 0x16f44, -0x16f50, 0x16f7e, -0x16f8f, 0x16f9f, -0x1b000, 0x1b001, -0x1bc00, 0x1bc6a, -0x1bc70, 0x1bc7c, -0x1bc80, 0x1bc88, -0x1bc90, 0x1bc99, -0x1bc9d, 0x1bc9e, -0x1d165, 0x1d169, -0x1d16d, 0x1d172, -0x1d17b, 0x1d182, -0x1d185, 0x1d18b, -0x1d1aa, 0x1d1ad, -0x1d242, 0x1d244, -0x1d400, 0x1d454, -0x1d456, 0x1d49c, -0x1d49e, 0x1d49f, -0x1d4a2, 0x1d4a2, -0x1d4a5, 0x1d4a6, -0x1d4a9, 0x1d4ac, -0x1d4ae, 0x1d4b9, -0x1d4bb, 0x1d4bb, -0x1d4bd, 0x1d4c3, -0x1d4c5, 0x1d505, -0x1d507, 0x1d50a, -0x1d50d, 0x1d514, -0x1d516, 0x1d51c, -0x1d51e, 0x1d539, -0x1d53b, 0x1d53e, -0x1d540, 0x1d544, -0x1d546, 0x1d546, -0x1d54a, 0x1d550, -0x1d552, 0x1d6a5, -0x1d6a8, 0x1d6c0, -0x1d6c2, 0x1d6da, -0x1d6dc, 0x1d6fa, -0x1d6fc, 0x1d714, -0x1d716, 0x1d734, -0x1d736, 0x1d74e, -0x1d750, 0x1d76e, -0x1d770, 0x1d788, -0x1d78a, 0x1d7a8, -0x1d7aa, 0x1d7c2, -0x1d7c4, 0x1d7cb, -0x1d7ce, 0x1d7ff, -0x1da00, 0x1da36, -0x1da3b, 0x1da6c, -0x1da75, 0x1da75, -0x1da84, 0x1da84, -0x1da9b, 0x1da9f, -0x1daa1, 0x1daaf, -0x1e800, 0x1e8c4, -0x1e8d0, 0x1e8d6, -0x1ee00, 0x1ee03, -0x1ee05, 0x1ee1f, -0x1ee21, 0x1ee22, -0x1ee24, 0x1ee24, -0x1ee27, 0x1ee27, -0x1ee29, 0x1ee32, -0x1ee34, 0x1ee37, -0x1ee39, 0x1ee39, -0x1ee3b, 0x1ee3b, -0x1ee42, 0x1ee42, -0x1ee47, 0x1ee47, -0x1ee49, 0x1ee49, -0x1ee4b, 0x1ee4b, -0x1ee4d, 0x1ee4f, -0x1ee51, 0x1ee52, -0x1ee54, 0x1ee54, -0x1ee57, 0x1ee57, -0x1ee59, 0x1ee59, -0x1ee5b, 0x1ee5b, -0x1ee5d, 0x1ee5d, -0x1ee5f, 0x1ee5f, -0x1ee61, 0x1ee62, -0x1ee64, 0x1ee64, -0x1ee67, 0x1ee6a, -0x1ee6c, 0x1ee72, -0x1ee74, 0x1ee77, -0x1ee79, 0x1ee7c, -0x1ee7e, 0x1ee7e, -0x1ee80, 0x1ee89, -0x1ee8b, 0x1ee9b, -0x1eea1, 0x1eea3, -0x1eea5, 0x1eea9, -0x1eeab, 0x1eebb, -0x20000, 0x2a6d6, -0x2a700, 0x2b734, -0x2b740, 0x2b81d, -0x2b820, 0x2cea1, -0x2f800, 0x2fa1d, -0xe0100, 0xe01ef, -}; /* END of CR_XID_Continue */ - -/* PROPERTY: 'Default_Ignorable_Code_Point': Derived Property */ -static const OnigCodePoint -CR_Default_Ignorable_Code_Point[] = { 17, -0x00ad, 0x00ad, -0x034f, 0x034f, -0x061c, 0x061c, -0x115f, 0x1160, -0x17b4, 0x17b5, -0x180b, 0x180e, -0x200b, 0x200f, -0x202a, 0x202e, -0x2060, 0x206f, -0x3164, 0x3164, -0xfe00, 0xfe0f, -0xfeff, 0xfeff, -0xffa0, 0xffa0, -0xfff0, 0xfff8, -0x1bca0, 0x1bca3, -0x1d173, 0x1d17a, -0xe0000, 0xe0fff, -}; /* END of CR_Default_Ignorable_Code_Point */ - -/* PROPERTY: 'Grapheme_Extend': Derived Property */ -static const OnigCodePoint -CR_Grapheme_Extend[] = { 283, -0x0300, 0x036f, -0x0483, 0x0489, -0x0591, 0x05bd, -0x05bf, 0x05bf, -0x05c1, 0x05c2, -0x05c4, 0x05c5, -0x05c7, 0x05c7, -0x0610, 0x061a, -0x064b, 0x065f, -0x0670, 0x0670, -0x06d6, 0x06dc, -0x06df, 0x06e4, -0x06e7, 0x06e8, -0x06ea, 0x06ed, -0x0711, 0x0711, -0x0730, 0x074a, -0x07a6, 0x07b0, -0x07eb, 0x07f3, -0x0816, 0x0819, -0x081b, 0x0823, -0x0825, 0x0827, -0x0829, 0x082d, -0x0859, 0x085b, -0x08e3, 0x0902, -0x093a, 0x093a, -0x093c, 0x093c, -0x0941, 0x0948, -0x094d, 0x094d, -0x0951, 0x0957, -0x0962, 0x0963, -0x0981, 0x0981, -0x09bc, 0x09bc, -0x09be, 0x09be, -0x09c1, 0x09c4, -0x09cd, 0x09cd, -0x09d7, 0x09d7, -0x09e2, 0x09e3, -0x0a01, 0x0a02, -0x0a3c, 0x0a3c, -0x0a41, 0x0a42, -0x0a47, 0x0a48, -0x0a4b, 0x0a4d, -0x0a51, 0x0a51, -0x0a70, 0x0a71, -0x0a75, 0x0a75, -0x0a81, 0x0a82, -0x0abc, 0x0abc, -0x0ac1, 0x0ac5, -0x0ac7, 0x0ac8, -0x0acd, 0x0acd, -0x0ae2, 0x0ae3, -0x0b01, 0x0b01, -0x0b3c, 0x0b3c, -0x0b3e, 0x0b3f, -0x0b41, 0x0b44, -0x0b4d, 0x0b4d, -0x0b56, 0x0b57, -0x0b62, 0x0b63, -0x0b82, 0x0b82, -0x0bbe, 0x0bbe, -0x0bc0, 0x0bc0, -0x0bcd, 0x0bcd, -0x0bd7, 0x0bd7, -0x0c00, 0x0c00, -0x0c3e, 0x0c40, -0x0c46, 0x0c48, -0x0c4a, 0x0c4d, -0x0c55, 0x0c56, -0x0c62, 0x0c63, -0x0c81, 0x0c81, -0x0cbc, 0x0cbc, -0x0cbf, 0x0cbf, -0x0cc2, 0x0cc2, -0x0cc6, 0x0cc6, -0x0ccc, 0x0ccd, -0x0cd5, 0x0cd6, -0x0ce2, 0x0ce3, -0x0d01, 0x0d01, -0x0d3e, 0x0d3e, -0x0d41, 0x0d44, -0x0d4d, 0x0d4d, -0x0d57, 0x0d57, -0x0d62, 0x0d63, -0x0dca, 0x0dca, -0x0dcf, 0x0dcf, -0x0dd2, 0x0dd4, -0x0dd6, 0x0dd6, -0x0ddf, 0x0ddf, -0x0e31, 0x0e31, -0x0e34, 0x0e3a, -0x0e47, 0x0e4e, -0x0eb1, 0x0eb1, -0x0eb4, 0x0eb9, -0x0ebb, 0x0ebc, -0x0ec8, 0x0ecd, -0x0f18, 0x0f19, -0x0f35, 0x0f35, -0x0f37, 0x0f37, -0x0f39, 0x0f39, -0x0f71, 0x0f7e, -0x0f80, 0x0f84, -0x0f86, 0x0f87, -0x0f8d, 0x0f97, -0x0f99, 0x0fbc, -0x0fc6, 0x0fc6, -0x102d, 0x1030, -0x1032, 0x1037, -0x1039, 0x103a, -0x103d, 0x103e, -0x1058, 0x1059, -0x105e, 0x1060, -0x1071, 0x1074, -0x1082, 0x1082, -0x1085, 0x1086, -0x108d, 0x108d, -0x109d, 0x109d, -0x135d, 0x135f, -0x1712, 0x1714, -0x1732, 0x1734, -0x1752, 0x1753, -0x1772, 0x1773, -0x17b4, 0x17b5, -0x17b7, 0x17bd, -0x17c6, 0x17c6, -0x17c9, 0x17d3, -0x17dd, 0x17dd, -0x180b, 0x180d, -0x18a9, 0x18a9, -0x1920, 0x1922, -0x1927, 0x1928, -0x1932, 0x1932, -0x1939, 0x193b, -0x1a17, 0x1a18, -0x1a1b, 0x1a1b, -0x1a56, 0x1a56, -0x1a58, 0x1a5e, -0x1a60, 0x1a60, -0x1a62, 0x1a62, -0x1a65, 0x1a6c, -0x1a73, 0x1a7c, -0x1a7f, 0x1a7f, -0x1ab0, 0x1abe, -0x1b00, 0x1b03, -0x1b34, 0x1b34, -0x1b36, 0x1b3a, -0x1b3c, 0x1b3c, -0x1b42, 0x1b42, -0x1b6b, 0x1b73, -0x1b80, 0x1b81, -0x1ba2, 0x1ba5, -0x1ba8, 0x1ba9, -0x1bab, 0x1bad, -0x1be6, 0x1be6, -0x1be8, 0x1be9, -0x1bed, 0x1bed, -0x1bef, 0x1bf1, -0x1c2c, 0x1c33, -0x1c36, 0x1c37, -0x1cd0, 0x1cd2, -0x1cd4, 0x1ce0, -0x1ce2, 0x1ce8, -0x1ced, 0x1ced, -0x1cf4, 0x1cf4, -0x1cf8, 0x1cf9, -0x1dc0, 0x1df5, -0x1dfc, 0x1dff, -0x200c, 0x200d, -0x20d0, 0x20f0, -0x2cef, 0x2cf1, -0x2d7f, 0x2d7f, -0x2de0, 0x2dff, -0x302a, 0x302f, -0x3099, 0x309a, -0xa66f, 0xa672, -0xa674, 0xa67d, -0xa69e, 0xa69f, -0xa6f0, 0xa6f1, -0xa802, 0xa802, -0xa806, 0xa806, -0xa80b, 0xa80b, -0xa825, 0xa826, -0xa8c4, 0xa8c4, -0xa8e0, 0xa8f1, -0xa926, 0xa92d, -0xa947, 0xa951, -0xa980, 0xa982, -0xa9b3, 0xa9b3, -0xa9b6, 0xa9b9, -0xa9bc, 0xa9bc, -0xa9e5, 0xa9e5, -0xaa29, 0xaa2e, -0xaa31, 0xaa32, -0xaa35, 0xaa36, -0xaa43, 0xaa43, -0xaa4c, 0xaa4c, -0xaa7c, 0xaa7c, -0xaab0, 0xaab0, -0xaab2, 0xaab4, -0xaab7, 0xaab8, -0xaabe, 0xaabf, -0xaac1, 0xaac1, -0xaaec, 0xaaed, -0xaaf6, 0xaaf6, -0xabe5, 0xabe5, -0xabe8, 0xabe8, -0xabed, 0xabed, -0xfb1e, 0xfb1e, -0xfe00, 0xfe0f, -0xfe20, 0xfe2f, -0xff9e, 0xff9f, -0x101fd, 0x101fd, -0x102e0, 0x102e0, -0x10376, 0x1037a, -0x10a01, 0x10a03, -0x10a05, 0x10a06, -0x10a0c, 0x10a0f, -0x10a38, 0x10a3a, -0x10a3f, 0x10a3f, -0x10ae5, 0x10ae6, -0x11001, 0x11001, -0x11038, 0x11046, -0x1107f, 0x11081, -0x110b3, 0x110b6, -0x110b9, 0x110ba, -0x11100, 0x11102, -0x11127, 0x1112b, -0x1112d, 0x11134, -0x11173, 0x11173, -0x11180, 0x11181, -0x111b6, 0x111be, -0x111ca, 0x111cc, -0x1122f, 0x11231, -0x11234, 0x11234, -0x11236, 0x11237, -0x112df, 0x112df, -0x112e3, 0x112ea, -0x11300, 0x11301, -0x1133c, 0x1133c, -0x1133e, 0x1133e, -0x11340, 0x11340, -0x11357, 0x11357, -0x11366, 0x1136c, -0x11370, 0x11374, -0x114b0, 0x114b0, -0x114b3, 0x114b8, -0x114ba, 0x114ba, -0x114bd, 0x114bd, -0x114bf, 0x114c0, -0x114c2, 0x114c3, -0x115af, 0x115af, -0x115b2, 0x115b5, -0x115bc, 0x115bd, -0x115bf, 0x115c0, -0x115dc, 0x115dd, -0x11633, 0x1163a, -0x1163d, 0x1163d, -0x1163f, 0x11640, -0x116ab, 0x116ab, -0x116ad, 0x116ad, -0x116b0, 0x116b5, -0x116b7, 0x116b7, -0x1171d, 0x1171f, -0x11722, 0x11725, -0x11727, 0x1172b, -0x16af0, 0x16af4, -0x16b30, 0x16b36, -0x16f8f, 0x16f92, -0x1bc9d, 0x1bc9e, -0x1d165, 0x1d165, -0x1d167, 0x1d169, -0x1d16e, 0x1d172, -0x1d17b, 0x1d182, -0x1d185, 0x1d18b, -0x1d1aa, 0x1d1ad, -0x1d242, 0x1d244, -0x1da00, 0x1da36, -0x1da3b, 0x1da6c, -0x1da75, 0x1da75, -0x1da84, 0x1da84, -0x1da9b, 0x1da9f, -0x1daa1, 0x1daaf, -0x1e8d0, 0x1e8d6, -0xe0100, 0xe01ef, -}; /* END of CR_Grapheme_Extend */ - -/* PROPERTY: 'Grapheme_Base': Derived Property */ -static const OnigCodePoint -CR_Grapheme_Base[] = { 743, -0x0020, 0x007e, -0x00a0, 0x00ac, -0x00ae, 0x02ff, -0x0370, 0x0377, -0x037a, 0x037f, -0x0384, 0x038a, -0x038c, 0x038c, -0x038e, 0x03a1, -0x03a3, 0x0482, -0x048a, 0x052f, -0x0531, 0x0556, -0x0559, 0x055f, -0x0561, 0x0587, -0x0589, 0x058a, -0x058d, 0x058f, -0x05be, 0x05be, -0x05c0, 0x05c0, -0x05c3, 0x05c3, -0x05c6, 0x05c6, -0x05d0, 0x05ea, -0x05f0, 0x05f4, -0x0606, 0x060f, -0x061b, 0x061b, -0x061e, 0x064a, -0x0660, 0x066f, -0x0671, 0x06d5, -0x06de, 0x06de, -0x06e5, 0x06e6, -0x06e9, 0x06e9, -0x06ee, 0x070d, -0x0710, 0x0710, -0x0712, 0x072f, -0x074d, 0x07a5, -0x07b1, 0x07b1, -0x07c0, 0x07ea, -0x07f4, 0x07fa, -0x0800, 0x0815, -0x081a, 0x081a, -0x0824, 0x0824, -0x0828, 0x0828, -0x0830, 0x083e, -0x0840, 0x0858, -0x085e, 0x085e, -0x08a0, 0x08b4, -0x0903, 0x0939, -0x093b, 0x093b, -0x093d, 0x0940, -0x0949, 0x094c, -0x094e, 0x0950, -0x0958, 0x0961, -0x0964, 0x0980, -0x0982, 0x0983, -0x0985, 0x098c, -0x098f, 0x0990, -0x0993, 0x09a8, -0x09aa, 0x09b0, -0x09b2, 0x09b2, -0x09b6, 0x09b9, -0x09bd, 0x09bd, -0x09bf, 0x09c0, -0x09c7, 0x09c8, -0x09cb, 0x09cc, -0x09ce, 0x09ce, -0x09dc, 0x09dd, -0x09df, 0x09e1, -0x09e6, 0x09fb, -0x0a03, 0x0a03, -0x0a05, 0x0a0a, -0x0a0f, 0x0a10, -0x0a13, 0x0a28, -0x0a2a, 0x0a30, -0x0a32, 0x0a33, -0x0a35, 0x0a36, -0x0a38, 0x0a39, -0x0a3e, 0x0a40, -0x0a59, 0x0a5c, -0x0a5e, 0x0a5e, -0x0a66, 0x0a6f, -0x0a72, 0x0a74, -0x0a83, 0x0a83, -0x0a85, 0x0a8d, -0x0a8f, 0x0a91, -0x0a93, 0x0aa8, -0x0aaa, 0x0ab0, -0x0ab2, 0x0ab3, -0x0ab5, 0x0ab9, -0x0abd, 0x0ac0, -0x0ac9, 0x0ac9, -0x0acb, 0x0acc, -0x0ad0, 0x0ad0, -0x0ae0, 0x0ae1, -0x0ae6, 0x0af1, -0x0af9, 0x0af9, -0x0b02, 0x0b03, -0x0b05, 0x0b0c, -0x0b0f, 0x0b10, -0x0b13, 0x0b28, -0x0b2a, 0x0b30, -0x0b32, 0x0b33, -0x0b35, 0x0b39, -0x0b3d, 0x0b3d, -0x0b40, 0x0b40, -0x0b47, 0x0b48, -0x0b4b, 0x0b4c, -0x0b5c, 0x0b5d, -0x0b5f, 0x0b61, -0x0b66, 0x0b77, -0x0b83, 0x0b83, -0x0b85, 0x0b8a, -0x0b8e, 0x0b90, -0x0b92, 0x0b95, -0x0b99, 0x0b9a, -0x0b9c, 0x0b9c, -0x0b9e, 0x0b9f, -0x0ba3, 0x0ba4, -0x0ba8, 0x0baa, -0x0bae, 0x0bb9, -0x0bbf, 0x0bbf, -0x0bc1, 0x0bc2, -0x0bc6, 0x0bc8, -0x0bca, 0x0bcc, -0x0bd0, 0x0bd0, -0x0be6, 0x0bfa, -0x0c01, 0x0c03, -0x0c05, 0x0c0c, -0x0c0e, 0x0c10, -0x0c12, 0x0c28, -0x0c2a, 0x0c39, -0x0c3d, 0x0c3d, -0x0c41, 0x0c44, -0x0c58, 0x0c5a, -0x0c60, 0x0c61, -0x0c66, 0x0c6f, -0x0c78, 0x0c7f, -0x0c82, 0x0c83, -0x0c85, 0x0c8c, -0x0c8e, 0x0c90, -0x0c92, 0x0ca8, -0x0caa, 0x0cb3, -0x0cb5, 0x0cb9, -0x0cbd, 0x0cbe, -0x0cc0, 0x0cc1, -0x0cc3, 0x0cc4, -0x0cc7, 0x0cc8, -0x0cca, 0x0ccb, -0x0cde, 0x0cde, -0x0ce0, 0x0ce1, -0x0ce6, 0x0cef, -0x0cf1, 0x0cf2, -0x0d02, 0x0d03, -0x0d05, 0x0d0c, -0x0d0e, 0x0d10, -0x0d12, 0x0d3a, -0x0d3d, 0x0d3d, -0x0d3f, 0x0d40, -0x0d46, 0x0d48, -0x0d4a, 0x0d4c, -0x0d4e, 0x0d4e, -0x0d5f, 0x0d61, -0x0d66, 0x0d75, -0x0d79, 0x0d7f, -0x0d82, 0x0d83, -0x0d85, 0x0d96, -0x0d9a, 0x0db1, -0x0db3, 0x0dbb, -0x0dbd, 0x0dbd, -0x0dc0, 0x0dc6, -0x0dd0, 0x0dd1, -0x0dd8, 0x0dde, -0x0de6, 0x0def, -0x0df2, 0x0df4, -0x0e01, 0x0e30, -0x0e32, 0x0e33, -0x0e3f, 0x0e46, -0x0e4f, 0x0e5b, -0x0e81, 0x0e82, -0x0e84, 0x0e84, -0x0e87, 0x0e88, -0x0e8a, 0x0e8a, -0x0e8d, 0x0e8d, -0x0e94, 0x0e97, -0x0e99, 0x0e9f, -0x0ea1, 0x0ea3, -0x0ea5, 0x0ea5, -0x0ea7, 0x0ea7, -0x0eaa, 0x0eab, -0x0ead, 0x0eb0, -0x0eb2, 0x0eb3, -0x0ebd, 0x0ebd, -0x0ec0, 0x0ec4, -0x0ec6, 0x0ec6, -0x0ed0, 0x0ed9, -0x0edc, 0x0edf, -0x0f00, 0x0f17, -0x0f1a, 0x0f34, -0x0f36, 0x0f36, -0x0f38, 0x0f38, -0x0f3a, 0x0f47, -0x0f49, 0x0f6c, -0x0f7f, 0x0f7f, -0x0f85, 0x0f85, -0x0f88, 0x0f8c, -0x0fbe, 0x0fc5, -0x0fc7, 0x0fcc, -0x0fce, 0x0fda, -0x1000, 0x102c, -0x1031, 0x1031, -0x1038, 0x1038, -0x103b, 0x103c, -0x103f, 0x1057, -0x105a, 0x105d, -0x1061, 0x1070, -0x1075, 0x1081, -0x1083, 0x1084, -0x1087, 0x108c, -0x108e, 0x109c, -0x109e, 0x10c5, -0x10c7, 0x10c7, -0x10cd, 0x10cd, -0x10d0, 0x1248, -0x124a, 0x124d, -0x1250, 0x1256, -0x1258, 0x1258, -0x125a, 0x125d, -0x1260, 0x1288, -0x128a, 0x128d, -0x1290, 0x12b0, -0x12b2, 0x12b5, -0x12b8, 0x12be, -0x12c0, 0x12c0, -0x12c2, 0x12c5, -0x12c8, 0x12d6, -0x12d8, 0x1310, -0x1312, 0x1315, -0x1318, 0x135a, -0x1360, 0x137c, -0x1380, 0x1399, -0x13a0, 0x13f5, -0x13f8, 0x13fd, -0x1400, 0x169c, -0x16a0, 0x16f8, -0x1700, 0x170c, -0x170e, 0x1711, -0x1720, 0x1731, -0x1735, 0x1736, -0x1740, 0x1751, -0x1760, 0x176c, -0x176e, 0x1770, -0x1780, 0x17b3, -0x17b6, 0x17b6, -0x17be, 0x17c5, -0x17c7, 0x17c8, -0x17d4, 0x17dc, -0x17e0, 0x17e9, -0x17f0, 0x17f9, -0x1800, 0x180a, -0x1810, 0x1819, -0x1820, 0x1877, -0x1880, 0x18a8, -0x18aa, 0x18aa, -0x18b0, 0x18f5, -0x1900, 0x191e, -0x1923, 0x1926, -0x1929, 0x192b, -0x1930, 0x1931, -0x1933, 0x1938, -0x1940, 0x1940, -0x1944, 0x196d, -0x1970, 0x1974, -0x1980, 0x19ab, -0x19b0, 0x19c9, -0x19d0, 0x19da, -0x19de, 0x1a16, -0x1a19, 0x1a1a, -0x1a1e, 0x1a55, -0x1a57, 0x1a57, -0x1a61, 0x1a61, -0x1a63, 0x1a64, -0x1a6d, 0x1a72, -0x1a80, 0x1a89, -0x1a90, 0x1a99, -0x1aa0, 0x1aad, -0x1b04, 0x1b33, -0x1b35, 0x1b35, -0x1b3b, 0x1b3b, -0x1b3d, 0x1b41, -0x1b43, 0x1b4b, -0x1b50, 0x1b6a, -0x1b74, 0x1b7c, -0x1b82, 0x1ba1, -0x1ba6, 0x1ba7, -0x1baa, 0x1baa, -0x1bae, 0x1be5, -0x1be7, 0x1be7, -0x1bea, 0x1bec, -0x1bee, 0x1bee, -0x1bf2, 0x1bf3, -0x1bfc, 0x1c2b, -0x1c34, 0x1c35, -0x1c3b, 0x1c49, -0x1c4d, 0x1c7f, -0x1cc0, 0x1cc7, -0x1cd3, 0x1cd3, -0x1ce1, 0x1ce1, -0x1ce9, 0x1cec, -0x1cee, 0x1cf3, -0x1cf5, 0x1cf6, -0x1d00, 0x1dbf, -0x1e00, 0x1f15, -0x1f18, 0x1f1d, -0x1f20, 0x1f45, -0x1f48, 0x1f4d, -0x1f50, 0x1f57, -0x1f59, 0x1f59, -0x1f5b, 0x1f5b, -0x1f5d, 0x1f5d, -0x1f5f, 0x1f7d, -0x1f80, 0x1fb4, -0x1fb6, 0x1fc4, -0x1fc6, 0x1fd3, -0x1fd6, 0x1fdb, -0x1fdd, 0x1fef, -0x1ff2, 0x1ff4, -0x1ff6, 0x1ffe, -0x2000, 0x200a, -0x2010, 0x2027, -0x202f, 0x205f, -0x2070, 0x2071, -0x2074, 0x208e, -0x2090, 0x209c, -0x20a0, 0x20be, -0x2100, 0x218b, -0x2190, 0x23fa, -0x2400, 0x2426, -0x2440, 0x244a, -0x2460, 0x2b73, -0x2b76, 0x2b95, -0x2b98, 0x2bb9, -0x2bbd, 0x2bc8, -0x2bca, 0x2bd1, -0x2bec, 0x2bef, -0x2c00, 0x2c2e, -0x2c30, 0x2c5e, -0x2c60, 0x2cee, -0x2cf2, 0x2cf3, -0x2cf9, 0x2d25, -0x2d27, 0x2d27, -0x2d2d, 0x2d2d, -0x2d30, 0x2d67, -0x2d6f, 0x2d70, -0x2d80, 0x2d96, -0x2da0, 0x2da6, -0x2da8, 0x2dae, -0x2db0, 0x2db6, -0x2db8, 0x2dbe, -0x2dc0, 0x2dc6, -0x2dc8, 0x2dce, -0x2dd0, 0x2dd6, -0x2dd8, 0x2dde, -0x2e00, 0x2e42, -0x2e80, 0x2e99, -0x2e9b, 0x2ef3, -0x2f00, 0x2fd5, -0x2ff0, 0x2ffb, -0x3000, 0x3029, -0x3030, 0x303f, -0x3041, 0x3096, -0x309b, 0x30ff, -0x3105, 0x312d, -0x3131, 0x318e, -0x3190, 0x31ba, -0x31c0, 0x31e3, -0x31f0, 0x321e, -0x3220, 0x32fe, -0x3300, 0x4db5, -0x4dc0, 0x9fd5, -0xa000, 0xa48c, -0xa490, 0xa4c6, -0xa4d0, 0xa62b, -0xa640, 0xa66e, -0xa673, 0xa673, -0xa67e, 0xa69d, -0xa6a0, 0xa6ef, -0xa6f2, 0xa6f7, -0xa700, 0xa7ad, -0xa7b0, 0xa7b7, -0xa7f7, 0xa801, -0xa803, 0xa805, -0xa807, 0xa80a, -0xa80c, 0xa824, -0xa827, 0xa82b, -0xa830, 0xa839, -0xa840, 0xa877, -0xa880, 0xa8c3, -0xa8ce, 0xa8d9, -0xa8f2, 0xa8fd, -0xa900, 0xa925, -0xa92e, 0xa946, -0xa952, 0xa953, -0xa95f, 0xa97c, -0xa983, 0xa9b2, -0xa9b4, 0xa9b5, -0xa9ba, 0xa9bb, -0xa9bd, 0xa9cd, -0xa9cf, 0xa9d9, -0xa9de, 0xa9e4, -0xa9e6, 0xa9fe, -0xaa00, 0xaa28, -0xaa2f, 0xaa30, -0xaa33, 0xaa34, -0xaa40, 0xaa42, -0xaa44, 0xaa4b, -0xaa4d, 0xaa4d, -0xaa50, 0xaa59, -0xaa5c, 0xaa7b, -0xaa7d, 0xaaaf, -0xaab1, 0xaab1, -0xaab5, 0xaab6, -0xaab9, 0xaabd, -0xaac0, 0xaac0, -0xaac2, 0xaac2, -0xaadb, 0xaaeb, -0xaaee, 0xaaf5, -0xab01, 0xab06, -0xab09, 0xab0e, -0xab11, 0xab16, -0xab20, 0xab26, -0xab28, 0xab2e, -0xab30, 0xab65, -0xab70, 0xabe4, -0xabe6, 0xabe7, -0xabe9, 0xabec, -0xabf0, 0xabf9, -0xac00, 0xd7a3, -0xd7b0, 0xd7c6, -0xd7cb, 0xd7fb, -0xf900, 0xfa6d, -0xfa70, 0xfad9, -0xfb00, 0xfb06, -0xfb13, 0xfb17, -0xfb1d, 0xfb1d, -0xfb1f, 0xfb36, -0xfb38, 0xfb3c, -0xfb3e, 0xfb3e, -0xfb40, 0xfb41, -0xfb43, 0xfb44, -0xfb46, 0xfbc1, -0xfbd3, 0xfd3f, -0xfd50, 0xfd8f, -0xfd92, 0xfdc7, -0xfdf0, 0xfdfd, -0xfe10, 0xfe19, -0xfe30, 0xfe52, -0xfe54, 0xfe66, -0xfe68, 0xfe6b, -0xfe70, 0xfe74, -0xfe76, 0xfefc, -0xff01, 0xff9d, -0xffa0, 0xffbe, -0xffc2, 0xffc7, -0xffca, 0xffcf, -0xffd2, 0xffd7, -0xffda, 0xffdc, -0xffe0, 0xffe6, -0xffe8, 0xffee, -0xfffc, 0xfffd, -0x10000, 0x1000b, -0x1000d, 0x10026, -0x10028, 0x1003a, -0x1003c, 0x1003d, -0x1003f, 0x1004d, -0x10050, 0x1005d, -0x10080, 0x100fa, -0x10100, 0x10102, -0x10107, 0x10133, -0x10137, 0x1018c, -0x10190, 0x1019b, -0x101a0, 0x101a0, -0x101d0, 0x101fc, -0x10280, 0x1029c, -0x102a0, 0x102d0, -0x102e1, 0x102fb, -0x10300, 0x10323, -0x10330, 0x1034a, -0x10350, 0x10375, -0x10380, 0x1039d, -0x1039f, 0x103c3, -0x103c8, 0x103d5, -0x10400, 0x1049d, -0x104a0, 0x104a9, -0x10500, 0x10527, -0x10530, 0x10563, -0x1056f, 0x1056f, -0x10600, 0x10736, -0x10740, 0x10755, -0x10760, 0x10767, -0x10800, 0x10805, -0x10808, 0x10808, -0x1080a, 0x10835, -0x10837, 0x10838, -0x1083c, 0x1083c, -0x1083f, 0x10855, -0x10857, 0x1089e, -0x108a7, 0x108af, -0x108e0, 0x108f2, -0x108f4, 0x108f5, -0x108fb, 0x1091b, -0x1091f, 0x10939, -0x1093f, 0x1093f, -0x10980, 0x109b7, -0x109bc, 0x109cf, -0x109d2, 0x10a00, -0x10a10, 0x10a13, -0x10a15, 0x10a17, -0x10a19, 0x10a33, -0x10a40, 0x10a47, -0x10a50, 0x10a58, -0x10a60, 0x10a9f, -0x10ac0, 0x10ae4, -0x10aeb, 0x10af6, -0x10b00, 0x10b35, -0x10b39, 0x10b55, -0x10b58, 0x10b72, -0x10b78, 0x10b91, -0x10b99, 0x10b9c, -0x10ba9, 0x10baf, -0x10c00, 0x10c48, -0x10c80, 0x10cb2, -0x10cc0, 0x10cf2, -0x10cfa, 0x10cff, -0x10e60, 0x10e7e, -0x11000, 0x11000, -0x11002, 0x11037, -0x11047, 0x1104d, -0x11052, 0x1106f, -0x11082, 0x110b2, -0x110b7, 0x110b8, -0x110bb, 0x110bc, -0x110be, 0x110c1, -0x110d0, 0x110e8, -0x110f0, 0x110f9, -0x11103, 0x11126, -0x1112c, 0x1112c, -0x11136, 0x11143, -0x11150, 0x11172, -0x11174, 0x11176, -0x11182, 0x111b5, -0x111bf, 0x111c9, -0x111cd, 0x111cd, -0x111d0, 0x111df, -0x111e1, 0x111f4, -0x11200, 0x11211, -0x11213, 0x1122e, -0x11232, 0x11233, -0x11235, 0x11235, -0x11238, 0x1123d, -0x11280, 0x11286, -0x11288, 0x11288, -0x1128a, 0x1128d, -0x1128f, 0x1129d, -0x1129f, 0x112a9, -0x112b0, 0x112de, -0x112e0, 0x112e2, -0x112f0, 0x112f9, -0x11302, 0x11303, -0x11305, 0x1130c, -0x1130f, 0x11310, -0x11313, 0x11328, -0x1132a, 0x11330, -0x11332, 0x11333, -0x11335, 0x11339, -0x1133d, 0x1133d, -0x1133f, 0x1133f, -0x11341, 0x11344, -0x11347, 0x11348, -0x1134b, 0x1134d, -0x11350, 0x11350, -0x1135d, 0x11363, -0x11480, 0x114af, -0x114b1, 0x114b2, -0x114b9, 0x114b9, -0x114bb, 0x114bc, -0x114be, 0x114be, -0x114c1, 0x114c1, -0x114c4, 0x114c7, -0x114d0, 0x114d9, -0x11580, 0x115ae, -0x115b0, 0x115b1, -0x115b8, 0x115bb, -0x115be, 0x115be, -0x115c1, 0x115db, -0x11600, 0x11632, -0x1163b, 0x1163c, -0x1163e, 0x1163e, -0x11641, 0x11644, -0x11650, 0x11659, -0x11680, 0x116aa, -0x116ac, 0x116ac, -0x116ae, 0x116af, -0x116b6, 0x116b6, -0x116c0, 0x116c9, -0x11700, 0x11719, -0x11720, 0x11721, -0x11726, 0x11726, -0x11730, 0x1173f, -0x118a0, 0x118f2, -0x118ff, 0x118ff, -0x11ac0, 0x11af8, -0x12000, 0x12399, -0x12400, 0x1246e, -0x12470, 0x12474, -0x12480, 0x12543, -0x13000, 0x1342e, -0x14400, 0x14646, -0x16800, 0x16a38, -0x16a40, 0x16a5e, -0x16a60, 0x16a69, -0x16a6e, 0x16a6f, -0x16ad0, 0x16aed, -0x16af5, 0x16af5, -0x16b00, 0x16b2f, -0x16b37, 0x16b45, -0x16b50, 0x16b59, -0x16b5b, 0x16b61, -0x16b63, 0x16b77, -0x16b7d, 0x16b8f, -0x16f00, 0x16f44, -0x16f50, 0x16f7e, -0x16f93, 0x16f9f, -0x1b000, 0x1b001, -0x1bc00, 0x1bc6a, -0x1bc70, 0x1bc7c, -0x1bc80, 0x1bc88, -0x1bc90, 0x1bc99, -0x1bc9c, 0x1bc9c, -0x1bc9f, 0x1bc9f, -0x1d000, 0x1d0f5, -0x1d100, 0x1d126, -0x1d129, 0x1d164, -0x1d166, 0x1d166, -0x1d16a, 0x1d16d, -0x1d183, 0x1d184, -0x1d18c, 0x1d1a9, -0x1d1ae, 0x1d1e8, -0x1d200, 0x1d241, -0x1d245, 0x1d245, -0x1d300, 0x1d356, -0x1d360, 0x1d371, -0x1d400, 0x1d454, -0x1d456, 0x1d49c, -0x1d49e, 0x1d49f, -0x1d4a2, 0x1d4a2, -0x1d4a5, 0x1d4a6, -0x1d4a9, 0x1d4ac, -0x1d4ae, 0x1d4b9, -0x1d4bb, 0x1d4bb, -0x1d4bd, 0x1d4c3, -0x1d4c5, 0x1d505, -0x1d507, 0x1d50a, -0x1d50d, 0x1d514, -0x1d516, 0x1d51c, -0x1d51e, 0x1d539, -0x1d53b, 0x1d53e, -0x1d540, 0x1d544, -0x1d546, 0x1d546, -0x1d54a, 0x1d550, -0x1d552, 0x1d6a5, -0x1d6a8, 0x1d7cb, -0x1d7ce, 0x1d9ff, -0x1da37, 0x1da3a, -0x1da6d, 0x1da74, -0x1da76, 0x1da83, -0x1da85, 0x1da8b, -0x1e800, 0x1e8c4, -0x1e8c7, 0x1e8cf, -0x1ee00, 0x1ee03, -0x1ee05, 0x1ee1f, -0x1ee21, 0x1ee22, -0x1ee24, 0x1ee24, -0x1ee27, 0x1ee27, -0x1ee29, 0x1ee32, -0x1ee34, 0x1ee37, -0x1ee39, 0x1ee39, -0x1ee3b, 0x1ee3b, -0x1ee42, 0x1ee42, -0x1ee47, 0x1ee47, -0x1ee49, 0x1ee49, -0x1ee4b, 0x1ee4b, -0x1ee4d, 0x1ee4f, -0x1ee51, 0x1ee52, -0x1ee54, 0x1ee54, -0x1ee57, 0x1ee57, -0x1ee59, 0x1ee59, -0x1ee5b, 0x1ee5b, -0x1ee5d, 0x1ee5d, -0x1ee5f, 0x1ee5f, -0x1ee61, 0x1ee62, -0x1ee64, 0x1ee64, -0x1ee67, 0x1ee6a, -0x1ee6c, 0x1ee72, -0x1ee74, 0x1ee77, -0x1ee79, 0x1ee7c, -0x1ee7e, 0x1ee7e, -0x1ee80, 0x1ee89, -0x1ee8b, 0x1ee9b, -0x1eea1, 0x1eea3, -0x1eea5, 0x1eea9, -0x1eeab, 0x1eebb, -0x1eef0, 0x1eef1, -0x1f000, 0x1f02b, -0x1f030, 0x1f093, -0x1f0a0, 0x1f0ae, -0x1f0b1, 0x1f0bf, -0x1f0c1, 0x1f0cf, -0x1f0d1, 0x1f0f5, -0x1f100, 0x1f10c, -0x1f110, 0x1f12e, -0x1f130, 0x1f16b, -0x1f170, 0x1f19a, -0x1f1e6, 0x1f202, -0x1f210, 0x1f23a, -0x1f240, 0x1f248, -0x1f250, 0x1f251, -0x1f300, 0x1f579, -0x1f57b, 0x1f5a3, -0x1f5a5, 0x1f6d0, -0x1f6e0, 0x1f6ec, -0x1f6f0, 0x1f6f3, -0x1f700, 0x1f773, -0x1f780, 0x1f7d4, -0x1f800, 0x1f80b, -0x1f810, 0x1f847, -0x1f850, 0x1f859, -0x1f860, 0x1f887, -0x1f890, 0x1f8ad, -0x1f910, 0x1f918, -0x1f980, 0x1f984, -0x1f9c0, 0x1f9c0, -0x20000, 0x2a6d6, -0x2a700, 0x2b734, -0x2b740, 0x2b81d, -0x2b820, 0x2cea1, -0x2f800, 0x2fa1d, -}; /* END of CR_Grapheme_Base */ - -/* PROPERTY: 'Grapheme_Link': Derived Property */ -static const OnigCodePoint -CR_Grapheme_Link[] = { 41, -0x094d, 0x094d, -0x09cd, 0x09cd, -0x0a4d, 0x0a4d, -0x0acd, 0x0acd, -0x0b4d, 0x0b4d, -0x0bcd, 0x0bcd, -0x0c4d, 0x0c4d, -0x0ccd, 0x0ccd, -0x0d4d, 0x0d4d, -0x0dca, 0x0dca, -0x0e3a, 0x0e3a, -0x0f84, 0x0f84, -0x1039, 0x103a, -0x1714, 0x1714, -0x1734, 0x1734, -0x17d2, 0x17d2, -0x1a60, 0x1a60, -0x1b44, 0x1b44, -0x1baa, 0x1bab, -0x1bf2, 0x1bf3, -0x2d7f, 0x2d7f, -0xa806, 0xa806, -0xa8c4, 0xa8c4, -0xa953, 0xa953, -0xa9c0, 0xa9c0, -0xaaf6, 0xaaf6, -0xabed, 0xabed, -0x10a3f, 0x10a3f, -0x11046, 0x11046, -0x1107f, 0x1107f, -0x110b9, 0x110b9, -0x11133, 0x11134, -0x111c0, 0x111c0, -0x11235, 0x11235, -0x112ea, 0x112ea, -0x1134d, 0x1134d, -0x114c2, 0x114c2, -0x115bf, 0x115bf, -0x1163f, 0x1163f, -0x116b6, 0x116b6, -0x1172b, 0x1172b, -}; /* END of CR_Grapheme_Link */ - -/* PROPERTY: 'Common': Script */ -static const OnigCodePoint -CR_Common[] = { 161, -0x0000, 0x0040, -0x005b, 0x0060, -0x007b, 0x00a9, -0x00ab, 0x00b9, -0x00bb, 0x00bf, -0x00d7, 0x00d7, -0x00f7, 0x00f7, -0x02b9, 0x02df, -0x02e5, 0x02e9, -0x02ec, 0x02ff, -0x0374, 0x0374, -0x037e, 0x037e, -0x0385, 0x0385, -0x0387, 0x0387, -0x0589, 0x0589, -0x0605, 0x0605, -0x060c, 0x060c, -0x061b, 0x061c, -0x061f, 0x061f, -0x0640, 0x0640, -0x06dd, 0x06dd, -0x0964, 0x0965, -0x0e3f, 0x0e3f, -0x0fd5, 0x0fd8, -0x10fb, 0x10fb, -0x16eb, 0x16ed, -0x1735, 0x1736, -0x1802, 0x1803, -0x1805, 0x1805, -0x1cd3, 0x1cd3, -0x1ce1, 0x1ce1, -0x1ce9, 0x1cec, -0x1cee, 0x1cf3, -0x1cf5, 0x1cf6, -0x2000, 0x200b, -0x200e, 0x2064, -0x2066, 0x2070, -0x2074, 0x207e, -0x2080, 0x208e, -0x20a0, 0x20be, -0x2100, 0x2125, -0x2127, 0x2129, -0x212c, 0x2131, -0x2133, 0x214d, -0x214f, 0x215f, -0x2189, 0x218b, -0x2190, 0x23fa, -0x2400, 0x2426, -0x2440, 0x244a, -0x2460, 0x27ff, -0x2900, 0x2b73, -0x2b76, 0x2b95, -0x2b98, 0x2bb9, -0x2bbd, 0x2bc8, -0x2bca, 0x2bd1, -0x2bec, 0x2bef, -0x2e00, 0x2e42, -0x2ff0, 0x2ffb, -0x3000, 0x3004, -0x3006, 0x3006, -0x3008, 0x3020, -0x3030, 0x3037, -0x303c, 0x303f, -0x309b, 0x309c, -0x30a0, 0x30a0, -0x30fb, 0x30fc, -0x3190, 0x319f, -0x31c0, 0x31e3, -0x3220, 0x325f, -0x327f, 0x32cf, -0x3358, 0x33ff, -0x4dc0, 0x4dff, -0xa700, 0xa721, -0xa788, 0xa78a, -0xa830, 0xa839, -0xa92e, 0xa92e, -0xa9cf, 0xa9cf, -0xab5b, 0xab5b, -0xfd3e, 0xfd3f, -0xfe10, 0xfe19, -0xfe30, 0xfe52, -0xfe54, 0xfe66, -0xfe68, 0xfe6b, -0xfeff, 0xfeff, -0xff01, 0xff20, -0xff3b, 0xff40, -0xff5b, 0xff65, -0xff70, 0xff70, -0xff9e, 0xff9f, -0xffe0, 0xffe6, -0xffe8, 0xffee, -0xfff9, 0xfffd, -0x10100, 0x10102, -0x10107, 0x10133, -0x10137, 0x1013f, -0x10190, 0x1019b, -0x101d0, 0x101fc, -0x102e1, 0x102fb, -0x1bca0, 0x1bca3, -0x1d000, 0x1d0f5, -0x1d100, 0x1d126, -0x1d129, 0x1d166, -0x1d16a, 0x1d17a, -0x1d183, 0x1d184, -0x1d18c, 0x1d1a9, -0x1d1ae, 0x1d1e8, -0x1d300, 0x1d356, -0x1d360, 0x1d371, -0x1d400, 0x1d454, -0x1d456, 0x1d49c, -0x1d49e, 0x1d49f, -0x1d4a2, 0x1d4a2, -0x1d4a5, 0x1d4a6, -0x1d4a9, 0x1d4ac, -0x1d4ae, 0x1d4b9, -0x1d4bb, 0x1d4bb, -0x1d4bd, 0x1d4c3, -0x1d4c5, 0x1d505, -0x1d507, 0x1d50a, -0x1d50d, 0x1d514, -0x1d516, 0x1d51c, -0x1d51e, 0x1d539, -0x1d53b, 0x1d53e, -0x1d540, 0x1d544, -0x1d546, 0x1d546, -0x1d54a, 0x1d550, -0x1d552, 0x1d6a5, -0x1d6a8, 0x1d7cb, -0x1d7ce, 0x1d7ff, -0x1f000, 0x1f02b, -0x1f030, 0x1f093, -0x1f0a0, 0x1f0ae, -0x1f0b1, 0x1f0bf, -0x1f0c1, 0x1f0cf, -0x1f0d1, 0x1f0f5, -0x1f100, 0x1f10c, -0x1f110, 0x1f12e, -0x1f130, 0x1f16b, -0x1f170, 0x1f19a, -0x1f1e6, 0x1f1ff, -0x1f201, 0x1f202, -0x1f210, 0x1f23a, -0x1f240, 0x1f248, -0x1f250, 0x1f251, -0x1f300, 0x1f579, -0x1f57b, 0x1f5a3, -0x1f5a5, 0x1f6d0, -0x1f6e0, 0x1f6ec, -0x1f6f0, 0x1f6f3, -0x1f700, 0x1f773, -0x1f780, 0x1f7d4, -0x1f800, 0x1f80b, -0x1f810, 0x1f847, -0x1f850, 0x1f859, -0x1f860, 0x1f887, -0x1f890, 0x1f8ad, -0x1f910, 0x1f918, -0x1f980, 0x1f984, -0x1f9c0, 0x1f9c0, -0xe0001, 0xe0001, -0xe0020, 0xe007f, -}; /* END of CR_Common */ - -/* PROPERTY: 'Latin': Script */ -static const OnigCodePoint -CR_Latin[] = { 31, -0x0041, 0x005a, -0x0061, 0x007a, -0x00aa, 0x00aa, -0x00ba, 0x00ba, -0x00c0, 0x00d6, -0x00d8, 0x00f6, -0x00f8, 0x02b8, -0x02e0, 0x02e4, -0x1d00, 0x1d25, -0x1d2c, 0x1d5c, -0x1d62, 0x1d65, -0x1d6b, 0x1d77, -0x1d79, 0x1dbe, -0x1e00, 0x1eff, -0x2071, 0x2071, -0x207f, 0x207f, -0x2090, 0x209c, -0x212a, 0x212b, -0x2132, 0x2132, -0x214e, 0x214e, -0x2160, 0x2188, -0x2c60, 0x2c7f, -0xa722, 0xa787, -0xa78b, 0xa7ad, -0xa7b0, 0xa7b7, -0xa7f7, 0xa7ff, -0xab30, 0xab5a, -0xab5c, 0xab64, -0xfb00, 0xfb06, -0xff21, 0xff3a, -0xff41, 0xff5a, -}; /* END of CR_Latin */ - -/* PROPERTY: 'Greek': Script */ -static const OnigCodePoint -CR_Greek[] = { 36, -0x0370, 0x0373, -0x0375, 0x0377, -0x037a, 0x037d, -0x037f, 0x037f, -0x0384, 0x0384, -0x0386, 0x0386, -0x0388, 0x038a, -0x038c, 0x038c, -0x038e, 0x03a1, -0x03a3, 0x03e1, -0x03f0, 0x03ff, -0x1d26, 0x1d2a, -0x1d5d, 0x1d61, -0x1d66, 0x1d6a, -0x1dbf, 0x1dbf, -0x1f00, 0x1f15, -0x1f18, 0x1f1d, -0x1f20, 0x1f45, -0x1f48, 0x1f4d, -0x1f50, 0x1f57, -0x1f59, 0x1f59, -0x1f5b, 0x1f5b, -0x1f5d, 0x1f5d, -0x1f5f, 0x1f7d, -0x1f80, 0x1fb4, -0x1fb6, 0x1fc4, -0x1fc6, 0x1fd3, -0x1fd6, 0x1fdb, -0x1fdd, 0x1fef, -0x1ff2, 0x1ff4, -0x1ff6, 0x1ffe, -0x2126, 0x2126, -0xab65, 0xab65, -0x10140, 0x1018c, -0x101a0, 0x101a0, -0x1d200, 0x1d245, -}; /* END of CR_Greek */ - -/* PROPERTY: 'Cyrillic': Script */ -static const OnigCodePoint -CR_Cyrillic[] = { 7, -0x0400, 0x0484, -0x0487, 0x052f, -0x1d2b, 0x1d2b, -0x1d78, 0x1d78, -0x2de0, 0x2dff, -0xa640, 0xa69f, -0xfe2e, 0xfe2f, -}; /* END of CR_Cyrillic */ - -/* PROPERTY: 'Armenian': Script */ -static const OnigCodePoint -CR_Armenian[] = { 6, -0x0531, 0x0556, -0x0559, 0x055f, -0x0561, 0x0587, -0x058a, 0x058a, -0x058d, 0x058f, -0xfb13, 0xfb17, -}; /* END of CR_Armenian */ - -/* PROPERTY: 'Hebrew': Script */ -static const OnigCodePoint -CR_Hebrew[] = { 9, -0x0591, 0x05c7, -0x05d0, 0x05ea, -0x05f0, 0x05f4, -0xfb1d, 0xfb36, -0xfb38, 0xfb3c, -0xfb3e, 0xfb3e, -0xfb40, 0xfb41, -0xfb43, 0xfb44, -0xfb46, 0xfb4f, -}; /* END of CR_Hebrew */ - -/* PROPERTY: 'Arabic': Script */ -static const OnigCodePoint -CR_Arabic[] = { 54, -0x0600, 0x0604, -0x0606, 0x060b, -0x060d, 0x061a, -0x061e, 0x061e, -0x0620, 0x063f, -0x0641, 0x064a, -0x0656, 0x066f, -0x0671, 0x06dc, -0x06de, 0x06ff, -0x0750, 0x077f, -0x08a0, 0x08b4, -0x08e3, 0x08ff, -0xfb50, 0xfbc1, -0xfbd3, 0xfd3d, -0xfd50, 0xfd8f, -0xfd92, 0xfdc7, -0xfdf0, 0xfdfd, -0xfe70, 0xfe74, -0xfe76, 0xfefc, -0x10e60, 0x10e7e, -0x1ee00, 0x1ee03, -0x1ee05, 0x1ee1f, -0x1ee21, 0x1ee22, -0x1ee24, 0x1ee24, -0x1ee27, 0x1ee27, -0x1ee29, 0x1ee32, -0x1ee34, 0x1ee37, -0x1ee39, 0x1ee39, -0x1ee3b, 0x1ee3b, -0x1ee42, 0x1ee42, -0x1ee47, 0x1ee47, -0x1ee49, 0x1ee49, -0x1ee4b, 0x1ee4b, -0x1ee4d, 0x1ee4f, -0x1ee51, 0x1ee52, -0x1ee54, 0x1ee54, -0x1ee57, 0x1ee57, -0x1ee59, 0x1ee59, -0x1ee5b, 0x1ee5b, -0x1ee5d, 0x1ee5d, -0x1ee5f, 0x1ee5f, -0x1ee61, 0x1ee62, -0x1ee64, 0x1ee64, -0x1ee67, 0x1ee6a, -0x1ee6c, 0x1ee72, -0x1ee74, 0x1ee77, -0x1ee79, 0x1ee7c, -0x1ee7e, 0x1ee7e, -0x1ee80, 0x1ee89, -0x1ee8b, 0x1ee9b, -0x1eea1, 0x1eea3, -0x1eea5, 0x1eea9, -0x1eeab, 0x1eebb, -0x1eef0, 0x1eef1, -}; /* END of CR_Arabic */ - -/* PROPERTY: 'Syriac': Script */ -static const OnigCodePoint -CR_Syriac[] = { 3, -0x0700, 0x070d, -0x070f, 0x074a, -0x074d, 0x074f, -}; /* END of CR_Syriac */ - -/* PROPERTY: 'Thaana': Script */ -static const OnigCodePoint -CR_Thaana[] = { 1, -0x0780, 0x07b1, -}; /* END of CR_Thaana */ - -/* PROPERTY: 'Devanagari': Script */ -static const OnigCodePoint -CR_Devanagari[] = { 4, -0x0900, 0x0950, -0x0953, 0x0963, -0x0966, 0x097f, -0xa8e0, 0xa8fd, -}; /* END of CR_Devanagari */ - -/* PROPERTY: 'Bengali': Script */ -static const OnigCodePoint -CR_Bengali[] = { 14, -0x0980, 0x0983, -0x0985, 0x098c, -0x098f, 0x0990, -0x0993, 0x09a8, -0x09aa, 0x09b0, -0x09b2, 0x09b2, -0x09b6, 0x09b9, -0x09bc, 0x09c4, -0x09c7, 0x09c8, -0x09cb, 0x09ce, -0x09d7, 0x09d7, -0x09dc, 0x09dd, -0x09df, 0x09e3, -0x09e6, 0x09fb, -}; /* END of CR_Bengali */ - -/* PROPERTY: 'Gurmukhi': Script */ -static const OnigCodePoint -CR_Gurmukhi[] = { 16, -0x0a01, 0x0a03, -0x0a05, 0x0a0a, -0x0a0f, 0x0a10, -0x0a13, 0x0a28, -0x0a2a, 0x0a30, -0x0a32, 0x0a33, -0x0a35, 0x0a36, -0x0a38, 0x0a39, -0x0a3c, 0x0a3c, -0x0a3e, 0x0a42, -0x0a47, 0x0a48, -0x0a4b, 0x0a4d, -0x0a51, 0x0a51, -0x0a59, 0x0a5c, -0x0a5e, 0x0a5e, -0x0a66, 0x0a75, -}; /* END of CR_Gurmukhi */ - -/* PROPERTY: 'Gujarati': Script */ -static const OnigCodePoint -CR_Gujarati[] = { 14, -0x0a81, 0x0a83, -0x0a85, 0x0a8d, -0x0a8f, 0x0a91, -0x0a93, 0x0aa8, -0x0aaa, 0x0ab0, -0x0ab2, 0x0ab3, -0x0ab5, 0x0ab9, -0x0abc, 0x0ac5, -0x0ac7, 0x0ac9, -0x0acb, 0x0acd, -0x0ad0, 0x0ad0, -0x0ae0, 0x0ae3, -0x0ae6, 0x0af1, -0x0af9, 0x0af9, -}; /* END of CR_Gujarati */ - -/* PROPERTY: 'Oriya': Script */ -static const OnigCodePoint -CR_Oriya[] = { 14, -0x0b01, 0x0b03, -0x0b05, 0x0b0c, -0x0b0f, 0x0b10, -0x0b13, 0x0b28, -0x0b2a, 0x0b30, -0x0b32, 0x0b33, -0x0b35, 0x0b39, -0x0b3c, 0x0b44, -0x0b47, 0x0b48, -0x0b4b, 0x0b4d, -0x0b56, 0x0b57, -0x0b5c, 0x0b5d, -0x0b5f, 0x0b63, -0x0b66, 0x0b77, -}; /* END of CR_Oriya */ - -/* PROPERTY: 'Tamil': Script */ -static const OnigCodePoint -CR_Tamil[] = { 16, -0x0b82, 0x0b83, -0x0b85, 0x0b8a, -0x0b8e, 0x0b90, -0x0b92, 0x0b95, -0x0b99, 0x0b9a, -0x0b9c, 0x0b9c, -0x0b9e, 0x0b9f, -0x0ba3, 0x0ba4, -0x0ba8, 0x0baa, -0x0bae, 0x0bb9, -0x0bbe, 0x0bc2, -0x0bc6, 0x0bc8, -0x0bca, 0x0bcd, -0x0bd0, 0x0bd0, -0x0bd7, 0x0bd7, -0x0be6, 0x0bfa, -}; /* END of CR_Tamil */ - -/* PROPERTY: 'Telugu': Script */ -static const OnigCodePoint -CR_Telugu[] = { 13, -0x0c00, 0x0c03, -0x0c05, 0x0c0c, -0x0c0e, 0x0c10, -0x0c12, 0x0c28, -0x0c2a, 0x0c39, -0x0c3d, 0x0c44, -0x0c46, 0x0c48, -0x0c4a, 0x0c4d, -0x0c55, 0x0c56, -0x0c58, 0x0c5a, -0x0c60, 0x0c63, -0x0c66, 0x0c6f, -0x0c78, 0x0c7f, -}; /* END of CR_Telugu */ - -/* PROPERTY: 'Kannada': Script */ -static const OnigCodePoint -CR_Kannada[] = { 14, -0x0c81, 0x0c83, -0x0c85, 0x0c8c, -0x0c8e, 0x0c90, -0x0c92, 0x0ca8, -0x0caa, 0x0cb3, -0x0cb5, 0x0cb9, -0x0cbc, 0x0cc4, -0x0cc6, 0x0cc8, -0x0cca, 0x0ccd, -0x0cd5, 0x0cd6, -0x0cde, 0x0cde, -0x0ce0, 0x0ce3, -0x0ce6, 0x0cef, -0x0cf1, 0x0cf2, -}; /* END of CR_Kannada */ - -/* PROPERTY: 'Malayalam': Script */ -static const OnigCodePoint -CR_Malayalam[] = { 11, -0x0d01, 0x0d03, -0x0d05, 0x0d0c, -0x0d0e, 0x0d10, -0x0d12, 0x0d3a, -0x0d3d, 0x0d44, -0x0d46, 0x0d48, -0x0d4a, 0x0d4e, -0x0d57, 0x0d57, -0x0d5f, 0x0d63, -0x0d66, 0x0d75, -0x0d79, 0x0d7f, -}; /* END of CR_Malayalam */ - -/* PROPERTY: 'Sinhala': Script */ -static const OnigCodePoint -CR_Sinhala[] = { 13, -0x0d82, 0x0d83, -0x0d85, 0x0d96, -0x0d9a, 0x0db1, -0x0db3, 0x0dbb, -0x0dbd, 0x0dbd, -0x0dc0, 0x0dc6, -0x0dca, 0x0dca, -0x0dcf, 0x0dd4, -0x0dd6, 0x0dd6, -0x0dd8, 0x0ddf, -0x0de6, 0x0def, -0x0df2, 0x0df4, -0x111e1, 0x111f4, -}; /* END of CR_Sinhala */ - -/* PROPERTY: 'Thai': Script */ -static const OnigCodePoint -CR_Thai[] = { 2, -0x0e01, 0x0e3a, -0x0e40, 0x0e5b, -}; /* END of CR_Thai */ - -/* PROPERTY: 'Lao': Script */ -static const OnigCodePoint -CR_Lao[] = { 18, -0x0e81, 0x0e82, -0x0e84, 0x0e84, -0x0e87, 0x0e88, -0x0e8a, 0x0e8a, -0x0e8d, 0x0e8d, -0x0e94, 0x0e97, -0x0e99, 0x0e9f, -0x0ea1, 0x0ea3, -0x0ea5, 0x0ea5, -0x0ea7, 0x0ea7, -0x0eaa, 0x0eab, -0x0ead, 0x0eb9, -0x0ebb, 0x0ebd, -0x0ec0, 0x0ec4, -0x0ec6, 0x0ec6, -0x0ec8, 0x0ecd, -0x0ed0, 0x0ed9, -0x0edc, 0x0edf, -}; /* END of CR_Lao */ - -/* PROPERTY: 'Tibetan': Script */ -static const OnigCodePoint -CR_Tibetan[] = { 7, -0x0f00, 0x0f47, -0x0f49, 0x0f6c, -0x0f71, 0x0f97, -0x0f99, 0x0fbc, -0x0fbe, 0x0fcc, -0x0fce, 0x0fd4, -0x0fd9, 0x0fda, -}; /* END of CR_Tibetan */ - -/* PROPERTY: 'Myanmar': Script */ -static const OnigCodePoint -CR_Myanmar[] = { 3, -0x1000, 0x109f, -0xa9e0, 0xa9fe, -0xaa60, 0xaa7f, -}; /* END of CR_Myanmar */ - -/* PROPERTY: 'Georgian': Script */ -static const OnigCodePoint -CR_Georgian[] = { 8, -0x10a0, 0x10c5, -0x10c7, 0x10c7, -0x10cd, 0x10cd, -0x10d0, 0x10fa, -0x10fc, 0x10ff, -0x2d00, 0x2d25, -0x2d27, 0x2d27, -0x2d2d, 0x2d2d, -}; /* END of CR_Georgian */ - -/* PROPERTY: 'Hangul': Script */ -static const OnigCodePoint -CR_Hangul[] = { 14, -0x1100, 0x11ff, -0x302e, 0x302f, -0x3131, 0x318e, -0x3200, 0x321e, -0x3260, 0x327e, -0xa960, 0xa97c, -0xac00, 0xd7a3, -0xd7b0, 0xd7c6, -0xd7cb, 0xd7fb, -0xffa0, 0xffbe, -0xffc2, 0xffc7, -0xffca, 0xffcf, -0xffd2, 0xffd7, -0xffda, 0xffdc, -}; /* END of CR_Hangul */ - -/* PROPERTY: 'Ethiopic': Script */ -static const OnigCodePoint -CR_Ethiopic[] = { 32, -0x1200, 0x1248, -0x124a, 0x124d, -0x1250, 0x1256, -0x1258, 0x1258, -0x125a, 0x125d, -0x1260, 0x1288, -0x128a, 0x128d, -0x1290, 0x12b0, -0x12b2, 0x12b5, -0x12b8, 0x12be, -0x12c0, 0x12c0, -0x12c2, 0x12c5, -0x12c8, 0x12d6, -0x12d8, 0x1310, -0x1312, 0x1315, -0x1318, 0x135a, -0x135d, 0x137c, -0x1380, 0x1399, -0x2d80, 0x2d96, -0x2da0, 0x2da6, -0x2da8, 0x2dae, -0x2db0, 0x2db6, -0x2db8, 0x2dbe, -0x2dc0, 0x2dc6, -0x2dc8, 0x2dce, -0x2dd0, 0x2dd6, -0x2dd8, 0x2dde, -0xab01, 0xab06, -0xab09, 0xab0e, -0xab11, 0xab16, -0xab20, 0xab26, -0xab28, 0xab2e, -}; /* END of CR_Ethiopic */ - -/* PROPERTY: 'Cherokee': Script */ -static const OnigCodePoint -CR_Cherokee[] = { 3, -0x13a0, 0x13f5, -0x13f8, 0x13fd, -0xab70, 0xabbf, -}; /* END of CR_Cherokee */ - -/* PROPERTY: 'Canadian_Aboriginal': Script */ -static const OnigCodePoint -CR_Canadian_Aboriginal[] = { 2, -0x1400, 0x167f, -0x18b0, 0x18f5, -}; /* END of CR_Canadian_Aboriginal */ - -/* PROPERTY: 'Ogham': Script */ -static const OnigCodePoint -CR_Ogham[] = { 1, -0x1680, 0x169c, -}; /* END of CR_Ogham */ - -/* PROPERTY: 'Runic': Script */ -static const OnigCodePoint -CR_Runic[] = { 2, -0x16a0, 0x16ea, -0x16ee, 0x16f8, -}; /* END of CR_Runic */ - -/* PROPERTY: 'Khmer': Script */ -static const OnigCodePoint -CR_Khmer[] = { 4, -0x1780, 0x17dd, -0x17e0, 0x17e9, -0x17f0, 0x17f9, -0x19e0, 0x19ff, -}; /* END of CR_Khmer */ - -/* PROPERTY: 'Mongolian': Script */ -static const OnigCodePoint -CR_Mongolian[] = { 6, -0x1800, 0x1801, -0x1804, 0x1804, -0x1806, 0x180e, -0x1810, 0x1819, -0x1820, 0x1877, -0x1880, 0x18aa, -}; /* END of CR_Mongolian */ - -/* PROPERTY: 'Hiragana': Script */ -static const OnigCodePoint -CR_Hiragana[] = { 4, -0x3041, 0x3096, -0x309d, 0x309f, -0x1b001, 0x1b001, -0x1f200, 0x1f200, -}; /* END of CR_Hiragana */ - -/* PROPERTY: 'Katakana': Script */ -static const OnigCodePoint -CR_Katakana[] = { 8, -0x30a1, 0x30fa, -0x30fd, 0x30ff, -0x31f0, 0x31ff, -0x32d0, 0x32fe, -0x3300, 0x3357, -0xff66, 0xff6f, -0xff71, 0xff9d, -0x1b000, 0x1b000, -}; /* END of CR_Katakana */ - -/* PROPERTY: 'Bopomofo': Script */ -static const OnigCodePoint -CR_Bopomofo[] = { 3, -0x02ea, 0x02eb, -0x3105, 0x312d, -0x31a0, 0x31ba, -}; /* END of CR_Bopomofo */ - -/* PROPERTY: 'Han': Script */ -static const OnigCodePoint -CR_Han[] = { 16, -0x2e80, 0x2e99, -0x2e9b, 0x2ef3, -0x2f00, 0x2fd5, -0x3005, 0x3005, -0x3007, 0x3007, -0x3021, 0x3029, -0x3038, 0x303b, -0x3400, 0x4db5, -0x4e00, 0x9fd5, -0xf900, 0xfa6d, -0xfa70, 0xfad9, -0x20000, 0x2a6d6, -0x2a700, 0x2b734, -0x2b740, 0x2b81d, -0x2b820, 0x2cea1, -0x2f800, 0x2fa1d, -}; /* END of CR_Han */ -  /* PROPERTY: 'Yi': Script */  static const OnigCodePoint  CR_Yi[] = { 2, @@ -18431,2389 +20778,42 @@ CR_Yi[] = { 2,  0xa490, 0xa4c6,  }; /* END of CR_Yi */ -/* PROPERTY: 'Old_Italic': Script */ -static const OnigCodePoint -CR_Old_Italic[] = { 1, -0x10300, 0x10323, -}; /* END of CR_Old_Italic */ - -/* PROPERTY: 'Gothic': Script */ -static const OnigCodePoint -CR_Gothic[] = { 1, -0x10330, 0x1034a, -}; /* END of CR_Gothic */ - -/* PROPERTY: 'Deseret': Script */ -static const OnigCodePoint -CR_Deseret[] = { 1, -0x10400, 0x1044f, -}; /* END of CR_Deseret */ - -/* PROPERTY: 'Inherited': Script */ -static const OnigCodePoint -CR_Inherited[] = { 27, -0x0300, 0x036f, -0x0485, 0x0486, -0x064b, 0x0655, -0x0670, 0x0670, -0x0951, 0x0952, -0x1ab0, 0x1abe, -0x1cd0, 0x1cd2, -0x1cd4, 0x1ce0, -0x1ce2, 0x1ce8, -0x1ced, 0x1ced, -0x1cf4, 0x1cf4, -0x1cf8, 0x1cf9, -0x1dc0, 0x1df5, -0x1dfc, 0x1dff, -0x200c, 0x200d, -0x20d0, 0x20f0, -0x302a, 0x302d, -0x3099, 0x309a, -0xfe00, 0xfe0f, -0xfe20, 0xfe2d, -0x101fd, 0x101fd, -0x102e0, 0x102e0, -0x1d167, 0x1d169, -0x1d17b, 0x1d182, -0x1d185, 0x1d18b, -0x1d1aa, 0x1d1ad, -0xe0100, 0xe01ef, -}; /* END of CR_Inherited */ - -/* PROPERTY: 'Tagalog': Script */ -static const OnigCodePoint -CR_Tagalog[] = { 2, -0x1700, 0x170c, -0x170e, 0x1714, -}; /* END of CR_Tagalog */ - -/* PROPERTY: 'Hanunoo': Script */ -static const OnigCodePoint -CR_Hanunoo[] = { 1, -0x1720, 0x1734, -}; /* END of CR_Hanunoo */ - -/* PROPERTY: 'Buhid': Script */ -static const OnigCodePoint -CR_Buhid[] = { 1, -0x1740, 0x1753, -}; /* END of CR_Buhid */ - -/* PROPERTY: 'Tagbanwa': Script */ -static const OnigCodePoint -CR_Tagbanwa[] = { 3, -0x1760, 0x176c, -0x176e, 0x1770, -0x1772, 0x1773, -}; /* END of CR_Tagbanwa */ - -/* PROPERTY: 'Limbu': Script */ -static const OnigCodePoint -CR_Limbu[] = { 5, -0x1900, 0x191e, -0x1920, 0x192b, -0x1930, 0x193b, -0x1940, 0x1940, -0x1944, 0x194f, -}; /* END of CR_Limbu */ - -/* PROPERTY: 'Tai_Le': Script */ -static const OnigCodePoint -CR_Tai_Le[] = { 2, -0x1950, 0x196d, -0x1970, 0x1974, -}; /* END of CR_Tai_Le */ - -/* PROPERTY: 'Linear_B': Script */ -static const OnigCodePoint -CR_Linear_B[] = { 7, -0x10000, 0x1000b, -0x1000d, 0x10026, -0x10028, 0x1003a, -0x1003c, 0x1003d, -0x1003f, 0x1004d, -0x10050, 0x1005d, -0x10080, 0x100fa, -}; /* END of CR_Linear_B */ - -/* PROPERTY: 'Ugaritic': Script */ -static const OnigCodePoint -CR_Ugaritic[] = { 2, -0x10380, 0x1039d, -0x1039f, 0x1039f, -}; /* END of CR_Ugaritic */ - -/* PROPERTY: 'Shavian': Script */ -static const OnigCodePoint -CR_Shavian[] = { 1, -0x10450, 0x1047f, -}; /* END of CR_Shavian */ - -/* PROPERTY: 'Osmanya': Script */ -static const OnigCodePoint -CR_Osmanya[] = { 2, -0x10480, 0x1049d, -0x104a0, 0x104a9, -}; /* END of CR_Osmanya */ - -/* PROPERTY: 'Cypriot': Script */ -static const OnigCodePoint -CR_Cypriot[] = { 6, -0x10800, 0x10805, -0x10808, 0x10808, -0x1080a, 0x10835, -0x10837, 0x10838, -0x1083c, 0x1083c, -0x1083f, 0x1083f, -}; /* END of CR_Cypriot */ - -/* PROPERTY: 'Braille': Script */ -static const OnigCodePoint -CR_Braille[] = { 1, -0x2800, 0x28ff, -}; /* END of CR_Braille */ - -/* PROPERTY: 'Buginese': Script */ -static const OnigCodePoint -CR_Buginese[] = { 2, -0x1a00, 0x1a1b, -0x1a1e, 0x1a1f, -}; /* END of CR_Buginese */ - -/* PROPERTY: 'Coptic': Script */ -static const OnigCodePoint -CR_Coptic[] = { 3, -0x03e2, 0x03ef, -0x2c80, 0x2cf3, -0x2cf9, 0x2cff, -}; /* END of CR_Coptic */ - -/* PROPERTY: 'New_Tai_Lue': Script */ -static const OnigCodePoint -CR_New_Tai_Lue[] = { 4, -0x1980, 0x19ab, -0x19b0, 0x19c9, -0x19d0, 0x19da, -0x19de, 0x19df, -}; /* END of CR_New_Tai_Lue */ - -/* PROPERTY: 'Glagolitic': Script */ -static const OnigCodePoint -CR_Glagolitic[] = { 2, -0x2c00, 0x2c2e, -0x2c30, 0x2c5e, -}; /* END of CR_Glagolitic */ - -/* PROPERTY: 'Tifinagh': Script */ -static const OnigCodePoint -CR_Tifinagh[] = { 3, -0x2d30, 0x2d67, -0x2d6f, 0x2d70, -0x2d7f, 0x2d7f, -}; /* END of CR_Tifinagh */ - -/* PROPERTY: 'Syloti_Nagri': Script */ -static const OnigCodePoint -CR_Syloti_Nagri[] = { 1, -0xa800, 0xa82b, -}; /* END of CR_Syloti_Nagri */ - -/* PROPERTY: 'Old_Persian': Script */ -static const OnigCodePoint -CR_Old_Persian[] = { 2, -0x103a0, 0x103c3, -0x103c8, 0x103d5, -}; /* END of CR_Old_Persian */ - -/* PROPERTY: 'Kharoshthi': Script */ -static const OnigCodePoint -CR_Kharoshthi[] = { 8, -0x10a00, 0x10a03, -0x10a05, 0x10a06, -0x10a0c, 0x10a13, -0x10a15, 0x10a17, -0x10a19, 0x10a33, -0x10a38, 0x10a3a, -0x10a3f, 0x10a47, -0x10a50, 0x10a58, -}; /* END of CR_Kharoshthi */ - -/* PROPERTY: 'Balinese': Script */ -static const OnigCodePoint -CR_Balinese[] = { 2, -0x1b00, 0x1b4b, -0x1b50, 0x1b7c, -}; /* END of CR_Balinese */ - -/* PROPERTY: 'Cuneiform': Script */ -static const OnigCodePoint -CR_Cuneiform[] = { 4, -0x12000, 0x12399, -0x12400, 0x1246e, -0x12470, 0x12474, -0x12480, 0x12543, -}; /* END of CR_Cuneiform */ - -/* PROPERTY: 'Phoenician': Script */ -static const OnigCodePoint -CR_Phoenician[] = { 2, -0x10900, 0x1091b, -0x1091f, 0x1091f, -}; /* END of CR_Phoenician */ - -/* PROPERTY: 'Phags_Pa': Script */ -static const OnigCodePoint -CR_Phags_Pa[] = { 1, -0xa840, 0xa877, -}; /* END of CR_Phags_Pa */ - -/* PROPERTY: 'Nko': Script */ -static const OnigCodePoint -CR_Nko[] = { 1, -0x07c0, 0x07fa, -}; /* END of CR_Nko */ - -/* PROPERTY: 'Sundanese': Script */ -static const OnigCodePoint -CR_Sundanese[] = { 2, -0x1b80, 0x1bbf, -0x1cc0, 0x1cc7, -}; /* END of CR_Sundanese */ - -/* PROPERTY: 'Lepcha': Script */ -static const OnigCodePoint -CR_Lepcha[] = { 3, -0x1c00, 0x1c37, -0x1c3b, 0x1c49, -0x1c4d, 0x1c4f, -}; /* END of CR_Lepcha */ - -/* PROPERTY: 'Ol_Chiki': Script */ -static const OnigCodePoint -CR_Ol_Chiki[] = { 1, -0x1c50, 0x1c7f, -}; /* END of CR_Ol_Chiki */ - -/* PROPERTY: 'Vai': Script */ -static const OnigCodePoint -CR_Vai[] = { 1, -0xa500, 0xa62b, -}; /* END of CR_Vai */ - -/* PROPERTY: 'Saurashtra': Script */ -static const OnigCodePoint -CR_Saurashtra[] = { 2, -0xa880, 0xa8c4, -0xa8ce, 0xa8d9, -}; /* END of CR_Saurashtra */ - -/* PROPERTY: 'Kayah_Li': Script */ -static const OnigCodePoint -CR_Kayah_Li[] = { 2, -0xa900, 0xa92d, -0xa92f, 0xa92f, -}; /* END of CR_Kayah_Li */ - -/* PROPERTY: 'Rejang': Script */ -static const OnigCodePoint -CR_Rejang[] = { 2, -0xa930, 0xa953, -0xa95f, 0xa95f, -}; /* END of CR_Rejang */ - -/* PROPERTY: 'Lycian': Script */ -static const OnigCodePoint -CR_Lycian[] = { 1, -0x10280, 0x1029c, -}; /* END of CR_Lycian */ - -/* PROPERTY: 'Carian': Script */ -static const OnigCodePoint -CR_Carian[] = { 1, -0x102a0, 0x102d0, -}; /* END of CR_Carian */ - -/* PROPERTY: 'Lydian': Script */ -static const OnigCodePoint -CR_Lydian[] = { 2, -0x10920, 0x10939, -0x1093f, 0x1093f, -}; /* END of CR_Lydian */ - -/* PROPERTY: 'Cham': Script */ -static const OnigCodePoint -CR_Cham[] = { 4, -0xaa00, 0xaa36, -0xaa40, 0xaa4d, -0xaa50, 0xaa59, -0xaa5c, 0xaa5f, -}; /* END of CR_Cham */ - -/* PROPERTY: 'Tai_Tham': Script */ -static const OnigCodePoint -CR_Tai_Tham[] = { 5, -0x1a20, 0x1a5e, -0x1a60, 0x1a7c, -0x1a7f, 0x1a89, -0x1a90, 0x1a99, -0x1aa0, 0x1aad, -}; /* END of CR_Tai_Tham */ - -/* PROPERTY: 'Tai_Viet': Script */ -static const OnigCodePoint -CR_Tai_Viet[] = { 2, -0xaa80, 0xaac2, -0xaadb, 0xaadf, -}; /* END of CR_Tai_Viet */ - -/* PROPERTY: 'Avestan': Script */ -static const OnigCodePoint -CR_Avestan[] = { 2, -0x10b00, 0x10b35, -0x10b39, 0x10b3f, -}; /* END of CR_Avestan */ - -/* PROPERTY: 'Egyptian_Hieroglyphs': Script */ -static const OnigCodePoint -CR_Egyptian_Hieroglyphs[] = { 1, -0x13000, 0x1342e, -}; /* END of CR_Egyptian_Hieroglyphs */ - -/* PROPERTY: 'Samaritan': Script */ -static const OnigCodePoint -CR_Samaritan[] = { 2, -0x0800, 0x082d, -0x0830, 0x083e, -}; /* END of CR_Samaritan */ - -/* PROPERTY: 'Lisu': Script */ -static const OnigCodePoint -CR_Lisu[] = { 1, -0xa4d0, 0xa4ff, -}; /* END of CR_Lisu */ - -/* PROPERTY: 'Bamum': Script */ -static const OnigCodePoint -CR_Bamum[] = { 2, -0xa6a0, 0xa6f7, -0x16800, 0x16a38, -}; /* END of CR_Bamum */ - -/* PROPERTY: 'Javanese': Script */ -static const OnigCodePoint -CR_Javanese[] = { 3, -0xa980, 0xa9cd, -0xa9d0, 0xa9d9, -0xa9de, 0xa9df, -}; /* END of CR_Javanese */ - -/* PROPERTY: 'Meetei_Mayek': Script */ -static const OnigCodePoint -CR_Meetei_Mayek[] = { 3, -0xaae0, 0xaaf6, -0xabc0, 0xabed, -0xabf0, 0xabf9, -}; /* END of CR_Meetei_Mayek */ - -/* PROPERTY: 'Imperial_Aramaic': Script */ -static const OnigCodePoint -CR_Imperial_Aramaic[] = { 2, -0x10840, 0x10855, -0x10857, 0x1085f, -}; /* END of CR_Imperial_Aramaic */ - -/* PROPERTY: 'Old_South_Arabian': Script */ -static const OnigCodePoint -CR_Old_South_Arabian[] = { 1, -0x10a60, 0x10a7f, -}; /* END of CR_Old_South_Arabian */ - -/* PROPERTY: 'Inscriptional_Parthian': Script */ -static const OnigCodePoint -CR_Inscriptional_Parthian[] = { 2, -0x10b40, 0x10b55, -0x10b58, 0x10b5f, -}; /* END of CR_Inscriptional_Parthian */ - -/* PROPERTY: 'Inscriptional_Pahlavi': Script */ -static const OnigCodePoint -CR_Inscriptional_Pahlavi[] = { 2, -0x10b60, 0x10b72, -0x10b78, 0x10b7f, -}; /* END of CR_Inscriptional_Pahlavi */ - -/* PROPERTY: 'Old_Turkic': Script */ -static const OnigCodePoint -CR_Old_Turkic[] = { 1, -0x10c00, 0x10c48, -}; /* END of CR_Old_Turkic */ - -/* PROPERTY: 'Kaithi': Script */ -static const OnigCodePoint -CR_Kaithi[] = { 1, -0x11080, 0x110c1, -}; /* END of CR_Kaithi */ - -/* PROPERTY: 'Batak': Script */ -static const OnigCodePoint -CR_Batak[] = { 2, -0x1bc0, 0x1bf3, -0x1bfc, 0x1bff, -}; /* END of CR_Batak */ - -/* PROPERTY: 'Brahmi': Script */ -static const OnigCodePoint -CR_Brahmi[] = { 3, -0x11000, 0x1104d, -0x11052, 0x1106f, -0x1107f, 0x1107f, -}; /* END of CR_Brahmi */ - -/* PROPERTY: 'Mandaic': Script */ -static const OnigCodePoint -CR_Mandaic[] = { 2, -0x0840, 0x085b, -0x085e, 0x085e, -}; /* END of CR_Mandaic */ - -/* PROPERTY: 'Chakma': Script */ -static const OnigCodePoint -CR_Chakma[] = { 2, -0x11100, 0x11134, -0x11136, 0x11143, -}; /* END of CR_Chakma */ - -/* PROPERTY: 'Meroitic_Cursive': Script */ -static const OnigCodePoint -CR_Meroitic_Cursive[] = { 3, -0x109a0, 0x109b7, -0x109bc, 0x109cf, -0x109d2, 0x109ff, -}; /* END of CR_Meroitic_Cursive */ - -/* PROPERTY: 'Meroitic_Hieroglyphs': Script */ -static const OnigCodePoint -CR_Meroitic_Hieroglyphs[] = { 1, -0x10980, 0x1099f, -}; /* END of CR_Meroitic_Hieroglyphs */ - -/* PROPERTY: 'Miao': Script */ -static const OnigCodePoint -CR_Miao[] = { 3, -0x16f00, 0x16f44, -0x16f50, 0x16f7e, -0x16f8f, 0x16f9f, -}; /* END of CR_Miao */ - -/* PROPERTY: 'Sharada': Script */ -static const OnigCodePoint -CR_Sharada[] = { 2, -0x11180, 0x111cd, -0x111d0, 0x111df, -}; /* END of CR_Sharada */ - -/* PROPERTY: 'Sora_Sompeng': Script */ -static const OnigCodePoint -CR_Sora_Sompeng[] = { 2, -0x110d0, 0x110e8, -0x110f0, 0x110f9, -}; /* END of CR_Sora_Sompeng */ - -/* PROPERTY: 'Takri': Script */ -static const OnigCodePoint -CR_Takri[] = { 2, -0x11680, 0x116b7, -0x116c0, 0x116c9, -}; /* END of CR_Takri */ - -/* PROPERTY: 'Caucasian_Albanian': Script */ -static const OnigCodePoint -CR_Caucasian_Albanian[] = { 2, -0x10530, 0x10563, -0x1056f, 0x1056f, -}; /* END of CR_Caucasian_Albanian */ - -/* PROPERTY: 'Bassa_Vah': Script */ -static const OnigCodePoint -CR_Bassa_Vah[] = { 2, -0x16ad0, 0x16aed, -0x16af0, 0x16af5, -}; /* END of CR_Bassa_Vah */ - -/* PROPERTY: 'Duployan': Script */ -static const OnigCodePoint -CR_Duployan[] = { 5, -0x1bc00, 0x1bc6a, -0x1bc70, 0x1bc7c, -0x1bc80, 0x1bc88, -0x1bc90, 0x1bc99, -0x1bc9c, 0x1bc9f, -}; /* END of CR_Duployan */ - -/* PROPERTY: 'Elbasan': Script */ -static const OnigCodePoint -CR_Elbasan[] = { 1, -0x10500, 0x10527, -}; /* END of CR_Elbasan */ - -/* PROPERTY: 'Grantha': Script */ -static const OnigCodePoint -CR_Grantha[] = { 15, -0x11300, 0x11303, -0x11305, 0x1130c, -0x1130f, 0x11310, -0x11313, 0x11328, -0x1132a, 0x11330, -0x11332, 0x11333, -0x11335, 0x11339, -0x1133c, 0x11344, -0x11347, 0x11348, -0x1134b, 0x1134d, -0x11350, 0x11350, -0x11357, 0x11357, -0x1135d, 0x11363, -0x11366, 0x1136c, -0x11370, 0x11374, -}; /* END of CR_Grantha */ - -/* PROPERTY: 'Pahawh_Hmong': Script */ -static const OnigCodePoint -CR_Pahawh_Hmong[] = { 5, -0x16b00, 0x16b45, -0x16b50, 0x16b59, -0x16b5b, 0x16b61, -0x16b63, 0x16b77, -0x16b7d, 0x16b8f, -}; /* END of CR_Pahawh_Hmong */ - -/* PROPERTY: 'Khojki': Script */ -static const OnigCodePoint -CR_Khojki[] = { 2, -0x11200, 0x11211, -0x11213, 0x1123d, -}; /* END of CR_Khojki */ - -/* PROPERTY: 'Linear_A': Script */ -static const OnigCodePoint -CR_Linear_A[] = { 3, -0x10600, 0x10736, -0x10740, 0x10755, -0x10760, 0x10767, -}; /* END of CR_Linear_A */ - -/* PROPERTY: 'Mahajani': Script */ -static const OnigCodePoint -CR_Mahajani[] = { 1, -0x11150, 0x11176, -}; /* END of CR_Mahajani */ - -/* PROPERTY: 'Manichaean': Script */ -static const OnigCodePoint -CR_Manichaean[] = { 2, -0x10ac0, 0x10ae6, -0x10aeb, 0x10af6, -}; /* END of CR_Manichaean */ - -/* PROPERTY: 'Mende_Kikakui': Script */ -static const OnigCodePoint -CR_Mende_Kikakui[] = { 2, -0x1e800, 0x1e8c4, -0x1e8c7, 0x1e8d6, -}; /* END of CR_Mende_Kikakui */ - -/* PROPERTY: 'Modi': Script */ -static const OnigCodePoint -CR_Modi[] = { 2, -0x11600, 0x11644, -0x11650, 0x11659, -}; /* END of CR_Modi */ - -/* PROPERTY: 'Mro': Script */ -static const OnigCodePoint -CR_Mro[] = { 3, -0x16a40, 0x16a5e, -0x16a60, 0x16a69, -0x16a6e, 0x16a6f, -}; /* END of CR_Mro */ - -/* PROPERTY: 'Old_North_Arabian': Script */ -static const OnigCodePoint -CR_Old_North_Arabian[] = { 1, -0x10a80, 0x10a9f, -}; /* END of CR_Old_North_Arabian */ - -/* PROPERTY: 'Nabataean': Script */ -static const OnigCodePoint -CR_Nabataean[] = { 2, -0x10880, 0x1089e, -0x108a7, 0x108af, -}; /* END of CR_Nabataean */ - -/* PROPERTY: 'Palmyrene': Script */ -static const OnigCodePoint -CR_Palmyrene[] = { 1, -0x10860, 0x1087f, -}; /* END of CR_Palmyrene */ - -/* PROPERTY: 'Pau_Cin_Hau': Script */ -static const OnigCodePoint -CR_Pau_Cin_Hau[] = { 1, -0x11ac0, 0x11af8, -}; /* END of CR_Pau_Cin_Hau */ - -/* PROPERTY: 'Old_Permic': Script */ -static const OnigCodePoint -CR_Old_Permic[] = { 1, -0x10350, 0x1037a, -}; /* END of CR_Old_Permic */ - -/* PROPERTY: 'Psalter_Pahlavi': Script */ -static const OnigCodePoint -CR_Psalter_Pahlavi[] = { 3, -0x10b80, 0x10b91, -0x10b99, 0x10b9c, -0x10ba9, 0x10baf, -}; /* END of CR_Psalter_Pahlavi */ - -/* PROPERTY: 'Siddham': Script */ -static const OnigCodePoint -CR_Siddham[] = { 2, -0x11580, 0x115b5, -0x115b8, 0x115dd, -}; /* END of CR_Siddham */ - -/* PROPERTY: 'Khudawadi': Script */ -static const OnigCodePoint -CR_Khudawadi[] = { 2, -0x112b0, 0x112ea, -0x112f0, 0x112f9, -}; /* END of CR_Khudawadi */ - -/* PROPERTY: 'Tirhuta': Script */ -static const OnigCodePoint -CR_Tirhuta[] = { 2, -0x11480, 0x114c7, -0x114d0, 0x114d9, -}; /* END of CR_Tirhuta */ - -/* PROPERTY: 'Warang_Citi': Script */ -static const OnigCodePoint -CR_Warang_Citi[] = { 2, -0x118a0, 0x118f2, -0x118ff, 0x118ff, -}; /* END of CR_Warang_Citi */ - -/* PROPERTY: 'Ahom': Script */ -static const OnigCodePoint -CR_Ahom[] = { 3, -0x11700, 0x11719, -0x1171d, 0x1172b, -0x11730, 0x1173f, -}; /* END of CR_Ahom */ - -/* PROPERTY: 'Anatolian_Hieroglyphs': Script */ -static const OnigCodePoint -CR_Anatolian_Hieroglyphs[] = { 1, -0x14400, 0x14646, -}; /* END of CR_Anatolian_Hieroglyphs */ - -/* PROPERTY: 'Hatran': Script */ -static const OnigCodePoint -CR_Hatran[] = { 3, -0x108e0, 0x108f2, -0x108f4, 0x108f5, -0x108fb, 0x108ff, -}; /* END of CR_Hatran */ - -/* PROPERTY: 'Multani': Script */ -static const OnigCodePoint -CR_Multani[] = { 5, -0x11280, 0x11286, -0x11288, 0x11288, -0x1128a, 0x1128d, -0x1128f, 0x1129d, -0x1129f, 0x112a9, -}; /* END of CR_Multani */ - -/* PROPERTY: 'Old_Hungarian': Script */ -static const OnigCodePoint -CR_Old_Hungarian[] = { 3, -0x10c80, 0x10cb2, -0x10cc0, 0x10cf2, -0x10cfa, 0x10cff, -}; /* END of CR_Old_Hungarian */ - -/* PROPERTY: 'SignWriting': Script */ -static const OnigCodePoint -CR_SignWriting[] = { 3, -0x1d800, 0x1da8b, -0x1da9b, 0x1da9f, -0x1daa1, 0x1daaf, -}; /* END of CR_SignWriting */ - -/* PROPERTY: 'White_Space': Binary Property */ -#define CR_White_Space CR_Space - -/* PROPERTY: 'Bidi_Control': Binary Property */ -static const OnigCodePoint -CR_Bidi_Control[] = { 4, -0x061c, 0x061c, -0x200e, 0x200f, -0x202a, 0x202e, -0x2066, 0x2069, -}; /* END of CR_Bidi_Control */ - -/* PROPERTY: 'Join_Control': Binary Property */ -static const OnigCodePoint -CR_Join_Control[] = { 1, -0x200c, 0x200d, -}; /* END of CR_Join_Control */ - -/* PROPERTY: 'Dash': Binary Property */ -static const OnigCodePoint -CR_Dash[] = { 21, -0x002d, 0x002d, -0x058a, 0x058a, -0x05be, 0x05be, -0x1400, 0x1400, -0x1806, 0x1806, -0x2010, 0x2015, -0x2053, 0x2053, -0x207b, 0x207b, -0x208b, 0x208b, -0x2212, 0x2212, -0x2e17, 0x2e17, -0x2e1a, 0x2e1a, -0x2e3a, 0x2e3b, -0x2e40, 0x2e40, -0x301c, 0x301c, -0x3030, 0x3030, -0x30a0, 0x30a0, -0xfe31, 0xfe32, -0xfe58, 0xfe58, -0xfe63, 0xfe63, -0xff0d, 0xff0d, -}; /* END of CR_Dash */ - -/* PROPERTY: 'Hyphen': Binary Property */ -static const OnigCodePoint -CR_Hyphen[] = { 10, -0x002d, 0x002d, -0x00ad, 0x00ad, -0x058a, 0x058a, -0x1806, 0x1806, -0x2010, 0x2011, -0x2e17, 0x2e17, -0x30fb, 0x30fb, -0xfe63, 0xfe63, -0xff0d, 0xff0d, -0xff65, 0xff65, -}; /* END of CR_Hyphen */ - -/* PROPERTY: 'Quotation_Mark': Binary Property */ -static const OnigCodePoint -CR_Quotation_Mark[] = { 13, -0x0022, 0x0022, -0x0027, 0x0027, -0x00ab, 0x00ab, -0x00bb, 0x00bb, -0x2018, 0x201f, -0x2039, 0x203a, -0x2e42, 0x2e42, -0x300c, 0x300f, -0x301d, 0x301f, -0xfe41, 0xfe44, -0xff02, 0xff02, -0xff07, 0xff07, -0xff62, 0xff63, -}; /* END of CR_Quotation_Mark */ - -/* PROPERTY: 'Terminal_Punctuation': Binary Property */ -static const OnigCodePoint -CR_Terminal_Punctuation[] = { 90, -0x0021, 0x0021, -0x002c, 0x002c, -0x002e, 0x002e, -0x003a, 0x003b, -0x003f, 0x003f, -0x037e, 0x037e, -0x0387, 0x0387, -0x0589, 0x0589, -0x05c3, 0x05c3, -0x060c, 0x060c, -0x061b, 0x061b, -0x061f, 0x061f, -0x06d4, 0x06d4, -0x0700, 0x070a, -0x070c, 0x070c, -0x07f8, 0x07f9, -0x0830, 0x083e, -0x085e, 0x085e, -0x0964, 0x0965, -0x0e5a, 0x0e5b, -0x0f08, 0x0f08, -0x0f0d, 0x0f12, -0x104a, 0x104b, -0x1361, 0x1368, -0x166d, 0x166e, -0x16eb, 0x16ed, -0x1735, 0x1736, -0x17d4, 0x17d6, -0x17da, 0x17da, -0x1802, 0x1805, -0x1808, 0x1809, -0x1944, 0x1945, -0x1aa8, 0x1aab, -0x1b5a, 0x1b5b, -0x1b5d, 0x1b5f, -0x1c3b, 0x1c3f, -0x1c7e, 0x1c7f, -0x203c, 0x203d, -0x2047, 0x2049, -0x2e2e, 0x2e2e, -0x2e3c, 0x2e3c, -0x2e41, 0x2e41, -0x3001, 0x3002, -0xa4fe, 0xa4ff, -0xa60d, 0xa60f, -0xa6f3, 0xa6f7, -0xa876, 0xa877, -0xa8ce, 0xa8cf, -0xa92f, 0xa92f, -0xa9c7, 0xa9c9, -0xaa5d, 0xaa5f, -0xaadf, 0xaadf, -0xaaf0, 0xaaf1, -0xabeb, 0xabeb, -0xfe50, 0xfe52, -0xfe54, 0xfe57, -0xff01, 0xff01, -0xff0c, 0xff0c, -0xff0e, 0xff0e, -0xff1a, 0xff1b, -0xff1f, 0xff1f, -0xff61, 0xff61, -0xff64, 0xff64, -0x1039f, 0x1039f, -0x103d0, 0x103d0, -0x10857, 0x10857, -0x1091f, 0x1091f, -0x10a56, 0x10a57, -0x10af0, 0x10af5, -0x10b3a, 0x10b3f, -0x10b99, 0x10b9c, -0x11047, 0x1104d, -0x110be, 0x110c1, -0x11141, 0x11143, -0x111c5, 0x111c6, -0x111cd, 0x111cd, -0x111de, 0x111df, -0x11238, 0x1123c, -0x112a9, 0x112a9, -0x115c2, 0x115c5, -0x115c9, 0x115d7, -0x11641, 0x11642, -0x1173c, 0x1173e, -0x12470, 0x12474, -0x16a6e, 0x16a6f, -0x16af5, 0x16af5, -0x16b37, 0x16b39, -0x16b44, 0x16b44, -0x1bc9f, 0x1bc9f, -0x1da87, 0x1da8a, -}; /* END of CR_Terminal_Punctuation */ - -/* PROPERTY: 'Other_Math': Binary Property */ -static const OnigCodePoint -CR_Other_Math[] = { 134, -0x005e, 0x005e, -0x03d0, 0x03d2, -0x03d5, 0x03d5, -0x03f0, 0x03f1, -0x03f4, 0x03f5, -0x2016, 0x2016, -0x2032, 0x2034, -0x2040, 0x2040, -0x2061, 0x2064, -0x207d, 0x207e, -0x208d, 0x208e, -0x20d0, 0x20dc, -0x20e1, 0x20e1, -0x20e5, 0x20e6, -0x20eb, 0x20ef, -0x2102, 0x2102, -0x2107, 0x2107, -0x210a, 0x2113, -0x2115, 0x2115, -0x2119, 0x211d, -0x2124, 0x2124, -0x2128, 0x2129, -0x212c, 0x212d, -0x212f, 0x2131, -0x2133, 0x2138, -0x213c, 0x213f, -0x2145, 0x2149, -0x2195, 0x2199, -0x219c, 0x219f, -0x21a1, 0x21a2, -0x21a4, 0x21a5, -0x21a7, 0x21a7, -0x21a9, 0x21ad, -0x21b0, 0x21b1, -0x21b6, 0x21b7, -0x21bc, 0x21cd, -0x21d0, 0x21d1, -0x21d3, 0x21d3, -0x21d5, 0x21db, -0x21dd, 0x21dd, -0x21e4, 0x21e5, -0x2308, 0x230b, -0x23b4, 0x23b5, -0x23b7, 0x23b7, -0x23d0, 0x23d0, -0x23e2, 0x23e2, -0x25a0, 0x25a1, -0x25ae, 0x25b6, -0x25bc, 0x25c0, -0x25c6, 0x25c7, -0x25ca, 0x25cb, -0x25cf, 0x25d3, -0x25e2, 0x25e2, -0x25e4, 0x25e4, -0x25e7, 0x25ec, -0x2605, 0x2606, -0x2640, 0x2640, -0x2642, 0x2642, -0x2660, 0x2663, -0x266d, 0x266e, -0x27c5, 0x27c6, -0x27e6, 0x27ef, -0x2983, 0x2998, -0x29d8, 0x29db, -0x29fc, 0x29fd, -0xfe61, 0xfe61, -0xfe63, 0xfe63, -0xfe68, 0xfe68, -0xff3c, 0xff3c, -0xff3e, 0xff3e, -0x1d400, 0x1d454, -0x1d456, 0x1d49c, -0x1d49e, 0x1d49f, -0x1d4a2, 0x1d4a2, -0x1d4a5, 0x1d4a6, -0x1d4a9, 0x1d4ac, -0x1d4ae, 0x1d4b9, -0x1d4bb, 0x1d4bb, -0x1d4bd, 0x1d4c3, -0x1d4c5, 0x1d505, -0x1d507, 0x1d50a, -0x1d50d, 0x1d514, -0x1d516, 0x1d51c, -0x1d51e, 0x1d539, -0x1d53b, 0x1d53e, -0x1d540, 0x1d544, -0x1d546, 0x1d546, -0x1d54a, 0x1d550, -0x1d552, 0x1d6a5, -0x1d6a8, 0x1d6c0, -0x1d6c2, 0x1d6da, -0x1d6dc, 0x1d6fa, -0x1d6fc, 0x1d714, -0x1d716, 0x1d734, -0x1d736, 0x1d74e, -0x1d750, 0x1d76e, -0x1d770, 0x1d788, -0x1d78a, 0x1d7a8, -0x1d7aa, 0x1d7c2, -0x1d7c4, 0x1d7cb, -0x1d7ce, 0x1d7ff, -0x1ee00, 0x1ee03, -0x1ee05, 0x1ee1f, -0x1ee21, 0x1ee22, -0x1ee24, 0x1ee24, -0x1ee27, 0x1ee27, -0x1ee29, 0x1ee32, -0x1ee34, 0x1ee37, -0x1ee39, 0x1ee39, -0x1ee3b, 0x1ee3b, -0x1ee42, 0x1ee42, -0x1ee47, 0x1ee47, -0x1ee49, 0x1ee49, -0x1ee4b, 0x1ee4b, -0x1ee4d, 0x1ee4f, -0x1ee51, 0x1ee52, -0x1ee54, 0x1ee54, -0x1ee57, 0x1ee57, -0x1ee59, 0x1ee59, -0x1ee5b, 0x1ee5b, -0x1ee5d, 0x1ee5d, -0x1ee5f, 0x1ee5f, -0x1ee61, 0x1ee62, -0x1ee64, 0x1ee64, -0x1ee67, 0x1ee6a, -0x1ee6c, 0x1ee72, -0x1ee74, 0x1ee77, -0x1ee79, 0x1ee7c, -0x1ee7e, 0x1ee7e, -0x1ee80, 0x1ee89, -0x1ee8b, 0x1ee9b, -0x1eea1, 0x1eea3, -0x1eea5, 0x1eea9, -0x1eeab, 0x1eebb, -}; /* END of CR_Other_Math */ - -/* PROPERTY: 'Hex_Digit': Binary Property */ -static const OnigCodePoint -CR_Hex_Digit[] = { 6, -0x0030, 0x0039, -0x0041, 0x0046, -0x0061, 0x0066, -0xff10, 0xff19, -0xff21, 0xff26, -0xff41, 0xff46, -}; /* END of CR_Hex_Digit */ - -/* PROPERTY: 'ASCII_Hex_Digit': Binary Property */ -#define CR_ASCII_Hex_Digit CR_XDigit - -/* PROPERTY: 'Other_Alphabetic': Binary Property */ -static const OnigCodePoint -CR_Other_Alphabetic[] = { 178, -0x0345, 0x0345, -0x05b0, 0x05bd, -0x05bf, 0x05bf, -0x05c1, 0x05c2, -0x05c4, 0x05c5, -0x05c7, 0x05c7, -0x0610, 0x061a, -0x064b, 0x0657, -0x0659, 0x065f, -0x0670, 0x0670, -0x06d6, 0x06dc, -0x06e1, 0x06e4, -0x06e7, 0x06e8, -0x06ed, 0x06ed, -0x0711, 0x0711, -0x0730, 0x073f, -0x07a6, 0x07b0, -0x0816, 0x0817, -0x081b, 0x0823, -0x0825, 0x0827, -0x0829, 0x082c, -0x08e3, 0x08e9, -0x08f0, 0x0903, -0x093a, 0x093b, -0x093e, 0x094c, -0x094e, 0x094f, -0x0955, 0x0957, -0x0962, 0x0963, -0x0981, 0x0983, -0x09be, 0x09c4, -0x09c7, 0x09c8, -0x09cb, 0x09cc, -0x09d7, 0x09d7, -0x09e2, 0x09e3, -0x0a01, 0x0a03, -0x0a3e, 0x0a42, -0x0a47, 0x0a48, -0x0a4b, 0x0a4c, -0x0a51, 0x0a51, -0x0a70, 0x0a71, -0x0a75, 0x0a75, -0x0a81, 0x0a83, -0x0abe, 0x0ac5, -0x0ac7, 0x0ac9, -0x0acb, 0x0acc, -0x0ae2, 0x0ae3, -0x0b01, 0x0b03, -0x0b3e, 0x0b44, -0x0b47, 0x0b48, -0x0b4b, 0x0b4c, -0x0b56, 0x0b57, -0x0b62, 0x0b63, -0x0b82, 0x0b82, -0x0bbe, 0x0bc2, -0x0bc6, 0x0bc8, -0x0bca, 0x0bcc, -0x0bd7, 0x0bd7, -0x0c00, 0x0c03, -0x0c3e, 0x0c44, -0x0c46, 0x0c48, -0x0c4a, 0x0c4c, -0x0c55, 0x0c56, -0x0c62, 0x0c63, -0x0c81, 0x0c83, -0x0cbe, 0x0cc4, -0x0cc6, 0x0cc8, -0x0cca, 0x0ccc, -0x0cd5, 0x0cd6, -0x0ce2, 0x0ce3, -0x0d01, 0x0d03, -0x0d3e, 0x0d44, -0x0d46, 0x0d48, -0x0d4a, 0x0d4c, -0x0d57, 0x0d57, -0x0d62, 0x0d63, -0x0d82, 0x0d83, -0x0dcf, 0x0dd4, -0x0dd6, 0x0dd6, -0x0dd8, 0x0ddf, -0x0df2, 0x0df3, -0x0e31, 0x0e31, -0x0e34, 0x0e3a, -0x0e4d, 0x0e4d, -0x0eb1, 0x0eb1, -0x0eb4, 0x0eb9, -0x0ebb, 0x0ebc, -0x0ecd, 0x0ecd, -0x0f71, 0x0f81, -0x0f8d, 0x0f97, -0x0f99, 0x0fbc, -0x102b, 0x1036, -0x1038, 0x1038, -0x103b, 0x103e, -0x1056, 0x1059, -0x105e, 0x1060, -0x1062, 0x1062, -0x1067, 0x1068, -0x1071, 0x1074, -0x1082, 0x1086, -0x109c, 0x109d, -0x135f, 0x135f, -0x1712, 0x1713, -0x1732, 0x1733, -0x1752, 0x1753, -0x1772, 0x1773, -0x17b6, 0x17c8, -0x18a9, 0x18a9, -0x1920, 0x192b, -0x1930, 0x1938, -0x1a17, 0x1a1b, -0x1a55, 0x1a5e, -0x1a61, 0x1a74, -0x1b00, 0x1b04, -0x1b35, 0x1b43, -0x1b80, 0x1b82, -0x1ba1, 0x1ba9, -0x1bac, 0x1bad, -0x1be7, 0x1bf1, -0x1c24, 0x1c35, -0x1cf2, 0x1cf3, -0x1de7, 0x1df4, -0x24b6, 0x24e9, -0x2de0, 0x2dff, -0xa674, 0xa67b, -0xa69e, 0xa69f, -0xa823, 0xa827, -0xa880, 0xa881, -0xa8b4, 0xa8c3, -0xa926, 0xa92a, -0xa947, 0xa952, -0xa980, 0xa983, -0xa9b4, 0xa9bf, -0xaa29, 0xaa36, -0xaa43, 0xaa43, -0xaa4c, 0xaa4d, -0xaab0, 0xaab0, -0xaab2, 0xaab4, -0xaab7, 0xaab8, -0xaabe, 0xaabe, -0xaaeb, 0xaaef, -0xaaf5, 0xaaf5, -0xabe3, 0xabea, -0xfb1e, 0xfb1e, -0x10376, 0x1037a, -0x10a01, 0x10a03, -0x10a05, 0x10a06, -0x10a0c, 0x10a0f, -0x11000, 0x11002, -0x11038, 0x11045, -0x11082, 0x11082, -0x110b0, 0x110b8, -0x11100, 0x11102, -0x11127, 0x11132, -0x11180, 0x11182, -0x111b3, 0x111bf, -0x1122c, 0x11234, -0x11237, 0x11237, -0x112df, 0x112e8, -0x11300, 0x11303, -0x1133e, 0x11344, -0x11347, 0x11348, -0x1134b, 0x1134c, -0x11357, 0x11357, -0x11362, 0x11363, -0x114b0, 0x114c1, -0x115af, 0x115b5, -0x115b8, 0x115be, -0x115dc, 0x115dd, -0x11630, 0x1163e, -0x11640, 0x11640, -0x116ab, 0x116b5, -0x1171d, 0x1172a, -0x16b30, 0x16b36, -0x16f51, 0x16f7e, -0x1bc9e, 0x1bc9e, -0x1f130, 0x1f149, -0x1f150, 0x1f169, -0x1f170, 0x1f189, -}; /* END of CR_Other_Alphabetic */ - -/* PROPERTY: 'Ideographic': Binary Property */ -static const OnigCodePoint -CR_Ideographic[] = { 12, -0x3006, 0x3007, -0x3021, 0x3029, -0x3038, 0x303a, -0x3400, 0x4db5, -0x4e00, 0x9fd5, -0xf900, 0xfa6d, -0xfa70, 0xfad9, -0x20000, 0x2a6d6, -0x2a700, 0x2b734, -0x2b740, 0x2b81d, -0x2b820, 0x2cea1, -0x2f800, 0x2fa1d, -}; /* END of CR_Ideographic */ - -/* PROPERTY: 'Diacritic': Binary Property */ -static const OnigCodePoint -CR_Diacritic[] = { 147, -0x005e, 0x005e, -0x0060, 0x0060, -0x00a8, 0x00a8, -0x00af, 0x00af, -0x00b4, 0x00b4, -0x00b7, 0x00b8, -0x02b0, 0x034e, -0x0350, 0x0357, -0x035d, 0x0362, -0x0374, 0x0375, -0x037a, 0x037a, -0x0384, 0x0385, -0x0483, 0x0487, -0x0559, 0x0559, -0x0591, 0x05a1, -0x05a3, 0x05bd, -0x05bf, 0x05bf, -0x05c1, 0x05c2, -0x05c4, 0x05c4, -0x064b, 0x0652, -0x0657, 0x0658, -0x06df, 0x06e0, -0x06e5, 0x06e6, -0x06ea, 0x06ec, -0x0730, 0x074a, -0x07a6, 0x07b0, -0x07eb, 0x07f5, -0x0818, 0x0819, -0x08e3, 0x08fe, -0x093c, 0x093c, -0x094d, 0x094d, -0x0951, 0x0954, -0x0971, 0x0971, -0x09bc, 0x09bc, -0x09cd, 0x09cd, -0x0a3c, 0x0a3c, -0x0a4d, 0x0a4d, -0x0abc, 0x0abc, -0x0acd, 0x0acd, -0x0b3c, 0x0b3c, -0x0b4d, 0x0b4d, -0x0bcd, 0x0bcd, -0x0c4d, 0x0c4d, -0x0cbc, 0x0cbc, -0x0ccd, 0x0ccd, -0x0d4d, 0x0d4d, -0x0dca, 0x0dca, -0x0e47, 0x0e4c, -0x0e4e, 0x0e4e, -0x0ec8, 0x0ecc, -0x0f18, 0x0f19, -0x0f35, 0x0f35, -0x0f37, 0x0f37, -0x0f39, 0x0f39, -0x0f3e, 0x0f3f, -0x0f82, 0x0f84, -0x0f86, 0x0f87, -0x0fc6, 0x0fc6, -0x1037, 0x1037, -0x1039, 0x103a, -0x1087, 0x108d, -0x108f, 0x108f, -0x109a, 0x109b, -0x17c9, 0x17d3, -0x17dd, 0x17dd, -0x1939, 0x193b, -0x1a75, 0x1a7c, -0x1a7f, 0x1a7f, -0x1ab0, 0x1abd, -0x1b34, 0x1b34, -0x1b44, 0x1b44, -0x1b6b, 0x1b73, -0x1baa, 0x1bab, -0x1c36, 0x1c37, -0x1c78, 0x1c7d, -0x1cd0, 0x1ce8, -0x1ced, 0x1ced, -0x1cf4, 0x1cf4, -0x1cf8, 0x1cf9, -0x1d2c, 0x1d6a, -0x1dc4, 0x1dcf, -0x1df5, 0x1df5, -0x1dfd, 0x1dff, -0x1fbd, 0x1fbd, -0x1fbf, 0x1fc1, -0x1fcd, 0x1fcf, -0x1fdd, 0x1fdf, -0x1fed, 0x1fef, -0x1ffd, 0x1ffe, -0x2cef, 0x2cf1, -0x2e2f, 0x2e2f, -0x302a, 0x302f, -0x3099, 0x309c, -0x30fc, 0x30fc, -0xa66f, 0xa66f, -0xa67c, 0xa67d, -0xa67f, 0xa67f, -0xa69c, 0xa69d, -0xa6f0, 0xa6f1, -0xa717, 0xa721, -0xa788, 0xa788, -0xa7f8, 0xa7f9, -0xa8c4, 0xa8c4, -0xa8e0, 0xa8f1, -0xa92b, 0xa92e, -0xa953, 0xa953, -0xa9b3, 0xa9b3, -0xa9c0, 0xa9c0, -0xa9e5, 0xa9e5, -0xaa7b, 0xaa7d, -0xaabf, 0xaac2, -0xaaf6, 0xaaf6, -0xab5b, 0xab5f, -0xabec, 0xabed, -0xfb1e, 0xfb1e, -0xfe20, 0xfe2f, -0xff3e, 0xff3e, -0xff40, 0xff40, -0xff70, 0xff70, -0xff9e, 0xff9f, -0xffe3, 0xffe3, -0x102e0, 0x102e0, -0x10ae5, 0x10ae6, -0x110b9, 0x110ba, -0x11133, 0x11134, -0x11173, 0x11173, -0x111c0, 0x111c0, -0x111ca, 0x111cc, -0x11235, 0x11236, -0x112e9, 0x112ea, -0x1133c, 0x1133c, -0x1134d, 0x1134d, -0x11366, 0x1136c, -0x11370, 0x11374, -0x114c2, 0x114c3, -0x115bf, 0x115c0, -0x1163f, 0x1163f, -0x116b6, 0x116b7, -0x1172b, 0x1172b, -0x16af0, 0x16af4, -0x16f8f, 0x16f9f, -0x1d167, 0x1d169, -0x1d16d, 0x1d172, -0x1d17b, 0x1d182, -0x1d185, 0x1d18b, -0x1d1aa, 0x1d1ad, -0x1e8d0, 0x1e8d6, -}; /* END of CR_Diacritic */ - -/* PROPERTY: 'Extender': Binary Property */ -static const OnigCodePoint -CR_Extender[] = { 26, -0x00b7, 0x00b7, -0x02d0, 0x02d1, -0x0640, 0x0640, -0x07fa, 0x07fa, -0x0e46, 0x0e46, -0x0ec6, 0x0ec6, -0x180a, 0x180a, -0x1843, 0x1843, -0x1aa7, 0x1aa7, -0x1c36, 0x1c36, -0x1c7b, 0x1c7b, -0x3005, 0x3005, -0x3031, 0x3035, -0x309d, 0x309e, -0x30fc, 0x30fe, -0xa015, 0xa015, -0xa60c, 0xa60c, -0xa9cf, 0xa9cf, -0xa9e6, 0xa9e6, -0xaa70, 0xaa70, -0xaadd, 0xaadd, -0xaaf3, 0xaaf4, -0xff70, 0xff70, -0x1135d, 0x1135d, -0x115c6, 0x115c8, -0x16b42, 0x16b43, -}; /* END of CR_Extender */ - -/* PROPERTY: 'Other_Lowercase': Binary Property */ -static const OnigCodePoint -CR_Other_Lowercase[] = { 20, -0x00aa, 0x00aa, -0x00ba, 0x00ba, -0x02b0, 0x02b8, -0x02c0, 0x02c1, -0x02e0, 0x02e4, -0x0345, 0x0345, -0x037a, 0x037a, -0x1d2c, 0x1d6a, -0x1d78, 0x1d78, -0x1d9b, 0x1dbf, -0x2071, 0x2071, -0x207f, 0x207f, -0x2090, 0x209c, -0x2170, 0x217f, -0x24d0, 0x24e9, -0x2c7c, 0x2c7d, -0xa69c, 0xa69d, -0xa770, 0xa770, -0xa7f8, 0xa7f9, -0xab5c, 0xab5f, -}; /* END of CR_Other_Lowercase */ - -/* PROPERTY: 'Other_Uppercase': Binary Property */ -static const OnigCodePoint -CR_Other_Uppercase[] = { 5, -0x2160, 0x216f, -0x24b6, 0x24cf, -0x1f130, 0x1f149, -0x1f150, 0x1f169, -0x1f170, 0x1f189, -}; /* END of CR_Other_Uppercase */ - -/* PROPERTY: 'Noncharacter_Code_Point': Binary Property */ -static const OnigCodePoint -CR_Noncharacter_Code_Point[] = { 18, -0xfdd0, 0xfdef, -0xfffe, 0xffff, -0x1fffe, 0x1ffff, -0x2fffe, 0x2ffff, -0x3fffe, 0x3ffff, -0x4fffe, 0x4ffff, -0x5fffe, 0x5ffff, -0x6fffe, 0x6ffff, -0x7fffe, 0x7ffff, -0x8fffe, 0x8ffff, -0x9fffe, 0x9ffff, -0xafffe, 0xaffff, -0xbfffe, 0xbffff, -0xcfffe, 0xcffff, -0xdfffe, 0xdffff, -0xefffe, 0xeffff, -0xffffe, 0xfffff, -0x10fffe, 0x10ffff, -}; /* END of CR_Noncharacter_Code_Point */ - -/* PROPERTY: 'Other_Grapheme_Extend': Binary Property */ -static const OnigCodePoint -CR_Other_Grapheme_Extend[] = { 22, -0x09be, 0x09be, -0x09d7, 0x09d7, -0x0b3e, 0x0b3e, -0x0b57, 0x0b57, -0x0bbe, 0x0bbe, -0x0bd7, 0x0bd7, -0x0cc2, 0x0cc2, -0x0cd5, 0x0cd6, -0x0d3e, 0x0d3e, -0x0d57, 0x0d57, -0x0dcf, 0x0dcf, -0x0ddf, 0x0ddf, -0x200c, 0x200d, -0x302e, 0x302f, -0xff9e, 0xff9f, -0x1133e, 0x1133e, -0x11357, 0x11357, -0x114b0, 0x114b0, -0x114bd, 0x114bd, -0x115af, 0x115af, -0x1d165, 0x1d165, -0x1d16e, 0x1d172, -}; /* END of CR_Other_Grapheme_Extend */ - -/* PROPERTY: 'IDS_Binary_Operator': Binary Property */ -static const OnigCodePoint -CR_IDS_Binary_Operator[] = { 2, -0x2ff0, 0x2ff1, -0x2ff4, 0x2ffb, -}; /* END of CR_IDS_Binary_Operator */ - -/* PROPERTY: 'IDS_Trinary_Operator': Binary Property */ -static const OnigCodePoint -CR_IDS_Trinary_Operator[] = { 1, -0x2ff2, 0x2ff3, -}; /* END of CR_IDS_Trinary_Operator */ - -/* PROPERTY: 'Radical': Binary Property */ -static const OnigCodePoint -CR_Radical[] = { 3, -0x2e80, 0x2e99, -0x2e9b, 0x2ef3, -0x2f00, 0x2fd5, -}; /* END of CR_Radical */ - -/* PROPERTY: 'Unified_Ideograph': Binary Property */ -static const OnigCodePoint -CR_Unified_Ideograph[] = { 13, -0x3400, 0x4db5, -0x4e00, 0x9fd5, -0xfa0e, 0xfa0f, -0xfa11, 0xfa11, -0xfa13, 0xfa14, -0xfa1f, 0xfa1f, -0xfa21, 0xfa21, -0xfa23, 0xfa24, -0xfa27, 0xfa29, -0x20000, 0x2a6d6, -0x2a700, 0x2b734, -0x2b740, 0x2b81d, -0x2b820, 0x2cea1, -}; /* END of CR_Unified_Ideograph */ - -/* PROPERTY: 'Other_Default_Ignorable_Code_Point': Binary Property */ -static const OnigCodePoint -CR_Other_Default_Ignorable_Code_Point[] = { 11, -0x034f, 0x034f, -0x115f, 0x1160, -0x17b4, 0x17b5, -0x2065, 0x2065, -0x3164, 0x3164, -0xffa0, 0xffa0, -0xfff0, 0xfff8, -0xe0000, 0xe0000, -0xe0002, 0xe001f, -0xe0080, 0xe00ff, -0xe01f0, 0xe0fff, -}; /* END of CR_Other_Default_Ignorable_Code_Point */ - -/* PROPERTY: 'Deprecated': Binary Property */ -static const OnigCodePoint -CR_Deprecated[] = { 9, -0x0149, 0x0149, -0x0673, 0x0673, -0x0f77, 0x0f77, -0x0f79, 0x0f79, -0x17a3, 0x17a4, -0x206a, 0x206f, -0x2329, 0x232a, -0xe0001, 0xe0001, -0xe007f, 0xe007f, -}; /* END of CR_Deprecated */ - -/* PROPERTY: 'Soft_Dotted': Binary Property */ -static const OnigCodePoint -CR_Soft_Dotted[] = { 31, -0x0069, 0x006a, -0x012f, 0x012f, -0x0249, 0x0249, -0x0268, 0x0268, -0x029d, 0x029d, -0x02b2, 0x02b2, -0x03f3, 0x03f3, -0x0456, 0x0456, -0x0458, 0x0458, -0x1d62, 0x1d62, -0x1d96, 0x1d96, -0x1da4, 0x1da4, -0x1da8, 0x1da8, -0x1e2d, 0x1e2d, -0x1ecb, 0x1ecb, -0x2071, 0x2071, -0x2148, 0x2149, -0x2c7c, 0x2c7c, -0x1d422, 0x1d423, -0x1d456, 0x1d457, -0x1d48a, 0x1d48b, -0x1d4be, 0x1d4bf, -0x1d4f2, 0x1d4f3, -0x1d526, 0x1d527, -0x1d55a, 0x1d55b, -0x1d58e, 0x1d58f, -0x1d5c2, 0x1d5c3, -0x1d5f6, 0x1d5f7, -0x1d62a, 0x1d62b, -0x1d65e, 0x1d65f, -0x1d692, 0x1d693, -}; /* END of CR_Soft_Dotted */ - -/* PROPERTY: 'Logical_Order_Exception': Binary Property */ -static const OnigCodePoint -CR_Logical_Order_Exception[] = { 7, -0x0e40, 0x0e44, -0x0ec0, 0x0ec4, -0x19b5, 0x19b7, -0x19ba, 0x19ba, -0xaab5, 0xaab6, -0xaab9, 0xaab9, -0xaabb, 0xaabc, -}; /* END of CR_Logical_Order_Exception */ - -/* PROPERTY: 'Other_ID_Start': Binary Property */ -static const OnigCodePoint -CR_Other_ID_Start[] = { 3, -0x2118, 0x2118, -0x212e, 0x212e, -0x309b, 0x309c, -}; /* END of CR_Other_ID_Start */ - -/* PROPERTY: 'Other_ID_Continue': Binary Property */ +/* PROPERTY: 'Z': Major Category */  static const OnigCodePoint -CR_Other_ID_Continue[] = { 4, -0x00b7, 0x00b7, -0x0387, 0x0387, -0x1369, 0x1371, -0x19da, 0x19da, -}; /* END of CR_Other_ID_Continue */ +CR_Z[] = { 8, +0x0020, 0x0020, +0x00a0, 0x00a0, +0x1680, 0x1680, +0x2000, 0x200a, +0x2028, 0x2029, +0x202f, 0x202f, +0x205f, 0x205f, +0x3000, 0x3000, +}; /* END of CR_Z */ -/* PROPERTY: 'STerm': Binary Property */ +/* PROPERTY: 'Zl': General Category */  static const OnigCodePoint -CR_STerm[] = { 64, -0x0021, 0x0021, -0x002e, 0x002e, -0x003f, 0x003f, -0x0589, 0x0589, -0x061f, 0x061f, -0x06d4, 0x06d4, -0x0700, 0x0702, -0x07f9, 0x07f9, -0x0964, 0x0965, -0x104a, 0x104b, -0x1362, 0x1362, -0x1367, 0x1368, -0x166e, 0x166e, -0x1735, 0x1736, -0x1803, 0x1803, -0x1809, 0x1809, -0x1944, 0x1945, -0x1aa8, 0x1aab, -0x1b5a, 0x1b5b, -0x1b5e, 0x1b5f, -0x1c3b, 0x1c3c, -0x1c7e, 0x1c7f, -0x203c, 0x203d, -0x2047, 0x2049, -0x2e2e, 0x2e2e, -0x2e3c, 0x2e3c, -0x3002, 0x3002, -0xa4ff, 0xa4ff, -0xa60e, 0xa60f, -0xa6f3, 0xa6f3, -0xa6f7, 0xa6f7, -0xa876, 0xa877, -0xa8ce, 0xa8cf, -0xa92f, 0xa92f, -0xa9c8, 0xa9c9, -0xaa5d, 0xaa5f, -0xaaf0, 0xaaf1, -0xabeb, 0xabeb, -0xfe52, 0xfe52, -0xfe56, 0xfe57, -0xff01, 0xff01, -0xff0e, 0xff0e, -0xff1f, 0xff1f, -0xff61, 0xff61, -0x10a56, 0x10a57, -0x11047, 0x11048, -0x110be, 0x110c1, -0x11141, 0x11143, -0x111c5, 0x111c6, -0x111cd, 0x111cd, -0x111de, 0x111df, -0x11238, 0x11239, -0x1123b, 0x1123c, -0x112a9, 0x112a9, -0x115c2, 0x115c3, -0x115c9, 0x115d7, -0x11641, 0x11642, -0x1173c, 0x1173e, -0x16a6e, 0x16a6f, -0x16af5, 0x16af5, -0x16b37, 0x16b38, -0x16b44, 0x16b44, -0x1bc9f, 0x1bc9f, -0x1da88, 0x1da88, -}; /* END of CR_STerm */ +CR_Zl[] = { 1, +0x2028, 0x2028, +}; /* END of CR_Zl */ -/* PROPERTY: 'Variation_Selector': Binary Property */ +/* PROPERTY: 'Zp': General Category */  static const OnigCodePoint -CR_Variation_Selector[] = { 3, -0x180b, 0x180d, -0xfe00, 0xfe0f, -0xe0100, 0xe01ef, -}; /* END of CR_Variation_Selector */ +CR_Zp[] = { 1, +0x2029, 0x2029, +}; /* END of CR_Zp */ -/* PROPERTY: 'Pattern_White_Space': Binary Property */ +/* PROPERTY: 'Zs': General Category */  static const OnigCodePoint -CR_Pattern_White_Space[] = { 5, -0x0009, 0x000d, +CR_Zs[] = { 7,  0x0020, 0x0020, -0x0085, 0x0085, -0x200e, 0x200f, -0x2028, 0x2029, -}; /* END of CR_Pattern_White_Space */ - -/* PROPERTY: 'Pattern_Syntax': Binary Property */ -static const OnigCodePoint -CR_Pattern_Syntax[] = { 28, -0x0021, 0x002f, -0x003a, 0x0040, -0x005b, 0x005e, -0x0060, 0x0060, -0x007b, 0x007e, -0x00a1, 0x00a7, -0x00a9, 0x00a9, -0x00ab, 0x00ac, -0x00ae, 0x00ae, -0x00b0, 0x00b1, -0x00b6, 0x00b6, -0x00bb, 0x00bb, -0x00bf, 0x00bf, -0x00d7, 0x00d7, -0x00f7, 0x00f7, -0x2010, 0x2027, -0x2030, 0x203e, -0x2041, 0x2053, -0x2055, 0x205e, -0x2190, 0x245f, -0x2500, 0x2775, -0x2794, 0x2bff, -0x2e00, 0x2e7f, -0x3001, 0x3003, -0x3008, 0x3020, -0x3030, 0x3030, -0xfd3e, 0xfd3f, -0xfe45, 0xfe46, -}; /* END of CR_Pattern_Syntax */ - -/* PROPERTY: 'Unknown': Script */ -static const OnigCodePoint -CR_Unknown[] = { 611, -0x0378, 0x0379, -0x0380, 0x0383, -0x038b, 0x038b, -0x038d, 0x038d, -0x03a2, 0x03a2, -0x0530, 0x0530, -0x0557, 0x0558, -0x0560, 0x0560, -0x0588, 0x0588, -0x058b, 0x058c, -0x0590, 0x0590, -0x05c8, 0x05cf, -0x05eb, 0x05ef, -0x05f5, 0x05ff, -0x061d, 0x061d, -0x070e, 0x070e, -0x074b, 0x074c, -0x07b2, 0x07bf, -0x07fb, 0x07ff, -0x082e, 0x082f, -0x083f, 0x083f, -0x085c, 0x085d, -0x085f, 0x089f, -0x08b5, 0x08e2, -0x0984, 0x0984, -0x098d, 0x098e, -0x0991, 0x0992, -0x09a9, 0x09a9, -0x09b1, 0x09b1, -0x09b3, 0x09b5, -0x09ba, 0x09bb, -0x09c5, 0x09c6, -0x09c9, 0x09ca, -0x09cf, 0x09d6, -0x09d8, 0x09db, -0x09de, 0x09de, -0x09e4, 0x09e5, -0x09fc, 0x0a00, -0x0a04, 0x0a04, -0x0a0b, 0x0a0e, -0x0a11, 0x0a12, -0x0a29, 0x0a29, -0x0a31, 0x0a31, -0x0a34, 0x0a34, -0x0a37, 0x0a37, -0x0a3a, 0x0a3b, -0x0a3d, 0x0a3d, -0x0a43, 0x0a46, -0x0a49, 0x0a4a, -0x0a4e, 0x0a50, -0x0a52, 0x0a58, -0x0a5d, 0x0a5d, -0x0a5f, 0x0a65, -0x0a76, 0x0a80, -0x0a84, 0x0a84, -0x0a8e, 0x0a8e, -0x0a92, 0x0a92, -0x0aa9, 0x0aa9, -0x0ab1, 0x0ab1, -0x0ab4, 0x0ab4, -0x0aba, 0x0abb, -0x0ac6, 0x0ac6, -0x0aca, 0x0aca, -0x0ace, 0x0acf, -0x0ad1, 0x0adf, -0x0ae4, 0x0ae5, -0x0af2, 0x0af8, -0x0afa, 0x0b00, -0x0b04, 0x0b04, -0x0b0d, 0x0b0e, -0x0b11, 0x0b12, -0x0b29, 0x0b29, -0x0b31, 0x0b31, -0x0b34, 0x0b34, -0x0b3a, 0x0b3b, -0x0b45, 0x0b46, -0x0b49, 0x0b4a, -0x0b4e, 0x0b55, -0x0b58, 0x0b5b, -0x0b5e, 0x0b5e, -0x0b64, 0x0b65, -0x0b78, 0x0b81, -0x0b84, 0x0b84, -0x0b8b, 0x0b8d, -0x0b91, 0x0b91, -0x0b96, 0x0b98, -0x0b9b, 0x0b9b, -0x0b9d, 0x0b9d, -0x0ba0, 0x0ba2, -0x0ba5, 0x0ba7, -0x0bab, 0x0bad, -0x0bba, 0x0bbd, -0x0bc3, 0x0bc5, -0x0bc9, 0x0bc9, -0x0bce, 0x0bcf, -0x0bd1, 0x0bd6, -0x0bd8, 0x0be5, -0x0bfb, 0x0bff, -0x0c04, 0x0c04, -0x0c0d, 0x0c0d, -0x0c11, 0x0c11, -0x0c29, 0x0c29, -0x0c3a, 0x0c3c, -0x0c45, 0x0c45, -0x0c49, 0x0c49, -0x0c4e, 0x0c54, -0x0c57, 0x0c57, -0x0c5b, 0x0c5f, -0x0c64, 0x0c65, -0x0c70, 0x0c77, -0x0c80, 0x0c80, -0x0c84, 0x0c84, -0x0c8d, 0x0c8d, -0x0c91, 0x0c91, -0x0ca9, 0x0ca9, -0x0cb4, 0x0cb4, -0x0cba, 0x0cbb, -0x0cc5, 0x0cc5, -0x0cc9, 0x0cc9, -0x0cce, 0x0cd4, -0x0cd7, 0x0cdd, -0x0cdf, 0x0cdf, -0x0ce4, 0x0ce5, -0x0cf0, 0x0cf0, -0x0cf3, 0x0d00, -0x0d04, 0x0d04, -0x0d0d, 0x0d0d, -0x0d11, 0x0d11, -0x0d3b, 0x0d3c, -0x0d45, 0x0d45, -0x0d49, 0x0d49, -0x0d4f, 0x0d56, -0x0d58, 0x0d5e, -0x0d64, 0x0d65, -0x0d76, 0x0d78, -0x0d80, 0x0d81, -0x0d84, 0x0d84, -0x0d97, 0x0d99, -0x0db2, 0x0db2, -0x0dbc, 0x0dbc, -0x0dbe, 0x0dbf, -0x0dc7, 0x0dc9, -0x0dcb, 0x0dce, -0x0dd5, 0x0dd5, -0x0dd7, 0x0dd7, -0x0de0, 0x0de5, -0x0df0, 0x0df1, -0x0df5, 0x0e00, -0x0e3b, 0x0e3e, -0x0e5c, 0x0e80, -0x0e83, 0x0e83, -0x0e85, 0x0e86, -0x0e89, 0x0e89, -0x0e8b, 0x0e8c, -0x0e8e, 0x0e93, -0x0e98, 0x0e98, -0x0ea0, 0x0ea0, -0x0ea4, 0x0ea4, -0x0ea6, 0x0ea6, -0x0ea8, 0x0ea9, -0x0eac, 0x0eac, -0x0eba, 0x0eba, -0x0ebe, 0x0ebf, -0x0ec5, 0x0ec5, -0x0ec7, 0x0ec7, -0x0ece, 0x0ecf, -0x0eda, 0x0edb, -0x0ee0, 0x0eff, -0x0f48, 0x0f48, -0x0f6d, 0x0f70, -0x0f98, 0x0f98, -0x0fbd, 0x0fbd, -0x0fcd, 0x0fcd, -0x0fdb, 0x0fff, -0x10c6, 0x10c6, -0x10c8, 0x10cc, -0x10ce, 0x10cf, -0x1249, 0x1249, -0x124e, 0x124f, -0x1257, 0x1257, -0x1259, 0x1259, -0x125e, 0x125f, -0x1289, 0x1289, -0x128e, 0x128f, -0x12b1, 0x12b1, -0x12b6, 0x12b7, -0x12bf, 0x12bf, -0x12c1, 0x12c1, -0x12c6, 0x12c7, -0x12d7, 0x12d7, -0x1311, 0x1311, -0x1316, 0x1317, -0x135b, 0x135c, -0x137d, 0x137f, -0x139a, 0x139f, -0x13f6, 0x13f7, -0x13fe, 0x13ff, -0x169d, 0x169f, -0x16f9, 0x16ff, -0x170d, 0x170d, -0x1715, 0x171f, -0x1737, 0x173f, -0x1754, 0x175f, -0x176d, 0x176d, -0x1771, 0x1771, -0x1774, 0x177f, -0x17de, 0x17df, -0x17ea, 0x17ef, -0x17fa, 0x17ff, -0x180f, 0x180f, -0x181a, 0x181f, -0x1878, 0x187f, -0x18ab, 0x18af, -0x18f6, 0x18ff, -0x191f, 0x191f, -0x192c, 0x192f, -0x193c, 0x193f, -0x1941, 0x1943, -0x196e, 0x196f, -0x1975, 0x197f, -0x19ac, 0x19af, -0x19ca, 0x19cf, -0x19db, 0x19dd, -0x1a1c, 0x1a1d, -0x1a5f, 0x1a5f, -0x1a7d, 0x1a7e, -0x1a8a, 0x1a8f, -0x1a9a, 0x1a9f, -0x1aae, 0x1aaf, -0x1abf, 0x1aff, -0x1b4c, 0x1b4f, -0x1b7d, 0x1b7f, -0x1bf4, 0x1bfb, -0x1c38, 0x1c3a, -0x1c4a, 0x1c4c, -0x1c80, 0x1cbf, -0x1cc8, 0x1ccf, -0x1cf7, 0x1cf7, -0x1cfa, 0x1cff, -0x1df6, 0x1dfb, -0x1f16, 0x1f17, -0x1f1e, 0x1f1f, -0x1f46, 0x1f47, -0x1f4e, 0x1f4f, -0x1f58, 0x1f58, -0x1f5a, 0x1f5a, -0x1f5c, 0x1f5c, -0x1f5e, 0x1f5e, -0x1f7e, 0x1f7f, -0x1fb5, 0x1fb5, -0x1fc5, 0x1fc5, -0x1fd4, 0x1fd5, -0x1fdc, 0x1fdc, -0x1ff0, 0x1ff1, -0x1ff5, 0x1ff5, -0x1fff, 0x1fff, -0x2065, 0x2065, -0x2072, 0x2073, -0x208f, 0x208f, -0x209d, 0x209f, -0x20bf, 0x20cf, -0x20f1, 0x20ff, -0x218c, 0x218f, -0x23fb, 0x23ff, -0x2427, 0x243f, -0x244b, 0x245f, -0x2b74, 0x2b75, -0x2b96, 0x2b97, -0x2bba, 0x2bbc, -0x2bc9, 0x2bc9, -0x2bd2, 0x2beb, -0x2bf0, 0x2bff, -0x2c2f, 0x2c2f, -0x2c5f, 0x2c5f, -0x2cf4, 0x2cf8, -0x2d26, 0x2d26, -0x2d28, 0x2d2c, -0x2d2e, 0x2d2f, -0x2d68, 0x2d6e, -0x2d71, 0x2d7e, -0x2d97, 0x2d9f, -0x2da7, 0x2da7, -0x2daf, 0x2daf, -0x2db7, 0x2db7, -0x2dbf, 0x2dbf, -0x2dc7, 0x2dc7, -0x2dcf, 0x2dcf, -0x2dd7, 0x2dd7, -0x2ddf, 0x2ddf, -0x2e43, 0x2e7f, -0x2e9a, 0x2e9a, -0x2ef4, 0x2eff, -0x2fd6, 0x2fef, -0x2ffc, 0x2fff, -0x3040, 0x3040, -0x3097, 0x3098, -0x3100, 0x3104, -0x312e, 0x3130, -0x318f, 0x318f, -0x31bb, 0x31bf, -0x31e4, 0x31ef, -0x321f, 0x321f, -0x32ff, 0x32ff, -0x4db6, 0x4dbf, -0x9fd6, 0x9fff, -0xa48d, 0xa48f, -0xa4c7, 0xa4cf, -0xa62c, 0xa63f, -0xa6f8, 0xa6ff, -0xa7ae, 0xa7af, -0xa7b8, 0xa7f6, -0xa82c, 0xa82f, -0xa83a, 0xa83f, -0xa878, 0xa87f, -0xa8c5, 0xa8cd, -0xa8da, 0xa8df, -0xa8fe, 0xa8ff, -0xa954, 0xa95e, -0xa97d, 0xa97f, -0xa9ce, 0xa9ce, -0xa9da, 0xa9dd, -0xa9ff, 0xa9ff, -0xaa37, 0xaa3f, -0xaa4e, 0xaa4f, -0xaa5a, 0xaa5b, -0xaac3, 0xaada, -0xaaf7, 0xab00, -0xab07, 0xab08, -0xab0f, 0xab10, -0xab17, 0xab1f, -0xab27, 0xab27, -0xab2f, 0xab2f, -0xab66, 0xab6f, -0xabee, 0xabef, -0xabfa, 0xabff, -0xd7a4, 0xd7af, -0xd7c7, 0xd7ca, -0xd7fc, 0xf8ff, -0xfa6e, 0xfa6f, -0xfada, 0xfaff, -0xfb07, 0xfb12, -0xfb18, 0xfb1c, -0xfb37, 0xfb37, -0xfb3d, 0xfb3d, -0xfb3f, 0xfb3f, -0xfb42, 0xfb42, -0xfb45, 0xfb45, -0xfbc2, 0xfbd2, -0xfd40, 0xfd4f, -0xfd90, 0xfd91, -0xfdc8, 0xfdef, -0xfdfe, 0xfdff, -0xfe1a, 0xfe1f, -0xfe53, 0xfe53, -0xfe67, 0xfe67, -0xfe6c, 0xfe6f, -0xfe75, 0xfe75, -0xfefd, 0xfefe, -0xff00, 0xff00, -0xffbf, 0xffc1, -0xffc8, 0xffc9, -0xffd0, 0xffd1, -0xffd8, 0xffd9, -0xffdd, 0xffdf, -0xffe7, 0xffe7, -0xffef, 0xfff8, -0xfffe, 0xffff, -0x1000c, 0x1000c, -0x10027, 0x10027, -0x1003b, 0x1003b, -0x1003e, 0x1003e, -0x1004e, 0x1004f, -0x1005e, 0x1007f, -0x100fb, 0x100ff, -0x10103, 0x10106, -0x10134, 0x10136, -0x1018d, 0x1018f, -0x1019c, 0x1019f, -0x101a1, 0x101cf, -0x101fe, 0x1027f, -0x1029d, 0x1029f, -0x102d1, 0x102df, -0x102fc, 0x102ff, -0x10324, 0x1032f, -0x1034b, 0x1034f, -0x1037b, 0x1037f, -0x1039e, 0x1039e, -0x103c4, 0x103c7, -0x103d6, 0x103ff, -0x1049e, 0x1049f, -0x104aa, 0x104ff, -0x10528, 0x1052f, -0x10564, 0x1056e, -0x10570, 0x105ff, -0x10737, 0x1073f, -0x10756, 0x1075f, -0x10768, 0x107ff, -0x10806, 0x10807, -0x10809, 0x10809, -0x10836, 0x10836, -0x10839, 0x1083b, -0x1083d, 0x1083e, -0x10856, 0x10856, -0x1089f, 0x108a6, -0x108b0, 0x108df, -0x108f3, 0x108f3, -0x108f6, 0x108fa, -0x1091c, 0x1091e, -0x1093a, 0x1093e, -0x10940, 0x1097f, -0x109b8, 0x109bb, -0x109d0, 0x109d1, -0x10a04, 0x10a04, -0x10a07, 0x10a0b, -0x10a14, 0x10a14, -0x10a18, 0x10a18, -0x10a34, 0x10a37, -0x10a3b, 0x10a3e, -0x10a48, 0x10a4f, -0x10a59, 0x10a5f, -0x10aa0, 0x10abf, -0x10ae7, 0x10aea, -0x10af7, 0x10aff, -0x10b36, 0x10b38, -0x10b56, 0x10b57, -0x10b73, 0x10b77, -0x10b92, 0x10b98, -0x10b9d, 0x10ba8, -0x10bb0, 0x10bff, -0x10c49, 0x10c7f, -0x10cb3, 0x10cbf, -0x10cf3, 0x10cf9, -0x10d00, 0x10e5f, -0x10e7f, 0x10fff, -0x1104e, 0x11051, -0x11070, 0x1107e, -0x110c2, 0x110cf, -0x110e9, 0x110ef, -0x110fa, 0x110ff, -0x11135, 0x11135, -0x11144, 0x1114f, -0x11177, 0x1117f, -0x111ce, 0x111cf, -0x111e0, 0x111e0, -0x111f5, 0x111ff, -0x11212, 0x11212, -0x1123e, 0x1127f, -0x11287, 0x11287, -0x11289, 0x11289, -0x1128e, 0x1128e, -0x1129e, 0x1129e, -0x112aa, 0x112af, -0x112eb, 0x112ef, -0x112fa, 0x112ff, -0x11304, 0x11304, -0x1130d, 0x1130e, -0x11311, 0x11312, -0x11329, 0x11329, -0x11331, 0x11331, -0x11334, 0x11334, -0x1133a, 0x1133b, -0x11345, 0x11346, -0x11349, 0x1134a, -0x1134e, 0x1134f, -0x11351, 0x11356, -0x11358, 0x1135c, -0x11364, 0x11365, -0x1136d, 0x1136f, -0x11375, 0x1147f, -0x114c8, 0x114cf, -0x114da, 0x1157f, -0x115b6, 0x115b7, -0x115de, 0x115ff, -0x11645, 0x1164f, -0x1165a, 0x1167f, -0x116b8, 0x116bf, -0x116ca, 0x116ff, -0x1171a, 0x1171c, -0x1172c, 0x1172f, -0x11740, 0x1189f, -0x118f3, 0x118fe, -0x11900, 0x11abf, -0x11af9, 0x11fff, -0x1239a, 0x123ff, -0x1246f, 0x1246f, -0x12475, 0x1247f, -0x12544, 0x12fff, -0x1342f, 0x143ff, -0x14647, 0x167ff, -0x16a39, 0x16a3f, -0x16a5f, 0x16a5f, -0x16a6a, 0x16a6d, -0x16a70, 0x16acf, -0x16aee, 0x16aef, -0x16af6, 0x16aff, -0x16b46, 0x16b4f, -0x16b5a, 0x16b5a, -0x16b62, 0x16b62, -0x16b78, 0x16b7c, -0x16b90, 0x16eff, -0x16f45, 0x16f4f, -0x16f7f, 0x16f8e, -0x16fa0, 0x1afff, -0x1b002, 0x1bbff, -0x1bc6b, 0x1bc6f, -0x1bc7d, 0x1bc7f, -0x1bc89, 0x1bc8f, -0x1bc9a, 0x1bc9b, -0x1bca4, 0x1cfff, -0x1d0f6, 0x1d0ff, -0x1d127, 0x1d128, -0x1d1e9, 0x1d1ff, -0x1d246, 0x1d2ff, -0x1d357, 0x1d35f, -0x1d372, 0x1d3ff, -0x1d455, 0x1d455, -0x1d49d, 0x1d49d, -0x1d4a0, 0x1d4a1, -0x1d4a3, 0x1d4a4, -0x1d4a7, 0x1d4a8, -0x1d4ad, 0x1d4ad, -0x1d4ba, 0x1d4ba, -0x1d4bc, 0x1d4bc, -0x1d4c4, 0x1d4c4, -0x1d506, 0x1d506, -0x1d50b, 0x1d50c, -0x1d515, 0x1d515, -0x1d51d, 0x1d51d, -0x1d53a, 0x1d53a, -0x1d53f, 0x1d53f, -0x1d545, 0x1d545, -0x1d547, 0x1d549, -0x1d551, 0x1d551, -0x1d6a6, 0x1d6a7, -0x1d7cc, 0x1d7cd, -0x1da8c, 0x1da9a, -0x1daa0, 0x1daa0, -0x1dab0, 0x1e7ff, -0x1e8c5, 0x1e8c6, -0x1e8d7, 0x1edff, -0x1ee04, 0x1ee04, -0x1ee20, 0x1ee20, -0x1ee23, 0x1ee23, -0x1ee25, 0x1ee26, -0x1ee28, 0x1ee28, -0x1ee33, 0x1ee33, -0x1ee38, 0x1ee38, -0x1ee3a, 0x1ee3a, -0x1ee3c, 0x1ee41, -0x1ee43, 0x1ee46, -0x1ee48, 0x1ee48, -0x1ee4a, 0x1ee4a, -0x1ee4c, 0x1ee4c, -0x1ee50, 0x1ee50, -0x1ee53, 0x1ee53, -0x1ee55, 0x1ee56, -0x1ee58, 0x1ee58, -0x1ee5a, 0x1ee5a, -0x1ee5c, 0x1ee5c, -0x1ee5e, 0x1ee5e, -0x1ee60, 0x1ee60, -0x1ee63, 0x1ee63, -0x1ee65, 0x1ee66, -0x1ee6b, 0x1ee6b, -0x1ee73, 0x1ee73, -0x1ee78, 0x1ee78, -0x1ee7d, 0x1ee7d, -0x1ee7f, 0x1ee7f, -0x1ee8a, 0x1ee8a, -0x1ee9c, 0x1eea0, -0x1eea4, 0x1eea4, -0x1eeaa, 0x1eeaa, -0x1eebc, 0x1eeef, -0x1eef2, 0x1efff, -0x1f02c, 0x1f02f, -0x1f094, 0x1f09f, -0x1f0af, 0x1f0b0, -0x1f0c0, 0x1f0c0, -0x1f0d0, 0x1f0d0, -0x1f0f6, 0x1f0ff, -0x1f10d, 0x1f10f, -0x1f12f, 0x1f12f, -0x1f16c, 0x1f16f, -0x1f19b, 0x1f1e5, -0x1f203, 0x1f20f, -0x1f23b, 0x1f23f, -0x1f249, 0x1f24f, -0x1f252, 0x1f2ff, -0x1f57a, 0x1f57a, -0x1f5a4, 0x1f5a4, -0x1f6d1, 0x1f6df, -0x1f6ed, 0x1f6ef, -0x1f6f4, 0x1f6ff, -0x1f774, 0x1f77f, -0x1f7d5, 0x1f7ff, -0x1f80c, 0x1f80f, -0x1f848, 0x1f84f, -0x1f85a, 0x1f85f, -0x1f888, 0x1f88f, -0x1f8ae, 0x1f90f, -0x1f919, 0x1f97f, -0x1f985, 0x1f9bf, -0x1f9c1, 0x1ffff, -0x2a6d7, 0x2a6ff, -0x2b735, 0x2b73f, -0x2b81e, 0x2b81f, -0x2cea2, 0x2f7ff, -0x2fa1e, 0xe0000, -0xe0002, 0xe001f, -0xe0080, 0xe00ff, -0xe01f0, 0x10ffff, -}; /* END of CR_Unknown */ +0x00a0, 0x00a0, +0x1680, 0x1680, +0x2000, 0x200a, +0x202f, 0x202f, +0x205f, 0x205f, +0x3000, 0x3000, +}; /* END of CR_Zs */  /* PROPERTY: 'In_Basic_Latin': Block */  #define CR_In_Basic_Latin CR_ASCII @@ -22421,229 +22421,229 @@ const CodeRanges[] = {    CR_Word,    CR_Alnum,    CR_ASCII, +  CR_ASCII_Hex_Digit, +  CR_Ahom, +  CR_Alphabetic, +  CR_Anatolian_Hieroglyphs,    CR_Any, +  CR_Arabic, +  CR_Armenian,    CR_Assigned, +  CR_Avestan, +  CR_Balinese, +  CR_Bamum, +  CR_Bassa_Vah, +  CR_Batak, +  CR_Bengali, +  CR_Bidi_Control, +  CR_Bopomofo, +  CR_Brahmi, +  CR_Braille, +  CR_Buginese, +  CR_Buhid,    CR_C, +  CR_Canadian_Aboriginal, +  CR_Carian, +  CR_Case_Ignorable, +  CR_Cased, +  CR_Caucasian_Albanian,    CR_Cc,    CR_Cf, +  CR_Chakma, +  CR_Cham, +  CR_Changes_When_Casefolded, +  CR_Changes_When_Casemapped, +  CR_Changes_When_Lowercased, +  CR_Changes_When_Titlecased, +  CR_Changes_When_Uppercased, +  CR_Cherokee,    CR_Cn,    CR_Co, +  CR_Common, +  CR_Coptic,    CR_Cs, +  CR_Cuneiform, +  CR_Cypriot, +  CR_Cyrillic, +  CR_Dash, +  CR_Default_Ignorable_Code_Point, +  CR_Deprecated, +  CR_Deseret, +  CR_Devanagari, +  CR_Diacritic, +  CR_Duployan, +  CR_Egyptian_Hieroglyphs, +  CR_Elbasan, +  CR_Ethiopic, +  CR_Extender, +  CR_Georgian, +  CR_Glagolitic, +  CR_Gothic, +  CR_Grantha, +  CR_Grapheme_Base, +  CR_Grapheme_Extend, +  CR_Grapheme_Link, +  CR_Greek, +  CR_Gujarati, +  CR_Gurmukhi, +  CR_Han, +  CR_Hangul, +  CR_Hanunoo, +  CR_Hatran, +  CR_Hebrew, +  CR_Hex_Digit, +  CR_Hiragana, +  CR_Hyphen, +  CR_IDS_Binary_Operator, +  CR_IDS_Trinary_Operator, +  CR_ID_Continue, +  CR_ID_Start, +  CR_Ideographic, +  CR_Imperial_Aramaic, +  CR_Inherited, +  CR_Inscriptional_Pahlavi, +  CR_Inscriptional_Parthian, +  CR_Javanese, +  CR_Join_Control, +  CR_Kaithi, +  CR_Kannada, +  CR_Katakana, +  CR_Kayah_Li, +  CR_Kharoshthi, +  CR_Khmer, +  CR_Khojki, +  CR_Khudawadi,    CR_L,    CR_LC, +  CR_Lao, +  CR_Latin, +  CR_Lepcha, +  CR_Limbu, +  CR_Linear_A, +  CR_Linear_B, +  CR_Lisu,    CR_Ll,    CR_Lm,    CR_Lo, +  CR_Logical_Order_Exception, +  CR_Lowercase,    CR_Lt,    CR_Lu, +  CR_Lycian, +  CR_Lydian,    CR_M, +  CR_Mahajani, +  CR_Malayalam, +  CR_Mandaic, +  CR_Manichaean, +  CR_Math,    CR_Mc,    CR_Me, +  CR_Meetei_Mayek, +  CR_Mende_Kikakui, +  CR_Meroitic_Cursive, +  CR_Meroitic_Hieroglyphs, +  CR_Miao,    CR_Mn, +  CR_Modi, +  CR_Mongolian, +  CR_Mro, +  CR_Multani, +  CR_Myanmar,    CR_N, +  CR_Nabataean,    CR_Nd, +  CR_New_Tai_Lue, +  CR_Nko,    CR_Nl,    CR_No, +  CR_Noncharacter_Code_Point, +  CR_Ogham, +  CR_Ol_Chiki, +  CR_Old_Hungarian, +  CR_Old_Italic, +  CR_Old_North_Arabian, +  CR_Old_Permic, +  CR_Old_Persian, +  CR_Old_South_Arabian, +  CR_Old_Turkic, +  CR_Oriya, +  CR_Osmanya, +  CR_Other_Alphabetic, +  CR_Other_Default_Ignorable_Code_Point, +  CR_Other_Grapheme_Extend, +  CR_Other_ID_Continue, +  CR_Other_ID_Start, +  CR_Other_Lowercase, +  CR_Other_Math, +  CR_Other_Uppercase,    CR_P, +  CR_Pahawh_Hmong, +  CR_Palmyrene, +  CR_Pattern_Syntax, +  CR_Pattern_White_Space, +  CR_Pau_Cin_Hau,    CR_Pc,    CR_Pd,    CR_Pe,    CR_Pf, +  CR_Phags_Pa, +  CR_Phoenician,    CR_Pi,    CR_Po,    CR_Ps, +  CR_Psalter_Pahlavi, +  CR_Quotation_Mark, +  CR_Radical, +  CR_Rejang, +  CR_Runic,    CR_S, +  CR_STerm, +  CR_Samaritan, +  CR_Saurashtra,    CR_Sc, +  CR_Sharada, +  CR_Shavian, +  CR_Siddham, +  CR_SignWriting, +  CR_Sinhala,    CR_Sk,    CR_Sm,    CR_So, -  CR_Z, -  CR_Zl, -  CR_Zp, -  CR_Zs, -  CR_Math, -  CR_Alphabetic, -  CR_Lowercase, -  CR_Uppercase, -  CR_Cased, -  CR_Case_Ignorable, -  CR_Changes_When_Lowercased, -  CR_Changes_When_Uppercased, -  CR_Changes_When_Titlecased, -  CR_Changes_When_Casefolded, -  CR_Changes_When_Casemapped, -  CR_ID_Start, -  CR_ID_Continue, -  CR_XID_Start, -  CR_XID_Continue, -  CR_Default_Ignorable_Code_Point, -  CR_Grapheme_Extend, -  CR_Grapheme_Base, -  CR_Grapheme_Link, -  CR_Common, -  CR_Latin, -  CR_Greek, -  CR_Cyrillic, -  CR_Armenian, -  CR_Hebrew, -  CR_Arabic, +  CR_Soft_Dotted, +  CR_Sora_Sompeng, +  CR_Sundanese, +  CR_Syloti_Nagri,    CR_Syriac, -  CR_Thaana, -  CR_Devanagari, -  CR_Bengali, -  CR_Gurmukhi, -  CR_Gujarati, -  CR_Oriya, -  CR_Tamil, -  CR_Telugu, -  CR_Kannada, -  CR_Malayalam, -  CR_Sinhala, -  CR_Thai, -  CR_Lao, -  CR_Tibetan, -  CR_Myanmar, -  CR_Georgian, -  CR_Hangul, -  CR_Ethiopic, -  CR_Cherokee, -  CR_Canadian_Aboriginal, -  CR_Ogham, -  CR_Runic, -  CR_Khmer, -  CR_Mongolian, -  CR_Hiragana, -  CR_Katakana, -  CR_Bopomofo, -  CR_Han, -  CR_Yi, -  CR_Old_Italic, -  CR_Gothic, -  CR_Deseret, -  CR_Inherited,    CR_Tagalog, -  CR_Hanunoo, -  CR_Buhid,    CR_Tagbanwa, -  CR_Limbu,    CR_Tai_Le, -  CR_Linear_B, -  CR_Ugaritic, -  CR_Shavian, -  CR_Osmanya, -  CR_Cypriot, -  CR_Braille, -  CR_Buginese, -  CR_Coptic, -  CR_New_Tai_Lue, -  CR_Glagolitic, -  CR_Tifinagh, -  CR_Syloti_Nagri, -  CR_Old_Persian, -  CR_Kharoshthi, -  CR_Balinese, -  CR_Cuneiform, -  CR_Phoenician, -  CR_Phags_Pa, -  CR_Nko, -  CR_Sundanese, -  CR_Lepcha, -  CR_Ol_Chiki, -  CR_Vai, -  CR_Saurashtra, -  CR_Kayah_Li, -  CR_Rejang, -  CR_Lycian, -  CR_Carian, -  CR_Lydian, -  CR_Cham,    CR_Tai_Tham,    CR_Tai_Viet, -  CR_Avestan, -  CR_Egyptian_Hieroglyphs, -  CR_Samaritan, -  CR_Lisu, -  CR_Bamum, -  CR_Javanese, -  CR_Meetei_Mayek, -  CR_Imperial_Aramaic, -  CR_Old_South_Arabian, -  CR_Inscriptional_Parthian, -  CR_Inscriptional_Pahlavi, -  CR_Old_Turkic, -  CR_Kaithi, -  CR_Batak, -  CR_Brahmi, -  CR_Mandaic, -  CR_Chakma, -  CR_Meroitic_Cursive, -  CR_Meroitic_Hieroglyphs, -  CR_Miao, -  CR_Sharada, -  CR_Sora_Sompeng,    CR_Takri, -  CR_Caucasian_Albanian, -  CR_Bassa_Vah, -  CR_Duployan, -  CR_Elbasan, -  CR_Grantha, -  CR_Pahawh_Hmong, -  CR_Khojki, -  CR_Linear_A, -  CR_Mahajani, -  CR_Manichaean, -  CR_Mende_Kikakui, -  CR_Modi, -  CR_Mro, -  CR_Old_North_Arabian, -  CR_Nabataean, -  CR_Palmyrene, -  CR_Pau_Cin_Hau, -  CR_Old_Permic, -  CR_Psalter_Pahlavi, -  CR_Siddham, -  CR_Khudawadi, -  CR_Tirhuta, -  CR_Warang_Citi, -  CR_Ahom, -  CR_Anatolian_Hieroglyphs, -  CR_Hatran, -  CR_Multani, -  CR_Old_Hungarian, -  CR_SignWriting, -  CR_White_Space, -  CR_Bidi_Control, -  CR_Join_Control, -  CR_Dash, -  CR_Hyphen, -  CR_Quotation_Mark, +  CR_Tamil, +  CR_Telugu,    CR_Terminal_Punctuation, -  CR_Other_Math, -  CR_Hex_Digit, -  CR_ASCII_Hex_Digit, -  CR_Other_Alphabetic, -  CR_Ideographic, -  CR_Diacritic, -  CR_Extender, -  CR_Other_Lowercase, -  CR_Other_Uppercase, -  CR_Noncharacter_Code_Point, -  CR_Other_Grapheme_Extend, -  CR_IDS_Binary_Operator, -  CR_IDS_Trinary_Operator, -  CR_Radical, +  CR_Thaana, +  CR_Thai, +  CR_Tibetan, +  CR_Tifinagh, +  CR_Tirhuta, +  CR_Ugaritic,    CR_Unified_Ideograph, -  CR_Other_Default_Ignorable_Code_Point, -  CR_Deprecated, -  CR_Soft_Dotted, -  CR_Logical_Order_Exception, -  CR_Other_ID_Start, -  CR_Other_ID_Continue, -  CR_STerm, -  CR_Variation_Selector, -  CR_Pattern_White_Space, -  CR_Pattern_Syntax,    CR_Unknown, +  CR_Uppercase, +  CR_Vai, +  CR_Variation_Selector, +  CR_Warang_Citi, +  CR_White_Space, +  CR_XID_Continue, +  CR_XID_Start, +  CR_Yi, +  CR_Z, +  CR_Zl, +  CR_Zp, +  CR_Zs,    CR_In_Basic_Latin,    CR_In_Latin_1_Supplement,    CR_In_Latin_Extended_A, @@ -23000,7 +23000,7 @@ hash (register const char *str, register unsigned int len)        5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163,        5163, 5163, 5163, 5163, 5163, 5163      }; -  register unsigned int hval = len; +  register int hval = len;    switch (hval)      { @@ -23038,6 +23038,12 @@ hash (register const char *str, register unsigned int len)    return hval + asso_values[(unsigned char)str[len - 1]];  } +#ifdef __GNUC__ +__inline +#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ +__attribute__ ((__gnu_inline__)) +#endif +#endif  const struct PropertyNameCtype *  unicode_lookup_property_name (register const char *str, register unsigned int len)  { @@ -23045,55 +23051,55 @@ unicode_lookup_property_name (register const char *str, register unsigned int le      {        {""}, -      {"n",                                   34}, +      {"n",                                  144},        {""}, -      {"z",                                   51}, +      {"z",                                  234},        {""}, {""}, {""}, {""}, -      {"zzzz",                               237}, +      {"zzzz",                               225}, -      {"mn",                                  33}, +      {"mn",                                 138}, -      {"cn",                                  20}, +      {"cn",                                  51},        {""}, {""}, {""}, -      {"ci",                                  60}, +      {"ci",                                  38}, -      {"m",                                   30}, +      {"m",                                  125},        {""}, -      {"c",                                   17}, +      {"c",                                   35},        {""}, {""}, {""}, {""}, {""},        {"inmanichaean",                       430}, -      {"mani",                               185}, +      {"mani",                               129}, -      {"mc",                                  31}, +      {"mc",                                 131}, -      {"cc",                                  18}, +      {"cc",                                  41},        {""}, -      {"qaai",                               114}, +      {"qaai",                                94},        {""}, {""}, {""}, {""}, {""}, -      {"qaac",                               128}, +      {"qaac",                                54},        {""}, {""}, {""}, {""}, {""}, {""},        {"incham",                             373},        {""}, {""}, {""}, {""}, -      {"mandaic",                            168}, +      {"mandaic",                            128},        {""}, {""}, -      {"sm",                                  49}, +      {"sm",                                 202},        {""}, -      {"sc",                                  47}, +      {"sc",                                 195},        {""}, {""}, {""}, {""}, -      {"cans",                               101}, +      {"cans",                                36},        {""}, {""}, {""}, {""},        {"ascii",                               14}, @@ -23104,17 +23110,17 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"incuneiform",                        456}, -      {"s",                                   46}, +      {"s",                                  191},        {"inarmenian",                         248}, -      {"zs",                                  54}, +      {"zs",                                 237},        {""}, {""}, {""}, {""}, {""}, {""}, -      {"cs",                                  22}, +      {"cs",                                  55},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"me",                                  32}, +      {"me",                                 132},        {""}, {""}, {""}, {""},        {"incommonindicnumberforms",           364}, @@ -23128,7 +23134,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inipaextensions",                    242},        {""}, {""}, {""}, {""}, -      {"initialpunctuation",                  43}, +      {"initialpunctuation",                 183},        {""}, {""}, {""},        {"inancientsymbols",                   402}, @@ -23137,13 +23143,13 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inthaana",                           253},        {""}, -      {"cf",                                  19}, +      {"cf",                                  42},        {""},        {"incuneiformnumbersandpunctuation",   457},        {""}, {""}, {""}, -      {"mtei",                               159}, +      {"mtei",                               133},        {""},        {"inspecials",                         397}, @@ -23155,17 +23161,17 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inmiscellaneousmathematicalsymbolsa", 323},        {""}, {""}, {""}, -      {"lm",                                  26}, +      {"lm",                                 117}, -      {"lina",                               183}, +      {"lina",                               113}, -      {"lc",                                  24}, +      {"lc",                                 108},        {""},        {"inlycian",                           404},        {""}, {""}, {""}, {""}, {""}, -      {"lana",                               151}, +      {"lana",                               212},        {""},        {"intaixuanjingsymbols",               472}, @@ -23175,14 +23181,14 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"alnum",                               13},        {""}, -      {"sterm",                              233}, +      {"sterm",                              192},        {"intaitham",                          292},        {"intransportandmapsymbols",           486},        {""}, -      {"taile",                              120}, +      {"taile",                              211},        {""},        {"inmalayalam",                        266}, @@ -23201,20 +23207,20 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inmiscellaneoussymbolsandpictographs", 483},        {""}, {""}, -      {"sinhala",                             92}, +      {"sinhala",                            200},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"taiviet",                            152}, +      {"taiviet",                            213},        {""}, {""}, -      {"ext",                                218}, +      {"ext",                                 69},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"latn",                                75}, +      {"latn",                               110}, -      {"latin",                               75}, +      {"latin",                              110}, -      {"ital",                               111}, +      {"ital",                               155},        {"intamil",                            263},        {""}, @@ -23222,7 +23228,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inmultani",                          446},        {""}, -      {"taml",                                88}, +      {"taml",                               215},        {""}, {""}, {""}, {""}, {""}, {""},        {"inrunic",                            279}, @@ -23230,17 +23236,17 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"incarian",                           405},        {""}, -      {"armn",                                78}, +      {"armn",                                21},        {""}, -      {"armi",                               160}, +      {"armi",                                93}, -      {"cari",                               148}, +      {"cari",                                37},        {"inlatinextendedc",                   331},        {""}, -      {"armenian",                            78}, +      {"armenian",                            21},        {"inmyanmar",                          271}, @@ -23250,40 +23256,40 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inlatinextendeda",                   240},        {""}, {""}, {""}, -      {"carian",                             148}, +      {"carian",                              37},        {""}, {""},        {"intaile",                            288},        {""}, {""}, {""}, -      {"tale",                               120}, +      {"tale",                               211},        {""}, {""}, -      {"arabic",                              80}, +      {"arabic",                              20},        {""}, {""}, -      {"l",                                   23}, +      {"l",                                  107}, -      {"nl",                                  36}, +      {"nl",                                 149}, -      {"zl",                                  52}, +      {"zl",                                 235},        {""},        {"insyriac",                           251},        {""}, -      {"samr",                               155}, +      {"samr",                               193},        {""}, -      {"merc",                               170}, +      {"merc",                               135},        {""},        {"inlinearbideograms",                 399},        {""}, {""}, -      {"samaritan",                          155}, +      {"samaritan",                          193}, -      {"lt",                                  28}, +      {"lt",                                 121},        {""}, {""},        {"insharada",                          443}, @@ -23295,12 +23301,12 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inruminumeralsymbols",               437},        {""}, {""}, -      {"miao",                               172}, +      {"miao",                               137},        {"inlatinextendede",                   378},        {""}, {""}, {""}, -      {"zinh",                               114}, +      {"zinh",                                94},        {""}, {""}, {""},        {"inahom",                             453}, @@ -23308,10 +23314,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"incherokee",                         276}, -      {"han",                                109}, +      {"han",                                 80},        {""}, {""}, -      {"hani",                               109}, +      {"hani",                                80},        {"inosmanya",                          414}, @@ -23319,94 +23325,94 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, -      {"cham",                               150}, +      {"cham",                                44},        {""},        {"inmahajani",                         442}, -      {"osma",                               124}, +      {"osma",                               162},        {""}, {""}, -      {"manichaean",                         185}, +      {"manichaean",                         129}, -      {"term",                               211}, +      {"term",                               217},        {""}, -      {"sinh",                                92}, +      {"sinh",                               200},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {"cntrl",                                3},        {""}, {""}, {""}, {""}, -      {"chakma",                             169}, +      {"chakma",                              43},        {"insinhala",                          267},        {""}, {""}, {""}, -      {"tamil",                               88}, +      {"tamil",                              215},        {"inethiopic",                         274},        {""}, {""}, -      {"connectorpunctuation",                39}, +      {"connectorpunctuation",               177}, -      {"shavian",                            123}, +      {"shavian",                            197},        {""}, {""}, {""}, -      {"joinc",                              207}, +      {"joinc",                               98},        {"inenclosedalphanumerics",            317},        {""}, {""}, {""}, {""}, {""}, -      {"ahex",                               214}, +      {"ahex",                                15},        {"inlatinextendedadditional",          304}, -      {"lineara",                            183}, +      {"lineara",                            113},        {""}, {""}, {""}, {""}, {""}, {""},        {"inenclosedcjklettersandmonths",      350}, -      {"hex",                                213}, +      {"hex",                                 85},        {""}, {""}, -      {"thai",                                93}, +      {"thai",                               219}, -      {"mahj",                               184}, +      {"mahj",                               126},        {""}, {""}, {""}, -      {"math",                                55}, +      {"math",                               130},        {""}, {""}, -      {"ll",                                  25}, +      {"ll",                                 116}, -      {"thaa",                                82}, +      {"thaa",                               218},        {""}, -      {"hatran",                             201}, +      {"hatran",                              83},        {""}, {""}, {""}, {""}, {""}, {""}, -      {"mahajani",                           184}, +      {"mahajani",                           126},        {"insinhalaarchaicnumbers",            444},        {""}, -      {"taitham",                            151}, +      {"taitham",                            212}, -      {"thaana",                              82}, +      {"thaana",                             218},        {""}, {""}, {""}, {""}, -      {"ethi",                                99}, +      {"ethi",                                68},        {"inenclosedalphanumericsupplement",   481},        {""}, {""}, {""}, {""}, -      {"meroiticcursive",                    170}, +      {"meroiticcursive",                    135},        {"inideographicdescriptioncharacters", 340},        {""}, {""}, {""}, -      {"terminalpunctuation",                211}, +      {"terminalpunctuation",                217},        {""}, {""}, {""}, {""}, {""}, {""},        {"inemoticons",                        484}, @@ -23415,10 +23421,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"intifinagh",                         334},        {""}, -      {"asciihexdigit",                      214}, +      {"asciihexdigit",                       15},        {""}, {""}, {""}, {""}, -      {"tifinagh",                           131}, +      {"tifinagh",                           221},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, @@ -23430,26 +23436,26 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, -      {"loe",                                230}, +      {"loe",                                119},        {""}, {""}, {""}, {""}, {""}, {""}, -      {"titlecaseletter",                     28}, +      {"titlecaseletter",                    121},        {""}, {""}, -      {"inscriptionalparthian",              162}, +      {"inscriptionalparthian",               96},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, -      {"oriya",                               87}, +      {"oriya",                              161},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"hira",                               106}, +      {"hira",                                86},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"sora",                               174}, +      {"sora",                               205}, -      {"mero",                               171}, +      {"mero",                               136},        {""}, {""}, {""}, {""},        {"inarrows",                           312}, @@ -23458,7 +23464,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inhiragana",                         342},        {""}, {""}, {""}, {""}, {""}, {""}, -      {"no",                                  37}, +      {"no",                                 150},        {"inmahjongtiles",                     478},        {""}, {""}, {""}, @@ -23466,45 +23472,45 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"innko",                              254},        {""}, {""}, -      {"co",                                  21}, +      {"co",                                  52}, -      {"cher",                               100}, +      {"cher",                                50},        {""}, {""},        {"inmro",                              462},        {""}, {""}, {""}, {""}, {""}, {""}, -      {"common",                              74}, +      {"common",                              53}, -      {"cwcm",                                65}, +      {"cwcm",                                46},        {""}, {""}, {""},        {"inmiao",                             465},        {""}, {""}, {""}, {""}, -      {"inscriptionalpahlavi",               163}, +      {"inscriptionalpahlavi",                95},        {""}, {""},        {"inmathematicalalphanumericsymbols",  474}, -      {"so",                                  50}, +      {"so",                                 203},        {""}, -      {"hano",                               116}, +      {"hano",                                82}, -      {"tirh",                               197}, +      {"tirh",                               222},        {""}, {""}, {""},        {"inhatran",                           422},        {"inolchiki",                          298}, -      {"ahom",                               199}, +      {"ahom",                                16},        {""}, -      {"di",                                  70}, +      {"di",                                  60}, -      {"hatr",                               201}, +      {"hatr",                                83},        {""},        {"inogham",                            278}, @@ -23516,41 +23522,41 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inmodi",                             451},        {""}, -      {"idc",                                 67}, +      {"idc",                                 90}, -      {"mand",                               168}, +      {"mand",                               128},        {""}, {""}, {""},        {"inmandaic",                          256}, -      {"dia",                                217}, +      {"dia",                                 64}, -      {"cwcf",                                64}, +      {"cwcf",                                45},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"xidc",                                69}, +      {"xidc",                               231},        {""}, {""}, -      {"sind",                               196}, +      {"sind",                               106},        {"newline",                              0},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"mend",                               186}, +      {"mend",                               134},        {""}, {""}, {""}, -      {"newtailue",                          129}, +      {"newtailue",                          147},        {""}, {""},        {"inshorthandformatcontrols",          468},        {""}, {""}, {""}, -      {"anatolianhieroglyphs",               200}, +      {"anatolianhieroglyphs",                18}, -      {"xids",                                68}, +      {"xids",                               232},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"ids",                                 66}, +      {"ids",                                 91},        {""}, {""}, {""}, {""}, {""},        {"innewtailue",                        289}, @@ -23561,7 +23567,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"insundanese",                        295},        {""}, {""}, {""}, {""}, {""}, {""}, -      {"lo",                                  27}, +      {"lo",                                 118},        {""}, {""}, {""},        {"indominotiles",                      479}, @@ -23569,28 +23575,28 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inlao",                              269},        {""}, {""}, {""}, {""}, {""}, {""}, -      {"lao",                                 94}, +      {"lao",                                109}, -      {"laoo",                                94}, +      {"laoo",                               109}, -      {"mongolian",                          105}, +      {"mongolian",                          140},        {""}, {""}, -      {"cwt",                                 63}, +      {"cwt",                                 48},        {""}, -      {"idst",                               224}, +      {"idst",                                89}, -      {"format",                              19}, +      {"format",                              42},        {""}, {""}, -      {"lineseparator",                       52}, +      {"lineseparator",                      235},        {""}, {""}, {""}, {""}, {""}, -      {"letter",                              23}, +      {"letter",                             107},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"idcontinue",                          67}, +      {"idcontinue",                          90},        {""}, {""},        {"inanatolianhieroglyphs",             460}, @@ -23599,20 +23605,20 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inlydian",                           424},        {""}, -      {"pi",                                  43}, +      {"pi",                                 183}, -      {"nchar",                              221}, +      {"nchar",                              151},        {""}, {""}, {""}, {""},        {"inspacingmodifierletters",           243}, -      {"oalpha",                             215}, +      {"oalpha",                             163},        {""}, {""},        {"indeseret",                          412},        {""}, -      {"pc",                                  39}, +      {"pc",                                 177},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -23621,183 +23627,183 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inphaistosdisc",                     403}, -      {"joincontrol",                        207}, +      {"joincontrol",                         98},        {"inlowsurrogates",                    385},        {""}, -      {"mro",                                188}, +      {"mro",                                141}, -      {"mroo",                               188}, +      {"mroo",                               141},        {""}, {""}, {""}, -      {"xidstart",                            68}, +      {"xidstart",                           232},        {""}, {""}, {""}, {""}, {""}, -      {"wara",                               198}, +      {"wara",                               229},        {""}, {""},        {"inwarangciti",                       454},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, -      {"ps",                                  45}, +      {"ps",                                 185},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"pe",                                  41}, +      {"pe",                                 179},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"cwl",                                 61}, +      {"cwl",                                 47},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {"incoptic",                           332},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"diacritic",                          217}, +      {"diacritic",                           64},        {""}, {""}, -      {"pf",                                  42}, +      {"pf",                                 180},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""},        {"space",                                9},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"hanunoo",                            116}, +      {"hanunoo",                             82},        {""}, {""},        {"incyrillicextendeda",                336},        {""}, {""}, {""}, -      {"odi",                                227}, +      {"odi",                                164},        {""}, {""}, {""}, {""}, {""}, -      {"modi",                               187}, +      {"modi",                               139}, -      {"oidc",                               232}, +      {"oidc",                               166},        {"incopticepactnumbers",               406},        {""}, -      {"palm",                               191}, +      {"palm",                               173},        {"insundanesesupplement",              299}, -      {"patws",                              235}, +      {"patws",                              175},        {""}, {""}, {""},        {"inolditalic",                        407},        {"inlepcha",                           297}, -      {"shaw",                               123}, +      {"shaw",                               197},        {""}, -      {"omath",                              212}, +      {"omath",                              169},        {""}, {""}, {""}, {""}, {""},        {"alpha",                                1},        {""}, {""}, {""}, {""}, {""}, -      {"oids",                               231}, +      {"oids",                               167},        {""}, {""}, {""}, -      {"control",                             18}, +      {"control",                             41}, -      {"ideo",                               216}, +      {"ideo",                                92}, -      {"lepc",                               141}, +      {"lepc",                               111}, -      {"psalterpahlavi",                     194}, +      {"psalterpahlavi",                     186}, -      {"dsrt",                               113}, +      {"dsrt",                                62},        {""}, -      {"otheridcontinue",                    232}, +      {"otheridcontinue",                    166},        {""}, {""}, {""},        {"inpalmyrene",                        420}, -      {"decimalnumber",                       35}, +      {"decimalnumber",                      146},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"noncharactercodepoint",              221}, +      {"noncharactercodepoint",              151}, -      {"idstart",                             66}, +      {"idstart",                             91}, -      {"otheralphabetic",                    215}, +      {"otheralphabetic",                    163}, -      {"letternumber",                        36}, +      {"letternumber",                       149},        {""}, {""}, {""}, {""}, -      {"dash",                               208}, +      {"dash",                                59},        {""}, {""}, -      {"xidcontinue",                         69}, +      {"xidcontinue",                        231},        {""}, {""}, {""}, -      {"finalpunctuation",                    42}, +      {"finalpunctuation",                   180}, -      {"extender",                           218}, +      {"extender",                            69},        {""}, {""}, {""}, -      {"siddham",                            195}, +      {"siddham",                            198},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {"inoldturkic",                        435},        {""}, {""}, -      {"sharada",                            173}, +      {"sharada",                            196},        {""}, {""}, -      {"whitespace",                         205}, +      {"whitespace",                         230},        {""}, {""}, {""}, {""},        {"inmodifiertoneletters",              361},        {""}, -      {"radical",                            225}, +      {"radical",                            188},        {""}, -      {"canadianaboriginal",                 101}, +      {"canadianaboriginal",                  36},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {"inethiopicextendeda",                377}, -      {"imperialaramaic",                    160}, +      {"imperialaramaic",                     93},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"perm",                               193}, +      {"perm",                               157}, -      {"deseret",                            113}, +      {"deseret",                             62},        {""}, {""}, {""}, {""}, -      {"casedletter",                         24}, +      {"casedletter",                        108},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""},        {"inimperialaramaic",                  419},        {""}, {""}, -      {"otheridstart",                       231}, +      {"otheridstart",                       167},        {""}, {""}, {""}, {""}, -      {"prti",                               162}, +      {"prti",                                96},        {""}, {""}, {""}, {""}, {""}, -      {"cprt",                               125}, +      {"cprt",                                57},        {""}, {""}, {""}, {""}, {""}, -      {"othersymbol",                         50}, +      {"othersymbol",                        203},        {""}, {""}, {""}, -      {"coptic",                             128}, +      {"coptic",                              54},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, -      {"otherlowercase",                     219}, +      {"otherlowercase",                     168}, -      {"phnx",                               137}, +      {"phnx",                               182},        {""}, {""}, {""},        {"inphoenician",                       423}, @@ -23808,35 +23814,35 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inlatin1supplement",                 239},        {""}, {""}, {""}, -      {"xpeo",                               133}, +      {"xpeo",                               158},        {""}, {""}, {""},        {"ininscriptionalparthian",            432},        {"ininscriptionalpahlavi",             433}, -      {"other",                               17}, +      {"other",                               35}, -      {"privateuse",                          21}, +      {"privateuse",                          52},        {""}, {""}, {""}, {""}, -      {"othernumber",                         37}, +      {"othernumber",                        150},        {""}, {""}, {""}, {""},        {"inenclosedideographicsupplement",    482},        {""}, -      {"copt",                               128}, +      {"copt",                                54},        {""}, {""}, {""}, {""},        {"print",                                7},        {""}, -      {"cuneiform",                          136}, +      {"cuneiform",                           56}, -      {"olditalic",                          111}, +      {"olditalic",                          155}, -      {"xsux",                               136}, +      {"xsux",                                56},        {""}, {""}, {""},        {"inmongolian",                        285}, @@ -23844,28 +23850,28 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inancientgreekmusicalnotation",      471}, -      {"sundanese",                          140}, +      {"sundanese",                          206},        {"inoldnortharabian",                  429},        {""}, -      {"patternsyntax",                      236}, +      {"patternsyntax",                      174},        {""}, {""}, -      {"inherited",                          114}, +      {"inherited",                           94},        {"ingrantha",                          448},        {"inphoneticextensions",               301},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"saurashtra",                         144}, +      {"saurashtra",                         194},        {""}, {""}, {""}, {""}, {""},        {"inancientgreeknumbers",              401},        {""}, {""}, {""}, {""}, {""}, -      {"shrd",                               173}, +      {"shrd",                               196},        {""}, {""}, {""},        {"inoldsoutharabian",                  428}, @@ -23874,10 +23880,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inalphabeticpresentationforms",      388}, -      {"spaceseparator",                      54}, +      {"spaceseparator",                     237},        {""}, {""}, {""}, {""}, {""}, -      {"olower",                             219}, +      {"olower",                             168},        {""},        {"ingeneralpunctuation",               306}, @@ -23885,30 +23891,30 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inunifiedcanadianaboriginalsyllabics", 277},        {""}, -      {"bamum",                              157}, +      {"bamum",                               25},        {""}, {""},        {"inarabic",                           250},        {""}, {""}, {""}, -      {"phli",                               163}, +      {"phli",                                95},        {"inphoneticextensionssupplement",     302},        {""}, -      {"patternwhitespace",                  235}, +      {"patternwhitespace",                  175},        {""},        {"inbasiclatin",                       238},        {""}, -      {"othermath",                          212}, +      {"othermath",                          169}, -      {"idsbinaryoperator",                  223}, +      {"idsbinaryoperator",                   88},        {"inmathematicaloperators",            313}, -      {"multani",                            202}, +      {"multani",                            142},        {"ingujarati",                         261},        {""}, {""}, {""}, {""}, @@ -23919,113 +23925,113 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"innumberforms",                      311}, -      {"nd",                                  35}, +      {"nd",                                 146},        {""}, -      {"yi",                                 110}, +      {"yi",                                 233}, -      {"lisu",                               156}, +      {"lisu",                               115},        {""}, {""}, -      {"yiii",                               110}, +      {"yiii",                               233},        {""},        {"inpsalterpahlavi",                   434},        {""}, {""}, {""}, -      {"tagbanwa",                           118}, +      {"tagbanwa",                           210},        {""}, {""}, {""}, {""}, {""}, -      {"bass",                               177}, +      {"bass",                                26},        {""}, {""}, {""}, {""}, -      {"nbat",                               190}, +      {"nbat",                               145},        {"inbyzantinemusicalsymbols",          469},        {""}, -      {"closepunctuation",                    41}, +      {"closepunctuation",                   179},        {""}, -      {"tfng",                               131}, +      {"tfng",                               221}, -      {"otherletter",                         27}, +      {"otherletter",                        118},        {""}, {""}, {""}, -      {"sd",                                 229}, +      {"sd",                                 204},        {""}, {""}, -      {"lowercase",                           57}, +      {"lowercase",                          120}, -      {"sidd",                               195}, +      {"sidd",                               198},        {""}, -      {"nabataean",                          190}, +      {"nabataean",                          145},        {""}, -      {"lepcha",                             141}, +      {"lepcha",                             111},        {"inarabicpresentationformsa",         389},        {""}, -      {"modifierletter",                      26}, +      {"modifierletter",                     117},        {"intags",                             496}, -      {"mult",                               202}, +      {"mult",                               142},        {""}, {""},        {"insiddham",                          450}, -      {"talu",                               129}, +      {"talu",                               147},        {""}, {""}, {""}, {""}, -      {"cased",                               59}, +      {"cased",                               39},        {""},        {"intibetan",                          270},        {""}, {""}, {""}, {""}, {""}, {""}, -      {"separator",                           51}, +      {"separator",                          234},        {""}, -      {"runic",                              103}, +      {"runic",                              190},        {"inmiscellaneousmathematicalsymbolsb", 327},        {""}, {""}, {""}, {""}, -      {"linb",                               121}, +      {"linb",                               114},        {"inbraillepatterns",                  325}, -      {"oldpersian",                         133}, +      {"oldpersian",                         158},        {""},        {"inugaritic",                         410}, -      {"telu",                                89}, +      {"telu",                               216},        {""}, -      {"limb",                               119}, +      {"limb",                               112},        {""}, -      {"oldpermic",                          193}, +      {"oldpermic",                          157},        {""}, -      {"bali",                               135}, +      {"bali",                                24},        {"inmyanmarextendedb",                 372}, -      {"tibt",                                95}, +      {"tibt",                               220},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"saur",                               144}, +      {"saur",                               194},        {""}, {""}, {""}, -      {"po",                                  44}, +      {"po",                                 184},        {""}, -      {"tibetan",                             95}, +      {"tibetan",                            220},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, @@ -24034,44 +24040,44 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inbalinese",                         294}, -      {"elba",                               179}, +      {"elba",                                67},        {""}, {""}, {""}, {""}, -      {"bengali",                             84}, +      {"bengali",                             28}, -      {"gran",                               180}, +      {"gran",                                73},        {""}, {""}, {""}, -      {"phoenician",                         137}, +      {"phoenician",                         182},        {""},        {"ingurmukhi",                         260},        {""}, {""}, -      {"caseignorable",                       60}, +      {"caseignorable",                       38},        {""}, {""}, {""}, {""}, -      {"lyci",                               147}, +      {"lyci",                               123},        {""},        {"inyijinghexagramsymbols",            353},        {""}, -      {"mlym",                                91}, +      {"mlym",                               127},        {""}, {""}, {""}, {""}, {""}, {""}, -      {"lycian",                             147}, +      {"lycian",                             123},        {""}, {""}, {""}, {""}, -      {"elbasan",                            179}, +      {"elbasan",                             67},        {""}, {""}, {""}, {""}, {""}, -      {"balinese",                           135}, +      {"balinese",                            24}, -      {"narb",                               189}, +      {"narb",                               156},        {""}, -      {"brai",                               126}, +      {"brai",                                32},        {""}, {""},        {"insuttonsignwriting",                475}, @@ -24079,30 +24085,30 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"insorasompeng",                      440}, -      {"malayalam",                           91}, +      {"malayalam",                          127},        {""}, {""}, -      {"arab",                                80}, +      {"arab",                                20},        {""}, -      {"brahmi",                             167}, +      {"brahmi",                              31},        {""},        {"incountingrodnumerals",              473},        {""}, {""}, {""}, -      {"rjng",                               146}, +      {"rjng",                               189}, -      {"mong",                               105}, +      {"mong",                               140},        {""}, {""}, {""},        {"incyrillicsupplement",               247},        {""}, {""}, {""}, {""}, {""}, {""}, -      {"ogam",                               102}, +      {"ogam",                               152},        {""}, -      {"sarb",                               161}, +      {"sarb",                               159},        {"lower",                                6},        {""}, @@ -24110,15 +24116,15 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inrejang",                           369},        {""}, {""}, {""}, {""}, {""}, -      {"hmng",                               181}, +      {"hmng",                               172},        {""}, {""}, -      {"tirhuta",                            197}, +      {"tirhuta",                            222}, -      {"hang",                                98}, +      {"hang",                                81},        {""}, {""}, {""}, {""}, -      {"wspace",                             205}, +      {"wspace",                             230},        {""}, {""}, {""}, {""},        {"inlatinextendedd",                   362}, @@ -24129,52 +24135,52 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"incherokeesupplement",               379},        {""}, -      {"mymr",                                96}, +      {"mymr",                               143},        {""}, {""}, {""}, -      {"vai",                                143}, +      {"vai",                                227}, -      {"vaii",                               143}, +      {"vaii",                               227},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, -      {"ethiopic",                            99}, +      {"ethiopic",                            68},        {""}, -      {"sylotinagri",                        132}, +      {"sylotinagri",                        207},        {""}, {""}, {""}, {""}, -      {"myanmar",                             96}, +      {"myanmar",                            143},        {""}, -      {"syrc",                                81}, +      {"syrc",                               208},        {""},        {"inbrahmi",                           438},        {""}, {""}, {""}, -      {"mathsymbol",                          49}, +      {"mathsymbol",                         202},        {""}, -      {"runr",                               103}, +      {"runr",                               190},        {""}, {""}, {""}, {""}, {""},        {"inshavian",                          413}, -      {"gothic",                             112}, +      {"gothic",                              72},        {""}, {""}, {""}, {""}, {""}, -      {"syriac",                              81}, +      {"syriac",                             208}, -      {"p",                                   38}, +      {"p",                                  171},        {""}, -      {"zp",                                  53}, +      {"zp",                                 236},        {"induployan",                         467},        {""}, -      {"vs",                                 234}, +      {"vs",                                 228},        {""}, {""},        {"ingreekandcoptic",                   245}, @@ -24182,15 +24188,15 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"ingothic",                           408},        {""}, {""}, -      {"lowercaseletter",                     25}, +      {"lowercaseletter",                    116},        {""}, {""}, {""},        {"inoriya",                            262},        {""}, {""}, {""}, {""}, {""}, -      {"grext",                               71}, +      {"grext",                               75}, -      {"linearb",                            121}, +      {"linearb",                            114},        {"inyiradicals",                       356},        {""}, @@ -24202,12 +24208,12 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"ingeometricshapes",                  320},        {""}, -      {"java",                               158}, +      {"java",                                97},        {"inblockelements",                    319},        {""}, -      {"number",                              34}, +      {"number",                             144},        {"incombininghalfmarks",               392}, @@ -24218,21 +24224,21 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inlinearbsyllabary",                 398},        {""}, -      {"osmanya",                            124}, +      {"osmanya",                            162},        {""}, {""}, {""}, -      {"avst",                               153}, +      {"avst",                                23},        {""}, {""}, {""}, {""}, -      {"hexdigit",                           213}, +      {"hexdigit",                            85},        {""}, {""}, {""},        {"injavanese",                         371},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"cyrl",                                77}, +      {"cyrl",                                58}, -      {"avestan",                            153}, +      {"avestan",                             23},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -24240,10 +24246,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inornamentaldingbats",               485}, -      {"tavt",                               152}, +      {"tavt",                               213},        {""}, {""}, {""}, {""}, -      {"javanese",                           158}, +      {"javanese",                            97},        {"inethiopicextended",                 335},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -24258,7 +24264,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inarabicmathematicalalphabeticsymbols", 477},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"hangul",                              98}, +      {"hangul",                              81},        {""},        {"insuperscriptsandsubscripts",        307}, @@ -24273,10 +24279,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inoldpersian",                       411},        {""}, {""}, -      {"geor",                                97}, +      {"geor",                                70},        {""}, -      {"otherpunctuation",                    44}, +      {"otherpunctuation",                   184},        {""},        {"inoldpermic",                        409}, @@ -24284,10 +24290,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inalchemicalsymbols",                487}, -      {"sylo",                               132}, +      {"sylo",                               207},        {""}, -      {"hiragana",                           106}, +      {"hiragana",                            86},        {""}, {""},        {"word",                                12}, @@ -24299,41 +24305,41 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"insmallformvariants",                394},        {""}, {""}, {""}, {""}, {""}, -      {"sund",                               140}, +      {"sund",                               206}, -      {"brah",                               167}, +      {"brah",                                31},        {""},        {"insupplementalmathematicaloperators", 328}, -      {"glagolitic",                         130}, +      {"glagolitic",                          71},        {""}, {""}, -      {"braille",                            126}, +      {"braille",                             32},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, -      {"unassigned",                          20}, +      {"unassigned",                          51}, -      {"sgnw",                               204}, +      {"sgnw",                               199},        {""}, {""}, {""}, -      {"plrd",                               172}, +      {"plrd",                               137},        {""}, {""}, {""}, -      {"hebr",                                79}, +      {"hebr",                                84}, -      {"ogham",                              102}, +      {"ogham",                              152},        {""}, {""}, {""}, {""}, -      {"cyrillic",                            77}, +      {"cyrillic",                            58},        {""}, {""}, {""}, -      {"orya",                                87}, +      {"orya",                               161},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, -      {"grantha",                            180}, +      {"grantha",                             73},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, @@ -24349,38 +24355,38 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inhanguljamoextendeda",              370},        {""}, {""}, -      {"goth",                               112}, +      {"goth",                                72}, -      {"graphemebase",                        72}, +      {"graphemebase",                        74},        {""}, -      {"bidic",                              206}, +      {"bidic",                               29},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"ogrext",                             222}, +      {"ogrext",                             165},        {""}, {""}, {""}, {""}, {""}, {""}, -      {"idsb",                               223}, +      {"idsb",                                88},        {""}, {""}, {""}, {""}, {""}, {""}, {""},        {"invariationselectorssupplement",     497}, -      {"assigned",                            16}, +      {"assigned",                            22},        {""}, {""}, {""}, -      {"symbol",                              46}, +      {"symbol",                             191},        {""}, {""}, {""},        {"ingreekextended",                    305},        {""}, -      {"pauc",                               192}, +      {"pauc",                               176},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"meroitichieroglyphs",                171}, +      {"meroitichieroglyphs",                136},        {""}, -      {"logicalorderexception",              230}, +      {"logicalorderexception",              119},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -24399,17 +24405,17 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inkannada",                          265},        {""}, {""}, {""}, -      {"kana",                               107}, +      {"kana",                               101}, -      {"phagspa",                            138}, +      {"phagspa",                            181},        {""}, {""}, -      {"cakm",                               169}, +      {"cakm",                                43},        {"digit",                                4},        {""}, {""}, {""}, {""}, -      {"softdotted",                         229}, +      {"softdotted",                         204},        {""}, {""}, {""},        {"inchakma",                           441}, @@ -24423,13 +24429,13 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, -      {"warangciti",                         198}, +      {"warangciti",                         229},        {""}, {""}, {""}, {""}, {""}, {""}, {""},        {"incjkcompatibilityforms",            393},        {""}, {""}, -      {"idstrinaryoperator",                 224}, +      {"idstrinaryoperator",                  89},        {""},        {"incjkcompatibilityideographs",       387}, @@ -24438,55 +24444,55 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inkaithi",                           439},        {""}, {""}, {""}, {""}, {""}, -      {"takri",                              175}, +      {"takri",                              214},        {""}, {""}, {""}, {""}, {""}, {""}, -      {"phlp",                               194}, +      {"phlp",                               186}, -      {"mendekikakui",                       186}, +      {"mendekikakui",                       134},        {""},        {"punct",                                8},        {""}, {""}, -      {"otherdefaultignorablecodepoint",     227}, +      {"otherdefaultignorablecodepoint",     164},        {"inkatakana",                         343},        {""}, {""}, {""}, {""}, {""}, {""},        {"graph",                                5}, -      {"lydi",                               149}, +      {"lydi",                               124},        {""}, {""}, {""}, {""}, {""}, -      {"pd",                                  40}, +      {"pd",                                 178},        {""},        {"incjkstrokes",                       348},        {""}, {""}, -      {"lydian",                             149}, +      {"lydian",                             124},        {""}, {""}, {""}, {""}, -      {"sorasompeng",                        174}, +      {"sorasompeng",                        205},        {""},        {"incjkcompatibilityideographssupplement", 495},        {""}, {""}, -      {"meeteimayek",                        159}, +      {"meeteimayek",                        133},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"otheruppercase",                     220}, +      {"otheruppercase",                     170},        {""}, {""}, -      {"kali",                               145}, +      {"kali",                               102},        {""}, {""},        {"inhanguljamo",                       273},        {""}, -      {"ideographic",                        216}, +      {"ideographic",                         92},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -24498,10 +24504,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, -      {"hluw",                               200}, +      {"hluw",                                18},        {""}, {""}, {""}, {""}, -      {"patsyn",                             236}, +      {"patsyn",                             174},        {""}, {""},        {"incombiningdiacriticalmarks",        244}, @@ -24512,7 +24518,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inkanasupplement",                   466},        {""}, -      {"deprecated",                         228}, +      {"deprecated",                          61},        {"inverticalforms",                    391},        {""}, {""}, {""}, @@ -24526,24 +24532,24 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inbuhid",                            282},        {""}, -      {"alphabetic",                          56}, +      {"alphabetic",                          17},        {""}, {""}, {""}, -      {"oldhungarian",                       203}, +      {"oldhungarian",                       154},        {""}, {""}, -      {"mark",                                30}, +      {"mark",                               125},        {""}, {""}, {""}, {""}, {""}, {""},        {"inkharoshthi",                       427},        {""}, {""}, {""}, {""}, {""}, -      {"deva",                                83}, +      {"deva",                                63},        {"invedicextensions",                  300},        {""}, {""}, {""}, {""}, {""}, {""}, -      {"devanagari",                          83}, +      {"devanagari",                          63},        {"incombiningdiacriticalmarkssupplement", 303},        {""}, {""}, {""}, @@ -24554,7 +24560,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inkhmer",                            284},        {""}, {""}, {""}, -      {"changeswhencasemapped",               65}, +      {"changeswhencasemapped",               46},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, @@ -24562,53 +24568,53 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"intakri",                            452},        {""}, {""}, -      {"dep",                                228}, +      {"dep",                                 61}, -      {"takr",                               175}, +      {"takr",                               214},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"changeswhencasefolded",               64}, +      {"changeswhencasefolded",               45},        {""}, -      {"kaithi",                             165}, +      {"kaithi",                              99},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, -      {"phag",                               138}, +      {"phag",                               181},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""},        {"inpahawhhmong",                      464},        {""}, -      {"bidicontrol",                        206}, +      {"bidicontrol",                         29},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {"inkhojki",                           445},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"bamu",                               157}, +      {"bamu",                                25},        {"inbamum",                            360}, -      {"changeswhentitlecased",               63}, +      {"changeswhentitlecased",               48},        {""}, {""},        {"inkhmersymbols",                     290}, -      {"uideo",                              226}, +      {"uideo",                              224}, -      {"lu",                                  29}, +      {"lu",                                 122},        {""}, {""}, -      {"kthi",                               165}, +      {"kthi",                                99},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"limbu",                              119}, +      {"limbu",                              112},        {""}, -      {"defaultignorablecodepoint",           70}, +      {"defaultignorablecodepoint",           60},        {""}, {""}, {""},        {"inplayingcards",                     480}, @@ -24617,10 +24623,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inhebrew",                           249},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"modifiersymbol",                      48}, +      {"modifiersymbol",                     201},        {""}, {""}, {""}, {""}, {""}, -      {"ugaritic",                           122}, +      {"ugaritic",                           223},        {""}, {""}, {""}, {""},        {"inlisu",                             357}, @@ -24631,27 +24637,27 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inprivateusearea",                   386},        {""}, {""}, -      {"olck",                               142}, +      {"olck",                               153},        {""}, {""}, {""},        {"inbengali",                          259},        {""}, {""}, -      {"olchiki",                            142}, +      {"olchiki",                            153},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"caucasianalbanian",                  176}, +      {"caucasianalbanian",                   40},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, -      {"oldturkic",                          164}, +      {"oldturkic",                          160}, -      {"beng",                                84}, +      {"beng",                                28},        {"intelugu",                           264},        {""}, {""}, {""}, {""}, {""}, -      {"hyphen",                             209}, +      {"hyphen",                              87},        {""}, {""},        {"inbuginese",                         291}, @@ -24661,16 +24667,16 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, -      {"cypriot",                            125}, +      {"cypriot",                             57},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {"inlimbu",                            287},        {""}, {""}, -      {"graphemeextend",                      71}, +      {"graphemeextend",                      75},        {""}, {""}, -      {"tagb",                               118}, +      {"tagb",                               210},        {""}, {""}, {""},        {"incypriotsyllabary",                 418}, @@ -24684,20 +24690,20 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inkatakanaphoneticextensions",       349}, -      {"glag",                               130}, +      {"glag",                                71}, -      {"combiningmark",                       30}, +      {"combiningmark",                      125}, -      {"palmyrene",                          191}, +      {"palmyrene",                          173},        {""},        {"khmr",                               104},        {""}, {""}, {""}, -      {"khar",                               134}, +      {"khar",                               103},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"ugar",                               122}, +      {"ugar",                               223},        {""}, {""}, {""}, {""}, {""}, {""}, {""},        {"inarabicpresentationformsb",         395}, @@ -24706,40 +24712,40 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"insupplementaryprivateuseareaa",     498},        {""}, -      {"variationselector",                  234}, +      {"variationselector",                  228},        {""}, {""}, {""}, {""}, -      {"nko",                                139}, +      {"nko",                                148}, -      {"nkoo",                               139}, +      {"nkoo",                               148},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {"inbamumsupplement",                  461},        {""}, {""}, {""}, {""}, {""}, -      {"tglg",                               115}, +      {"tglg",                               209},        {""}, -      {"any",                                 15}, +      {"any",                                 19}, -      {"enclosingmark",                       32}, +      {"enclosingmark",                      132},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"gujr",                                86}, +      {"gujr",                                78},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"changeswhenlowercased",               61}, +      {"changeswhenlowercased",               47},        {""}, {""}, {""}, {""}, -      {"knda",                                90}, +      {"knda",                               100}, -      {"hung",                               203}, +      {"hung",                               154}, -      {"gujarati",                            86}, +      {"gujarati",                            78},        {""}, {""}, -      {"bopo",                               108}, +      {"bopo",                                30},        {""}, {""}, {""}, {""},        {"inmendekikakui",                     476}, @@ -24748,55 +24754,55 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inbopomofo",                         344},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"kharoshthi",                         134}, +      {"kharoshthi",                         103},        {""}, -      {"kannada",                             90}, +      {"kannada",                            100},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, -      {"khoj",                               182}, +      {"khoj",                               105},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, -      {"cherokee",                           100}, +      {"cherokee",                            50},        {""}, {""}, {""},        {"inlatinextendedb",                   241},        {""}, {""}, {""}, {""}, {""}, -      {"dashpunctuation",                     40}, +      {"dashpunctuation",                    178},        {""}, {""}, -      {"dupl",                               178}, +      {"dupl",                                65},        {""}, {""}, {""}, {""}, {""}, {""}, {""},        {"inyisyllables",                      355},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"georgian",                            97}, +      {"georgian",                            70},        {""}, -      {"rejang",                             146}, +      {"rejang",                             189},        {""}, -      {"oupper",                             220}, +      {"oupper",                             170},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, -      {"aghb",                               176}, +      {"aghb",                                40},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""},        {"khmer",                              104},        {""}, {""}, -      {"grbase",                              72}, +      {"grbase",                              74},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"currencysymbol",                      47}, +      {"currencysymbol",                     195},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -24805,16 +24811,16 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, -      {"spacingmark",                         31}, +      {"spacingmark",                        131},        {""}, -      {"orkh",                               164}, +      {"orkh",                               160},        {""}, {""}, {""}, {""}, {""}, -      {"cwu",                                 62}, +      {"cwu",                                 49},        {""}, -      {"hebrew",                              79}, +      {"hebrew",                              84},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -24822,13 +24828,13 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, -      {"oldnortharabian",                    189}, +      {"oldnortharabian",                    156},        {""}, {""}, {""}, {""}, {""},        {"incjksymbolsandpunctuation",         341},        {""}, {""}, -      {"othergraphemeextend",                222}, +      {"othergraphemeextend",                165},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, @@ -24836,15 +24842,15 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"indevanagariextended",               367},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"tagalog",                            115}, +      {"tagalog",                            209},        {""}, {""}, {""}, {""}, {""}, {""}, -      {"surrogate",                           22}, +      {"surrogate",                           55},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, -      {"bopomofo",                           108}, +      {"bopomofo",                            30},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -24855,10 +24861,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, -      {"uppercase",                           58}, +      {"uppercase",                          226},        {""}, {""}, {""}, {""}, {""}, {""}, -      {"unifiedideograph",                   226}, +      {"unifiedideograph",                   224},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -24866,7 +24872,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inpaucinhau",                        455}, -      {"paucinhau",                          192}, +      {"paucinhau",                          176},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -24876,7 +24882,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"nonspacingmark",                      33}, +      {"nonspacingmark",                     138},        {""},        {"inhanguljamoextendedb",              382}, @@ -24884,15 +24890,15 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inhighsurrogates",                   383}, -      {"punctuation",                         38}, +      {"punctuation",                        171},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, -      {"openpunctuation",                     45}, +      {"openpunctuation",                    185}, -      {"bassavah",                           177}, +      {"bassavah",                            26},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -24917,23 +24923,23 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inmeroiticcursive",                  426},        {""}, {""}, -      {"signwriting",                        204}, +      {"signwriting",                        199},        {""}, {""},        {"incjkradicalssupplement",            338},        {""}, -      {"pahawhhmong",                        181}, +      {"pahawhhmong",                        172},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""},        {"inkayahli",                          368}, -      {"uppercaseletter",                     29}, +      {"uppercaseletter",                    122},        {""}, -      {"batk",                               166}, +      {"batk",                                27},        {""}, {""}, {""}, {""},        {"inbatak",                            296}, @@ -24943,10 +24949,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, -      {"buhd",                               117}, +      {"buhd",                                34},        {""}, {""}, {""}, {""}, {""}, -      {"egyp",                               154}, +      {"egyp",                                66},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, @@ -24964,7 +24970,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, -      {"grek",                                76}, +      {"grek",                                77},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -24977,7 +24983,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, -      {"bugi",                               127}, +      {"bugi",                                33},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -24985,20 +24991,20 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"changeswhenuppercased",               62}, +      {"changeswhenuppercased",               49},        {""}, {""}, {""}, -      {"paragraphseparator",                  53}, +      {"paragraphseparator",                 236},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, -      {"buginese",                           127}, +      {"buginese",                            33},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"guru",                                85}, +      {"guru",                                79},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -25006,13 +25012,13 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, -      {"telugu",                              89}, +      {"telugu",                             216},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, -      {"quotationmark",                      210}, +      {"quotationmark",                      187},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, @@ -25020,10 +25026,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {"inkhudawadi",                        447},        {""}, {""}, {""}, {""}, {""}, -      {"kayahli",                            145}, +      {"kayahli",                            102},        {""}, -      {"oldsoutharabian",                    161}, +      {"oldsoutharabian",                    159},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, @@ -25044,7 +25050,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, -      {"zyyy",                                74}, +      {"zyyy",                                53},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -25053,28 +25059,28 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"qmark",                              210}, +      {"qmark",                              187},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, -      {"buhid",                              117}, +      {"buhid",                               34}, -      {"sk",                                  48}, +      {"sk",                                 201},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, -      {"unknown",                            237}, +      {"unknown",                            225},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"khudawadi",                          196}, +      {"khudawadi",                          106},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, -      {"katakana",                           107}, +      {"katakana",                           101},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -25097,12 +25103,12 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, -      {"duployan",                           178}, +      {"duployan",                            65},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, -      {"egyptianhieroglyphs",                154}, +      {"egyptianhieroglyphs",                 66},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -25144,7 +25150,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"khojki",                             182}, +      {"khojki",                             105},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -25217,7 +25223,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"batak",                              166}, +      {"batak",                               27},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -25238,7 +25244,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"greek",                               76}, +      {"greek",                               77},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -25251,7 +25257,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, -      {"grlink",                              73}, +      {"grlink",                              76},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -25266,7 +25272,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, -      {"gurmukhi",                            85}, +      {"gurmukhi",                            79},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -25280,14 +25286,14 @@ unicode_lookup_property_name (register const char *str, register unsigned int le        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},        {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -      {"graphemelink",                        73} +      {"graphemelink",                        76}      };    if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)      { -      unsigned int key = hash (str, len); +      register int key = hash (str, len); -      if (key <= MAX_HASH_VALUE) +      if (key <= MAX_HASH_VALUE && key >= 0)          {            register const char *s = wordlist[key].name; diff --git a/src/unicode_property_data_posix.c b/src/unicode_property_data_posix.c index 83aabc6..1cf082b 100644 --- a/src/unicode_property_data_posix.c +++ b/src/unicode_property_data_posix.c @@ -1,5 +1,5 @@ -/* ANSI-C code produced by gperf version 3.0.3 */ -/* Command-line: /Library/Developer/CommandLineTools/usr/bin/gperf -T -C -c -t -j1 -L ANSI-C --ignore-case -N unicode_lookup_property_name --output-file gperf.tmp unicode_property_data_posix.gperf  */ +/* ANSI-C code produced by gperf version 3.0.4 */ +/* Command-line: gperf -T -C -c -t -j1 -L ANSI-C --ignore-case -N unicode_lookup_property_name --output-file gperf.tmp unicode_property_data_posix.gperf  */  /* Computed positions: -k'1,3' */  #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ @@ -4879,6 +4879,12 @@ hash (register const char *str, register unsigned int len)    return len + asso_values[(unsigned char)str[2]] + asso_values[(unsigned char)str[0]];  } +#ifdef __GNUC__ +__inline +#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ +__attribute__ ((__gnu_inline__)) +#endif +#endif  const struct PropertyNameCtype *  unicode_lookup_property_name (register const char *str, register unsigned int len)  { @@ -4919,9 +4925,9 @@ unicode_lookup_property_name (register const char *str, register unsigned int le    if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)      { -      unsigned int key = hash (str, len); +      register int key = hash (str, len); -      if (key <= MAX_HASH_VALUE) +      if (key <= MAX_HASH_VALUE && key >= 0)          {            register const char *s = wordlist[key].name; diff --git a/test/.gitignore b/test/.gitignore new file mode 100644 index 0000000..04918c1 --- /dev/null +++ b/test/.gitignore @@ -0,0 +1,4 @@ +/test_utf8 +/testc +/testcu +/testp diff --git a/test/Makefile.am b/test/Makefile.am index fe48403..2930e7f 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -5,11 +5,13 @@ AM_LDFLAGS  = -L$(prefix)/lib  AM_CFLAGS =  AM_CPPFLAGS = -I../src -I$(includedir) -TESTS = testc testp testcu +TESTS = test_utf8 testc testp testcu -check_PROGRAMS = testc testp testcu +check_PROGRAMS = test_utf8 testc testp testcu -test: testc testp testcu +test: test_utf8 testc testp testcu +	@echo "[Oniguruma API, UTF-8 check]" +	@./test_utf8  | grep RESULT  	@echo "[Oniguruma API, ASCII/EUC-JP check]"  	@./testc  | grep RESULT  	@echo "[POSIX API, ASCII/EUC-JP check]" @@ -17,6 +19,9 @@ test: testc testp testcu  	@echo "[Oniguruma API, UTF-16 check]"  	@./testcu | grep RESULT +test_utf8_SOURCES = test_utf8.c +test_utf8_LDADD = $(lib_onig) +  testc_SOURCES = testc.c  testc_LDADD = $(lib_onig) diff --git a/test/test_utf8.c b/test/test_utf8.c new file mode 100644 index 0000000..31fcfcd --- /dev/null +++ b/test/test_utf8.c @@ -0,0 +1,1066 @@ +/* + * This program was generated by testconv.rb. + */ +#include "config.h" +#ifdef ONIG_ESCAPE_UCHAR_COLLISION +#undef ONIG_ESCAPE_UCHAR_COLLISION +#endif +#include <stdio.h> + +#include "oniguruma.h" + +#ifdef HAVE_STRING_H +# include <string.h> +#else +# include <strings.h> +#endif + +#define SLEN(s)  strlen(s) + +static int nsucc  = 0; +static int nfail  = 0; +static int nerror = 0; + +static FILE* err_file; + +static OnigRegion* region; + +static void xx(char* pattern, char* str, int from, int to, int mem, int not, +               int error_no) +{ +  int r; +  regex_t* reg; +  OnigErrorInfo einfo; + +  r = onig_new(®, (UChar* )pattern, (UChar* )(pattern + SLEN(pattern)), +	       ONIG_OPTION_DEFAULT, ONIG_ENCODING_UTF8, ONIG_SYNTAX_DEFAULT, &einfo); +  if (r) { +    char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + +    if (error_no == 0) { +      onig_error_code_to_str((UChar* )s, r, &einfo); +      fprintf(err_file, "ERROR: %s  /%s/\n", s, pattern); +      nerror++; +    } +    else { +      if (r == error_no) { +        fprintf(stdout, "OK(ERROR): /%s/ %d\n", pattern, r); +        nsucc++; +      } +      else { +        fprintf(stdout, "FAIL(ERROR): /%s/ '%s', %d, %d\n", pattern, str, +                error_no, r); +        nfail++; +      } +    } + +    return ; +  } + +  r = onig_search(reg, (UChar* )str, (UChar* )(str + SLEN(str)), +		  (UChar* )str, (UChar* )(str + SLEN(str)), +		  region, ONIG_OPTION_NONE); +  if (r < ONIG_MISMATCH) { +    char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + +    if (error_no == 0) { +      onig_error_code_to_str((UChar* )s, r); +      fprintf(err_file, "ERROR: %s\n", s); +      nerror++; +    } +    else { +      if (r == error_no) { +        fprintf(stdout, "OK(ERROR): /%s/ '%s', %d\n", pattern, str, r); +        nsucc++; +      } +      else { +        fprintf(stdout, "FAIL ERROR NO: /%s/ '%s', %d, %d\n", pattern, str, +                error_no, r); +        nfail++; +      } +    } + +    return ; +  } + +  if (r == ONIG_MISMATCH) { +    if (not) { +      fprintf(stdout, "OK(N): /%s/ '%s'\n", pattern, str); +      nsucc++; +    } +    else { +      fprintf(stdout, "FAIL: /%s/ '%s'\n", pattern, str); +      nfail++; +    } +  } +  else { +    if (not) { +      fprintf(stdout, "FAIL(N): /%s/ '%s'\n", pattern, str); +      nfail++; +    } +    else { +      if (region->beg[mem] == from && region->end[mem] == to) { +        fprintf(stdout, "OK: /%s/ '%s'\n", pattern, str); +        nsucc++; +      } +      else { +        fprintf(stdout, "FAIL: /%s/ '%s' %d-%d : %d-%d\n", pattern, str, +	        from, to, region->beg[mem], region->end[mem]); +        nfail++; +      } +    } +  } +  onig_free(reg); +} + +static void x2(char* pattern, char* str, int from, int to) +{ +  xx(pattern, str, from, to, 0, 0, 0); +} + +static void x3(char* pattern, char* str, int from, int to, int mem) +{ +  xx(pattern, str, from, to, mem, 0, 0); +} + +static void n(char* pattern, char* str) +{ +  xx(pattern, str, 0, 0, 0, 1, 0); +} + +static void e(char* pattern, char* str, int error_no) +{ +  xx(pattern, str, 0, 0, 0, 0, error_no); +} + +extern int main(int argc, char* argv[]) +{ +  static OnigEncoding use_encs[] = { ONIG_ENCODING_UTF8 }; + +  onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); + +  err_file = stdout; + +  region = onig_region_new(); + +  x2("", "", 0, 0); +  x2("^", "", 0, 0); +  x2("$", "", 0, 0); +  x2("\\G", "", 0, 0); +  x2("\\A", "", 0, 0); +  x2("\\Z", "", 0, 0); +  x2("\\z", "", 0, 0); +  x2("^$", "", 0, 0); +  x2("\\ca", "\001", 0, 1); +  x2("\\C-b", "\002", 0, 1); +  x2("\\c\\\\", "\034", 0, 1); +  x2("q[\\c\\\\]", "q\034", 0, 2); +  x2("", "a", 0, 0); +  x2("a", "a", 0, 1); +  x2("\\x61", "a", 0, 1); +  x2("aa", "aa", 0, 2); +  x2("aaa", "aaa", 0, 3); +  x2("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 0, 35); +  x2("ab", "ab", 0, 2); +  x2("b", "ab", 1, 2); +  x2("bc", "abc", 1, 3); +  x2("(?i:#RET#)", "#INS##RET#", 5, 10); +  x2("\\17", "\017", 0, 1); +  x2("\\x1f", "\x1f", 0, 1); +  x2("a(?#....\\\\JJJJ)b", "ab", 0, 2); +  x2("(?x)  G (o O(?-x)oO) g L", "GoOoOgLe", 0, 7); +  x2(".", "a", 0, 1); +  n(".", ""); +  x2("..", "ab", 0, 2); +  x2("\\w", "e", 0, 1); +  n("\\W", "e"); +  x2("\\s", " ", 0, 1); +  x2("\\S", "b", 0, 1); +  x2("\\d", "4", 0, 1); +  n("\\D", "4"); +  x2("\\b", "z ", 0, 0); +  x2("\\b", " z", 1, 1); +  x2("\\B", "zz ", 1, 1); +  x2("\\B", "z ", 2, 2); +  x2("\\B", " z", 0, 0); +  x2("[ab]", "b", 0, 1); +  n("[ab]", "c"); +  x2("[a-z]", "t", 0, 1); +  n("[^a]", "a"); +  x2("[^a]", "\n", 0, 1); +  x2("[]]", "]", 0, 1); +  n("[^]]", "]"); +  x2("[\\^]+", "0^^1", 1, 3); +  x2("[b-]", "b", 0, 1); +  x2("[b-]", "-", 0, 1); +  x2("[\\w]", "z", 0, 1); +  n("[\\w]", " "); +  x2("[\\W]", "b$", 1, 2); +  x2("[\\d]", "5", 0, 1); +  n("[\\d]", "e"); +  x2("[\\D]", "t", 0, 1); +  n("[\\D]", "3"); +  x2("[\\s]", " ", 0, 1); +  n("[\\s]", "a"); +  x2("[\\S]", "b", 0, 1); +  n("[\\S]", " "); +  x2("[\\w\\d]", "2", 0, 1); +  n("[\\w\\d]", " "); +  x2("[[:upper:]]", "B", 0, 1); +  x2("[*[:xdigit:]+]", "+", 0, 1); +  x2("[*[:xdigit:]+]", "GHIKK-9+*", 6, 7); +  x2("[*[:xdigit:]+]", "-@^+", 3, 4); +  n("[[:upper]]", "A"); +  x2("[[:upper]]", ":", 0, 1); +  x2("[\\044-\\047]", "\046", 0, 1); +  x2("[\\x5a-\\x5c]", "\x5b", 0, 1); +  x2("[\\x6A-\\x6D]", "\x6c", 0, 1); +  n("[\\x6A-\\x6D]", "\x6E"); +  n("^[0-9A-F]+ 0+ UNDEF ", "75F 00000000 SECT14A notype ()    External    | _rb_apply"); +  x2("[\\[]", "[", 0, 1); +  x2("[\\]]", "]", 0, 1); +  x2("[&]", "&", 0, 1); +  x2("[[ab]]", "b", 0, 1); +  x2("[[ab]c]", "c", 0, 1); +  n("[[^a]]", "a"); +  n("[^[a]]", "a"); +  x2("[[ab]&&bc]", "b", 0, 1); +  n("[[ab]&&bc]", "a"); +  n("[[ab]&&bc]", "c"); +  x2("[a-z&&b-y&&c-x]", "w", 0, 1); +  n("[^a-z&&b-y&&c-x]", "w"); +  x2("[[^a&&a]&&a-z]", "b", 0, 1); +  n("[[^a&&a]&&a-z]", "a"); +  x2("[[^a-z&&bcdef]&&[^c-g]]", "h", 0, 1); +  n("[[^a-z&&bcdef]&&[^c-g]]", "c"); +  x2("[^[^abc]&&[^cde]]", "c", 0, 1); +  x2("[^[^abc]&&[^cde]]", "e", 0, 1); +  n("[^[^abc]&&[^cde]]", "f"); +  x2("[a-&&-a]", "-", 0, 1); +  n("[a\\-&&\\-a]", "&"); +  n("\\wabc", " abc"); +  x2("a\\Wbc", "a bc", 0, 4); +  x2("a.b.c", "aabbc", 0, 5); +  x2(".\\wb\\W..c", "abb bcc", 0, 7); +  x2("\\s\\wzzz", " zzzz", 0, 5); +  x2("aa.b", "aabb", 0, 4); +  n(".a", "ab"); +  x2(".a", "aa", 0, 2); +  x2("^a", "a", 0, 1); +  x2("^a$", "a", 0, 1); +  x2("^\\w$", "a", 0, 1); +  n("^\\w$", " "); +  x2("^\\wab$", "zab", 0, 3); +  x2("^\\wabcdef$", "zabcdef", 0, 7); +  x2("^\\w...def$", "zabcdef", 0, 7); +  x2("\\w\\w\\s\\Waaa\\d", "aa  aaa4", 0, 8); +  x2("\\A\\Z", "", 0, 0); +  x2("\\Axyz", "xyz", 0, 3); +  x2("xyz\\Z", "xyz", 0, 3); +  x2("xyz\\z", "xyz", 0, 3); +  x2("a\\Z", "a", 0, 1); +  x2("\\Gaz", "az", 0, 2); +  n("\\Gz", "bza"); +  n("az\\G", "az"); +  n("az\\A", "az"); +  n("a\\Az", "az"); +  x2("\\^\\$", "^$", 0, 2); +  x2("^x?y", "xy", 0, 2); +  x2("^(x?y)", "xy", 0, 2); +  x2("\\w", "_", 0, 1); +  n("\\W", "_"); +  x2("(?=z)z", "z", 0, 1); +  n("(?=z).", "a"); +  x2("(?!z)a", "a", 0, 1); +  n("(?!z)a", "z"); +  x2("(?i:a)", "a", 0, 1); +  x2("(?i:a)", "A", 0, 1); +  x2("(?i:A)", "a", 0, 1); +  n("(?i:A)", "b"); +  x2("(?i:[A-Z])", "a", 0, 1); +  x2("(?i:[f-m])", "H", 0, 1); +  x2("(?i:[f-m])", "h", 0, 1); +  n("(?i:[f-m])", "e"); +  x2("(?i:[A-c])", "D", 0, 1); +  n("(?i:[^a-z])", "A"); +  n("(?i:[^a-z])", "a"); +  x2("(?i:[!-k])", "Z", 0, 1); +  x2("(?i:[!-k])", "7", 0, 1); +  x2("(?i:[T-}])", "b", 0, 1); +  x2("(?i:[T-}])", "{", 0, 1); +  x2("(?i:\\?a)", "?A", 0, 2); +  x2("(?i:\\*A)", "*a", 0, 2); +  n(".", "\n"); +  x2("(?m:.)", "\n", 0, 1); +  x2("(?m:a.)", "a\n", 0, 2); +  x2("(?m:.b)", "a\nb", 1, 3); +  x2(".*abc", "dddabdd\nddabc", 8, 13); +  x2("(?m:.*abc)", "dddabddabc", 0, 10); +  n("(?i)(?-i)a", "A"); +  n("(?i)(?-i:a)", "A"); +  x2("a?", "", 0, 0); +  x2("a?", "b", 0, 0); +  x2("a?", "a", 0, 1); +  x2("a*", "", 0, 0); +  x2("a*", "a", 0, 1); +  x2("a*", "aaa", 0, 3); +  x2("a*", "baaaa", 0, 0); +  n("a+", ""); +  x2("a+", "a", 0, 1); +  x2("a+", "aaaa", 0, 4); +  x2("a+", "aabbb", 0, 2); +  x2("a+", "baaaa", 1, 5); +  x2(".?", "", 0, 0); +  x2(".?", "f", 0, 1); +  x2(".?", "\n", 0, 0); +  x2(".*", "", 0, 0); +  x2(".*", "abcde", 0, 5); +  x2(".+", "z", 0, 1); +  x2(".+", "zdswer\n", 0, 6); +  x2("(.*)a\\1f", "babfbac", 0, 4); +  x2("(.*)a\\1f", "bacbabf", 3, 7); +  x2("((.*)a\\2f)", "bacbabf", 3, 7); +  x2("(.*)a\\1f", "baczzzzzz\nbazz\nzzzzbabf", 19, 23); +  x2("a|b", "a", 0, 1); +  x2("a|b", "b", 0, 1); +  x2("|a", "a", 0, 0); +  x2("(|a)", "a", 0, 0); +  x2("ab|bc", "ab", 0, 2); +  x2("ab|bc", "bc", 0, 2); +  x2("z(?:ab|bc)", "zbc", 0, 3); +  x2("a(?:ab|bc)c", "aabc", 0, 4); +  x2("ab|(?:ac|az)", "az", 0, 2); +  x2("a|b|c", "dc", 1, 2); +  x2("a|b|cd|efg|h|ijk|lmn|o|pq|rstuvwx|yz", "pqr", 0, 2); +  n("a|b|cd|efg|h|ijk|lmn|o|pq|rstuvwx|yz", "mn"); +  x2("a|^z", "ba", 1, 2); +  x2("a|^z", "za", 0, 1); +  x2("a|\\Gz", "bza", 2, 3); +  x2("a|\\Gz", "za", 0, 1); +  x2("a|\\Az", "bza", 2, 3); +  x2("a|\\Az", "za", 0, 1); +  x2("a|b\\Z", "ba", 1, 2); +  x2("a|b\\Z", "b", 0, 1); +  x2("a|b\\z", "ba", 1, 2); +  x2("a|b\\z", "b", 0, 1); +  x2("\\w|\\s", " ", 0, 1); +  n("\\w|\\w", " "); +  x2("\\w|%", "%", 0, 1); +  x2("\\w|[&$]", "&", 0, 1); +  x2("[b-d]|[^e-z]", "a", 0, 1); +  x2("(?:a|[c-f])|bz", "dz", 0, 1); +  x2("(?:a|[c-f])|bz", "bz", 0, 2); +  x2("abc|(?=zz)..f", "zzf", 0, 3); +  x2("abc|(?!zz)..f", "abf", 0, 3); +  x2("(?=za)..a|(?=zz)..a", "zza", 0, 3); +  n("(?>a|abd)c", "abdc"); +  x2("(?>abd|a)c", "abdc", 0, 4); +  x2("a?|b", "a", 0, 1); +  x2("a?|b", "b", 0, 0); +  x2("a?|b", "", 0, 0); +  x2("a*|b", "aa", 0, 2); +  x2("a*|b*", "ba", 0, 0); +  x2("a*|b*", "ab", 0, 1); +  x2("a+|b*", "", 0, 0); +  x2("a+|b*", "bbb", 0, 3); +  x2("a+|b*", "abbb", 0, 1); +  n("a+|b+", ""); +  x2("(a|b)?", "b", 0, 1); +  x2("(a|b)*", "ba", 0, 2); +  x2("(a|b)+", "bab", 0, 3); +  x2("(ab|ca)+", "caabbc", 0, 4); +  x2("(ab|ca)+", "aabca", 1, 5); +  x2("(ab|ca)+", "abzca", 0, 2); +  x2("(a|bab)+", "ababa", 0, 5); +  x2("(a|bab)+", "ba", 1, 2); +  x2("(a|bab)+", "baaaba", 1, 4); +  x2("(?:a|b)(?:a|b)", "ab", 0, 2); +  x2("(?:a*|b*)(?:a*|b*)", "aaabbb", 0, 3); +  x2("(?:a*|b*)(?:a+|b+)", "aaabbb", 0, 6); +  x2("(?:a+|b+){2}", "aaabbb", 0, 6); +  x2("h{0,}", "hhhh", 0, 4); +  x2("(?:a+|b+){1,2}", "aaabbb", 0, 6); +  n("ax{2}*a", "0axxxa1"); +  n("a.{0,2}a", "0aXXXa0"); +  n("a.{0,2}?a", "0aXXXa0"); +  n("a.{0,2}?a", "0aXXXXa0"); +  x2("^a{2,}?a$", "aaa", 0, 3); +  x2("^[a-z]{2,}?$", "aaa", 0, 3); +  x2("(?:a+|\\Ab*)cc", "cc", 0, 2); +  n("(?:a+|\\Ab*)cc", "abcc"); +  x2("(?:^a+|b+)*c", "aabbbabc", 6, 8); +  x2("(?:^a+|b+)*c", "aabbbbc", 0, 7); +  x2("a|(?i)c", "C", 0, 1); +  x2("(?i)c|a", "C", 0, 1); +  x2("(?i)c|a", "A", 0, 1); +  x2("(?i:c)|a", "C", 0, 1); +  n("(?i:c)|a", "A"); +  x2("[abc]?", "abc", 0, 1); +  x2("[abc]*", "abc", 0, 3); +  x2("[^abc]*", "abc", 0, 0); +  n("[^abc]+", "abc"); +  x2("a?\?", "aaa", 0, 0); +  x2("ba?\?b", "bab", 0, 3); +  x2("a*?", "aaa", 0, 0); +  x2("ba*?", "baa", 0, 1); +  x2("ba*?b", "baab", 0, 4); +  x2("a+?", "aaa", 0, 1); +  x2("ba+?", "baa", 0, 2); +  x2("ba+?b", "baab", 0, 4); +  x2("(?:a?)?\?", "a", 0, 0); +  x2("(?:a?\?)?", "a", 0, 0); +  x2("(?:a?)+?", "aaa", 0, 1); +  x2("(?:a+)?\?", "aaa", 0, 0); +  x2("(?:a+)?\?b", "aaab", 0, 4); +  x2("(?:ab)?{2}", "", 0, 0); +  x2("(?:ab)?{2}", "ababa", 0, 4); +  x2("(?:ab)*{0}", "ababa", 0, 0); +  x2("(?:ab){3,}", "abababab", 0, 8); +  n("(?:ab){3,}", "abab"); +  x2("(?:ab){2,4}", "ababab", 0, 6); +  x2("(?:ab){2,4}", "ababababab", 0, 8); +  x2("(?:ab){2,4}?", "ababababab", 0, 4); +  x2("(?:ab){,}", "ab{,}", 0, 5); +  x2("(?:abc)+?{2}", "abcabcabc", 0, 6); +  x2("(?:X*)(?i:xa)", "XXXa", 0, 4); +  x2("(d+)([^abc]z)", "dddz", 0, 4); +  x2("([^abc]*)([^abc]z)", "dddz", 0, 4); +  x2("(\\w+)(\\wz)", "dddz", 0, 4); +  x3("(a)", "a", 0, 1, 1); +  x3("(ab)", "ab", 0, 2, 1); +  x2("((ab))", "ab", 0, 2); +  x3("((ab))", "ab", 0, 2, 1); +  x3("((ab))", "ab", 0, 2, 2); +  x3("((((((((((((((((((((ab))))))))))))))))))))", "ab", 0, 2, 20); +  x3("(ab)(cd)", "abcd", 0, 2, 1); +  x3("(ab)(cd)", "abcd", 2, 4, 2); +  x3("()(a)bc(def)ghijk", "abcdefghijk", 3, 6, 3); +  x3("(()(a)bc(def)ghijk)", "abcdefghijk", 3, 6, 4); +  x2("(^a)", "a", 0, 1); +  x3("(a)|(a)", "ba", 1, 2, 1); +  x3("(^a)|(a)", "ba", 1, 2, 2); +  x3("(a?)", "aaa", 0, 1, 1); +  x3("(a*)", "aaa", 0, 3, 1); +  x3("(a*)", "", 0, 0, 1); +  x3("(a+)", "aaaaaaa", 0, 7, 1); +  x3("(a+|b*)", "bbbaa", 0, 3, 1); +  x3("(a+|b?)", "bbbaa", 0, 1, 1); +  x3("(abc)?", "abc", 0, 3, 1); +  x3("(abc)*", "abc", 0, 3, 1); +  x3("(abc)+", "abc", 0, 3, 1); +  x3("(xyz|abc)+", "abc", 0, 3, 1); +  x3("([xyz][abc]|abc)+", "abc", 0, 3, 1); +  x3("((?i:abc))", "AbC", 0, 3, 1); +  x2("(abc)(?i:\\1)", "abcABC", 0, 6); +  x3("((?m:a.c))", "a\nc", 0, 3, 1); +  x3("((?=az)a)", "azb", 0, 1, 1); +  x3("abc|(.abd)", "zabd", 0, 4, 1); +  x2("(?:abc)|(ABC)", "abc", 0, 3); +  x3("(?i:(abc))|(zzz)", "ABC", 0, 3, 1); +  x3("a*(.)", "aaaaz", 4, 5, 1); +  x3("a*?(.)", "aaaaz", 0, 1, 1); +  x3("a*?(c)", "aaaac", 4, 5, 1); +  x3("[bcd]a*(.)", "caaaaz", 5, 6, 1); +  x3("(\\Abb)cc", "bbcc", 0, 2, 1); +  n("(\\Abb)cc", "zbbcc"); +  x3("(^bb)cc", "bbcc", 0, 2, 1); +  n("(^bb)cc", "zbbcc"); +  x3("cc(bb$)", "ccbb", 2, 4, 1); +  n("cc(bb$)", "ccbbb"); +  n("(\\1)", ""); +  n("\\1(a)", "aa"); +  n("(a(b)\\1)\\2+", "ababb"); +  n("(?:(?:\\1|z)(a))+$", "zaa"); +  x2("(?:(?:\\1|z)(a))+$", "zaaa", 0, 4); +  x2("(a)(?=\\1)", "aa", 0, 1); +  n("(a)$|\\1", "az"); +  x2("(a)\\1", "aa", 0, 2); +  n("(a)\\1", "ab"); +  x2("(a?)\\1", "aa", 0, 2); +  x2("(a?\?)\\1", "aa", 0, 0); +  x2("(a*)\\1", "aaaaa", 0, 4); +  x3("(a*)\\1", "aaaaa", 0, 2, 1); +  x2("a(b*)\\1", "abbbb", 0, 5); +  x2("a(b*)\\1", "ab", 0, 1); +  x2("(a*)(b*)\\1\\2", "aaabbaaabb", 0, 10); +  x2("(a*)(b*)\\2", "aaabbbb", 0, 7); +  x2("(((((((a*)b))))))c\\7", "aaabcaaa", 0, 8); +  x3("(((((((a*)b))))))c\\7", "aaabcaaa", 0, 3, 7); +  x2("(a)(b)(c)\\2\\1\\3", "abcbac", 0, 6); +  x2("([a-d])\\1", "cc", 0, 2); +  x2("(\\w\\d\\s)\\1", "f5 f5 ", 0, 6); +  n("(\\w\\d\\s)\\1", "f5 f5"); +  x2("(who|[a-c]{3})\\1", "whowho", 0, 6); +  x2("...(who|[a-c]{3})\\1", "abcwhowho", 0, 9); +  x2("(who|[a-c]{3})\\1", "cbccbc", 0, 6); +  x2("(^a)\\1", "aa", 0, 2); +  n("(^a)\\1", "baa"); +  n("(a$)\\1", "aa"); +  n("(ab\\Z)\\1", "ab"); +  x2("(a*\\Z)\\1", "a", 1, 1); +  x2(".(a*\\Z)\\1", "ba", 1, 2); +  x3("(.(abc)\\2)", "zabcabc", 0, 7, 1); +  x3("(.(..\\d.)\\2)", "z12341234", 0, 9, 1); +  x2("((?i:az))\\1", "AzAz", 0, 4); +  n("((?i:az))\\1", "Azaz"); +  x2("(?<=a)b", "ab", 1, 2); +  n("(?<=a)b", "bb"); +  x2("(?<=a|b)b", "bb", 1, 2); +  x2("(?<=a|bc)b", "bcb", 2, 3); +  x2("(?<=a|bc)b", "ab", 1, 2); +  x2("(?<=a|bc||defghij|klmnopq|r)z", "rz", 1, 2); +  x3("(?<=(abc))d", "abcd", 0, 3, 1); +  x2("(?<=(?i:abc))d", "ABCd", 3, 4); +  x2("(a)\\g<1>", "aa", 0, 2); +  x2("(?<!a)b", "cb", 1, 2); +  n("(?<!a)b", "ab"); +  x2("(?<!a|bc)b", "bbb", 0, 1); +  n("(?<!a|bc)z", "bcz"); +  x2("(?<name1>a)", "a", 0, 1); +  x2("(?<name_2>ab)\\g<name_2>", "abab", 0, 4); +  x2("(?<name_3>.zv.)\\k<name_3>", "azvbazvb", 0, 8); +  x2("(?<=\\g<ab>)|-\\zEND (?<ab>XyZ)", "XyZ", 3, 3); +  x2("(?<n>|a\\g<n>)+", "", 0, 0); +  x2("(?<n>|\\(\\g<n>\\))+$", "()(())", 0, 6); +  x3("\\g<n>(?<n>.){0}", "X", 0, 1, 1); +  x2("\\g<n>(abc|df(?<n>.YZ){2,8}){0}", "XYZ", 0, 3); +  x2("\\A(?<n>(a\\g<n>)|)\\z", "aaaa", 0, 4); +  x2("(?<n>|\\g<m>\\g<n>)\\z|\\zEND (?<m>a|(b)\\g<m>)", "bbbbabba", 0, 8); +  x2("(?<name1240>\\w+\\sx)a+\\k<name1240>", "  fg xaaaaaaaafg x", 2, 18); +  x3("(z)()()(?<_9>a)\\g<_9>", "zaa", 2, 3, 1); +  x2("(.)(((?<_>a)))\\k<_>", "zaa", 0, 3); +  x2("((?<name1>\\d)|(?<name2>\\w))(\\k<name1>|\\k<name2>)", "ff", 0, 2); +  x2("(?:(?<x>)|(?<x>efg))\\k<x>", "", 0, 0); +  x2("(?:(?<x>abc)|(?<x>efg))\\k<x>", "abcefgefg", 3, 9); +  n("(?:(?<x>abc)|(?<x>efg))\\k<x>", "abcefg"); +  x2("(?:(?<n1>.)|(?<n1>..)|(?<n1>...)|(?<n1>....)|(?<n1>.....)|(?<n1>......)|(?<n1>.......)|(?<n1>........)|(?<n1>.........)|(?<n1>..........)|(?<n1>...........)|(?<n1>............)|(?<n1>.............)|(?<n1>..............))\\k<n1>$", "a-pyumpyum", 2, 10); +  x3("(?:(?<n1>.)|(?<n1>..)|(?<n1>...)|(?<n1>....)|(?<n1>.....)|(?<n1>......)|(?<n1>.......)|(?<n1>........)|(?<n1>.........)|(?<n1>..........)|(?<n1>...........)|(?<n1>............)|(?<n1>.............)|(?<n1>..............))\\k<n1>$", "xxxxabcdefghijklmnabcdefghijklmn", 4, 18, 14); +  x3("(?<name1>)(?<name2>)(?<name3>)(?<name4>)(?<name5>)(?<name6>)(?<name7>)(?<name8>)(?<name9>)(?<name10>)(?<name11>)(?<name12>)(?<name13>)(?<name14>)(?<name15>)(?<name16>aaa)(?<name17>)$", "aaa", 0, 3, 16); +  x2("(?<foo>a|\\(\\g<foo>\\))", "a", 0, 1); +  x2("(?<foo>a|\\(\\g<foo>\\))", "((((((a))))))", 0, 13); +  x3("(?<foo>a|\\(\\g<foo>\\))", "((((((((a))))))))", 0, 17, 1); +  x2("\\g<bar>|\\zEND(?<bar>.*abc$)", "abcxxxabc", 0, 9); +  x2("\\g<1>|\\zEND(.a.)", "bac", 0, 3); +  x3("\\g<_A>\\g<_A>|\\zEND(.a.)(?<_A>.b.)", "xbxyby", 3, 6, 1); +  x2("\\A(?:\\g<pon>|\\g<pan>|\\zEND  (?<pan>a|c\\g<pon>c)(?<pon>b|d\\g<pan>d))$", "cdcbcdc", 0, 7); +  x2("\\A(?<n>|a\\g<m>)\\z|\\zEND (?<m>\\g<n>)", "aaaa", 0, 4); +  x2("(?<n>(a|b\\g<n>c){3,5})", "baaaaca", 1, 5); +  x2("(?<n>(a|b\\g<n>c){3,5})", "baaaacaaaaa", 0, 10); +  x2("(?<pare>\\(([^\\(\\)]++|\\g<pare>)*+\\))", "((a))", 0, 5); +  x2("()*\\1", "", 0, 0); +  x2("(?:()|())*\\1\\2", "", 0, 0); +  x3("(?:\\1a|())*", "a", 0, 0, 1); +  x2("x((.)*)*x", "0x1x2x3", 1, 6); +  x2("x((.)*)*x(?i:\\1)\\Z", "0x1x2x1X2", 1, 9); +  x2("(?:()|()|()|()|()|())*\\2\\5", "", 0, 0); +  x2("(?:()|()|()|(x)|()|())*\\2b\\5", "b", 0, 1); +  x2("[0-9-a]", "-", 0, 1);   // PR#44 +  n("[0-9-a]", ":");          // PR#44 +  x3("(\\(((?:[^(]|\\g<1>)*)\\))", "(abc)(abc)", 1, 4, 2); // PR#43 +  x2("\\o{101}", "A", 0, 1); +  x2("(?:\\k'+1'B|(A)C)*", "ACAB", 0, 4); // relative backref by postitive number +  x2("\\g<+2>(abc)(ABC){0}", "ABCabc", 0, 6); // relative call by positive number +  x2("A\\g'0'|B()", "AAAAB", 0, 5); +  x3("(A\\g'0')|B", "AAAAB", 0, 5, 1); +  x2("(a*)(?(1))aa", "aaaaa", 0, 5); +  x2("(a*)(?(-1))aa", "aaaaa", 0, 5); +  x2("(?<name>aaa)(?('name'))aa", "aaaaa", 0, 5); +  x2("(a)(?(1)aa|bb)a", "aaaaa", 0, 4); +  x2("(?:aa|())(?(<1>)aa|bb)a", "aabba", 0, 5); +  x2("(?:aa|())(?('1')aa|bb|cc)a", "aacca", 0, 5); +  x3("(a*)(?(1)aa|a)b", "aaab", 0, 1, 1); +  n("(a)(?(1)a|b)c", "abc"); +  x2("(a)(?(1)|)c", "ac", 0, 2); +  n("(?()aaa|bbb)", "bbb"); +  x2("(a)(?(1+0)b|c)d", "abd", 0, 3); +  x2("(?:(?'name'a)|(?'name'b))(?('name')c|d)e", "ace", 0, 3); +  x2("(?:(?'name'a)|(?'name'b))(?('name')c|d)e", "bce", 0, 3); +  x2("\\R", "\r\n", 0, 2); +  x2("\\R", "\r", 0, 1); +  x2("\\R", "\n", 0, 1); +  x2("\\R", "\x0b", 0, 1); +  n("\\R\\n", "\r\n"); +  x2("\\R", "\xc2\x85", 0, 2); +  x2("\\N", "a", 0, 1); +  n("\\N", "\n"); +  n("(?m:\\N)", "\n"); +  n("(?-m:\\N)", "\n"); +  x2("\\O", "a", 0, 1); +  x2("\\O", "\n", 0, 1); +  x2("(?m:\\O)", "\n", 0, 1); +  x2("(?-m:\\O)", "\n", 0, 1); +  x2("\\K", "a", 0, 0); +  x2("a\\K", "a", 1, 1); +  x2("a\\Kb", "ab", 1, 2); +  x2("(a\\Kb|ac\\Kd)", "acd", 2, 3); +  x2("(a\\Kb|\\Kac\\K)*", "acababacab", 9, 10); + +  x2("(?~)", "", 0, 0); +  x2("(?~)", "A", 0, 0); +  x2("aaaaa(?~)", "aaaaaaaaaa", 0, 5); +  x2("(?~(?:|aaa))", "aaa", 0, 0); +  x2("(?~aaa|)", "aaa", 0, 0); +  x2("a(?~(?~)).", "abcdefghijklmnopqrstuvwxyz", 0, 26); // !!! +  x2("/\\*(?~\\*/)\\*/", "/* */ */", 0, 5); +  x2("(?~\\w+)zzzzz", "zzzzz", 0, 5); +  x2("(?~\\w*)zzzzz", "zzzzz", 0, 5); +  x2("(?~A.C|B)", "ABC", 0, 0); +  x2("(?~XYZ|ABC)a", "ABCa", 1, 4); +  x2("(?~XYZ|ABC)a", "aABCa", 0, 1); +  x2("<[^>]*>(?~[<>])</[^>]*>", "<a>vvv</a>   <b>  </b>", 0, 10); +  x2("(?~ab)", "ccc\ndab", 0, 5); +  x2("(?m:(?~ab))", "ccc\ndab", 0, 5); +  x2("(?-m:(?~ab))", "ccc\ndab", 0, 5); +  x2("(?~abc)xyz", "xyz012345678901234567890123456789abc", 0, 3); + +  // absent with expr +  x2("(?~|78|\\d*)", "123456789", 0, 6); +  x2("(?~|def|(?:abc|de|f){0,100})", "abcdedeabcfdefabc", 0, 11); +  x2("(?~|ab|.*)", "ccc\nddd", 0, 3); +  x2("(?~|ab|\\O*)", "ccc\ndab", 0, 5); +  x2("(?~|ab|\\O{2,10})", "ccc\ndab", 0, 5); +  x2("(?~|ab|\\O{1,10})", "ab", 1, 2); +  n("(?~|ab|\\O{2,10})", "ab"); +  x2("(?~|abc|\\O{1,10})", "abc", 1, 3); +  x2("(?~|ab|\\O{5,10})|abc", "abc", 0, 3); +  x2("(?~|ab|\\O{1,10})", "cccccccccccab", 0, 10); +  x2("(?~|aaa|)", "aaa", 0, 0); +  x2("(?~||a*)", "aaaaaa", 0, 0); +  x2("(?~||a*?)", "aaaaaa", 0, 0); +  x2("(a)(?~|b|\\1)", "aaaaaa", 0, 2); +  x2("(a)(?~|bb|(?:a\\1)*)", "aaaaaa", 0, 5); +  x2("(b|c)(?~|abac|(?:a\\1)*)", "abababacabab", 1, 4); +  n("(?~|c|a*+)a", "aaaaa"); +  x2("(?~|aaaaa|a*+)", "aaaaa", 0, 0); +  x2("(?~|aaaaaa|a*+)b", "aaaaaab", 1, 7); +  x2("(?~|abcd|(?>))", "zzzabcd", 0, 0); +  x2("(?~|abc|a*?)", "aaaabc", 0, 0); + +  // absent range cutter +  x2("(?~|abc)a*", "aaaaaabc", 0, 5); +  x2("(?~|abc)a*z|aaaaaabc", "aaaaaabc", 0, 8); +  x2("(?~|aaaaaa)a*", "aaaaaa", 0, 0); +  x2("(?~|abc)aaaa|aaaabc", "aaaabc", 0, 6); +  x2("(?>(?~|abc))aaaa|aaaabc", "aaaabc", 0, 6); +  x2("(?~|)a", "a", 0, 1); +  n("(?~|a)a", "a"); +  x2("(?~|a)(?~|)a", "a", 0, 1); +  x2("(?~|a).*(?~|)a", "bbbbbbbbbbbbbbbbbbbba", 0, 21); +  x2("(?~|abc).*(xyz|pqr)(?~|)abc", "aaaaxyzaaapqrabc", 0, 16); +  x2("(?~|abc).*(xyz|pqr)(?~|)abc", "aaaaxyzaaaabcpqrabc", 11, 19); +  n("\\A(?~|abc).*(xyz|pqrabc)(?~|)abc", "aaaaxyzaaaabcpqrabcabc"); + +  x2("", "ã‚", 0, 0); +  x2("ã‚", "ã‚", 0, 3); +  n("ã„", "ã‚"); +  x2("ã†ã†", "ã†ã†", 0, 6); +  x2("ã‚ã„ã†", "ã‚ã„ã†", 0, 9); +  x2("ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“", "ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“", 0, 105); +  x2("ã‚", "ã„ã‚", 3, 6); +  x2("ã„ã†", "ã‚ã„ã†", 3, 9); +  x2("\\xca\\xb8", "\xca\xb8", 0, 2); +  x2(".", "ã‚", 0, 3); +  x2("..", "ã‹ã", 0, 6); +  x2("\\w", "ãŠ", 0, 3); +  n("\\W", "ã‚"); +  x2("[\\W]", "ã†$", 3, 4); +  x2("\\S", "ã", 0, 3); +  x2("\\S", "æ¼¢", 0, 3); +  x2("\\b", "æ°— ", 0, 0); +  x2("\\b", " ã»", 1, 1); +  x2("\\B", "ã›ã ", 3, 3); +  x2("\\B", "ㆠ", 4, 4); +  x2("\\B", " ã„", 0, 0); +  x2("[ãŸã¡]", "ã¡", 0, 3); +  n("[ãªã«]", "ã¬"); +  x2("[ã†-ãŠ]", "ãˆ", 0, 3); +  n("[^ã‘]", "ã‘"); +  x2("[\\w]", "ã", 0, 3); +  n("[\\d]", "ãµ"); +  x2("[\\D]", "ã¯", 0, 3); +  n("[\\s]", "ã"); +  x2("[\\S]", "ã¸", 0, 3); +  x2("[\\w\\d]", "よ", 0, 3); +  x2("[\\w\\d]", "   よ", 3, 6); +  n("\\w鬼車", " 鬼車"); +  x2("鬼\\W車", "鬼 車", 0, 7); +  x2("ã‚.ã„.ã†", "ã‚ã‚ã„ã„ã†", 0, 15); +  x2(".\\wã†\\W..ãž", "ãˆã†ã† ã†ãžãž", 0, 19); +  x2("\\s\\wã“ã“ã“", " ã“ã“ã“ã“", 0, 13); +  x2("ã‚ã‚.ã‘", "ã‚ã‚ã‘ã‘", 0, 12); +  n(".ã„", "ã„ãˆ"); +  x2(".ãŠ", "ãŠãŠ", 0, 6); +  x2("^ã‚", "ã‚", 0, 3); +  x2("^ã‚€$", "ã‚€", 0, 3); +  x2("^\\w$", "ã«", 0, 3); +  x2("^\\wã‹ããã‘ã“$", "zã‹ããã‘ã“", 0, 16); +  x2("^\\w...ã†ãˆãŠ$", "zã‚ã„ã†ã†ãˆãŠ", 0, 19); +  x2("\\w\\w\\s\\WãŠãŠãŠ\\d", "a㊠ ãŠãŠãŠ4", 0, 16); +  x2("\\AãŸã¡ã¤", "ãŸã¡ã¤", 0, 9); +  x2("ã‚€ã‚ã‚‚\\Z", "ã‚€ã‚ã‚‚", 0, 9); +  x2("ã‹ãã\\z", "ã‹ãã", 0, 9); +  x2("ã‹ãã\\Z", "ã‹ãã\n", 0, 9); +  x2("\\Gã½ã´", "ã½ã´", 0, 6); +  n("\\Gãˆ", "ã†ãˆãŠ"); +  n("ã¨ã¦\\G", "ã¨ã¦"); +  n("ã¾ã¿\\A", "ã¾ã¿"); +  n("ã¾\\Aã¿", "ã¾ã¿"); +  x2("(?=ã›)ã›", "ã›", 0, 3); +  n("(?=ã†).", "ã„"); +  x2("(?!ã†)ã‹", "ã‹", 0, 3); +  n("(?!ã¨)ã‚", "ã¨"); +  x2("(?i:ã‚)", "ã‚", 0, 3); +  x2("(?i:ã¶ã¹)", "ã¶ã¹", 0, 6); +  n("(?i:ã„)", "ã†"); +  x2("(?m:よ.)", "よ\n", 0, 4); +  x2("(?m:.ã‚)", "ã¾\nã‚", 3, 7); +  x2("ã‚?", "", 0, 0); +  x2("変?", "化", 0, 0); +  x2("変?", "変", 0, 3); +  x2("é‡*", "", 0, 0); +  x2("é‡*", "é‡", 0, 3); +  x2("å*", "ååå", 0, 9); +  x2("馬*", "鹿馬馬馬馬", 0, 0); +  n("å±±+", ""); +  x2("æ²³+", "æ²³", 0, 3); +  x2("時+", "時時時時", 0, 12); +  x2("ãˆ+", "ãˆãˆã†ã†ã†", 0, 6); +  x2("ã†+", "ãŠã†ã†ã†ã†", 3, 15); +  x2(".?", "ãŸ", 0, 3); +  x2(".*", "ã±ã´ã·ãº", 0, 12); +  x2(".+", "ã‚", 0, 3); +  x2(".+", "ã„ã†ãˆã‹\n", 0, 12); +  x2("ã‚|ã„", "ã‚", 0, 3); +  x2("ã‚|ã„", "ã„", 0, 3); +  x2("ã‚ã„|ã„ã†", "ã‚ã„", 0, 6); +  x2("ã‚ã„|ã„ã†", "ã„ã†", 0, 6); +  x2("ã‚’(?:ã‹ã|ãã)", "ã‚’ã‹ã", 0, 9); +  x2("ã‚’(?:ã‹ã|ãã)ã‘", "ã‚’ããã‘", 0, 12); +  x2("ã‚ã„|(?:ã‚ã†|ã‚ã‚’)", "ã‚ã‚’", 0, 6); +  x2("ã‚|ã„|ã†", "ãˆã†", 3, 6); +  x2("ã‚|ã„|ã†ãˆ|ãŠã‹ã|ã|ã‘ã“ã•|ã—ã™ã›|ã|ãŸã¡|ã¤ã¦ã¨ãªã«|ã¬ã", "ã—ã™ã›", 0, 9); +  n("ã‚|ã„|ã†ãˆ|ãŠã‹ã|ã|ã‘ã“ã•|ã—ã™ã›|ã|ãŸã¡|ã¤ã¦ã¨ãªã«|ã¬ã", "ã™ã›"); +  x2("ã‚|^ã‚", "ã¶ã‚", 3, 6); +  x2("ã‚|^ã‚’", "ã‚’ã‚", 0, 3); +  x2("鬼|\\G車", "ã‘車鬼", 6, 9); +  x2("鬼|\\G車", "車鬼", 0, 3); +  x2("鬼|\\A車", "b車鬼", 4, 7); +  x2("鬼|\\A車", "車", 0, 3); +  x2("鬼|車\\Z", "車鬼", 3, 6); +  x2("鬼|車\\Z", "車", 0, 3); +  x2("鬼|車\\Z", "車\n", 0, 3); +  x2("鬼|車\\z", "車鬼", 3, 6); +  x2("鬼|車\\z", "車", 0, 3); +  x2("\\w|\\s", "ãŠ", 0, 3); +  x2("\\w|%", "%ãŠ", 0, 1); +  x2("\\w|[&$]", "ã†&", 0, 3); +  x2("[ã„-ã‘]", "ã†", 0, 3); +  x2("[ã„-ã‘]|[^ã‹-ã“]", "ã‚", 0, 3); +  x2("[ã„-ã‘]|[^ã‹-ã“]", "ã‹", 0, 3); +  x2("[^ã‚]", "\n", 0, 1); +  x2("(?:ã‚|[ã†-ã])|ã„ã‚’", "ã†ã‚’", 0, 3); +  x2("(?:ã‚|[ã†-ã])|ã„ã‚’", "ã„ã‚’", 0, 6); +  x2("ã‚ã„ã†|(?=ã‘ã‘)..ã»", "ã‘ã‘ã»", 0, 9); +  x2("ã‚ã„ã†|(?!ã‘ã‘)..ã»", "ã‚ã„ã»", 0, 9); +  x2("(?=ã‚’ã‚)..ã‚|(?=ã‚’ã‚’)..ã‚", "ã‚’ã‚’ã‚", 0, 9); +  x2("(?<=ã‚|ã„ã†)ã„", "ã„ã†ã„", 6, 9); +  n("(?>ã‚|ã‚ã„ãˆ)ã†", "ã‚ã„ãˆã†"); +  x2("(?>ã‚ã„ãˆ|ã‚)ã†", "ã‚ã„ãˆã†", 0, 12); +  x2("ã‚?|ã„", "ã‚", 0, 3); +  x2("ã‚?|ã„", "ã„", 0, 0); +  x2("ã‚?|ã„", "", 0, 0); +  x2("ã‚*|ã„", "ã‚ã‚", 0, 6); +  x2("ã‚*|ã„*", "ã„ã‚", 0, 0); +  x2("ã‚*|ã„*", "ã‚ã„", 0, 3); +  x2("[aã‚]*|ã„*", "aã‚ã„ã„ã„", 0, 4); +  x2("ã‚+|ã„*", "", 0, 0); +  x2("ã‚+|ã„*", "ã„ã„ã„", 0, 9); +  x2("ã‚+|ã„*", "ã‚ã„ã„ã„", 0, 3); +  x2("ã‚+|ã„*", "aã‚ã„ã„ã„", 0, 0); +  n("ã‚+|ã„+", ""); +  x2("(ã‚|ã„)?", "ã„", 0, 3); +  x2("(ã‚|ã„)*", "ã„ã‚", 0, 6); +  x2("(ã‚|ã„)+", "ã„ã‚ã„", 0, 9); +  x2("(ã‚ã„|ã†ã‚)+", "ã†ã‚ã‚ã„ã†ãˆ", 0, 12); +  x2("(ã‚ã„|ã†ãˆ)+", "ã†ã‚ã‚ã„ã†ãˆ", 6, 18); +  x2("(ã‚ã„|ã†ã‚)+", "ã‚ã‚ã„ã†ã‚", 3, 15); +  x2("(ã‚ã„|ã†ã‚)+", "ã‚ã„ã‚’ã†ã‚", 0, 6); +  x2("(ã‚ã„|ã†ã‚)+", "$$zzzzã‚ã„ã‚’ã†ã‚", 6, 12); +  x2("(ã‚|ã„ã‚ã„)+", "ã‚ã„ã‚ã„ã‚", 0, 15); +  x2("(ã‚|ã„ã‚ã„)+", "ã„ã‚", 3, 6); +  x2("(ã‚|ã„ã‚ã„)+", "ã„ã‚ã‚ã‚ã„ã‚", 3, 12); +  x2("(?:ã‚|ã„)(?:ã‚|ã„)", "ã‚ã„", 0, 6); +  x2("(?:ã‚*|ã„*)(?:ã‚*|ã„*)", "ã‚ã‚ã‚ã„ã„ã„", 0, 9); +  x2("(?:ã‚*|ã„*)(?:ã‚+|ã„+)", "ã‚ã‚ã‚ã„ã„ã„", 0, 18); +  x2("(?:ã‚+|ã„+){2}", "ã‚ã‚ã‚ã„ã„ã„", 0, 18); +  x2("(?:ã‚+|ã„+){1,2}", "ã‚ã‚ã‚ã„ã„ã„", 0, 18); +  x2("(?:ã‚+|\\Aã„*)ã†ã†", "ã†ã†", 0, 6); +  n("(?:ã‚+|\\Aã„*)ã†ã†", "ã‚ã„ã†ã†"); +  x2("(?:^ã‚+|ã„+)*ã†", "ã‚ã‚ã„ã„ã„ã‚ã„ã†", 18, 24); +  x2("(?:^ã‚+|ã„+)*ã†", "ã‚ã‚ã„ã„ã„ã„ã†", 0, 21); +  x2("ã†{0,}", "ã†ã†ã†ã†", 0, 12); +  x2("ã‚|(?i)c", "C", 0, 1); +  x2("(?i)c|ã‚", "C", 0, 1); +  x2("(?i:ã‚)|a", "a", 0, 1); +  n("(?i:ã‚)|a", "A"); +  x2("[ã‚ã„ã†]?", "ã‚ã„ã†", 0, 3); +  x2("[ã‚ã„ã†]*", "ã‚ã„ã†", 0, 9); +  x2("[^ã‚ã„ã†]*", "ã‚ã„ã†", 0, 0); +  n("[^ã‚ã„ã†]+", "ã‚ã„ã†"); +  x2("ã‚?\?", "ã‚ã‚ã‚", 0, 0); +  x2("ã„ã‚?\?ã„", "ã„ã‚ã„", 0, 9); +  x2("ã‚*?", "ã‚ã‚ã‚", 0, 0); +  x2("ã„ã‚*?", "ã„ã‚ã‚", 0, 3); +  x2("ã„ã‚*?ã„", "ã„ã‚ã‚ã„", 0, 12); +  x2("ã‚+?", "ã‚ã‚ã‚", 0, 3); +  x2("ã„ã‚+?", "ã„ã‚ã‚", 0, 6); +  x2("ã„ã‚+?ã„", "ã„ã‚ã‚ã„", 0, 12); +  x2("(?:天?)?\?", "天", 0, 0); +  x2("(?:天?\?)?", "天", 0, 0); +  x2("(?:夢?)+?", "夢夢夢", 0, 3); +  x2("(?:風+)?\?", "風風風", 0, 0); +  x2("(?:雪+)?\?霜", "雪雪雪霜", 0, 12); +  x2("(?:ã‚ã„)?{2}", "", 0, 0); +  x2("(?:鬼車)?{2}", "鬼車鬼車鬼", 0, 12); +  x2("(?:鬼車)*{0}", "鬼車鬼車鬼", 0, 0); +  x2("(?:鬼車){3,}", "鬼車鬼車鬼車鬼車", 0, 24); +  n("(?:鬼車){3,}", "鬼車鬼車"); +  x2("(?:鬼車){2,4}", "鬼車鬼車鬼車", 0, 18); +  x2("(?:鬼車){2,4}", "鬼車鬼車鬼車鬼車鬼車", 0, 24); +  x2("(?:鬼車){2,4}?", "鬼車鬼車鬼車鬼車鬼車", 0, 12); +  x2("(?:鬼車){,}", "鬼車{,}", 0, 9); +  x2("(?:ã‹ãã)+?{2}", "ã‹ããã‹ããã‹ãã", 0, 18); +  x3("(ç«)", "ç«", 0, 3, 1); +  x3("(ç«æ°´)", "ç«æ°´", 0, 6, 1); +  x2("((時間))", "時間", 0, 6); +  x3("((風水))", "風水", 0, 6, 1); +  x3("((昨日))", "昨日", 0, 6, 2); +  x3("((((((((((((((((((((é‡å))))))))))))))))))))", "é‡å", 0, 6, 20); +  x3("(ã‚ã„)(ã†ãˆ)", "ã‚ã„ã†ãˆ", 0, 6, 1); +  x3("(ã‚ã„)(ã†ãˆ)", "ã‚ã„ã†ãˆ", 6, 12, 2); +  x3("()(ã‚)ã„ã†(ãˆãŠã‹)ããã‘ã“", "ã‚ã„ã†ãˆãŠã‹ããã‘ã“", 9, 18, 3); +  x3("(()(ã‚)ã„ã†(ãˆãŠã‹)ããã‘ã“)", "ã‚ã„ã†ãˆãŠã‹ããã‘ã“", 9, 18, 4); +  x3(".*(フォ)ン・マ(ン()シュタ)イン", "フォン・マンシュタイン", 15, 27, 2); +  x2("(^ã‚)", "ã‚", 0, 3); +  x3("(ã‚)|(ã‚)", "ã„ã‚", 3, 6, 1); +  x3("(^ã‚)|(ã‚)", "ã„ã‚", 3, 6, 2); +  x3("(ã‚?)", "ã‚ã‚ã‚", 0, 3, 1); +  x3("(ã¾*)", "ã¾ã¾ã¾", 0, 9, 1); +  x3("(ã¨*)", "", 0, 0, 1); +  x3("(ã‚‹+)", "ã‚‹ã‚‹ã‚‹ã‚‹ã‚‹ã‚‹ã‚‹", 0, 21, 1); +  x3("(ãµ+|ã¸*)", "ãµãµãµã¸ã¸", 0, 9, 1); +  x3("(ã‚+|ã„?)", "ã„ã„ã„ã‚ã‚", 0, 3, 1); +  x3("(ã‚ã„ã†)?", "ã‚ã„ã†", 0, 9, 1); +  x3("(ã‚ã„ã†)*", "ã‚ã„ã†", 0, 9, 1); +  x3("(ã‚ã„ã†)+", "ã‚ã„ã†", 0, 9, 1); +  x3("(ã•ã—ã™|ã‚ã„ã†)+", "ã‚ã„ã†", 0, 9, 1); +  x3("([ãªã«ã¬][ã‹ãã]|ã‹ãã)+", "ã‹ãã", 0, 9, 1); +  x3("((?i:ã‚ã„ã†))", "ã‚ã„ã†", 0, 9, 1); +  x3("((?m:ã‚.ã†))", "ã‚\nã†", 0, 7, 1); +  x3("((?=ã‚ã‚“)ã‚)", "ã‚ã‚“ã„", 0, 3, 1); +  x3("ã‚ã„ã†|(.ã‚ã„ãˆ)", "ã‚“ã‚ã„ãˆ", 0, 12, 1); +  x3("ã‚*(.)", "ã‚ã‚ã‚ã‚ã‚“", 12, 15, 1); +  x3("ã‚*?(.)", "ã‚ã‚ã‚ã‚ã‚“", 0, 3, 1); +  x3("ã‚*?(ã‚“)", "ã‚ã‚ã‚ã‚ã‚“", 12, 15, 1); +  x3("[ã„ã†ãˆ]ã‚*(.)", "ãˆã‚ã‚ã‚ã‚ã‚“", 15, 18, 1); +  x3("(\\Aã„ã„)ã†ã†", "ã„ã„ã†ã†", 0, 6, 1); +  n("(\\Aã„ã„)ã†ã†", "ã‚“ã„ã„ã†ã†"); +  x3("(^ã„ã„)ã†ã†", "ã„ã„ã†ã†", 0, 6, 1); +  n("(^ã„ã„)ã†ã†", "ã‚“ã„ã„ã†ã†"); +  x3("ã‚ã‚(ã‚‹ã‚‹$)", "ã‚ã‚ã‚‹ã‚‹", 6, 12, 1); +  n("ã‚ã‚(ã‚‹ã‚‹$)", "ã‚ã‚ã‚‹ã‚‹ã‚‹"); +  x2("(ç„¡)\\1", "ç„¡ç„¡", 0, 6); +  n("(ç„¡)\\1", "ç„¡æ¦"); +  x2("(空?)\\1", "空空", 0, 6); +  x2("(空?\?)\\1", "空空", 0, 0); +  x2("(空*)\\1", "空空空空空", 0, 12); +  x3("(空*)\\1", "空空空空空", 0, 6, 1); +  x2("ã‚(ã„*)\\1", "ã‚ã„ã„ã„ã„", 0, 15); +  x2("ã‚(ã„*)\\1", "ã‚ã„", 0, 3); +  x2("(ã‚*)(ã„*)\\1\\2", "ã‚ã‚ã‚ã„ã„ã‚ã‚ã‚ã„ã„", 0, 30); +  x2("(ã‚*)(ã„*)\\2", "ã‚ã‚ã‚ã„ã„ã„ã„", 0, 21); +  x3("(ã‚*)(ã„*)\\2", "ã‚ã‚ã‚ã„ã„ã„ã„", 9, 15, 2); +  x2("(((((((ã½*)ãº))))))ã´\\7", "ã½ã½ã½ãºã´ã½ã½ã½", 0, 24); +  x3("(((((((ã½*)ãº))))))ã´\\7", "ã½ã½ã½ãºã´ã½ã½ã½", 0, 9, 7); +  x2("(ã¯)(ã²)(ãµ)\\2\\1\\3", "ã¯ã²ãµã²ã¯ãµ", 0, 18); +  x2("([ã-ã‘])\\1", "ãã", 0, 6); +  x2("(\\w\\d\\s)\\1", "ã‚5 ã‚5 ", 0, 10); +  n("(\\w\\d\\s)\\1", "ã‚5 ã‚5"); +  x2("(誰?|[ã‚-ã†]{3})\\1", "誰?誰?", 0, 12); +  x2("...(誰?|[ã‚-ã†]{3})\\1", "ã‚aã‚誰?誰?", 0, 19); +  x2("(誰?|[ã‚-ã†]{3})\\1", "ã†ã„ã†ã†ã„ã†", 0, 18); +  x2("(^ã“)\\1", "ã“ã“", 0, 6); +  n("(^ã‚€)\\1", "ã‚むむ"); +  n("(ã‚$)\\1", "ã‚ã‚"); +  n("(ã‚ã„\\Z)\\1", "ã‚ã„"); +  x2("(ã‚*\\Z)\\1", "ã‚", 3, 3); +  x2(".(ã‚*\\Z)\\1", "ã„ã‚", 3, 6); +  x3("(.(ã‚„ã„ゆ)\\2)", "zã‚„ã„ゆやã„ゆ", 0, 19, 1); +  x3("(.(..\\d.)\\2)", "ã‚12341234", 0, 11, 1); +  x2("((?i:ã‚vãš))\\1", "ã‚vãšã‚vãš", 0, 14); +  x2("(?<愚ã‹>変|\\(\\g<愚ã‹>\\))", "((((((変))))))", 0, 15); +  x2("\\A(?:\\g<阿_1>|\\g<云_2>|\\z終了  (?<阿_1>観|自\\g<云_2>自)(?<云_2>在|è©è–©\\g<阿_1>è©è–©))$", "è©è–©è‡ªè©è–©è‡ªåœ¨è‡ªè©è–©è‡ªè©è–©", 0, 39); +  x2("[[ã²ãµ]]", "ãµ", 0, 3); +  x2("[[ã„ãŠã†]ã‹]", "ã‹", 0, 3); +  n("[[^ã‚]]", "ã‚"); +  n("[^[ã‚]]", "ã‚"); +  x2("[^[^ã‚]]", "ã‚", 0, 3); +  x2("[[ã‹ãã]&&ãã]", "ã", 0, 3); +  n("[[ã‹ãã]&&ãã]", "ã‹"); +  n("[[ã‹ãã]&&ãã]", "ã‘"); +  x2("[ã‚-ã‚“&&ã„-ã‚’&&ã†-ã‚‘]", "ã‚‘", 0, 3); +  n("[^ã‚-ã‚“&&ã„-ã‚’&&ã†-ã‚‘]", "ã‚‘"); +  x2("[[^ã‚&&ã‚]&&ã‚-ã‚“]", "ã„", 0, 3); +  n("[[^ã‚&&ã‚]&&ã‚-ã‚“]", "ã‚"); +  x2("[[^ã‚-ã‚“&&ã„ã†ãˆãŠ]&&[^ã†-ã‹]]", "ã", 0, 3); +  n("[[^ã‚-ã‚“&&ã„ã†ãˆãŠ]&&[^ã†-ã‹]]", "ã„"); +  x2("[^[^ã‚ã„ã†]&&[^ã†ãˆãŠ]]", "ã†", 0, 3); +  x2("[^[^ã‚ã„ã†]&&[^ã†ãˆãŠ]]", "ãˆ", 0, 3); +  n("[^[^ã‚ã„ã†]&&[^ã†ãˆãŠ]]", "ã‹"); +  x2("[ã‚-&&-ã‚]", "-", 0, 1); +  x2("[^[^a-zã‚ã„ã†]&&[^bcdefgã†ãˆãŠ]q-w]", "ãˆ", 0, 3); +  x2("[^[^a-zã‚ã„ã†]&&[^bcdefgã†ãˆãŠ]g-w]", "f", 0, 1); +  x2("[^[^a-zã‚ã„ã†]&&[^bcdefgã†ãˆãŠ]g-w]", "g", 0, 1); +  n("[^[^a-zã‚ã„ã†]&&[^bcdefgã†ãˆãŠ]g-w]", "2"); +  x2("a<b>ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰<\\/b>", "a<b>ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰</b>", 0, 44); +  x2(".<b>ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰<\\/b>", "a<b>ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰</b>", 0, 44); +  x2("\\n?\\z", "ã“ã‚“ã«ã¡ã¯", 15, 15); + +  x2("\\p{Hiragana}", "ã´", 0, 3); +  n("\\P{Hiragana}", "ã´"); + +  x2("\\p{Word}", "ã“", 0, 3); +  n("\\p{^Word}", "ã“"); +  x2("[\\p{Word}]", "ã“", 0, 3); +  n("[\\p{^Word}]", "ã“"); +  n("[^\\p{Word}]", "ã“"); +  x2("[^\\p{^Word}]", "ã“", 0, 3); +  x2("[^\\p{^Word}&&\\p{ASCII}]", "ã“", 0, 3); +  x2("[^\\p{^Word}&&\\p{ASCII}]", "a", 0, 1); +  n("[^\\p{^Word}&&\\p{ASCII}]", "#"); +  x2("[^[\\p{^Word}]&&[\\p{ASCII}]]", "ã“", 0, 3); +  x2("[^[\\p{ASCII}]&&[^\\p{Word}]]", "ã“", 0, 3); +  n("[[\\p{ASCII}]&&[^\\p{Word}]]", "ã“"); +  x2("[^[\\p{^Word}]&&[^\\p{ASCII}]]", "ã“", 0, 3); +  x2("[^\\x{104a}]", "ã“", 0, 3); +  x2("[^\\p{^Word}&&[^\\x{104a}]]", "ã“", 0, 3); +  x2("[^[\\p{^Word}]&&[^\\x{104a}]]", "ã“", 0, 3); +  n("[^\\p{Word}||[^\\x{104a}]]", "ã“"); + +  x2("\\p{^Cntrl}", "ã“", 0, 3); +  n("\\p{Cntrl}", "ã“"); +  x2("[\\p{^Cntrl}]", "ã“", 0, 3); +  n("[\\p{Cntrl}]", "ã“"); +  n("[^\\p{^Cntrl}]", "ã“"); +  x2("[^\\p{Cntrl}]", "ã“", 0, 3); +  x2("[^\\p{Cntrl}&&\\p{ASCII}]", "ã“", 0, 3); +  x2("[^\\p{Cntrl}&&\\p{ASCII}]", "a", 0, 1); +  n("[^\\p{^Cntrl}&&\\p{ASCII}]", "#"); +  x2("[^[\\p{^Cntrl}]&&[\\p{ASCII}]]", "ã“", 0, 3); +  x2("[^[\\p{ASCII}]&&[^\\p{Cntrl}]]", "ã“", 0, 3); +  n("[[\\p{ASCII}]&&[^\\p{Cntrl}]]", "ã“"); +  n("[^[\\p{^Cntrl}]&&[^\\p{ASCII}]]", "ã“"); +  n("[^\\p{^Cntrl}&&[^\\x{104a}]]", "ã“"); +  n("[^[\\p{^Cntrl}]&&[^\\x{104a}]]", "ã“"); +  n("[^\\p{Cntrl}||[^\\x{104a}]]", "ã“"); + +  x2("(?-W:\\p{Word})", "ã“", 0, 3); +  n("(?W:\\p{Word})", "ã“"); +  x2("(?W:\\p{Word})", "k", 0, 1); +  x2("(?-W:[[:word:]])", "ã“", 0, 3); +  n("(?W:[[:word:]])", "ã“"); +  x2("(?-D:\\p{Digit})", "3", 0, 3); +  n("(?D:\\p{Digit})", "3"); +  x2("(?-S:\\p{Space})", "\xc2\x85", 0, 2); +  n("(?S:\\p{Space})", "\xc2\x85"); +  x2("(?-P:\\p{Word})", "ã“", 0, 3); +  n("(?P:\\p{Word})", "ã“"); +  x2("(?-W:\\w)", "ã“", 0, 3); +  n("(?W:\\w)", "ã“"); +  x2("(?-W:\\w)", "k", 0, 1); +  x2("(?W:\\w)", "k", 0, 1); +  n("(?-W:\\W)", "ã“"); +  x2("(?W:\\W)", "ã“", 0, 3); +  n("(?-W:\\W)", "k"); +  n("(?W:\\W)", "k"); + +  x2("(?-W:\\b)", "ã“", 0, 0); +  n("(?W:\\b)", "ã“"); +  x2("(?-W:\\b)", "h", 0, 0); +  x2("(?W:\\b)", "h", 0, 0); +  n("(?-W:\\B)", "ã“"); +  x2("(?W:\\B)", "ã“", 0, 0); +  n("(?-W:\\B)", "h"); +  n("(?W:\\B)", "h"); +  x2("(?-P:\\b)", "ã“", 0, 0); +  n("(?P:\\b)", "ã“"); +  x2("(?-P:\\b)", "h", 0, 0); +  x2("(?P:\\b)", "h", 0, 0); +  n("(?-P:\\B)", "ã“"); +  x2("(?P:\\B)", "ã“", 0, 0); +  n("(?-P:\\B)", "h"); +  n("(?P:\\B)", "h"); + +  x2("\\p{InBasicLatin}", "\x41", 0, 1); +  //x2("\\p{Grapheme_Cluster_Break_Regional_Indicator}", "\xF0\x9F\x87\xA9", 0, 4); +  //n("\\p{Grapheme_Cluster_Break_Regional_Indicator}",  "\xF0\x9F\x87\xA5"); + +  // extended grapheme cluster + +  // CR + LF +  n(".\\y\\O", "\x0d\x0a"); +  x2(".\\Y\\O", "\x0d\x0a", 0, 2); + +  // LATIN SMALL LETTER G, COMBINING DIAERESIS +  n("^.\\y.$", "\x67\xCC\x88"); +  x2(".\\Y.", "\x67\xCC\x88", 0, 3); +  x2("\\y.\\Y.\\y", "\x67\xCC\x88", 0, 3); +  // HANGUL SYLLABLE GAG +  x2("\\y.\\y", "\xEA\xB0\x81", 0, 3); +  // HANGUL CHOSEONG KIYEOK, HANGUL JUNGSEONG A, HANGUL JONGSEONG KIYEOK +  x2("^.\\Y.\\Y.$", "\xE1\x84\x80\xE1\x85\xA1\xE1\x86\xA8", 0, 9); +  n("^.\\y.\\Y.$", "\xE1\x84\x80\xE1\x85\xA1\xE1\x86\xA8"); +  // TAMIL LETTER NA, TAMIL VOWEL SIGN I, +  x2(".\\Y.", "\xE0\xAE\xA8\xE0\xAE\xBF", 0, 6); +  n(".\\y.", "\xE0\xAE\xA8\xE0\xAE\xBF"); +  // THAI CHARACTER KO KAI, THAI CHARACTER SARA AM +  x2(".\\Y.", "\xE0\xB8\x81\xE0\xB8\xB3", 0, 6); +  n(".\\y.", "\xE0\xB8\x81\xE0\xB8\xB3"); +  // DEVANAGARI LETTER SSA, DEVANAGARI VOWEL SIGN I +  x2(".\\Y.", "\xE0\xA4\xB7\xE0\xA4\xBF", 0, 6); +  n(".\\y.", "\xE0\xA4\xB7\xE0\xA4\xBF"); + +  // CR + LF +  n("^\\X\\X$", "\x0d\x0a"); +  x2("^\\X$", "\x0d\x0a", 0, 2); +  // LATIN SMALL LETTER G, COMBINING DIAERESIS +  n("^\\X\\X.$", "\x67\xCC\x88"); +  x2("^\\X$", "\x67\xCC\x88", 0, 3); +  // HANGUL CHOSEONG KIYEOK, HANGUL JUNGSEONG A, HANGUL JONGSEONG KIYEOK +  x2("^\\X$", "\xE1\x84\x80\xE1\x85\xA1\xE1\x86\xA8", 0, 9); +  n("^\\X\\X\\X$", "\xE1\x84\x80\xE1\x85\xA1\xE1\x86\xA8"); +  // TAMIL LETTER NA, TAMIL VOWEL SIGN I, +  x2("^\\X$", "\xE0\xAE\xA8\xE0\xAE\xBF", 0, 6); +  n("\\X\\X", "\xE0\xAE\xA8\xE0\xAE\xBF"); +  // THAI CHARACTER KO KAI, THAI CHARACTER SARA AM +  x2("^\\X$", "\xE0\xB8\x81\xE0\xB8\xB3", 0, 6); +  n("\\X\\X", "\xE0\xB8\x81\xE0\xB8\xB3"); +  // DEVANAGARI LETTER SSA, DEVANAGARI VOWEL SIGN I +  x2("^\\X$", "\xE0\xA4\xB7\xE0\xA4\xBF", 0, 6); +  n("\\X\\X", "\xE0\xA4\xB7\xE0\xA4\xBF"); + +  n("^\\X.$", "\xE0\xAE\xA8\xE0\xAE\xBF"); + + +  e("(?<abc>\\g<abc>)", "zzzz", ONIGERR_NEVER_ENDING_RECURSION); +  e("(?<=(?>abc))", "abc", ONIGERR_INVALID_LOOK_BEHIND_PATTERN); + +  fprintf(stdout, +       "\nRESULT   SUCC: %d,  FAIL: %d,  ERROR: %d      (by Oniguruma %s)\n", +       nsucc, nfail, nerror, onig_version()); + +  onig_region_free(region, 1); +  onig_end(); + +  return ((nfail == 0 && nerror == 0) ? 0 : -1); +} diff --git a/test/testc.c b/test/testc.c index 222c9cd..1a60c8a 100644 --- a/test/testc.c +++ b/test/testc.c @@ -639,6 +639,7 @@ extern int main(int argc, char* argv[])    x2("(?~ab)", "ccc\ndab", 0, 5);    x2("(?m:(?~ab))", "ccc\ndab", 0, 5);    x2("(?-m:(?~ab))", "ccc\ndab", 0, 5); +  x2("(?~abc)xyz", "xyz012345678901234567890123456789abc", 0, 3);    // absent with expr    x2("(?~|78|\\d*)", "123456789", 0, 6); @@ -661,8 +662,9 @@ extern int main(int argc, char* argv[])    x2("(?~|aaaaa|a*+)", "aaaaa", 0, 0);    x2("(?~|aaaaaa|a*+)b", "aaaaaab", 1, 7);    x2("(?~|abcd|(?>))", "zzzabcd", 0, 0); +  x2("(?~|abc|a*?)", "aaaabc", 0, 0); -  // absent range cutter +  // absent stopper    x2("(?~|abc)a*", "aaaaaabc", 0, 5);    x2("(?~|abc)a*z|aaaaaabc", "aaaaaabc", 0, 8);    x2("(?~|aaaaaa)a*", "aaaaaa", 0, 0); @@ -672,6 +674,21 @@ extern int main(int argc, char* argv[])    n("(?~|a)a", "a");    x2("(?~|a)(?~|)a", "a", 0, 1);    x2("(?~|a).*(?~|)a", "bbbbbbbbbbbbbbbbbbbba", 0, 21); +  x2("(?~|abc).*(xyz|pqr)(?~|)abc", "aaaaxyzaaapqrabc", 0, 16); +  x2("(?~|abc).*(xyz|pqr)(?~|)abc", "aaaaxyzaaaabcpqrabc", 11, 19); +  n("\\A(?~|abc).*(xyz|pqrabc)(?~|)abc", "aaaaxyzaaaabcpqrabcabc"); +  x2("(?~|a)(?~|)c|ab|a|", "ab", 0, 2); +  x2("(?~|a)((?~|)c|ab|a|)", "ab", 0, 0); +  x2("(?~|a)((?>(?~|))c|ab|a|)", "ab", 0, 0); + +  // extended grapheme cluster + +  // CR + LF +  n(".\\y\\O", "\x0d\x0a"); +  x2(".\\Y\\O", "\x0d\x0a", 0, 2); +  n("\\X\\X", "\x0d\x0a"); +  x2("^\\X$", "\x0d\x0a", 0, 2); +  x2("^\\X\\X\\X$", "ab\x0d\x0a", 0, 4);    /*      < ifndef IGNORE_EUC_JP > diff --git a/test/testu.c b/test/testu.c index 6ff3a10..d037194 100644 --- a/test/testu.c +++ b/test/testu.c @@ -915,6 +915,46 @@ extern int main(int argc, char* argv[])    x2("\000\\\000R\000\000", "\x20\x29\000\000", 0, 2);    n("\000\\\000R\000\000", "\x20\x2a\000\000"); +  x2("\000\\\000w\000\000", "\x01\x00\000\000", 0, 2); +  n("\000\\\000W\000\000", "\x01\x00\000\000"); +  x2("\000\\\000d\000\000", "\x0b\x66\000\000", 0, 2); +  n("\000\\\000D\000\000", "\x0b\x66\000\000"); +  x2("\000\\\000s\000\000", "\x20\x01\000\000", 0, 2); +  n("\000\\\000S\000\000", "\x20\x01\000\000"); +  x2("\000\\\000b\000\000", "\x00\x20\x01\x00\000\000", 2, 2); +  n("\000\\\000B\000\000", "\x01\x00\000\000"); +  x2("\000\\\000B\000\000", "\x00\x20\000\000", 0, 0); +  x2("\000[\000[\000:\000g\000r\000a\000p\000h\000:\000]\000]\000\000", +     "\x0d\x30\000\000", 0, 2); +  n("\000[\000[\000:\000g\000r\000a\000p\000h\000:\000]\000]\000\000", +     "\x0a\x00\000\000"); + +  // extended grapheme cluster + +  // CR + LF +  n("\000.\000\\\000y\000\\\000O\000\000", "\x00\x0d\x00\x0a\000\000"); +  x2("\000.\000\\\000Y\000\\\000O\000\000", "\x00\x0d\x00\x0a\000\000", 0, 4); + +  // LATIN SMALL LETTER G, COMBINING DIAERESIS +  n("\000^\000.\000\\\000y\000.\000$\000\000", "\x00\x67\x03\x08\000\000"); +  x2("\000.\000\\\000Y\000.\000\000", "\x00\x67\x03\x08\000\000", 0, 4); +  x2("\000\\\000y\000.\000\\\000Y\000.\000\\\000y\000\000", +     "\x00\x67\x03\x08\000\000", 0, 4); +  // TAMIL LETTER NA, TAMIL VOWEL SIGN I, +  x2("\000.\000\\\000Y\000.\000\000", "\x0B\xA8\x0B\xBF\000\000", 0, 4); +  n("\000.\000\\\000y\000.\000\000", "\x0B\xA8\x0B\xBF\000\000"); + +  // CR + LF +  n("\000\\\000X\000\\\000X\000\000", "\x00\x0d\x00\x0a\000\000"); +  x2("\000^\000\\\000X\000$\000\000", "\x00\x0d\x00\x0a\000\000", 0, 4); +  // LATIN SMALL LETTER G, COMBINING DIAERESIS +  n("\000\\\000X\000\\\000X\000\000", "\x00\x67\x03\x08\000\000"); +  x2("\000^\000\\\000X\000$\000\000", "\x00\x67\x03\x08\000\000", 0, 4); +  // TAMIL LETTER NA, TAMIL VOWEL SIGN I, +  x2("\000^\000\\\000X\000$\000\000", "\x0B\xA8\x0B\xBF\000\000", 0, 4); +  n("\000\\\000X\000\\\000X\000\000", "\x0B\xA8\x0B\xBF\000\000"); + +    fprintf(stdout,         "\nRESULT   SUCC: %d,  FAIL: %d,  ERROR: %d      (by Oniguruma %s)\n",         nsucc, nfail, nerror, onig_version());  | 
