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 +0/−30
- README.md +31/−0
- benchmarks/haskell/Benchmarks/Pure.hs +1/−1
- benchmarks/haskell/Benchmarks/Search.hs +2/−2
- cbits/measure_off.c +73/−5
- changelog.md +14/−2
- scripts/CaseFolding.hs +1/−8
- simdutf/simdutf.cpp +9/−315
- simdutf/simdutf.h +86/−28
- src/Data/Text.hs +128/−16
- src/Data/Text/Encoding.hs +32/−13
- src/Data/Text/Foreign.hs +30/−2
- src/Data/Text/Internal/Builder.hs +11/−0
- src/Data/Text/Internal/Fusion/CaseMapping.hs +3059/−1827
- src/Data/Text/Internal/Fusion/Common.hs +3/−3
- src/Data/Text/Internal/Search.hs +2/−2
- src/Data/Text/Lazy.hs +91/−15
- src/Data/Text/Lazy/Encoding.hs +26/−9
- src/Data/Text/Lazy/Read.hs +1/−1
- src/Data/Text/Read.hs +1/−1
- src/Data/Text/Show.hs +2/−1
- tests/Tests/Lift.hs +6/−0
- tests/Tests/Properties/Folds.hs +23/−0
- tests/Tests/Properties/LowLevel.hs +4/−0
- tests/Tests/Properties/Substrings.hs +37/−1
- tests/Tests/Properties/Text.hs +9/−0
- tests/Tests/Properties/Transcoding.hs +1/−1
- tests/Tests/QuickCheckUtils.hs +7/−0
- text.cabal +48/−19
− README.markdown
@@ -1,30 +0,0 @@-# text [](https://hackage.haskell.org/package/text) [](http://stackage.org/lts/package/text) [](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 [](https://hackage.haskell.org/package/text) [](http://stackage.org/lts/package/text) [](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