packages feed

text 2.0 → 2.0.1

raw patch · 29 files changed

+3738/−2302 lines, 29 filesdep +system-cxx-std-libdep ~base

Dependencies added: system-cxx-std-lib

Dependency ranges changed: base

Files

− README.markdown
@@ -1,30 +0,0 @@-# text [![Hackage](http://img.shields.io/hackage/v/text.svg)](https://hackage.haskell.org/package/text) [![Stackage LTS](http://stackage.org/package/text/badge/lts)](http://stackage.org/lts/package/text) [![Stackage Nightly](http://stackage.org/package/text/badge/nightly)](http://stackage.org/nightly/package/text)--Haskell library for space- and time-efficient operations over Unicode text.--# Get involved!--Please report bugs via the-[github issue tracker](https://github.com/haskell/text/issues).--The main repo:--```bash-git clone https://github.com/haskell/text-```--To run benchmarks please clone and unpack test files:--```bash-git clone https://github.com/haskell/text-test-data benchmarks/text-test-data-make -Cbenchmarks/text-test-data-```--# Authors--The base code for this library was originally written by Tom Harper,-based on the stream fusion framework developed by Roman Leshchinskiy,-Duncan Coutts, and Don Stewart.--The core library was fleshed out, debugged, and tested by Bryan-O'Sullivan. Transition from UTF-16 to UTF-8 is by Andrew Lelechenko.
+ README.md view
@@ -0,0 +1,31 @@+# text [![Hackage](http://img.shields.io/hackage/v/text.svg)](https://hackage.haskell.org/package/text) [![Stackage LTS](http://stackage.org/package/text/badge/lts)](http://stackage.org/lts/package/text) [![Stackage Nightly](http://stackage.org/package/text/badge/nightly)](http://stackage.org/nightly/package/text)++Haskell library for space- and time-efficient operations over Unicode text.++# Get involved!++Please report bugs via the+[github issue tracker](https://github.com/haskell/text/issues).++The main repo:++```bash+git clone https://github.com/haskell/text+```++To run benchmarks please clone and unpack test files:++```bash+cd text+git clone https://github.com/haskell/text-test-data benchmarks/text-test-data+make -Cbenchmarks/text-test-data+```++# Authors++The base code for this library was originally written by Tom Harper,+based on the stream fusion framework developed by Roman Leshchinskiy,+Duncan Coutts, and Don Stewart.++The core library was fleshed out, debugged, and tested by Bryan+O'Sullivan. Transition from UTF-16 to UTF-8 is by Andrew Lelechenko.
benchmarks/haskell/Benchmarks/Pure.hs view
@@ -330,7 +330,7 @@       | i < n     = TB.singleton c `mappend` go (i+1)       | otherwise = mempty --- | Gives more opportunity for inlining and elimination of unnecesary+-- | Gives more opportunity for inlining and elimination of unnecessary -- bounds checks. -- mappend8Char :: Char -> TB.Builder
benchmarks/haskell/Benchmarks/Search.hs view
@@ -1,8 +1,8 @@--- | Search for a pattern in a file, find the number of occurences+-- | Search for a pattern in a file, find the number of occurrences -- -- Tested in this benchmark: ----- * Searching all occurences of a pattern using library routines+-- * Searching all occurrences of a pattern using library routines -- module Benchmarks.Search     ( initEnv
cbits/measure_off.c view
@@ -13,12 +13,36 @@ #endif #include <stdbool.h> +// stdatomic.h has been introduces in gcc 4.9+#if !(__GNUC__ >= 5 || __GNUC__ == 4 && __GNUC_MINOR__ >= 9 || defined(__clang_major__))+#define __STDC_NO_ATOMICS__+#endif+ #ifndef __STDC_NO_ATOMICS__ #include <stdatomic.h> #endif +/*+  Clang-6 does not enable proper -march flags for assembly modules+  which leads to "error: instruction requires: AVX-512 ISA"+  at the assembler phase.++  Apple LLVM version 10.0.0 (clang-1000.11.45.5) is based on clang-6+  https://en.wikipedia.org/wiki/Xcode#Toolchain_versions+  and it's the latest available version on macOS 10.13.++  Disable AVX-512 instructions as they are most likely not supported+  on the hardware running clang-6.+*/+#if !((defined(__apple_build_version__) && __apple_build_version__ <= 10001145) \+      || (defined(__clang_major__) && __clang_major__ <= 6)) && !defined(__STDC_NO_ATOMICS__)+#define COMPILER_SUPPORTS_AVX512+#endif+++#if defined(__x86_64__) && defined(COMPILER_SUPPORTS_AVX512) bool has_avx512_vl_bw() {-#ifdef __x86_64__+#if (__GNUC__ >= 7 || __GNUC__ == 6 && __GNUC_MINOR__ >= 3) || defined(__clang_major__)   uint32_t eax = 0, ebx = 0, ecx = 0, edx = 0;   __get_cpuid_count(7, 0, &eax, &ebx, &ecx, &edx);   // https://en.wikipedia.org/wiki/CPUID#EAX=7,_ECX=0:_Extended_Features@@ -30,6 +54,7 @@   return false; #endif }+#endif  /*   measure_off_naive / measure_off_avx / measure_off_sse@@ -45,7 +70,16 @@   while (src < srcend - 7){     uint64_t w64;     memcpy(&w64, src, sizeof(uint64_t));-    size_t leads = __builtin_popcountll(((w64 << 1) | ~w64) & 0x8080808080808080ULL);+    w64 =  ((w64 << 1) | ~w64) & 0x8080808080808080ULL;+    // compute the popcount of w64 with two bit shifts and a multiplication+    size_t leads = (  (w64 >> 7)              // w64 >> 7           = Sum{0<= i <= 7} x_i * 256^i    (x_i \in {0,1})+                    * (0x0101010101010101ULL) // 0x0101010101010101 = Sum{0<= i <= 7} 256^i+                                              //              (Sum{0<= i <= 7} x_i * 256^i) * (Sum{0<= j <= 7} 256^j) +                                              // =(mod 256^8) (Sum{0<= k <= 7} (256^k) * (Sum {0 <= l < 7} x_l) +                                              // as the coefficients of 256^k in the result are the x_i such that i+j =(mod 8) k+                                              // and each i satisfies this equation for exactly one such j+                                              // So each byte of the result contains the sum we want.+                   ) >> 56; // bit shift to get a single byte which contains Sum {0 <= j < 7} x_j     if (cnt < leads) break;     cnt-= leads;     src+= 8;@@ -68,7 +102,7 @@   return cnt == 0 ? (ssize_t)(srcend - src) : (ssize_t)(- cnt); } -#ifdef __x86_64__+#if defined(__x86_64__) && defined(COMPILER_SUPPORTS_AVX512) __attribute__((target("avx512vl,avx512bw"))) static const ssize_t measure_off_avx(const uint8_t *src, const uint8_t *srcend, size_t cnt) {@@ -109,6 +143,36 @@ } #endif +/* Count the number of bits set in the argument + * +   This is a temporary workaround for the fact that+   the GHC RTS linker does not recognize the `__builtin_popcountll`+   symbol.+ +   See https://gitlab.haskell.org/ghc/ghc/-/issues/21787+       https://gitlab.haskell.org/ghc/ghc/-/issues/19900+       https://github.com/haskell/text/issues/450+ +   It can be removed and the usages of popcount64 replaced with+   `__builtin_popcountll` once affected versions of the compiler+   are no longer in widespread use.+ +   Once GHC learns to recognize the symbol, this can be gated+   by CPP to call __builtin_popcountll when using the appropriate+   version of GHC.+*/+static inline const size_t popcount16(uint16_t x) {++  // Taken from https://en.wikipedia.org/wiki/Hamming_weight+  const uint16_t m1  = 0x5555; //binary: 0101...+  const uint16_t m2  = 0x3333; //binary: 00110011..+  const uint16_t m4  = 0x0f0f; //binary:  4 zeros,  4 ones ...+  x -= (x >> 1) & m1;             //put count of each 2 bits into those 2 bits+  x = (x & m2) + ((x >> 2) & m2); //put count of each 4 bits into those 4 bits +  x = (x + (x >> 4)) & m4;        //put count of each 8 bits into those 8 bits +  return (x >> 8) + (x & 0x00FF);+}+ static const ssize_t measure_off_sse(const uint8_t *src, const uint8_t *srcend, size_t cnt) { #ifdef __x86_64__@@ -116,7 +180,7 @@     __m128i w128 = _mm_loadu_si128((__m128i *)src);     // Which bytes are either < 128 or >= 192?     uint16_t mask = _mm_movemask_epi8(_mm_cmpgt_epi8(w128, _mm_set1_epi8(0xBF)));-    size_t leads = __builtin_popcount(mask);+    size_t leads = popcount16(mask);     if (cnt < leads) break;     cnt-= leads;     src+= 16;@@ -143,16 +207,20 @@   this condition is not checked. */ ssize_t _hs_text_measure_off(const uint8_t *src, size_t off, size_t len, size_t cnt) {+#ifndef __STDC_NO_ATOMICS__   static _Atomic measure_off_t s_impl = (measure_off_t)NULL;   measure_off_t impl = atomic_load_explicit(&s_impl, memory_order_relaxed);   if (!impl) {-#ifdef __x86_64__+#if defined(__x86_64__) && defined(COMPILER_SUPPORTS_AVX512)     impl = has_avx512_vl_bw() ? measure_off_avx : measure_off_sse; #else     impl = measure_off_sse; #endif     atomic_store_explicit(&s_impl, impl, memory_order_relaxed);   }+#else+  measure_off_t impl = measure_off_sse;+#endif   ssize_t ret = (*impl)(src + off, src + off + len, cnt);   return ret >= 0 ? ((ssize_t)len - ret) : (- (cnt + ret)); }
changelog.md view
@@ -1,3 +1,13 @@+### 2.0.1++* Improve portability of C and C++ code.+* [Make `Lift` instance more efficient](https://github.com/haskell/text/pull/413)+* [Make `toCaseFold` idempotent](https://github.com/haskell/text/pull/402)+* [Add `fromPtr0`](https://github.com/haskell/text/pull/423)+* [Add `Data.Text.foldr'`](https://github.com/haskell/text/pull/436)+* [Add `withCString`](https://github.com/haskell/text/pull/431)+* [Add `spanM` and `spanEndM`](https://github.com/haskell/text/pull/437)+ ### 2.0  * [Switch internal representation of text from UTF-16 to UTF-8](https://github.com/haskell/text/pull/365):@@ -51,7 +61,9 @@ * Update Haddock documentation to better reflect fusion eligibility; improve fusion   rules for `takeWhileEnd` and `length` (gh-241, ghc-202) -* Optimise `Data.Text.replicate` from `O(n)` to `O(log n)` (gh-209)+* Optimise `Data.Text.replicate`. Rather than calling `memcpy` `n` times,+  call it only `O(log n)` times on chunks of increasing size. The total+  asymptotic complexity remains `O(nm)`. (gh-209)  * Support `base-4.13.0.0` @@ -261,7 +273,7 @@ * New function toTitle converts words in a string to title case  * New functions peekCStringLen and withCStringLen simplify-  interoperability with C functionns+  interoperability with C functions  * Added support for decoding UTF-8 in stream-friendly fashion 
scripts/CaseFolding.hs view
@@ -35,14 +35,8 @@ parseCF name = parse entries name <$> readFile name  mapCF :: CaseFolding -> [String]-mapCF (CF _ ms) = typ ++ map printUnusual ms' ++ map printUsual usual ++ [last]+mapCF (CF _ ms) = typ ++ map printUnusual (filter (\f -> status f `elem` "CF") ms) ++ [last]   where-    ms' = filter p ms-    p f = status f `elem` "CF" &&-          mapping f /= [toLower (code f)]-    unusual = map code ms'-    usual = filter (\c -> toLower c /= c && c `notElem` unusual) [minBound..maxBound]-     typ = ["foldMapping :: Char# -> _ {- unboxed Int64 -}"            ,"{-# NOINLINE foldMapping #-}"            ,"foldMapping = \\case"]@@ -50,4 +44,3 @@     printUnusual c = "  -- " ++ name c ++ "\n" ++              "  " ++ showC (code c) ++ "# -> unI64 "  ++ show (ord x + (ord y `shiftL` 21) + (ord z `shiftL` 42))        where x:y:z:_ = mapping c ++ repeat '\0'-    printUsual c = "  " ++ showC c ++ "# -> unI64 " ++ show (ord (toLower c))
simdutf/simdutf.cpp view
@@ -1,4 +1,4 @@-/* auto-generated on 2021-07-29 10:43:28 -0400. Do not edit! */+/* auto-generated on 2022-03-21 23:28:26 -0400. Do not edit! */ // dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, filename=simdutf.cpp /* begin file src/simdutf.cpp */ #include "simdutf.h"@@ -115,93 +115,17 @@ namespace arm64 { namespace { -// We sometimes call trailing_zero on inputs that are zero,-// but the algorithms do not end up using the returned value.-// Sadly, sanitizers are not smart enough to figure it out.-NO_SANITIZE_UNDEFINED-simdutf_really_inline int trailing_zeroes(uint64_t input_num) {-#ifdef SIMDUTF_REGULAR_VISUAL_STUDIO-  unsigned long ret;-  // Search the mask data from least significant bit (LSB)-  // to the most significant bit (MSB) for a set bit (1).-  _BitScanForward64(&ret, input_num);-  return (int)ret;-#else // SIMDUTF_REGULAR_VISUAL_STUDIO-  return __builtin_ctzll(input_num);-#endif // SIMDUTF_REGULAR_VISUAL_STUDIO-}- /* result might be undefined when input_num is zero */-simdutf_really_inline uint64_t clear_lowest_bit(uint64_t input_num) {-  return input_num & (input_num-1);-}--/* result might be undefined when input_num is zero */-simdutf_really_inline int leading_zeroes(uint64_t input_num) {-#ifdef SIMDUTF_REGULAR_VISUAL_STUDIO-  unsigned long leading_zero = 0;-  // Search the mask data from most significant bit (MSB)-  // to least significant bit (LSB) for a set bit (1).-  if (_BitScanReverse64(&leading_zero, input_num))-    return (int)(63 - leading_zero);-  else-    return 64;-#else-  return __builtin_clzll(input_num);-#endif// SIMDUTF_REGULAR_VISUAL_STUDIO-}--/* result might be undefined when input_num is zero */ simdutf_really_inline int count_ones(uint64_t input_num) {    return vaddv_u8(vcnt_u8(vcreate_u8(input_num))); } -simdutf_really_inline bool add_overflow(uint64_t value1, uint64_t value2, uint64_t *result) {-#ifdef SIMDUTF_REGULAR_VISUAL_STUDIO-  *result = value1 + value2;-  return *result < value1;-#else-  return __builtin_uaddll_overflow(value1, value2,-                                   reinterpret_cast<unsigned long long *>(result));-#endif-}- } // unnamed namespace } // namespace arm64 } // namespace simdutf  #endif // SIMDUTF_ARM64_BITMANIPULATION_H /* end file src/simdutf/arm64/bitmanipulation.h */-// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, filename=simdutf/arm64/bitmask.h-/* begin file src/simdutf/arm64/bitmask.h */-#ifndef SIMDUTF_ARM64_BITMASK_H-#define SIMDUTF_ARM64_BITMASK_H--namespace simdutf {-namespace arm64 {-namespace {--//-// Perform a "cumulative bitwise xor," flipping bits each time a 1 is encountered.-//-// For example, prefix_xor(00100100) == 00011100-//-simdutf_really_inline uint64_t prefix_xor(uint64_t bitmask) {-  bitmask ^= bitmask << 1;-  bitmask ^= bitmask << 2;-  bitmask ^= bitmask << 4;-  bitmask ^= bitmask << 8;-  bitmask ^= bitmask << 16;-  bitmask ^= bitmask << 32;-  return bitmask;-}--} // unnamed namespace-} // namespace arm64-} // namespace simdutf--#endif-/* end file src/simdutf/arm64/bitmask.h */ // dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, filename=simdutf/arm64/simd.h /* begin file src/simdutf/arm64/simd.h */ #ifndef SIMDUTF_ARM64_SIMD_H@@ -1215,34 +1139,7 @@ namespace haswell { namespace { -// We sometimes call trailing_zero on inputs that are zero,-// but the algorithms do not end up using the returned value.-// Sadly, sanitizers are not smart enough to figure it out.-NO_SANITIZE_UNDEFINED-simdutf_really_inline int trailing_zeroes(uint64_t input_num) { #ifdef SIMDUTF_REGULAR_VISUAL_STUDIO-  return (int)_tzcnt_u64(input_num);-#else // SIMDUTF_REGULAR_VISUAL_STUDIO-  ////////-  // You might expect the next line to be equivalent to-  // return (int)_tzcnt_u64(input_num);-  // but the generated code differs and might be less efficient?-  ////////-  return __builtin_ctzll(input_num);-#endif // SIMDUTF_REGULAR_VISUAL_STUDIO-}--/* result might be undefined when input_num is zero */-simdutf_really_inline uint64_t clear_lowest_bit(uint64_t input_num) {-  return _blsr_u64(input_num);-}--/* result might be undefined when input_num is zero */-simdutf_really_inline int leading_zeroes(uint64_t input_num) {-  return int(_lzcnt_u64(input_num));-}--#ifdef SIMDUTF_REGULAR_VISUAL_STUDIO simdutf_really_inline unsigned __int64 count_ones(uint64_t input_num) {   // note: we do not support legacy 32-bit Windows   return __popcnt64(input_num);// Visual Studio wants two underscores@@ -1253,51 +1150,12 @@ } #endif -simdutf_really_inline bool add_overflow(uint64_t value1, uint64_t value2,-                                uint64_t *result) {-#ifdef SIMDUTF_REGULAR_VISUAL_STUDIO-  return _addcarry_u64(0, value1, value2,-                       reinterpret_cast<unsigned __int64 *>(result));-#else-  return __builtin_uaddll_overflow(value1, value2,-                                   reinterpret_cast<unsigned long long *>(result));-#endif-}- } // unnamed namespace } // namespace haswell } // namespace simdutf  #endif // SIMDUTF_HASWELL_BITMANIPULATION_H /* end file src/simdutf/haswell/bitmanipulation.h */-// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, filename=simdutf/haswell/bitmask.h-/* begin file src/simdutf/haswell/bitmask.h */-#ifndef SIMDUTF_HASWELL_BITMASK_H-#define SIMDUTF_HASWELL_BITMASK_H--namespace simdutf {-namespace haswell {-namespace {--//-// Perform a "cumulative bitwise xor," flipping bits each time a 1 is encountered.-//-// For example, prefix_xor(00100100) == 00011100-//-simdutf_really_inline uint64_t prefix_xor(const uint64_t bitmask) {-  // There should be no such thing with a processor supporting avx2-  // but not clmul.-  __m128i all_ones = _mm_set1_epi8('\xFF');-  __m128i result = _mm_clmulepi64_si128(_mm_set_epi64x(0ULL, bitmask), all_ones, 0);-  return _mm_cvtsi128_si64(result);-}--} // unnamed namespace-} // namespace haswell-} // namespace simdutf--#endif // SIMDUTF_HASWELL_BITMASK_H-/* end file src/simdutf/haswell/bitmask.h */ // dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, filename=simdutf/haswell/simd.h /* begin file src/simdutf/haswell/simd.h */ #ifndef SIMDUTF_HASWELL_SIMD_H@@ -2063,43 +1921,7 @@ namespace westmere { namespace { -// We sometimes call trailing_zero on inputs that are zero,-// but the algorithms do not end up using the returned value.-// Sadly, sanitizers are not smart enough to figure it out.-NO_SANITIZE_UNDEFINED-simdutf_really_inline int trailing_zeroes(uint64_t input_num) { #ifdef SIMDUTF_REGULAR_VISUAL_STUDIO-  unsigned long ret;-  // Search the mask data from least significant bit (LSB)-  // to the most significant bit (MSB) for a set bit (1).-  _BitScanForward64(&ret, input_num);-  return (int)ret;-#else // SIMDUTF_REGULAR_VISUAL_STUDIO-  return __builtin_ctzll(input_num);-#endif // SIMDUTF_REGULAR_VISUAL_STUDIO-}--/* result might be undefined when input_num is zero */-simdutf_really_inline uint64_t clear_lowest_bit(uint64_t input_num) {-  return input_num & (input_num-1);-}--/* result might be undefined when input_num is zero */-simdutf_really_inline int leading_zeroes(uint64_t input_num) {-#ifdef SIMDUTF_REGULAR_VISUAL_STUDIO-  unsigned long leading_zero = 0;-  // Search the mask data from most significant bit (MSB)-  // to least significant bit (LSB) for a set bit (1).-  if (_BitScanReverse64(&leading_zero, input_num))-    return (int)(63 - leading_zero);-  else-    return 64;-#else-  return __builtin_clzll(input_num);-#endif// SIMDUTF_REGULAR_VISUAL_STUDIO-}--#ifdef SIMDUTF_REGULAR_VISUAL_STUDIO simdutf_really_inline unsigned __int64 count_ones(uint64_t input_num) {   // note: we do not support legacy 32-bit Windows   return __popcnt64(input_num);// Visual Studio wants two underscores@@ -2110,51 +1932,12 @@ } #endif -simdutf_really_inline bool add_overflow(uint64_t value1, uint64_t value2,-                                uint64_t *result) {-#ifdef SIMDUTF_REGULAR_VISUAL_STUDIO-  return _addcarry_u64(0, value1, value2,-                       reinterpret_cast<unsigned __int64 *>(result));-#else-  return __builtin_uaddll_overflow(value1, value2,-                                   reinterpret_cast<unsigned long long *>(result));-#endif-}- } // unnamed namespace } // namespace westmere } // namespace simdutf  #endif // SIMDUTF_WESTMERE_BITMANIPULATION_H /* end file src/simdutf/westmere/bitmanipulation.h */-// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, filename=simdutf/westmere/bitmask.h-/* begin file src/simdutf/westmere/bitmask.h */-#ifndef SIMDUTF_WESTMERE_BITMASK_H-#define SIMDUTF_WESTMERE_BITMASK_H--namespace simdutf {-namespace westmere {-namespace {--//-// Perform a "cumulative bitwise xor," flipping bits each time a 1 is encountered.-//-// For example, prefix_xor(00100100) == 00011100-//-simdutf_really_inline uint64_t prefix_xor(const uint64_t bitmask) {-  // There should be no such thing with a processing supporting avx2-  // but not clmul.-  __m128i all_ones = _mm_set1_epi8('\xFF');-  __m128i result = _mm_clmulepi64_si128(_mm_set_epi64x(0ULL, bitmask), all_ones, 0);-  return _mm_cvtsi128_si64(result);-}--} // unnamed namespace-} // namespace westmere-} // namespace simdutf--#endif // SIMDUTF_WESTMERE_BITMASK_H-/* end file src/simdutf/westmere/bitmask.h */ // dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, filename=simdutf/westmere/simd.h /* begin file src/simdutf/westmere/simd.h */ #ifndef SIMDUTF_WESTMERE_SIMD_H@@ -2941,43 +2724,7 @@ namespace ppc64 { namespace { -// We sometimes call trailing_zero on inputs that are zero,-// but the algorithms do not end up using the returned value.-// Sadly, sanitizers are not smart enough to figure it out.-NO_SANITIZE_UNDEFINED-simdutf_really_inline int trailing_zeroes(uint64_t input_num) { #ifdef SIMDUTF_REGULAR_VISUAL_STUDIO-  unsigned long ret;-  // Search the mask data from least significant bit (LSB)-  // to the most significant bit (MSB) for a set bit (1).-  _BitScanForward64(&ret, input_num);-  return (int)ret;-#else  // SIMDUTF_REGULAR_VISUAL_STUDIO-  return __builtin_ctzll(input_num);-#endif // SIMDUTF_REGULAR_VISUAL_STUDIO-}--/* result might be undefined when input_num is zero */-simdutf_really_inline uint64_t clear_lowest_bit(uint64_t input_num) {-  return input_num & (input_num - 1);-}--/* result might be undefined when input_num is zero */-simdutf_really_inline int leading_zeroes(uint64_t input_num) {-#ifdef SIMDUTF_REGULAR_VISUAL_STUDIO-  unsigned long leading_zero = 0;-  // Search the mask data from most significant bit (MSB)-  // to least significant bit (LSB) for a set bit (1).-  if (_BitScanReverse64(&leading_zero, input_num))-    return (int)(63 - leading_zero);-  else-    return 64;-#else-  return __builtin_clzll(input_num);-#endif // SIMDUTF_REGULAR_VISUAL_STUDIO-}--#ifdef SIMDUTF_REGULAR_VISUAL_STUDIO simdutf_really_inline int count_ones(uint64_t input_num) {   // note: we do not support legacy 32-bit Windows   return __popcnt64(input_num); // Visual Studio wants two underscores@@ -2988,68 +2735,12 @@ } #endif -simdutf_really_inline bool add_overflow(uint64_t value1, uint64_t value2,-                                         uint64_t *result) {-#ifdef SIMDUTF_REGULAR_VISUAL_STUDIO-  *result = value1 + value2;-  return *result < value1;-#else-  return __builtin_uaddll_overflow(value1, value2,-                                   reinterpret_cast<unsigned long long *>(result));-#endif-}- } // unnamed namespace } // namespace ppc64 } // namespace simdutf  #endif // SIMDUTF_PPC64_BITMANIPULATION_H /* end file src/simdutf/ppc64/bitmanipulation.h */-// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, filename=simdutf/ppc64/bitmask.h-/* begin file src/simdutf/ppc64/bitmask.h */-#ifndef SIMDUTF_PPC64_BITMASK_H-#define SIMDUTF_PPC64_BITMASK_H--namespace simdutf {-namespace ppc64 {-namespace {--//-// Perform a "cumulative bitwise xor," flipping bits each time a 1 is-// encountered.-//-// For example, prefix_xor(00100100) == 00011100-//-simdutf_really_inline uint64_t prefix_xor(uint64_t bitmask) {-  // You can use the version below, however gcc sometimes miscompiles-  // vec_pmsum_be, it happens somewhere around between 8 and 9th version.-  // The performance boost was not noticeable, falling back to a usual-  // implementation.-  //   __vector unsigned long long all_ones = {~0ull, ~0ull};-  //   __vector unsigned long long mask = {bitmask, 0};-  //   // Clang and GCC return different values for pmsum for ull so cast it to one.-  //   // Generally it is not specified by ALTIVEC ISA what is returned by-  //   // vec_pmsum_be.-  // #if defined(__LITTLE_ENDIAN__)-  //   return (uint64_t)(((__vector unsigned long long)vec_pmsum_be(all_ones, mask))[0]);-  // #else-  //   return (uint64_t)(((__vector unsigned long long)vec_pmsum_be(all_ones, mask))[1]);-  // #endif-  bitmask ^= bitmask << 1;-  bitmask ^= bitmask << 2;-  bitmask ^= bitmask << 4;-  bitmask ^= bitmask << 8;-  bitmask ^= bitmask << 16;-  bitmask ^= bitmask << 32;-  return bitmask;-}--} // unnamed namespace-} // namespace ppc64-} // namespace simdutf--#endif-/* end file src/simdutf/ppc64/bitmask.h */ // dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, filename=simdutf/ppc64/simd.h /* begin file src/simdutf/ppc64/simd.h */ #ifndef SIMDUTF_PPC64_SIMD_H@@ -9204,10 +8895,13 @@       }     }     unsigned char byte = data[pos];-    if (byte < 0b10000000) {-      pos++;-      continue;-    } else if ((byte & 0b11100000) == 0b11000000) {++    while (byte < 0b10000000) {+      if (++pos == len) { return true; }+      byte = data[pos];+    }++    if ((byte & 0b11100000) == 0b11000000) {       next_pos = pos + 2;       if (next_pos > len) { return false; }       if ((data[pos + 1] & 0b11000000) != 0b10000000) { return false; }@@ -11077,7 +10771,7 @@   const __m256i v_f800 = _mm256_set1_epi16((int16_t)0xf800);   const __m256i v_d800 = _mm256_set1_epi16((int16_t)0xd800);   const __m256i v_c080 = _mm256_set1_epi16((int16_t)0xc080);-  const size_t safety_margin = 8; // to avoid overruns+  const size_t safety_margin = 11; // to avoid overruns, see issue https://github.com/simdutf/simdutf/issues/92    while (buf + 16 + safety_margin <= end) {     __m256i in = _mm256_loadu_si256((__m256i*)buf);
simdutf/simdutf.h view
@@ -1,11 +1,10 @@-/* auto-generated on 2021-07-29 10:43:28 -0400. Do not edit! */+/* auto-generated on 2022-03-21 23:28:26 -0400. Do not edit! */ // dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/include, filename=simdutf.h /* begin file include/simdutf.h */ #ifndef SIMDUTF_H #define SIMDUTF_H #include <string> #include <cstring>-#include <atomic> #include <vector>  // dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/include, filename=simdutf/compiler_check.h@@ -412,18 +411,18 @@ #define SIMDUTF_SIMDUTF_VERSION_H  /** The version of simdutf being used (major.minor.revision) */-#define SIMDUTF_VERSION 0.1.0+#define SIMDUTF_VERSION 1.0.1  namespace simdutf { enum {   /**    * The major version (MAJOR.minor.revision) of simdutf being used.    */-  SIMDUTF_VERSION_MAJOR = 0,+  SIMDUTF_VERSION_MAJOR = 1,   /**    * The minor version (major.MINOR.revision) of simdutf being used.    */-  SIMDUTF_VERSION_MINOR = 1,+  SIMDUTF_VERSION_MINOR = 0,   /**    * The revision (major.minor.REVISION) of simdutf being used.    */@@ -438,7 +437,9 @@ #ifndef SIMDUTF_IMPLEMENTATION_H #define SIMDUTF_IMPLEMENTATION_H #include <string>+#if !defined(SIMDUTF_NO_THREADS) #include <atomic>+#endif #include <vector> // dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/include, filename=simdutf/internal/isadetection.h /* begin file include/simdutf/internal/isadetection.h */@@ -510,7 +511,10 @@   PCLMULQDQ = 0x10,   BMI1 = 0x20,   BMI2 = 0x40,-  ALTIVEC = 0x80+  ALTIVEC = 0x80,+  AVX512F = 0x100,+  AVX512BW = 0x200,+  AVX512DQ = 0x400 };  #if defined(__PPC64__)@@ -539,12 +543,38 @@   namespace {-// Can be found on Intel ISA Reference for CPUID-constexpr uint32_t cpuid_avx2_bit = 1 << 5;      ///< @private Bit 5 of EBX for EAX=0x7-constexpr uint32_t cpuid_bmi1_bit = 1 << 3;      ///< @private bit 3 of EBX for EAX=0x7-constexpr uint32_t cpuid_bmi2_bit = 1 << 8;      ///< @private bit 8 of EBX for EAX=0x7-constexpr uint32_t cpuid_sse42_bit = 1 << 20;    ///< @private bit 20 of ECX for EAX=0x1-constexpr uint32_t cpuid_pclmulqdq_bit = 1 << 1; ///< @private bit  1 of ECX for EAX=0x1+namespace cpuid_bit {+    // Can be found on Intel ISA Reference for CPUID++    // EAX = 0x01+    constexpr uint32_t pclmulqdq = uint32_t(1) << 1; ///< @private bit  1 of ECX for EAX=0x1+    constexpr uint32_t sse42 = uint32_t(1) << 20;    ///< @private bit 20 of ECX for EAX=0x1++    // EAX = 0x7f (Structured Extended Feature Flags), ECX = 0x00 (Sub-leaf)+    // See: "Table 3-8. Information Returned by CPUID Instruction"+    namespace ebx {+      constexpr uint32_t bmi1 = uint32_t(1) << 3;+      constexpr uint32_t avx2 = uint32_t(1) << 5;+      constexpr uint32_t bmi2 = uint32_t(1) << 8;+      constexpr uint32_t avx512f = uint32_t(1) << 16;+      constexpr uint32_t avx512dq = uint32_t(1) << 17;+      constexpr uint32_t avx512ifma = uint32_t(1) << 21;+      constexpr uint32_t avx512cd = uint32_t(1) << 28;+      constexpr uint32_t avx512bw = uint32_t(1) << 30;+      constexpr uint32_t avx512vl = uint32_t(1) << 31;+    }++    namespace ecx {+      constexpr uint32_t avx512vbmi = uint32_t(1) << 1;+      constexpr uint32_t avx512vbmi2 = uint32_t(1) << 6;+      constexpr uint32_t avx512vnni = uint32_t(1) << 11;+      constexpr uint32_t avx512bitalg = uint32_t(1) << 12;+      constexpr uint32_t avx512vpopcnt = uint32_t(1) << 14;+    }+    namespace edx {+      constexpr uint32_t avx512vp2intersect = uint32_t(1) << 8;+    }+  } }  @@ -572,35 +602,46 @@ }  static inline uint32_t detect_supported_architectures() {-  uint32_t eax, ebx, ecx, edx;+  uint32_t eax;+  uint32_t ebx = 0;+  uint32_t ecx = 0;+  uint32_t edx = 0;   uint32_t host_isa = 0x0; +  // EBX for EAX=0x1+  eax = 0x1;+  cpuid(&eax, &ebx, &ecx, &edx);++  if (ecx & cpuid_bit::sse42) {+    host_isa |= instruction_set::SSE42;+  }++  if (ecx & cpuid_bit::pclmulqdq) {+    host_isa |= instruction_set::PCLMULQDQ;+  }+   // ECX for EAX=0x7   eax = 0x7;-  ecx = 0x0;+  ecx = 0x0; // Sub-leaf = 0   cpuid(&eax, &ebx, &ecx, &edx);-  if (ebx & cpuid_avx2_bit) {+  if (ebx & cpuid_bit::ebx::avx2) {     host_isa |= instruction_set::AVX2;   }-  if (ebx & cpuid_bmi1_bit) {+  if (ebx & cpuid_bit::ebx::bmi1) {     host_isa |= instruction_set::BMI1;   }--  if (ebx & cpuid_bmi2_bit) {+  if (ebx & cpuid_bit::ebx::bmi2) {     host_isa |= instruction_set::BMI2;   }--  // EBX for EAX=0x1-  eax = 0x1;-  cpuid(&eax, &ebx, &ecx, &edx);--  if (ecx & cpuid_sse42_bit) {-    host_isa |= instruction_set::SSE42;+  if (ebx & cpuid_bit::ebx::avx512f) {+    host_isa |= instruction_set::AVX512F;   }--  if (ecx & cpuid_pclmulqdq_bit) {-    host_isa |= instruction_set::PCLMULQDQ;+  if (ebx & cpuid_bit::ebx::avx512bw) {+    host_isa |= instruction_set::AVX512BW;   }+  if (ebx & cpuid_bit::ebx::avx512dq) {+    host_isa |= instruction_set::AVX512DQ;+  }    return host_isa; }@@ -1039,6 +1080,17 @@ public:   atomic_ptr(T *_ptr) : ptr{_ptr} {} +#if defined(SIMDUTF_NO_THREADS)+  operator const T*() const { return ptr; }+  const T& operator*() const { return *ptr; }+  const T* operator->() const { return ptr; }++  operator T*() { return ptr; }+  T& operator*() { return *ptr; }+  T* operator->() { return ptr; }+  atomic_ptr& operator=(T *_ptr) { ptr = _ptr; return *this; }++#else   operator const T*() const { return ptr.load(); }   const T& operator*() const { return *ptr; }   const T* operator->() const { return ptr.load(); }@@ -1048,8 +1100,14 @@   T* operator->() { return ptr.load(); }   atomic_ptr& operator=(T *_ptr) { ptr = _ptr; return *this; } +#endif+ private:+#if defined(SIMDUTF_NO_THREADS)+  T* ptr;+#else   std::atomic<T*> ptr;+#endif };  } // namespace internal
src/Data/Text.hs view
@@ -98,6 +98,7 @@     , foldl1     , foldl1'     , foldr+    , foldr'     , foldr1      -- ** Special folds@@ -145,6 +146,8 @@     , breakOnEnd     , break     , span+    , spanM+    , spanEndM     , group     , groupBy     , inits@@ -205,7 +208,7 @@  import Prelude (Char, Bool(..), Int, Maybe(..), String,                 Eq, (==), (/=), Ord(..), Ordering(..), (++),-                Read(..),+                Monad(..), pure, Read(..),                 (&&), (||), (+), (-), (.), ($), ($!), (>>),                 not, return, otherwise, quot, IO) import Control.DeepSeq (NFData(rnf))@@ -238,6 +241,7 @@ import qualified Prelude as P import Data.Text.Unsafe (Iter(..), iter, iter_, lengthWord8, reverseIter,                          reverseIter_, unsafeHead, unsafeTail, unsafeDupablePerformIO, iterArray, reverseIterArray)+import Data.Text.Foreign (asForeignPtr) import Data.Text.Internal.Search (indices) #if defined(__HADDOCK__) import Data.ByteString (ByteString)@@ -253,8 +257,11 @@ import qualified Language.Haskell.TH.Syntax as TH import Text.Printf (PrintfArg, formatArg, formatString) import System.Posix.Types (CSsize(..))+import System.IO.Unsafe (unsafePerformIO)  -- $setup+-- >>> :set -package transformers+-- >>> import Control.Monad.Trans.State -- >>> import Data.Text -- >>> import qualified Data.Text as T -- >>> :seti -XOverloadedStrings@@ -320,7 +327,7 @@ -- $fusion -- -- Starting from @text-1.3@ fusion is no longer implicit,--- and pipelines of transormations usually allocate intermediate 'Text' values.+-- and pipelines of transformations usually allocate intermediate 'Text' values. -- Users, who observe significant changes to performances, -- are encouraged to use fusion framework explicitly, employing -- "Data.Text.Internal.Fusion" and "Data.Text.Internal.Fusion.Common".@@ -346,10 +353,21 @@     mappend = (<>)     mconcat = concat +-- | Performs replacement on invalid scalar values:+--+-- >>> :set -XOverloadedStrings+-- >>> "\55555" :: Text+-- "\65533" instance IsString Text where     fromString = pack --- | @since 1.2.0.0+-- | Performs replacement on invalid scalar values:+--+-- >>> :set -XOverloadedLists+-- >>> ['\55555'] :: Text+-- "\65533"+--+-- @since 1.2.0.0 instance Exts.IsList Text where     type Item Text = Char     fromList       = pack@@ -379,7 +397,7 @@ -- -- The followup discussion that changed the behavior of 'Data.Set.Set' -- and 'Data.Map.Map' is archived here:--- <http://markmail.org/message/trovdc6zkphyi3cr#query:+page:1+mid:a46der3iacwjcf6n+state:results Proposal: Allow gunfold for Data.Map, ... >+-- <https://mail.haskell.org/pipermail/libraries/2012-August/018366.html Proposal: Allow gunfold for Data.Map, ... >  instance Data Text where   gfoldl f z txt = z pack `f` (unpack txt)@@ -389,18 +407,31 @@     _ -> P.error "gunfold"   dataTypeOf _ = textDataType --- | This instance has similar considerations to the 'Data' instance:--- it preserves abstraction at the cost of inefficiency.------ @since 1.2.4.0+-- | @since 1.2.4.0 instance TH.Lift Text where+#if MIN_VERSION_template_haskell(2,16,0)+  lift txt = do+    let (ptr, len) = unsafePerformIO $ asForeignPtr txt +    let lenInt = P.fromIntegral len+    TH.appE (TH.appE (TH.varE 'unpackCStringLen#) (TH.litE . TH.bytesPrimL $ TH.mkBytes ptr 0 lenInt)) (TH.lift lenInt)+#else   lift = TH.appE (TH.varE 'pack) . TH.stringE . unpack+#endif #if MIN_VERSION_template_haskell(2,17,0)   liftTyped = TH.unsafeCodeCoerce . TH.lift #elif MIN_VERSION_template_haskell(2,16,0)   liftTyped = TH.unsafeTExpCoerce . TH.lift #endif +unpackCStringLen# :: Exts.Addr# -> Int -> Text+unpackCStringLen# addr# l = Text ba 0 l+  where+    ba = runST $ do+      marr <- A.new l+      A.copyFromPointer marr 0 (Exts.Ptr addr#) l+      A.unsafeFreeze marr+{-# NOINLINE unpackCStringLen# #-} -- set as NOINLINE to avoid generated code bloat+ -- | @since 1.2.2.0 instance PrintfArg Text where   formatArg txt = formatString $ unpack txt@@ -423,7 +454,10 @@ -- * Conversion to/from 'Text'  -- | /O(n)/ Convert a 'String' into a 'Text'.--- Performs replacement on invalid scalar values.+-- Performs replacement on invalid scalar values, so @'unpack' . 'pack'@ is not 'id':+--+-- >>> unpack (pack "\55555")+-- "\65533" pack :: String -> Text pack = unstream . S.map safe . S.streamList {-# INLINE [1] pack #-}@@ -546,13 +580,17 @@     length (intercalate s ts) = let lenS = length s in max 0 (P.sum (P.map (\t -> length t + lenS) ts) - lenS)   #-} --- | /O(n)/ Compare the count of characters in a 'Text' to a number.+-- | /O(min(n,c))/ Compare the count of characters in a 'Text' to a number. --+-- @+-- 'compareLength' t c = 'P.compare' ('length' t) c+-- @+-- -- This function gives the same answer as comparing against the result -- of 'length', but can short circuit if the count of characters is -- greater than the number, and hence be more efficient. compareLength :: Text -> Int -> Ordering-compareLength t n = S.compareLengthI (stream t) n+compareLength t c = S.compareLengthI (stream t) c {-# INLINE [1] compareLength #-}  {-# RULES@@ -973,6 +1011,22 @@ -- | /O(n)/ 'foldr', applied to a binary operator, a starting value -- (typically the right-identity of the operator), and a 'Text', -- reduces the 'Text' using the binary operator, from right to left.+--+-- If the binary operator is strict in its second argument, use 'foldr''+-- instead.+--+-- 'foldr' is lazy like 'Data.List.foldr' for lists: evaluation actually+-- traverses the 'Text' from left to right, only as far as it needs to.+--+-- For example, 'head' can be defined with /O(1)/ complexity using 'foldr':+--+-- @+-- head :: Text -> Char+-- head = foldr const (error "head empty")+-- @+--+-- Searches from left to right with short-circuiting behavior can+-- also be defined using 'foldr' (/e.g./, 'any', 'all', 'find', 'elem'). foldr :: (Char -> a -> a) -> a -> Text -> a foldr f z t = S.foldr f z (stream t) {-# INLINE foldr #-}@@ -983,6 +1037,15 @@ foldr1 f t = S.foldr1 f (stream t) {-# INLINE foldr1 #-} +-- | /O(n)/ A strict version of 'foldr'.+--+-- 'foldr'' evaluates as a right-to-left traversal using constant stack space.+--+-- @since 2.0.1+foldr' :: (Char -> a -> a) -> a -> Text -> a+foldr' f z t = S.foldl' (P.flip f) z (reverseStream t)+{-# INLINE foldr' #-}+ -- ----------------------------------------------------------------------------- -- ** Special folds @@ -1042,7 +1105,7 @@ -- __Properties__ -- -- @'head' ('scanl' f z xs) = z@--- +-- -- @'last' ('scanl' f z xs) = 'foldl' f z xs@ scanl :: (Char -> Char -> Char) -> Char -> Text -> Text scanl f z t = unstream (S.scanl g z (stream t))@@ -1385,7 +1448,7 @@ -- | /O(n)/ 'span', applied to a predicate @p@ and text @t@, returns -- a pair whose first element is the longest prefix (possibly empty) -- of @t@ of elements that satisfy @p@, and whose second is the--- remainder of the list.+-- remainder of the text. -- -- >>> T.span (=='0') "000AB" -- ("000","AB")@@ -1403,6 +1466,55 @@ break p = span (not . p) {-# INLINE break #-} +-- | /O(length of prefix)/ 'spanM', applied to a monadic predicate @p@,+-- a text @t@, returns a pair @(t1, t2)@ where @t1@ is the longest prefix of+-- @t@ whose elements satisfy @p@, and @t2@ is the remainder of the text.+--+-- >>> T.spanM (\c -> state $ \i -> (fromEnum c == i, i+1)) "abcefg" `runState` 97+-- (("abc","efg"),101)+--+-- 'span' is 'spanM' specialized to 'Data.Functor.Identity.Identity':+--+-- @+-- -- for all p :: Char -> Bool+-- 'span' p = 'Data.Functor.Identity.runIdentity' . 'spanM' ('pure' . p)+-- @+--+-- @since 2.0.1+spanM :: Monad m => (Char -> m Bool) -> Text -> m (Text, Text)+spanM p t@(Text arr off len) = go 0+  where+    go !i | i < len = case iterArray arr (off+i) of+        Iter c l -> do+            continue <- p c+            if continue then go (i+l)+            else pure (text arr off i, text arr (off+i) (len-i))+    go _ = pure (t, empty)+{-# INLINE spanM #-}++-- | /O(length of suffix)/ 'spanEndM', applied to a monadic predicate @p@,+-- a text @t@, returns a pair @(t1, t2)@ where @t2@ is the longest suffix of+-- @t@ whose elements satisfy @p@, and @t1@ is the remainder of the text.+--+-- >>> T.spanEndM (\c -> state $ \i -> (fromEnum c == i, i-1)) "tuvxyz" `runState` 122+-- (("tuv","xyz"),118)+--+-- @+-- 'spanEndM' p . 'reverse' = fmap ('Data.Bifunctor.bimap' 'reverse' 'reverse') . 'spanM' p+-- @+--+-- @since 2.0.1+spanEndM :: Monad m => (Char -> m Bool) -> Text -> m (Text, Text)+spanEndM p t@(Text arr off len) = go (len-1)+  where+    go !i | 0 <= i = case reverseIterArray arr (off+i) of+        Iter c l -> do+            continue <- p c+            if continue then go (i+l)+            else pure (text arr off (i+1), text arr (off+i+1) (len-i-1))+    go _ = pure (empty, t)+{-# INLINE spanEndM #-}+ -- | /O(n)/ Group characters in a string according to a predicate. groupBy :: (Char -> Char -> Bool) -> Text -> [Text] groupBy p = loop@@ -1848,14 +1960,14 @@ {-# INLINE unwords #-}  -- | /O(n)/ The 'isPrefixOf' function takes two 'Text's and returns--- 'True' iff the first is a prefix of the second.+-- 'True' if and only if the first is a prefix of the second. isPrefixOf :: Text -> Text -> Bool isPrefixOf a@(Text _ _ alen) b@(Text _ _ blen) =     alen <= blen && S.isPrefixOf (stream a) (stream b) {-# INLINE [1] isPrefixOf #-}  -- | /O(n)/ The 'isSuffixOf' function takes two 'Text's and returns--- 'True' iff the first is a suffix of the second.+-- 'True' if and only if the first is a suffix of the second. isSuffixOf :: Text -> Text -> Bool isSuffixOf a@(Text _aarr _aoff alen) b@(Text barr boff blen) =     d >= 0 && a == b'@@ -1865,7 +1977,7 @@ {-# INLINE isSuffixOf #-}  -- | /O(n+m)/ The 'isInfixOf' function takes two 'Text's and returns--- 'True' iff the first is contained, wholly and intact, anywhere+-- 'True' if and only if the first is contained, wholly and intact, anywhere -- within the second. -- -- In (unlikely) bad cases, this function's time complexity degrades
src/Data/Text/Encoding.hs view
@@ -25,31 +25,39 @@     (     -- * Decoding ByteStrings to Text     -- $strict-      decodeASCII-    , decodeLatin1-    , decodeUtf8-    , decodeUtf16LE-    , decodeUtf16BE-    , decodeUtf32LE-    , decodeUtf32BE -    -- ** Catchable failure+    -- ** Total Functions #total#+    -- $total+      decodeLatin1+    , decodeUtf8Lenient++    -- *** Catchable failure     , decodeUtf8' -    -- ** Controllable error handling+    -- *** Controllable error handling     , decodeUtf8With-    , decodeUtf8Lenient     , decodeUtf16LEWith     , decodeUtf16BEWith     , decodeUtf32LEWith     , decodeUtf32BEWith -    -- ** Stream oriented decoding+    -- *** Stream oriented decoding     -- $stream-    , streamDecodeUtf8     , streamDecodeUtf8With     , Decoding(..) +    -- ** Partial Functions+    -- $partial+    , decodeASCII+    , decodeUtf8+    , decodeUtf16LE+    , decodeUtf16BE+    , decodeUtf32LE+    , decodeUtf32BE++    -- *** Stream oriented decoding+    , streamDecodeUtf8+     -- * Encoding Text to ByteStrings     , encodeUtf8     , encodeUtf16LE@@ -98,7 +106,7 @@  #ifdef SIMDUTF import Foreign.C.Types (CInt(..))-#else+#elif !MIN_VERSION_bytestring(0,11,2) import qualified Data.ByteString.Unsafe as B import Data.Text.Internal.Encoding.Utf8 (CodePoint(..)) #endif@@ -115,6 +123,17 @@ -- For instance, 'decodeUtf8' will throw an exception, but -- 'decodeUtf8With' allows the programmer to determine what to do on a -- decoding error.++-- $total+--+-- These functions facilitate total decoding and should be preferred+-- over their partial counterparts.++-- $partial+--+-- These functions are partial and should only be used with great caution+-- (preferably not at all). See "Data.Text.Encoding#g:total" for better+-- solutions.  -- | Decode a 'ByteString' containing 7-bit ASCII -- encoded text.
src/Data/Text/Foreign.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE BangPatterns, CPP, GeneralizedNewtypeDeriving #-}+{-# LANGUAGE CPP, GeneralizedNewtypeDeriving, MagicHash #-} -- | -- Module      : Data.Text.Foreign -- Copyright   : (c) 2009, 2010 Bryan O'Sullivan@@ -17,9 +17,11 @@       I8     -- * Safe conversion functions     , fromPtr+    , fromPtr0     , useAsPtr     , asForeignPtr     -- ** Encoding as UTF-8+    , withCString     , peekCStringLen     , withCStringLen     -- * Unsafe conversion code@@ -36,12 +38,15 @@ import Data.Text.Encoding (decodeUtf8, encodeUtf8) import Data.Text.Internal (Text(..), empty) import Data.Text.Internal.Unsafe (unsafeWithForeignPtr)+import Data.Text.Show (addrLen) import Data.Text.Unsafe (lengthWord8) import Data.Word (Word8)-import Foreign.C.String (CStringLen)+import Foreign.C.String (CString, CStringLen) import Foreign.ForeignPtr (ForeignPtr, mallocForeignPtrArray) import Foreign.Marshal.Alloc (allocaBytes) import Foreign.Ptr (Ptr, castPtr)+import Foreign.Storable (pokeByteOff)+import GHC.Exts (Ptr(..)) import qualified Data.Text.Array as A  -- $interop@@ -72,6 +77,14 @@   arr <- A.unsafeFreeze dst   return $! Text arr 0 len +-- | /O(n)/ Create a new 'Text' from a 'Ptr' 'Word8' by copying the+-- contents of the NUL-terminated array.+--+-- @since 2.0.1+fromPtr0 :: Ptr Word8           -- ^ source array+         -> IO Text+fromPtr0 ptr@(Ptr addr#) = fromPtr ptr (fromIntegral (addrLen addr#))+ -- $lowlevel -- -- Foreign functions that use UTF-8 internally may return indices in@@ -139,6 +152,21 @@   fp <- mallocForeignPtrArray len   unsafeWithForeignPtr fp $ unsafeCopyToPtr t   return (fp, I8 len)++-- | Marshal a 'Text' into a C string with a trailing NUL byte,+-- encoded as UTF-8 in temporary storage.+--+-- The temporary storage is freed when the subcomputation terminates+-- (either normally or via an exception), so the pointer to the+-- temporary storage must /not/ be used after this function returns.+--+-- @since 2.0.1+withCString :: Text -> (CString -> IO a) -> IO a+withCString t@(Text _arr _off len) action =+  allocaBytes (len + 1) $ \buf -> do+    unsafeCopyToPtr t buf+    pokeByteOff buf len (0 :: Word8)+    action (castPtr buf)  -- | /O(n)/ Decode a C string with explicit length, which is assumed -- to have been encoded as UTF-8. If decoding fails, a
src/Data/Text/Internal/Builder.hs view
@@ -108,6 +108,11 @@    mconcat = foldr mappend Data.Monoid.mempty    {-# INLINE mconcat #-} +-- | Performs replacement on invalid scalar values:+--+-- >>> :set -XOverloadedStrings+-- >>> "\55555" :: Builder+-- "\65533" instance String.IsString Builder where     fromString = fromString     {-# INLINE fromString #-}@@ -181,6 +186,12 @@ -- --  * @'toLazyText' ('fromString' s) = 'L.fromChunks' [S.pack s]@ --+-- Performs replacement on invalid scalar values:+--+-- >>> fromString "\55555"+-- "\65533"+--+-- @since 1.2.0.0 fromString :: String -> Builder fromString str = Builder $ \k (Buffer p0 o0 u0 l0) ->     let loop !marr !o !u !l [] = k (Buffer marr o u l)
src/Data/Text/Internal/Fusion/CaseMapping.hs view
@@ -4589,1832 +4589,3064 @@ foldMapping :: Char# -> _ {- unboxed Int64 -} {-# NOINLINE foldMapping #-} foldMapping = \case-  -- MICRO SIGN-  '\x00b5'# -> unI64 956-  -- LATIN SMALL LETTER SHARP S-  '\x00df'# -> unI64 241172595-  -- LATIN CAPITAL LETTER I WITH DOT ABOVE-  '\x0130'# -> unI64 1625292905-  -- LATIN SMALL LETTER N PRECEDED BY APOSTROPHE-  '\x0149'# -> unI64 230687420-  -- LATIN SMALL LETTER LONG S-  '\x017f'# -> unI64 115-  -- LATIN SMALL LETTER J WITH CARON-  '\x01f0'# -> unI64 1635778666-  -- COMBINING GREEK YPOGEGRAMMENI-  '\x0345'# -> unI64 953-  -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS-  '\x0390'# -> unI64 3382099394429881-  -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS-  '\x03b0'# -> unI64 3382099394429893-  -- GREEK SMALL LETTER FINAL SIGMA-  '\x03c2'# -> unI64 963-  -- GREEK BETA SYMBOL-  '\x03d0'# -> unI64 946-  -- GREEK THETA SYMBOL-  '\x03d1'# -> unI64 952-  -- GREEK PHI SYMBOL-  '\x03d5'# -> unI64 966-  -- GREEK PI SYMBOL-  '\x03d6'# -> unI64 960-  -- GREEK KAPPA SYMBOL-  '\x03f0'# -> unI64 954-  -- GREEK RHO SYMBOL-  '\x03f1'# -> unI64 961-  -- GREEK LUNATE EPSILON SYMBOL-  '\x03f5'# -> unI64 949-  -- ARMENIAN SMALL LIGATURE ECH YIWN-  '\x0587'# -> unI64 2956985701-  -- CHEROKEE SMALL LETTER YE-  '\x13f8'# -> unI64 5104-  -- CHEROKEE SMALL LETTER YI-  '\x13f9'# -> unI64 5105-  -- CHEROKEE SMALL LETTER YO-  '\x13fa'# -> unI64 5106-  -- CHEROKEE SMALL LETTER YU-  '\x13fb'# -> unI64 5107-  -- CHEROKEE SMALL LETTER YV-  '\x13fc'# -> unI64 5108-  -- CHEROKEE SMALL LETTER MV-  '\x13fd'# -> unI64 5109-  -- CYRILLIC SMALL LETTER ROUNDED VE-  '\x1c80'# -> unI64 1074-  -- CYRILLIC SMALL LETTER LONG-LEGGED DE-  '\x1c81'# -> unI64 1076-  -- CYRILLIC SMALL LETTER NARROW O-  '\x1c82'# -> unI64 1086-  -- CYRILLIC SMALL LETTER WIDE ES-  '\x1c83'# -> unI64 1089-  -- CYRILLIC SMALL LETTER TALL TE-  '\x1c84'# -> unI64 1090-  -- CYRILLIC SMALL LETTER THREE-LEGGED TE-  '\x1c85'# -> unI64 1090-  -- CYRILLIC SMALL LETTER TALL HARD SIGN-  '\x1c86'# -> unI64 1098-  -- CYRILLIC SMALL LETTER TALL YAT-  '\x1c87'# -> unI64 1123-  -- CYRILLIC SMALL LETTER UNBLENDED UK-  '\x1c88'# -> unI64 42571-  -- LATIN SMALL LETTER H WITH LINE BELOW-  '\x1e96'# -> unI64 1713373288-  -- LATIN SMALL LETTER T WITH DIAERESIS-  '\x1e97'# -> unI64 1627390068-  -- LATIN SMALL LETTER W WITH RING ABOVE-  '\x1e98'# -> unI64 1631584375-  -- LATIN SMALL LETTER Y WITH RING ABOVE-  '\x1e99'# -> unI64 1631584377-  -- LATIN SMALL LETTER A WITH RIGHT HALF RING-  '\x1e9a'# -> unI64 1472200801-  -- LATIN SMALL LETTER LONG S WITH DOT ABOVE-  '\x1e9b'# -> unI64 7777-  -- LATIN CAPITAL LETTER SHARP S-  '\x1e9e'# -> unI64 241172595-  -- GREEK SMALL LETTER UPSILON WITH PSILI-  '\x1f50'# -> unI64 1650459589-  -- GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA-  '\x1f52'# -> unI64 3377701370987461-  -- GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA-  '\x1f54'# -> unI64 3382099417498565-  -- GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI-  '\x1f56'# -> unI64 3667972440720325-  -- GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI-  '\x1f80'# -> unI64 1998593792-  -- GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI-  '\x1f81'# -> unI64 1998593793-  -- GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI-  '\x1f82'# -> unI64 1998593794-  -- GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI-  '\x1f83'# -> unI64 1998593795-  -- GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI-  '\x1f84'# -> unI64 1998593796-  -- GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI-  '\x1f85'# -> unI64 1998593797-  -- GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI-  '\x1f86'# -> unI64 1998593798-  -- GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI-  '\x1f87'# -> unI64 1998593799-  -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI-  '\x1f88'# -> unI64 1998593792-  -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI-  '\x1f89'# -> unI64 1998593793-  -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI-  '\x1f8a'# -> unI64 1998593794-  -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI-  '\x1f8b'# -> unI64 1998593795-  -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI-  '\x1f8c'# -> unI64 1998593796-  -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI-  '\x1f8d'# -> unI64 1998593797-  -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI-  '\x1f8e'# -> unI64 1998593798-  -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI-  '\x1f8f'# -> unI64 1998593799-  -- GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI-  '\x1f90'# -> unI64 1998593824-  -- GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI-  '\x1f91'# -> unI64 1998593825-  -- GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI-  '\x1f92'# -> unI64 1998593826-  -- GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI-  '\x1f93'# -> unI64 1998593827-  -- GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI-  '\x1f94'# -> unI64 1998593828-  -- GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI-  '\x1f95'# -> unI64 1998593829-  -- GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI-  '\x1f96'# -> unI64 1998593830-  -- GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI-  '\x1f97'# -> unI64 1998593831-  -- GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI-  '\x1f98'# -> unI64 1998593824-  -- GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI-  '\x1f99'# -> unI64 1998593825-  -- GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI-  '\x1f9a'# -> unI64 1998593826-  -- GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI-  '\x1f9b'# -> unI64 1998593827-  -- GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI-  '\x1f9c'# -> unI64 1998593828-  -- GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI-  '\x1f9d'# -> unI64 1998593829-  -- GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI-  '\x1f9e'# -> unI64 1998593830-  -- GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI-  '\x1f9f'# -> unI64 1998593831-  -- GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI-  '\x1fa0'# -> unI64 1998593888-  -- GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI-  '\x1fa1'# -> unI64 1998593889-  -- GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI-  '\x1fa2'# -> unI64 1998593890-  -- GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI-  '\x1fa3'# -> unI64 1998593891-  -- GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI-  '\x1fa4'# -> unI64 1998593892-  -- GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI-  '\x1fa5'# -> unI64 1998593893-  -- GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI-  '\x1fa6'# -> unI64 1998593894-  -- GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI-  '\x1fa7'# -> unI64 1998593895-  -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI-  '\x1fa8'# -> unI64 1998593888-  -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI-  '\x1fa9'# -> unI64 1998593889-  -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI-  '\x1faa'# -> unI64 1998593890-  -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI-  '\x1fab'# -> unI64 1998593891-  -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI-  '\x1fac'# -> unI64 1998593892-  -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI-  '\x1fad'# -> unI64 1998593893-  -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI-  '\x1fae'# -> unI64 1998593894-  -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI-  '\x1faf'# -> unI64 1998593895-  -- GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI-  '\x1fb2'# -> unI64 1998593904-  -- GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI-  '\x1fb3'# -> unI64 1998586801-  -- GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI-  '\x1fb4'# -> unI64 1998586796-  -- GREEK SMALL LETTER ALPHA WITH PERISPOMENI-  '\x1fb6'# -> unI64 1749025713-  -- GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI-  '\x1fb7'# -> unI64 4191340074107825-  -- GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI-  '\x1fbc'# -> unI64 1998586801-  -- GREEK PROSGEGRAMMENI-  '\x1fbe'# -> unI64 953-  -- GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI-  '\x1fc2'# -> unI64 1998593908-  -- GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI-  '\x1fc3'# -> unI64 1998586807-  -- GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI-  '\x1fc4'# -> unI64 1998586798-  -- GREEK SMALL LETTER ETA WITH PERISPOMENI-  '\x1fc6'# -> unI64 1749025719-  -- GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI-  '\x1fc7'# -> unI64 4191340074107831-  -- GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI-  '\x1fcc'# -> unI64 1998586807-  -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA-  '\x1fd2'# -> unI64 3377701347918777-  -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA-  '\x1fd3'# -> unI64 3382099394429881-  -- GREEK SMALL LETTER IOTA WITH PERISPOMENI-  '\x1fd6'# -> unI64 1749025721-  -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI-  '\x1fd7'# -> unI64 3667972417651641-  -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA-  '\x1fe2'# -> unI64 3377701347918789-  -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA-  '\x1fe3'# -> unI64 3382099394429893-  -- GREEK SMALL LETTER RHO WITH PSILI-  '\x1fe4'# -> unI64 1650459585-  -- GREEK SMALL LETTER UPSILON WITH PERISPOMENI-  '\x1fe6'# -> unI64 1749025733-  -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI-  '\x1fe7'# -> unI64 3667972417651653-  -- GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI-  '\x1ff2'# -> unI64 1998593916-  -- GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI-  '\x1ff3'# -> unI64 1998586825-  -- GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI-  '\x1ff4'# -> unI64 1998586830-  -- GREEK SMALL LETTER OMEGA WITH PERISPOMENI-  '\x1ff6'# -> unI64 1749025737-  -- GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI-  '\x1ff7'# -> unI64 4191340074107849-  -- GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI-  '\x1ffc'# -> unI64 1998586825-  -- CHEROKEE SMALL LETTER A-  '\xab70'# -> unI64 5024-  -- CHEROKEE SMALL LETTER E-  '\xab71'# -> unI64 5025-  -- CHEROKEE SMALL LETTER I-  '\xab72'# -> unI64 5026-  -- CHEROKEE SMALL LETTER O-  '\xab73'# -> unI64 5027-  -- CHEROKEE SMALL LETTER U-  '\xab74'# -> unI64 5028-  -- CHEROKEE SMALL LETTER V-  '\xab75'# -> unI64 5029-  -- CHEROKEE SMALL LETTER GA-  '\xab76'# -> unI64 5030-  -- CHEROKEE SMALL LETTER KA-  '\xab77'# -> unI64 5031-  -- CHEROKEE SMALL LETTER GE-  '\xab78'# -> unI64 5032-  -- CHEROKEE SMALL LETTER GI-  '\xab79'# -> unI64 5033-  -- CHEROKEE SMALL LETTER GO-  '\xab7a'# -> unI64 5034-  -- CHEROKEE SMALL LETTER GU-  '\xab7b'# -> unI64 5035-  -- CHEROKEE SMALL LETTER GV-  '\xab7c'# -> unI64 5036-  -- CHEROKEE SMALL LETTER HA-  '\xab7d'# -> unI64 5037-  -- CHEROKEE SMALL LETTER HE-  '\xab7e'# -> unI64 5038-  -- CHEROKEE SMALL LETTER HI-  '\xab7f'# -> unI64 5039-  -- CHEROKEE SMALL LETTER HO-  '\xab80'# -> unI64 5040-  -- CHEROKEE SMALL LETTER HU-  '\xab81'# -> unI64 5041-  -- CHEROKEE SMALL LETTER HV-  '\xab82'# -> unI64 5042-  -- CHEROKEE SMALL LETTER LA-  '\xab83'# -> unI64 5043-  -- CHEROKEE SMALL LETTER LE-  '\xab84'# -> unI64 5044-  -- CHEROKEE SMALL LETTER LI-  '\xab85'# -> unI64 5045-  -- CHEROKEE SMALL LETTER LO-  '\xab86'# -> unI64 5046-  -- CHEROKEE SMALL LETTER LU-  '\xab87'# -> unI64 5047-  -- CHEROKEE SMALL LETTER LV-  '\xab88'# -> unI64 5048-  -- CHEROKEE SMALL LETTER MA-  '\xab89'# -> unI64 5049-  -- CHEROKEE SMALL LETTER ME-  '\xab8a'# -> unI64 5050-  -- CHEROKEE SMALL LETTER MI-  '\xab8b'# -> unI64 5051-  -- CHEROKEE SMALL LETTER MO-  '\xab8c'# -> unI64 5052-  -- CHEROKEE SMALL LETTER MU-  '\xab8d'# -> unI64 5053-  -- CHEROKEE SMALL LETTER NA-  '\xab8e'# -> unI64 5054-  -- CHEROKEE SMALL LETTER HNA-  '\xab8f'# -> unI64 5055-  -- CHEROKEE SMALL LETTER NAH-  '\xab90'# -> unI64 5056-  -- CHEROKEE SMALL LETTER NE-  '\xab91'# -> unI64 5057-  -- CHEROKEE SMALL LETTER NI-  '\xab92'# -> unI64 5058-  -- CHEROKEE SMALL LETTER NO-  '\xab93'# -> unI64 5059-  -- CHEROKEE SMALL LETTER NU-  '\xab94'# -> unI64 5060-  -- CHEROKEE SMALL LETTER NV-  '\xab95'# -> unI64 5061-  -- CHEROKEE SMALL LETTER QUA-  '\xab96'# -> unI64 5062-  -- CHEROKEE SMALL LETTER QUE-  '\xab97'# -> unI64 5063-  -- CHEROKEE SMALL LETTER QUI-  '\xab98'# -> unI64 5064-  -- CHEROKEE SMALL LETTER QUO-  '\xab99'# -> unI64 5065-  -- CHEROKEE SMALL LETTER QUU-  '\xab9a'# -> unI64 5066-  -- CHEROKEE SMALL LETTER QUV-  '\xab9b'# -> unI64 5067-  -- CHEROKEE SMALL LETTER SA-  '\xab9c'# -> unI64 5068-  -- CHEROKEE SMALL LETTER S-  '\xab9d'# -> unI64 5069-  -- CHEROKEE SMALL LETTER SE-  '\xab9e'# -> unI64 5070-  -- CHEROKEE SMALL LETTER SI-  '\xab9f'# -> unI64 5071-  -- CHEROKEE SMALL LETTER SO-  '\xaba0'# -> unI64 5072-  -- CHEROKEE SMALL LETTER SU-  '\xaba1'# -> unI64 5073-  -- CHEROKEE SMALL LETTER SV-  '\xaba2'# -> unI64 5074-  -- CHEROKEE SMALL LETTER DA-  '\xaba3'# -> unI64 5075-  -- CHEROKEE SMALL LETTER TA-  '\xaba4'# -> unI64 5076-  -- CHEROKEE SMALL LETTER DE-  '\xaba5'# -> unI64 5077-  -- CHEROKEE SMALL LETTER TE-  '\xaba6'# -> unI64 5078-  -- CHEROKEE SMALL LETTER DI-  '\xaba7'# -> unI64 5079-  -- CHEROKEE SMALL LETTER TI-  '\xaba8'# -> unI64 5080-  -- CHEROKEE SMALL LETTER DO-  '\xaba9'# -> unI64 5081-  -- CHEROKEE SMALL LETTER DU-  '\xabaa'# -> unI64 5082-  -- CHEROKEE SMALL LETTER DV-  '\xabab'# -> unI64 5083-  -- CHEROKEE SMALL LETTER DLA-  '\xabac'# -> unI64 5084-  -- CHEROKEE SMALL LETTER TLA-  '\xabad'# -> unI64 5085-  -- CHEROKEE SMALL LETTER TLE-  '\xabae'# -> unI64 5086-  -- CHEROKEE SMALL LETTER TLI-  '\xabaf'# -> unI64 5087-  -- CHEROKEE SMALL LETTER TLO-  '\xabb0'# -> unI64 5088-  -- CHEROKEE SMALL LETTER TLU-  '\xabb1'# -> unI64 5089-  -- CHEROKEE SMALL LETTER TLV-  '\xabb2'# -> unI64 5090-  -- CHEROKEE SMALL LETTER TSA-  '\xabb3'# -> unI64 5091-  -- CHEROKEE SMALL LETTER TSE-  '\xabb4'# -> unI64 5092-  -- CHEROKEE SMALL LETTER TSI-  '\xabb5'# -> unI64 5093-  -- CHEROKEE SMALL LETTER TSO-  '\xabb6'# -> unI64 5094-  -- CHEROKEE SMALL LETTER TSU-  '\xabb7'# -> unI64 5095-  -- CHEROKEE SMALL LETTER TSV-  '\xabb8'# -> unI64 5096-  -- CHEROKEE SMALL LETTER WA-  '\xabb9'# -> unI64 5097-  -- CHEROKEE SMALL LETTER WE-  '\xabba'# -> unI64 5098-  -- CHEROKEE SMALL LETTER WI-  '\xabbb'# -> unI64 5099-  -- CHEROKEE SMALL LETTER WO-  '\xabbc'# -> unI64 5100-  -- CHEROKEE SMALL LETTER WU-  '\xabbd'# -> unI64 5101-  -- CHEROKEE SMALL LETTER WV-  '\xabbe'# -> unI64 5102-  -- CHEROKEE SMALL LETTER YA-  '\xabbf'# -> unI64 5103-  -- LATIN SMALL LIGATURE FF-  '\xfb00'# -> unI64 213909606-  -- LATIN SMALL LIGATURE FI-  '\xfb01'# -> unI64 220201062-  -- LATIN SMALL LIGATURE FL-  '\xfb02'# -> unI64 226492518-  -- LATIN SMALL LIGATURE FFI-  '\xfb03'# -> unI64 461795097575526-  -- LATIN SMALL LIGATURE FFL-  '\xfb04'# -> unI64 474989237108838-  -- LATIN SMALL LIGATURE LONG S T-  '\xfb05'# -> unI64 243269747-  -- LATIN SMALL LIGATURE ST-  '\xfb06'# -> unI64 243269747-  -- ARMENIAN SMALL LIGATURE MEN NOW-  '\xfb13'# -> unI64 2931819892-  -- ARMENIAN SMALL LIGATURE MEN ECH-  '\xfb14'# -> unI64 2896168308-  -- ARMENIAN SMALL LIGATURE MEN INI-  '\xfb15'# -> unI64 2908751220-  -- ARMENIAN SMALL LIGATURE VEW NOW-  '\xfb16'# -> unI64 2931819902-  -- ARMENIAN SMALL LIGATURE MEN XEH-  '\xfb17'# -> unI64 2912945524-  '\x0041'# -> unI64 97-  '\x0042'# -> unI64 98-  '\x0043'# -> unI64 99-  '\x0044'# -> unI64 100-  '\x0045'# -> unI64 101-  '\x0046'# -> unI64 102-  '\x0047'# -> unI64 103-  '\x0048'# -> unI64 104-  '\x0049'# -> unI64 105-  '\x004a'# -> unI64 106-  '\x004b'# -> unI64 107-  '\x004c'# -> unI64 108-  '\x004d'# -> unI64 109-  '\x004e'# -> unI64 110-  '\x004f'# -> unI64 111-  '\x0050'# -> unI64 112-  '\x0051'# -> unI64 113-  '\x0052'# -> unI64 114-  '\x0053'# -> unI64 115-  '\x0054'# -> unI64 116-  '\x0055'# -> unI64 117-  '\x0056'# -> unI64 118-  '\x0057'# -> unI64 119-  '\x0058'# -> unI64 120-  '\x0059'# -> unI64 121-  '\x005a'# -> unI64 122-  '\x00c0'# -> unI64 224-  '\x00c1'# -> unI64 225-  '\x00c2'# -> unI64 226-  '\x00c3'# -> unI64 227-  '\x00c4'# -> unI64 228-  '\x00c5'# -> unI64 229-  '\x00c6'# -> unI64 230-  '\x00c7'# -> unI64 231-  '\x00c8'# -> unI64 232-  '\x00c9'# -> unI64 233-  '\x00ca'# -> unI64 234-  '\x00cb'# -> unI64 235-  '\x00cc'# -> unI64 236-  '\x00cd'# -> unI64 237-  '\x00ce'# -> unI64 238-  '\x00cf'# -> unI64 239-  '\x00d0'# -> unI64 240-  '\x00d1'# -> unI64 241-  '\x00d2'# -> unI64 242-  '\x00d3'# -> unI64 243-  '\x00d4'# -> unI64 244-  '\x00d5'# -> unI64 245-  '\x00d6'# -> unI64 246-  '\x00d8'# -> unI64 248-  '\x00d9'# -> unI64 249-  '\x00da'# -> unI64 250-  '\x00db'# -> unI64 251-  '\x00dc'# -> unI64 252-  '\x00dd'# -> unI64 253-  '\x00de'# -> unI64 254-  '\x0100'# -> unI64 257-  '\x0102'# -> unI64 259-  '\x0104'# -> unI64 261-  '\x0106'# -> unI64 263-  '\x0108'# -> unI64 265-  '\x010a'# -> unI64 267-  '\x010c'# -> unI64 269-  '\x010e'# -> unI64 271-  '\x0110'# -> unI64 273-  '\x0112'# -> unI64 275-  '\x0114'# -> unI64 277-  '\x0116'# -> unI64 279-  '\x0118'# -> unI64 281-  '\x011a'# -> unI64 283-  '\x011c'# -> unI64 285-  '\x011e'# -> unI64 287-  '\x0120'# -> unI64 289-  '\x0122'# -> unI64 291-  '\x0124'# -> unI64 293-  '\x0126'# -> unI64 295-  '\x0128'# -> unI64 297-  '\x012a'# -> unI64 299-  '\x012c'# -> unI64 301-  '\x012e'# -> unI64 303-  '\x0132'# -> unI64 307-  '\x0134'# -> unI64 309-  '\x0136'# -> unI64 311-  '\x0139'# -> unI64 314-  '\x013b'# -> unI64 316-  '\x013d'# -> unI64 318-  '\x013f'# -> unI64 320-  '\x0141'# -> unI64 322-  '\x0143'# -> unI64 324-  '\x0145'# -> unI64 326-  '\x0147'# -> unI64 328-  '\x014a'# -> unI64 331-  '\x014c'# -> unI64 333-  '\x014e'# -> unI64 335-  '\x0150'# -> unI64 337-  '\x0152'# -> unI64 339-  '\x0154'# -> unI64 341-  '\x0156'# -> unI64 343-  '\x0158'# -> unI64 345-  '\x015a'# -> unI64 347-  '\x015c'# -> unI64 349-  '\x015e'# -> unI64 351-  '\x0160'# -> unI64 353-  '\x0162'# -> unI64 355-  '\x0164'# -> unI64 357-  '\x0166'# -> unI64 359-  '\x0168'# -> unI64 361-  '\x016a'# -> unI64 363-  '\x016c'# -> unI64 365-  '\x016e'# -> unI64 367-  '\x0170'# -> unI64 369-  '\x0172'# -> unI64 371-  '\x0174'# -> unI64 373-  '\x0176'# -> unI64 375-  '\x0178'# -> unI64 255-  '\x0179'# -> unI64 378-  '\x017b'# -> unI64 380-  '\x017d'# -> unI64 382-  '\x0181'# -> unI64 595-  '\x0182'# -> unI64 387-  '\x0184'# -> unI64 389-  '\x0186'# -> unI64 596-  '\x0187'# -> unI64 392-  '\x0189'# -> unI64 598-  '\x018a'# -> unI64 599-  '\x018b'# -> unI64 396-  '\x018e'# -> unI64 477-  '\x018f'# -> unI64 601-  '\x0190'# -> unI64 603-  '\x0191'# -> unI64 402-  '\x0193'# -> unI64 608-  '\x0194'# -> unI64 611-  '\x0196'# -> unI64 617-  '\x0197'# -> unI64 616-  '\x0198'# -> unI64 409-  '\x019c'# -> unI64 623-  '\x019d'# -> unI64 626-  '\x019f'# -> unI64 629-  '\x01a0'# -> unI64 417-  '\x01a2'# -> unI64 419-  '\x01a4'# -> unI64 421-  '\x01a6'# -> unI64 640-  '\x01a7'# -> unI64 424-  '\x01a9'# -> unI64 643-  '\x01ac'# -> unI64 429-  '\x01ae'# -> unI64 648-  '\x01af'# -> unI64 432-  '\x01b1'# -> unI64 650-  '\x01b2'# -> unI64 651-  '\x01b3'# -> unI64 436-  '\x01b5'# -> unI64 438-  '\x01b7'# -> unI64 658-  '\x01b8'# -> unI64 441-  '\x01bc'# -> unI64 445-  '\x01c4'# -> unI64 454-  '\x01c5'# -> unI64 454-  '\x01c7'# -> unI64 457-  '\x01c8'# -> unI64 457-  '\x01ca'# -> unI64 460-  '\x01cb'# -> unI64 460-  '\x01cd'# -> unI64 462-  '\x01cf'# -> unI64 464-  '\x01d1'# -> unI64 466-  '\x01d3'# -> unI64 468-  '\x01d5'# -> unI64 470-  '\x01d7'# -> unI64 472-  '\x01d9'# -> unI64 474-  '\x01db'# -> unI64 476-  '\x01de'# -> unI64 479-  '\x01e0'# -> unI64 481-  '\x01e2'# -> unI64 483-  '\x01e4'# -> unI64 485-  '\x01e6'# -> unI64 487-  '\x01e8'# -> unI64 489-  '\x01ea'# -> unI64 491-  '\x01ec'# -> unI64 493-  '\x01ee'# -> unI64 495-  '\x01f1'# -> unI64 499-  '\x01f2'# -> unI64 499-  '\x01f4'# -> unI64 501-  '\x01f6'# -> unI64 405-  '\x01f7'# -> unI64 447-  '\x01f8'# -> unI64 505-  '\x01fa'# -> unI64 507-  '\x01fc'# -> unI64 509-  '\x01fe'# -> unI64 511-  '\x0200'# -> unI64 513-  '\x0202'# -> unI64 515-  '\x0204'# -> unI64 517-  '\x0206'# -> unI64 519-  '\x0208'# -> unI64 521-  '\x020a'# -> unI64 523-  '\x020c'# -> unI64 525-  '\x020e'# -> unI64 527-  '\x0210'# -> unI64 529-  '\x0212'# -> unI64 531-  '\x0214'# -> unI64 533-  '\x0216'# -> unI64 535-  '\x0218'# -> unI64 537-  '\x021a'# -> unI64 539-  '\x021c'# -> unI64 541-  '\x021e'# -> unI64 543-  '\x0220'# -> unI64 414-  '\x0222'# -> unI64 547-  '\x0224'# -> unI64 549-  '\x0226'# -> unI64 551-  '\x0228'# -> unI64 553-  '\x022a'# -> unI64 555-  '\x022c'# -> unI64 557-  '\x022e'# -> unI64 559-  '\x0230'# -> unI64 561-  '\x0232'# -> unI64 563-  '\x023a'# -> unI64 11365-  '\x023b'# -> unI64 572-  '\x023d'# -> unI64 410-  '\x023e'# -> unI64 11366-  '\x0241'# -> unI64 578-  '\x0243'# -> unI64 384-  '\x0244'# -> unI64 649-  '\x0245'# -> unI64 652-  '\x0246'# -> unI64 583-  '\x0248'# -> unI64 585-  '\x024a'# -> unI64 587-  '\x024c'# -> unI64 589-  '\x024e'# -> unI64 591-  '\x0370'# -> unI64 881-  '\x0372'# -> unI64 883-  '\x0376'# -> unI64 887-  '\x037f'# -> unI64 1011-  '\x0386'# -> unI64 940-  '\x0388'# -> unI64 941-  '\x0389'# -> unI64 942-  '\x038a'# -> unI64 943-  '\x038c'# -> unI64 972-  '\x038e'# -> unI64 973-  '\x038f'# -> unI64 974-  '\x0391'# -> unI64 945-  '\x0392'# -> unI64 946-  '\x0393'# -> unI64 947-  '\x0394'# -> unI64 948-  '\x0395'# -> unI64 949-  '\x0396'# -> unI64 950-  '\x0397'# -> unI64 951-  '\x0398'# -> unI64 952-  '\x0399'# -> unI64 953-  '\x039a'# -> unI64 954-  '\x039b'# -> unI64 955-  '\x039c'# -> unI64 956-  '\x039d'# -> unI64 957-  '\x039e'# -> unI64 958-  '\x039f'# -> unI64 959-  '\x03a0'# -> unI64 960-  '\x03a1'# -> unI64 961-  '\x03a3'# -> unI64 963-  '\x03a4'# -> unI64 964-  '\x03a5'# -> unI64 965-  '\x03a6'# -> unI64 966-  '\x03a7'# -> unI64 967-  '\x03a8'# -> unI64 968-  '\x03a9'# -> unI64 969-  '\x03aa'# -> unI64 970-  '\x03ab'# -> unI64 971-  '\x03cf'# -> unI64 983-  '\x03d8'# -> unI64 985-  '\x03da'# -> unI64 987-  '\x03dc'# -> unI64 989-  '\x03de'# -> unI64 991-  '\x03e0'# -> unI64 993-  '\x03e2'# -> unI64 995-  '\x03e4'# -> unI64 997-  '\x03e6'# -> unI64 999-  '\x03e8'# -> unI64 1001-  '\x03ea'# -> unI64 1003-  '\x03ec'# -> unI64 1005-  '\x03ee'# -> unI64 1007-  '\x03f4'# -> unI64 952-  '\x03f7'# -> unI64 1016-  '\x03f9'# -> unI64 1010-  '\x03fa'# -> unI64 1019-  '\x03fd'# -> unI64 891-  '\x03fe'# -> unI64 892-  '\x03ff'# -> unI64 893-  '\x0400'# -> unI64 1104-  '\x0401'# -> unI64 1105-  '\x0402'# -> unI64 1106-  '\x0403'# -> unI64 1107-  '\x0404'# -> unI64 1108-  '\x0405'# -> unI64 1109-  '\x0406'# -> unI64 1110-  '\x0407'# -> unI64 1111-  '\x0408'# -> unI64 1112-  '\x0409'# -> unI64 1113-  '\x040a'# -> unI64 1114-  '\x040b'# -> unI64 1115-  '\x040c'# -> unI64 1116-  '\x040d'# -> unI64 1117-  '\x040e'# -> unI64 1118-  '\x040f'# -> unI64 1119-  '\x0410'# -> unI64 1072-  '\x0411'# -> unI64 1073-  '\x0412'# -> unI64 1074-  '\x0413'# -> unI64 1075-  '\x0414'# -> unI64 1076-  '\x0415'# -> unI64 1077-  '\x0416'# -> unI64 1078-  '\x0417'# -> unI64 1079-  '\x0418'# -> unI64 1080-  '\x0419'# -> unI64 1081-  '\x041a'# -> unI64 1082-  '\x041b'# -> unI64 1083-  '\x041c'# -> unI64 1084-  '\x041d'# -> unI64 1085-  '\x041e'# -> unI64 1086-  '\x041f'# -> unI64 1087-  '\x0420'# -> unI64 1088-  '\x0421'# -> unI64 1089-  '\x0422'# -> unI64 1090-  '\x0423'# -> unI64 1091-  '\x0424'# -> unI64 1092-  '\x0425'# -> unI64 1093-  '\x0426'# -> unI64 1094-  '\x0427'# -> unI64 1095-  '\x0428'# -> unI64 1096-  '\x0429'# -> unI64 1097-  '\x042a'# -> unI64 1098-  '\x042b'# -> unI64 1099-  '\x042c'# -> unI64 1100-  '\x042d'# -> unI64 1101-  '\x042e'# -> unI64 1102-  '\x042f'# -> unI64 1103-  '\x0460'# -> unI64 1121-  '\x0462'# -> unI64 1123-  '\x0464'# -> unI64 1125-  '\x0466'# -> unI64 1127-  '\x0468'# -> unI64 1129-  '\x046a'# -> unI64 1131-  '\x046c'# -> unI64 1133-  '\x046e'# -> unI64 1135-  '\x0470'# -> unI64 1137-  '\x0472'# -> unI64 1139-  '\x0474'# -> unI64 1141-  '\x0476'# -> unI64 1143-  '\x0478'# -> unI64 1145-  '\x047a'# -> unI64 1147-  '\x047c'# -> unI64 1149-  '\x047e'# -> unI64 1151-  '\x0480'# -> unI64 1153-  '\x048a'# -> unI64 1163-  '\x048c'# -> unI64 1165-  '\x048e'# -> unI64 1167-  '\x0490'# -> unI64 1169-  '\x0492'# -> unI64 1171-  '\x0494'# -> unI64 1173-  '\x0496'# -> unI64 1175-  '\x0498'# -> unI64 1177-  '\x049a'# -> unI64 1179-  '\x049c'# -> unI64 1181-  '\x049e'# -> unI64 1183-  '\x04a0'# -> unI64 1185-  '\x04a2'# -> unI64 1187-  '\x04a4'# -> unI64 1189-  '\x04a6'# -> unI64 1191-  '\x04a8'# -> unI64 1193-  '\x04aa'# -> unI64 1195-  '\x04ac'# -> unI64 1197-  '\x04ae'# -> unI64 1199-  '\x04b0'# -> unI64 1201-  '\x04b2'# -> unI64 1203-  '\x04b4'# -> unI64 1205-  '\x04b6'# -> unI64 1207-  '\x04b8'# -> unI64 1209-  '\x04ba'# -> unI64 1211-  '\x04bc'# -> unI64 1213-  '\x04be'# -> unI64 1215-  '\x04c0'# -> unI64 1231-  '\x04c1'# -> unI64 1218-  '\x04c3'# -> unI64 1220-  '\x04c5'# -> unI64 1222-  '\x04c7'# -> unI64 1224-  '\x04c9'# -> unI64 1226-  '\x04cb'# -> unI64 1228-  '\x04cd'# -> unI64 1230-  '\x04d0'# -> unI64 1233-  '\x04d2'# -> unI64 1235-  '\x04d4'# -> unI64 1237-  '\x04d6'# -> unI64 1239-  '\x04d8'# -> unI64 1241-  '\x04da'# -> unI64 1243-  '\x04dc'# -> unI64 1245-  '\x04de'# -> unI64 1247-  '\x04e0'# -> unI64 1249-  '\x04e2'# -> unI64 1251-  '\x04e4'# -> unI64 1253-  '\x04e6'# -> unI64 1255-  '\x04e8'# -> unI64 1257-  '\x04ea'# -> unI64 1259-  '\x04ec'# -> unI64 1261-  '\x04ee'# -> unI64 1263-  '\x04f0'# -> unI64 1265-  '\x04f2'# -> unI64 1267-  '\x04f4'# -> unI64 1269-  '\x04f6'# -> unI64 1271-  '\x04f8'# -> unI64 1273-  '\x04fa'# -> unI64 1275-  '\x04fc'# -> unI64 1277-  '\x04fe'# -> unI64 1279-  '\x0500'# -> unI64 1281-  '\x0502'# -> unI64 1283-  '\x0504'# -> unI64 1285-  '\x0506'# -> unI64 1287-  '\x0508'# -> unI64 1289-  '\x050a'# -> unI64 1291-  '\x050c'# -> unI64 1293-  '\x050e'# -> unI64 1295-  '\x0510'# -> unI64 1297-  '\x0512'# -> unI64 1299-  '\x0514'# -> unI64 1301-  '\x0516'# -> unI64 1303-  '\x0518'# -> unI64 1305-  '\x051a'# -> unI64 1307-  '\x051c'# -> unI64 1309-  '\x051e'# -> unI64 1311-  '\x0520'# -> unI64 1313-  '\x0522'# -> unI64 1315-  '\x0524'# -> unI64 1317-  '\x0526'# -> unI64 1319-  '\x0528'# -> unI64 1321-  '\x052a'# -> unI64 1323-  '\x052c'# -> unI64 1325-  '\x052e'# -> unI64 1327-  '\x0531'# -> unI64 1377-  '\x0532'# -> unI64 1378-  '\x0533'# -> unI64 1379-  '\x0534'# -> unI64 1380-  '\x0535'# -> unI64 1381-  '\x0536'# -> unI64 1382-  '\x0537'# -> unI64 1383-  '\x0538'# -> unI64 1384-  '\x0539'# -> unI64 1385-  '\x053a'# -> unI64 1386-  '\x053b'# -> unI64 1387-  '\x053c'# -> unI64 1388-  '\x053d'# -> unI64 1389-  '\x053e'# -> unI64 1390-  '\x053f'# -> unI64 1391-  '\x0540'# -> unI64 1392-  '\x0541'# -> unI64 1393-  '\x0542'# -> unI64 1394-  '\x0543'# -> unI64 1395-  '\x0544'# -> unI64 1396-  '\x0545'# -> unI64 1397-  '\x0546'# -> unI64 1398-  '\x0547'# -> unI64 1399-  '\x0548'# -> unI64 1400-  '\x0549'# -> unI64 1401-  '\x054a'# -> unI64 1402-  '\x054b'# -> unI64 1403-  '\x054c'# -> unI64 1404-  '\x054d'# -> unI64 1405-  '\x054e'# -> unI64 1406-  '\x054f'# -> unI64 1407-  '\x0550'# -> unI64 1408-  '\x0551'# -> unI64 1409-  '\x0552'# -> unI64 1410-  '\x0553'# -> unI64 1411-  '\x0554'# -> unI64 1412-  '\x0555'# -> unI64 1413-  '\x0556'# -> unI64 1414-  '\x10a0'# -> unI64 11520-  '\x10a1'# -> unI64 11521-  '\x10a2'# -> unI64 11522-  '\x10a3'# -> unI64 11523-  '\x10a4'# -> unI64 11524-  '\x10a5'# -> unI64 11525-  '\x10a6'# -> unI64 11526-  '\x10a7'# -> unI64 11527-  '\x10a8'# -> unI64 11528-  '\x10a9'# -> unI64 11529-  '\x10aa'# -> unI64 11530-  '\x10ab'# -> unI64 11531-  '\x10ac'# -> unI64 11532-  '\x10ad'# -> unI64 11533-  '\x10ae'# -> unI64 11534-  '\x10af'# -> unI64 11535-  '\x10b0'# -> unI64 11536-  '\x10b1'# -> unI64 11537-  '\x10b2'# -> unI64 11538-  '\x10b3'# -> unI64 11539-  '\x10b4'# -> unI64 11540-  '\x10b5'# -> unI64 11541-  '\x10b6'# -> unI64 11542-  '\x10b7'# -> unI64 11543-  '\x10b8'# -> unI64 11544-  '\x10b9'# -> unI64 11545-  '\x10ba'# -> unI64 11546-  '\x10bb'# -> unI64 11547-  '\x10bc'# -> unI64 11548-  '\x10bd'# -> unI64 11549-  '\x10be'# -> unI64 11550-  '\x10bf'# -> unI64 11551-  '\x10c0'# -> unI64 11552-  '\x10c1'# -> unI64 11553-  '\x10c2'# -> unI64 11554-  '\x10c3'# -> unI64 11555-  '\x10c4'# -> unI64 11556-  '\x10c5'# -> unI64 11557-  '\x10c7'# -> unI64 11559-  '\x10cd'# -> unI64 11565-  '\x13a0'# -> unI64 43888-  '\x13a1'# -> unI64 43889-  '\x13a2'# -> unI64 43890-  '\x13a3'# -> unI64 43891-  '\x13a4'# -> unI64 43892-  '\x13a5'# -> unI64 43893-  '\x13a6'# -> unI64 43894-  '\x13a7'# -> unI64 43895-  '\x13a8'# -> unI64 43896-  '\x13a9'# -> unI64 43897-  '\x13aa'# -> unI64 43898-  '\x13ab'# -> unI64 43899-  '\x13ac'# -> unI64 43900-  '\x13ad'# -> unI64 43901-  '\x13ae'# -> unI64 43902-  '\x13af'# -> unI64 43903-  '\x13b0'# -> unI64 43904-  '\x13b1'# -> unI64 43905-  '\x13b2'# -> unI64 43906-  '\x13b3'# -> unI64 43907-  '\x13b4'# -> unI64 43908-  '\x13b5'# -> unI64 43909-  '\x13b6'# -> unI64 43910-  '\x13b7'# -> unI64 43911-  '\x13b8'# -> unI64 43912-  '\x13b9'# -> unI64 43913-  '\x13ba'# -> unI64 43914-  '\x13bb'# -> unI64 43915-  '\x13bc'# -> unI64 43916-  '\x13bd'# -> unI64 43917-  '\x13be'# -> unI64 43918-  '\x13bf'# -> unI64 43919-  '\x13c0'# -> unI64 43920-  '\x13c1'# -> unI64 43921-  '\x13c2'# -> unI64 43922-  '\x13c3'# -> unI64 43923-  '\x13c4'# -> unI64 43924-  '\x13c5'# -> unI64 43925-  '\x13c6'# -> unI64 43926-  '\x13c7'# -> unI64 43927-  '\x13c8'# -> unI64 43928-  '\x13c9'# -> unI64 43929-  '\x13ca'# -> unI64 43930-  '\x13cb'# -> unI64 43931-  '\x13cc'# -> unI64 43932-  '\x13cd'# -> unI64 43933-  '\x13ce'# -> unI64 43934-  '\x13cf'# -> unI64 43935-  '\x13d0'# -> unI64 43936-  '\x13d1'# -> unI64 43937-  '\x13d2'# -> unI64 43938-  '\x13d3'# -> unI64 43939-  '\x13d4'# -> unI64 43940-  '\x13d5'# -> unI64 43941-  '\x13d6'# -> unI64 43942-  '\x13d7'# -> unI64 43943-  '\x13d8'# -> unI64 43944-  '\x13d9'# -> unI64 43945-  '\x13da'# -> unI64 43946-  '\x13db'# -> unI64 43947-  '\x13dc'# -> unI64 43948-  '\x13dd'# -> unI64 43949-  '\x13de'# -> unI64 43950-  '\x13df'# -> unI64 43951-  '\x13e0'# -> unI64 43952-  '\x13e1'# -> unI64 43953-  '\x13e2'# -> unI64 43954-  '\x13e3'# -> unI64 43955-  '\x13e4'# -> unI64 43956-  '\x13e5'# -> unI64 43957-  '\x13e6'# -> unI64 43958-  '\x13e7'# -> unI64 43959-  '\x13e8'# -> unI64 43960-  '\x13e9'# -> unI64 43961-  '\x13ea'# -> unI64 43962-  '\x13eb'# -> unI64 43963-  '\x13ec'# -> unI64 43964-  '\x13ed'# -> unI64 43965-  '\x13ee'# -> unI64 43966-  '\x13ef'# -> unI64 43967-  '\x13f0'# -> unI64 5112-  '\x13f1'# -> unI64 5113-  '\x13f2'# -> unI64 5114-  '\x13f3'# -> unI64 5115-  '\x13f4'# -> unI64 5116-  '\x13f5'# -> unI64 5117-  '\x1c90'# -> unI64 4304-  '\x1c91'# -> unI64 4305-  '\x1c92'# -> unI64 4306-  '\x1c93'# -> unI64 4307-  '\x1c94'# -> unI64 4308-  '\x1c95'# -> unI64 4309-  '\x1c96'# -> unI64 4310-  '\x1c97'# -> unI64 4311-  '\x1c98'# -> unI64 4312-  '\x1c99'# -> unI64 4313-  '\x1c9a'# -> unI64 4314-  '\x1c9b'# -> unI64 4315-  '\x1c9c'# -> unI64 4316-  '\x1c9d'# -> unI64 4317-  '\x1c9e'# -> unI64 4318-  '\x1c9f'# -> unI64 4319-  '\x1ca0'# -> unI64 4320-  '\x1ca1'# -> unI64 4321-  '\x1ca2'# -> unI64 4322-  '\x1ca3'# -> unI64 4323-  '\x1ca4'# -> unI64 4324-  '\x1ca5'# -> unI64 4325-  '\x1ca6'# -> unI64 4326-  '\x1ca7'# -> unI64 4327-  '\x1ca8'# -> unI64 4328-  '\x1ca9'# -> unI64 4329-  '\x1caa'# -> unI64 4330-  '\x1cab'# -> unI64 4331-  '\x1cac'# -> unI64 4332-  '\x1cad'# -> unI64 4333-  '\x1cae'# -> unI64 4334-  '\x1caf'# -> unI64 4335-  '\x1cb0'# -> unI64 4336-  '\x1cb1'# -> unI64 4337-  '\x1cb2'# -> unI64 4338-  '\x1cb3'# -> unI64 4339-  '\x1cb4'# -> unI64 4340-  '\x1cb5'# -> unI64 4341-  '\x1cb6'# -> unI64 4342-  '\x1cb7'# -> unI64 4343-  '\x1cb8'# -> unI64 4344-  '\x1cb9'# -> unI64 4345-  '\x1cba'# -> unI64 4346-  '\x1cbd'# -> unI64 4349-  '\x1cbe'# -> unI64 4350-  '\x1cbf'# -> unI64 4351-  '\x1e00'# -> unI64 7681-  '\x1e02'# -> unI64 7683-  '\x1e04'# -> unI64 7685-  '\x1e06'# -> unI64 7687-  '\x1e08'# -> unI64 7689-  '\x1e0a'# -> unI64 7691-  '\x1e0c'# -> unI64 7693-  '\x1e0e'# -> unI64 7695-  '\x1e10'# -> unI64 7697-  '\x1e12'# -> unI64 7699-  '\x1e14'# -> unI64 7701-  '\x1e16'# -> unI64 7703-  '\x1e18'# -> unI64 7705-  '\x1e1a'# -> unI64 7707-  '\x1e1c'# -> unI64 7709-  '\x1e1e'# -> unI64 7711-  '\x1e20'# -> unI64 7713-  '\x1e22'# -> unI64 7715-  '\x1e24'# -> unI64 7717-  '\x1e26'# -> unI64 7719-  '\x1e28'# -> unI64 7721-  '\x1e2a'# -> unI64 7723-  '\x1e2c'# -> unI64 7725-  '\x1e2e'# -> unI64 7727-  '\x1e30'# -> unI64 7729-  '\x1e32'# -> unI64 7731-  '\x1e34'# -> unI64 7733-  '\x1e36'# -> unI64 7735-  '\x1e38'# -> unI64 7737-  '\x1e3a'# -> unI64 7739-  '\x1e3c'# -> unI64 7741-  '\x1e3e'# -> unI64 7743-  '\x1e40'# -> unI64 7745-  '\x1e42'# -> unI64 7747-  '\x1e44'# -> unI64 7749-  '\x1e46'# -> unI64 7751-  '\x1e48'# -> unI64 7753-  '\x1e4a'# -> unI64 7755-  '\x1e4c'# -> unI64 7757-  '\x1e4e'# -> unI64 7759-  '\x1e50'# -> unI64 7761-  '\x1e52'# -> unI64 7763-  '\x1e54'# -> unI64 7765-  '\x1e56'# -> unI64 7767-  '\x1e58'# -> unI64 7769-  '\x1e5a'# -> unI64 7771-  '\x1e5c'# -> unI64 7773-  '\x1e5e'# -> unI64 7775-  '\x1e60'# -> unI64 7777-  '\x1e62'# -> unI64 7779-  '\x1e64'# -> unI64 7781-  '\x1e66'# -> unI64 7783-  '\x1e68'# -> unI64 7785-  '\x1e6a'# -> unI64 7787-  '\x1e6c'# -> unI64 7789-  '\x1e6e'# -> unI64 7791-  '\x1e70'# -> unI64 7793-  '\x1e72'# -> unI64 7795-  '\x1e74'# -> unI64 7797-  '\x1e76'# -> unI64 7799-  '\x1e78'# -> unI64 7801-  '\x1e7a'# -> unI64 7803-  '\x1e7c'# -> unI64 7805-  '\x1e7e'# -> unI64 7807-  '\x1e80'# -> unI64 7809-  '\x1e82'# -> unI64 7811-  '\x1e84'# -> unI64 7813-  '\x1e86'# -> unI64 7815-  '\x1e88'# -> unI64 7817-  '\x1e8a'# -> unI64 7819-  '\x1e8c'# -> unI64 7821-  '\x1e8e'# -> unI64 7823-  '\x1e90'# -> unI64 7825-  '\x1e92'# -> unI64 7827-  '\x1e94'# -> unI64 7829-  '\x1ea0'# -> unI64 7841-  '\x1ea2'# -> unI64 7843-  '\x1ea4'# -> unI64 7845-  '\x1ea6'# -> unI64 7847-  '\x1ea8'# -> unI64 7849-  '\x1eaa'# -> unI64 7851-  '\x1eac'# -> unI64 7853-  '\x1eae'# -> unI64 7855-  '\x1eb0'# -> unI64 7857-  '\x1eb2'# -> unI64 7859-  '\x1eb4'# -> unI64 7861-  '\x1eb6'# -> unI64 7863-  '\x1eb8'# -> unI64 7865-  '\x1eba'# -> unI64 7867-  '\x1ebc'# -> unI64 7869-  '\x1ebe'# -> unI64 7871-  '\x1ec0'# -> unI64 7873-  '\x1ec2'# -> unI64 7875-  '\x1ec4'# -> unI64 7877-  '\x1ec6'# -> unI64 7879-  '\x1ec8'# -> unI64 7881-  '\x1eca'# -> unI64 7883-  '\x1ecc'# -> unI64 7885-  '\x1ece'# -> unI64 7887-  '\x1ed0'# -> unI64 7889-  '\x1ed2'# -> unI64 7891-  '\x1ed4'# -> unI64 7893-  '\x1ed6'# -> unI64 7895-  '\x1ed8'# -> unI64 7897-  '\x1eda'# -> unI64 7899-  '\x1edc'# -> unI64 7901-  '\x1ede'# -> unI64 7903-  '\x1ee0'# -> unI64 7905-  '\x1ee2'# -> unI64 7907-  '\x1ee4'# -> unI64 7909-  '\x1ee6'# -> unI64 7911-  '\x1ee8'# -> unI64 7913-  '\x1eea'# -> unI64 7915-  '\x1eec'# -> unI64 7917-  '\x1eee'# -> unI64 7919-  '\x1ef0'# -> unI64 7921-  '\x1ef2'# -> unI64 7923-  '\x1ef4'# -> unI64 7925-  '\x1ef6'# -> unI64 7927-  '\x1ef8'# -> unI64 7929-  '\x1efa'# -> unI64 7931-  '\x1efc'# -> unI64 7933-  '\x1efe'# -> unI64 7935-  '\x1f08'# -> unI64 7936-  '\x1f09'# -> unI64 7937-  '\x1f0a'# -> unI64 7938-  '\x1f0b'# -> unI64 7939-  '\x1f0c'# -> unI64 7940-  '\x1f0d'# -> unI64 7941-  '\x1f0e'# -> unI64 7942-  '\x1f0f'# -> unI64 7943-  '\x1f18'# -> unI64 7952-  '\x1f19'# -> unI64 7953-  '\x1f1a'# -> unI64 7954-  '\x1f1b'# -> unI64 7955-  '\x1f1c'# -> unI64 7956-  '\x1f1d'# -> unI64 7957-  '\x1f28'# -> unI64 7968-  '\x1f29'# -> unI64 7969-  '\x1f2a'# -> unI64 7970-  '\x1f2b'# -> unI64 7971-  '\x1f2c'# -> unI64 7972-  '\x1f2d'# -> unI64 7973-  '\x1f2e'# -> unI64 7974-  '\x1f2f'# -> unI64 7975-  '\x1f38'# -> unI64 7984-  '\x1f39'# -> unI64 7985-  '\x1f3a'# -> unI64 7986-  '\x1f3b'# -> unI64 7987-  '\x1f3c'# -> unI64 7988-  '\x1f3d'# -> unI64 7989-  '\x1f3e'# -> unI64 7990-  '\x1f3f'# -> unI64 7991-  '\x1f48'# -> unI64 8000-  '\x1f49'# -> unI64 8001-  '\x1f4a'# -> unI64 8002-  '\x1f4b'# -> unI64 8003-  '\x1f4c'# -> unI64 8004-  '\x1f4d'# -> unI64 8005-  '\x1f59'# -> unI64 8017-  '\x1f5b'# -> unI64 8019-  '\x1f5d'# -> unI64 8021-  '\x1f5f'# -> unI64 8023-  '\x1f68'# -> unI64 8032-  '\x1f69'# -> unI64 8033-  '\x1f6a'# -> unI64 8034-  '\x1f6b'# -> unI64 8035-  '\x1f6c'# -> unI64 8036-  '\x1f6d'# -> unI64 8037-  '\x1f6e'# -> unI64 8038-  '\x1f6f'# -> unI64 8039-  '\x1fb8'# -> unI64 8112-  '\x1fb9'# -> unI64 8113-  '\x1fba'# -> unI64 8048-  '\x1fbb'# -> unI64 8049-  '\x1fc8'# -> unI64 8050-  '\x1fc9'# -> unI64 8051-  '\x1fca'# -> unI64 8052-  '\x1fcb'# -> unI64 8053-  '\x1fd8'# -> unI64 8144-  '\x1fd9'# -> unI64 8145-  '\x1fda'# -> unI64 8054-  '\x1fdb'# -> unI64 8055-  '\x1fe8'# -> unI64 8160-  '\x1fe9'# -> unI64 8161-  '\x1fea'# -> unI64 8058-  '\x1feb'# -> unI64 8059-  '\x1fec'# -> unI64 8165-  '\x1ff8'# -> unI64 8056-  '\x1ff9'# -> unI64 8057-  '\x1ffa'# -> unI64 8060-  '\x1ffb'# -> unI64 8061-  '\x2126'# -> unI64 969-  '\x212a'# -> unI64 107-  '\x212b'# -> unI64 229-  '\x2132'# -> unI64 8526-  '\x2160'# -> unI64 8560-  '\x2161'# -> unI64 8561-  '\x2162'# -> unI64 8562-  '\x2163'# -> unI64 8563-  '\x2164'# -> unI64 8564-  '\x2165'# -> unI64 8565-  '\x2166'# -> unI64 8566-  '\x2167'# -> unI64 8567-  '\x2168'# -> unI64 8568-  '\x2169'# -> unI64 8569-  '\x216a'# -> unI64 8570-  '\x216b'# -> unI64 8571-  '\x216c'# -> unI64 8572-  '\x216d'# -> unI64 8573-  '\x216e'# -> unI64 8574-  '\x216f'# -> unI64 8575-  '\x2183'# -> unI64 8580-  '\x24b6'# -> unI64 9424-  '\x24b7'# -> unI64 9425-  '\x24b8'# -> unI64 9426-  '\x24b9'# -> unI64 9427-  '\x24ba'# -> unI64 9428-  '\x24bb'# -> unI64 9429-  '\x24bc'# -> unI64 9430-  '\x24bd'# -> unI64 9431-  '\x24be'# -> unI64 9432-  '\x24bf'# -> unI64 9433-  '\x24c0'# -> unI64 9434-  '\x24c1'# -> unI64 9435-  '\x24c2'# -> unI64 9436-  '\x24c3'# -> unI64 9437-  '\x24c4'# -> unI64 9438-  '\x24c5'# -> unI64 9439-  '\x24c6'# -> unI64 9440-  '\x24c7'# -> unI64 9441-  '\x24c8'# -> unI64 9442-  '\x24c9'# -> unI64 9443-  '\x24ca'# -> unI64 9444-  '\x24cb'# -> unI64 9445-  '\x24cc'# -> unI64 9446-  '\x24cd'# -> unI64 9447-  '\x24ce'# -> unI64 9448-  '\x24cf'# -> unI64 9449-  '\x2c00'# -> unI64 11312-  '\x2c01'# -> unI64 11313-  '\x2c02'# -> unI64 11314-  '\x2c03'# -> unI64 11315-  '\x2c04'# -> unI64 11316-  '\x2c05'# -> unI64 11317-  '\x2c06'# -> unI64 11318-  '\x2c07'# -> unI64 11319-  '\x2c08'# -> unI64 11320-  '\x2c09'# -> unI64 11321-  '\x2c0a'# -> unI64 11322-  '\x2c0b'# -> unI64 11323-  '\x2c0c'# -> unI64 11324-  '\x2c0d'# -> unI64 11325-  '\x2c0e'# -> unI64 11326-  '\x2c0f'# -> unI64 11327-  '\x2c10'# -> unI64 11328-  '\x2c11'# -> unI64 11329-  '\x2c12'# -> unI64 11330-  '\x2c13'# -> unI64 11331-  '\x2c14'# -> unI64 11332-  '\x2c15'# -> unI64 11333-  '\x2c16'# -> unI64 11334-  '\x2c17'# -> unI64 11335-  '\x2c18'# -> unI64 11336-  '\x2c19'# -> unI64 11337-  '\x2c1a'# -> unI64 11338-  '\x2c1b'# -> unI64 11339-  '\x2c1c'# -> unI64 11340-  '\x2c1d'# -> unI64 11341-  '\x2c1e'# -> unI64 11342-  '\x2c1f'# -> unI64 11343-  '\x2c20'# -> unI64 11344-  '\x2c21'# -> unI64 11345-  '\x2c22'# -> unI64 11346-  '\x2c23'# -> unI64 11347-  '\x2c24'# -> unI64 11348-  '\x2c25'# -> unI64 11349-  '\x2c26'# -> unI64 11350-  '\x2c27'# -> unI64 11351-  '\x2c28'# -> unI64 11352-  '\x2c29'# -> unI64 11353-  '\x2c2a'# -> unI64 11354-  '\x2c2b'# -> unI64 11355-  '\x2c2c'# -> unI64 11356-  '\x2c2d'# -> unI64 11357-  '\x2c2e'# -> unI64 11358-  '\x2c2f'# -> unI64 11359-  '\x2c60'# -> unI64 11361-  '\x2c62'# -> unI64 619-  '\x2c63'# -> unI64 7549-  '\x2c64'# -> unI64 637-  '\x2c67'# -> unI64 11368-  '\x2c69'# -> unI64 11370-  '\x2c6b'# -> unI64 11372-  '\x2c6d'# -> unI64 593-  '\x2c6e'# -> unI64 625-  '\x2c6f'# -> unI64 592-  '\x2c70'# -> unI64 594-  '\x2c72'# -> unI64 11379-  '\x2c75'# -> unI64 11382-  '\x2c7e'# -> unI64 575-  '\x2c7f'# -> unI64 576-  '\x2c80'# -> unI64 11393-  '\x2c82'# -> unI64 11395-  '\x2c84'# -> unI64 11397-  '\x2c86'# -> unI64 11399-  '\x2c88'# -> unI64 11401-  '\x2c8a'# -> unI64 11403-  '\x2c8c'# -> unI64 11405-  '\x2c8e'# -> unI64 11407-  '\x2c90'# -> unI64 11409-  '\x2c92'# -> unI64 11411-  '\x2c94'# -> unI64 11413-  '\x2c96'# -> unI64 11415-  '\x2c98'# -> unI64 11417-  '\x2c9a'# -> unI64 11419-  '\x2c9c'# -> unI64 11421-  '\x2c9e'# -> unI64 11423-  '\x2ca0'# -> unI64 11425-  '\x2ca2'# -> unI64 11427-  '\x2ca4'# -> unI64 11429-  '\x2ca6'# -> unI64 11431-  '\x2ca8'# -> unI64 11433-  '\x2caa'# -> unI64 11435-  '\x2cac'# -> unI64 11437-  '\x2cae'# -> unI64 11439-  '\x2cb0'# -> unI64 11441-  '\x2cb2'# -> unI64 11443-  '\x2cb4'# -> unI64 11445-  '\x2cb6'# -> unI64 11447-  '\x2cb8'# -> unI64 11449-  '\x2cba'# -> unI64 11451-  '\x2cbc'# -> unI64 11453-  '\x2cbe'# -> unI64 11455-  '\x2cc0'# -> unI64 11457-  '\x2cc2'# -> unI64 11459-  '\x2cc4'# -> unI64 11461-  '\x2cc6'# -> unI64 11463-  '\x2cc8'# -> unI64 11465-  '\x2cca'# -> unI64 11467-  '\x2ccc'# -> unI64 11469-  '\x2cce'# -> unI64 11471-  '\x2cd0'# -> unI64 11473-  '\x2cd2'# -> unI64 11475-  '\x2cd4'# -> unI64 11477-  '\x2cd6'# -> unI64 11479-  '\x2cd8'# -> unI64 11481-  '\x2cda'# -> unI64 11483-  '\x2cdc'# -> unI64 11485-  '\x2cde'# -> unI64 11487-  '\x2ce0'# -> unI64 11489-  '\x2ce2'# -> unI64 11491-  '\x2ceb'# -> unI64 11500-  '\x2ced'# -> unI64 11502-  '\x2cf2'# -> unI64 11507-  '\xa640'# -> unI64 42561-  '\xa642'# -> unI64 42563-  '\xa644'# -> unI64 42565-  '\xa646'# -> unI64 42567-  '\xa648'# -> unI64 42569-  '\xa64a'# -> unI64 42571-  '\xa64c'# -> unI64 42573-  '\xa64e'# -> unI64 42575-  '\xa650'# -> unI64 42577-  '\xa652'# -> unI64 42579-  '\xa654'# -> unI64 42581-  '\xa656'# -> unI64 42583-  '\xa658'# -> unI64 42585-  '\xa65a'# -> unI64 42587-  '\xa65c'# -> unI64 42589-  '\xa65e'# -> unI64 42591-  '\xa660'# -> unI64 42593-  '\xa662'# -> unI64 42595-  '\xa664'# -> unI64 42597-  '\xa666'# -> unI64 42599-  '\xa668'# -> unI64 42601-  '\xa66a'# -> unI64 42603-  '\xa66c'# -> unI64 42605-  '\xa680'# -> unI64 42625-  '\xa682'# -> unI64 42627-  '\xa684'# -> unI64 42629-  '\xa686'# -> unI64 42631-  '\xa688'# -> unI64 42633-  '\xa68a'# -> unI64 42635-  '\xa68c'# -> unI64 42637-  '\xa68e'# -> unI64 42639-  '\xa690'# -> unI64 42641-  '\xa692'# -> unI64 42643-  '\xa694'# -> unI64 42645-  '\xa696'# -> unI64 42647-  '\xa698'# -> unI64 42649-  '\xa69a'# -> unI64 42651-  '\xa722'# -> unI64 42787-  '\xa724'# -> unI64 42789-  '\xa726'# -> unI64 42791-  '\xa728'# -> unI64 42793-  '\xa72a'# -> unI64 42795-  '\xa72c'# -> unI64 42797-  '\xa72e'# -> unI64 42799-  '\xa732'# -> unI64 42803-  '\xa734'# -> unI64 42805-  '\xa736'# -> unI64 42807-  '\xa738'# -> unI64 42809-  '\xa73a'# -> unI64 42811-  '\xa73c'# -> unI64 42813-  '\xa73e'# -> unI64 42815-  '\xa740'# -> unI64 42817-  '\xa742'# -> unI64 42819-  '\xa744'# -> unI64 42821-  '\xa746'# -> unI64 42823-  '\xa748'# -> unI64 42825-  '\xa74a'# -> unI64 42827-  '\xa74c'# -> unI64 42829-  '\xa74e'# -> unI64 42831-  '\xa750'# -> unI64 42833-  '\xa752'# -> unI64 42835-  '\xa754'# -> unI64 42837-  '\xa756'# -> unI64 42839-  '\xa758'# -> unI64 42841-  '\xa75a'# -> unI64 42843-  '\xa75c'# -> unI64 42845-  '\xa75e'# -> unI64 42847-  '\xa760'# -> unI64 42849-  '\xa762'# -> unI64 42851-  '\xa764'# -> unI64 42853-  '\xa766'# -> unI64 42855-  '\xa768'# -> unI64 42857-  '\xa76a'# -> unI64 42859-  '\xa76c'# -> unI64 42861-  '\xa76e'# -> unI64 42863-  '\xa779'# -> unI64 42874-  '\xa77b'# -> unI64 42876-  '\xa77d'# -> unI64 7545-  '\xa77e'# -> unI64 42879-  '\xa780'# -> unI64 42881-  '\xa782'# -> unI64 42883-  '\xa784'# -> unI64 42885-  '\xa786'# -> unI64 42887-  '\xa78b'# -> unI64 42892-  '\xa78d'# -> unI64 613-  '\xa790'# -> unI64 42897-  '\xa792'# -> unI64 42899-  '\xa796'# -> unI64 42903-  '\xa798'# -> unI64 42905-  '\xa79a'# -> unI64 42907-  '\xa79c'# -> unI64 42909-  '\xa79e'# -> unI64 42911-  '\xa7a0'# -> unI64 42913-  '\xa7a2'# -> unI64 42915-  '\xa7a4'# -> unI64 42917-  '\xa7a6'# -> unI64 42919-  '\xa7a8'# -> unI64 42921-  '\xa7aa'# -> unI64 614-  '\xa7ab'# -> unI64 604-  '\xa7ac'# -> unI64 609-  '\xa7ad'# -> unI64 620-  '\xa7ae'# -> unI64 618-  '\xa7b0'# -> unI64 670-  '\xa7b1'# -> unI64 647-  '\xa7b2'# -> unI64 669-  '\xa7b3'# -> unI64 43859-  '\xa7b4'# -> unI64 42933-  '\xa7b6'# -> unI64 42935-  '\xa7b8'# -> unI64 42937-  '\xa7ba'# -> unI64 42939-  '\xa7bc'# -> unI64 42941-  '\xa7be'# -> unI64 42943-  '\xa7c0'# -> unI64 42945-  '\xa7c2'# -> unI64 42947-  '\xa7c4'# -> unI64 42900-  '\xa7c5'# -> unI64 642-  '\xa7c6'# -> unI64 7566-  '\xa7c7'# -> unI64 42952-  '\xa7c9'# -> unI64 42954-  '\xa7d0'# -> unI64 42961-  '\xa7d6'# -> unI64 42967-  '\xa7d8'# -> unI64 42969-  '\xa7f5'# -> unI64 42998-  '\xff21'# -> unI64 65345-  '\xff22'# -> unI64 65346-  '\xff23'# -> unI64 65347-  '\xff24'# -> unI64 65348-  '\xff25'# -> unI64 65349-  '\xff26'# -> unI64 65350-  '\xff27'# -> unI64 65351-  '\xff28'# -> unI64 65352-  '\xff29'# -> unI64 65353-  '\xff2a'# -> unI64 65354-  '\xff2b'# -> unI64 65355-  '\xff2c'# -> unI64 65356-  '\xff2d'# -> unI64 65357-  '\xff2e'# -> unI64 65358-  '\xff2f'# -> unI64 65359-  '\xff30'# -> unI64 65360-  '\xff31'# -> unI64 65361-  '\xff32'# -> unI64 65362-  '\xff33'# -> unI64 65363-  '\xff34'# -> unI64 65364-  '\xff35'# -> unI64 65365-  '\xff36'# -> unI64 65366-  '\xff37'# -> unI64 65367-  '\xff38'# -> unI64 65368-  '\xff39'# -> unI64 65369-  '\xff3a'# -> unI64 65370-  '\x10400'# -> unI64 66600-  '\x10401'# -> unI64 66601-  '\x10402'# -> unI64 66602-  '\x10403'# -> unI64 66603-  '\x10404'# -> unI64 66604-  '\x10405'# -> unI64 66605-  '\x10406'# -> unI64 66606-  '\x10407'# -> unI64 66607-  '\x10408'# -> unI64 66608-  '\x10409'# -> unI64 66609-  '\x1040a'# -> unI64 66610-  '\x1040b'# -> unI64 66611-  '\x1040c'# -> unI64 66612-  '\x1040d'# -> unI64 66613-  '\x1040e'# -> unI64 66614-  '\x1040f'# -> unI64 66615-  '\x10410'# -> unI64 66616-  '\x10411'# -> unI64 66617-  '\x10412'# -> unI64 66618-  '\x10413'# -> unI64 66619-  '\x10414'# -> unI64 66620-  '\x10415'# -> unI64 66621-  '\x10416'# -> unI64 66622-  '\x10417'# -> unI64 66623-  '\x10418'# -> unI64 66624-  '\x10419'# -> unI64 66625-  '\x1041a'# -> unI64 66626-  '\x1041b'# -> unI64 66627-  '\x1041c'# -> unI64 66628-  '\x1041d'# -> unI64 66629-  '\x1041e'# -> unI64 66630-  '\x1041f'# -> unI64 66631-  '\x10420'# -> unI64 66632-  '\x10421'# -> unI64 66633-  '\x10422'# -> unI64 66634-  '\x10423'# -> unI64 66635-  '\x10424'# -> unI64 66636-  '\x10425'# -> unI64 66637-  '\x10426'# -> unI64 66638-  '\x10427'# -> unI64 66639-  '\x104b0'# -> unI64 66776-  '\x104b1'# -> unI64 66777-  '\x104b2'# -> unI64 66778-  '\x104b3'# -> unI64 66779-  '\x104b4'# -> unI64 66780-  '\x104b5'# -> unI64 66781-  '\x104b6'# -> unI64 66782-  '\x104b7'# -> unI64 66783-  '\x104b8'# -> unI64 66784-  '\x104b9'# -> unI64 66785-  '\x104ba'# -> unI64 66786-  '\x104bb'# -> unI64 66787-  '\x104bc'# -> unI64 66788-  '\x104bd'# -> unI64 66789-  '\x104be'# -> unI64 66790-  '\x104bf'# -> unI64 66791-  '\x104c0'# -> unI64 66792-  '\x104c1'# -> unI64 66793-  '\x104c2'# -> unI64 66794-  '\x104c3'# -> unI64 66795-  '\x104c4'# -> unI64 66796-  '\x104c5'# -> unI64 66797-  '\x104c6'# -> unI64 66798-  '\x104c7'# -> unI64 66799-  '\x104c8'# -> unI64 66800-  '\x104c9'# -> unI64 66801-  '\x104ca'# -> unI64 66802-  '\x104cb'# -> unI64 66803-  '\x104cc'# -> unI64 66804-  '\x104cd'# -> unI64 66805-  '\x104ce'# -> unI64 66806-  '\x104cf'# -> unI64 66807-  '\x104d0'# -> unI64 66808-  '\x104d1'# -> unI64 66809-  '\x104d2'# -> unI64 66810-  '\x104d3'# -> unI64 66811-  '\x10570'# -> unI64 66967-  '\x10571'# -> unI64 66968-  '\x10572'# -> unI64 66969-  '\x10573'# -> unI64 66970-  '\x10574'# -> unI64 66971-  '\x10575'# -> unI64 66972-  '\x10576'# -> unI64 66973-  '\x10577'# -> unI64 66974-  '\x10578'# -> unI64 66975-  '\x10579'# -> unI64 66976-  '\x1057a'# -> unI64 66977-  '\x1057c'# -> unI64 66979-  '\x1057d'# -> unI64 66980-  '\x1057e'# -> unI64 66981-  '\x1057f'# -> unI64 66982-  '\x10580'# -> unI64 66983-  '\x10581'# -> unI64 66984-  '\x10582'# -> unI64 66985-  '\x10583'# -> unI64 66986-  '\x10584'# -> unI64 66987-  '\x10585'# -> unI64 66988-  '\x10586'# -> unI64 66989-  '\x10587'# -> unI64 66990-  '\x10588'# -> unI64 66991-  '\x10589'# -> unI64 66992-  '\x1058a'# -> unI64 66993-  '\x1058c'# -> unI64 66995-  '\x1058d'# -> unI64 66996-  '\x1058e'# -> unI64 66997-  '\x1058f'# -> unI64 66998-  '\x10590'# -> unI64 66999-  '\x10591'# -> unI64 67000-  '\x10592'# -> unI64 67001-  '\x10594'# -> unI64 67003-  '\x10595'# -> unI64 67004-  '\x10c80'# -> unI64 68800-  '\x10c81'# -> unI64 68801-  '\x10c82'# -> unI64 68802-  '\x10c83'# -> unI64 68803-  '\x10c84'# -> unI64 68804-  '\x10c85'# -> unI64 68805-  '\x10c86'# -> unI64 68806-  '\x10c87'# -> unI64 68807-  '\x10c88'# -> unI64 68808-  '\x10c89'# -> unI64 68809-  '\x10c8a'# -> unI64 68810-  '\x10c8b'# -> unI64 68811-  '\x10c8c'# -> unI64 68812-  '\x10c8d'# -> unI64 68813-  '\x10c8e'# -> unI64 68814-  '\x10c8f'# -> unI64 68815-  '\x10c90'# -> unI64 68816-  '\x10c91'# -> unI64 68817-  '\x10c92'# -> unI64 68818-  '\x10c93'# -> unI64 68819-  '\x10c94'# -> unI64 68820-  '\x10c95'# -> unI64 68821-  '\x10c96'# -> unI64 68822-  '\x10c97'# -> unI64 68823-  '\x10c98'# -> unI64 68824-  '\x10c99'# -> unI64 68825-  '\x10c9a'# -> unI64 68826-  '\x10c9b'# -> unI64 68827-  '\x10c9c'# -> unI64 68828-  '\x10c9d'# -> unI64 68829-  '\x10c9e'# -> unI64 68830-  '\x10c9f'# -> unI64 68831-  '\x10ca0'# -> unI64 68832-  '\x10ca1'# -> unI64 68833-  '\x10ca2'# -> unI64 68834-  '\x10ca3'# -> unI64 68835-  '\x10ca4'# -> unI64 68836-  '\x10ca5'# -> unI64 68837-  '\x10ca6'# -> unI64 68838-  '\x10ca7'# -> unI64 68839-  '\x10ca8'# -> unI64 68840-  '\x10ca9'# -> unI64 68841-  '\x10caa'# -> unI64 68842-  '\x10cab'# -> unI64 68843-  '\x10cac'# -> unI64 68844-  '\x10cad'# -> unI64 68845-  '\x10cae'# -> unI64 68846-  '\x10caf'# -> unI64 68847-  '\x10cb0'# -> unI64 68848-  '\x10cb1'# -> unI64 68849-  '\x10cb2'# -> unI64 68850-  '\x118a0'# -> unI64 71872-  '\x118a1'# -> unI64 71873-  '\x118a2'# -> unI64 71874-  '\x118a3'# -> unI64 71875-  '\x118a4'# -> unI64 71876-  '\x118a5'# -> unI64 71877-  '\x118a6'# -> unI64 71878-  '\x118a7'# -> unI64 71879-  '\x118a8'# -> unI64 71880-  '\x118a9'# -> unI64 71881-  '\x118aa'# -> unI64 71882-  '\x118ab'# -> unI64 71883-  '\x118ac'# -> unI64 71884-  '\x118ad'# -> unI64 71885-  '\x118ae'# -> unI64 71886-  '\x118af'# -> unI64 71887-  '\x118b0'# -> unI64 71888-  '\x118b1'# -> unI64 71889-  '\x118b2'# -> unI64 71890-  '\x118b3'# -> unI64 71891-  '\x118b4'# -> unI64 71892-  '\x118b5'# -> unI64 71893-  '\x118b6'# -> unI64 71894-  '\x118b7'# -> unI64 71895-  '\x118b8'# -> unI64 71896-  '\x118b9'# -> unI64 71897-  '\x118ba'# -> unI64 71898-  '\x118bb'# -> unI64 71899-  '\x118bc'# -> unI64 71900-  '\x118bd'# -> unI64 71901-  '\x118be'# -> unI64 71902-  '\x118bf'# -> unI64 71903-  '\x16e40'# -> unI64 93792-  '\x16e41'# -> unI64 93793-  '\x16e42'# -> unI64 93794-  '\x16e43'# -> unI64 93795-  '\x16e44'# -> unI64 93796-  '\x16e45'# -> unI64 93797-  '\x16e46'# -> unI64 93798-  '\x16e47'# -> unI64 93799-  '\x16e48'# -> unI64 93800-  '\x16e49'# -> unI64 93801-  '\x16e4a'# -> unI64 93802-  '\x16e4b'# -> unI64 93803-  '\x16e4c'# -> unI64 93804-  '\x16e4d'# -> unI64 93805-  '\x16e4e'# -> unI64 93806-  '\x16e4f'# -> unI64 93807-  '\x16e50'# -> unI64 93808-  '\x16e51'# -> unI64 93809-  '\x16e52'# -> unI64 93810-  '\x16e53'# -> unI64 93811-  '\x16e54'# -> unI64 93812-  '\x16e55'# -> unI64 93813-  '\x16e56'# -> unI64 93814-  '\x16e57'# -> unI64 93815-  '\x16e58'# -> unI64 93816-  '\x16e59'# -> unI64 93817-  '\x16e5a'# -> unI64 93818-  '\x16e5b'# -> unI64 93819-  '\x16e5c'# -> unI64 93820-  '\x16e5d'# -> unI64 93821-  '\x16e5e'# -> unI64 93822-  '\x16e5f'# -> unI64 93823-  '\x1e900'# -> unI64 125218-  '\x1e901'# -> unI64 125219-  '\x1e902'# -> unI64 125220-  '\x1e903'# -> unI64 125221-  '\x1e904'# -> unI64 125222-  '\x1e905'# -> unI64 125223-  '\x1e906'# -> unI64 125224-  '\x1e907'# -> unI64 125225-  '\x1e908'# -> unI64 125226-  '\x1e909'# -> unI64 125227-  '\x1e90a'# -> unI64 125228-  '\x1e90b'# -> unI64 125229-  '\x1e90c'# -> unI64 125230-  '\x1e90d'# -> unI64 125231-  '\x1e90e'# -> unI64 125232-  '\x1e90f'# -> unI64 125233-  '\x1e910'# -> unI64 125234-  '\x1e911'# -> unI64 125235-  '\x1e912'# -> unI64 125236-  '\x1e913'# -> unI64 125237-  '\x1e914'# -> unI64 125238-  '\x1e915'# -> unI64 125239-  '\x1e916'# -> unI64 125240-  '\x1e917'# -> unI64 125241-  '\x1e918'# -> unI64 125242-  '\x1e919'# -> unI64 125243-  '\x1e91a'# -> unI64 125244-  '\x1e91b'# -> unI64 125245-  '\x1e91c'# -> unI64 125246-  '\x1e91d'# -> unI64 125247-  '\x1e91e'# -> unI64 125248-  '\x1e91f'# -> unI64 125249-  '\x1e920'# -> unI64 125250+  -- LATIN CAPITAL LETTER A+  '\x0041'# -> unI64 97+  -- LATIN CAPITAL LETTER B+  '\x0042'# -> unI64 98+  -- LATIN CAPITAL LETTER C+  '\x0043'# -> unI64 99+  -- LATIN CAPITAL LETTER D+  '\x0044'# -> unI64 100+  -- LATIN CAPITAL LETTER E+  '\x0045'# -> unI64 101+  -- LATIN CAPITAL LETTER F+  '\x0046'# -> unI64 102+  -- LATIN CAPITAL LETTER G+  '\x0047'# -> unI64 103+  -- LATIN CAPITAL LETTER H+  '\x0048'# -> unI64 104+  -- LATIN CAPITAL LETTER I+  '\x0049'# -> unI64 105+  -- LATIN CAPITAL LETTER J+  '\x004a'# -> unI64 106+  -- LATIN CAPITAL LETTER K+  '\x004b'# -> unI64 107+  -- LATIN CAPITAL LETTER L+  '\x004c'# -> unI64 108+  -- LATIN CAPITAL LETTER M+  '\x004d'# -> unI64 109+  -- LATIN CAPITAL LETTER N+  '\x004e'# -> unI64 110+  -- LATIN CAPITAL LETTER O+  '\x004f'# -> unI64 111+  -- LATIN CAPITAL LETTER P+  '\x0050'# -> unI64 112+  -- LATIN CAPITAL LETTER Q+  '\x0051'# -> unI64 113+  -- LATIN CAPITAL LETTER R+  '\x0052'# -> unI64 114+  -- LATIN CAPITAL LETTER S+  '\x0053'# -> unI64 115+  -- LATIN CAPITAL LETTER T+  '\x0054'# -> unI64 116+  -- LATIN CAPITAL LETTER U+  '\x0055'# -> unI64 117+  -- LATIN CAPITAL LETTER V+  '\x0056'# -> unI64 118+  -- LATIN CAPITAL LETTER W+  '\x0057'# -> unI64 119+  -- LATIN CAPITAL LETTER X+  '\x0058'# -> unI64 120+  -- LATIN CAPITAL LETTER Y+  '\x0059'# -> unI64 121+  -- LATIN CAPITAL LETTER Z+  '\x005a'# -> unI64 122+  -- MICRO SIGN+  '\x00b5'# -> unI64 956+  -- LATIN CAPITAL LETTER A WITH GRAVE+  '\x00c0'# -> unI64 224+  -- LATIN CAPITAL LETTER A WITH ACUTE+  '\x00c1'# -> unI64 225+  -- LATIN CAPITAL LETTER A WITH CIRCUMFLEX+  '\x00c2'# -> unI64 226+  -- LATIN CAPITAL LETTER A WITH TILDE+  '\x00c3'# -> unI64 227+  -- LATIN CAPITAL LETTER A WITH DIAERESIS+  '\x00c4'# -> unI64 228+  -- LATIN CAPITAL LETTER A WITH RING ABOVE+  '\x00c5'# -> unI64 229+  -- LATIN CAPITAL LETTER AE+  '\x00c6'# -> unI64 230+  -- LATIN CAPITAL LETTER C WITH CEDILLA+  '\x00c7'# -> unI64 231+  -- LATIN CAPITAL LETTER E WITH GRAVE+  '\x00c8'# -> unI64 232+  -- LATIN CAPITAL LETTER E WITH ACUTE+  '\x00c9'# -> unI64 233+  -- LATIN CAPITAL LETTER E WITH CIRCUMFLEX+  '\x00ca'# -> unI64 234+  -- LATIN CAPITAL LETTER E WITH DIAERESIS+  '\x00cb'# -> unI64 235+  -- LATIN CAPITAL LETTER I WITH GRAVE+  '\x00cc'# -> unI64 236+  -- LATIN CAPITAL LETTER I WITH ACUTE+  '\x00cd'# -> unI64 237+  -- LATIN CAPITAL LETTER I WITH CIRCUMFLEX+  '\x00ce'# -> unI64 238+  -- LATIN CAPITAL LETTER I WITH DIAERESIS+  '\x00cf'# -> unI64 239+  -- LATIN CAPITAL LETTER ETH+  '\x00d0'# -> unI64 240+  -- LATIN CAPITAL LETTER N WITH TILDE+  '\x00d1'# -> unI64 241+  -- LATIN CAPITAL LETTER O WITH GRAVE+  '\x00d2'# -> unI64 242+  -- LATIN CAPITAL LETTER O WITH ACUTE+  '\x00d3'# -> unI64 243+  -- LATIN CAPITAL LETTER O WITH CIRCUMFLEX+  '\x00d4'# -> unI64 244+  -- LATIN CAPITAL LETTER O WITH TILDE+  '\x00d5'# -> unI64 245+  -- LATIN CAPITAL LETTER O WITH DIAERESIS+  '\x00d6'# -> unI64 246+  -- LATIN CAPITAL LETTER O WITH STROKE+  '\x00d8'# -> unI64 248+  -- LATIN CAPITAL LETTER U WITH GRAVE+  '\x00d9'# -> unI64 249+  -- LATIN CAPITAL LETTER U WITH ACUTE+  '\x00da'# -> unI64 250+  -- LATIN CAPITAL LETTER U WITH CIRCUMFLEX+  '\x00db'# -> unI64 251+  -- LATIN CAPITAL LETTER U WITH DIAERESIS+  '\x00dc'# -> unI64 252+  -- LATIN CAPITAL LETTER Y WITH ACUTE+  '\x00dd'# -> unI64 253+  -- LATIN CAPITAL LETTER THORN+  '\x00de'# -> unI64 254+  -- LATIN SMALL LETTER SHARP S+  '\x00df'# -> unI64 241172595+  -- LATIN CAPITAL LETTER A WITH MACRON+  '\x0100'# -> unI64 257+  -- LATIN CAPITAL LETTER A WITH BREVE+  '\x0102'# -> unI64 259+  -- LATIN CAPITAL LETTER A WITH OGONEK+  '\x0104'# -> unI64 261+  -- LATIN CAPITAL LETTER C WITH ACUTE+  '\x0106'# -> unI64 263+  -- LATIN CAPITAL LETTER C WITH CIRCUMFLEX+  '\x0108'# -> unI64 265+  -- LATIN CAPITAL LETTER C WITH DOT ABOVE+  '\x010a'# -> unI64 267+  -- LATIN CAPITAL LETTER C WITH CARON+  '\x010c'# -> unI64 269+  -- LATIN CAPITAL LETTER D WITH CARON+  '\x010e'# -> unI64 271+  -- LATIN CAPITAL LETTER D WITH STROKE+  '\x0110'# -> unI64 273+  -- LATIN CAPITAL LETTER E WITH MACRON+  '\x0112'# -> unI64 275+  -- LATIN CAPITAL LETTER E WITH BREVE+  '\x0114'# -> unI64 277+  -- LATIN CAPITAL LETTER E WITH DOT ABOVE+  '\x0116'# -> unI64 279+  -- LATIN CAPITAL LETTER E WITH OGONEK+  '\x0118'# -> unI64 281+  -- LATIN CAPITAL LETTER E WITH CARON+  '\x011a'# -> unI64 283+  -- LATIN CAPITAL LETTER G WITH CIRCUMFLEX+  '\x011c'# -> unI64 285+  -- LATIN CAPITAL LETTER G WITH BREVE+  '\x011e'# -> unI64 287+  -- LATIN CAPITAL LETTER G WITH DOT ABOVE+  '\x0120'# -> unI64 289+  -- LATIN CAPITAL LETTER G WITH CEDILLA+  '\x0122'# -> unI64 291+  -- LATIN CAPITAL LETTER H WITH CIRCUMFLEX+  '\x0124'# -> unI64 293+  -- LATIN CAPITAL LETTER H WITH STROKE+  '\x0126'# -> unI64 295+  -- LATIN CAPITAL LETTER I WITH TILDE+  '\x0128'# -> unI64 297+  -- LATIN CAPITAL LETTER I WITH MACRON+  '\x012a'# -> unI64 299+  -- LATIN CAPITAL LETTER I WITH BREVE+  '\x012c'# -> unI64 301+  -- LATIN CAPITAL LETTER I WITH OGONEK+  '\x012e'# -> unI64 303+  -- LATIN CAPITAL LETTER I WITH DOT ABOVE+  '\x0130'# -> unI64 1625292905+  -- LATIN CAPITAL LIGATURE IJ+  '\x0132'# -> unI64 307+  -- LATIN CAPITAL LETTER J WITH CIRCUMFLEX+  '\x0134'# -> unI64 309+  -- LATIN CAPITAL LETTER K WITH CEDILLA+  '\x0136'# -> unI64 311+  -- LATIN CAPITAL LETTER L WITH ACUTE+  '\x0139'# -> unI64 314+  -- LATIN CAPITAL LETTER L WITH CEDILLA+  '\x013b'# -> unI64 316+  -- LATIN CAPITAL LETTER L WITH CARON+  '\x013d'# -> unI64 318+  -- LATIN CAPITAL LETTER L WITH MIDDLE DOT+  '\x013f'# -> unI64 320+  -- LATIN CAPITAL LETTER L WITH STROKE+  '\x0141'# -> unI64 322+  -- LATIN CAPITAL LETTER N WITH ACUTE+  '\x0143'# -> unI64 324+  -- LATIN CAPITAL LETTER N WITH CEDILLA+  '\x0145'# -> unI64 326+  -- LATIN CAPITAL LETTER N WITH CARON+  '\x0147'# -> unI64 328+  -- LATIN SMALL LETTER N PRECEDED BY APOSTROPHE+  '\x0149'# -> unI64 230687420+  -- LATIN CAPITAL LETTER ENG+  '\x014a'# -> unI64 331+  -- LATIN CAPITAL LETTER O WITH MACRON+  '\x014c'# -> unI64 333+  -- LATIN CAPITAL LETTER O WITH BREVE+  '\x014e'# -> unI64 335+  -- LATIN CAPITAL LETTER O WITH DOUBLE ACUTE+  '\x0150'# -> unI64 337+  -- LATIN CAPITAL LIGATURE OE+  '\x0152'# -> unI64 339+  -- LATIN CAPITAL LETTER R WITH ACUTE+  '\x0154'# -> unI64 341+  -- LATIN CAPITAL LETTER R WITH CEDILLA+  '\x0156'# -> unI64 343+  -- LATIN CAPITAL LETTER R WITH CARON+  '\x0158'# -> unI64 345+  -- LATIN CAPITAL LETTER S WITH ACUTE+  '\x015a'# -> unI64 347+  -- LATIN CAPITAL LETTER S WITH CIRCUMFLEX+  '\x015c'# -> unI64 349+  -- LATIN CAPITAL LETTER S WITH CEDILLA+  '\x015e'# -> unI64 351+  -- LATIN CAPITAL LETTER S WITH CARON+  '\x0160'# -> unI64 353+  -- LATIN CAPITAL LETTER T WITH CEDILLA+  '\x0162'# -> unI64 355+  -- LATIN CAPITAL LETTER T WITH CARON+  '\x0164'# -> unI64 357+  -- LATIN CAPITAL LETTER T WITH STROKE+  '\x0166'# -> unI64 359+  -- LATIN CAPITAL LETTER U WITH TILDE+  '\x0168'# -> unI64 361+  -- LATIN CAPITAL LETTER U WITH MACRON+  '\x016a'# -> unI64 363+  -- LATIN CAPITAL LETTER U WITH BREVE+  '\x016c'# -> unI64 365+  -- LATIN CAPITAL LETTER U WITH RING ABOVE+  '\x016e'# -> unI64 367+  -- LATIN CAPITAL LETTER U WITH DOUBLE ACUTE+  '\x0170'# -> unI64 369+  -- LATIN CAPITAL LETTER U WITH OGONEK+  '\x0172'# -> unI64 371+  -- LATIN CAPITAL LETTER W WITH CIRCUMFLEX+  '\x0174'# -> unI64 373+  -- LATIN CAPITAL LETTER Y WITH CIRCUMFLEX+  '\x0176'# -> unI64 375+  -- LATIN CAPITAL LETTER Y WITH DIAERESIS+  '\x0178'# -> unI64 255+  -- LATIN CAPITAL LETTER Z WITH ACUTE+  '\x0179'# -> unI64 378+  -- LATIN CAPITAL LETTER Z WITH DOT ABOVE+  '\x017b'# -> unI64 380+  -- LATIN CAPITAL LETTER Z WITH CARON+  '\x017d'# -> unI64 382+  -- LATIN SMALL LETTER LONG S+  '\x017f'# -> unI64 115+  -- LATIN CAPITAL LETTER B WITH HOOK+  '\x0181'# -> unI64 595+  -- LATIN CAPITAL LETTER B WITH TOPBAR+  '\x0182'# -> unI64 387+  -- LATIN CAPITAL LETTER TONE SIX+  '\x0184'# -> unI64 389+  -- LATIN CAPITAL LETTER OPEN O+  '\x0186'# -> unI64 596+  -- LATIN CAPITAL LETTER C WITH HOOK+  '\x0187'# -> unI64 392+  -- LATIN CAPITAL LETTER AFRICAN D+  '\x0189'# -> unI64 598+  -- LATIN CAPITAL LETTER D WITH HOOK+  '\x018a'# -> unI64 599+  -- LATIN CAPITAL LETTER D WITH TOPBAR+  '\x018b'# -> unI64 396+  -- LATIN CAPITAL LETTER REVERSED E+  '\x018e'# -> unI64 477+  -- LATIN CAPITAL LETTER SCHWA+  '\x018f'# -> unI64 601+  -- LATIN CAPITAL LETTER OPEN E+  '\x0190'# -> unI64 603+  -- LATIN CAPITAL LETTER F WITH HOOK+  '\x0191'# -> unI64 402+  -- LATIN CAPITAL LETTER G WITH HOOK+  '\x0193'# -> unI64 608+  -- LATIN CAPITAL LETTER GAMMA+  '\x0194'# -> unI64 611+  -- LATIN CAPITAL LETTER IOTA+  '\x0196'# -> unI64 617+  -- LATIN CAPITAL LETTER I WITH STROKE+  '\x0197'# -> unI64 616+  -- LATIN CAPITAL LETTER K WITH HOOK+  '\x0198'# -> unI64 409+  -- LATIN CAPITAL LETTER TURNED M+  '\x019c'# -> unI64 623+  -- LATIN CAPITAL LETTER N WITH LEFT HOOK+  '\x019d'# -> unI64 626+  -- LATIN CAPITAL LETTER O WITH MIDDLE TILDE+  '\x019f'# -> unI64 629+  -- LATIN CAPITAL LETTER O WITH HORN+  '\x01a0'# -> unI64 417+  -- LATIN CAPITAL LETTER OI+  '\x01a2'# -> unI64 419+  -- LATIN CAPITAL LETTER P WITH HOOK+  '\x01a4'# -> unI64 421+  -- LATIN LETTER YR+  '\x01a6'# -> unI64 640+  -- LATIN CAPITAL LETTER TONE TWO+  '\x01a7'# -> unI64 424+  -- LATIN CAPITAL LETTER ESH+  '\x01a9'# -> unI64 643+  -- LATIN CAPITAL LETTER T WITH HOOK+  '\x01ac'# -> unI64 429+  -- LATIN CAPITAL LETTER T WITH RETROFLEX HOOK+  '\x01ae'# -> unI64 648+  -- LATIN CAPITAL LETTER U WITH HORN+  '\x01af'# -> unI64 432+  -- LATIN CAPITAL LETTER UPSILON+  '\x01b1'# -> unI64 650+  -- LATIN CAPITAL LETTER V WITH HOOK+  '\x01b2'# -> unI64 651+  -- LATIN CAPITAL LETTER Y WITH HOOK+  '\x01b3'# -> unI64 436+  -- LATIN CAPITAL LETTER Z WITH STROKE+  '\x01b5'# -> unI64 438+  -- LATIN CAPITAL LETTER EZH+  '\x01b7'# -> unI64 658+  -- LATIN CAPITAL LETTER EZH REVERSED+  '\x01b8'# -> unI64 441+  -- LATIN CAPITAL LETTER TONE FIVE+  '\x01bc'# -> unI64 445+  -- LATIN CAPITAL LETTER DZ WITH CARON+  '\x01c4'# -> unI64 454+  -- LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON+  '\x01c5'# -> unI64 454+  -- LATIN CAPITAL LETTER LJ+  '\x01c7'# -> unI64 457+  -- LATIN CAPITAL LETTER L WITH SMALL LETTER J+  '\x01c8'# -> unI64 457+  -- LATIN CAPITAL LETTER NJ+  '\x01ca'# -> unI64 460+  -- LATIN CAPITAL LETTER N WITH SMALL LETTER J+  '\x01cb'# -> unI64 460+  -- LATIN CAPITAL LETTER A WITH CARON+  '\x01cd'# -> unI64 462+  -- LATIN CAPITAL LETTER I WITH CARON+  '\x01cf'# -> unI64 464+  -- LATIN CAPITAL LETTER O WITH CARON+  '\x01d1'# -> unI64 466+  -- LATIN CAPITAL LETTER U WITH CARON+  '\x01d3'# -> unI64 468+  -- LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON+  '\x01d5'# -> unI64 470+  -- LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE+  '\x01d7'# -> unI64 472+  -- LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON+  '\x01d9'# -> unI64 474+  -- LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE+  '\x01db'# -> unI64 476+  -- LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON+  '\x01de'# -> unI64 479+  -- LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON+  '\x01e0'# -> unI64 481+  -- LATIN CAPITAL LETTER AE WITH MACRON+  '\x01e2'# -> unI64 483+  -- LATIN CAPITAL LETTER G WITH STROKE+  '\x01e4'# -> unI64 485+  -- LATIN CAPITAL LETTER G WITH CARON+  '\x01e6'# -> unI64 487+  -- LATIN CAPITAL LETTER K WITH CARON+  '\x01e8'# -> unI64 489+  -- LATIN CAPITAL LETTER O WITH OGONEK+  '\x01ea'# -> unI64 491+  -- LATIN CAPITAL LETTER O WITH OGONEK AND MACRON+  '\x01ec'# -> unI64 493+  -- LATIN CAPITAL LETTER EZH WITH CARON+  '\x01ee'# -> unI64 495+  -- LATIN SMALL LETTER J WITH CARON+  '\x01f0'# -> unI64 1635778666+  -- LATIN CAPITAL LETTER DZ+  '\x01f1'# -> unI64 499+  -- LATIN CAPITAL LETTER D WITH SMALL LETTER Z+  '\x01f2'# -> unI64 499+  -- LATIN CAPITAL LETTER G WITH ACUTE+  '\x01f4'# -> unI64 501+  -- LATIN CAPITAL LETTER HWAIR+  '\x01f6'# -> unI64 405+  -- LATIN CAPITAL LETTER WYNN+  '\x01f7'# -> unI64 447+  -- LATIN CAPITAL LETTER N WITH GRAVE+  '\x01f8'# -> unI64 505+  -- LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE+  '\x01fa'# -> unI64 507+  -- LATIN CAPITAL LETTER AE WITH ACUTE+  '\x01fc'# -> unI64 509+  -- LATIN CAPITAL LETTER O WITH STROKE AND ACUTE+  '\x01fe'# -> unI64 511+  -- LATIN CAPITAL LETTER A WITH DOUBLE GRAVE+  '\x0200'# -> unI64 513+  -- LATIN CAPITAL LETTER A WITH INVERTED BREVE+  '\x0202'# -> unI64 515+  -- LATIN CAPITAL LETTER E WITH DOUBLE GRAVE+  '\x0204'# -> unI64 517+  -- LATIN CAPITAL LETTER E WITH INVERTED BREVE+  '\x0206'# -> unI64 519+  -- LATIN CAPITAL LETTER I WITH DOUBLE GRAVE+  '\x0208'# -> unI64 521+  -- LATIN CAPITAL LETTER I WITH INVERTED BREVE+  '\x020a'# -> unI64 523+  -- LATIN CAPITAL LETTER O WITH DOUBLE GRAVE+  '\x020c'# -> unI64 525+  -- LATIN CAPITAL LETTER O WITH INVERTED BREVE+  '\x020e'# -> unI64 527+  -- LATIN CAPITAL LETTER R WITH DOUBLE GRAVE+  '\x0210'# -> unI64 529+  -- LATIN CAPITAL LETTER R WITH INVERTED BREVE+  '\x0212'# -> unI64 531+  -- LATIN CAPITAL LETTER U WITH DOUBLE GRAVE+  '\x0214'# -> unI64 533+  -- LATIN CAPITAL LETTER U WITH INVERTED BREVE+  '\x0216'# -> unI64 535+  -- LATIN CAPITAL LETTER S WITH COMMA BELOW+  '\x0218'# -> unI64 537+  -- LATIN CAPITAL LETTER T WITH COMMA BELOW+  '\x021a'# -> unI64 539+  -- LATIN CAPITAL LETTER YOGH+  '\x021c'# -> unI64 541+  -- LATIN CAPITAL LETTER H WITH CARON+  '\x021e'# -> unI64 543+  -- LATIN CAPITAL LETTER N WITH LONG RIGHT LEG+  '\x0220'# -> unI64 414+  -- LATIN CAPITAL LETTER OU+  '\x0222'# -> unI64 547+  -- LATIN CAPITAL LETTER Z WITH HOOK+  '\x0224'# -> unI64 549+  -- LATIN CAPITAL LETTER A WITH DOT ABOVE+  '\x0226'# -> unI64 551+  -- LATIN CAPITAL LETTER E WITH CEDILLA+  '\x0228'# -> unI64 553+  -- LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON+  '\x022a'# -> unI64 555+  -- LATIN CAPITAL LETTER O WITH TILDE AND MACRON+  '\x022c'# -> unI64 557+  -- LATIN CAPITAL LETTER O WITH DOT ABOVE+  '\x022e'# -> unI64 559+  -- LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON+  '\x0230'# -> unI64 561+  -- LATIN CAPITAL LETTER Y WITH MACRON+  '\x0232'# -> unI64 563+  -- LATIN CAPITAL LETTER A WITH STROKE+  '\x023a'# -> unI64 11365+  -- LATIN CAPITAL LETTER C WITH STROKE+  '\x023b'# -> unI64 572+  -- LATIN CAPITAL LETTER L WITH BAR+  '\x023d'# -> unI64 410+  -- LATIN CAPITAL LETTER T WITH DIAGONAL STROKE+  '\x023e'# -> unI64 11366+  -- LATIN CAPITAL LETTER GLOTTAL STOP+  '\x0241'# -> unI64 578+  -- LATIN CAPITAL LETTER B WITH STROKE+  '\x0243'# -> unI64 384+  -- LATIN CAPITAL LETTER U BAR+  '\x0244'# -> unI64 649+  -- LATIN CAPITAL LETTER TURNED V+  '\x0245'# -> unI64 652+  -- LATIN CAPITAL LETTER E WITH STROKE+  '\x0246'# -> unI64 583+  -- LATIN CAPITAL LETTER J WITH STROKE+  '\x0248'# -> unI64 585+  -- LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL+  '\x024a'# -> unI64 587+  -- LATIN CAPITAL LETTER R WITH STROKE+  '\x024c'# -> unI64 589+  -- LATIN CAPITAL LETTER Y WITH STROKE+  '\x024e'# -> unI64 591+  -- COMBINING GREEK YPOGEGRAMMENI+  '\x0345'# -> unI64 953+  -- GREEK CAPITAL LETTER HETA+  '\x0370'# -> unI64 881+  -- GREEK CAPITAL LETTER ARCHAIC SAMPI+  '\x0372'# -> unI64 883+  -- GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA+  '\x0376'# -> unI64 887+  -- GREEK CAPITAL LETTER YOT+  '\x037f'# -> unI64 1011+  -- GREEK CAPITAL LETTER ALPHA WITH TONOS+  '\x0386'# -> unI64 940+  -- GREEK CAPITAL LETTER EPSILON WITH TONOS+  '\x0388'# -> unI64 941+  -- GREEK CAPITAL LETTER ETA WITH TONOS+  '\x0389'# -> unI64 942+  -- GREEK CAPITAL LETTER IOTA WITH TONOS+  '\x038a'# -> unI64 943+  -- GREEK CAPITAL LETTER OMICRON WITH TONOS+  '\x038c'# -> unI64 972+  -- GREEK CAPITAL LETTER UPSILON WITH TONOS+  '\x038e'# -> unI64 973+  -- GREEK CAPITAL LETTER OMEGA WITH TONOS+  '\x038f'# -> unI64 974+  -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS+  '\x0390'# -> unI64 3382099394429881+  -- GREEK CAPITAL LETTER ALPHA+  '\x0391'# -> unI64 945+  -- GREEK CAPITAL LETTER BETA+  '\x0392'# -> unI64 946+  -- GREEK CAPITAL LETTER GAMMA+  '\x0393'# -> unI64 947+  -- GREEK CAPITAL LETTER DELTA+  '\x0394'# -> unI64 948+  -- GREEK CAPITAL LETTER EPSILON+  '\x0395'# -> unI64 949+  -- GREEK CAPITAL LETTER ZETA+  '\x0396'# -> unI64 950+  -- GREEK CAPITAL LETTER ETA+  '\x0397'# -> unI64 951+  -- GREEK CAPITAL LETTER THETA+  '\x0398'# -> unI64 952+  -- GREEK CAPITAL LETTER IOTA+  '\x0399'# -> unI64 953+  -- GREEK CAPITAL LETTER KAPPA+  '\x039a'# -> unI64 954+  -- GREEK CAPITAL LETTER LAMDA+  '\x039b'# -> unI64 955+  -- GREEK CAPITAL LETTER MU+  '\x039c'# -> unI64 956+  -- GREEK CAPITAL LETTER NU+  '\x039d'# -> unI64 957+  -- GREEK CAPITAL LETTER XI+  '\x039e'# -> unI64 958+  -- GREEK CAPITAL LETTER OMICRON+  '\x039f'# -> unI64 959+  -- GREEK CAPITAL LETTER PI+  '\x03a0'# -> unI64 960+  -- GREEK CAPITAL LETTER RHO+  '\x03a1'# -> unI64 961+  -- GREEK CAPITAL LETTER SIGMA+  '\x03a3'# -> unI64 963+  -- GREEK CAPITAL LETTER TAU+  '\x03a4'# -> unI64 964+  -- GREEK CAPITAL LETTER UPSILON+  '\x03a5'# -> unI64 965+  -- GREEK CAPITAL LETTER PHI+  '\x03a6'# -> unI64 966+  -- GREEK CAPITAL LETTER CHI+  '\x03a7'# -> unI64 967+  -- GREEK CAPITAL LETTER PSI+  '\x03a8'# -> unI64 968+  -- GREEK CAPITAL LETTER OMEGA+  '\x03a9'# -> unI64 969+  -- GREEK CAPITAL LETTER IOTA WITH DIALYTIKA+  '\x03aa'# -> unI64 970+  -- GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA+  '\x03ab'# -> unI64 971+  -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS+  '\x03b0'# -> unI64 3382099394429893+  -- GREEK SMALL LETTER FINAL SIGMA+  '\x03c2'# -> unI64 963+  -- GREEK CAPITAL KAI SYMBOL+  '\x03cf'# -> unI64 983+  -- GREEK BETA SYMBOL+  '\x03d0'# -> unI64 946+  -- GREEK THETA SYMBOL+  '\x03d1'# -> unI64 952+  -- GREEK PHI SYMBOL+  '\x03d5'# -> unI64 966+  -- GREEK PI SYMBOL+  '\x03d6'# -> unI64 960+  -- GREEK LETTER ARCHAIC KOPPA+  '\x03d8'# -> unI64 985+  -- GREEK LETTER STIGMA+  '\x03da'# -> unI64 987+  -- GREEK LETTER DIGAMMA+  '\x03dc'# -> unI64 989+  -- GREEK LETTER KOPPA+  '\x03de'# -> unI64 991+  -- GREEK LETTER SAMPI+  '\x03e0'# -> unI64 993+  -- COPTIC CAPITAL LETTER SHEI+  '\x03e2'# -> unI64 995+  -- COPTIC CAPITAL LETTER FEI+  '\x03e4'# -> unI64 997+  -- COPTIC CAPITAL LETTER KHEI+  '\x03e6'# -> unI64 999+  -- COPTIC CAPITAL LETTER HORI+  '\x03e8'# -> unI64 1001+  -- COPTIC CAPITAL LETTER GANGIA+  '\x03ea'# -> unI64 1003+  -- COPTIC CAPITAL LETTER SHIMA+  '\x03ec'# -> unI64 1005+  -- COPTIC CAPITAL LETTER DEI+  '\x03ee'# -> unI64 1007+  -- GREEK KAPPA SYMBOL+  '\x03f0'# -> unI64 954+  -- GREEK RHO SYMBOL+  '\x03f1'# -> unI64 961+  -- GREEK CAPITAL THETA SYMBOL+  '\x03f4'# -> unI64 952+  -- GREEK LUNATE EPSILON SYMBOL+  '\x03f5'# -> unI64 949+  -- GREEK CAPITAL LETTER SHO+  '\x03f7'# -> unI64 1016+  -- GREEK CAPITAL LUNATE SIGMA SYMBOL+  '\x03f9'# -> unI64 1010+  -- GREEK CAPITAL LETTER SAN+  '\x03fa'# -> unI64 1019+  -- GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL+  '\x03fd'# -> unI64 891+  -- GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL+  '\x03fe'# -> unI64 892+  -- GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL+  '\x03ff'# -> unI64 893+  -- CYRILLIC CAPITAL LETTER IE WITH GRAVE+  '\x0400'# -> unI64 1104+  -- CYRILLIC CAPITAL LETTER IO+  '\x0401'# -> unI64 1105+  -- CYRILLIC CAPITAL LETTER DJE+  '\x0402'# -> unI64 1106+  -- CYRILLIC CAPITAL LETTER GJE+  '\x0403'# -> unI64 1107+  -- CYRILLIC CAPITAL LETTER UKRAINIAN IE+  '\x0404'# -> unI64 1108+  -- CYRILLIC CAPITAL LETTER DZE+  '\x0405'# -> unI64 1109+  -- CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I+  '\x0406'# -> unI64 1110+  -- CYRILLIC CAPITAL LETTER YI+  '\x0407'# -> unI64 1111+  -- CYRILLIC CAPITAL LETTER JE+  '\x0408'# -> unI64 1112+  -- CYRILLIC CAPITAL LETTER LJE+  '\x0409'# -> unI64 1113+  -- CYRILLIC CAPITAL LETTER NJE+  '\x040a'# -> unI64 1114+  -- CYRILLIC CAPITAL LETTER TSHE+  '\x040b'# -> unI64 1115+  -- CYRILLIC CAPITAL LETTER KJE+  '\x040c'# -> unI64 1116+  -- CYRILLIC CAPITAL LETTER I WITH GRAVE+  '\x040d'# -> unI64 1117+  -- CYRILLIC CAPITAL LETTER SHORT U+  '\x040e'# -> unI64 1118+  -- CYRILLIC CAPITAL LETTER DZHE+  '\x040f'# -> unI64 1119+  -- CYRILLIC CAPITAL LETTER A+  '\x0410'# -> unI64 1072+  -- CYRILLIC CAPITAL LETTER BE+  '\x0411'# -> unI64 1073+  -- CYRILLIC CAPITAL LETTER VE+  '\x0412'# -> unI64 1074+  -- CYRILLIC CAPITAL LETTER GHE+  '\x0413'# -> unI64 1075+  -- CYRILLIC CAPITAL LETTER DE+  '\x0414'# -> unI64 1076+  -- CYRILLIC CAPITAL LETTER IE+  '\x0415'# -> unI64 1077+  -- CYRILLIC CAPITAL LETTER ZHE+  '\x0416'# -> unI64 1078+  -- CYRILLIC CAPITAL LETTER ZE+  '\x0417'# -> unI64 1079+  -- CYRILLIC CAPITAL LETTER I+  '\x0418'# -> unI64 1080+  -- CYRILLIC CAPITAL LETTER SHORT I+  '\x0419'# -> unI64 1081+  -- CYRILLIC CAPITAL LETTER KA+  '\x041a'# -> unI64 1082+  -- CYRILLIC CAPITAL LETTER EL+  '\x041b'# -> unI64 1083+  -- CYRILLIC CAPITAL LETTER EM+  '\x041c'# -> unI64 1084+  -- CYRILLIC CAPITAL LETTER EN+  '\x041d'# -> unI64 1085+  -- CYRILLIC CAPITAL LETTER O+  '\x041e'# -> unI64 1086+  -- CYRILLIC CAPITAL LETTER PE+  '\x041f'# -> unI64 1087+  -- CYRILLIC CAPITAL LETTER ER+  '\x0420'# -> unI64 1088+  -- CYRILLIC CAPITAL LETTER ES+  '\x0421'# -> unI64 1089+  -- CYRILLIC CAPITAL LETTER TE+  '\x0422'# -> unI64 1090+  -- CYRILLIC CAPITAL LETTER U+  '\x0423'# -> unI64 1091+  -- CYRILLIC CAPITAL LETTER EF+  '\x0424'# -> unI64 1092+  -- CYRILLIC CAPITAL LETTER HA+  '\x0425'# -> unI64 1093+  -- CYRILLIC CAPITAL LETTER TSE+  '\x0426'# -> unI64 1094+  -- CYRILLIC CAPITAL LETTER CHE+  '\x0427'# -> unI64 1095+  -- CYRILLIC CAPITAL LETTER SHA+  '\x0428'# -> unI64 1096+  -- CYRILLIC CAPITAL LETTER SHCHA+  '\x0429'# -> unI64 1097+  -- CYRILLIC CAPITAL LETTER HARD SIGN+  '\x042a'# -> unI64 1098+  -- CYRILLIC CAPITAL LETTER YERU+  '\x042b'# -> unI64 1099+  -- CYRILLIC CAPITAL LETTER SOFT SIGN+  '\x042c'# -> unI64 1100+  -- CYRILLIC CAPITAL LETTER E+  '\x042d'# -> unI64 1101+  -- CYRILLIC CAPITAL LETTER YU+  '\x042e'# -> unI64 1102+  -- CYRILLIC CAPITAL LETTER YA+  '\x042f'# -> unI64 1103+  -- CYRILLIC CAPITAL LETTER OMEGA+  '\x0460'# -> unI64 1121+  -- CYRILLIC CAPITAL LETTER YAT+  '\x0462'# -> unI64 1123+  -- CYRILLIC CAPITAL LETTER IOTIFIED E+  '\x0464'# -> unI64 1125+  -- CYRILLIC CAPITAL LETTER LITTLE YUS+  '\x0466'# -> unI64 1127+  -- CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS+  '\x0468'# -> unI64 1129+  -- CYRILLIC CAPITAL LETTER BIG YUS+  '\x046a'# -> unI64 1131+  -- CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS+  '\x046c'# -> unI64 1133+  -- CYRILLIC CAPITAL LETTER KSI+  '\x046e'# -> unI64 1135+  -- CYRILLIC CAPITAL LETTER PSI+  '\x0470'# -> unI64 1137+  -- CYRILLIC CAPITAL LETTER FITA+  '\x0472'# -> unI64 1139+  -- CYRILLIC CAPITAL LETTER IZHITSA+  '\x0474'# -> unI64 1141+  -- CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT+  '\x0476'# -> unI64 1143+  -- CYRILLIC CAPITAL LETTER UK+  '\x0478'# -> unI64 1145+  -- CYRILLIC CAPITAL LETTER ROUND OMEGA+  '\x047a'# -> unI64 1147+  -- CYRILLIC CAPITAL LETTER OMEGA WITH TITLO+  '\x047c'# -> unI64 1149+  -- CYRILLIC CAPITAL LETTER OT+  '\x047e'# -> unI64 1151+  -- CYRILLIC CAPITAL LETTER KOPPA+  '\x0480'# -> unI64 1153+  -- CYRILLIC CAPITAL LETTER SHORT I WITH TAIL+  '\x048a'# -> unI64 1163+  -- CYRILLIC CAPITAL LETTER SEMISOFT SIGN+  '\x048c'# -> unI64 1165+  -- CYRILLIC CAPITAL LETTER ER WITH TICK+  '\x048e'# -> unI64 1167+  -- CYRILLIC CAPITAL LETTER GHE WITH UPTURN+  '\x0490'# -> unI64 1169+  -- CYRILLIC CAPITAL LETTER GHE WITH STROKE+  '\x0492'# -> unI64 1171+  -- CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK+  '\x0494'# -> unI64 1173+  -- CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER+  '\x0496'# -> unI64 1175+  -- CYRILLIC CAPITAL LETTER ZE WITH DESCENDER+  '\x0498'# -> unI64 1177+  -- CYRILLIC CAPITAL LETTER KA WITH DESCENDER+  '\x049a'# -> unI64 1179+  -- CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE+  '\x049c'# -> unI64 1181+  -- CYRILLIC CAPITAL LETTER KA WITH STROKE+  '\x049e'# -> unI64 1183+  -- CYRILLIC CAPITAL LETTER BASHKIR KA+  '\x04a0'# -> unI64 1185+  -- CYRILLIC CAPITAL LETTER EN WITH DESCENDER+  '\x04a2'# -> unI64 1187+  -- CYRILLIC CAPITAL LIGATURE EN GHE+  '\x04a4'# -> unI64 1189+  -- CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK+  '\x04a6'# -> unI64 1191+  -- CYRILLIC CAPITAL LETTER ABKHASIAN HA+  '\x04a8'# -> unI64 1193+  -- CYRILLIC CAPITAL LETTER ES WITH DESCENDER+  '\x04aa'# -> unI64 1195+  -- CYRILLIC CAPITAL LETTER TE WITH DESCENDER+  '\x04ac'# -> unI64 1197+  -- CYRILLIC CAPITAL LETTER STRAIGHT U+  '\x04ae'# -> unI64 1199+  -- CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE+  '\x04b0'# -> unI64 1201+  -- CYRILLIC CAPITAL LETTER HA WITH DESCENDER+  '\x04b2'# -> unI64 1203+  -- CYRILLIC CAPITAL LIGATURE TE TSE+  '\x04b4'# -> unI64 1205+  -- CYRILLIC CAPITAL LETTER CHE WITH DESCENDER+  '\x04b6'# -> unI64 1207+  -- CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE+  '\x04b8'# -> unI64 1209+  -- CYRILLIC CAPITAL LETTER SHHA+  '\x04ba'# -> unI64 1211+  -- CYRILLIC CAPITAL LETTER ABKHASIAN CHE+  '\x04bc'# -> unI64 1213+  -- CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER+  '\x04be'# -> unI64 1215+  -- CYRILLIC LETTER PALOCHKA+  '\x04c0'# -> unI64 1231+  -- CYRILLIC CAPITAL LETTER ZHE WITH BREVE+  '\x04c1'# -> unI64 1218+  -- CYRILLIC CAPITAL LETTER KA WITH HOOK+  '\x04c3'# -> unI64 1220+  -- CYRILLIC CAPITAL LETTER EL WITH TAIL+  '\x04c5'# -> unI64 1222+  -- CYRILLIC CAPITAL LETTER EN WITH HOOK+  '\x04c7'# -> unI64 1224+  -- CYRILLIC CAPITAL LETTER EN WITH TAIL+  '\x04c9'# -> unI64 1226+  -- CYRILLIC CAPITAL LETTER KHAKASSIAN CHE+  '\x04cb'# -> unI64 1228+  -- CYRILLIC CAPITAL LETTER EM WITH TAIL+  '\x04cd'# -> unI64 1230+  -- CYRILLIC CAPITAL LETTER A WITH BREVE+  '\x04d0'# -> unI64 1233+  -- CYRILLIC CAPITAL LETTER A WITH DIAERESIS+  '\x04d2'# -> unI64 1235+  -- CYRILLIC CAPITAL LIGATURE A IE+  '\x04d4'# -> unI64 1237+  -- CYRILLIC CAPITAL LETTER IE WITH BREVE+  '\x04d6'# -> unI64 1239+  -- CYRILLIC CAPITAL LETTER SCHWA+  '\x04d8'# -> unI64 1241+  -- CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS+  '\x04da'# -> unI64 1243+  -- CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS+  '\x04dc'# -> unI64 1245+  -- CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS+  '\x04de'# -> unI64 1247+  -- CYRILLIC CAPITAL LETTER ABKHASIAN DZE+  '\x04e0'# -> unI64 1249+  -- CYRILLIC CAPITAL LETTER I WITH MACRON+  '\x04e2'# -> unI64 1251+  -- CYRILLIC CAPITAL LETTER I WITH DIAERESIS+  '\x04e4'# -> unI64 1253+  -- CYRILLIC CAPITAL LETTER O WITH DIAERESIS+  '\x04e6'# -> unI64 1255+  -- CYRILLIC CAPITAL LETTER BARRED O+  '\x04e8'# -> unI64 1257+  -- CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS+  '\x04ea'# -> unI64 1259+  -- CYRILLIC CAPITAL LETTER E WITH DIAERESIS+  '\x04ec'# -> unI64 1261+  -- CYRILLIC CAPITAL LETTER U WITH MACRON+  '\x04ee'# -> unI64 1263+  -- CYRILLIC CAPITAL LETTER U WITH DIAERESIS+  '\x04f0'# -> unI64 1265+  -- CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE+  '\x04f2'# -> unI64 1267+  -- CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS+  '\x04f4'# -> unI64 1269+  -- CYRILLIC CAPITAL LETTER GHE WITH DESCENDER+  '\x04f6'# -> unI64 1271+  -- CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS+  '\x04f8'# -> unI64 1273+  -- CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK+  '\x04fa'# -> unI64 1275+  -- CYRILLIC CAPITAL LETTER HA WITH HOOK+  '\x04fc'# -> unI64 1277+  -- CYRILLIC CAPITAL LETTER HA WITH STROKE+  '\x04fe'# -> unI64 1279+  -- CYRILLIC CAPITAL LETTER KOMI DE+  '\x0500'# -> unI64 1281+  -- CYRILLIC CAPITAL LETTER KOMI DJE+  '\x0502'# -> unI64 1283+  -- CYRILLIC CAPITAL LETTER KOMI ZJE+  '\x0504'# -> unI64 1285+  -- CYRILLIC CAPITAL LETTER KOMI DZJE+  '\x0506'# -> unI64 1287+  -- CYRILLIC CAPITAL LETTER KOMI LJE+  '\x0508'# -> unI64 1289+  -- CYRILLIC CAPITAL LETTER KOMI NJE+  '\x050a'# -> unI64 1291+  -- CYRILLIC CAPITAL LETTER KOMI SJE+  '\x050c'# -> unI64 1293+  -- CYRILLIC CAPITAL LETTER KOMI TJE+  '\x050e'# -> unI64 1295+  -- CYRILLIC CAPITAL LETTER REVERSED ZE+  '\x0510'# -> unI64 1297+  -- CYRILLIC CAPITAL LETTER EL WITH HOOK+  '\x0512'# -> unI64 1299+  -- CYRILLIC CAPITAL LETTER LHA+  '\x0514'# -> unI64 1301+  -- CYRILLIC CAPITAL LETTER RHA+  '\x0516'# -> unI64 1303+  -- CYRILLIC CAPITAL LETTER YAE+  '\x0518'# -> unI64 1305+  -- CYRILLIC CAPITAL LETTER QA+  '\x051a'# -> unI64 1307+  -- CYRILLIC CAPITAL LETTER WE+  '\x051c'# -> unI64 1309+  -- CYRILLIC CAPITAL LETTER ALEUT KA+  '\x051e'# -> unI64 1311+  -- CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK+  '\x0520'# -> unI64 1313+  -- CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK+  '\x0522'# -> unI64 1315+  -- CYRILLIC CAPITAL LETTER PE WITH DESCENDER+  '\x0524'# -> unI64 1317+  -- CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER+  '\x0526'# -> unI64 1319+  -- CYRILLIC CAPITAL LETTER EN WITH LEFT HOOK+  '\x0528'# -> unI64 1321+  -- CYRILLIC CAPITAL LETTER DZZHE+  '\x052a'# -> unI64 1323+  -- CYRILLIC CAPITAL LETTER DCHE+  '\x052c'# -> unI64 1325+  -- CYRILLIC CAPITAL LETTER EL WITH DESCENDER+  '\x052e'# -> unI64 1327+  -- ARMENIAN CAPITAL LETTER AYB+  '\x0531'# -> unI64 1377+  -- ARMENIAN CAPITAL LETTER BEN+  '\x0532'# -> unI64 1378+  -- ARMENIAN CAPITAL LETTER GIM+  '\x0533'# -> unI64 1379+  -- ARMENIAN CAPITAL LETTER DA+  '\x0534'# -> unI64 1380+  -- ARMENIAN CAPITAL LETTER ECH+  '\x0535'# -> unI64 1381+  -- ARMENIAN CAPITAL LETTER ZA+  '\x0536'# -> unI64 1382+  -- ARMENIAN CAPITAL LETTER EH+  '\x0537'# -> unI64 1383+  -- ARMENIAN CAPITAL LETTER ET+  '\x0538'# -> unI64 1384+  -- ARMENIAN CAPITAL LETTER TO+  '\x0539'# -> unI64 1385+  -- ARMENIAN CAPITAL LETTER ZHE+  '\x053a'# -> unI64 1386+  -- ARMENIAN CAPITAL LETTER INI+  '\x053b'# -> unI64 1387+  -- ARMENIAN CAPITAL LETTER LIWN+  '\x053c'# -> unI64 1388+  -- ARMENIAN CAPITAL LETTER XEH+  '\x053d'# -> unI64 1389+  -- ARMENIAN CAPITAL LETTER CA+  '\x053e'# -> unI64 1390+  -- ARMENIAN CAPITAL LETTER KEN+  '\x053f'# -> unI64 1391+  -- ARMENIAN CAPITAL LETTER HO+  '\x0540'# -> unI64 1392+  -- ARMENIAN CAPITAL LETTER JA+  '\x0541'# -> unI64 1393+  -- ARMENIAN CAPITAL LETTER GHAD+  '\x0542'# -> unI64 1394+  -- ARMENIAN CAPITAL LETTER CHEH+  '\x0543'# -> unI64 1395+  -- ARMENIAN CAPITAL LETTER MEN+  '\x0544'# -> unI64 1396+  -- ARMENIAN CAPITAL LETTER YI+  '\x0545'# -> unI64 1397+  -- ARMENIAN CAPITAL LETTER NOW+  '\x0546'# -> unI64 1398+  -- ARMENIAN CAPITAL LETTER SHA+  '\x0547'# -> unI64 1399+  -- ARMENIAN CAPITAL LETTER VO+  '\x0548'# -> unI64 1400+  -- ARMENIAN CAPITAL LETTER CHA+  '\x0549'# -> unI64 1401+  -- ARMENIAN CAPITAL LETTER PEH+  '\x054a'# -> unI64 1402+  -- ARMENIAN CAPITAL LETTER JHEH+  '\x054b'# -> unI64 1403+  -- ARMENIAN CAPITAL LETTER RA+  '\x054c'# -> unI64 1404+  -- ARMENIAN CAPITAL LETTER SEH+  '\x054d'# -> unI64 1405+  -- ARMENIAN CAPITAL LETTER VEW+  '\x054e'# -> unI64 1406+  -- ARMENIAN CAPITAL LETTER TIWN+  '\x054f'# -> unI64 1407+  -- ARMENIAN CAPITAL LETTER REH+  '\x0550'# -> unI64 1408+  -- ARMENIAN CAPITAL LETTER CO+  '\x0551'# -> unI64 1409+  -- ARMENIAN CAPITAL LETTER YIWN+  '\x0552'# -> unI64 1410+  -- ARMENIAN CAPITAL LETTER PIWR+  '\x0553'# -> unI64 1411+  -- ARMENIAN CAPITAL LETTER KEH+  '\x0554'# -> unI64 1412+  -- ARMENIAN CAPITAL LETTER OH+  '\x0555'# -> unI64 1413+  -- ARMENIAN CAPITAL LETTER FEH+  '\x0556'# -> unI64 1414+  -- ARMENIAN SMALL LIGATURE ECH YIWN+  '\x0587'# -> unI64 2956985701+  -- GEORGIAN CAPITAL LETTER AN+  '\x10a0'# -> unI64 11520+  -- GEORGIAN CAPITAL LETTER BAN+  '\x10a1'# -> unI64 11521+  -- GEORGIAN CAPITAL LETTER GAN+  '\x10a2'# -> unI64 11522+  -- GEORGIAN CAPITAL LETTER DON+  '\x10a3'# -> unI64 11523+  -- GEORGIAN CAPITAL LETTER EN+  '\x10a4'# -> unI64 11524+  -- GEORGIAN CAPITAL LETTER VIN+  '\x10a5'# -> unI64 11525+  -- GEORGIAN CAPITAL LETTER ZEN+  '\x10a6'# -> unI64 11526+  -- GEORGIAN CAPITAL LETTER TAN+  '\x10a7'# -> unI64 11527+  -- GEORGIAN CAPITAL LETTER IN+  '\x10a8'# -> unI64 11528+  -- GEORGIAN CAPITAL LETTER KAN+  '\x10a9'# -> unI64 11529+  -- GEORGIAN CAPITAL LETTER LAS+  '\x10aa'# -> unI64 11530+  -- GEORGIAN CAPITAL LETTER MAN+  '\x10ab'# -> unI64 11531+  -- GEORGIAN CAPITAL LETTER NAR+  '\x10ac'# -> unI64 11532+  -- GEORGIAN CAPITAL LETTER ON+  '\x10ad'# -> unI64 11533+  -- GEORGIAN CAPITAL LETTER PAR+  '\x10ae'# -> unI64 11534+  -- GEORGIAN CAPITAL LETTER ZHAR+  '\x10af'# -> unI64 11535+  -- GEORGIAN CAPITAL LETTER RAE+  '\x10b0'# -> unI64 11536+  -- GEORGIAN CAPITAL LETTER SAN+  '\x10b1'# -> unI64 11537+  -- GEORGIAN CAPITAL LETTER TAR+  '\x10b2'# -> unI64 11538+  -- GEORGIAN CAPITAL LETTER UN+  '\x10b3'# -> unI64 11539+  -- GEORGIAN CAPITAL LETTER PHAR+  '\x10b4'# -> unI64 11540+  -- GEORGIAN CAPITAL LETTER KHAR+  '\x10b5'# -> unI64 11541+  -- GEORGIAN CAPITAL LETTER GHAN+  '\x10b6'# -> unI64 11542+  -- GEORGIAN CAPITAL LETTER QAR+  '\x10b7'# -> unI64 11543+  -- GEORGIAN CAPITAL LETTER SHIN+  '\x10b8'# -> unI64 11544+  -- GEORGIAN CAPITAL LETTER CHIN+  '\x10b9'# -> unI64 11545+  -- GEORGIAN CAPITAL LETTER CAN+  '\x10ba'# -> unI64 11546+  -- GEORGIAN CAPITAL LETTER JIL+  '\x10bb'# -> unI64 11547+  -- GEORGIAN CAPITAL LETTER CIL+  '\x10bc'# -> unI64 11548+  -- GEORGIAN CAPITAL LETTER CHAR+  '\x10bd'# -> unI64 11549+  -- GEORGIAN CAPITAL LETTER XAN+  '\x10be'# -> unI64 11550+  -- GEORGIAN CAPITAL LETTER JHAN+  '\x10bf'# -> unI64 11551+  -- GEORGIAN CAPITAL LETTER HAE+  '\x10c0'# -> unI64 11552+  -- GEORGIAN CAPITAL LETTER HE+  '\x10c1'# -> unI64 11553+  -- GEORGIAN CAPITAL LETTER HIE+  '\x10c2'# -> unI64 11554+  -- GEORGIAN CAPITAL LETTER WE+  '\x10c3'# -> unI64 11555+  -- GEORGIAN CAPITAL LETTER HAR+  '\x10c4'# -> unI64 11556+  -- GEORGIAN CAPITAL LETTER HOE+  '\x10c5'# -> unI64 11557+  -- GEORGIAN CAPITAL LETTER YN+  '\x10c7'# -> unI64 11559+  -- GEORGIAN CAPITAL LETTER AEN+  '\x10cd'# -> unI64 11565+  -- CHEROKEE SMALL LETTER YE+  '\x13f8'# -> unI64 5104+  -- CHEROKEE SMALL LETTER YI+  '\x13f9'# -> unI64 5105+  -- CHEROKEE SMALL LETTER YO+  '\x13fa'# -> unI64 5106+  -- CHEROKEE SMALL LETTER YU+  '\x13fb'# -> unI64 5107+  -- CHEROKEE SMALL LETTER YV+  '\x13fc'# -> unI64 5108+  -- CHEROKEE SMALL LETTER MV+  '\x13fd'# -> unI64 5109+  -- CYRILLIC SMALL LETTER ROUNDED VE+  '\x1c80'# -> unI64 1074+  -- CYRILLIC SMALL LETTER LONG-LEGGED DE+  '\x1c81'# -> unI64 1076+  -- CYRILLIC SMALL LETTER NARROW O+  '\x1c82'# -> unI64 1086+  -- CYRILLIC SMALL LETTER WIDE ES+  '\x1c83'# -> unI64 1089+  -- CYRILLIC SMALL LETTER TALL TE+  '\x1c84'# -> unI64 1090+  -- CYRILLIC SMALL LETTER THREE-LEGGED TE+  '\x1c85'# -> unI64 1090+  -- CYRILLIC SMALL LETTER TALL HARD SIGN+  '\x1c86'# -> unI64 1098+  -- CYRILLIC SMALL LETTER TALL YAT+  '\x1c87'# -> unI64 1123+  -- CYRILLIC SMALL LETTER UNBLENDED UK+  '\x1c88'# -> unI64 42571+  -- GEORGIAN MTAVRULI CAPITAL LETTER AN+  '\x1c90'# -> unI64 4304+  -- GEORGIAN MTAVRULI CAPITAL LETTER BAN+  '\x1c91'# -> unI64 4305+  -- GEORGIAN MTAVRULI CAPITAL LETTER GAN+  '\x1c92'# -> unI64 4306+  -- GEORGIAN MTAVRULI CAPITAL LETTER DON+  '\x1c93'# -> unI64 4307+  -- GEORGIAN MTAVRULI CAPITAL LETTER EN+  '\x1c94'# -> unI64 4308+  -- GEORGIAN MTAVRULI CAPITAL LETTER VIN+  '\x1c95'# -> unI64 4309+  -- GEORGIAN MTAVRULI CAPITAL LETTER ZEN+  '\x1c96'# -> unI64 4310+  -- GEORGIAN MTAVRULI CAPITAL LETTER TAN+  '\x1c97'# -> unI64 4311+  -- GEORGIAN MTAVRULI CAPITAL LETTER IN+  '\x1c98'# -> unI64 4312+  -- GEORGIAN MTAVRULI CAPITAL LETTER KAN+  '\x1c99'# -> unI64 4313+  -- GEORGIAN MTAVRULI CAPITAL LETTER LAS+  '\x1c9a'# -> unI64 4314+  -- GEORGIAN MTAVRULI CAPITAL LETTER MAN+  '\x1c9b'# -> unI64 4315+  -- GEORGIAN MTAVRULI CAPITAL LETTER NAR+  '\x1c9c'# -> unI64 4316+  -- GEORGIAN MTAVRULI CAPITAL LETTER ON+  '\x1c9d'# -> unI64 4317+  -- GEORGIAN MTAVRULI CAPITAL LETTER PAR+  '\x1c9e'# -> unI64 4318+  -- GEORGIAN MTAVRULI CAPITAL LETTER ZHAR+  '\x1c9f'# -> unI64 4319+  -- GEORGIAN MTAVRULI CAPITAL LETTER RAE+  '\x1ca0'# -> unI64 4320+  -- GEORGIAN MTAVRULI CAPITAL LETTER SAN+  '\x1ca1'# -> unI64 4321+  -- GEORGIAN MTAVRULI CAPITAL LETTER TAR+  '\x1ca2'# -> unI64 4322+  -- GEORGIAN MTAVRULI CAPITAL LETTER UN+  '\x1ca3'# -> unI64 4323+  -- GEORGIAN MTAVRULI CAPITAL LETTER PHAR+  '\x1ca4'# -> unI64 4324+  -- GEORGIAN MTAVRULI CAPITAL LETTER KHAR+  '\x1ca5'# -> unI64 4325+  -- GEORGIAN MTAVRULI CAPITAL LETTER GHAN+  '\x1ca6'# -> unI64 4326+  -- GEORGIAN MTAVRULI CAPITAL LETTER QAR+  '\x1ca7'# -> unI64 4327+  -- GEORGIAN MTAVRULI CAPITAL LETTER SHIN+  '\x1ca8'# -> unI64 4328+  -- GEORGIAN MTAVRULI CAPITAL LETTER CHIN+  '\x1ca9'# -> unI64 4329+  -- GEORGIAN MTAVRULI CAPITAL LETTER CAN+  '\x1caa'# -> unI64 4330+  -- GEORGIAN MTAVRULI CAPITAL LETTER JIL+  '\x1cab'# -> unI64 4331+  -- GEORGIAN MTAVRULI CAPITAL LETTER CIL+  '\x1cac'# -> unI64 4332+  -- GEORGIAN MTAVRULI CAPITAL LETTER CHAR+  '\x1cad'# -> unI64 4333+  -- GEORGIAN MTAVRULI CAPITAL LETTER XAN+  '\x1cae'# -> unI64 4334+  -- GEORGIAN MTAVRULI CAPITAL LETTER JHAN+  '\x1caf'# -> unI64 4335+  -- GEORGIAN MTAVRULI CAPITAL LETTER HAE+  '\x1cb0'# -> unI64 4336+  -- GEORGIAN MTAVRULI CAPITAL LETTER HE+  '\x1cb1'# -> unI64 4337+  -- GEORGIAN MTAVRULI CAPITAL LETTER HIE+  '\x1cb2'# -> unI64 4338+  -- GEORGIAN MTAVRULI CAPITAL LETTER WE+  '\x1cb3'# -> unI64 4339+  -- GEORGIAN MTAVRULI CAPITAL LETTER HAR+  '\x1cb4'# -> unI64 4340+  -- GEORGIAN MTAVRULI CAPITAL LETTER HOE+  '\x1cb5'# -> unI64 4341+  -- GEORGIAN MTAVRULI CAPITAL LETTER FI+  '\x1cb6'# -> unI64 4342+  -- GEORGIAN MTAVRULI CAPITAL LETTER YN+  '\x1cb7'# -> unI64 4343+  -- GEORGIAN MTAVRULI CAPITAL LETTER ELIFI+  '\x1cb8'# -> unI64 4344+  -- GEORGIAN MTAVRULI CAPITAL LETTER TURNED GAN+  '\x1cb9'# -> unI64 4345+  -- GEORGIAN MTAVRULI CAPITAL LETTER AIN+  '\x1cba'# -> unI64 4346+  -- GEORGIAN MTAVRULI CAPITAL LETTER AEN+  '\x1cbd'# -> unI64 4349+  -- GEORGIAN MTAVRULI CAPITAL LETTER HARD SIGN+  '\x1cbe'# -> unI64 4350+  -- GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN+  '\x1cbf'# -> unI64 4351+  -- LATIN CAPITAL LETTER A WITH RING BELOW+  '\x1e00'# -> unI64 7681+  -- LATIN CAPITAL LETTER B WITH DOT ABOVE+  '\x1e02'# -> unI64 7683+  -- LATIN CAPITAL LETTER B WITH DOT BELOW+  '\x1e04'# -> unI64 7685+  -- LATIN CAPITAL LETTER B WITH LINE BELOW+  '\x1e06'# -> unI64 7687+  -- LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE+  '\x1e08'# -> unI64 7689+  -- LATIN CAPITAL LETTER D WITH DOT ABOVE+  '\x1e0a'# -> unI64 7691+  -- LATIN CAPITAL LETTER D WITH DOT BELOW+  '\x1e0c'# -> unI64 7693+  -- LATIN CAPITAL LETTER D WITH LINE BELOW+  '\x1e0e'# -> unI64 7695+  -- LATIN CAPITAL LETTER D WITH CEDILLA+  '\x1e10'# -> unI64 7697+  -- LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW+  '\x1e12'# -> unI64 7699+  -- LATIN CAPITAL LETTER E WITH MACRON AND GRAVE+  '\x1e14'# -> unI64 7701+  -- LATIN CAPITAL LETTER E WITH MACRON AND ACUTE+  '\x1e16'# -> unI64 7703+  -- LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW+  '\x1e18'# -> unI64 7705+  -- LATIN CAPITAL LETTER E WITH TILDE BELOW+  '\x1e1a'# -> unI64 7707+  -- LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE+  '\x1e1c'# -> unI64 7709+  -- LATIN CAPITAL LETTER F WITH DOT ABOVE+  '\x1e1e'# -> unI64 7711+  -- LATIN CAPITAL LETTER G WITH MACRON+  '\x1e20'# -> unI64 7713+  -- LATIN CAPITAL LETTER H WITH DOT ABOVE+  '\x1e22'# -> unI64 7715+  -- LATIN CAPITAL LETTER H WITH DOT BELOW+  '\x1e24'# -> unI64 7717+  -- LATIN CAPITAL LETTER H WITH DIAERESIS+  '\x1e26'# -> unI64 7719+  -- LATIN CAPITAL LETTER H WITH CEDILLA+  '\x1e28'# -> unI64 7721+  -- LATIN CAPITAL LETTER H WITH BREVE BELOW+  '\x1e2a'# -> unI64 7723+  -- LATIN CAPITAL LETTER I WITH TILDE BELOW+  '\x1e2c'# -> unI64 7725+  -- LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE+  '\x1e2e'# -> unI64 7727+  -- LATIN CAPITAL LETTER K WITH ACUTE+  '\x1e30'# -> unI64 7729+  -- LATIN CAPITAL LETTER K WITH DOT BELOW+  '\x1e32'# -> unI64 7731+  -- LATIN CAPITAL LETTER K WITH LINE BELOW+  '\x1e34'# -> unI64 7733+  -- LATIN CAPITAL LETTER L WITH DOT BELOW+  '\x1e36'# -> unI64 7735+  -- LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON+  '\x1e38'# -> unI64 7737+  -- LATIN CAPITAL LETTER L WITH LINE BELOW+  '\x1e3a'# -> unI64 7739+  -- LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW+  '\x1e3c'# -> unI64 7741+  -- LATIN CAPITAL LETTER M WITH ACUTE+  '\x1e3e'# -> unI64 7743+  -- LATIN CAPITAL LETTER M WITH DOT ABOVE+  '\x1e40'# -> unI64 7745+  -- LATIN CAPITAL LETTER M WITH DOT BELOW+  '\x1e42'# -> unI64 7747+  -- LATIN CAPITAL LETTER N WITH DOT ABOVE+  '\x1e44'# -> unI64 7749+  -- LATIN CAPITAL LETTER N WITH DOT BELOW+  '\x1e46'# -> unI64 7751+  -- LATIN CAPITAL LETTER N WITH LINE BELOW+  '\x1e48'# -> unI64 7753+  -- LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW+  '\x1e4a'# -> unI64 7755+  -- LATIN CAPITAL LETTER O WITH TILDE AND ACUTE+  '\x1e4c'# -> unI64 7757+  -- LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS+  '\x1e4e'# -> unI64 7759+  -- LATIN CAPITAL LETTER O WITH MACRON AND GRAVE+  '\x1e50'# -> unI64 7761+  -- LATIN CAPITAL LETTER O WITH MACRON AND ACUTE+  '\x1e52'# -> unI64 7763+  -- LATIN CAPITAL LETTER P WITH ACUTE+  '\x1e54'# -> unI64 7765+  -- LATIN CAPITAL LETTER P WITH DOT ABOVE+  '\x1e56'# -> unI64 7767+  -- LATIN CAPITAL LETTER R WITH DOT ABOVE+  '\x1e58'# -> unI64 7769+  -- LATIN CAPITAL LETTER R WITH DOT BELOW+  '\x1e5a'# -> unI64 7771+  -- LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON+  '\x1e5c'# -> unI64 7773+  -- LATIN CAPITAL LETTER R WITH LINE BELOW+  '\x1e5e'# -> unI64 7775+  -- LATIN CAPITAL LETTER S WITH DOT ABOVE+  '\x1e60'# -> unI64 7777+  -- LATIN CAPITAL LETTER S WITH DOT BELOW+  '\x1e62'# -> unI64 7779+  -- LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE+  '\x1e64'# -> unI64 7781+  -- LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE+  '\x1e66'# -> unI64 7783+  -- LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE+  '\x1e68'# -> unI64 7785+  -- LATIN CAPITAL LETTER T WITH DOT ABOVE+  '\x1e6a'# -> unI64 7787+  -- LATIN CAPITAL LETTER T WITH DOT BELOW+  '\x1e6c'# -> unI64 7789+  -- LATIN CAPITAL LETTER T WITH LINE BELOW+  '\x1e6e'# -> unI64 7791+  -- LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW+  '\x1e70'# -> unI64 7793+  -- LATIN CAPITAL LETTER U WITH DIAERESIS BELOW+  '\x1e72'# -> unI64 7795+  -- LATIN CAPITAL LETTER U WITH TILDE BELOW+  '\x1e74'# -> unI64 7797+  -- LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW+  '\x1e76'# -> unI64 7799+  -- LATIN CAPITAL LETTER U WITH TILDE AND ACUTE+  '\x1e78'# -> unI64 7801+  -- LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS+  '\x1e7a'# -> unI64 7803+  -- LATIN CAPITAL LETTER V WITH TILDE+  '\x1e7c'# -> unI64 7805+  -- LATIN CAPITAL LETTER V WITH DOT BELOW+  '\x1e7e'# -> unI64 7807+  -- LATIN CAPITAL LETTER W WITH GRAVE+  '\x1e80'# -> unI64 7809+  -- LATIN CAPITAL LETTER W WITH ACUTE+  '\x1e82'# -> unI64 7811+  -- LATIN CAPITAL LETTER W WITH DIAERESIS+  '\x1e84'# -> unI64 7813+  -- LATIN CAPITAL LETTER W WITH DOT ABOVE+  '\x1e86'# -> unI64 7815+  -- LATIN CAPITAL LETTER W WITH DOT BELOW+  '\x1e88'# -> unI64 7817+  -- LATIN CAPITAL LETTER X WITH DOT ABOVE+  '\x1e8a'# -> unI64 7819+  -- LATIN CAPITAL LETTER X WITH DIAERESIS+  '\x1e8c'# -> unI64 7821+  -- LATIN CAPITAL LETTER Y WITH DOT ABOVE+  '\x1e8e'# -> unI64 7823+  -- LATIN CAPITAL LETTER Z WITH CIRCUMFLEX+  '\x1e90'# -> unI64 7825+  -- LATIN CAPITAL LETTER Z WITH DOT BELOW+  '\x1e92'# -> unI64 7827+  -- LATIN CAPITAL LETTER Z WITH LINE BELOW+  '\x1e94'# -> unI64 7829+  -- LATIN SMALL LETTER H WITH LINE BELOW+  '\x1e96'# -> unI64 1713373288+  -- LATIN SMALL LETTER T WITH DIAERESIS+  '\x1e97'# -> unI64 1627390068+  -- LATIN SMALL LETTER W WITH RING ABOVE+  '\x1e98'# -> unI64 1631584375+  -- LATIN SMALL LETTER Y WITH RING ABOVE+  '\x1e99'# -> unI64 1631584377+  -- LATIN SMALL LETTER A WITH RIGHT HALF RING+  '\x1e9a'# -> unI64 1472200801+  -- LATIN SMALL LETTER LONG S WITH DOT ABOVE+  '\x1e9b'# -> unI64 7777+  -- LATIN CAPITAL LETTER SHARP S+  '\x1e9e'# -> unI64 241172595+  -- LATIN CAPITAL LETTER A WITH DOT BELOW+  '\x1ea0'# -> unI64 7841+  -- LATIN CAPITAL LETTER A WITH HOOK ABOVE+  '\x1ea2'# -> unI64 7843+  -- LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE+  '\x1ea4'# -> unI64 7845+  -- LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE+  '\x1ea6'# -> unI64 7847+  -- LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE+  '\x1ea8'# -> unI64 7849+  -- LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE+  '\x1eaa'# -> unI64 7851+  -- LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW+  '\x1eac'# -> unI64 7853+  -- LATIN CAPITAL LETTER A WITH BREVE AND ACUTE+  '\x1eae'# -> unI64 7855+  -- LATIN CAPITAL LETTER A WITH BREVE AND GRAVE+  '\x1eb0'# -> unI64 7857+  -- LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE+  '\x1eb2'# -> unI64 7859+  -- LATIN CAPITAL LETTER A WITH BREVE AND TILDE+  '\x1eb4'# -> unI64 7861+  -- LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW+  '\x1eb6'# -> unI64 7863+  -- LATIN CAPITAL LETTER E WITH DOT BELOW+  '\x1eb8'# -> unI64 7865+  -- LATIN CAPITAL LETTER E WITH HOOK ABOVE+  '\x1eba'# -> unI64 7867+  -- LATIN CAPITAL LETTER E WITH TILDE+  '\x1ebc'# -> unI64 7869+  -- LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE+  '\x1ebe'# -> unI64 7871+  -- LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE+  '\x1ec0'# -> unI64 7873+  -- LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE+  '\x1ec2'# -> unI64 7875+  -- LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE+  '\x1ec4'# -> unI64 7877+  -- LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW+  '\x1ec6'# -> unI64 7879+  -- LATIN CAPITAL LETTER I WITH HOOK ABOVE+  '\x1ec8'# -> unI64 7881+  -- LATIN CAPITAL LETTER I WITH DOT BELOW+  '\x1eca'# -> unI64 7883+  -- LATIN CAPITAL LETTER O WITH DOT BELOW+  '\x1ecc'# -> unI64 7885+  -- LATIN CAPITAL LETTER O WITH HOOK ABOVE+  '\x1ece'# -> unI64 7887+  -- LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE+  '\x1ed0'# -> unI64 7889+  -- LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE+  '\x1ed2'# -> unI64 7891+  -- LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE+  '\x1ed4'# -> unI64 7893+  -- LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE+  '\x1ed6'# -> unI64 7895+  -- LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW+  '\x1ed8'# -> unI64 7897+  -- LATIN CAPITAL LETTER O WITH HORN AND ACUTE+  '\x1eda'# -> unI64 7899+  -- LATIN CAPITAL LETTER O WITH HORN AND GRAVE+  '\x1edc'# -> unI64 7901+  -- LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE+  '\x1ede'# -> unI64 7903+  -- LATIN CAPITAL LETTER O WITH HORN AND TILDE+  '\x1ee0'# -> unI64 7905+  -- LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW+  '\x1ee2'# -> unI64 7907+  -- LATIN CAPITAL LETTER U WITH DOT BELOW+  '\x1ee4'# -> unI64 7909+  -- LATIN CAPITAL LETTER U WITH HOOK ABOVE+  '\x1ee6'# -> unI64 7911+  -- LATIN CAPITAL LETTER U WITH HORN AND ACUTE+  '\x1ee8'# -> unI64 7913+  -- LATIN CAPITAL LETTER U WITH HORN AND GRAVE+  '\x1eea'# -> unI64 7915+  -- LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE+  '\x1eec'# -> unI64 7917+  -- LATIN CAPITAL LETTER U WITH HORN AND TILDE+  '\x1eee'# -> unI64 7919+  -- LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW+  '\x1ef0'# -> unI64 7921+  -- LATIN CAPITAL LETTER Y WITH GRAVE+  '\x1ef2'# -> unI64 7923+  -- LATIN CAPITAL LETTER Y WITH DOT BELOW+  '\x1ef4'# -> unI64 7925+  -- LATIN CAPITAL LETTER Y WITH HOOK ABOVE+  '\x1ef6'# -> unI64 7927+  -- LATIN CAPITAL LETTER Y WITH TILDE+  '\x1ef8'# -> unI64 7929+  -- LATIN CAPITAL LETTER MIDDLE-WELSH LL+  '\x1efa'# -> unI64 7931+  -- LATIN CAPITAL LETTER MIDDLE-WELSH V+  '\x1efc'# -> unI64 7933+  -- LATIN CAPITAL LETTER Y WITH LOOP+  '\x1efe'# -> unI64 7935+  -- GREEK CAPITAL LETTER ALPHA WITH PSILI+  '\x1f08'# -> unI64 7936+  -- GREEK CAPITAL LETTER ALPHA WITH DASIA+  '\x1f09'# -> unI64 7937+  -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA+  '\x1f0a'# -> unI64 7938+  -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA+  '\x1f0b'# -> unI64 7939+  -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA+  '\x1f0c'# -> unI64 7940+  -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA+  '\x1f0d'# -> unI64 7941+  -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI+  '\x1f0e'# -> unI64 7942+  -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI+  '\x1f0f'# -> unI64 7943+  -- GREEK CAPITAL LETTER EPSILON WITH PSILI+  '\x1f18'# -> unI64 7952+  -- GREEK CAPITAL LETTER EPSILON WITH DASIA+  '\x1f19'# -> unI64 7953+  -- GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA+  '\x1f1a'# -> unI64 7954+  -- GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA+  '\x1f1b'# -> unI64 7955+  -- GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA+  '\x1f1c'# -> unI64 7956+  -- GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA+  '\x1f1d'# -> unI64 7957+  -- GREEK CAPITAL LETTER ETA WITH PSILI+  '\x1f28'# -> unI64 7968+  -- GREEK CAPITAL LETTER ETA WITH DASIA+  '\x1f29'# -> unI64 7969+  -- GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA+  '\x1f2a'# -> unI64 7970+  -- GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA+  '\x1f2b'# -> unI64 7971+  -- GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA+  '\x1f2c'# -> unI64 7972+  -- GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA+  '\x1f2d'# -> unI64 7973+  -- GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI+  '\x1f2e'# -> unI64 7974+  -- GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI+  '\x1f2f'# -> unI64 7975+  -- GREEK CAPITAL LETTER IOTA WITH PSILI+  '\x1f38'# -> unI64 7984+  -- GREEK CAPITAL LETTER IOTA WITH DASIA+  '\x1f39'# -> unI64 7985+  -- GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA+  '\x1f3a'# -> unI64 7986+  -- GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA+  '\x1f3b'# -> unI64 7987+  -- GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA+  '\x1f3c'# -> unI64 7988+  -- GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA+  '\x1f3d'# -> unI64 7989+  -- GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI+  '\x1f3e'# -> unI64 7990+  -- GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI+  '\x1f3f'# -> unI64 7991+  -- GREEK CAPITAL LETTER OMICRON WITH PSILI+  '\x1f48'# -> unI64 8000+  -- GREEK CAPITAL LETTER OMICRON WITH DASIA+  '\x1f49'# -> unI64 8001+  -- GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA+  '\x1f4a'# -> unI64 8002+  -- GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA+  '\x1f4b'# -> unI64 8003+  -- GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA+  '\x1f4c'# -> unI64 8004+  -- GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA+  '\x1f4d'# -> unI64 8005+  -- GREEK SMALL LETTER UPSILON WITH PSILI+  '\x1f50'# -> unI64 1650459589+  -- GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA+  '\x1f52'# -> unI64 3377701370987461+  -- GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA+  '\x1f54'# -> unI64 3382099417498565+  -- GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI+  '\x1f56'# -> unI64 3667972440720325+  -- GREEK CAPITAL LETTER UPSILON WITH DASIA+  '\x1f59'# -> unI64 8017+  -- GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA+  '\x1f5b'# -> unI64 8019+  -- GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA+  '\x1f5d'# -> unI64 8021+  -- GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI+  '\x1f5f'# -> unI64 8023+  -- GREEK CAPITAL LETTER OMEGA WITH PSILI+  '\x1f68'# -> unI64 8032+  -- GREEK CAPITAL LETTER OMEGA WITH DASIA+  '\x1f69'# -> unI64 8033+  -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA+  '\x1f6a'# -> unI64 8034+  -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA+  '\x1f6b'# -> unI64 8035+  -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA+  '\x1f6c'# -> unI64 8036+  -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA+  '\x1f6d'# -> unI64 8037+  -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI+  '\x1f6e'# -> unI64 8038+  -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI+  '\x1f6f'# -> unI64 8039+  -- GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI+  '\x1f80'# -> unI64 1998593792+  -- GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI+  '\x1f81'# -> unI64 1998593793+  -- GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI+  '\x1f82'# -> unI64 1998593794+  -- GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI+  '\x1f83'# -> unI64 1998593795+  -- GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI+  '\x1f84'# -> unI64 1998593796+  -- GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI+  '\x1f85'# -> unI64 1998593797+  -- GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI+  '\x1f86'# -> unI64 1998593798+  -- GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI+  '\x1f87'# -> unI64 1998593799+  -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI+  '\x1f88'# -> unI64 1998593792+  -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI+  '\x1f89'# -> unI64 1998593793+  -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI+  '\x1f8a'# -> unI64 1998593794+  -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI+  '\x1f8b'# -> unI64 1998593795+  -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI+  '\x1f8c'# -> unI64 1998593796+  -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI+  '\x1f8d'# -> unI64 1998593797+  -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI+  '\x1f8e'# -> unI64 1998593798+  -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI+  '\x1f8f'# -> unI64 1998593799+  -- GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI+  '\x1f90'# -> unI64 1998593824+  -- GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI+  '\x1f91'# -> unI64 1998593825+  -- GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI+  '\x1f92'# -> unI64 1998593826+  -- GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI+  '\x1f93'# -> unI64 1998593827+  -- GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI+  '\x1f94'# -> unI64 1998593828+  -- GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI+  '\x1f95'# -> unI64 1998593829+  -- GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI+  '\x1f96'# -> unI64 1998593830+  -- GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI+  '\x1f97'# -> unI64 1998593831+  -- GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI+  '\x1f98'# -> unI64 1998593824+  -- GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI+  '\x1f99'# -> unI64 1998593825+  -- GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI+  '\x1f9a'# -> unI64 1998593826+  -- GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI+  '\x1f9b'# -> unI64 1998593827+  -- GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI+  '\x1f9c'# -> unI64 1998593828+  -- GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI+  '\x1f9d'# -> unI64 1998593829+  -- GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI+  '\x1f9e'# -> unI64 1998593830+  -- GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI+  '\x1f9f'# -> unI64 1998593831+  -- GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI+  '\x1fa0'# -> unI64 1998593888+  -- GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI+  '\x1fa1'# -> unI64 1998593889+  -- GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI+  '\x1fa2'# -> unI64 1998593890+  -- GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI+  '\x1fa3'# -> unI64 1998593891+  -- GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI+  '\x1fa4'# -> unI64 1998593892+  -- GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI+  '\x1fa5'# -> unI64 1998593893+  -- GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI+  '\x1fa6'# -> unI64 1998593894+  -- GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI+  '\x1fa7'# -> unI64 1998593895+  -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI+  '\x1fa8'# -> unI64 1998593888+  -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI+  '\x1fa9'# -> unI64 1998593889+  -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI+  '\x1faa'# -> unI64 1998593890+  -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI+  '\x1fab'# -> unI64 1998593891+  -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI+  '\x1fac'# -> unI64 1998593892+  -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI+  '\x1fad'# -> unI64 1998593893+  -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI+  '\x1fae'# -> unI64 1998593894+  -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI+  '\x1faf'# -> unI64 1998593895+  -- GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI+  '\x1fb2'# -> unI64 1998593904+  -- GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI+  '\x1fb3'# -> unI64 1998586801+  -- GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI+  '\x1fb4'# -> unI64 1998586796+  -- GREEK SMALL LETTER ALPHA WITH PERISPOMENI+  '\x1fb6'# -> unI64 1749025713+  -- GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI+  '\x1fb7'# -> unI64 4191340074107825+  -- GREEK CAPITAL LETTER ALPHA WITH VRACHY+  '\x1fb8'# -> unI64 8112+  -- GREEK CAPITAL LETTER ALPHA WITH MACRON+  '\x1fb9'# -> unI64 8113+  -- GREEK CAPITAL LETTER ALPHA WITH VARIA+  '\x1fba'# -> unI64 8048+  -- GREEK CAPITAL LETTER ALPHA WITH OXIA+  '\x1fbb'# -> unI64 8049+  -- GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI+  '\x1fbc'# -> unI64 1998586801+  -- GREEK PROSGEGRAMMENI+  '\x1fbe'# -> unI64 953+  -- GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI+  '\x1fc2'# -> unI64 1998593908+  -- GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI+  '\x1fc3'# -> unI64 1998586807+  -- GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI+  '\x1fc4'# -> unI64 1998586798+  -- GREEK SMALL LETTER ETA WITH PERISPOMENI+  '\x1fc6'# -> unI64 1749025719+  -- GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI+  '\x1fc7'# -> unI64 4191340074107831+  -- GREEK CAPITAL LETTER EPSILON WITH VARIA+  '\x1fc8'# -> unI64 8050+  -- GREEK CAPITAL LETTER EPSILON WITH OXIA+  '\x1fc9'# -> unI64 8051+  -- GREEK CAPITAL LETTER ETA WITH VARIA+  '\x1fca'# -> unI64 8052+  -- GREEK CAPITAL LETTER ETA WITH OXIA+  '\x1fcb'# -> unI64 8053+  -- GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI+  '\x1fcc'# -> unI64 1998586807+  -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA+  '\x1fd2'# -> unI64 3377701347918777+  -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA+  '\x1fd3'# -> unI64 3382099394429881+  -- GREEK SMALL LETTER IOTA WITH PERISPOMENI+  '\x1fd6'# -> unI64 1749025721+  -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI+  '\x1fd7'# -> unI64 3667972417651641+  -- GREEK CAPITAL LETTER IOTA WITH VRACHY+  '\x1fd8'# -> unI64 8144+  -- GREEK CAPITAL LETTER IOTA WITH MACRON+  '\x1fd9'# -> unI64 8145+  -- GREEK CAPITAL LETTER IOTA WITH VARIA+  '\x1fda'# -> unI64 8054+  -- GREEK CAPITAL LETTER IOTA WITH OXIA+  '\x1fdb'# -> unI64 8055+  -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA+  '\x1fe2'# -> unI64 3377701347918789+  -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA+  '\x1fe3'# -> unI64 3382099394429893+  -- GREEK SMALL LETTER RHO WITH PSILI+  '\x1fe4'# -> unI64 1650459585+  -- GREEK SMALL LETTER UPSILON WITH PERISPOMENI+  '\x1fe6'# -> unI64 1749025733+  -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI+  '\x1fe7'# -> unI64 3667972417651653+  -- GREEK CAPITAL LETTER UPSILON WITH VRACHY+  '\x1fe8'# -> unI64 8160+  -- GREEK CAPITAL LETTER UPSILON WITH MACRON+  '\x1fe9'# -> unI64 8161+  -- GREEK CAPITAL LETTER UPSILON WITH VARIA+  '\x1fea'# -> unI64 8058+  -- GREEK CAPITAL LETTER UPSILON WITH OXIA+  '\x1feb'# -> unI64 8059+  -- GREEK CAPITAL LETTER RHO WITH DASIA+  '\x1fec'# -> unI64 8165+  -- GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI+  '\x1ff2'# -> unI64 1998593916+  -- GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI+  '\x1ff3'# -> unI64 1998586825+  -- GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI+  '\x1ff4'# -> unI64 1998586830+  -- GREEK SMALL LETTER OMEGA WITH PERISPOMENI+  '\x1ff6'# -> unI64 1749025737+  -- GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI+  '\x1ff7'# -> unI64 4191340074107849+  -- GREEK CAPITAL LETTER OMICRON WITH VARIA+  '\x1ff8'# -> unI64 8056+  -- GREEK CAPITAL LETTER OMICRON WITH OXIA+  '\x1ff9'# -> unI64 8057+  -- GREEK CAPITAL LETTER OMEGA WITH VARIA+  '\x1ffa'# -> unI64 8060+  -- GREEK CAPITAL LETTER OMEGA WITH OXIA+  '\x1ffb'# -> unI64 8061+  -- GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI+  '\x1ffc'# -> unI64 1998586825+  -- OHM SIGN+  '\x2126'# -> unI64 969+  -- KELVIN SIGN+  '\x212a'# -> unI64 107+  -- ANGSTROM SIGN+  '\x212b'# -> unI64 229+  -- TURNED CAPITAL F+  '\x2132'# -> unI64 8526+  -- ROMAN NUMERAL ONE+  '\x2160'# -> unI64 8560+  -- ROMAN NUMERAL TWO+  '\x2161'# -> unI64 8561+  -- ROMAN NUMERAL THREE+  '\x2162'# -> unI64 8562+  -- ROMAN NUMERAL FOUR+  '\x2163'# -> unI64 8563+  -- ROMAN NUMERAL FIVE+  '\x2164'# -> unI64 8564+  -- ROMAN NUMERAL SIX+  '\x2165'# -> unI64 8565+  -- ROMAN NUMERAL SEVEN+  '\x2166'# -> unI64 8566+  -- ROMAN NUMERAL EIGHT+  '\x2167'# -> unI64 8567+  -- ROMAN NUMERAL NINE+  '\x2168'# -> unI64 8568+  -- ROMAN NUMERAL TEN+  '\x2169'# -> unI64 8569+  -- ROMAN NUMERAL ELEVEN+  '\x216a'# -> unI64 8570+  -- ROMAN NUMERAL TWELVE+  '\x216b'# -> unI64 8571+  -- ROMAN NUMERAL FIFTY+  '\x216c'# -> unI64 8572+  -- ROMAN NUMERAL ONE HUNDRED+  '\x216d'# -> unI64 8573+  -- ROMAN NUMERAL FIVE HUNDRED+  '\x216e'# -> unI64 8574+  -- ROMAN NUMERAL ONE THOUSAND+  '\x216f'# -> unI64 8575+  -- ROMAN NUMERAL REVERSED ONE HUNDRED+  '\x2183'# -> unI64 8580+  -- CIRCLED LATIN CAPITAL LETTER A+  '\x24b6'# -> unI64 9424+  -- CIRCLED LATIN CAPITAL LETTER B+  '\x24b7'# -> unI64 9425+  -- CIRCLED LATIN CAPITAL LETTER C+  '\x24b8'# -> unI64 9426+  -- CIRCLED LATIN CAPITAL LETTER D+  '\x24b9'# -> unI64 9427+  -- CIRCLED LATIN CAPITAL LETTER E+  '\x24ba'# -> unI64 9428+  -- CIRCLED LATIN CAPITAL LETTER F+  '\x24bb'# -> unI64 9429+  -- CIRCLED LATIN CAPITAL LETTER G+  '\x24bc'# -> unI64 9430+  -- CIRCLED LATIN CAPITAL LETTER H+  '\x24bd'# -> unI64 9431+  -- CIRCLED LATIN CAPITAL LETTER I+  '\x24be'# -> unI64 9432+  -- CIRCLED LATIN CAPITAL LETTER J+  '\x24bf'# -> unI64 9433+  -- CIRCLED LATIN CAPITAL LETTER K+  '\x24c0'# -> unI64 9434+  -- CIRCLED LATIN CAPITAL LETTER L+  '\x24c1'# -> unI64 9435+  -- CIRCLED LATIN CAPITAL LETTER M+  '\x24c2'# -> unI64 9436+  -- CIRCLED LATIN CAPITAL LETTER N+  '\x24c3'# -> unI64 9437+  -- CIRCLED LATIN CAPITAL LETTER O+  '\x24c4'# -> unI64 9438+  -- CIRCLED LATIN CAPITAL LETTER P+  '\x24c5'# -> unI64 9439+  -- CIRCLED LATIN CAPITAL LETTER Q+  '\x24c6'# -> unI64 9440+  -- CIRCLED LATIN CAPITAL LETTER R+  '\x24c7'# -> unI64 9441+  -- CIRCLED LATIN CAPITAL LETTER S+  '\x24c8'# -> unI64 9442+  -- CIRCLED LATIN CAPITAL LETTER T+  '\x24c9'# -> unI64 9443+  -- CIRCLED LATIN CAPITAL LETTER U+  '\x24ca'# -> unI64 9444+  -- CIRCLED LATIN CAPITAL LETTER V+  '\x24cb'# -> unI64 9445+  -- CIRCLED LATIN CAPITAL LETTER W+  '\x24cc'# -> unI64 9446+  -- CIRCLED LATIN CAPITAL LETTER X+  '\x24cd'# -> unI64 9447+  -- CIRCLED LATIN CAPITAL LETTER Y+  '\x24ce'# -> unI64 9448+  -- CIRCLED LATIN CAPITAL LETTER Z+  '\x24cf'# -> unI64 9449+  -- GLAGOLITIC CAPITAL LETTER AZU+  '\x2c00'# -> unI64 11312+  -- GLAGOLITIC CAPITAL LETTER BUKY+  '\x2c01'# -> unI64 11313+  -- GLAGOLITIC CAPITAL LETTER VEDE+  '\x2c02'# -> unI64 11314+  -- GLAGOLITIC CAPITAL LETTER GLAGOLI+  '\x2c03'# -> unI64 11315+  -- GLAGOLITIC CAPITAL LETTER DOBRO+  '\x2c04'# -> unI64 11316+  -- GLAGOLITIC CAPITAL LETTER YESTU+  '\x2c05'# -> unI64 11317+  -- GLAGOLITIC CAPITAL LETTER ZHIVETE+  '\x2c06'# -> unI64 11318+  -- GLAGOLITIC CAPITAL LETTER DZELO+  '\x2c07'# -> unI64 11319+  -- GLAGOLITIC CAPITAL LETTER ZEMLJA+  '\x2c08'# -> unI64 11320+  -- GLAGOLITIC CAPITAL LETTER IZHE+  '\x2c09'# -> unI64 11321+  -- GLAGOLITIC CAPITAL LETTER INITIAL IZHE+  '\x2c0a'# -> unI64 11322+  -- GLAGOLITIC CAPITAL LETTER I+  '\x2c0b'# -> unI64 11323+  -- GLAGOLITIC CAPITAL LETTER DJERVI+  '\x2c0c'# -> unI64 11324+  -- GLAGOLITIC CAPITAL LETTER KAKO+  '\x2c0d'# -> unI64 11325+  -- GLAGOLITIC CAPITAL LETTER LJUDIJE+  '\x2c0e'# -> unI64 11326+  -- GLAGOLITIC CAPITAL LETTER MYSLITE+  '\x2c0f'# -> unI64 11327+  -- GLAGOLITIC CAPITAL LETTER NASHI+  '\x2c10'# -> unI64 11328+  -- GLAGOLITIC CAPITAL LETTER ONU+  '\x2c11'# -> unI64 11329+  -- GLAGOLITIC CAPITAL LETTER POKOJI+  '\x2c12'# -> unI64 11330+  -- GLAGOLITIC CAPITAL LETTER RITSI+  '\x2c13'# -> unI64 11331+  -- GLAGOLITIC CAPITAL LETTER SLOVO+  '\x2c14'# -> unI64 11332+  -- GLAGOLITIC CAPITAL LETTER TVRIDO+  '\x2c15'# -> unI64 11333+  -- GLAGOLITIC CAPITAL LETTER UKU+  '\x2c16'# -> unI64 11334+  -- GLAGOLITIC CAPITAL LETTER FRITU+  '\x2c17'# -> unI64 11335+  -- GLAGOLITIC CAPITAL LETTER HERU+  '\x2c18'# -> unI64 11336+  -- GLAGOLITIC CAPITAL LETTER OTU+  '\x2c19'# -> unI64 11337+  -- GLAGOLITIC CAPITAL LETTER PE+  '\x2c1a'# -> unI64 11338+  -- GLAGOLITIC CAPITAL LETTER SHTA+  '\x2c1b'# -> unI64 11339+  -- GLAGOLITIC CAPITAL LETTER TSI+  '\x2c1c'# -> unI64 11340+  -- GLAGOLITIC CAPITAL LETTER CHRIVI+  '\x2c1d'# -> unI64 11341+  -- GLAGOLITIC CAPITAL LETTER SHA+  '\x2c1e'# -> unI64 11342+  -- GLAGOLITIC CAPITAL LETTER YERU+  '\x2c1f'# -> unI64 11343+  -- GLAGOLITIC CAPITAL LETTER YERI+  '\x2c20'# -> unI64 11344+  -- GLAGOLITIC CAPITAL LETTER YATI+  '\x2c21'# -> unI64 11345+  -- GLAGOLITIC CAPITAL LETTER SPIDERY HA+  '\x2c22'# -> unI64 11346+  -- GLAGOLITIC CAPITAL LETTER YU+  '\x2c23'# -> unI64 11347+  -- GLAGOLITIC CAPITAL LETTER SMALL YUS+  '\x2c24'# -> unI64 11348+  -- GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL+  '\x2c25'# -> unI64 11349+  -- GLAGOLITIC CAPITAL LETTER YO+  '\x2c26'# -> unI64 11350+  -- GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS+  '\x2c27'# -> unI64 11351+  -- GLAGOLITIC CAPITAL LETTER BIG YUS+  '\x2c28'# -> unI64 11352+  -- GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS+  '\x2c29'# -> unI64 11353+  -- GLAGOLITIC CAPITAL LETTER FITA+  '\x2c2a'# -> unI64 11354+  -- GLAGOLITIC CAPITAL LETTER IZHITSA+  '\x2c2b'# -> unI64 11355+  -- GLAGOLITIC CAPITAL LETTER SHTAPIC+  '\x2c2c'# -> unI64 11356+  -- GLAGOLITIC CAPITAL LETTER TROKUTASTI A+  '\x2c2d'# -> unI64 11357+  -- GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE+  '\x2c2e'# -> unI64 11358+  -- GLAGOLITIC CAPITAL LETTER CAUDATE CHRIVI+  '\x2c2f'# -> unI64 11359+  -- LATIN CAPITAL LETTER L WITH DOUBLE BAR+  '\x2c60'# -> unI64 11361+  -- LATIN CAPITAL LETTER L WITH MIDDLE TILDE+  '\x2c62'# -> unI64 619+  -- LATIN CAPITAL LETTER P WITH STROKE+  '\x2c63'# -> unI64 7549+  -- LATIN CAPITAL LETTER R WITH TAIL+  '\x2c64'# -> unI64 637+  -- LATIN CAPITAL LETTER H WITH DESCENDER+  '\x2c67'# -> unI64 11368+  -- LATIN CAPITAL LETTER K WITH DESCENDER+  '\x2c69'# -> unI64 11370+  -- LATIN CAPITAL LETTER Z WITH DESCENDER+  '\x2c6b'# -> unI64 11372+  -- LATIN CAPITAL LETTER ALPHA+  '\x2c6d'# -> unI64 593+  -- LATIN CAPITAL LETTER M WITH HOOK+  '\x2c6e'# -> unI64 625+  -- LATIN CAPITAL LETTER TURNED A+  '\x2c6f'# -> unI64 592+  -- LATIN CAPITAL LETTER TURNED ALPHA+  '\x2c70'# -> unI64 594+  -- LATIN CAPITAL LETTER W WITH HOOK+  '\x2c72'# -> unI64 11379+  -- LATIN CAPITAL LETTER HALF H+  '\x2c75'# -> unI64 11382+  -- LATIN CAPITAL LETTER S WITH SWASH TAIL+  '\x2c7e'# -> unI64 575+  -- LATIN CAPITAL LETTER Z WITH SWASH TAIL+  '\x2c7f'# -> unI64 576+  -- COPTIC CAPITAL LETTER ALFA+  '\x2c80'# -> unI64 11393+  -- COPTIC CAPITAL LETTER VIDA+  '\x2c82'# -> unI64 11395+  -- COPTIC CAPITAL LETTER GAMMA+  '\x2c84'# -> unI64 11397+  -- COPTIC CAPITAL LETTER DALDA+  '\x2c86'# -> unI64 11399+  -- COPTIC CAPITAL LETTER EIE+  '\x2c88'# -> unI64 11401+  -- COPTIC CAPITAL LETTER SOU+  '\x2c8a'# -> unI64 11403+  -- COPTIC CAPITAL LETTER ZATA+  '\x2c8c'# -> unI64 11405+  -- COPTIC CAPITAL LETTER HATE+  '\x2c8e'# -> unI64 11407+  -- COPTIC CAPITAL LETTER THETHE+  '\x2c90'# -> unI64 11409+  -- COPTIC CAPITAL LETTER IAUDA+  '\x2c92'# -> unI64 11411+  -- COPTIC CAPITAL LETTER KAPA+  '\x2c94'# -> unI64 11413+  -- COPTIC CAPITAL LETTER LAULA+  '\x2c96'# -> unI64 11415+  -- COPTIC CAPITAL LETTER MI+  '\x2c98'# -> unI64 11417+  -- COPTIC CAPITAL LETTER NI+  '\x2c9a'# -> unI64 11419+  -- COPTIC CAPITAL LETTER KSI+  '\x2c9c'# -> unI64 11421+  -- COPTIC CAPITAL LETTER O+  '\x2c9e'# -> unI64 11423+  -- COPTIC CAPITAL LETTER PI+  '\x2ca0'# -> unI64 11425+  -- COPTIC CAPITAL LETTER RO+  '\x2ca2'# -> unI64 11427+  -- COPTIC CAPITAL LETTER SIMA+  '\x2ca4'# -> unI64 11429+  -- COPTIC CAPITAL LETTER TAU+  '\x2ca6'# -> unI64 11431+  -- COPTIC CAPITAL LETTER UA+  '\x2ca8'# -> unI64 11433+  -- COPTIC CAPITAL LETTER FI+  '\x2caa'# -> unI64 11435+  -- COPTIC CAPITAL LETTER KHI+  '\x2cac'# -> unI64 11437+  -- COPTIC CAPITAL LETTER PSI+  '\x2cae'# -> unI64 11439+  -- COPTIC CAPITAL LETTER OOU+  '\x2cb0'# -> unI64 11441+  -- COPTIC CAPITAL LETTER DIALECT-P ALEF+  '\x2cb2'# -> unI64 11443+  -- COPTIC CAPITAL LETTER OLD COPTIC AIN+  '\x2cb4'# -> unI64 11445+  -- COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE+  '\x2cb6'# -> unI64 11447+  -- COPTIC CAPITAL LETTER DIALECT-P KAPA+  '\x2cb8'# -> unI64 11449+  -- COPTIC CAPITAL LETTER DIALECT-P NI+  '\x2cba'# -> unI64 11451+  -- COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI+  '\x2cbc'# -> unI64 11453+  -- COPTIC CAPITAL LETTER OLD COPTIC OOU+  '\x2cbe'# -> unI64 11455+  -- COPTIC CAPITAL LETTER SAMPI+  '\x2cc0'# -> unI64 11457+  -- COPTIC CAPITAL LETTER CROSSED SHEI+  '\x2cc2'# -> unI64 11459+  -- COPTIC CAPITAL LETTER OLD COPTIC SHEI+  '\x2cc4'# -> unI64 11461+  -- COPTIC CAPITAL LETTER OLD COPTIC ESH+  '\x2cc6'# -> unI64 11463+  -- COPTIC CAPITAL LETTER AKHMIMIC KHEI+  '\x2cc8'# -> unI64 11465+  -- COPTIC CAPITAL LETTER DIALECT-P HORI+  '\x2cca'# -> unI64 11467+  -- COPTIC CAPITAL LETTER OLD COPTIC HORI+  '\x2ccc'# -> unI64 11469+  -- COPTIC CAPITAL LETTER OLD COPTIC HA+  '\x2cce'# -> unI64 11471+  -- COPTIC CAPITAL LETTER L-SHAPED HA+  '\x2cd0'# -> unI64 11473+  -- COPTIC CAPITAL LETTER OLD COPTIC HEI+  '\x2cd2'# -> unI64 11475+  -- COPTIC CAPITAL LETTER OLD COPTIC HAT+  '\x2cd4'# -> unI64 11477+  -- COPTIC CAPITAL LETTER OLD COPTIC GANGIA+  '\x2cd6'# -> unI64 11479+  -- COPTIC CAPITAL LETTER OLD COPTIC DJA+  '\x2cd8'# -> unI64 11481+  -- COPTIC CAPITAL LETTER OLD COPTIC SHIMA+  '\x2cda'# -> unI64 11483+  -- COPTIC CAPITAL LETTER OLD NUBIAN SHIMA+  '\x2cdc'# -> unI64 11485+  -- COPTIC CAPITAL LETTER OLD NUBIAN NGI+  '\x2cde'# -> unI64 11487+  -- COPTIC CAPITAL LETTER OLD NUBIAN NYI+  '\x2ce0'# -> unI64 11489+  -- COPTIC CAPITAL LETTER OLD NUBIAN WAU+  '\x2ce2'# -> unI64 11491+  -- COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI+  '\x2ceb'# -> unI64 11500+  -- COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA+  '\x2ced'# -> unI64 11502+  -- COPTIC CAPITAL LETTER BOHAIRIC KHEI+  '\x2cf2'# -> unI64 11507+  -- CYRILLIC CAPITAL LETTER ZEMLYA+  '\xa640'# -> unI64 42561+  -- CYRILLIC CAPITAL LETTER DZELO+  '\xa642'# -> unI64 42563+  -- CYRILLIC CAPITAL LETTER REVERSED DZE+  '\xa644'# -> unI64 42565+  -- CYRILLIC CAPITAL LETTER IOTA+  '\xa646'# -> unI64 42567+  -- CYRILLIC CAPITAL LETTER DJERV+  '\xa648'# -> unI64 42569+  -- CYRILLIC CAPITAL LETTER MONOGRAPH UK+  '\xa64a'# -> unI64 42571+  -- CYRILLIC CAPITAL LETTER BROAD OMEGA+  '\xa64c'# -> unI64 42573+  -- CYRILLIC CAPITAL LETTER NEUTRAL YER+  '\xa64e'# -> unI64 42575+  -- CYRILLIC CAPITAL LETTER YERU WITH BACK YER+  '\xa650'# -> unI64 42577+  -- CYRILLIC CAPITAL LETTER IOTIFIED YAT+  '\xa652'# -> unI64 42579+  -- CYRILLIC CAPITAL LETTER REVERSED YU+  '\xa654'# -> unI64 42581+  -- CYRILLIC CAPITAL LETTER IOTIFIED A+  '\xa656'# -> unI64 42583+  -- CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS+  '\xa658'# -> unI64 42585+  -- CYRILLIC CAPITAL LETTER BLENDED YUS+  '\xa65a'# -> unI64 42587+  -- CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS+  '\xa65c'# -> unI64 42589+  -- CYRILLIC CAPITAL LETTER YN+  '\xa65e'# -> unI64 42591+  -- CYRILLIC CAPITAL LETTER REVERSED TSE+  '\xa660'# -> unI64 42593+  -- CYRILLIC CAPITAL LETTER SOFT DE+  '\xa662'# -> unI64 42595+  -- CYRILLIC CAPITAL LETTER SOFT EL+  '\xa664'# -> unI64 42597+  -- CYRILLIC CAPITAL LETTER SOFT EM+  '\xa666'# -> unI64 42599+  -- CYRILLIC CAPITAL LETTER MONOCULAR O+  '\xa668'# -> unI64 42601+  -- CYRILLIC CAPITAL LETTER BINOCULAR O+  '\xa66a'# -> unI64 42603+  -- CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O+  '\xa66c'# -> unI64 42605+  -- CYRILLIC CAPITAL LETTER DWE+  '\xa680'# -> unI64 42625+  -- CYRILLIC CAPITAL LETTER DZWE+  '\xa682'# -> unI64 42627+  -- CYRILLIC CAPITAL LETTER ZHWE+  '\xa684'# -> unI64 42629+  -- CYRILLIC CAPITAL LETTER CCHE+  '\xa686'# -> unI64 42631+  -- CYRILLIC CAPITAL LETTER DZZE+  '\xa688'# -> unI64 42633+  -- CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK+  '\xa68a'# -> unI64 42635+  -- CYRILLIC CAPITAL LETTER TWE+  '\xa68c'# -> unI64 42637+  -- CYRILLIC CAPITAL LETTER TSWE+  '\xa68e'# -> unI64 42639+  -- CYRILLIC CAPITAL LETTER TSSE+  '\xa690'# -> unI64 42641+  -- CYRILLIC CAPITAL LETTER TCHE+  '\xa692'# -> unI64 42643+  -- CYRILLIC CAPITAL LETTER HWE+  '\xa694'# -> unI64 42645+  -- CYRILLIC CAPITAL LETTER SHWE+  '\xa696'# -> unI64 42647+  -- CYRILLIC CAPITAL LETTER DOUBLE O+  '\xa698'# -> unI64 42649+  -- CYRILLIC CAPITAL LETTER CROSSED O+  '\xa69a'# -> unI64 42651+  -- LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF+  '\xa722'# -> unI64 42787+  -- LATIN CAPITAL LETTER EGYPTOLOGICAL AIN+  '\xa724'# -> unI64 42789+  -- LATIN CAPITAL LETTER HENG+  '\xa726'# -> unI64 42791+  -- LATIN CAPITAL LETTER TZ+  '\xa728'# -> unI64 42793+  -- LATIN CAPITAL LETTER TRESILLO+  '\xa72a'# -> unI64 42795+  -- LATIN CAPITAL LETTER CUATRILLO+  '\xa72c'# -> unI64 42797+  -- LATIN CAPITAL LETTER CUATRILLO WITH COMMA+  '\xa72e'# -> unI64 42799+  -- LATIN CAPITAL LETTER AA+  '\xa732'# -> unI64 42803+  -- LATIN CAPITAL LETTER AO+  '\xa734'# -> unI64 42805+  -- LATIN CAPITAL LETTER AU+  '\xa736'# -> unI64 42807+  -- LATIN CAPITAL LETTER AV+  '\xa738'# -> unI64 42809+  -- LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR+  '\xa73a'# -> unI64 42811+  -- LATIN CAPITAL LETTER AY+  '\xa73c'# -> unI64 42813+  -- LATIN CAPITAL LETTER REVERSED C WITH DOT+  '\xa73e'# -> unI64 42815+  -- LATIN CAPITAL LETTER K WITH STROKE+  '\xa740'# -> unI64 42817+  -- LATIN CAPITAL LETTER K WITH DIAGONAL STROKE+  '\xa742'# -> unI64 42819+  -- LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE+  '\xa744'# -> unI64 42821+  -- LATIN CAPITAL LETTER BROKEN L+  '\xa746'# -> unI64 42823+  -- LATIN CAPITAL LETTER L WITH HIGH STROKE+  '\xa748'# -> unI64 42825+  -- LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY+  '\xa74a'# -> unI64 42827+  -- LATIN CAPITAL LETTER O WITH LOOP+  '\xa74c'# -> unI64 42829+  -- LATIN CAPITAL LETTER OO+  '\xa74e'# -> unI64 42831+  -- LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER+  '\xa750'# -> unI64 42833+  -- LATIN CAPITAL LETTER P WITH FLOURISH+  '\xa752'# -> unI64 42835+  -- LATIN CAPITAL LETTER P WITH SQUIRREL TAIL+  '\xa754'# -> unI64 42837+  -- LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER+  '\xa756'# -> unI64 42839+  -- LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE+  '\xa758'# -> unI64 42841+  -- LATIN CAPITAL LETTER R ROTUNDA+  '\xa75a'# -> unI64 42843+  -- LATIN CAPITAL LETTER RUM ROTUNDA+  '\xa75c'# -> unI64 42845+  -- LATIN CAPITAL LETTER V WITH DIAGONAL STROKE+  '\xa75e'# -> unI64 42847+  -- LATIN CAPITAL LETTER VY+  '\xa760'# -> unI64 42849+  -- LATIN CAPITAL LETTER VISIGOTHIC Z+  '\xa762'# -> unI64 42851+  -- LATIN CAPITAL LETTER THORN WITH STROKE+  '\xa764'# -> unI64 42853+  -- LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER+  '\xa766'# -> unI64 42855+  -- LATIN CAPITAL LETTER VEND+  '\xa768'# -> unI64 42857+  -- LATIN CAPITAL LETTER ET+  '\xa76a'# -> unI64 42859+  -- LATIN CAPITAL LETTER IS+  '\xa76c'# -> unI64 42861+  -- LATIN CAPITAL LETTER CON+  '\xa76e'# -> unI64 42863+  -- LATIN CAPITAL LETTER INSULAR D+  '\xa779'# -> unI64 42874+  -- LATIN CAPITAL LETTER INSULAR F+  '\xa77b'# -> unI64 42876+  -- LATIN CAPITAL LETTER INSULAR G+  '\xa77d'# -> unI64 7545+  -- LATIN CAPITAL LETTER TURNED INSULAR G+  '\xa77e'# -> unI64 42879+  -- LATIN CAPITAL LETTER TURNED L+  '\xa780'# -> unI64 42881+  -- LATIN CAPITAL LETTER INSULAR R+  '\xa782'# -> unI64 42883+  -- LATIN CAPITAL LETTER INSULAR S+  '\xa784'# -> unI64 42885+  -- LATIN CAPITAL LETTER INSULAR T+  '\xa786'# -> unI64 42887+  -- LATIN CAPITAL LETTER SALTILLO+  '\xa78b'# -> unI64 42892+  -- LATIN CAPITAL LETTER TURNED H+  '\xa78d'# -> unI64 613+  -- LATIN CAPITAL LETTER N WITH DESCENDER+  '\xa790'# -> unI64 42897+  -- LATIN CAPITAL LETTER C WITH BAR+  '\xa792'# -> unI64 42899+  -- LATIN CAPITAL LETTER B WITH FLOURISH+  '\xa796'# -> unI64 42903+  -- LATIN CAPITAL LETTER F WITH STROKE+  '\xa798'# -> unI64 42905+  -- LATIN CAPITAL LETTER VOLAPUK AE+  '\xa79a'# -> unI64 42907+  -- LATIN CAPITAL LETTER VOLAPUK OE+  '\xa79c'# -> unI64 42909+  -- LATIN CAPITAL LETTER VOLAPUK UE+  '\xa79e'# -> unI64 42911+  -- LATIN CAPITAL LETTER G WITH OBLIQUE STROKE+  '\xa7a0'# -> unI64 42913+  -- LATIN CAPITAL LETTER K WITH OBLIQUE STROKE+  '\xa7a2'# -> unI64 42915+  -- LATIN CAPITAL LETTER N WITH OBLIQUE STROKE+  '\xa7a4'# -> unI64 42917+  -- LATIN CAPITAL LETTER R WITH OBLIQUE STROKE+  '\xa7a6'# -> unI64 42919+  -- LATIN CAPITAL LETTER S WITH OBLIQUE STROKE+  '\xa7a8'# -> unI64 42921+  -- LATIN CAPITAL LETTER H WITH HOOK+  '\xa7aa'# -> unI64 614+  -- LATIN CAPITAL LETTER REVERSED OPEN E+  '\xa7ab'# -> unI64 604+  -- LATIN CAPITAL LETTER SCRIPT G+  '\xa7ac'# -> unI64 609+  -- LATIN CAPITAL LETTER L WITH BELT+  '\xa7ad'# -> unI64 620+  -- LATIN CAPITAL LETTER SMALL CAPITAL I+  '\xa7ae'# -> unI64 618+  -- LATIN CAPITAL LETTER TURNED K+  '\xa7b0'# -> unI64 670+  -- LATIN CAPITAL LETTER TURNED T+  '\xa7b1'# -> unI64 647+  -- LATIN CAPITAL LETTER J WITH CROSSED-TAIL+  '\xa7b2'# -> unI64 669+  -- LATIN CAPITAL LETTER CHI+  '\xa7b3'# -> unI64 43859+  -- LATIN CAPITAL LETTER BETA+  '\xa7b4'# -> unI64 42933+  -- LATIN CAPITAL LETTER OMEGA+  '\xa7b6'# -> unI64 42935+  -- LATIN CAPITAL LETTER U WITH STROKE+  '\xa7b8'# -> unI64 42937+  -- LATIN CAPITAL LETTER GLOTTAL A+  '\xa7ba'# -> unI64 42939+  -- LATIN CAPITAL LETTER GLOTTAL I+  '\xa7bc'# -> unI64 42941+  -- LATIN CAPITAL LETTER GLOTTAL U+  '\xa7be'# -> unI64 42943+  -- LATIN CAPITAL LETTER OLD POLISH O+  '\xa7c0'# -> unI64 42945+  -- LATIN CAPITAL LETTER ANGLICANA W+  '\xa7c2'# -> unI64 42947+  -- LATIN CAPITAL LETTER C WITH PALATAL HOOK+  '\xa7c4'# -> unI64 42900+  -- LATIN CAPITAL LETTER S WITH HOOK+  '\xa7c5'# -> unI64 642+  -- LATIN CAPITAL LETTER Z WITH PALATAL HOOK+  '\xa7c6'# -> unI64 7566+  -- LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY+  '\xa7c7'# -> unI64 42952+  -- LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY+  '\xa7c9'# -> unI64 42954+  -- LATIN CAPITAL LETTER CLOSED INSULAR G+  '\xa7d0'# -> unI64 42961+  -- LATIN CAPITAL LETTER MIDDLE SCOTS S+  '\xa7d6'# -> unI64 42967+  -- LATIN CAPITAL LETTER SIGMOID S+  '\xa7d8'# -> unI64 42969+  -- LATIN CAPITAL LETTER REVERSED HALF H+  '\xa7f5'# -> unI64 42998+  -- CHEROKEE SMALL LETTER A+  '\xab70'# -> unI64 5024+  -- CHEROKEE SMALL LETTER E+  '\xab71'# -> unI64 5025+  -- CHEROKEE SMALL LETTER I+  '\xab72'# -> unI64 5026+  -- CHEROKEE SMALL LETTER O+  '\xab73'# -> unI64 5027+  -- CHEROKEE SMALL LETTER U+  '\xab74'# -> unI64 5028+  -- CHEROKEE SMALL LETTER V+  '\xab75'# -> unI64 5029+  -- CHEROKEE SMALL LETTER GA+  '\xab76'# -> unI64 5030+  -- CHEROKEE SMALL LETTER KA+  '\xab77'# -> unI64 5031+  -- CHEROKEE SMALL LETTER GE+  '\xab78'# -> unI64 5032+  -- CHEROKEE SMALL LETTER GI+  '\xab79'# -> unI64 5033+  -- CHEROKEE SMALL LETTER GO+  '\xab7a'# -> unI64 5034+  -- CHEROKEE SMALL LETTER GU+  '\xab7b'# -> unI64 5035+  -- CHEROKEE SMALL LETTER GV+  '\xab7c'# -> unI64 5036+  -- CHEROKEE SMALL LETTER HA+  '\xab7d'# -> unI64 5037+  -- CHEROKEE SMALL LETTER HE+  '\xab7e'# -> unI64 5038+  -- CHEROKEE SMALL LETTER HI+  '\xab7f'# -> unI64 5039+  -- CHEROKEE SMALL LETTER HO+  '\xab80'# -> unI64 5040+  -- CHEROKEE SMALL LETTER HU+  '\xab81'# -> unI64 5041+  -- CHEROKEE SMALL LETTER HV+  '\xab82'# -> unI64 5042+  -- CHEROKEE SMALL LETTER LA+  '\xab83'# -> unI64 5043+  -- CHEROKEE SMALL LETTER LE+  '\xab84'# -> unI64 5044+  -- CHEROKEE SMALL LETTER LI+  '\xab85'# -> unI64 5045+  -- CHEROKEE SMALL LETTER LO+  '\xab86'# -> unI64 5046+  -- CHEROKEE SMALL LETTER LU+  '\xab87'# -> unI64 5047+  -- CHEROKEE SMALL LETTER LV+  '\xab88'# -> unI64 5048+  -- CHEROKEE SMALL LETTER MA+  '\xab89'# -> unI64 5049+  -- CHEROKEE SMALL LETTER ME+  '\xab8a'# -> unI64 5050+  -- CHEROKEE SMALL LETTER MI+  '\xab8b'# -> unI64 5051+  -- CHEROKEE SMALL LETTER MO+  '\xab8c'# -> unI64 5052+  -- CHEROKEE SMALL LETTER MU+  '\xab8d'# -> unI64 5053+  -- CHEROKEE SMALL LETTER NA+  '\xab8e'# -> unI64 5054+  -- CHEROKEE SMALL LETTER HNA+  '\xab8f'# -> unI64 5055+  -- CHEROKEE SMALL LETTER NAH+  '\xab90'# -> unI64 5056+  -- CHEROKEE SMALL LETTER NE+  '\xab91'# -> unI64 5057+  -- CHEROKEE SMALL LETTER NI+  '\xab92'# -> unI64 5058+  -- CHEROKEE SMALL LETTER NO+  '\xab93'# -> unI64 5059+  -- CHEROKEE SMALL LETTER NU+  '\xab94'# -> unI64 5060+  -- CHEROKEE SMALL LETTER NV+  '\xab95'# -> unI64 5061+  -- CHEROKEE SMALL LETTER QUA+  '\xab96'# -> unI64 5062+  -- CHEROKEE SMALL LETTER QUE+  '\xab97'# -> unI64 5063+  -- CHEROKEE SMALL LETTER QUI+  '\xab98'# -> unI64 5064+  -- CHEROKEE SMALL LETTER QUO+  '\xab99'# -> unI64 5065+  -- CHEROKEE SMALL LETTER QUU+  '\xab9a'# -> unI64 5066+  -- CHEROKEE SMALL LETTER QUV+  '\xab9b'# -> unI64 5067+  -- CHEROKEE SMALL LETTER SA+  '\xab9c'# -> unI64 5068+  -- CHEROKEE SMALL LETTER S+  '\xab9d'# -> unI64 5069+  -- CHEROKEE SMALL LETTER SE+  '\xab9e'# -> unI64 5070+  -- CHEROKEE SMALL LETTER SI+  '\xab9f'# -> unI64 5071+  -- CHEROKEE SMALL LETTER SO+  '\xaba0'# -> unI64 5072+  -- CHEROKEE SMALL LETTER SU+  '\xaba1'# -> unI64 5073+  -- CHEROKEE SMALL LETTER SV+  '\xaba2'# -> unI64 5074+  -- CHEROKEE SMALL LETTER DA+  '\xaba3'# -> unI64 5075+  -- CHEROKEE SMALL LETTER TA+  '\xaba4'# -> unI64 5076+  -- CHEROKEE SMALL LETTER DE+  '\xaba5'# -> unI64 5077+  -- CHEROKEE SMALL LETTER TE+  '\xaba6'# -> unI64 5078+  -- CHEROKEE SMALL LETTER DI+  '\xaba7'# -> unI64 5079+  -- CHEROKEE SMALL LETTER TI+  '\xaba8'# -> unI64 5080+  -- CHEROKEE SMALL LETTER DO+  '\xaba9'# -> unI64 5081+  -- CHEROKEE SMALL LETTER DU+  '\xabaa'# -> unI64 5082+  -- CHEROKEE SMALL LETTER DV+  '\xabab'# -> unI64 5083+  -- CHEROKEE SMALL LETTER DLA+  '\xabac'# -> unI64 5084+  -- CHEROKEE SMALL LETTER TLA+  '\xabad'# -> unI64 5085+  -- CHEROKEE SMALL LETTER TLE+  '\xabae'# -> unI64 5086+  -- CHEROKEE SMALL LETTER TLI+  '\xabaf'# -> unI64 5087+  -- CHEROKEE SMALL LETTER TLO+  '\xabb0'# -> unI64 5088+  -- CHEROKEE SMALL LETTER TLU+  '\xabb1'# -> unI64 5089+  -- CHEROKEE SMALL LETTER TLV+  '\xabb2'# -> unI64 5090+  -- CHEROKEE SMALL LETTER TSA+  '\xabb3'# -> unI64 5091+  -- CHEROKEE SMALL LETTER TSE+  '\xabb4'# -> unI64 5092+  -- CHEROKEE SMALL LETTER TSI+  '\xabb5'# -> unI64 5093+  -- CHEROKEE SMALL LETTER TSO+  '\xabb6'# -> unI64 5094+  -- CHEROKEE SMALL LETTER TSU+  '\xabb7'# -> unI64 5095+  -- CHEROKEE SMALL LETTER TSV+  '\xabb8'# -> unI64 5096+  -- CHEROKEE SMALL LETTER WA+  '\xabb9'# -> unI64 5097+  -- CHEROKEE SMALL LETTER WE+  '\xabba'# -> unI64 5098+  -- CHEROKEE SMALL LETTER WI+  '\xabbb'# -> unI64 5099+  -- CHEROKEE SMALL LETTER WO+  '\xabbc'# -> unI64 5100+  -- CHEROKEE SMALL LETTER WU+  '\xabbd'# -> unI64 5101+  -- CHEROKEE SMALL LETTER WV+  '\xabbe'# -> unI64 5102+  -- CHEROKEE SMALL LETTER YA+  '\xabbf'# -> unI64 5103+  -- LATIN SMALL LIGATURE FF+  '\xfb00'# -> unI64 213909606+  -- LATIN SMALL LIGATURE FI+  '\xfb01'# -> unI64 220201062+  -- LATIN SMALL LIGATURE FL+  '\xfb02'# -> unI64 226492518+  -- LATIN SMALL LIGATURE FFI+  '\xfb03'# -> unI64 461795097575526+  -- LATIN SMALL LIGATURE FFL+  '\xfb04'# -> unI64 474989237108838+  -- LATIN SMALL LIGATURE LONG S T+  '\xfb05'# -> unI64 243269747+  -- LATIN SMALL LIGATURE ST+  '\xfb06'# -> unI64 243269747+  -- ARMENIAN SMALL LIGATURE MEN NOW+  '\xfb13'# -> unI64 2931819892+  -- ARMENIAN SMALL LIGATURE MEN ECH+  '\xfb14'# -> unI64 2896168308+  -- ARMENIAN SMALL LIGATURE MEN INI+  '\xfb15'# -> unI64 2908751220+  -- ARMENIAN SMALL LIGATURE VEW NOW+  '\xfb16'# -> unI64 2931819902+  -- ARMENIAN SMALL LIGATURE MEN XEH+  '\xfb17'# -> unI64 2912945524+  -- FULLWIDTH LATIN CAPITAL LETTER A+  '\xff21'# -> unI64 65345+  -- FULLWIDTH LATIN CAPITAL LETTER B+  '\xff22'# -> unI64 65346+  -- FULLWIDTH LATIN CAPITAL LETTER C+  '\xff23'# -> unI64 65347+  -- FULLWIDTH LATIN CAPITAL LETTER D+  '\xff24'# -> unI64 65348+  -- FULLWIDTH LATIN CAPITAL LETTER E+  '\xff25'# -> unI64 65349+  -- FULLWIDTH LATIN CAPITAL LETTER F+  '\xff26'# -> unI64 65350+  -- FULLWIDTH LATIN CAPITAL LETTER G+  '\xff27'# -> unI64 65351+  -- FULLWIDTH LATIN CAPITAL LETTER H+  '\xff28'# -> unI64 65352+  -- FULLWIDTH LATIN CAPITAL LETTER I+  '\xff29'# -> unI64 65353+  -- FULLWIDTH LATIN CAPITAL LETTER J+  '\xff2a'# -> unI64 65354+  -- FULLWIDTH LATIN CAPITAL LETTER K+  '\xff2b'# -> unI64 65355+  -- FULLWIDTH LATIN CAPITAL LETTER L+  '\xff2c'# -> unI64 65356+  -- FULLWIDTH LATIN CAPITAL LETTER M+  '\xff2d'# -> unI64 65357+  -- FULLWIDTH LATIN CAPITAL LETTER N+  '\xff2e'# -> unI64 65358+  -- FULLWIDTH LATIN CAPITAL LETTER O+  '\xff2f'# -> unI64 65359+  -- FULLWIDTH LATIN CAPITAL LETTER P+  '\xff30'# -> unI64 65360+  -- FULLWIDTH LATIN CAPITAL LETTER Q+  '\xff31'# -> unI64 65361+  -- FULLWIDTH LATIN CAPITAL LETTER R+  '\xff32'# -> unI64 65362+  -- FULLWIDTH LATIN CAPITAL LETTER S+  '\xff33'# -> unI64 65363+  -- FULLWIDTH LATIN CAPITAL LETTER T+  '\xff34'# -> unI64 65364+  -- FULLWIDTH LATIN CAPITAL LETTER U+  '\xff35'# -> unI64 65365+  -- FULLWIDTH LATIN CAPITAL LETTER V+  '\xff36'# -> unI64 65366+  -- FULLWIDTH LATIN CAPITAL LETTER W+  '\xff37'# -> unI64 65367+  -- FULLWIDTH LATIN CAPITAL LETTER X+  '\xff38'# -> unI64 65368+  -- FULLWIDTH LATIN CAPITAL LETTER Y+  '\xff39'# -> unI64 65369+  -- FULLWIDTH LATIN CAPITAL LETTER Z+  '\xff3a'# -> unI64 65370+  -- DESERET CAPITAL LETTER LONG I+  '\x10400'# -> unI64 66600+  -- DESERET CAPITAL LETTER LONG E+  '\x10401'# -> unI64 66601+  -- DESERET CAPITAL LETTER LONG A+  '\x10402'# -> unI64 66602+  -- DESERET CAPITAL LETTER LONG AH+  '\x10403'# -> unI64 66603+  -- DESERET CAPITAL LETTER LONG O+  '\x10404'# -> unI64 66604+  -- DESERET CAPITAL LETTER LONG OO+  '\x10405'# -> unI64 66605+  -- DESERET CAPITAL LETTER SHORT I+  '\x10406'# -> unI64 66606+  -- DESERET CAPITAL LETTER SHORT E+  '\x10407'# -> unI64 66607+  -- DESERET CAPITAL LETTER SHORT A+  '\x10408'# -> unI64 66608+  -- DESERET CAPITAL LETTER SHORT AH+  '\x10409'# -> unI64 66609+  -- DESERET CAPITAL LETTER SHORT O+  '\x1040a'# -> unI64 66610+  -- DESERET CAPITAL LETTER SHORT OO+  '\x1040b'# -> unI64 66611+  -- DESERET CAPITAL LETTER AY+  '\x1040c'# -> unI64 66612+  -- DESERET CAPITAL LETTER OW+  '\x1040d'# -> unI64 66613+  -- DESERET CAPITAL LETTER WU+  '\x1040e'# -> unI64 66614+  -- DESERET CAPITAL LETTER YEE+  '\x1040f'# -> unI64 66615+  -- DESERET CAPITAL LETTER H+  '\x10410'# -> unI64 66616+  -- DESERET CAPITAL LETTER PEE+  '\x10411'# -> unI64 66617+  -- DESERET CAPITAL LETTER BEE+  '\x10412'# -> unI64 66618+  -- DESERET CAPITAL LETTER TEE+  '\x10413'# -> unI64 66619+  -- DESERET CAPITAL LETTER DEE+  '\x10414'# -> unI64 66620+  -- DESERET CAPITAL LETTER CHEE+  '\x10415'# -> unI64 66621+  -- DESERET CAPITAL LETTER JEE+  '\x10416'# -> unI64 66622+  -- DESERET CAPITAL LETTER KAY+  '\x10417'# -> unI64 66623+  -- DESERET CAPITAL LETTER GAY+  '\x10418'# -> unI64 66624+  -- DESERET CAPITAL LETTER EF+  '\x10419'# -> unI64 66625+  -- DESERET CAPITAL LETTER VEE+  '\x1041a'# -> unI64 66626+  -- DESERET CAPITAL LETTER ETH+  '\x1041b'# -> unI64 66627+  -- DESERET CAPITAL LETTER THEE+  '\x1041c'# -> unI64 66628+  -- DESERET CAPITAL LETTER ES+  '\x1041d'# -> unI64 66629+  -- DESERET CAPITAL LETTER ZEE+  '\x1041e'# -> unI64 66630+  -- DESERET CAPITAL LETTER ESH+  '\x1041f'# -> unI64 66631+  -- DESERET CAPITAL LETTER ZHEE+  '\x10420'# -> unI64 66632+  -- DESERET CAPITAL LETTER ER+  '\x10421'# -> unI64 66633+  -- DESERET CAPITAL LETTER EL+  '\x10422'# -> unI64 66634+  -- DESERET CAPITAL LETTER EM+  '\x10423'# -> unI64 66635+  -- DESERET CAPITAL LETTER EN+  '\x10424'# -> unI64 66636+  -- DESERET CAPITAL LETTER ENG+  '\x10425'# -> unI64 66637+  -- DESERET CAPITAL LETTER OI+  '\x10426'# -> unI64 66638+  -- DESERET CAPITAL LETTER EW+  '\x10427'# -> unI64 66639+  -- OSAGE CAPITAL LETTER A+  '\x104b0'# -> unI64 66776+  -- OSAGE CAPITAL LETTER AI+  '\x104b1'# -> unI64 66777+  -- OSAGE CAPITAL LETTER AIN+  '\x104b2'# -> unI64 66778+  -- OSAGE CAPITAL LETTER AH+  '\x104b3'# -> unI64 66779+  -- OSAGE CAPITAL LETTER BRA+  '\x104b4'# -> unI64 66780+  -- OSAGE CAPITAL LETTER CHA+  '\x104b5'# -> unI64 66781+  -- OSAGE CAPITAL LETTER EHCHA+  '\x104b6'# -> unI64 66782+  -- OSAGE CAPITAL LETTER E+  '\x104b7'# -> unI64 66783+  -- OSAGE CAPITAL LETTER EIN+  '\x104b8'# -> unI64 66784+  -- OSAGE CAPITAL LETTER HA+  '\x104b9'# -> unI64 66785+  -- OSAGE CAPITAL LETTER HYA+  '\x104ba'# -> unI64 66786+  -- OSAGE CAPITAL LETTER I+  '\x104bb'# -> unI64 66787+  -- OSAGE CAPITAL LETTER KA+  '\x104bc'# -> unI64 66788+  -- OSAGE CAPITAL LETTER EHKA+  '\x104bd'# -> unI64 66789+  -- OSAGE CAPITAL LETTER KYA+  '\x104be'# -> unI64 66790+  -- OSAGE CAPITAL LETTER LA+  '\x104bf'# -> unI64 66791+  -- OSAGE CAPITAL LETTER MA+  '\x104c0'# -> unI64 66792+  -- OSAGE CAPITAL LETTER NA+  '\x104c1'# -> unI64 66793+  -- OSAGE CAPITAL LETTER O+  '\x104c2'# -> unI64 66794+  -- OSAGE CAPITAL LETTER OIN+  '\x104c3'# -> unI64 66795+  -- OSAGE CAPITAL LETTER PA+  '\x104c4'# -> unI64 66796+  -- OSAGE CAPITAL LETTER EHPA+  '\x104c5'# -> unI64 66797+  -- OSAGE CAPITAL LETTER SA+  '\x104c6'# -> unI64 66798+  -- OSAGE CAPITAL LETTER SHA+  '\x104c7'# -> unI64 66799+  -- OSAGE CAPITAL LETTER TA+  '\x104c8'# -> unI64 66800+  -- OSAGE CAPITAL LETTER EHTA+  '\x104c9'# -> unI64 66801+  -- OSAGE CAPITAL LETTER TSA+  '\x104ca'# -> unI64 66802+  -- OSAGE CAPITAL LETTER EHTSA+  '\x104cb'# -> unI64 66803+  -- OSAGE CAPITAL LETTER TSHA+  '\x104cc'# -> unI64 66804+  -- OSAGE CAPITAL LETTER DHA+  '\x104cd'# -> unI64 66805+  -- OSAGE CAPITAL LETTER U+  '\x104ce'# -> unI64 66806+  -- OSAGE CAPITAL LETTER WA+  '\x104cf'# -> unI64 66807+  -- OSAGE CAPITAL LETTER KHA+  '\x104d0'# -> unI64 66808+  -- OSAGE CAPITAL LETTER GHA+  '\x104d1'# -> unI64 66809+  -- OSAGE CAPITAL LETTER ZA+  '\x104d2'# -> unI64 66810+  -- OSAGE CAPITAL LETTER ZHA+  '\x104d3'# -> unI64 66811+  -- VITHKUQI CAPITAL LETTER A+  '\x10570'# -> unI64 66967+  -- VITHKUQI CAPITAL LETTER BBE+  '\x10571'# -> unI64 66968+  -- VITHKUQI CAPITAL LETTER BE+  '\x10572'# -> unI64 66969+  -- VITHKUQI CAPITAL LETTER CE+  '\x10573'# -> unI64 66970+  -- VITHKUQI CAPITAL LETTER CHE+  '\x10574'# -> unI64 66971+  -- VITHKUQI CAPITAL LETTER DE+  '\x10575'# -> unI64 66972+  -- VITHKUQI CAPITAL LETTER DHE+  '\x10576'# -> unI64 66973+  -- VITHKUQI CAPITAL LETTER EI+  '\x10577'# -> unI64 66974+  -- VITHKUQI CAPITAL LETTER E+  '\x10578'# -> unI64 66975+  -- VITHKUQI CAPITAL LETTER FE+  '\x10579'# -> unI64 66976+  -- VITHKUQI CAPITAL LETTER GA+  '\x1057a'# -> unI64 66977+  -- VITHKUQI CAPITAL LETTER HA+  '\x1057c'# -> unI64 66979+  -- VITHKUQI CAPITAL LETTER HHA+  '\x1057d'# -> unI64 66980+  -- VITHKUQI CAPITAL LETTER I+  '\x1057e'# -> unI64 66981+  -- VITHKUQI CAPITAL LETTER IJE+  '\x1057f'# -> unI64 66982+  -- VITHKUQI CAPITAL LETTER JE+  '\x10580'# -> unI64 66983+  -- VITHKUQI CAPITAL LETTER KA+  '\x10581'# -> unI64 66984+  -- VITHKUQI CAPITAL LETTER LA+  '\x10582'# -> unI64 66985+  -- VITHKUQI CAPITAL LETTER LLA+  '\x10583'# -> unI64 66986+  -- VITHKUQI CAPITAL LETTER ME+  '\x10584'# -> unI64 66987+  -- VITHKUQI CAPITAL LETTER NE+  '\x10585'# -> unI64 66988+  -- VITHKUQI CAPITAL LETTER NJE+  '\x10586'# -> unI64 66989+  -- VITHKUQI CAPITAL LETTER O+  '\x10587'# -> unI64 66990+  -- VITHKUQI CAPITAL LETTER PE+  '\x10588'# -> unI64 66991+  -- VITHKUQI CAPITAL LETTER QA+  '\x10589'# -> unI64 66992+  -- VITHKUQI CAPITAL LETTER RE+  '\x1058a'# -> unI64 66993+  -- VITHKUQI CAPITAL LETTER SE+  '\x1058c'# -> unI64 66995+  -- VITHKUQI CAPITAL LETTER SHE+  '\x1058d'# -> unI64 66996+  -- VITHKUQI CAPITAL LETTER TE+  '\x1058e'# -> unI64 66997+  -- VITHKUQI CAPITAL LETTER THE+  '\x1058f'# -> unI64 66998+  -- VITHKUQI CAPITAL LETTER U+  '\x10590'# -> unI64 66999+  -- VITHKUQI CAPITAL LETTER VE+  '\x10591'# -> unI64 67000+  -- VITHKUQI CAPITAL LETTER XE+  '\x10592'# -> unI64 67001+  -- VITHKUQI CAPITAL LETTER Y+  '\x10594'# -> unI64 67003+  -- VITHKUQI CAPITAL LETTER ZE+  '\x10595'# -> unI64 67004+  -- OLD HUNGARIAN CAPITAL LETTER A+  '\x10c80'# -> unI64 68800+  -- OLD HUNGARIAN CAPITAL LETTER AA+  '\x10c81'# -> unI64 68801+  -- OLD HUNGARIAN CAPITAL LETTER EB+  '\x10c82'# -> unI64 68802+  -- OLD HUNGARIAN CAPITAL LETTER AMB+  '\x10c83'# -> unI64 68803+  -- OLD HUNGARIAN CAPITAL LETTER EC+  '\x10c84'# -> unI64 68804+  -- OLD HUNGARIAN CAPITAL LETTER ENC+  '\x10c85'# -> unI64 68805+  -- OLD HUNGARIAN CAPITAL LETTER ECS+  '\x10c86'# -> unI64 68806+  -- OLD HUNGARIAN CAPITAL LETTER ED+  '\x10c87'# -> unI64 68807+  -- OLD HUNGARIAN CAPITAL LETTER AND+  '\x10c88'# -> unI64 68808+  -- OLD HUNGARIAN CAPITAL LETTER E+  '\x10c89'# -> unI64 68809+  -- OLD HUNGARIAN CAPITAL LETTER CLOSE E+  '\x10c8a'# -> unI64 68810+  -- OLD HUNGARIAN CAPITAL LETTER EE+  '\x10c8b'# -> unI64 68811+  -- OLD HUNGARIAN CAPITAL LETTER EF+  '\x10c8c'# -> unI64 68812+  -- OLD HUNGARIAN CAPITAL LETTER EG+  '\x10c8d'# -> unI64 68813+  -- OLD HUNGARIAN CAPITAL LETTER EGY+  '\x10c8e'# -> unI64 68814+  -- OLD HUNGARIAN CAPITAL LETTER EH+  '\x10c8f'# -> unI64 68815+  -- OLD HUNGARIAN CAPITAL LETTER I+  '\x10c90'# -> unI64 68816+  -- OLD HUNGARIAN CAPITAL LETTER II+  '\x10c91'# -> unI64 68817+  -- OLD HUNGARIAN CAPITAL LETTER EJ+  '\x10c92'# -> unI64 68818+  -- OLD HUNGARIAN CAPITAL LETTER EK+  '\x10c93'# -> unI64 68819+  -- OLD HUNGARIAN CAPITAL LETTER AK+  '\x10c94'# -> unI64 68820+  -- OLD HUNGARIAN CAPITAL LETTER UNK+  '\x10c95'# -> unI64 68821+  -- OLD HUNGARIAN CAPITAL LETTER EL+  '\x10c96'# -> unI64 68822+  -- OLD HUNGARIAN CAPITAL LETTER ELY+  '\x10c97'# -> unI64 68823+  -- OLD HUNGARIAN CAPITAL LETTER EM+  '\x10c98'# -> unI64 68824+  -- OLD HUNGARIAN CAPITAL LETTER EN+  '\x10c99'# -> unI64 68825+  -- OLD HUNGARIAN CAPITAL LETTER ENY+  '\x10c9a'# -> unI64 68826+  -- OLD HUNGARIAN CAPITAL LETTER O+  '\x10c9b'# -> unI64 68827+  -- OLD HUNGARIAN CAPITAL LETTER OO+  '\x10c9c'# -> unI64 68828+  -- OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG OE+  '\x10c9d'# -> unI64 68829+  -- OLD HUNGARIAN CAPITAL LETTER RUDIMENTA OE+  '\x10c9e'# -> unI64 68830+  -- OLD HUNGARIAN CAPITAL LETTER OEE+  '\x10c9f'# -> unI64 68831+  -- OLD HUNGARIAN CAPITAL LETTER EP+  '\x10ca0'# -> unI64 68832+  -- OLD HUNGARIAN CAPITAL LETTER EMP+  '\x10ca1'# -> unI64 68833+  -- OLD HUNGARIAN CAPITAL LETTER ER+  '\x10ca2'# -> unI64 68834+  -- OLD HUNGARIAN CAPITAL LETTER SHORT ER+  '\x10ca3'# -> unI64 68835+  -- OLD HUNGARIAN CAPITAL LETTER ES+  '\x10ca4'# -> unI64 68836+  -- OLD HUNGARIAN CAPITAL LETTER ESZ+  '\x10ca5'# -> unI64 68837+  -- OLD HUNGARIAN CAPITAL LETTER ET+  '\x10ca6'# -> unI64 68838+  -- OLD HUNGARIAN CAPITAL LETTER ENT+  '\x10ca7'# -> unI64 68839+  -- OLD HUNGARIAN CAPITAL LETTER ETY+  '\x10ca8'# -> unI64 68840+  -- OLD HUNGARIAN CAPITAL LETTER ECH+  '\x10ca9'# -> unI64 68841+  -- OLD HUNGARIAN CAPITAL LETTER U+  '\x10caa'# -> unI64 68842+  -- OLD HUNGARIAN CAPITAL LETTER UU+  '\x10cab'# -> unI64 68843+  -- OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG UE+  '\x10cac'# -> unI64 68844+  -- OLD HUNGARIAN CAPITAL LETTER RUDIMENTA UE+  '\x10cad'# -> unI64 68845+  -- OLD HUNGARIAN CAPITAL LETTER EV+  '\x10cae'# -> unI64 68846+  -- OLD HUNGARIAN CAPITAL LETTER EZ+  '\x10caf'# -> unI64 68847+  -- OLD HUNGARIAN CAPITAL LETTER EZS+  '\x10cb0'# -> unI64 68848+  -- OLD HUNGARIAN CAPITAL LETTER ENT-SHAPED SIGN+  '\x10cb1'# -> unI64 68849+  -- OLD HUNGARIAN CAPITAL LETTER US+  '\x10cb2'# -> unI64 68850+  -- WARANG CITI CAPITAL LETTER NGAA+  '\x118a0'# -> unI64 71872+  -- WARANG CITI CAPITAL LETTER A+  '\x118a1'# -> unI64 71873+  -- WARANG CITI CAPITAL LETTER WI+  '\x118a2'# -> unI64 71874+  -- WARANG CITI CAPITAL LETTER YU+  '\x118a3'# -> unI64 71875+  -- WARANG CITI CAPITAL LETTER YA+  '\x118a4'# -> unI64 71876+  -- WARANG CITI CAPITAL LETTER YO+  '\x118a5'# -> unI64 71877+  -- WARANG CITI CAPITAL LETTER II+  '\x118a6'# -> unI64 71878+  -- WARANG CITI CAPITAL LETTER UU+  '\x118a7'# -> unI64 71879+  -- WARANG CITI CAPITAL LETTER E+  '\x118a8'# -> unI64 71880+  -- WARANG CITI CAPITAL LETTER O+  '\x118a9'# -> unI64 71881+  -- WARANG CITI CAPITAL LETTER ANG+  '\x118aa'# -> unI64 71882+  -- WARANG CITI CAPITAL LETTER GA+  '\x118ab'# -> unI64 71883+  -- WARANG CITI CAPITAL LETTER KO+  '\x118ac'# -> unI64 71884+  -- WARANG CITI CAPITAL LETTER ENY+  '\x118ad'# -> unI64 71885+  -- WARANG CITI CAPITAL LETTER YUJ+  '\x118ae'# -> unI64 71886+  -- WARANG CITI CAPITAL LETTER UC+  '\x118af'# -> unI64 71887+  -- WARANG CITI CAPITAL LETTER ENN+  '\x118b0'# -> unI64 71888+  -- WARANG CITI CAPITAL LETTER ODD+  '\x118b1'# -> unI64 71889+  -- WARANG CITI CAPITAL LETTER TTE+  '\x118b2'# -> unI64 71890+  -- WARANG CITI CAPITAL LETTER NUNG+  '\x118b3'# -> unI64 71891+  -- WARANG CITI CAPITAL LETTER DA+  '\x118b4'# -> unI64 71892+  -- WARANG CITI CAPITAL LETTER AT+  '\x118b5'# -> unI64 71893+  -- WARANG CITI CAPITAL LETTER AM+  '\x118b6'# -> unI64 71894+  -- WARANG CITI CAPITAL LETTER BU+  '\x118b7'# -> unI64 71895+  -- WARANG CITI CAPITAL LETTER PU+  '\x118b8'# -> unI64 71896+  -- WARANG CITI CAPITAL LETTER HIYO+  '\x118b9'# -> unI64 71897+  -- WARANG CITI CAPITAL LETTER HOLO+  '\x118ba'# -> unI64 71898+  -- WARANG CITI CAPITAL LETTER HORR+  '\x118bb'# -> unI64 71899+  -- WARANG CITI CAPITAL LETTER HAR+  '\x118bc'# -> unI64 71900+  -- WARANG CITI CAPITAL LETTER SSUU+  '\x118bd'# -> unI64 71901+  -- WARANG CITI CAPITAL LETTER SII+  '\x118be'# -> unI64 71902+  -- WARANG CITI CAPITAL LETTER VIYO+  '\x118bf'# -> unI64 71903+  -- MEDEFAIDRIN CAPITAL LETTER M+  '\x16e40'# -> unI64 93792+  -- MEDEFAIDRIN CAPITAL LETTER S+  '\x16e41'# -> unI64 93793+  -- MEDEFAIDRIN CAPITAL LETTER V+  '\x16e42'# -> unI64 93794+  -- MEDEFAIDRIN CAPITAL LETTER W+  '\x16e43'# -> unI64 93795+  -- MEDEFAIDRIN CAPITAL LETTER ATIU+  '\x16e44'# -> unI64 93796+  -- MEDEFAIDRIN CAPITAL LETTER Z+  '\x16e45'# -> unI64 93797+  -- MEDEFAIDRIN CAPITAL LETTER KP+  '\x16e46'# -> unI64 93798+  -- MEDEFAIDRIN CAPITAL LETTER P+  '\x16e47'# -> unI64 93799+  -- MEDEFAIDRIN CAPITAL LETTER T+  '\x16e48'# -> unI64 93800+  -- MEDEFAIDRIN CAPITAL LETTER G+  '\x16e49'# -> unI64 93801+  -- MEDEFAIDRIN CAPITAL LETTER F+  '\x16e4a'# -> unI64 93802+  -- MEDEFAIDRIN CAPITAL LETTER I+  '\x16e4b'# -> unI64 93803+  -- MEDEFAIDRIN CAPITAL LETTER K+  '\x16e4c'# -> unI64 93804+  -- MEDEFAIDRIN CAPITAL LETTER A+  '\x16e4d'# -> unI64 93805+  -- MEDEFAIDRIN CAPITAL LETTER J+  '\x16e4e'# -> unI64 93806+  -- MEDEFAIDRIN CAPITAL LETTER E+  '\x16e4f'# -> unI64 93807+  -- MEDEFAIDRIN CAPITAL LETTER B+  '\x16e50'# -> unI64 93808+  -- MEDEFAIDRIN CAPITAL LETTER C+  '\x16e51'# -> unI64 93809+  -- MEDEFAIDRIN CAPITAL LETTER U+  '\x16e52'# -> unI64 93810+  -- MEDEFAIDRIN CAPITAL LETTER YU+  '\x16e53'# -> unI64 93811+  -- MEDEFAIDRIN CAPITAL LETTER L+  '\x16e54'# -> unI64 93812+  -- MEDEFAIDRIN CAPITAL LETTER Q+  '\x16e55'# -> unI64 93813+  -- MEDEFAIDRIN CAPITAL LETTER HP+  '\x16e56'# -> unI64 93814+  -- MEDEFAIDRIN CAPITAL LETTER NY+  '\x16e57'# -> unI64 93815+  -- MEDEFAIDRIN CAPITAL LETTER X+  '\x16e58'# -> unI64 93816+  -- MEDEFAIDRIN CAPITAL LETTER D+  '\x16e59'# -> unI64 93817+  -- MEDEFAIDRIN CAPITAL LETTER OE+  '\x16e5a'# -> unI64 93818+  -- MEDEFAIDRIN CAPITAL LETTER N+  '\x16e5b'# -> unI64 93819+  -- MEDEFAIDRIN CAPITAL LETTER R+  '\x16e5c'# -> unI64 93820+  -- MEDEFAIDRIN CAPITAL LETTER O+  '\x16e5d'# -> unI64 93821+  -- MEDEFAIDRIN CAPITAL LETTER AI+  '\x16e5e'# -> unI64 93822+  -- MEDEFAIDRIN CAPITAL LETTER Y+  '\x16e5f'# -> unI64 93823+  -- ADLAM CAPITAL LETTER ALIF+  '\x1e900'# -> unI64 125218+  -- ADLAM CAPITAL LETTER DAALI+  '\x1e901'# -> unI64 125219+  -- ADLAM CAPITAL LETTER LAAM+  '\x1e902'# -> unI64 125220+  -- ADLAM CAPITAL LETTER MIIM+  '\x1e903'# -> unI64 125221+  -- ADLAM CAPITAL LETTER BA+  '\x1e904'# -> unI64 125222+  -- ADLAM CAPITAL LETTER SINNYIIYHE+  '\x1e905'# -> unI64 125223+  -- ADLAM CAPITAL LETTER PE+  '\x1e906'# -> unI64 125224+  -- ADLAM CAPITAL LETTER BHE+  '\x1e907'# -> unI64 125225+  -- ADLAM CAPITAL LETTER RA+  '\x1e908'# -> unI64 125226+  -- ADLAM CAPITAL LETTER E+  '\x1e909'# -> unI64 125227+  -- ADLAM CAPITAL LETTER FA+  '\x1e90a'# -> unI64 125228+  -- ADLAM CAPITAL LETTER I+  '\x1e90b'# -> unI64 125229+  -- ADLAM CAPITAL LETTER O+  '\x1e90c'# -> unI64 125230+  -- ADLAM CAPITAL LETTER DHA+  '\x1e90d'# -> unI64 125231+  -- ADLAM CAPITAL LETTER YHE+  '\x1e90e'# -> unI64 125232+  -- ADLAM CAPITAL LETTER WAW+  '\x1e90f'# -> unI64 125233+  -- ADLAM CAPITAL LETTER NUN+  '\x1e910'# -> unI64 125234+  -- ADLAM CAPITAL LETTER KAF+  '\x1e911'# -> unI64 125235+  -- ADLAM CAPITAL LETTER YA+  '\x1e912'# -> unI64 125236+  -- ADLAM CAPITAL LETTER U+  '\x1e913'# -> unI64 125237+  -- ADLAM CAPITAL LETTER JIIM+  '\x1e914'# -> unI64 125238+  -- ADLAM CAPITAL LETTER CHI+  '\x1e915'# -> unI64 125239+  -- ADLAM CAPITAL LETTER HA+  '\x1e916'# -> unI64 125240+  -- ADLAM CAPITAL LETTER QAAF+  '\x1e917'# -> unI64 125241+  -- ADLAM CAPITAL LETTER GA+  '\x1e918'# -> unI64 125242+  -- ADLAM CAPITAL LETTER NYA+  '\x1e919'# -> unI64 125243+  -- ADLAM CAPITAL LETTER TU+  '\x1e91a'# -> unI64 125244+  -- ADLAM CAPITAL LETTER NHA+  '\x1e91b'# -> unI64 125245+  -- ADLAM CAPITAL LETTER VA+  '\x1e91c'# -> unI64 125246+  -- ADLAM CAPITAL LETTER KHA+  '\x1e91d'# -> unI64 125247+  -- ADLAM CAPITAL LETTER GBE+  '\x1e91e'# -> unI64 125248+  -- ADLAM CAPITAL LETTER ZAL+  '\x1e91f'# -> unI64 125249+  -- ADLAM CAPITAL LETTER KPO+  '\x1e920'# -> unI64 125250+  -- ADLAM CAPITAL LETTER SHA   '\x1e921'# -> unI64 125251   _ -> unI64 0
src/Data/Text/Internal/Fusion/Common.hs view
@@ -716,7 +716,7 @@       Yield x' s' -> f x (loop_foldr1 x' s') {-# INLINE [0] foldr1 #-} --- | intercalate str strs interts the stream str in between the streams strs and+-- | intercalate str strs inserts the stream str in between the streams strs and -- concatenates the result. -- -- __Properties__@@ -834,7 +834,7 @@ -- __Properties__ -- -- @'head' ('scanl' f z xs) = z@--- +-- -- @'last' ('scanl' f z xs) = 'foldl' f z xs@ scanl :: (Char -> Char -> Char) -> Char -> Stream Char -> Stream Char scanl f z0 (Stream next0 s0 len) = Stream next (Scan1 z0 s0) (len+1) -- HINT maybe too low@@ -1008,7 +1008,7 @@ {-# INLINE [0] dropWhile #-}  -- | /O(n)/ The 'isPrefixOf' function takes two 'Stream's and returns--- 'True' iff the first is a prefix of the second.+-- 'True' if and only if the first is a prefix of the second. -- -- __Properties__ --
src/Data/Text/Internal/Search.hs view
@@ -25,8 +25,8 @@ -- * D. M. Sunday: A Very Fast Substring Search Algorithm. --   Communications of the ACM, 33, 8, 132-142 (1990) ----- * F. Lundh: The Fast Search Algorithm.---   <http://effbot.org/zone/stringlib.htm> (2006)+-- * F. Lundh:+--   <http://web.archive.org/web/20201107074620/http://effbot.org/zone/stringlib.htm The Fast Search Algorithm>. (2006)  module Data.Text.Internal.Search     (
src/Data/Text/Lazy.hs view
@@ -146,6 +146,8 @@     , stripEnd     , splitAt     , span+    , spanM+    , spanEndM     , breakOn     , breakOnEnd     , break@@ -200,6 +202,7 @@  import Prelude (Char, Bool(..), Maybe(..), String,                 Eq, (==), Ord(..), Ordering(..), Read(..), Show(..),+                Monad(..), pure, (<$>),                 (&&), (+), (-), (.), ($), (++),                 error, flip, fmap, fromIntegral, not, otherwise, quot) import qualified Prelude as P@@ -241,7 +244,7 @@ -- $fusion -- -- Starting from @text-1.3@ fusion is no longer implicit,--- and pipelines of transormations usually allocate intermediate 'Text' values.+-- and pipelines of transformations usually allocate intermediate 'Text' values. -- Users, who observe significant changes to performances, -- are encouraged to use fusion framework explicitly, employing -- "Data.Text.Internal.Fusion" and "Data.Text.Internal.Fusion.Common".@@ -272,6 +275,8 @@ -- <http://unicode.org/reports/tr36/#Deletion_of_Noncharacters Unicode Technical Report 36, §3.5 >.)  -- $setup+-- >>> :set -package transformers+-- >>> import Control.Monad.Trans.State -- >>> import Data.Text -- >>> import qualified Data.Text as T -- >>> :seti -XOverloadedStrings@@ -311,10 +316,21 @@     mappend = (<>)     mconcat = concat +-- | Performs replacement on invalid scalar values:+--+-- >>> :set -XOverloadedStrings+-- >>> "\55555" :: Data.Text.Lazy.Text+-- "\65533" instance IsString Text where     fromString = pack --- | @since 1.2.0.0+-- | Performs replacement on invalid scalar values:+--+-- >>> :set -XOverloadedLists+-- >>> ['\55555'] :: Data.Text.Lazy.Text+-- "\65533"+--+-- @since 1.2.0.0 instance Exts.IsList Text where     type Item Text = Char     fromList       = pack@@ -346,12 +362,9 @@     _ -> error "Data.Text.Lazy.Text.gunfold"   dataTypeOf _   = textDataType --- | This instance has similar considerations to the 'Data' instance:--- it preserves abstraction at the cost of inefficiency.------ @since 1.2.4.0+-- | @since 1.2.4.0 instance TH.Lift Text where-  lift = TH.appE (TH.varE 'pack) . TH.stringE . unpack+  lift = TH.appE (TH.varE 'fromStrict) . TH.lift . toStrict #if MIN_VERSION_template_haskell(2,17,0)   liftTyped = TH.unsafeCodeCoerce . TH.lift #elif MIN_VERSION_template_haskell(2,16,0)@@ -370,7 +383,10 @@  -- | /O(n)/ Convert a 'String' into a 'Text'. ----- Performs replacement on invalid scalar values.+-- Performs replacement on invalid scalar values, so @'unpack' . 'pack'@ is not 'id':+--+-- >>> Data.Text.Lazy.unpack (Data.Text.Lazy.pack "\55555")+-- "\65533" pack :: #if defined(ASSERTS)   HasCallStack =>@@ -539,13 +555,17 @@     length (intercalate s ts) = let lenS = length s in max 0 (P.sum (P.map (\t -> length t + lenS) ts) - lenS)   #-} --- | /O(n)/ Compare the count of characters in a 'Text' to a number.+-- | /O(min(n,c))/ Compare the count of characters in a 'Text' to a number. --+-- @+-- 'compareLength' t c = 'P.compare' ('length' t) c+-- @+-- -- This function gives the same answer as comparing against the result -- of 'length', but can short circuit if the count of characters is -- greater than the number, and hence be more efficient. compareLength :: Text -> Int64 -> Ordering-compareLength t n = S.compareLengthI (stream t) n+compareLength t c = S.compareLengthI (stream t) c {-# INLINE [1] compareLength #-}  -- We don't apply those otherwise appealing length-to-compareLength@@ -783,6 +803,16 @@ -- | /O(n)/ 'foldr', applied to a binary operator, a starting value -- (typically the right-identity of the operator), and a 'Text', -- reduces the 'Text' using the binary operator, from right to left.+--+-- 'foldr' is lazy like 'Data.List.foldr' for lists: evaluation actually+-- traverses the 'Text' from left to right, only as far as it needs to.+--+-- For example, 'head' can be defined with /O(1)/ complexity using 'foldr':+--+-- @+-- head :: Text -> Char+-- head = foldr const (error "head empty")+-- @ foldr :: (Char -> a -> a) -> a -> Text -> a foldr f z t = S.foldr f z (stream t) {-# INLINE foldr #-}@@ -1285,7 +1315,7 @@ -- | /O(n)/ 'span', applied to a predicate @p@ and text @t@, returns -- a pair whose first element is the longest prefix (possibly empty) -- of @t@ of elements that satisfy @p@, and whose second is the--- remainder of the list.+-- remainder of the text. -- -- >>> T.span (=='0') "000AB" -- ("000","AB")@@ -1293,6 +1323,53 @@ span p = break (not . p) {-# INLINE span #-} +-- | /O(length of prefix)/ 'spanM', applied to a monadic predicate @p@,+-- a text @t@, returns a pair @(t1, t2)@ where @t1@ is the longest prefix of+-- @t@ whose elements satisfy @p@, and @t2@ is the remainder of the text.+--+-- >>> T.spanM (\c -> state $ \i -> (fromEnum c == i, i+1)) "abcefg" `runState` 97+-- (("abc","efg"),101)+--+-- 'span' is 'spanM' specialized to 'Data.Functor.Identity.Identity':+--+-- @+-- -- for all p :: Char -> Bool+-- 'span' p = 'Data.Functor.Identity.runIdentity' . 'spanM' ('pure' . p)+-- @+--+-- @since 2.0.1+spanM :: Monad m => (Char -> m Bool) -> Text -> m (Text, Text)+spanM p t0 = go t0+  where+    go Empty = pure (empty, empty)+    go (Chunk t ts) = do+        (t1, t2) <- T.spanM p t+        if T.null t2 then first (chunk t) <$> go ts+        else pure (chunk t1 empty, Chunk t2 ts)+{-# INLINE spanM #-}++-- | /O(length of suffix)/ 'spanEndM', applied to a monadic predicate @p@,+-- a text @t@, returns a pair @(t1, t2)@ where @t2@ is the longest suffix of+-- @t@ whose elements satisfy @p@, and @t1@ is the remainder of the text.+--+-- >>> T.spanEndM (\c -> state $ \i -> (fromEnum c == i, i-1)) "tuvxyz" `runState` 122+-- (("tuv","xyz"),118)+--+-- @+-- 'spanEndM' p . 'reverse' = fmap ('Data.Bifunctor.bimap' 'reverse' 'reverse') . 'spanM' p+-- @+--+-- @since 2.0.1+spanEndM :: Monad m => (Char -> m Bool) -> Text -> m (Text, Text)+spanEndM p t0 = go t0+  where+    go Empty = pure (empty, empty)+    go (Chunk t ts) = do+        (t3, t4) <- go ts+        if null t3 then (\(t1, t2) -> (chunk t1 empty, chunk t2 ts)) <$> T.spanEndM p t+        else pure (Chunk t t3, t4)+{-# INLINE spanEndM #-}+ -- | The 'group' function takes a 'Text' and returns a list of 'Text's -- such that the concatenation of the result is equal to the argument. -- Moreover, each sublist in the result contains only equal elements.@@ -1460,7 +1537,7 @@ {-# INLINE unwords #-}  -- | /O(n)/ The 'isPrefixOf' function takes two 'Text's and returns--- 'True' iff the first is a prefix of the second.+-- 'True' if and only if the first is a prefix of the second. isPrefixOf :: Text -> Text -> Bool isPrefixOf Empty _  = True isPrefixOf _ Empty  = False@@ -1472,17 +1549,16 @@         (yh,yt) = T.splitAt lx y         lx = T.length x         ly = T.length y-{-# INLINE [1] isPrefixOf #-}  -- | /O(n)/ The 'isSuffixOf' function takes two 'Text's and returns--- 'True' iff the first is a suffix of the second.+-- 'True' if and only if the first is a suffix of the second. isSuffixOf :: Text -> Text -> Bool isSuffixOf x y = reverse x `isPrefixOf` reverse y {-# INLINE isSuffixOf #-} -- TODO: a better implementation  -- | /O(n+m)/ The 'isInfixOf' function takes two 'Text's and returns--- 'True' iff the first is contained, wholly and intact, anywhere+-- 'True' if and only if the first is contained, wholly and intact, anywhere -- within the second. -- -- This function is strict in its first argument, and lazy in its
src/Data/Text/Lazy/Encoding.hs view
@@ -19,24 +19,30 @@     (     -- * Decoding ByteStrings to Text     -- $strict-      decodeASCII-    , decodeLatin1-    , decodeUtf8-    , decodeUtf16LE-    , decodeUtf16BE-    , decodeUtf32LE-    , decodeUtf32BE -    -- ** Catchable failure+    -- ** Total Functions #total#+    -- $total+      decodeLatin1++    -- *** Catchable failure     , decodeUtf8' -    -- ** Controllable error handling+    -- *** Controllable error handling     , decodeUtf8With     , decodeUtf16LEWith     , decodeUtf16BEWith     , decodeUtf32LEWith     , decodeUtf32BEWith +    -- ** Partial Functions+    -- $partial+    , decodeASCII+    , decodeUtf8+    , decodeUtf16LE+    , decodeUtf16BE+    , decodeUtf32LE+    , decodeUtf32BE+     -- * Encoding Text to ByteStrings     , encodeUtf8     , encodeUtf16LE@@ -77,6 +83,17 @@ -- For instance, 'decodeUtf8' will throw an exception, but -- 'decodeUtf8With' allows the programmer to determine what to do on a -- decoding error.++-- $total+--+-- These functions facilitate total decoding and should be preferred+-- over their partial counterparts.++-- $partial+--+-- These functions are partial and should only be used with great caution+-- (preferably not at all). See "Data.Text.Lazy.Encoding#g:total" for better+-- solutions.  -- | Decode a 'ByteString' containing 7-bit ASCII -- encoded text.
src/Data/Text/Lazy/Read.hs view
@@ -36,7 +36,7 @@  -- | Read some text.  If the read succeeds, return its value and the -- remaining text, otherwise an error message.-type Reader a = IReader Text a+type Reader a = Text -> Either String (a, Text) type Parser = IParser Text  -- | Read a decimal integer.  The input must begin with at least one
src/Data/Text/Read.hs view
@@ -33,7 +33,7 @@  -- | Read some text.  If the read succeeds, return its value and the -- remaining text, otherwise an error message.-type Reader a = IReader Text a+type Reader a = Text -> Either String (a, Text) type Parser a = IParser Text a  -- | Read a decimal integer.  The input must begin with at least one
src/Data/Text/Show.hs view
@@ -16,7 +16,8 @@  module Data.Text.Show     (-      singleton+      addrLen+    , singleton     , unpack     , unpackCString#     , unpackCStringAscii#
tests/Tests/Lift.hs view
@@ -19,10 +19,16 @@   , testCase "strict0" $ assertEqual "strict0"       $(lift ("f\0o\1o\2" :: S.Text))       ("f\0o\1o\2" :: S.Text)+  , testCase "strict-nihao" $ assertEqual "strict-nihao"+      $(lift ("\20320\22909" :: S.Text))+      ("\20320\22909" :: S.Text)   , testCase "lazy" $ assertEqual "lazy"       $(lift ("foo" :: L.Text))       ("foo" :: L.Text)   , testCase "lazy0" $ assertEqual "lazy0"       $(lift ("f\0o\1o\2" :: L.Text))       ("f\0o\1o\2" :: L.Text)+  , testCase "lazy-nihao" $ assertEqual "lazy-nihao"+      $(lift ("\20320\22909" :: L.Text))+      ("\20320\22909" :: L.Text)   ]
tests/Tests/Properties/Folds.hs view
@@ -8,8 +8,10 @@     ) where  import Control.Arrow (second)+import Control.Exception (ErrorCall, evaluate, try) import Data.Word (Word8, Word16) import Test.Tasty (TestTree, testGroup)+import Test.Tasty.HUnit (testCase, assertFailure) import Test.Tasty.QuickCheck (testProperty, Small(..), (===), applyFun, applyFun2) import Tests.QuickCheckUtils import qualified Data.List as L@@ -47,6 +49,8 @@     where _types  = f :: Char -> Char -> Char t_foldr (applyFun2 -> f) z       = L.foldr f z  `eqP` T.foldr f z     where _types  = f :: Char -> Char -> Char+t_foldr' (applyFun2 -> f) z       = L.foldr f z  `eqP` T.foldr' f z+    where _types  = f :: Char -> Char -> Char tl_foldr (applyFun2 -> f) z      = L.foldr f z  `eqPSqrt` TL.foldr f z     where _types  = f :: Char -> Char -> Char sf_foldr1 (applyFun -> p) (applyFun2 -> f) =@@ -54,6 +58,23 @@ t_foldr1 (applyFun2 -> f)        = L.foldr1 f   `eqP` T.foldr1 f tl_foldr1 (applyFun2 -> f)       = L.foldr1 f   `eqPSqrt` TL.foldr1 f +-- Distinguish foldl/foldr from foldl'/foldr'++fold_apart :: IO ()+fold_apart = do+    ok (T.foldr  f () (T.pack "az"))+    ko (T.foldr' f () (T.pack "az"))+    ok (T.foldl  (flip f) () (T.pack "za"))+    ko (T.foldl' (flip f) () (T.pack "za"))+  where+    f c _ = if c == 'z' then error "catchme" else ()+    ok = evaluate+    ko t = do+        x <- try (evaluate t)+        case x :: Either ErrorCall () of+            Left _ -> pure ()+            Right _ -> assertFailure "test should have failed but didn't"+ -- Special folds  s_concat_s        = (L.concat . unSqrt) `eq` (unpackS . S.unstream . S.concat . map packS . unSqrt)@@ -187,10 +208,12 @@       testProperty "tl_foldl1'" tl_foldl1',       testProperty "sf_foldr" sf_foldr,       testProperty "t_foldr" t_foldr,+      testProperty "t_foldr'" t_foldr',       testProperty "tl_foldr" tl_foldr,       testProperty "sf_foldr1" sf_foldr1,       testProperty "t_foldr1" t_foldr1,       testProperty "tl_foldr1" tl_foldr1,+      testCase "fold_apart" fold_apart,        testGroup "special" [         testProperty "s_concat_s" s_concat_s,
tests/Tests/Properties/LowLevel.hs view
@@ -66,6 +66,9 @@ t_takeWord8 m t = takeWord8 m t `T.isPrefixOf` t t_take_drop_8 (Small n) t = T.append (takeWord8 n t) (dropWord8 n t) === t t_use_from t = ioProperty $ (==t) <$> useAsPtr t fromPtr+t_use_from0 t = ioProperty $ do+  let t' = t `T.snoc` '\0'+  (== T.takeWhile (/= '\0') t') <$> useAsPtr t' (const . fromPtr0)  t_copy t = T.copy t === t @@ -118,6 +121,7 @@       testProperty "t_takeWord8" t_takeWord8,       testProperty "t_take_drop_8" t_take_drop_8,       testProperty "t_use_from" t_use_from,+      testProperty "t_use_from0" t_use_from0,       testProperty "t_copy" t_copy,       testCase "t_literal_length1" t_literal_length1,       testCase "t_literal_length2" t_literal_length2,
tests/Tests/Properties/Substrings.hs view
@@ -7,6 +7,7 @@     ( testSubstrings     ) where +import Control.Monad.Trans.State (State, state, runState) import Data.Char (isSpace) import Test.QuickCheck import Test.Tasty (TestTree, testGroup)@@ -157,6 +158,37 @@ tl_inits          = L.inits       `eqP` (map unpackS . TL.inits) t_tails           = L.tails       `eqP` (map unpackS . T.tails) tl_tails          = L.tails       `eqPSqrt` (map unpackS . TL.tails)++spanML :: Monad m => (b -> m Bool) -> [b] -> m ([b], [b])+spanML p s = go [] s+  where+    go acc [] = pure (reverse acc, [])+    go acc ccs@(c : cs) = do+      continue <- p c+      if continue then go (c : acc) cs else pure (reverse acc, ccs)++spanEndML :: Monad m => (b -> m Bool) -> [b] -> m ([b], [b])+spanEndML p s = (\(s1, s2) -> (reverse s2, reverse s1)) <$> spanML p (reverse s)++eqSP :: Stringy s => (String -> State Int (String, String)) -> (s -> State Int (s, s)) -> Property+eqSP a b = property $ ((`runState` 0) . a) `eqP` ((`runState` 0) . (fmap unpack2 . b))++t_spanM (applyFun2 -> f')+  = let f c = state $ \i -> (getSkewed (f' i c), i+1) in+    spanML f `eqSP` T.spanM f++t_spanEndM (applyFun2 -> f')+  = let f c = state $ \i -> (getSkewed (f' i c), i+1) in+        spanEndML f `eqSP` T.spanEndM f++tl_spanM (applyFun2 -> f')+  = let f c = state $ \i -> (getSkewed (f' i c), i+1) in+    spanML f `eqSP` TL.spanM f++tl_spanEndM (applyFun2 -> f')+  = let f c = state $ \i -> (getSkewed (f' i c), i+1) in+    spanEndML f `eqSP` TL.spanEndM f+ t_findAppendId = \(Sqrt (NotEmpty s)) ts ->     let t = T.intercalate s ts     in conjoin $ map (=== t) $ map (uncurry T.append) (T.breakOnAll s t)@@ -327,7 +359,11 @@       testProperty "t_inits" t_inits,       testProperty "tl_inits" tl_inits,       testProperty "t_tails" t_tails,-      testProperty "tl_tails" tl_tails+      testProperty "tl_tails" tl_tails,+      testProperty "t_spanM" t_spanM,+      testProperty "t_spanEndM" t_spanEndM,+      testProperty "tl_spanM" tl_spanM,+      testProperty "tl_spanEndM" tl_spanEndM     ],      testGroup "breaking many" [
tests/Tests/Properties/Text.hs view
@@ -128,6 +128,11 @@           -- https://en.wikipedia.org/wiki/Georgian_Extended           isGeorgian c = c >= '\4256' && c < '\4352' +t_toUpper_idempotent t = T.toUpper (T.toUpper t) === T.toUpper t+t_toLower_idempotent t = T.toLower (T.toLower t) === T.toLower t+t_toTitle_idempotent t = T.toTitle (T.toTitle t) === T.toTitle t+t_toCaseFold_idempotent t = T.toCaseFold (T.toCaseFold t) === T.toCaseFold t+ ascii_toLower (ASCIIString xs) = map C.toLower xs === T.unpack (T.toLower (T.pack xs)) ascii_toUpper (ASCIIString xs) = map C.toUpper xs === T.unpack (T.toUpper (T.pack xs)) ascii_toCaseFold (ASCIIString xs) = map C.toLower xs === T.unpack (T.toCaseFold (T.pack xs))@@ -331,6 +336,10 @@         testProperty "tl_toUpper_upper" tl_toUpper_upper,         testProperty "t_toTitle_title" t_toTitle_title,         testProperty "t_toTitle_1stNotLower" t_toTitle_1stNotLower,+        testProperty "t_toUpper_idempotent" t_toUpper_idempotent,+        testProperty "t_toLower_idempotent" t_toLower_idempotent,+        testProperty "t_toTitle_idempotent" t_toTitle_idempotent,+        testProperty "t_toCaseFold_idempotent" t_toCaseFold_idempotent,         testProperty "ascii_toLower" ascii_toLower,         testProperty "ascii_toUpper" ascii_toUpper,         testProperty "ascii_toTitle" ascii_toTitle,
tests/Tests/Properties/Transcoding.hs view
@@ -160,7 +160,7 @@     upTo n gen = do       k <- choose (0,n)       vectorOf k gen-    -- Data.Text.Internal.Encoding.Utf8.ord{2,3,4} withous sanity checks+    -- Data.Text.Internal.Encoding.Utf8.ord{2,3,4} without sanity checks     ord2_ n = map fromIntegral [(n `shiftR` 6) + 0xC0, (n .&. 0x3F) + 0x80]     ord3_ n = map fromIntegral [(n `shiftR` 12) + 0xE0, ((n `shiftR` 6) .&. 0x3F) + 0x80, (n .&. 0x3F) + 0x80]     ord4_ n = map fromIntegral [(n `shiftR` 18) + 0xF0, ((n `shiftR` 12) .&. 0x3F) + 0x80, ((n `shiftR` 6) .&. 0x3F) + 0x80, (n .&. 0x3F) + 0x80]
tests/Tests/QuickCheckUtils.hs view
@@ -12,6 +12,7 @@     , NotEmpty(..)     , Sqrt(..)     , SpacyString(..)+    , SkewedBool(..)      , Precision(..)     , precision@@ -277,3 +278,9 @@ instance Arbitrary SpacyString where   arbitrary = SpacyString `fmap` listOf arbitrarySpacyChar   shrink (SpacyString xs) = SpacyString `fmap` shrink xs++newtype SkewedBool = Skewed { getSkewed :: Bool }+  deriving Show++instance Arbitrary SkewedBool where+  arbitrary = Skewed <$> frequency [(1, pure False), (5, pure True)]
text.cabal view
@@ -1,6 +1,6 @@ cabal-version:  2.2 name:           text-version:        2.0+version:        2.0.1  homepage:       https://github.com/haskell/text bug-reports:    https://github.com/haskell/text/issues@@ -58,7 +58,7 @@ extra-source-files:     -- scripts/CaseFolding.txt     -- scripts/SpecialCasing.txt-    README.markdown+    README.md     changelog.md     scripts/*.hs     simdutf/LICENSE-APACHE@@ -90,17 +90,47 @@                  cbits/validate_utf8.cpp     cxx-options: -std=c++17     cpp-options: -DSIMDUTF-    if os(windows)-      if arch(x86_64)-        extra-libraries: stdc++-6 gcc_s_seh-1+    if impl(ghc >= 9.4)+      build-depends: system-cxx-std-lib == 1.0+    elif os(darwin) || os(freebsd)+      extra-libraries: c+++    elif os(openbsd)+      extra-libraries: c++ c++abi pthread+    elif os(windows)+      -- GHC's Windows toolchain is based on clang/libc++ in GHC 9.4 and later+      if impl(ghc < 9.3)+        extra-libraries: stdc++       else-        extra-libraries: stdc++-6 gcc_s_dw2-1+        extra-libraries: c++ c++abi+    elif os(linux)+      extra-libraries: stdc++     else-      if os(darwin)-        extra-libraries: c++-      else-        extra-libraries: stdc+++      -- This is supposed to be under arch(wasm32), but we can't do that yet+      -- since cabal check would fail with unrecognized arch, see+      -- https://github.com/haskell/cabal/pull/8096 for the fix.+      -- TODO: when a new cabal release is out with that fix, bump cabal in CI+      -- and add proper arch(wasm32) declaration here.+      cpp-options: -DSIMDUTF_NO_THREADS+      cxx-options: -fno-exceptions+      extra-libraries: c++ c++abi +  -- Certain version of GHC crash on Windows, when TemplateHaskell encounters C++.+  -- https://gitlab.haskell.org/ghc/ghc/-/issues/19417+  if flag(simdutf) && os(windows) && impl(ghc == 8.0.1 || >= 8.8 && < 8.10.5 || == 9.0.1)+    build-depends: base < 0++  -- For GHC 8.2, 8.6.3 and 8.10.1 even TH + C crash Windows linker.+  if os(windows) && impl(ghc >= 8.2 && < 8.4 || == 8.6.3 || == 8.10.1)+    build-depends: base < 0++  -- GHC 8.10 has linking issues (probably TH-related) on ARM.+  if (arch(aarch64) || arch(arm)) && impl(ghc == 8.10.*)+    build-depends: base < 0++  -- Subword primitives in GHC 9.2.1 are broken on ARM platforms.+  if (arch(aarch64) || arch(arm)) && impl(ghc == 9.2.1)+    build-depends: base < 0+   exposed-modules:     Data.Text     Data.Text.Array@@ -155,17 +185,15 @@     binary           >= 0.5 && < 0.9,     bytestring       >= 0.10.4 && < 0.12,     deepseq          >= 1.1 && < 1.5,-    ghc-prim         >= 0.2 && < 0.9,-    template-haskell >= 2.5 && < 2.19+    ghc-prim         >= 0.2 && < 0.10,+    template-haskell >= 2.5 && < 2.20    ghc-options: -Wall -fwarn-tabs -funbox-strict-fields -O2   if flag(developer)     ghc-options: -fno-ignore-asserts     cpp-options: -DASSERTS--  -- https://gitlab.haskell.org/ghc/ghc/-/issues/19900-  if os(windows)-    extra-libraries: gcc_s+    if impl(ghc >= 9.2.2)+      ghc-options: -fcheck-prim-bounds    default-language: Haskell2010   default-extensions:@@ -229,11 +257,12 @@     tasty-hunit,     tasty-quickcheck,     template-haskell,+    transformers,     text -  -- Starting from 9.2 ghc library depends on parsec,-  -- which causes circular dependency.-  if impl(ghc < 9.2)+  -- Plugin infrastructure does not work properly in 8.0.1 and 8.6.1, and+  -- ghc-9.2.1 library depends on parsec, which causes a circular dependency.+  if impl(ghc >= 8.0.2 && < 8.6 || >= 8.6.2 && < 9.2 || >= 9.2.2)     build-depends: tasty-inspection-testing    default-language: Haskell2010