Upgrade rust/crates/idna to 0.2.2 am: c87e8a2c29 am: eb620b6e1c am: 3894828fa2

Original change: https://android-review.googlesource.com/c/platform/external/rust/crates/idna/+/1662677

Change-Id: I8d9cdf6b5adee73592bfbf199aea0cd02d40cf6c
diff --git a/.cargo_vcs_info.json b/.cargo_vcs_info.json
index 76a0740..9926491 100644
--- a/.cargo_vcs_info.json
+++ b/.cargo_vcs_info.json
@@ -1,5 +1,5 @@
 {
   "git": {
-    "sha1": "3628c22324691f98753c54bcd4bc0d61c4ffef65"
+    "sha1": "5e929762c9319f4f5b8d0311c920a9069d3d2e10"
   }
 }
diff --git a/Android.bp b/Android.bp
index a80b2bf..cf14bf9 100644
--- a/Android.bp
+++ b/Android.bp
@@ -1,4 +1,5 @@
 // This file is generated by cargo2android.py --run --device --dependencies --patch=patches/Android.bp.patch.
+// Do not modify this file as changes will be overridden on upgrade.
 
 package {
     default_applicable_licenses: ["external_rust_crates_idna_license"],
diff --git a/Cargo.toml b/Cargo.toml
index 3fe2bf7..5666892 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -13,7 +13,7 @@
 [package]
 edition = "2018"
 name = "idna"
-version = "0.2.1"
+version = "0.2.2"
 authors = ["The rust-url developers"]
 autotests = false
 description = "IDNA (Internationalizing Domain Names in Applications) and Punycode."
@@ -40,7 +40,7 @@
 version = "0.3"
 
 [dependencies.unicode-normalization]
-version = "0.1.5"
+version = "0.1.17"
 [dev-dependencies.assert_matches]
 version = "1.3"
 
diff --git a/Cargo.toml.orig b/Cargo.toml.orig
index d831811..8aba16d 100644
--- a/Cargo.toml.orig
+++ b/Cargo.toml.orig
@@ -1,6 +1,6 @@
 [package]
 name = "idna"
-version = "0.2.1"
+version = "0.2.2"
 authors = ["The rust-url developers"]
 description = "IDNA (Internationalizing Domain Names in Applications) and Punycode."
 repository = "https://github.com/servo/rust-url/"
@@ -26,7 +26,7 @@
 
 [dependencies]
 unicode-bidi = "0.3"
-unicode-normalization = "0.1.5"
+unicode-normalization = "0.1.17"
 matches = "0.1"
 
 [[bench]]
diff --git a/METADATA b/METADATA
index d5179cb..b73f242 100644
--- a/METADATA
+++ b/METADATA
@@ -7,13 +7,13 @@
   }
   url {
     type: ARCHIVE
-    value: "https://static.crates.io/crates/idna/idna-0.2.1.crate"
+    value: "https://static.crates.io/crates/idna/idna-0.2.2.crate"
   }
-  version: "0.2.1"
+  version: "0.2.2"
   license_type: NOTICE
   last_upgrade_date {
     year: 2021
-    month: 2
-    day: 9
+    month: 4
+    day: 1
   }
 }
diff --git a/TEST_MAPPING b/TEST_MAPPING
index 871b501..5da7ae4 100644
--- a/TEST_MAPPING
+++ b/TEST_MAPPING
@@ -2,10 +2,16 @@
 {
   "presubmit": [
     {
-      "name": "quiche_device_test_src_lib"
+      "name": "url_device_test_tests_unit"
+    },
+    {
+      "name": "url_device_test_tests_data"
     },
     {
       "name": "url_device_test_src_lib"
+    },
+    {
+      "name": "quiche_device_test_src_lib"
     }
   ]
 }
diff --git a/src/make_uts46_mapping_table.py b/src/make_uts46_mapping_table.py
index 27f1328..4f72bbd 100644
--- a/src/make_uts46_mapping_table.py
+++ b/src/make_uts46_mapping_table.py
@@ -78,6 +78,12 @@
             unicode_str = u''.join(char(c) for c in fields[2].strip().split(' '))
         elif mapping == "Deviation":
             unicode_str = u''
+
+    if len(fields) > 3:
+        assert fields[3].strip() in ('NV8', 'XV8'), fields[3]
+        assert mapping == 'Valid', mapping
+        mapping = 'DisallowedIdna2008'
+
     ranges.append((first, last, mapping, unicode_str))
 
 def mergeable_key(r):
@@ -86,7 +92,7 @@
     # These types have associated data, so we should not merge them.
     if mapping in ('Mapped', 'Deviation', 'DisallowedStd3Mapped'):
         return r
-    assert mapping in ('Valid', 'Ignored', 'Disallowed', 'DisallowedStd3Valid')
+    assert mapping in ('Valid', 'Ignored', 'Disallowed', 'DisallowedStd3Valid', 'DisallowedIdna2008')
     return mapping
 
 grouped_ranges = itertools.groupby(ranges, key=mergeable_key)
@@ -116,11 +122,7 @@
         # Assert we're seeing the surrogate case here.
         assert last_char == 0xd7ff
         assert next_char == 0xe000
-    first = group[0][0]
-    last = group[-1][1]
-    mapping = group[0][2]
-    unicode_str = group[0][3]
-    optimized_ranges.append((first, last, mapping, unicode_str))
+    optimized_ranges.append((group[0][0], group[-1][1]) + group[0][2:])
 
 def is_single_char_range(r):
     (first, last, _, _) = r
@@ -148,30 +150,22 @@
 
 optimized_ranges = list(merge_single_char_ranges(optimized_ranges))
 
-
-print("static TABLE: &[Range] = &[")
-
-for ranges in optimized_ranges:
-    first = ranges[0][0]
-    last = ranges[-1][1]
-    print("    Range { from: '%s', to: '%s', }," % (escape_char(char(first)),
-                                                            escape_char(char(last))))
-
-print("];\n")
-
-print("static INDEX_TABLE: &[u16] = &[")
-
 SINGLE_MARKER = 1 << 15
 
+print("static TABLE: &[(char, u16)] = &[")
+
 offset = 0
 for ranges in optimized_ranges:
     assert offset < SINGLE_MARKER
 
     block_len = len(ranges)
     single = SINGLE_MARKER if block_len == 1 else 0
-    print("    %s," % (offset | single))
+    index = offset | single
     offset += block_len
 
+    start = escape_char(char(ranges[0][0]))
+    print("    ('%s', %s)," % (start, index))
+
 print("];\n")
 
 print("static MAPPING_TABLE: &[Mapping] = &[")
diff --git a/src/uts46.rs b/src/uts46.rs
index 5501a65..0b7d27a 100644
--- a/src/uts46.rs
+++ b/src/uts46.rs
@@ -11,7 +11,6 @@
 
 use self::Mapping::*;
 use crate::punycode;
-use std::cmp::Ordering::{Equal, Greater, Less};
 use std::{error::Error as StdError, fmt};
 use unicode_bidi::{bidi_class, BidiClass};
 use unicode_normalization::char::is_combining_mark;
@@ -48,38 +47,26 @@
     Disallowed,
     DisallowedStd3Valid,
     DisallowedStd3Mapped(StringTableSlice),
-}
-
-struct Range {
-    from: char,
-    to: char,
+    DisallowedIdna2008,
 }
 
 fn find_char(codepoint: char) -> &'static Mapping {
-    let r = TABLE.binary_search_by(|ref range| {
-        if codepoint > range.to {
-            Less
-        } else if codepoint < range.from {
-            Greater
-        } else {
-            Equal
-        }
-    });
-    r.ok()
-        .map(|i| {
-            const SINGLE_MARKER: u16 = 1 << 15;
+    let idx = match TABLE.binary_search_by_key(&codepoint, |&val| val.0) {
+        Ok(idx) => idx,
+        Err(idx) => idx - 1,
+    };
 
-            let x = INDEX_TABLE[i];
-            let single = (x & SINGLE_MARKER) != 0;
-            let offset = !SINGLE_MARKER & x;
+    const SINGLE_MARKER: u16 = 1 << 15;
 
-            if single {
-                &MAPPING_TABLE[offset as usize]
-            } else {
-                &MAPPING_TABLE[(offset + (codepoint as u16 - TABLE[i].from as u16)) as usize]
-            }
-        })
-        .unwrap()
+    let (base, x) = TABLE[idx];
+    let single = (x & SINGLE_MARKER) != 0;
+    let offset = !SINGLE_MARKER & x;
+
+    if single {
+        &MAPPING_TABLE[offset as usize]
+    } else {
+        &MAPPING_TABLE[(offset + (codepoint as u16 - base as u16)) as usize]
+    }
 }
 
 struct Mapper<'a> {
@@ -140,6 +127,12 @@
                     self.slice = Some(decode_slice(slice).chars());
                     continue;
                 }
+                Mapping::DisallowedIdna2008 => {
+                    if self.config.use_idna_2008_rules {
+                        self.errors.disallowed_in_idna_2008 = true;
+                    }
+                    codepoint
+                }
             });
         }
     }
@@ -310,7 +303,7 @@
 
     // V6: Check against Mapping Table
     if label.chars().any(|c| match *find_char(c) {
-        Mapping::Valid => false,
+        Mapping::Valid | Mapping::DisallowedIdna2008 => false,
         Mapping::Deviation(_) => config.transitional_processing,
         Mapping::DisallowedStd3Valid => config.use_std3_ascii_rules,
         _ => true,
@@ -510,6 +503,7 @@
     transitional_processing: bool,
     verify_dns_length: bool,
     check_hyphens: bool,
+    use_idna_2008_rules: bool,
 }
 
 /// The defaults are that of https://url.spec.whatwg.org/#idna
@@ -524,6 +518,7 @@
 
             // Only use for to_ascii, not to_unicode
             verify_dns_length: false,
+            use_idna_2008_rules: false,
         }
     }
 }
@@ -553,6 +548,12 @@
         self
     }
 
+    #[inline]
+    pub fn use_idna_2008_rules(mut self, value: bool) -> Self {
+        self.use_idna_2008_rules = value;
+        self
+    }
+
     /// http://www.unicode.org/reports/tr46/#ToASCII
     pub fn to_ascii(self, domain: &str) -> Result<String, Errors> {
         let mut result = String::new();
@@ -599,6 +600,7 @@
     disallowed_character: bool,
     too_long_for_dns: bool,
     too_short_for_dns: bool,
+    disallowed_in_idna_2008: bool,
 }
 
 impl Errors {
@@ -615,6 +617,7 @@
             disallowed_character,
             too_long_for_dns,
             too_short_for_dns,
+            disallowed_in_idna_2008,
         } = *self;
         punycode
             || check_hyphens
@@ -627,6 +630,7 @@
             || disallowed_character
             || too_long_for_dns
             || too_short_for_dns
+            || disallowed_in_idna_2008
     }
 }
 
@@ -644,6 +648,7 @@
             disallowed_character,
             too_long_for_dns,
             too_short_for_dns,
+            disallowed_in_idna_2008,
         } = *self;
 
         let fields = [
@@ -661,6 +666,7 @@
             ("disallowed_character", disallowed_character),
             ("too_long_for_dns", too_long_for_dns),
             ("too_short_for_dns", too_short_for_dns),
+            ("disallowed_in_idna_2008", disallowed_in_idna_2008),
         ];
 
         let mut empty = true;
diff --git a/src/uts46_mapping_table.rs b/src/uts46_mapping_table.rs
index 3d1d0c1..7eb2aad 100644
--- a/src/uts46_mapping_table.rs
+++ b/src/uts46_mapping_table.rs
@@ -8,3310 +8,1889 @@
 
 // Generated by make_idna_table.py
 
-static TABLE: &[Range] = &[
-    Range { from: '\u{0}', to: '\u{2c}', },
-    Range { from: '\u{2d}', to: '\u{2e}', },
-    Range { from: '\u{2f}', to: '\u{2f}', },
-    Range { from: '\u{30}', to: '\u{39}', },
-    Range { from: '\u{3a}', to: '\u{40}', },
-    Range { from: '\u{41}', to: '\u{5a}', },
-    Range { from: '\u{5b}', to: '\u{60}', },
-    Range { from: '\u{61}', to: '\u{7a}', },
-    Range { from: '\u{7b}', to: '\u{7f}', },
-    Range { from: '\u{80}', to: '\u{9f}', },
-    Range { from: '\u{a0}', to: '\u{a0}', },
-    Range { from: '\u{a1}', to: '\u{a7}', },
-    Range { from: '\u{a8}', to: '\u{aa}', },
-    Range { from: '\u{ab}', to: '\u{ac}', },
-    Range { from: '\u{ad}', to: '\u{af}', },
-    Range { from: '\u{b0}', to: '\u{b1}', },
-    Range { from: '\u{b2}', to: '\u{b5}', },
-    Range { from: '\u{b6}', to: '\u{b7}', },
-    Range { from: '\u{b8}', to: '\u{df}', },
-    Range { from: '\u{e0}', to: '\u{ff}', },
-    Range { from: '\u{100}', to: '\u{131}', },
-    Range { from: '\u{132}', to: '\u{133}', },
-    Range { from: '\u{134}', to: '\u{136}', },
-    Range { from: '\u{137}', to: '\u{138}', },
-    Range { from: '\u{139}', to: '\u{13e}', },
-    Range { from: '\u{13f}', to: '\u{140}', },
-    Range { from: '\u{141}', to: '\u{18b}', },
-    Range { from: '\u{18c}', to: '\u{18d}', },
-    Range { from: '\u{18e}', to: '\u{198}', },
-    Range { from: '\u{199}', to: '\u{19b}', },
-    Range { from: '\u{19c}', to: '\u{1a9}', },
-    Range { from: '\u{1aa}', to: '\u{1ab}', },
-    Range { from: '\u{1ac}', to: '\u{1b8}', },
-    Range { from: '\u{1b9}', to: '\u{1bb}', },
-    Range { from: '\u{1bc}', to: '\u{1bc}', },
-    Range { from: '\u{1bd}', to: '\u{1c3}', },
-    Range { from: '\u{1c4}', to: '\u{1c6}', },
-    Range { from: '\u{1c7}', to: '\u{1c9}', },
-    Range { from: '\u{1ca}', to: '\u{1cc}', },
-    Range { from: '\u{1cd}', to: '\u{1db}', },
-    Range { from: '\u{1dc}', to: '\u{1dd}', },
-    Range { from: '\u{1de}', to: '\u{1ee}', },
-    Range { from: '\u{1ef}', to: '\u{1f0}', },
-    Range { from: '\u{1f1}', to: '\u{1f3}', },
-    Range { from: '\u{1f4}', to: '\u{232}', },
-    Range { from: '\u{233}', to: '\u{239}', },
-    Range { from: '\u{23a}', to: '\u{23e}', },
-    Range { from: '\u{23f}', to: '\u{240}', },
-    Range { from: '\u{241}', to: '\u{24e}', },
-    Range { from: '\u{24f}', to: '\u{2af}', },
-    Range { from: '\u{2b0}', to: '\u{2b8}', },
-    Range { from: '\u{2b9}', to: '\u{2d7}', },
-    Range { from: '\u{2d8}', to: '\u{2dd}', },
-    Range { from: '\u{2de}', to: '\u{2df}', },
-    Range { from: '\u{2e0}', to: '\u{2e4}', },
-    Range { from: '\u{2e5}', to: '\u{33f}', },
-    Range { from: '\u{340}', to: '\u{345}', },
-    Range { from: '\u{346}', to: '\u{34e}', },
-    Range { from: '\u{34f}', to: '\u{34f}', },
-    Range { from: '\u{350}', to: '\u{36f}', },
-    Range { from: '\u{370}', to: '\u{377}', },
-    Range { from: '\u{378}', to: '\u{379}', },
-    Range { from: '\u{37a}', to: '\u{37a}', },
-    Range { from: '\u{37b}', to: '\u{37d}', },
-    Range { from: '\u{37e}', to: '\u{37f}', },
-    Range { from: '\u{380}', to: '\u{383}', },
-    Range { from: '\u{384}', to: '\u{3ab}', },
-    Range { from: '\u{3ac}', to: '\u{3c1}', },
-    Range { from: '\u{3c2}', to: '\u{3c2}', },
-    Range { from: '\u{3c3}', to: '\u{3ce}', },
-    Range { from: '\u{3cf}', to: '\u{3fa}', },
-    Range { from: '\u{3fb}', to: '\u{3fc}', },
-    Range { from: '\u{3fd}', to: '\u{42f}', },
-    Range { from: '\u{430}', to: '\u{45f}', },
-    Range { from: '\u{460}', to: '\u{480}', },
-    Range { from: '\u{481}', to: '\u{489}', },
-    Range { from: '\u{48a}', to: '\u{4cd}', },
-    Range { from: '\u{4ce}', to: '\u{4cf}', },
-    Range { from: '\u{4d0}', to: '\u{556}', },
-    Range { from: '\u{557}', to: '\u{558}', },
-    Range { from: '\u{559}', to: '\u{586}', },
-    Range { from: '\u{587}', to: '\u{587}', },
-    Range { from: '\u{588}', to: '\u{58a}', },
-    Range { from: '\u{58b}', to: '\u{58c}', },
-    Range { from: '\u{58d}', to: '\u{58f}', },
-    Range { from: '\u{590}', to: '\u{590}', },
-    Range { from: '\u{591}', to: '\u{5c7}', },
-    Range { from: '\u{5c8}', to: '\u{5cf}', },
-    Range { from: '\u{5d0}', to: '\u{5ea}', },
-    Range { from: '\u{5eb}', to: '\u{5ee}', },
-    Range { from: '\u{5ef}', to: '\u{5f4}', },
-    Range { from: '\u{5f5}', to: '\u{605}', },
-    Range { from: '\u{606}', to: '\u{61b}', },
-    Range { from: '\u{61c}', to: '\u{61d}', },
-    Range { from: '\u{61e}', to: '\u{674}', },
-    Range { from: '\u{675}', to: '\u{678}', },
-    Range { from: '\u{679}', to: '\u{6dc}', },
-    Range { from: '\u{6dd}', to: '\u{6dd}', },
-    Range { from: '\u{6de}', to: '\u{70d}', },
-    Range { from: '\u{70e}', to: '\u{70f}', },
-    Range { from: '\u{710}', to: '\u{74a}', },
-    Range { from: '\u{74b}', to: '\u{74c}', },
-    Range { from: '\u{74d}', to: '\u{7b1}', },
-    Range { from: '\u{7b2}', to: '\u{7bf}', },
-    Range { from: '\u{7c0}', to: '\u{7fa}', },
-    Range { from: '\u{7fb}', to: '\u{7fc}', },
-    Range { from: '\u{7fd}', to: '\u{82d}', },
-    Range { from: '\u{82e}', to: '\u{82f}', },
-    Range { from: '\u{830}', to: '\u{83e}', },
-    Range { from: '\u{83f}', to: '\u{83f}', },
-    Range { from: '\u{840}', to: '\u{85b}', },
-    Range { from: '\u{85c}', to: '\u{85d}', },
-    Range { from: '\u{85e}', to: '\u{85f}', },
-    Range { from: '\u{860}', to: '\u{86a}', },
-    Range { from: '\u{86b}', to: '\u{89f}', },
-    Range { from: '\u{8a0}', to: '\u{8b4}', },
-    Range { from: '\u{8b5}', to: '\u{8b5}', },
-    Range { from: '\u{8b6}', to: '\u{8c7}', },
-    Range { from: '\u{8c8}', to: '\u{8d2}', },
-    Range { from: '\u{8d3}', to: '\u{8e1}', },
-    Range { from: '\u{8e2}', to: '\u{8e2}', },
-    Range { from: '\u{8e3}', to: '\u{957}', },
-    Range { from: '\u{958}', to: '\u{95f}', },
-    Range { from: '\u{960}', to: '\u{983}', },
-    Range { from: '\u{984}', to: '\u{984}', },
-    Range { from: '\u{985}', to: '\u{98c}', },
-    Range { from: '\u{98d}', to: '\u{98e}', },
-    Range { from: '\u{98f}', to: '\u{990}', },
-    Range { from: '\u{991}', to: '\u{992}', },
-    Range { from: '\u{993}', to: '\u{9a8}', },
-    Range { from: '\u{9a9}', to: '\u{9a9}', },
-    Range { from: '\u{9aa}', to: '\u{9b0}', },
-    Range { from: '\u{9b1}', to: '\u{9b2}', },
-    Range { from: '\u{9b3}', to: '\u{9b5}', },
-    Range { from: '\u{9b6}', to: '\u{9b9}', },
-    Range { from: '\u{9ba}', to: '\u{9bb}', },
-    Range { from: '\u{9bc}', to: '\u{9c4}', },
-    Range { from: '\u{9c5}', to: '\u{9c6}', },
-    Range { from: '\u{9c7}', to: '\u{9c8}', },
-    Range { from: '\u{9c9}', to: '\u{9ca}', },
-    Range { from: '\u{9cb}', to: '\u{9ce}', },
-    Range { from: '\u{9cf}', to: '\u{9d6}', },
-    Range { from: '\u{9d7}', to: '\u{9d7}', },
-    Range { from: '\u{9d8}', to: '\u{9db}', },
-    Range { from: '\u{9dc}', to: '\u{9df}', },
-    Range { from: '\u{9e0}', to: '\u{9e3}', },
-    Range { from: '\u{9e4}', to: '\u{9e5}', },
-    Range { from: '\u{9e6}', to: '\u{9fe}', },
-    Range { from: '\u{9ff}', to: '\u{a00}', },
-    Range { from: '\u{a01}', to: '\u{a03}', },
-    Range { from: '\u{a04}', to: '\u{a04}', },
-    Range { from: '\u{a05}', to: '\u{a0a}', },
-    Range { from: '\u{a0b}', to: '\u{a0e}', },
-    Range { from: '\u{a0f}', to: '\u{a10}', },
-    Range { from: '\u{a11}', to: '\u{a12}', },
-    Range { from: '\u{a13}', to: '\u{a28}', },
-    Range { from: '\u{a29}', to: '\u{a29}', },
-    Range { from: '\u{a2a}', to: '\u{a30}', },
-    Range { from: '\u{a31}', to: '\u{a37}', },
-    Range { from: '\u{a38}', to: '\u{a39}', },
-    Range { from: '\u{a3a}', to: '\u{a3b}', },
-    Range { from: '\u{a3c}', to: '\u{a3d}', },
-    Range { from: '\u{a3e}', to: '\u{a42}', },
-    Range { from: '\u{a43}', to: '\u{a46}', },
-    Range { from: '\u{a47}', to: '\u{a48}', },
-    Range { from: '\u{a49}', to: '\u{a4a}', },
-    Range { from: '\u{a4b}', to: '\u{a4d}', },
-    Range { from: '\u{a4e}', to: '\u{a50}', },
-    Range { from: '\u{a51}', to: '\u{a51}', },
-    Range { from: '\u{a52}', to: '\u{a58}', },
-    Range { from: '\u{a59}', to: '\u{a5e}', },
-    Range { from: '\u{a5f}', to: '\u{a65}', },
-    Range { from: '\u{a66}', to: '\u{a76}', },
-    Range { from: '\u{a77}', to: '\u{a80}', },
-    Range { from: '\u{a81}', to: '\u{a83}', },
-    Range { from: '\u{a84}', to: '\u{a84}', },
-    Range { from: '\u{a85}', to: '\u{a8d}', },
-    Range { from: '\u{a8e}', to: '\u{a8e}', },
-    Range { from: '\u{a8f}', to: '\u{a91}', },
-    Range { from: '\u{a92}', to: '\u{a92}', },
-    Range { from: '\u{a93}', to: '\u{aa8}', },
-    Range { from: '\u{aa9}', to: '\u{aa9}', },
-    Range { from: '\u{aaa}', to: '\u{ab0}', },
-    Range { from: '\u{ab1}', to: '\u{ab1}', },
-    Range { from: '\u{ab2}', to: '\u{ab3}', },
-    Range { from: '\u{ab4}', to: '\u{ab4}', },
-    Range { from: '\u{ab5}', to: '\u{ab9}', },
-    Range { from: '\u{aba}', to: '\u{abb}', },
-    Range { from: '\u{abc}', to: '\u{ac5}', },
-    Range { from: '\u{ac6}', to: '\u{ac6}', },
-    Range { from: '\u{ac7}', to: '\u{ac9}', },
-    Range { from: '\u{aca}', to: '\u{aca}', },
-    Range { from: '\u{acb}', to: '\u{acd}', },
-    Range { from: '\u{ace}', to: '\u{acf}', },
-    Range { from: '\u{ad0}', to: '\u{ad0}', },
-    Range { from: '\u{ad1}', to: '\u{adf}', },
-    Range { from: '\u{ae0}', to: '\u{ae3}', },
-    Range { from: '\u{ae4}', to: '\u{ae5}', },
-    Range { from: '\u{ae6}', to: '\u{af1}', },
-    Range { from: '\u{af2}', to: '\u{af8}', },
-    Range { from: '\u{af9}', to: '\u{aff}', },
-    Range { from: '\u{b00}', to: '\u{b00}', },
-    Range { from: '\u{b01}', to: '\u{b03}', },
-    Range { from: '\u{b04}', to: '\u{b04}', },
-    Range { from: '\u{b05}', to: '\u{b0c}', },
-    Range { from: '\u{b0d}', to: '\u{b0e}', },
-    Range { from: '\u{b0f}', to: '\u{b10}', },
-    Range { from: '\u{b11}', to: '\u{b12}', },
-    Range { from: '\u{b13}', to: '\u{b28}', },
-    Range { from: '\u{b29}', to: '\u{b29}', },
-    Range { from: '\u{b2a}', to: '\u{b30}', },
-    Range { from: '\u{b31}', to: '\u{b31}', },
-    Range { from: '\u{b32}', to: '\u{b33}', },
-    Range { from: '\u{b34}', to: '\u{b34}', },
-    Range { from: '\u{b35}', to: '\u{b39}', },
-    Range { from: '\u{b3a}', to: '\u{b3b}', },
-    Range { from: '\u{b3c}', to: '\u{b44}', },
-    Range { from: '\u{b45}', to: '\u{b46}', },
-    Range { from: '\u{b47}', to: '\u{b48}', },
-    Range { from: '\u{b49}', to: '\u{b4a}', },
-    Range { from: '\u{b4b}', to: '\u{b4d}', },
-    Range { from: '\u{b4e}', to: '\u{b54}', },
-    Range { from: '\u{b55}', to: '\u{b57}', },
-    Range { from: '\u{b58}', to: '\u{b5b}', },
-    Range { from: '\u{b5c}', to: '\u{b5e}', },
-    Range { from: '\u{b5f}', to: '\u{b63}', },
-    Range { from: '\u{b64}', to: '\u{b65}', },
-    Range { from: '\u{b66}', to: '\u{b77}', },
-    Range { from: '\u{b78}', to: '\u{b81}', },
-    Range { from: '\u{b82}', to: '\u{b83}', },
-    Range { from: '\u{b84}', to: '\u{b84}', },
-    Range { from: '\u{b85}', to: '\u{b8a}', },
-    Range { from: '\u{b8b}', to: '\u{b8d}', },
-    Range { from: '\u{b8e}', to: '\u{b90}', },
-    Range { from: '\u{b91}', to: '\u{b91}', },
-    Range { from: '\u{b92}', to: '\u{b95}', },
-    Range { from: '\u{b96}', to: '\u{b98}', },
-    Range { from: '\u{b99}', to: '\u{b9a}', },
-    Range { from: '\u{b9b}', to: '\u{b9d}', },
-    Range { from: '\u{b9e}', to: '\u{b9f}', },
-    Range { from: '\u{ba0}', to: '\u{ba2}', },
-    Range { from: '\u{ba3}', to: '\u{ba4}', },
-    Range { from: '\u{ba5}', to: '\u{ba7}', },
-    Range { from: '\u{ba8}', to: '\u{baa}', },
-    Range { from: '\u{bab}', to: '\u{bad}', },
-    Range { from: '\u{bae}', to: '\u{bb9}', },
-    Range { from: '\u{bba}', to: '\u{bbd}', },
-    Range { from: '\u{bbe}', to: '\u{bc2}', },
-    Range { from: '\u{bc3}', to: '\u{bc5}', },
-    Range { from: '\u{bc6}', to: '\u{bc8}', },
-    Range { from: '\u{bc9}', to: '\u{bc9}', },
-    Range { from: '\u{bca}', to: '\u{bcd}', },
-    Range { from: '\u{bce}', to: '\u{bcf}', },
-    Range { from: '\u{bd0}', to: '\u{bd0}', },
-    Range { from: '\u{bd1}', to: '\u{bd6}', },
-    Range { from: '\u{bd7}', to: '\u{bd7}', },
-    Range { from: '\u{bd8}', to: '\u{be5}', },
-    Range { from: '\u{be6}', to: '\u{bfa}', },
-    Range { from: '\u{bfb}', to: '\u{bff}', },
-    Range { from: '\u{c00}', to: '\u{c0c}', },
-    Range { from: '\u{c0d}', to: '\u{c0d}', },
-    Range { from: '\u{c0e}', to: '\u{c10}', },
-    Range { from: '\u{c11}', to: '\u{c11}', },
-    Range { from: '\u{c12}', to: '\u{c28}', },
-    Range { from: '\u{c29}', to: '\u{c29}', },
-    Range { from: '\u{c2a}', to: '\u{c39}', },
-    Range { from: '\u{c3a}', to: '\u{c3c}', },
-    Range { from: '\u{c3d}', to: '\u{c44}', },
-    Range { from: '\u{c45}', to: '\u{c45}', },
-    Range { from: '\u{c46}', to: '\u{c48}', },
-    Range { from: '\u{c49}', to: '\u{c49}', },
-    Range { from: '\u{c4a}', to: '\u{c4d}', },
-    Range { from: '\u{c4e}', to: '\u{c54}', },
-    Range { from: '\u{c55}', to: '\u{c56}', },
-    Range { from: '\u{c57}', to: '\u{c57}', },
-    Range { from: '\u{c58}', to: '\u{c5a}', },
-    Range { from: '\u{c5b}', to: '\u{c5f}', },
-    Range { from: '\u{c60}', to: '\u{c63}', },
-    Range { from: '\u{c64}', to: '\u{c65}', },
-    Range { from: '\u{c66}', to: '\u{c6f}', },
-    Range { from: '\u{c70}', to: '\u{c76}', },
-    Range { from: '\u{c77}', to: '\u{c8c}', },
-    Range { from: '\u{c8d}', to: '\u{c8d}', },
-    Range { from: '\u{c8e}', to: '\u{c90}', },
-    Range { from: '\u{c91}', to: '\u{c91}', },
-    Range { from: '\u{c92}', to: '\u{ca8}', },
-    Range { from: '\u{ca9}', to: '\u{ca9}', },
-    Range { from: '\u{caa}', to: '\u{cb3}', },
-    Range { from: '\u{cb4}', to: '\u{cb4}', },
-    Range { from: '\u{cb5}', to: '\u{cb9}', },
-    Range { from: '\u{cba}', to: '\u{cbb}', },
-    Range { from: '\u{cbc}', to: '\u{cc4}', },
-    Range { from: '\u{cc5}', to: '\u{cc5}', },
-    Range { from: '\u{cc6}', to: '\u{cc8}', },
-    Range { from: '\u{cc9}', to: '\u{cc9}', },
-    Range { from: '\u{cca}', to: '\u{ccd}', },
-    Range { from: '\u{cce}', to: '\u{cd4}', },
-    Range { from: '\u{cd5}', to: '\u{cd6}', },
-    Range { from: '\u{cd7}', to: '\u{cdd}', },
-    Range { from: '\u{cde}', to: '\u{cdf}', },
-    Range { from: '\u{ce0}', to: '\u{ce3}', },
-    Range { from: '\u{ce4}', to: '\u{ce5}', },
-    Range { from: '\u{ce6}', to: '\u{cef}', },
-    Range { from: '\u{cf0}', to: '\u{cf0}', },
-    Range { from: '\u{cf1}', to: '\u{cf2}', },
-    Range { from: '\u{cf3}', to: '\u{cff}', },
-    Range { from: '\u{d00}', to: '\u{d0c}', },
-    Range { from: '\u{d0d}', to: '\u{d0d}', },
-    Range { from: '\u{d0e}', to: '\u{d10}', },
-    Range { from: '\u{d11}', to: '\u{d11}', },
-    Range { from: '\u{d12}', to: '\u{d44}', },
-    Range { from: '\u{d45}', to: '\u{d45}', },
-    Range { from: '\u{d46}', to: '\u{d48}', },
-    Range { from: '\u{d49}', to: '\u{d49}', },
-    Range { from: '\u{d4a}', to: '\u{d4f}', },
-    Range { from: '\u{d50}', to: '\u{d53}', },
-    Range { from: '\u{d54}', to: '\u{d63}', },
-    Range { from: '\u{d64}', to: '\u{d65}', },
-    Range { from: '\u{d66}', to: '\u{d7f}', },
-    Range { from: '\u{d80}', to: '\u{d80}', },
-    Range { from: '\u{d81}', to: '\u{d83}', },
-    Range { from: '\u{d84}', to: '\u{d84}', },
-    Range { from: '\u{d85}', to: '\u{d96}', },
-    Range { from: '\u{d97}', to: '\u{d99}', },
-    Range { from: '\u{d9a}', to: '\u{db1}', },
-    Range { from: '\u{db2}', to: '\u{db2}', },
-    Range { from: '\u{db3}', to: '\u{dbb}', },
-    Range { from: '\u{dbc}', to: '\u{dbd}', },
-    Range { from: '\u{dbe}', to: '\u{dbf}', },
-    Range { from: '\u{dc0}', to: '\u{dc6}', },
-    Range { from: '\u{dc7}', to: '\u{dc9}', },
-    Range { from: '\u{dca}', to: '\u{dca}', },
-    Range { from: '\u{dcb}', to: '\u{dce}', },
-    Range { from: '\u{dcf}', to: '\u{dd4}', },
-    Range { from: '\u{dd5}', to: '\u{dd7}', },
-    Range { from: '\u{dd8}', to: '\u{ddf}', },
-    Range { from: '\u{de0}', to: '\u{de5}', },
-    Range { from: '\u{de6}', to: '\u{def}', },
-    Range { from: '\u{df0}', to: '\u{df1}', },
-    Range { from: '\u{df2}', to: '\u{df4}', },
-    Range { from: '\u{df5}', to: '\u{e00}', },
-    Range { from: '\u{e01}', to: '\u{e32}', },
-    Range { from: '\u{e33}', to: '\u{e33}', },
-    Range { from: '\u{e34}', to: '\u{e3a}', },
-    Range { from: '\u{e3b}', to: '\u{e3e}', },
-    Range { from: '\u{e3f}', to: '\u{e5b}', },
-    Range { from: '\u{e5c}', to: '\u{e80}', },
-    Range { from: '\u{e81}', to: '\u{e82}', },
-    Range { from: '\u{e83}', to: '\u{e85}', },
-    Range { from: '\u{e86}', to: '\u{e8a}', },
-    Range { from: '\u{e8b}', to: '\u{e8b}', },
-    Range { from: '\u{e8c}', to: '\u{ea3}', },
-    Range { from: '\u{ea4}', to: '\u{ea6}', },
-    Range { from: '\u{ea7}', to: '\u{eb2}', },
-    Range { from: '\u{eb3}', to: '\u{eb3}', },
-    Range { from: '\u{eb4}', to: '\u{ebd}', },
-    Range { from: '\u{ebe}', to: '\u{ebf}', },
-    Range { from: '\u{ec0}', to: '\u{ec4}', },
-    Range { from: '\u{ec5}', to: '\u{ec7}', },
-    Range { from: '\u{ec8}', to: '\u{ecd}', },
-    Range { from: '\u{ece}', to: '\u{ecf}', },
-    Range { from: '\u{ed0}', to: '\u{ed9}', },
-    Range { from: '\u{eda}', to: '\u{edb}', },
-    Range { from: '\u{edc}', to: '\u{edd}', },
-    Range { from: '\u{ede}', to: '\u{edf}', },
-    Range { from: '\u{ee0}', to: '\u{eff}', },
-    Range { from: '\u{f00}', to: '\u{f0b}', },
-    Range { from: '\u{f0c}', to: '\u{f0c}', },
-    Range { from: '\u{f0d}', to: '\u{f42}', },
-    Range { from: '\u{f43}', to: '\u{f43}', },
-    Range { from: '\u{f44}', to: '\u{f47}', },
-    Range { from: '\u{f48}', to: '\u{f48}', },
-    Range { from: '\u{f49}', to: '\u{f4c}', },
-    Range { from: '\u{f4d}', to: '\u{f4d}', },
-    Range { from: '\u{f4e}', to: '\u{f51}', },
-    Range { from: '\u{f52}', to: '\u{f52}', },
-    Range { from: '\u{f53}', to: '\u{f56}', },
-    Range { from: '\u{f57}', to: '\u{f57}', },
-    Range { from: '\u{f58}', to: '\u{f5b}', },
-    Range { from: '\u{f5c}', to: '\u{f5c}', },
-    Range { from: '\u{f5d}', to: '\u{f68}', },
-    Range { from: '\u{f69}', to: '\u{f69}', },
-    Range { from: '\u{f6a}', to: '\u{f6c}', },
-    Range { from: '\u{f6d}', to: '\u{f70}', },
-    Range { from: '\u{f71}', to: '\u{f72}', },
-    Range { from: '\u{f73}', to: '\u{f79}', },
-    Range { from: '\u{f7a}', to: '\u{f80}', },
-    Range { from: '\u{f81}', to: '\u{f81}', },
-    Range { from: '\u{f82}', to: '\u{f92}', },
-    Range { from: '\u{f93}', to: '\u{f93}', },
-    Range { from: '\u{f94}', to: '\u{f97}', },
-    Range { from: '\u{f98}', to: '\u{f98}', },
-    Range { from: '\u{f99}', to: '\u{f9c}', },
-    Range { from: '\u{f9d}', to: '\u{f9d}', },
-    Range { from: '\u{f9e}', to: '\u{fa1}', },
-    Range { from: '\u{fa2}', to: '\u{fa2}', },
-    Range { from: '\u{fa3}', to: '\u{fa6}', },
-    Range { from: '\u{fa7}', to: '\u{fa7}', },
-    Range { from: '\u{fa8}', to: '\u{fab}', },
-    Range { from: '\u{fac}', to: '\u{fac}', },
-    Range { from: '\u{fad}', to: '\u{fb8}', },
-    Range { from: '\u{fb9}', to: '\u{fb9}', },
-    Range { from: '\u{fba}', to: '\u{fbc}', },
-    Range { from: '\u{fbd}', to: '\u{fbd}', },
-    Range { from: '\u{fbe}', to: '\u{fcc}', },
-    Range { from: '\u{fcd}', to: '\u{fcd}', },
-    Range { from: '\u{fce}', to: '\u{fda}', },
-    Range { from: '\u{fdb}', to: '\u{fff}', },
-    Range { from: '\u{1000}', to: '\u{109f}', },
-    Range { from: '\u{10a0}', to: '\u{10c6}', },
-    Range { from: '\u{10c7}', to: '\u{10c7}', },
-    Range { from: '\u{10c8}', to: '\u{10cc}', },
-    Range { from: '\u{10cd}', to: '\u{10cd}', },
-    Range { from: '\u{10ce}', to: '\u{10cf}', },
-    Range { from: '\u{10d0}', to: '\u{10fb}', },
-    Range { from: '\u{10fc}', to: '\u{10fc}', },
-    Range { from: '\u{10fd}', to: '\u{115e}', },
-    Range { from: '\u{115f}', to: '\u{1160}', },
-    Range { from: '\u{1161}', to: '\u{1248}', },
-    Range { from: '\u{1249}', to: '\u{1249}', },
-    Range { from: '\u{124a}', to: '\u{124d}', },
-    Range { from: '\u{124e}', to: '\u{124f}', },
-    Range { from: '\u{1250}', to: '\u{1256}', },
-    Range { from: '\u{1257}', to: '\u{1259}', },
-    Range { from: '\u{125a}', to: '\u{125d}', },
-    Range { from: '\u{125e}', to: '\u{125f}', },
-    Range { from: '\u{1260}', to: '\u{1288}', },
-    Range { from: '\u{1289}', to: '\u{1289}', },
-    Range { from: '\u{128a}', to: '\u{128d}', },
-    Range { from: '\u{128e}', to: '\u{128f}', },
-    Range { from: '\u{1290}', to: '\u{12b0}', },
-    Range { from: '\u{12b1}', to: '\u{12b1}', },
-    Range { from: '\u{12b2}', to: '\u{12b5}', },
-    Range { from: '\u{12b6}', to: '\u{12b7}', },
-    Range { from: '\u{12b8}', to: '\u{12be}', },
-    Range { from: '\u{12bf}', to: '\u{12c1}', },
-    Range { from: '\u{12c2}', to: '\u{12c5}', },
-    Range { from: '\u{12c6}', to: '\u{12c7}', },
-    Range { from: '\u{12c8}', to: '\u{12d6}', },
-    Range { from: '\u{12d7}', to: '\u{12d7}', },
-    Range { from: '\u{12d8}', to: '\u{1310}', },
-    Range { from: '\u{1311}', to: '\u{1311}', },
-    Range { from: '\u{1312}', to: '\u{1315}', },
-    Range { from: '\u{1316}', to: '\u{1317}', },
-    Range { from: '\u{1318}', to: '\u{135a}', },
-    Range { from: '\u{135b}', to: '\u{135c}', },
-    Range { from: '\u{135d}', to: '\u{137c}', },
-    Range { from: '\u{137d}', to: '\u{137f}', },
-    Range { from: '\u{1380}', to: '\u{1399}', },
-    Range { from: '\u{139a}', to: '\u{139f}', },
-    Range { from: '\u{13a0}', to: '\u{13f5}', },
-    Range { from: '\u{13f6}', to: '\u{13f7}', },
-    Range { from: '\u{13f8}', to: '\u{13fd}', },
-    Range { from: '\u{13fe}', to: '\u{13ff}', },
-    Range { from: '\u{1400}', to: '\u{167f}', },
-    Range { from: '\u{1680}', to: '\u{1680}', },
-    Range { from: '\u{1681}', to: '\u{169c}', },
-    Range { from: '\u{169d}', to: '\u{169f}', },
-    Range { from: '\u{16a0}', to: '\u{16f8}', },
-    Range { from: '\u{16f9}', to: '\u{16ff}', },
-    Range { from: '\u{1700}', to: '\u{170c}', },
-    Range { from: '\u{170d}', to: '\u{170d}', },
-    Range { from: '\u{170e}', to: '\u{1714}', },
-    Range { from: '\u{1715}', to: '\u{171f}', },
-    Range { from: '\u{1720}', to: '\u{1736}', },
-    Range { from: '\u{1737}', to: '\u{173f}', },
-    Range { from: '\u{1740}', to: '\u{1753}', },
-    Range { from: '\u{1754}', to: '\u{175f}', },
-    Range { from: '\u{1760}', to: '\u{176c}', },
-    Range { from: '\u{176d}', to: '\u{176d}', },
-    Range { from: '\u{176e}', to: '\u{1770}', },
-    Range { from: '\u{1771}', to: '\u{1771}', },
-    Range { from: '\u{1772}', to: '\u{1773}', },
-    Range { from: '\u{1774}', to: '\u{177f}', },
-    Range { from: '\u{1780}', to: '\u{17b3}', },
-    Range { from: '\u{17b4}', to: '\u{17b5}', },
-    Range { from: '\u{17b6}', to: '\u{17dd}', },
-    Range { from: '\u{17de}', to: '\u{17df}', },
-    Range { from: '\u{17e0}', to: '\u{17e9}', },
-    Range { from: '\u{17ea}', to: '\u{17ef}', },
-    Range { from: '\u{17f0}', to: '\u{17f9}', },
-    Range { from: '\u{17fa}', to: '\u{17ff}', },
-    Range { from: '\u{1800}', to: '\u{1805}', },
-    Range { from: '\u{1806}', to: '\u{1806}', },
-    Range { from: '\u{1807}', to: '\u{180a}', },
-    Range { from: '\u{180b}', to: '\u{180d}', },
-    Range { from: '\u{180e}', to: '\u{180f}', },
-    Range { from: '\u{1810}', to: '\u{1819}', },
-    Range { from: '\u{181a}', to: '\u{181f}', },
-    Range { from: '\u{1820}', to: '\u{1878}', },
-    Range { from: '\u{1879}', to: '\u{187f}', },
-    Range { from: '\u{1880}', to: '\u{18aa}', },
-    Range { from: '\u{18ab}', to: '\u{18af}', },
-    Range { from: '\u{18b0}', to: '\u{18f5}', },
-    Range { from: '\u{18f6}', to: '\u{18ff}', },
-    Range { from: '\u{1900}', to: '\u{191e}', },
-    Range { from: '\u{191f}', to: '\u{191f}', },
-    Range { from: '\u{1920}', to: '\u{192b}', },
-    Range { from: '\u{192c}', to: '\u{192f}', },
-    Range { from: '\u{1930}', to: '\u{193b}', },
-    Range { from: '\u{193c}', to: '\u{193f}', },
-    Range { from: '\u{1940}', to: '\u{1940}', },
-    Range { from: '\u{1941}', to: '\u{1943}', },
-    Range { from: '\u{1944}', to: '\u{196d}', },
-    Range { from: '\u{196e}', to: '\u{196f}', },
-    Range { from: '\u{1970}', to: '\u{1974}', },
-    Range { from: '\u{1975}', to: '\u{197f}', },
-    Range { from: '\u{1980}', to: '\u{19ab}', },
-    Range { from: '\u{19ac}', to: '\u{19af}', },
-    Range { from: '\u{19b0}', to: '\u{19c9}', },
-    Range { from: '\u{19ca}', to: '\u{19cf}', },
-    Range { from: '\u{19d0}', to: '\u{19da}', },
-    Range { from: '\u{19db}', to: '\u{19dd}', },
-    Range { from: '\u{19de}', to: '\u{1a1b}', },
-    Range { from: '\u{1a1c}', to: '\u{1a1d}', },
-    Range { from: '\u{1a1e}', to: '\u{1a5e}', },
-    Range { from: '\u{1a5f}', to: '\u{1a5f}', },
-    Range { from: '\u{1a60}', to: '\u{1a7c}', },
-    Range { from: '\u{1a7d}', to: '\u{1a7e}', },
-    Range { from: '\u{1a7f}', to: '\u{1a89}', },
-    Range { from: '\u{1a8a}', to: '\u{1a8f}', },
-    Range { from: '\u{1a90}', to: '\u{1a99}', },
-    Range { from: '\u{1a9a}', to: '\u{1a9f}', },
-    Range { from: '\u{1aa0}', to: '\u{1aad}', },
-    Range { from: '\u{1aae}', to: '\u{1aaf}', },
-    Range { from: '\u{1ab0}', to: '\u{1ac0}', },
-    Range { from: '\u{1ac1}', to: '\u{1aff}', },
-    Range { from: '\u{1b00}', to: '\u{1b4b}', },
-    Range { from: '\u{1b4c}', to: '\u{1b4f}', },
-    Range { from: '\u{1b50}', to: '\u{1b7c}', },
-    Range { from: '\u{1b7d}', to: '\u{1b7f}', },
-    Range { from: '\u{1b80}', to: '\u{1bf3}', },
-    Range { from: '\u{1bf4}', to: '\u{1bfb}', },
-    Range { from: '\u{1bfc}', to: '\u{1c37}', },
-    Range { from: '\u{1c38}', to: '\u{1c3a}', },
-    Range { from: '\u{1c3b}', to: '\u{1c49}', },
-    Range { from: '\u{1c4a}', to: '\u{1c4c}', },
-    Range { from: '\u{1c4d}', to: '\u{1c7f}', },
-    Range { from: '\u{1c80}', to: '\u{1c83}', },
-    Range { from: '\u{1c84}', to: '\u{1c85}', },
-    Range { from: '\u{1c86}', to: '\u{1c88}', },
-    Range { from: '\u{1c89}', to: '\u{1c8f}', },
-    Range { from: '\u{1c90}', to: '\u{1cba}', },
-    Range { from: '\u{1cbb}', to: '\u{1cbc}', },
-    Range { from: '\u{1cbd}', to: '\u{1cbf}', },
-    Range { from: '\u{1cc0}', to: '\u{1cc7}', },
-    Range { from: '\u{1cc8}', to: '\u{1ccf}', },
-    Range { from: '\u{1cd0}', to: '\u{1cfa}', },
-    Range { from: '\u{1cfb}', to: '\u{1cff}', },
-    Range { from: '\u{1d00}', to: '\u{1d2b}', },
-    Range { from: '\u{1d2c}', to: '\u{1d6a}', },
-    Range { from: '\u{1d6b}', to: '\u{1d77}', },
-    Range { from: '\u{1d78}', to: '\u{1d78}', },
-    Range { from: '\u{1d79}', to: '\u{1d9a}', },
-    Range { from: '\u{1d9b}', to: '\u{1dbf}', },
-    Range { from: '\u{1dc0}', to: '\u{1df9}', },
-    Range { from: '\u{1dfa}', to: '\u{1dfa}', },
-    Range { from: '\u{1dfb}', to: '\u{1dff}', },
-    Range { from: '\u{1e00}', to: '\u{1e94}', },
-    Range { from: '\u{1e95}', to: '\u{1e99}', },
-    Range { from: '\u{1e9a}', to: '\u{1e9b}', },
-    Range { from: '\u{1e9c}', to: '\u{1e9d}', },
-    Range { from: '\u{1e9e}', to: '\u{1efe}', },
-    Range { from: '\u{1eff}', to: '\u{1f07}', },
-    Range { from: '\u{1f08}', to: '\u{1f0f}', },
-    Range { from: '\u{1f10}', to: '\u{1f15}', },
-    Range { from: '\u{1f16}', to: '\u{1f17}', },
-    Range { from: '\u{1f18}', to: '\u{1f1d}', },
-    Range { from: '\u{1f1e}', to: '\u{1f1f}', },
-    Range { from: '\u{1f20}', to: '\u{1f27}', },
-    Range { from: '\u{1f28}', to: '\u{1f2f}', },
-    Range { from: '\u{1f30}', to: '\u{1f37}', },
-    Range { from: '\u{1f38}', to: '\u{1f3f}', },
-    Range { from: '\u{1f40}', to: '\u{1f45}', },
-    Range { from: '\u{1f46}', to: '\u{1f47}', },
-    Range { from: '\u{1f48}', to: '\u{1f4d}', },
-    Range { from: '\u{1f4e}', to: '\u{1f4f}', },
-    Range { from: '\u{1f50}', to: '\u{1f57}', },
-    Range { from: '\u{1f58}', to: '\u{1f5f}', },
-    Range { from: '\u{1f60}', to: '\u{1f67}', },
-    Range { from: '\u{1f68}', to: '\u{1f7d}', },
-    Range { from: '\u{1f7e}', to: '\u{1f7f}', },
-    Range { from: '\u{1f80}', to: '\u{1faf}', },
-    Range { from: '\u{1fb0}', to: '\u{1fb1}', },
-    Range { from: '\u{1fb2}', to: '\u{1fcf}', },
-    Range { from: '\u{1fd0}', to: '\u{1fd2}', },
-    Range { from: '\u{1fd3}', to: '\u{1fd3}', },
-    Range { from: '\u{1fd4}', to: '\u{1fd5}', },
-    Range { from: '\u{1fd6}', to: '\u{1fd7}', },
-    Range { from: '\u{1fd8}', to: '\u{1fdf}', },
-    Range { from: '\u{1fe0}', to: '\u{1fe2}', },
-    Range { from: '\u{1fe3}', to: '\u{1fe3}', },
-    Range { from: '\u{1fe4}', to: '\u{1fe7}', },
-    Range { from: '\u{1fe8}', to: '\u{1fef}', },
-    Range { from: '\u{1ff0}', to: '\u{1ff1}', },
-    Range { from: '\u{1ff2}', to: '\u{1fff}', },
-    Range { from: '\u{2000}', to: '\u{200a}', },
-    Range { from: '\u{200b}', to: '\u{200b}', },
-    Range { from: '\u{200c}', to: '\u{200d}', },
-    Range { from: '\u{200e}', to: '\u{200f}', },
-    Range { from: '\u{2010}', to: '\u{2011}', },
-    Range { from: '\u{2012}', to: '\u{2016}', },
-    Range { from: '\u{2017}', to: '\u{2017}', },
-    Range { from: '\u{2018}', to: '\u{2023}', },
-    Range { from: '\u{2024}', to: '\u{2026}', },
-    Range { from: '\u{2027}', to: '\u{2027}', },
-    Range { from: '\u{2028}', to: '\u{202e}', },
-    Range { from: '\u{202f}', to: '\u{202f}', },
-    Range { from: '\u{2030}', to: '\u{2032}', },
-    Range { from: '\u{2033}', to: '\u{2037}', },
-    Range { from: '\u{2038}', to: '\u{203b}', },
-    Range { from: '\u{203c}', to: '\u{203e}', },
-    Range { from: '\u{203f}', to: '\u{2046}', },
-    Range { from: '\u{2047}', to: '\u{2049}', },
-    Range { from: '\u{204a}', to: '\u{2056}', },
-    Range { from: '\u{2057}', to: '\u{2057}', },
-    Range { from: '\u{2058}', to: '\u{205e}', },
-    Range { from: '\u{205f}', to: '\u{2060}', },
-    Range { from: '\u{2061}', to: '\u{2063}', },
-    Range { from: '\u{2064}', to: '\u{2064}', },
-    Range { from: '\u{2065}', to: '\u{206f}', },
-    Range { from: '\u{2070}', to: '\u{2071}', },
-    Range { from: '\u{2072}', to: '\u{2073}', },
-    Range { from: '\u{2074}', to: '\u{209c}', },
-    Range { from: '\u{209d}', to: '\u{209f}', },
-    Range { from: '\u{20a0}', to: '\u{20a7}', },
-    Range { from: '\u{20a8}', to: '\u{20a8}', },
-    Range { from: '\u{20a9}', to: '\u{20bf}', },
-    Range { from: '\u{20c0}', to: '\u{20cf}', },
-    Range { from: '\u{20d0}', to: '\u{20f0}', },
-    Range { from: '\u{20f1}', to: '\u{20ff}', },
-    Range { from: '\u{2100}', to: '\u{210a}', },
-    Range { from: '\u{210b}', to: '\u{210e}', },
-    Range { from: '\u{210f}', to: '\u{210f}', },
-    Range { from: '\u{2110}', to: '\u{2111}', },
-    Range { from: '\u{2112}', to: '\u{2113}', },
-    Range { from: '\u{2114}', to: '\u{2116}', },
-    Range { from: '\u{2117}', to: '\u{2118}', },
-    Range { from: '\u{2119}', to: '\u{211a}', },
-    Range { from: '\u{211b}', to: '\u{211d}', },
-    Range { from: '\u{211e}', to: '\u{211f}', },
-    Range { from: '\u{2120}', to: '\u{212e}', },
-    Range { from: '\u{212f}', to: '\u{2130}', },
-    Range { from: '\u{2131}', to: '\u{213c}', },
-    Range { from: '\u{213d}', to: '\u{213e}', },
-    Range { from: '\u{213f}', to: '\u{2140}', },
-    Range { from: '\u{2141}', to: '\u{2144}', },
-    Range { from: '\u{2145}', to: '\u{2146}', },
-    Range { from: '\u{2147}', to: '\u{2149}', },
-    Range { from: '\u{214a}', to: '\u{214f}', },
-    Range { from: '\u{2150}', to: '\u{217f}', },
-    Range { from: '\u{2180}', to: '\u{2182}', },
-    Range { from: '\u{2183}', to: '\u{2183}', },
-    Range { from: '\u{2184}', to: '\u{2188}', },
-    Range { from: '\u{2189}', to: '\u{2189}', },
-    Range { from: '\u{218a}', to: '\u{218b}', },
-    Range { from: '\u{218c}', to: '\u{218f}', },
-    Range { from: '\u{2190}', to: '\u{222b}', },
-    Range { from: '\u{222c}', to: '\u{2230}', },
-    Range { from: '\u{2231}', to: '\u{225f}', },
-    Range { from: '\u{2260}', to: '\u{2260}', },
-    Range { from: '\u{2261}', to: '\u{226d}', },
-    Range { from: '\u{226e}', to: '\u{226f}', },
-    Range { from: '\u{2270}', to: '\u{2328}', },
-    Range { from: '\u{2329}', to: '\u{232a}', },
-    Range { from: '\u{232b}', to: '\u{2426}', },
-    Range { from: '\u{2427}', to: '\u{243f}', },
-    Range { from: '\u{2440}', to: '\u{244a}', },
-    Range { from: '\u{244b}', to: '\u{245f}', },
-    Range { from: '\u{2460}', to: '\u{2487}', },
-    Range { from: '\u{2488}', to: '\u{249b}', },
-    Range { from: '\u{249c}', to: '\u{24ea}', },
-    Range { from: '\u{24eb}', to: '\u{2a0b}', },
-    Range { from: '\u{2a0c}', to: '\u{2a0c}', },
-    Range { from: '\u{2a0d}', to: '\u{2a73}', },
-    Range { from: '\u{2a74}', to: '\u{2a76}', },
-    Range { from: '\u{2a77}', to: '\u{2adb}', },
-    Range { from: '\u{2adc}', to: '\u{2adc}', },
-    Range { from: '\u{2add}', to: '\u{2b73}', },
-    Range { from: '\u{2b74}', to: '\u{2b75}', },
-    Range { from: '\u{2b76}', to: '\u{2b95}', },
-    Range { from: '\u{2b96}', to: '\u{2b96}', },
-    Range { from: '\u{2b97}', to: '\u{2bff}', },
-    Range { from: '\u{2c00}', to: '\u{2c2f}', },
-    Range { from: '\u{2c30}', to: '\u{2c5e}', },
-    Range { from: '\u{2c5f}', to: '\u{2c64}', },
-    Range { from: '\u{2c65}', to: '\u{2c66}', },
-    Range { from: '\u{2c67}', to: '\u{2c72}', },
-    Range { from: '\u{2c73}', to: '\u{2c74}', },
-    Range { from: '\u{2c75}', to: '\u{2c75}', },
-    Range { from: '\u{2c76}', to: '\u{2c7b}', },
-    Range { from: '\u{2c7c}', to: '\u{2ce2}', },
-    Range { from: '\u{2ce3}', to: '\u{2cea}', },
-    Range { from: '\u{2ceb}', to: '\u{2ced}', },
-    Range { from: '\u{2cee}', to: '\u{2cf1}', },
-    Range { from: '\u{2cf2}', to: '\u{2cf3}', },
-    Range { from: '\u{2cf4}', to: '\u{2cf8}', },
-    Range { from: '\u{2cf9}', to: '\u{2d25}', },
-    Range { from: '\u{2d26}', to: '\u{2d27}', },
-    Range { from: '\u{2d28}', to: '\u{2d2c}', },
-    Range { from: '\u{2d2d}', to: '\u{2d2d}', },
-    Range { from: '\u{2d2e}', to: '\u{2d2f}', },
-    Range { from: '\u{2d30}', to: '\u{2d67}', },
-    Range { from: '\u{2d68}', to: '\u{2d6e}', },
-    Range { from: '\u{2d6f}', to: '\u{2d70}', },
-    Range { from: '\u{2d71}', to: '\u{2d7e}', },
-    Range { from: '\u{2d7f}', to: '\u{2d96}', },
-    Range { from: '\u{2d97}', to: '\u{2d9f}', },
-    Range { from: '\u{2da0}', to: '\u{2da6}', },
-    Range { from: '\u{2da7}', to: '\u{2da7}', },
-    Range { from: '\u{2da8}', to: '\u{2dae}', },
-    Range { from: '\u{2daf}', to: '\u{2daf}', },
-    Range { from: '\u{2db0}', to: '\u{2db6}', },
-    Range { from: '\u{2db7}', to: '\u{2db7}', },
-    Range { from: '\u{2db8}', to: '\u{2dbe}', },
-    Range { from: '\u{2dbf}', to: '\u{2dbf}', },
-    Range { from: '\u{2dc0}', to: '\u{2dc6}', },
-    Range { from: '\u{2dc7}', to: '\u{2dc7}', },
-    Range { from: '\u{2dc8}', to: '\u{2dce}', },
-    Range { from: '\u{2dcf}', to: '\u{2dcf}', },
-    Range { from: '\u{2dd0}', to: '\u{2dd6}', },
-    Range { from: '\u{2dd7}', to: '\u{2dd7}', },
-    Range { from: '\u{2dd8}', to: '\u{2dde}', },
-    Range { from: '\u{2ddf}', to: '\u{2ddf}', },
-    Range { from: '\u{2de0}', to: '\u{2e52}', },
-    Range { from: '\u{2e53}', to: '\u{2e7f}', },
-    Range { from: '\u{2e80}', to: '\u{2e99}', },
-    Range { from: '\u{2e9a}', to: '\u{2e9a}', },
-    Range { from: '\u{2e9b}', to: '\u{2e9e}', },
-    Range { from: '\u{2e9f}', to: '\u{2e9f}', },
-    Range { from: '\u{2ea0}', to: '\u{2ef2}', },
-    Range { from: '\u{2ef3}', to: '\u{2ef3}', },
-    Range { from: '\u{2ef4}', to: '\u{2eff}', },
-    Range { from: '\u{2f00}', to: '\u{2fd5}', },
-    Range { from: '\u{2fd6}', to: '\u{2fff}', },
-    Range { from: '\u{3000}', to: '\u{3002}', },
-    Range { from: '\u{3003}', to: '\u{3035}', },
-    Range { from: '\u{3036}', to: '\u{303a}', },
-    Range { from: '\u{303b}', to: '\u{303f}', },
-    Range { from: '\u{3040}', to: '\u{3040}', },
-    Range { from: '\u{3041}', to: '\u{3096}', },
-    Range { from: '\u{3097}', to: '\u{3098}', },
-    Range { from: '\u{3099}', to: '\u{309a}', },
-    Range { from: '\u{309b}', to: '\u{309c}', },
-    Range { from: '\u{309d}', to: '\u{309e}', },
-    Range { from: '\u{309f}', to: '\u{309f}', },
-    Range { from: '\u{30a0}', to: '\u{30fe}', },
-    Range { from: '\u{30ff}', to: '\u{30ff}', },
-    Range { from: '\u{3100}', to: '\u{3104}', },
-    Range { from: '\u{3105}', to: '\u{312f}', },
-    Range { from: '\u{3130}', to: '\u{318f}', },
-    Range { from: '\u{3190}', to: '\u{3191}', },
-    Range { from: '\u{3192}', to: '\u{319f}', },
-    Range { from: '\u{31a0}', to: '\u{31e3}', },
-    Range { from: '\u{31e4}', to: '\u{31ef}', },
-    Range { from: '\u{31f0}', to: '\u{31ff}', },
-    Range { from: '\u{3200}', to: '\u{3247}', },
-    Range { from: '\u{3248}', to: '\u{324f}', },
-    Range { from: '\u{3250}', to: '\u{33ff}', },
-    Range { from: '\u{3400}', to: '\u{9ffc}', },
-    Range { from: '\u{9ffd}', to: '\u{9fff}', },
-    Range { from: '\u{a000}', to: '\u{a48c}', },
-    Range { from: '\u{a48d}', to: '\u{a48f}', },
-    Range { from: '\u{a490}', to: '\u{a4c6}', },
-    Range { from: '\u{a4c7}', to: '\u{a4cf}', },
-    Range { from: '\u{a4d0}', to: '\u{a62b}', },
-    Range { from: '\u{a62c}', to: '\u{a63f}', },
-    Range { from: '\u{a640}', to: '\u{a66c}', },
-    Range { from: '\u{a66d}', to: '\u{a67f}', },
-    Range { from: '\u{a680}', to: '\u{a69d}', },
-    Range { from: '\u{a69e}', to: '\u{a6f7}', },
-    Range { from: '\u{a6f8}', to: '\u{a6ff}', },
-    Range { from: '\u{a700}', to: '\u{a721}', },
-    Range { from: '\u{a722}', to: '\u{a72e}', },
-    Range { from: '\u{a72f}', to: '\u{a731}', },
-    Range { from: '\u{a732}', to: '\u{a770}', },
-    Range { from: '\u{a771}', to: '\u{a778}', },
-    Range { from: '\u{a779}', to: '\u{a786}', },
-    Range { from: '\u{a787}', to: '\u{a78a}', },
-    Range { from: '\u{a78b}', to: '\u{a78d}', },
-    Range { from: '\u{a78e}', to: '\u{a78f}', },
-    Range { from: '\u{a790}', to: '\u{a792}', },
-    Range { from: '\u{a793}', to: '\u{a795}', },
-    Range { from: '\u{a796}', to: '\u{a7bf}', },
-    Range { from: '\u{a7c0}', to: '\u{a7c1}', },
-    Range { from: '\u{a7c2}', to: '\u{a7ca}', },
-    Range { from: '\u{a7cb}', to: '\u{a7f4}', },
-    Range { from: '\u{a7f5}', to: '\u{a7f5}', },
-    Range { from: '\u{a7f6}', to: '\u{a7f7}', },
-    Range { from: '\u{a7f8}', to: '\u{a7f9}', },
-    Range { from: '\u{a7fa}', to: '\u{a82c}', },
-    Range { from: '\u{a82d}', to: '\u{a82f}', },
-    Range { from: '\u{a830}', to: '\u{a839}', },
-    Range { from: '\u{a83a}', to: '\u{a83f}', },
-    Range { from: '\u{a840}', to: '\u{a877}', },
-    Range { from: '\u{a878}', to: '\u{a87f}', },
-    Range { from: '\u{a880}', to: '\u{a8c5}', },
-    Range { from: '\u{a8c6}', to: '\u{a8cd}', },
-    Range { from: '\u{a8ce}', to: '\u{a8d9}', },
-    Range { from: '\u{a8da}', to: '\u{a8df}', },
-    Range { from: '\u{a8e0}', to: '\u{a953}', },
-    Range { from: '\u{a954}', to: '\u{a95e}', },
-    Range { from: '\u{a95f}', to: '\u{a97c}', },
-    Range { from: '\u{a97d}', to: '\u{a97f}', },
-    Range { from: '\u{a980}', to: '\u{a9cd}', },
-    Range { from: '\u{a9ce}', to: '\u{a9ce}', },
-    Range { from: '\u{a9cf}', to: '\u{a9d9}', },
-    Range { from: '\u{a9da}', to: '\u{a9dd}', },
-    Range { from: '\u{a9de}', to: '\u{a9fe}', },
-    Range { from: '\u{a9ff}', to: '\u{a9ff}', },
-    Range { from: '\u{aa00}', to: '\u{aa36}', },
-    Range { from: '\u{aa37}', to: '\u{aa3f}', },
-    Range { from: '\u{aa40}', to: '\u{aa4d}', },
-    Range { from: '\u{aa4e}', to: '\u{aa4f}', },
-    Range { from: '\u{aa50}', to: '\u{aa59}', },
-    Range { from: '\u{aa5a}', to: '\u{aa5b}', },
-    Range { from: '\u{aa5c}', to: '\u{aac2}', },
-    Range { from: '\u{aac3}', to: '\u{aada}', },
-    Range { from: '\u{aadb}', to: '\u{aaf6}', },
-    Range { from: '\u{aaf7}', to: '\u{ab00}', },
-    Range { from: '\u{ab01}', to: '\u{ab06}', },
-    Range { from: '\u{ab07}', to: '\u{ab08}', },
-    Range { from: '\u{ab09}', to: '\u{ab0e}', },
-    Range { from: '\u{ab0f}', to: '\u{ab10}', },
-    Range { from: '\u{ab11}', to: '\u{ab16}', },
-    Range { from: '\u{ab17}', to: '\u{ab1f}', },
-    Range { from: '\u{ab20}', to: '\u{ab26}', },
-    Range { from: '\u{ab27}', to: '\u{ab27}', },
-    Range { from: '\u{ab28}', to: '\u{ab2e}', },
-    Range { from: '\u{ab2f}', to: '\u{ab2f}', },
-    Range { from: '\u{ab30}', to: '\u{ab5b}', },
-    Range { from: '\u{ab5c}', to: '\u{ab5f}', },
-    Range { from: '\u{ab60}', to: '\u{ab68}', },
-    Range { from: '\u{ab69}', to: '\u{ab69}', },
-    Range { from: '\u{ab6a}', to: '\u{ab6b}', },
-    Range { from: '\u{ab6c}', to: '\u{ab6f}', },
-    Range { from: '\u{ab70}', to: '\u{abbf}', },
-    Range { from: '\u{abc0}', to: '\u{abed}', },
-    Range { from: '\u{abee}', to: '\u{abef}', },
-    Range { from: '\u{abf0}', to: '\u{abf9}', },
-    Range { from: '\u{abfa}', to: '\u{abff}', },
-    Range { from: '\u{ac00}', to: '\u{d7a3}', },
-    Range { from: '\u{d7a4}', to: '\u{d7af}', },
-    Range { from: '\u{d7b0}', to: '\u{d7c6}', },
-    Range { from: '\u{d7c7}', to: '\u{d7ca}', },
-    Range { from: '\u{d7cb}', to: '\u{d7fb}', },
-    Range { from: '\u{d7fc}', to: '\u{f8ff}', },
-    Range { from: '\u{f900}', to: '\u{f906}', },
-    Range { from: '\u{f907}', to: '\u{f908}', },
-    Range { from: '\u{f909}', to: '\u{fa0d}', },
-    Range { from: '\u{fa0e}', to: '\u{fa0f}', },
-    Range { from: '\u{fa10}', to: '\u{fa12}', },
-    Range { from: '\u{fa13}', to: '\u{fa14}', },
-    Range { from: '\u{fa15}', to: '\u{fa22}', },
-    Range { from: '\u{fa23}', to: '\u{fa24}', },
-    Range { from: '\u{fa25}', to: '\u{fa26}', },
-    Range { from: '\u{fa27}', to: '\u{fa29}', },
-    Range { from: '\u{fa2a}', to: '\u{fa5c}', },
-    Range { from: '\u{fa5d}', to: '\u{fa5e}', },
-    Range { from: '\u{fa5f}', to: '\u{fa6d}', },
-    Range { from: '\u{fa6e}', to: '\u{fa6f}', },
-    Range { from: '\u{fa70}', to: '\u{fad9}', },
-    Range { from: '\u{fada}', to: '\u{faff}', },
-    Range { from: '\u{fb00}', to: '\u{fb04}', },
-    Range { from: '\u{fb05}', to: '\u{fb06}', },
-    Range { from: '\u{fb07}', to: '\u{fb12}', },
-    Range { from: '\u{fb13}', to: '\u{fb17}', },
-    Range { from: '\u{fb18}', to: '\u{fb1c}', },
-    Range { from: '\u{fb1d}', to: '\u{fb4f}', },
-    Range { from: '\u{fb50}', to: '\u{fb51}', },
-    Range { from: '\u{fb52}', to: '\u{fb55}', },
-    Range { from: '\u{fb56}', to: '\u{fb59}', },
-    Range { from: '\u{fb5a}', to: '\u{fb5d}', },
-    Range { from: '\u{fb5e}', to: '\u{fb61}', },
-    Range { from: '\u{fb62}', to: '\u{fb65}', },
-    Range { from: '\u{fb66}', to: '\u{fb69}', },
-    Range { from: '\u{fb6a}', to: '\u{fb6d}', },
-    Range { from: '\u{fb6e}', to: '\u{fb71}', },
-    Range { from: '\u{fb72}', to: '\u{fb75}', },
-    Range { from: '\u{fb76}', to: '\u{fb79}', },
-    Range { from: '\u{fb7a}', to: '\u{fb7d}', },
-    Range { from: '\u{fb7e}', to: '\u{fb81}', },
-    Range { from: '\u{fb82}', to: '\u{fb83}', },
-    Range { from: '\u{fb84}', to: '\u{fb85}', },
-    Range { from: '\u{fb86}', to: '\u{fb87}', },
-    Range { from: '\u{fb88}', to: '\u{fb89}', },
-    Range { from: '\u{fb8a}', to: '\u{fb8b}', },
-    Range { from: '\u{fb8c}', to: '\u{fb8d}', },
-    Range { from: '\u{fb8e}', to: '\u{fb91}', },
-    Range { from: '\u{fb92}', to: '\u{fb95}', },
-    Range { from: '\u{fb96}', to: '\u{fb99}', },
-    Range { from: '\u{fb9a}', to: '\u{fb9d}', },
-    Range { from: '\u{fb9e}', to: '\u{fb9f}', },
-    Range { from: '\u{fba0}', to: '\u{fba3}', },
-    Range { from: '\u{fba4}', to: '\u{fba5}', },
-    Range { from: '\u{fba6}', to: '\u{fba9}', },
-    Range { from: '\u{fbaa}', to: '\u{fbad}', },
-    Range { from: '\u{fbae}', to: '\u{fbaf}', },
-    Range { from: '\u{fbb0}', to: '\u{fbb1}', },
-    Range { from: '\u{fbb2}', to: '\u{fbc1}', },
-    Range { from: '\u{fbc2}', to: '\u{fbd2}', },
-    Range { from: '\u{fbd3}', to: '\u{fbd6}', },
-    Range { from: '\u{fbd7}', to: '\u{fbd8}', },
-    Range { from: '\u{fbd9}', to: '\u{fbda}', },
-    Range { from: '\u{fbdb}', to: '\u{fbdc}', },
-    Range { from: '\u{fbdd}', to: '\u{fbdd}', },
-    Range { from: '\u{fbde}', to: '\u{fbdf}', },
-    Range { from: '\u{fbe0}', to: '\u{fbe1}', },
-    Range { from: '\u{fbe2}', to: '\u{fbe3}', },
-    Range { from: '\u{fbe4}', to: '\u{fbe7}', },
-    Range { from: '\u{fbe8}', to: '\u{fbe9}', },
-    Range { from: '\u{fbea}', to: '\u{fbeb}', },
-    Range { from: '\u{fbec}', to: '\u{fbed}', },
-    Range { from: '\u{fbee}', to: '\u{fbef}', },
-    Range { from: '\u{fbf0}', to: '\u{fbf1}', },
-    Range { from: '\u{fbf2}', to: '\u{fbf3}', },
-    Range { from: '\u{fbf4}', to: '\u{fbf5}', },
-    Range { from: '\u{fbf6}', to: '\u{fbf8}', },
-    Range { from: '\u{fbf9}', to: '\u{fbfb}', },
-    Range { from: '\u{fbfc}', to: '\u{fbff}', },
-    Range { from: '\u{fc00}', to: '\u{fd3b}', },
-    Range { from: '\u{fd3c}', to: '\u{fd3d}', },
-    Range { from: '\u{fd3e}', to: '\u{fd3f}', },
-    Range { from: '\u{fd40}', to: '\u{fd4f}', },
-    Range { from: '\u{fd50}', to: '\u{fd50}', },
-    Range { from: '\u{fd51}', to: '\u{fd52}', },
-    Range { from: '\u{fd53}', to: '\u{fd57}', },
-    Range { from: '\u{fd58}', to: '\u{fd59}', },
-    Range { from: '\u{fd5a}', to: '\u{fd5e}', },
-    Range { from: '\u{fd5f}', to: '\u{fd60}', },
-    Range { from: '\u{fd61}', to: '\u{fd61}', },
-    Range { from: '\u{fd62}', to: '\u{fd63}', },
-    Range { from: '\u{fd64}', to: '\u{fd65}', },
-    Range { from: '\u{fd66}', to: '\u{fd66}', },
-    Range { from: '\u{fd67}', to: '\u{fd68}', },
-    Range { from: '\u{fd69}', to: '\u{fd69}', },
-    Range { from: '\u{fd6a}', to: '\u{fd6b}', },
-    Range { from: '\u{fd6c}', to: '\u{fd6d}', },
-    Range { from: '\u{fd6e}', to: '\u{fd6e}', },
-    Range { from: '\u{fd6f}', to: '\u{fd70}', },
-    Range { from: '\u{fd71}', to: '\u{fd72}', },
-    Range { from: '\u{fd73}', to: '\u{fd75}', },
-    Range { from: '\u{fd76}', to: '\u{fd77}', },
-    Range { from: '\u{fd78}', to: '\u{fd7b}', },
-    Range { from: '\u{fd7c}', to: '\u{fd7d}', },
-    Range { from: '\u{fd7e}', to: '\u{fd82}', },
-    Range { from: '\u{fd83}', to: '\u{fd84}', },
-    Range { from: '\u{fd85}', to: '\u{fd86}', },
-    Range { from: '\u{fd87}', to: '\u{fd88}', },
-    Range { from: '\u{fd89}', to: '\u{fd8f}', },
-    Range { from: '\u{fd90}', to: '\u{fd91}', },
-    Range { from: '\u{fd92}', to: '\u{fd96}', },
-    Range { from: '\u{fd97}', to: '\u{fd98}', },
-    Range { from: '\u{fd99}', to: '\u{fd9b}', },
-    Range { from: '\u{fd9c}', to: '\u{fd9d}', },
-    Range { from: '\u{fd9e}', to: '\u{fdc7}', },
-    Range { from: '\u{fdc8}', to: '\u{fdef}', },
-    Range { from: '\u{fdf0}', to: '\u{fdfd}', },
-    Range { from: '\u{fdfe}', to: '\u{fdff}', },
-    Range { from: '\u{fe00}', to: '\u{fe0f}', },
-    Range { from: '\u{fe10}', to: '\u{fe18}', },
-    Range { from: '\u{fe19}', to: '\u{fe1f}', },
-    Range { from: '\u{fe20}', to: '\u{fe2f}', },
-    Range { from: '\u{fe30}', to: '\u{fe32}', },
-    Range { from: '\u{fe33}', to: '\u{fe34}', },
-    Range { from: '\u{fe35}', to: '\u{fe44}', },
-    Range { from: '\u{fe45}', to: '\u{fe46}', },
-    Range { from: '\u{fe47}', to: '\u{fe48}', },
-    Range { from: '\u{fe49}', to: '\u{fe4c}', },
-    Range { from: '\u{fe4d}', to: '\u{fe4f}', },
-    Range { from: '\u{fe50}', to: '\u{fe51}', },
-    Range { from: '\u{fe52}', to: '\u{fe53}', },
-    Range { from: '\u{fe54}', to: '\u{fe6b}', },
-    Range { from: '\u{fe6c}', to: '\u{fe6f}', },
-    Range { from: '\u{fe70}', to: '\u{fe80}', },
-    Range { from: '\u{fe81}', to: '\u{fe82}', },
-    Range { from: '\u{fe83}', to: '\u{fe84}', },
-    Range { from: '\u{fe85}', to: '\u{fe86}', },
-    Range { from: '\u{fe87}', to: '\u{fe88}', },
-    Range { from: '\u{fe89}', to: '\u{fe8c}', },
-    Range { from: '\u{fe8d}', to: '\u{fe8e}', },
-    Range { from: '\u{fe8f}', to: '\u{fe92}', },
-    Range { from: '\u{fe93}', to: '\u{fe94}', },
-    Range { from: '\u{fe95}', to: '\u{fe98}', },
-    Range { from: '\u{fe99}', to: '\u{fe9c}', },
-    Range { from: '\u{fe9d}', to: '\u{fea0}', },
-    Range { from: '\u{fea1}', to: '\u{fea4}', },
-    Range { from: '\u{fea5}', to: '\u{fea8}', },
-    Range { from: '\u{fea9}', to: '\u{feaa}', },
-    Range { from: '\u{feab}', to: '\u{feac}', },
-    Range { from: '\u{fead}', to: '\u{feae}', },
-    Range { from: '\u{feaf}', to: '\u{feb0}', },
-    Range { from: '\u{feb1}', to: '\u{feb4}', },
-    Range { from: '\u{feb5}', to: '\u{feb8}', },
-    Range { from: '\u{feb9}', to: '\u{febc}', },
-    Range { from: '\u{febd}', to: '\u{fec0}', },
-    Range { from: '\u{fec1}', to: '\u{fec4}', },
-    Range { from: '\u{fec5}', to: '\u{fec8}', },
-    Range { from: '\u{fec9}', to: '\u{fecc}', },
-    Range { from: '\u{fecd}', to: '\u{fed0}', },
-    Range { from: '\u{fed1}', to: '\u{fed4}', },
-    Range { from: '\u{fed5}', to: '\u{fed8}', },
-    Range { from: '\u{fed9}', to: '\u{fedc}', },
-    Range { from: '\u{fedd}', to: '\u{fee0}', },
-    Range { from: '\u{fee1}', to: '\u{fee4}', },
-    Range { from: '\u{fee5}', to: '\u{fee8}', },
-    Range { from: '\u{fee9}', to: '\u{feec}', },
-    Range { from: '\u{feed}', to: '\u{feee}', },
-    Range { from: '\u{feef}', to: '\u{fef0}', },
-    Range { from: '\u{fef1}', to: '\u{fef4}', },
-    Range { from: '\u{fef5}', to: '\u{fef6}', },
-    Range { from: '\u{fef7}', to: '\u{fef8}', },
-    Range { from: '\u{fef9}', to: '\u{fefa}', },
-    Range { from: '\u{fefb}', to: '\u{fefc}', },
-    Range { from: '\u{fefd}', to: '\u{fefe}', },
-    Range { from: '\u{feff}', to: '\u{ffbe}', },
-    Range { from: '\u{ffbf}', to: '\u{ffc1}', },
-    Range { from: '\u{ffc2}', to: '\u{ffc7}', },
-    Range { from: '\u{ffc8}', to: '\u{ffc9}', },
-    Range { from: '\u{ffca}', to: '\u{ffcf}', },
-    Range { from: '\u{ffd0}', to: '\u{ffd1}', },
-    Range { from: '\u{ffd2}', to: '\u{ffd7}', },
-    Range { from: '\u{ffd8}', to: '\u{ffd9}', },
-    Range { from: '\u{ffda}', to: '\u{ffdc}', },
-    Range { from: '\u{ffdd}', to: '\u{ffdf}', },
-    Range { from: '\u{ffe0}', to: '\u{ffee}', },
-    Range { from: '\u{ffef}', to: '\u{ffff}', },
-    Range { from: '\u{10000}', to: '\u{1000b}', },
-    Range { from: '\u{1000c}', to: '\u{1000c}', },
-    Range { from: '\u{1000d}', to: '\u{10026}', },
-    Range { from: '\u{10027}', to: '\u{10027}', },
-    Range { from: '\u{10028}', to: '\u{1003a}', },
-    Range { from: '\u{1003b}', to: '\u{1003b}', },
-    Range { from: '\u{1003c}', to: '\u{1003d}', },
-    Range { from: '\u{1003e}', to: '\u{1003e}', },
-    Range { from: '\u{1003f}', to: '\u{1004d}', },
-    Range { from: '\u{1004e}', to: '\u{1004f}', },
-    Range { from: '\u{10050}', to: '\u{1005d}', },
-    Range { from: '\u{1005e}', to: '\u{1007f}', },
-    Range { from: '\u{10080}', to: '\u{100fa}', },
-    Range { from: '\u{100fb}', to: '\u{100ff}', },
-    Range { from: '\u{10100}', to: '\u{10102}', },
-    Range { from: '\u{10103}', to: '\u{10106}', },
-    Range { from: '\u{10107}', to: '\u{10133}', },
-    Range { from: '\u{10134}', to: '\u{10136}', },
-    Range { from: '\u{10137}', to: '\u{1018e}', },
-    Range { from: '\u{1018f}', to: '\u{1018f}', },
-    Range { from: '\u{10190}', to: '\u{1019c}', },
-    Range { from: '\u{1019d}', to: '\u{1019f}', },
-    Range { from: '\u{101a0}', to: '\u{101a0}', },
-    Range { from: '\u{101a1}', to: '\u{101cf}', },
-    Range { from: '\u{101d0}', to: '\u{101fd}', },
-    Range { from: '\u{101fe}', to: '\u{1027f}', },
-    Range { from: '\u{10280}', to: '\u{1029c}', },
-    Range { from: '\u{1029d}', to: '\u{1029f}', },
-    Range { from: '\u{102a0}', to: '\u{102d0}', },
-    Range { from: '\u{102d1}', to: '\u{102df}', },
-    Range { from: '\u{102e0}', to: '\u{102fb}', },
-    Range { from: '\u{102fc}', to: '\u{102ff}', },
-    Range { from: '\u{10300}', to: '\u{10323}', },
-    Range { from: '\u{10324}', to: '\u{1032c}', },
-    Range { from: '\u{1032d}', to: '\u{1034a}', },
-    Range { from: '\u{1034b}', to: '\u{1034f}', },
-    Range { from: '\u{10350}', to: '\u{1037a}', },
-    Range { from: '\u{1037b}', to: '\u{1037f}', },
-    Range { from: '\u{10380}', to: '\u{1039d}', },
-    Range { from: '\u{1039e}', to: '\u{1039e}', },
-    Range { from: '\u{1039f}', to: '\u{103c3}', },
-    Range { from: '\u{103c4}', to: '\u{103c7}', },
-    Range { from: '\u{103c8}', to: '\u{103d5}', },
-    Range { from: '\u{103d6}', to: '\u{103ff}', },
-    Range { from: '\u{10400}', to: '\u{10427}', },
-    Range { from: '\u{10428}', to: '\u{1049d}', },
-    Range { from: '\u{1049e}', to: '\u{1049f}', },
-    Range { from: '\u{104a0}', to: '\u{104a9}', },
-    Range { from: '\u{104aa}', to: '\u{104af}', },
-    Range { from: '\u{104b0}', to: '\u{104d3}', },
-    Range { from: '\u{104d4}', to: '\u{104d7}', },
-    Range { from: '\u{104d8}', to: '\u{104fb}', },
-    Range { from: '\u{104fc}', to: '\u{104ff}', },
-    Range { from: '\u{10500}', to: '\u{10527}', },
-    Range { from: '\u{10528}', to: '\u{1052f}', },
-    Range { from: '\u{10530}', to: '\u{10563}', },
-    Range { from: '\u{10564}', to: '\u{1056e}', },
-    Range { from: '\u{1056f}', to: '\u{1056f}', },
-    Range { from: '\u{10570}', to: '\u{105ff}', },
-    Range { from: '\u{10600}', to: '\u{10736}', },
-    Range { from: '\u{10737}', to: '\u{1073f}', },
-    Range { from: '\u{10740}', to: '\u{10755}', },
-    Range { from: '\u{10756}', to: '\u{1075f}', },
-    Range { from: '\u{10760}', to: '\u{10767}', },
-    Range { from: '\u{10768}', to: '\u{107ff}', },
-    Range { from: '\u{10800}', to: '\u{10805}', },
-    Range { from: '\u{10806}', to: '\u{10807}', },
-    Range { from: '\u{10808}', to: '\u{10809}', },
-    Range { from: '\u{1080a}', to: '\u{10835}', },
-    Range { from: '\u{10836}', to: '\u{10836}', },
-    Range { from: '\u{10837}', to: '\u{10838}', },
-    Range { from: '\u{10839}', to: '\u{1083b}', },
-    Range { from: '\u{1083c}', to: '\u{1083c}', },
-    Range { from: '\u{1083d}', to: '\u{1083e}', },
-    Range { from: '\u{1083f}', to: '\u{10855}', },
-    Range { from: '\u{10856}', to: '\u{10856}', },
-    Range { from: '\u{10857}', to: '\u{1089e}', },
-    Range { from: '\u{1089f}', to: '\u{108a6}', },
-    Range { from: '\u{108a7}', to: '\u{108af}', },
-    Range { from: '\u{108b0}', to: '\u{108df}', },
-    Range { from: '\u{108e0}', to: '\u{108f2}', },
-    Range { from: '\u{108f3}', to: '\u{108f3}', },
-    Range { from: '\u{108f4}', to: '\u{108f5}', },
-    Range { from: '\u{108f6}', to: '\u{108fa}', },
-    Range { from: '\u{108fb}', to: '\u{1091b}', },
-    Range { from: '\u{1091c}', to: '\u{1091e}', },
-    Range { from: '\u{1091f}', to: '\u{10939}', },
-    Range { from: '\u{1093a}', to: '\u{1093e}', },
-    Range { from: '\u{1093f}', to: '\u{1093f}', },
-    Range { from: '\u{10940}', to: '\u{1097f}', },
-    Range { from: '\u{10980}', to: '\u{109b7}', },
-    Range { from: '\u{109b8}', to: '\u{109bb}', },
-    Range { from: '\u{109bc}', to: '\u{109cf}', },
-    Range { from: '\u{109d0}', to: '\u{109d1}', },
-    Range { from: '\u{109d2}', to: '\u{10a03}', },
-    Range { from: '\u{10a04}', to: '\u{10a04}', },
-    Range { from: '\u{10a05}', to: '\u{10a06}', },
-    Range { from: '\u{10a07}', to: '\u{10a0b}', },
-    Range { from: '\u{10a0c}', to: '\u{10a13}', },
-    Range { from: '\u{10a14}', to: '\u{10a14}', },
-    Range { from: '\u{10a15}', to: '\u{10a17}', },
-    Range { from: '\u{10a18}', to: '\u{10a18}', },
-    Range { from: '\u{10a19}', to: '\u{10a35}', },
-    Range { from: '\u{10a36}', to: '\u{10a37}', },
-    Range { from: '\u{10a38}', to: '\u{10a3a}', },
-    Range { from: '\u{10a3b}', to: '\u{10a3e}', },
-    Range { from: '\u{10a3f}', to: '\u{10a48}', },
-    Range { from: '\u{10a49}', to: '\u{10a4f}', },
-    Range { from: '\u{10a50}', to: '\u{10a58}', },
-    Range { from: '\u{10a59}', to: '\u{10a5f}', },
-    Range { from: '\u{10a60}', to: '\u{10a9f}', },
-    Range { from: '\u{10aa0}', to: '\u{10abf}', },
-    Range { from: '\u{10ac0}', to: '\u{10ae6}', },
-    Range { from: '\u{10ae7}', to: '\u{10aea}', },
-    Range { from: '\u{10aeb}', to: '\u{10af6}', },
-    Range { from: '\u{10af7}', to: '\u{10aff}', },
-    Range { from: '\u{10b00}', to: '\u{10b35}', },
-    Range { from: '\u{10b36}', to: '\u{10b38}', },
-    Range { from: '\u{10b39}', to: '\u{10b55}', },
-    Range { from: '\u{10b56}', to: '\u{10b57}', },
-    Range { from: '\u{10b58}', to: '\u{10b72}', },
-    Range { from: '\u{10b73}', to: '\u{10b77}', },
-    Range { from: '\u{10b78}', to: '\u{10b91}', },
-    Range { from: '\u{10b92}', to: '\u{10b98}', },
-    Range { from: '\u{10b99}', to: '\u{10b9c}', },
-    Range { from: '\u{10b9d}', to: '\u{10ba8}', },
-    Range { from: '\u{10ba9}', to: '\u{10baf}', },
-    Range { from: '\u{10bb0}', to: '\u{10bff}', },
-    Range { from: '\u{10c00}', to: '\u{10c48}', },
-    Range { from: '\u{10c49}', to: '\u{10c7f}', },
-    Range { from: '\u{10c80}', to: '\u{10cb2}', },
-    Range { from: '\u{10cb3}', to: '\u{10cbf}', },
-    Range { from: '\u{10cc0}', to: '\u{10cf2}', },
-    Range { from: '\u{10cf3}', to: '\u{10cf9}', },
-    Range { from: '\u{10cfa}', to: '\u{10d27}', },
-    Range { from: '\u{10d28}', to: '\u{10d2f}', },
-    Range { from: '\u{10d30}', to: '\u{10d39}', },
-    Range { from: '\u{10d3a}', to: '\u{10e5f}', },
-    Range { from: '\u{10e60}', to: '\u{10e7e}', },
-    Range { from: '\u{10e7f}', to: '\u{10e7f}', },
-    Range { from: '\u{10e80}', to: '\u{10ea9}', },
-    Range { from: '\u{10eaa}', to: '\u{10eaa}', },
-    Range { from: '\u{10eab}', to: '\u{10ead}', },
-    Range { from: '\u{10eae}', to: '\u{10eaf}', },
-    Range { from: '\u{10eb0}', to: '\u{10eb1}', },
-    Range { from: '\u{10eb2}', to: '\u{10eff}', },
-    Range { from: '\u{10f00}', to: '\u{10f27}', },
-    Range { from: '\u{10f28}', to: '\u{10f2f}', },
-    Range { from: '\u{10f30}', to: '\u{10f59}', },
-    Range { from: '\u{10f5a}', to: '\u{10faf}', },
-    Range { from: '\u{10fb0}', to: '\u{10fcb}', },
-    Range { from: '\u{10fcc}', to: '\u{10fdf}', },
-    Range { from: '\u{10fe0}', to: '\u{10ff6}', },
-    Range { from: '\u{10ff7}', to: '\u{10fff}', },
-    Range { from: '\u{11000}', to: '\u{1104d}', },
-    Range { from: '\u{1104e}', to: '\u{11051}', },
-    Range { from: '\u{11052}', to: '\u{1106f}', },
-    Range { from: '\u{11070}', to: '\u{1107e}', },
-    Range { from: '\u{1107f}', to: '\u{110bc}', },
-    Range { from: '\u{110bd}', to: '\u{110bd}', },
-    Range { from: '\u{110be}', to: '\u{110c1}', },
-    Range { from: '\u{110c2}', to: '\u{110cf}', },
-    Range { from: '\u{110d0}', to: '\u{110e8}', },
-    Range { from: '\u{110e9}', to: '\u{110ef}', },
-    Range { from: '\u{110f0}', to: '\u{110f9}', },
-    Range { from: '\u{110fa}', to: '\u{110ff}', },
-    Range { from: '\u{11100}', to: '\u{11134}', },
-    Range { from: '\u{11135}', to: '\u{11135}', },
-    Range { from: '\u{11136}', to: '\u{11147}', },
-    Range { from: '\u{11148}', to: '\u{1114f}', },
-    Range { from: '\u{11150}', to: '\u{11176}', },
-    Range { from: '\u{11177}', to: '\u{1117f}', },
-    Range { from: '\u{11180}', to: '\u{111df}', },
-    Range { from: '\u{111e0}', to: '\u{111e0}', },
-    Range { from: '\u{111e1}', to: '\u{111f4}', },
-    Range { from: '\u{111f5}', to: '\u{111ff}', },
-    Range { from: '\u{11200}', to: '\u{11211}', },
-    Range { from: '\u{11212}', to: '\u{11212}', },
-    Range { from: '\u{11213}', to: '\u{1123e}', },
-    Range { from: '\u{1123f}', to: '\u{1127f}', },
-    Range { from: '\u{11280}', to: '\u{11286}', },
-    Range { from: '\u{11287}', to: '\u{11289}', },
-    Range { from: '\u{1128a}', to: '\u{1128d}', },
-    Range { from: '\u{1128e}', to: '\u{1128e}', },
-    Range { from: '\u{1128f}', to: '\u{1129d}', },
-    Range { from: '\u{1129e}', to: '\u{1129e}', },
-    Range { from: '\u{1129f}', to: '\u{112a9}', },
-    Range { from: '\u{112aa}', to: '\u{112af}', },
-    Range { from: '\u{112b0}', to: '\u{112ea}', },
-    Range { from: '\u{112eb}', to: '\u{112ef}', },
-    Range { from: '\u{112f0}', to: '\u{112f9}', },
-    Range { from: '\u{112fa}', to: '\u{112ff}', },
-    Range { from: '\u{11300}', to: '\u{11303}', },
-    Range { from: '\u{11304}', to: '\u{11304}', },
-    Range { from: '\u{11305}', to: '\u{1130c}', },
-    Range { from: '\u{1130d}', to: '\u{1130e}', },
-    Range { from: '\u{1130f}', to: '\u{11310}', },
-    Range { from: '\u{11311}', to: '\u{11312}', },
-    Range { from: '\u{11313}', to: '\u{11328}', },
-    Range { from: '\u{11329}', to: '\u{11329}', },
-    Range { from: '\u{1132a}', to: '\u{11330}', },
-    Range { from: '\u{11331}', to: '\u{11331}', },
-    Range { from: '\u{11332}', to: '\u{11333}', },
-    Range { from: '\u{11334}', to: '\u{11334}', },
-    Range { from: '\u{11335}', to: '\u{11339}', },
-    Range { from: '\u{1133a}', to: '\u{1133a}', },
-    Range { from: '\u{1133b}', to: '\u{11344}', },
-    Range { from: '\u{11345}', to: '\u{11346}', },
-    Range { from: '\u{11347}', to: '\u{11348}', },
-    Range { from: '\u{11349}', to: '\u{1134a}', },
-    Range { from: '\u{1134b}', to: '\u{1134d}', },
-    Range { from: '\u{1134e}', to: '\u{1134f}', },
-    Range { from: '\u{11350}', to: '\u{11350}', },
-    Range { from: '\u{11351}', to: '\u{11356}', },
-    Range { from: '\u{11357}', to: '\u{11357}', },
-    Range { from: '\u{11358}', to: '\u{1135c}', },
-    Range { from: '\u{1135d}', to: '\u{11363}', },
-    Range { from: '\u{11364}', to: '\u{11365}', },
-    Range { from: '\u{11366}', to: '\u{1136c}', },
-    Range { from: '\u{1136d}', to: '\u{1136f}', },
-    Range { from: '\u{11370}', to: '\u{11374}', },
-    Range { from: '\u{11375}', to: '\u{113ff}', },
-    Range { from: '\u{11400}', to: '\u{1145b}', },
-    Range { from: '\u{1145c}', to: '\u{1145c}', },
-    Range { from: '\u{1145d}', to: '\u{11461}', },
-    Range { from: '\u{11462}', to: '\u{1147f}', },
-    Range { from: '\u{11480}', to: '\u{114c7}', },
-    Range { from: '\u{114c8}', to: '\u{114cf}', },
-    Range { from: '\u{114d0}', to: '\u{114d9}', },
-    Range { from: '\u{114da}', to: '\u{1157f}', },
-    Range { from: '\u{11580}', to: '\u{115b5}', },
-    Range { from: '\u{115b6}', to: '\u{115b7}', },
-    Range { from: '\u{115b8}', to: '\u{115dd}', },
-    Range { from: '\u{115de}', to: '\u{115ff}', },
-    Range { from: '\u{11600}', to: '\u{11644}', },
-    Range { from: '\u{11645}', to: '\u{1164f}', },
-    Range { from: '\u{11650}', to: '\u{11659}', },
-    Range { from: '\u{1165a}', to: '\u{1165f}', },
-    Range { from: '\u{11660}', to: '\u{1166c}', },
-    Range { from: '\u{1166d}', to: '\u{1167f}', },
-    Range { from: '\u{11680}', to: '\u{116b8}', },
-    Range { from: '\u{116b9}', to: '\u{116bf}', },
-    Range { from: '\u{116c0}', to: '\u{116c9}', },
-    Range { from: '\u{116ca}', to: '\u{116ff}', },
-    Range { from: '\u{11700}', to: '\u{1171a}', },
-    Range { from: '\u{1171b}', to: '\u{1171c}', },
-    Range { from: '\u{1171d}', to: '\u{1172b}', },
-    Range { from: '\u{1172c}', to: '\u{1172f}', },
-    Range { from: '\u{11730}', to: '\u{1173f}', },
-    Range { from: '\u{11740}', to: '\u{117ff}', },
-    Range { from: '\u{11800}', to: '\u{1183b}', },
-    Range { from: '\u{1183c}', to: '\u{1189f}', },
-    Range { from: '\u{118a0}', to: '\u{118bf}', },
-    Range { from: '\u{118c0}', to: '\u{118f2}', },
-    Range { from: '\u{118f3}', to: '\u{118fe}', },
-    Range { from: '\u{118ff}', to: '\u{11906}', },
-    Range { from: '\u{11907}', to: '\u{11908}', },
-    Range { from: '\u{11909}', to: '\u{11909}', },
-    Range { from: '\u{1190a}', to: '\u{1190b}', },
-    Range { from: '\u{1190c}', to: '\u{11913}', },
-    Range { from: '\u{11914}', to: '\u{11914}', },
-    Range { from: '\u{11915}', to: '\u{11916}', },
-    Range { from: '\u{11917}', to: '\u{11917}', },
-    Range { from: '\u{11918}', to: '\u{11935}', },
-    Range { from: '\u{11936}', to: '\u{11936}', },
-    Range { from: '\u{11937}', to: '\u{11938}', },
-    Range { from: '\u{11939}', to: '\u{1193a}', },
-    Range { from: '\u{1193b}', to: '\u{11946}', },
-    Range { from: '\u{11947}', to: '\u{1194f}', },
-    Range { from: '\u{11950}', to: '\u{11959}', },
-    Range { from: '\u{1195a}', to: '\u{1199f}', },
-    Range { from: '\u{119a0}', to: '\u{119a7}', },
-    Range { from: '\u{119a8}', to: '\u{119a9}', },
-    Range { from: '\u{119aa}', to: '\u{119d7}', },
-    Range { from: '\u{119d8}', to: '\u{119d9}', },
-    Range { from: '\u{119da}', to: '\u{119e4}', },
-    Range { from: '\u{119e5}', to: '\u{119ff}', },
-    Range { from: '\u{11a00}', to: '\u{11a47}', },
-    Range { from: '\u{11a48}', to: '\u{11a4f}', },
-    Range { from: '\u{11a50}', to: '\u{11aa2}', },
-    Range { from: '\u{11aa3}', to: '\u{11abf}', },
-    Range { from: '\u{11ac0}', to: '\u{11af8}', },
-    Range { from: '\u{11af9}', to: '\u{11bff}', },
-    Range { from: '\u{11c00}', to: '\u{11c08}', },
-    Range { from: '\u{11c09}', to: '\u{11c09}', },
-    Range { from: '\u{11c0a}', to: '\u{11c36}', },
-    Range { from: '\u{11c37}', to: '\u{11c37}', },
-    Range { from: '\u{11c38}', to: '\u{11c45}', },
-    Range { from: '\u{11c46}', to: '\u{11c4f}', },
-    Range { from: '\u{11c50}', to: '\u{11c6c}', },
-    Range { from: '\u{11c6d}', to: '\u{11c6f}', },
-    Range { from: '\u{11c70}', to: '\u{11c8f}', },
-    Range { from: '\u{11c90}', to: '\u{11c91}', },
-    Range { from: '\u{11c92}', to: '\u{11ca7}', },
-    Range { from: '\u{11ca8}', to: '\u{11ca8}', },
-    Range { from: '\u{11ca9}', to: '\u{11cb6}', },
-    Range { from: '\u{11cb7}', to: '\u{11cff}', },
-    Range { from: '\u{11d00}', to: '\u{11d06}', },
-    Range { from: '\u{11d07}', to: '\u{11d07}', },
-    Range { from: '\u{11d08}', to: '\u{11d09}', },
-    Range { from: '\u{11d0a}', to: '\u{11d0a}', },
-    Range { from: '\u{11d0b}', to: '\u{11d36}', },
-    Range { from: '\u{11d37}', to: '\u{11d39}', },
-    Range { from: '\u{11d3a}', to: '\u{11d3b}', },
-    Range { from: '\u{11d3c}', to: '\u{11d3d}', },
-    Range { from: '\u{11d3e}', to: '\u{11d3e}', },
-    Range { from: '\u{11d3f}', to: '\u{11d47}', },
-    Range { from: '\u{11d48}', to: '\u{11d4f}', },
-    Range { from: '\u{11d50}', to: '\u{11d59}', },
-    Range { from: '\u{11d5a}', to: '\u{11d5f}', },
-    Range { from: '\u{11d60}', to: '\u{11d65}', },
-    Range { from: '\u{11d66}', to: '\u{11d66}', },
-    Range { from: '\u{11d67}', to: '\u{11d68}', },
-    Range { from: '\u{11d69}', to: '\u{11d69}', },
-    Range { from: '\u{11d6a}', to: '\u{11d8e}', },
-    Range { from: '\u{11d8f}', to: '\u{11d8f}', },
-    Range { from: '\u{11d90}', to: '\u{11d91}', },
-    Range { from: '\u{11d92}', to: '\u{11d92}', },
-    Range { from: '\u{11d93}', to: '\u{11d98}', },
-    Range { from: '\u{11d99}', to: '\u{11d9f}', },
-    Range { from: '\u{11da0}', to: '\u{11da9}', },
-    Range { from: '\u{11daa}', to: '\u{11edf}', },
-    Range { from: '\u{11ee0}', to: '\u{11ef8}', },
-    Range { from: '\u{11ef9}', to: '\u{11faf}', },
-    Range { from: '\u{11fb0}', to: '\u{11fb0}', },
-    Range { from: '\u{11fb1}', to: '\u{11fbf}', },
-    Range { from: '\u{11fc0}', to: '\u{11ff1}', },
-    Range { from: '\u{11ff2}', to: '\u{11ffe}', },
-    Range { from: '\u{11fff}', to: '\u{12399}', },
-    Range { from: '\u{1239a}', to: '\u{123ff}', },
-    Range { from: '\u{12400}', to: '\u{1246e}', },
-    Range { from: '\u{1246f}', to: '\u{1246f}', },
-    Range { from: '\u{12470}', to: '\u{12474}', },
-    Range { from: '\u{12475}', to: '\u{1247f}', },
-    Range { from: '\u{12480}', to: '\u{12543}', },
-    Range { from: '\u{12544}', to: '\u{12fff}', },
-    Range { from: '\u{13000}', to: '\u{1342e}', },
-    Range { from: '\u{1342f}', to: '\u{143ff}', },
-    Range { from: '\u{14400}', to: '\u{14646}', },
-    Range { from: '\u{14647}', to: '\u{167ff}', },
-    Range { from: '\u{16800}', to: '\u{16a38}', },
-    Range { from: '\u{16a39}', to: '\u{16a3f}', },
-    Range { from: '\u{16a40}', to: '\u{16a5e}', },
-    Range { from: '\u{16a5f}', to: '\u{16a5f}', },
-    Range { from: '\u{16a60}', to: '\u{16a69}', },
-    Range { from: '\u{16a6a}', to: '\u{16a6d}', },
-    Range { from: '\u{16a6e}', to: '\u{16a6f}', },
-    Range { from: '\u{16a70}', to: '\u{16acf}', },
-    Range { from: '\u{16ad0}', to: '\u{16aed}', },
-    Range { from: '\u{16aee}', to: '\u{16aef}', },
-    Range { from: '\u{16af0}', to: '\u{16af5}', },
-    Range { from: '\u{16af6}', to: '\u{16aff}', },
-    Range { from: '\u{16b00}', to: '\u{16b45}', },
-    Range { from: '\u{16b46}', to: '\u{16b4f}', },
-    Range { from: '\u{16b50}', to: '\u{16b59}', },
-    Range { from: '\u{16b5a}', to: '\u{16b5a}', },
-    Range { from: '\u{16b5b}', to: '\u{16b61}', },
-    Range { from: '\u{16b62}', to: '\u{16b62}', },
-    Range { from: '\u{16b63}', to: '\u{16b77}', },
-    Range { from: '\u{16b78}', to: '\u{16b7c}', },
-    Range { from: '\u{16b7d}', to: '\u{16b8f}', },
-    Range { from: '\u{16b90}', to: '\u{16e3f}', },
-    Range { from: '\u{16e40}', to: '\u{16e5f}', },
-    Range { from: '\u{16e60}', to: '\u{16e9a}', },
-    Range { from: '\u{16e9b}', to: '\u{16eff}', },
-    Range { from: '\u{16f00}', to: '\u{16f4a}', },
-    Range { from: '\u{16f4b}', to: '\u{16f4e}', },
-    Range { from: '\u{16f4f}', to: '\u{16f87}', },
-    Range { from: '\u{16f88}', to: '\u{16f8e}', },
-    Range { from: '\u{16f8f}', to: '\u{16f9f}', },
-    Range { from: '\u{16fa0}', to: '\u{16fdf}', },
-    Range { from: '\u{16fe0}', to: '\u{16fe4}', },
-    Range { from: '\u{16fe5}', to: '\u{16fef}', },
-    Range { from: '\u{16ff0}', to: '\u{16ff1}', },
-    Range { from: '\u{16ff2}', to: '\u{16fff}', },
-    Range { from: '\u{17000}', to: '\u{187f7}', },
-    Range { from: '\u{187f8}', to: '\u{187ff}', },
-    Range { from: '\u{18800}', to: '\u{18cd5}', },
-    Range { from: '\u{18cd6}', to: '\u{18cff}', },
-    Range { from: '\u{18d00}', to: '\u{18d08}', },
-    Range { from: '\u{18d09}', to: '\u{1afff}', },
-    Range { from: '\u{1b000}', to: '\u{1b11e}', },
-    Range { from: '\u{1b11f}', to: '\u{1b14f}', },
-    Range { from: '\u{1b150}', to: '\u{1b152}', },
-    Range { from: '\u{1b153}', to: '\u{1b163}', },
-    Range { from: '\u{1b164}', to: '\u{1b167}', },
-    Range { from: '\u{1b168}', to: '\u{1b16f}', },
-    Range { from: '\u{1b170}', to: '\u{1b2fb}', },
-    Range { from: '\u{1b2fc}', to: '\u{1bbff}', },
-    Range { from: '\u{1bc00}', to: '\u{1bc6a}', },
-    Range { from: '\u{1bc6b}', to: '\u{1bc6f}', },
-    Range { from: '\u{1bc70}', to: '\u{1bc7c}', },
-    Range { from: '\u{1bc7d}', to: '\u{1bc7f}', },
-    Range { from: '\u{1bc80}', to: '\u{1bc88}', },
-    Range { from: '\u{1bc89}', to: '\u{1bc8f}', },
-    Range { from: '\u{1bc90}', to: '\u{1bc99}', },
-    Range { from: '\u{1bc9a}', to: '\u{1bc9b}', },
-    Range { from: '\u{1bc9c}', to: '\u{1bc9f}', },
-    Range { from: '\u{1bca0}', to: '\u{1bca3}', },
-    Range { from: '\u{1bca4}', to: '\u{1cfff}', },
-    Range { from: '\u{1d000}', to: '\u{1d0f5}', },
-    Range { from: '\u{1d0f6}', to: '\u{1d0ff}', },
-    Range { from: '\u{1d100}', to: '\u{1d126}', },
-    Range { from: '\u{1d127}', to: '\u{1d128}', },
-    Range { from: '\u{1d129}', to: '\u{1d15d}', },
-    Range { from: '\u{1d15e}', to: '\u{1d164}', },
-    Range { from: '\u{1d165}', to: '\u{1d172}', },
-    Range { from: '\u{1d173}', to: '\u{1d17a}', },
-    Range { from: '\u{1d17b}', to: '\u{1d1ba}', },
-    Range { from: '\u{1d1bb}', to: '\u{1d1c0}', },
-    Range { from: '\u{1d1c1}', to: '\u{1d1e8}', },
-    Range { from: '\u{1d1e9}', to: '\u{1d1ff}', },
-    Range { from: '\u{1d200}', to: '\u{1d245}', },
-    Range { from: '\u{1d246}', to: '\u{1d2df}', },
-    Range { from: '\u{1d2e0}', to: '\u{1d2f3}', },
-    Range { from: '\u{1d2f4}', to: '\u{1d2ff}', },
-    Range { from: '\u{1d300}', to: '\u{1d356}', },
-    Range { from: '\u{1d357}', to: '\u{1d35f}', },
-    Range { from: '\u{1d360}', to: '\u{1d378}', },
-    Range { from: '\u{1d379}', to: '\u{1d3ff}', },
-    Range { from: '\u{1d400}', to: '\u{1d49f}', },
-    Range { from: '\u{1d4a0}', to: '\u{1d4a1}', },
-    Range { from: '\u{1d4a2}', to: '\u{1d4a2}', },
-    Range { from: '\u{1d4a3}', to: '\u{1d4a4}', },
-    Range { from: '\u{1d4a5}', to: '\u{1d4a6}', },
-    Range { from: '\u{1d4a7}', to: '\u{1d4a8}', },
-    Range { from: '\u{1d4a9}', to: '\u{1d50a}', },
-    Range { from: '\u{1d50b}', to: '\u{1d50c}', },
-    Range { from: '\u{1d50d}', to: '\u{1d546}', },
-    Range { from: '\u{1d547}', to: '\u{1d549}', },
-    Range { from: '\u{1d54a}', to: '\u{1d6a5}', },
-    Range { from: '\u{1d6a6}', to: '\u{1d6a7}', },
-    Range { from: '\u{1d6a8}', to: '\u{1d6d2}', },
-    Range { from: '\u{1d6d3}', to: '\u{1d6d4}', },
-    Range { from: '\u{1d6d5}', to: '\u{1d70c}', },
-    Range { from: '\u{1d70d}', to: '\u{1d70e}', },
-    Range { from: '\u{1d70f}', to: '\u{1d746}', },
-    Range { from: '\u{1d747}', to: '\u{1d748}', },
-    Range { from: '\u{1d749}', to: '\u{1d780}', },
-    Range { from: '\u{1d781}', to: '\u{1d782}', },
-    Range { from: '\u{1d783}', to: '\u{1d7ba}', },
-    Range { from: '\u{1d7bb}', to: '\u{1d7bc}', },
-    Range { from: '\u{1d7bd}', to: '\u{1d7c9}', },
-    Range { from: '\u{1d7ca}', to: '\u{1d7cb}', },
-    Range { from: '\u{1d7cc}', to: '\u{1d7cd}', },
-    Range { from: '\u{1d7ce}', to: '\u{1d7ff}', },
-    Range { from: '\u{1d800}', to: '\u{1da8b}', },
-    Range { from: '\u{1da8c}', to: '\u{1da9a}', },
-    Range { from: '\u{1da9b}', to: '\u{1da9f}', },
-    Range { from: '\u{1daa0}', to: '\u{1daa0}', },
-    Range { from: '\u{1daa1}', to: '\u{1daaf}', },
-    Range { from: '\u{1dab0}', to: '\u{1dfff}', },
-    Range { from: '\u{1e000}', to: '\u{1e006}', },
-    Range { from: '\u{1e007}', to: '\u{1e007}', },
-    Range { from: '\u{1e008}', to: '\u{1e018}', },
-    Range { from: '\u{1e019}', to: '\u{1e01a}', },
-    Range { from: '\u{1e01b}', to: '\u{1e021}', },
-    Range { from: '\u{1e022}', to: '\u{1e022}', },
-    Range { from: '\u{1e023}', to: '\u{1e024}', },
-    Range { from: '\u{1e025}', to: '\u{1e025}', },
-    Range { from: '\u{1e026}', to: '\u{1e02a}', },
-    Range { from: '\u{1e02b}', to: '\u{1e0ff}', },
-    Range { from: '\u{1e100}', to: '\u{1e12c}', },
-    Range { from: '\u{1e12d}', to: '\u{1e12f}', },
-    Range { from: '\u{1e130}', to: '\u{1e13d}', },
-    Range { from: '\u{1e13e}', to: '\u{1e13f}', },
-    Range { from: '\u{1e140}', to: '\u{1e149}', },
-    Range { from: '\u{1e14a}', to: '\u{1e14d}', },
-    Range { from: '\u{1e14e}', to: '\u{1e14f}', },
-    Range { from: '\u{1e150}', to: '\u{1e2bf}', },
-    Range { from: '\u{1e2c0}', to: '\u{1e2f9}', },
-    Range { from: '\u{1e2fa}', to: '\u{1e2fe}', },
-    Range { from: '\u{1e2ff}', to: '\u{1e2ff}', },
-    Range { from: '\u{1e300}', to: '\u{1e7ff}', },
-    Range { from: '\u{1e800}', to: '\u{1e8c4}', },
-    Range { from: '\u{1e8c5}', to: '\u{1e8c6}', },
-    Range { from: '\u{1e8c7}', to: '\u{1e8d6}', },
-    Range { from: '\u{1e8d7}', to: '\u{1e8ff}', },
-    Range { from: '\u{1e900}', to: '\u{1e921}', },
-    Range { from: '\u{1e922}', to: '\u{1e94b}', },
-    Range { from: '\u{1e94c}', to: '\u{1e94f}', },
-    Range { from: '\u{1e950}', to: '\u{1e959}', },
-    Range { from: '\u{1e95a}', to: '\u{1e95d}', },
-    Range { from: '\u{1e95e}', to: '\u{1e95f}', },
-    Range { from: '\u{1e960}', to: '\u{1ec70}', },
-    Range { from: '\u{1ec71}', to: '\u{1ecb4}', },
-    Range { from: '\u{1ecb5}', to: '\u{1ed00}', },
-    Range { from: '\u{1ed01}', to: '\u{1ed3d}', },
-    Range { from: '\u{1ed3e}', to: '\u{1edff}', },
-    Range { from: '\u{1ee00}', to: '\u{1ee24}', },
-    Range { from: '\u{1ee25}', to: '\u{1ee26}', },
-    Range { from: '\u{1ee27}', to: '\u{1ee3b}', },
-    Range { from: '\u{1ee3c}', to: '\u{1ee41}', },
-    Range { from: '\u{1ee42}', to: '\u{1ee42}', },
-    Range { from: '\u{1ee43}', to: '\u{1ee46}', },
-    Range { from: '\u{1ee47}', to: '\u{1ee54}', },
-    Range { from: '\u{1ee55}', to: '\u{1ee56}', },
-    Range { from: '\u{1ee57}', to: '\u{1ee64}', },
-    Range { from: '\u{1ee65}', to: '\u{1ee66}', },
-    Range { from: '\u{1ee67}', to: '\u{1ee9b}', },
-    Range { from: '\u{1ee9c}', to: '\u{1eea0}', },
-    Range { from: '\u{1eea1}', to: '\u{1eebb}', },
-    Range { from: '\u{1eebc}', to: '\u{1eeef}', },
-    Range { from: '\u{1eef0}', to: '\u{1eef1}', },
-    Range { from: '\u{1eef2}', to: '\u{1efff}', },
-    Range { from: '\u{1f000}', to: '\u{1f02b}', },
-    Range { from: '\u{1f02c}', to: '\u{1f02f}', },
-    Range { from: '\u{1f030}', to: '\u{1f093}', },
-    Range { from: '\u{1f094}', to: '\u{1f09f}', },
-    Range { from: '\u{1f0a0}', to: '\u{1f0ae}', },
-    Range { from: '\u{1f0af}', to: '\u{1f0b0}', },
-    Range { from: '\u{1f0b1}', to: '\u{1f0bf}', },
-    Range { from: '\u{1f0c0}', to: '\u{1f0c0}', },
-    Range { from: '\u{1f0c1}', to: '\u{1f0cf}', },
-    Range { from: '\u{1f0d0}', to: '\u{1f0d0}', },
-    Range { from: '\u{1f0d1}', to: '\u{1f0f5}', },
-    Range { from: '\u{1f0f6}', to: '\u{1f100}', },
-    Range { from: '\u{1f101}', to: '\u{1f10a}', },
-    Range { from: '\u{1f10b}', to: '\u{1f10f}', },
-    Range { from: '\u{1f110}', to: '\u{1f14f}', },
-    Range { from: '\u{1f150}', to: '\u{1f169}', },
-    Range { from: '\u{1f16a}', to: '\u{1f16c}', },
-    Range { from: '\u{1f16d}', to: '\u{1f18f}', },
-    Range { from: '\u{1f190}', to: '\u{1f190}', },
-    Range { from: '\u{1f191}', to: '\u{1f1ad}', },
-    Range { from: '\u{1f1ae}', to: '\u{1f1e5}', },
-    Range { from: '\u{1f1e6}', to: '\u{1f1ff}', },
-    Range { from: '\u{1f200}', to: '\u{1f202}', },
-    Range { from: '\u{1f203}', to: '\u{1f20f}', },
-    Range { from: '\u{1f210}', to: '\u{1f23b}', },
-    Range { from: '\u{1f23c}', to: '\u{1f23f}', },
-    Range { from: '\u{1f240}', to: '\u{1f248}', },
-    Range { from: '\u{1f249}', to: '\u{1f24f}', },
-    Range { from: '\u{1f250}', to: '\u{1f251}', },
-    Range { from: '\u{1f252}', to: '\u{1f25f}', },
-    Range { from: '\u{1f260}', to: '\u{1f265}', },
-    Range { from: '\u{1f266}', to: '\u{1f2ff}', },
-    Range { from: '\u{1f300}', to: '\u{1f6d7}', },
-    Range { from: '\u{1f6d8}', to: '\u{1f6df}', },
-    Range { from: '\u{1f6e0}', to: '\u{1f6ec}', },
-    Range { from: '\u{1f6ed}', to: '\u{1f6ef}', },
-    Range { from: '\u{1f6f0}', to: '\u{1f6fc}', },
-    Range { from: '\u{1f6fd}', to: '\u{1f6ff}', },
-    Range { from: '\u{1f700}', to: '\u{1f773}', },
-    Range { from: '\u{1f774}', to: '\u{1f77f}', },
-    Range { from: '\u{1f780}', to: '\u{1f7d8}', },
-    Range { from: '\u{1f7d9}', to: '\u{1f7df}', },
-    Range { from: '\u{1f7e0}', to: '\u{1f7eb}', },
-    Range { from: '\u{1f7ec}', to: '\u{1f7ff}', },
-    Range { from: '\u{1f800}', to: '\u{1f80b}', },
-    Range { from: '\u{1f80c}', to: '\u{1f80f}', },
-    Range { from: '\u{1f810}', to: '\u{1f847}', },
-    Range { from: '\u{1f848}', to: '\u{1f84f}', },
-    Range { from: '\u{1f850}', to: '\u{1f859}', },
-    Range { from: '\u{1f85a}', to: '\u{1f85f}', },
-    Range { from: '\u{1f860}', to: '\u{1f887}', },
-    Range { from: '\u{1f888}', to: '\u{1f88f}', },
-    Range { from: '\u{1f890}', to: '\u{1f8ad}', },
-    Range { from: '\u{1f8ae}', to: '\u{1f8af}', },
-    Range { from: '\u{1f8b0}', to: '\u{1f8b1}', },
-    Range { from: '\u{1f8b2}', to: '\u{1f8ff}', },
-    Range { from: '\u{1f900}', to: '\u{1f978}', },
-    Range { from: '\u{1f979}', to: '\u{1f979}', },
-    Range { from: '\u{1f97a}', to: '\u{1f9cb}', },
-    Range { from: '\u{1f9cc}', to: '\u{1f9cc}', },
-    Range { from: '\u{1f9cd}', to: '\u{1fa53}', },
-    Range { from: '\u{1fa54}', to: '\u{1fa5f}', },
-    Range { from: '\u{1fa60}', to: '\u{1fa6d}', },
-    Range { from: '\u{1fa6e}', to: '\u{1fa6f}', },
-    Range { from: '\u{1fa70}', to: '\u{1fa74}', },
-    Range { from: '\u{1fa75}', to: '\u{1fa77}', },
-    Range { from: '\u{1fa78}', to: '\u{1fa7a}', },
-    Range { from: '\u{1fa7b}', to: '\u{1fa7f}', },
-    Range { from: '\u{1fa80}', to: '\u{1fa86}', },
-    Range { from: '\u{1fa87}', to: '\u{1fa8f}', },
-    Range { from: '\u{1fa90}', to: '\u{1faa8}', },
-    Range { from: '\u{1faa9}', to: '\u{1faaf}', },
-    Range { from: '\u{1fab0}', to: '\u{1fab6}', },
-    Range { from: '\u{1fab7}', to: '\u{1fabf}', },
-    Range { from: '\u{1fac0}', to: '\u{1fac2}', },
-    Range { from: '\u{1fac3}', to: '\u{1facf}', },
-    Range { from: '\u{1fad0}', to: '\u{1fad6}', },
-    Range { from: '\u{1fad7}', to: '\u{1faff}', },
-    Range { from: '\u{1fb00}', to: '\u{1fb92}', },
-    Range { from: '\u{1fb93}', to: '\u{1fb93}', },
-    Range { from: '\u{1fb94}', to: '\u{1fbca}', },
-    Range { from: '\u{1fbcb}', to: '\u{1fbef}', },
-    Range { from: '\u{1fbf0}', to: '\u{1fbf9}', },
-    Range { from: '\u{1fbfa}', to: '\u{1ffff}', },
-    Range { from: '\u{20000}', to: '\u{2a6dd}', },
-    Range { from: '\u{2a6de}', to: '\u{2a6ff}', },
-    Range { from: '\u{2a700}', to: '\u{2b734}', },
-    Range { from: '\u{2b735}', to: '\u{2b73f}', },
-    Range { from: '\u{2b740}', to: '\u{2b81d}', },
-    Range { from: '\u{2b81e}', to: '\u{2b81f}', },
-    Range { from: '\u{2b820}', to: '\u{2cea1}', },
-    Range { from: '\u{2cea2}', to: '\u{2ceaf}', },
-    Range { from: '\u{2ceb0}', to: '\u{2ebe0}', },
-    Range { from: '\u{2ebe1}', to: '\u{2f7ff}', },
-    Range { from: '\u{2f800}', to: '\u{2f830}', },
-    Range { from: '\u{2f831}', to: '\u{2f833}', },
-    Range { from: '\u{2f834}', to: '\u{2f844}', },
-    Range { from: '\u{2f845}', to: '\u{2f846}', },
-    Range { from: '\u{2f847}', to: '\u{2f869}', },
-    Range { from: '\u{2f86a}', to: '\u{2f86b}', },
-    Range { from: '\u{2f86c}', to: '\u{2f890}', },
-    Range { from: '\u{2f891}', to: '\u{2f892}', },
-    Range { from: '\u{2f893}', to: '\u{2f893}', },
-    Range { from: '\u{2f894}', to: '\u{2f895}', },
-    Range { from: '\u{2f896}', to: '\u{2f92b}', },
-    Range { from: '\u{2f92c}', to: '\u{2f92d}', },
-    Range { from: '\u{2f92e}', to: '\u{2f945}', },
-    Range { from: '\u{2f946}', to: '\u{2f947}', },
-    Range { from: '\u{2f948}', to: '\u{2f95c}', },
-    Range { from: '\u{2f95d}', to: '\u{2f95e}', },
-    Range { from: '\u{2f95f}', to: '\u{2f9fd}', },
-    Range { from: '\u{2f9fe}', to: '\u{2f9ff}', },
-    Range { from: '\u{2fa00}', to: '\u{2fa1d}', },
-    Range { from: '\u{2fa1e}', to: '\u{2ffff}', },
-    Range { from: '\u{30000}', to: '\u{3134a}', },
-    Range { from: '\u{3134b}', to: '\u{e00ff}', },
-    Range { from: '\u{e0100}', to: '\u{e01ef}', },
-    Range { from: '\u{e01f0}', to: '\u{10ffff}', },
-];
-
-static INDEX_TABLE: &[u16] = &[
-    32768,
-    32769,
-    32770,
-    32771,
-    32772,
-    5,
-    32799,
-    32800,
-    32801,
-    32802,
-    32803,
-    32804,
-    37,
-    32808,
-    41,
-    32812,
-    45,
-    32817,
-    50,
-    32858,
-    91,
-    32909,
-    142,
-    32913,
-    146,
-    32920,
-    153,
-    32996,
-    229,
-    33008,
-    241,
-    33023,
-    256,
-    33037,
-    33038,
-    33039,
-    33040,
-    33041,
-    33042,
-    275,
-    33058,
-    291,
-    33076,
-    33077,
-    310,
-    33141,
-    374,
-    33147,
-    380,
-    33162,
-    395,
-    33172,
-    405,
-    33179,
-    412,
-    33185,
-    418,
-    33192,
-    33193,
-    33194,
-    427,
-    33203,
-    33204,
-    33205,
-    438,
-    33208,
-    441,
-    33249,
-    33250,
-    33251,
-    484,
-    33296,
-    529,
-    33348,
-    581,
-    33382,
-    615,
-    33451,
-    684,
-    33587,
-    33588,
-    33589,
-    33590,
-    33591,
-    33592,
-    33593,
-    33594,
-    33595,
-    33596,
-    33597,
-    33598,
-    33599,
-    33600,
-    33601,
-    33602,
-    835,
-    33607,
-    33608,
-    33609,
-    33610,
-    33611,
-    33612,
-    33613,
-    33614,
-    33615,
-    33616,
-    33617,
-    33618,
-    33619,
-    33620,
-    33621,
-    33622,
-    855,
-    33625,
-    33626,
-    33627,
-    33628,
-    33629,
-    33630,
-    33631,
-    33632,
-    33633,
-    866,
-    33642,
-    33643,
-    33644,
-    33645,
-    33646,
-    33647,
-    33648,
-    33649,
-    33650,
-    883,
-    33653,
-    33654,
-    33655,
-    33656,
-    33657,
-    33658,
-    33659,
-    33660,
-    33661,
-    33662,
-    33663,
-    896,
-    33668,
-    33669,
-    33670,
-    33671,
-    33672,
-    33673,
-    33674,
-    33675,
-    33676,
-    33677,
-    33678,
-    33679,
-    33680,
-    913,
-    33688,
-    33689,
-    922,
-    33692,
-    33693,
-    33694,
-    33695,
-    33696,
-    33697,
-    33698,
-    33699,
-    932,
-    33706,
-    33707,
-    33708,
-    33709,
-    33710,
-    33711,
-    33712,
-    33713,
-    33714,
-    33715,
-    33716,
-    33717,
-    33718,
-    33719,
-    33720,
-    33721,
-    33722,
-    33723,
-    33724,
-    33725,
-    33726,
-    33727,
-    33728,
-    33729,
-    33730,
-    33731,
-    33732,
-    33733,
-    33734,
-    33735,
-    33736,
-    33737,
-    33738,
-    33739,
-    33740,
-    33741,
-    33742,
-    33743,
-    33744,
-    33745,
-    33746,
-    33747,
-    33748,
-    33749,
-    33750,
-    33751,
-    33752,
-    33753,
-    33754,
-    33755,
-    33756,
-    33757,
-    33758,
-    991,
-    33762,
-    33763,
-    33764,
-    33765,
-    33766,
-    33767,
-    33768,
-    33769,
-    33770,
-    33771,
-    33772,
-    33773,
-    33774,
-    1007,
-    33778,
-    33779,
-    33780,
-    33781,
-    33782,
-    33783,
-    33784,
-    33785,
-    33786,
-    33787,
-    33788,
-    33789,
-    33790,
-    33791,
-    33792,
-    33793,
-    33794,
-    33795,
-    33796,
-    33797,
-    33798,
-    33799,
-    33800,
-    33801,
-    33802,
-    33803,
-    33804,
-    33805,
-    33806,
-    33807,
-    33808,
-    33809,
-    33810,
-    33811,
-    33812,
-    33813,
-    33814,
-    33815,
-    33816,
-    33817,
-    33818,
-    33819,
-    33820,
-    33821,
-    33822,
-    33823,
-    33824,
-    33825,
-    33826,
-    33827,
-    33828,
-    33829,
-    33830,
-    33831,
-    33832,
-    33833,
-    33834,
-    33835,
-    33836,
-    33837,
-    1070,
-    33840,
-    33841,
-    33842,
-    33843,
-    33844,
-    33845,
-    33846,
-    33847,
-    33848,
-    33849,
-    33850,
-    33851,
-    33852,
-    33853,
-    33854,
-    33855,
-    33856,
-    33857,
-    33858,
-    33859,
-    33860,
-    33861,
-    33862,
-    33863,
-    33864,
-    33865,
-    33866,
-    1099,
-    33869,
-    33870,
-    33871,
-    33872,
-    33873,
-    33874,
-    1107,
-    33878,
-    33879,
-    33880,
-    33881,
-    33882,
-    33883,
-    33884,
-    33885,
-    33886,
-    33887,
-    33888,
-    33889,
-    33890,
-    1123,
-    33894,
-    33895,
-    33896,
-    1129,
-    33900,
-    33901,
-    33902,
-    33903,
-    33904,
-    1137,
-    33908,
-    33909,
-    33910,
-    33911,
-    1144,
-    33914,
-    33915,
-    33916,
-    33917,
-    33918,
-    33919,
-    33920,
-    33921,
-    33922,
-    33923,
-    33924,
-    33925,
-    33926,
-    33927,
-    33928,
-    33929,
-    33930,
-    33931,
-    33932,
-    33933,
-    33934,
-    1167,
-    33942,
-    33943,
-    33944,
-    33945,
-    33946,
-    33947,
-    33948,
-    33949,
-    33950,
-    33951,
-    33952,
-    33953,
-    33954,
-    33955,
-    33956,
-    33957,
-    33958,
-    33959,
-    33960,
-    33961,
-    33962,
-    33963,
-    33964,
-    33965,
-    33966,
-    33967,
-    33968,
-    33969,
-    33970,
-    33971,
-    33972,
-    33973,
-    33974,
-    33975,
-    33976,
-    33977,
-    33978,
-    1211,
-    33982,
-    33983,
-    33984,
-    33985,
-    33986,
-    33987,
-    33988,
-    33989,
-    33990,
-    33991,
-    33992,
-    1225,
-    33996,
-    33997,
-    33998,
-    33999,
-    34000,
-    34001,
-    34002,
-    34003,
-    34004,
-    34005,
-    34006,
-    34007,
-    34008,
-    34009,
-    34010,
-    34011,
-    1244,
-    34018,
-    34019,
-    34020,
-    34021,
-    34022,
-    34023,
-    34024,
-    34025,
-    34026,
-    34027,
-    34028,
-    34029,
-    34030,
-    34031,
-    34032,
-    34033,
-    34034,
-    34035,
-    34036,
-    34037,
-    34038,
-    34039,
-    34040,
-    34041,
-    34042,
-    34043,
-    34044,
-    34045,
-    34046,
-    34047,
-    34048,
-    34049,
-    34050,
-    34051,
-    34052,
-    34053,
-    34054,
-    34055,
-    34056,
-    34057,
-    34058,
-    34059,
-    34060,
-    34061,
-    34062,
-    34063,
-    34064,
-    34065,
-    34066,
-    34067,
-    34068,
-    34069,
-    34070,
-    34071,
-    34072,
-    34073,
-    34074,
-    34075,
-    34076,
-    34077,
-    34078,
-    34079,
-    34080,
-    34081,
-    34082,
-    34083,
-    34084,
-    34085,
-    34086,
-    34087,
-    34088,
-    34089,
-    34090,
-    34091,
-    34092,
-    34093,
-    34094,
-    34095,
-    34096,
-    34097,
-    34098,
-    34099,
-    34100,
-    34101,
-    34102,
-    1335,
-    34107,
-    1340,
-    34111,
-    1344,
-    34155,
-    1388,
-    34159,
-    34160,
-    34161,
-    34162,
-    34163,
-    1396,
-    34227,
-    34228,
-    34229,
-    1462,
-    34267,
-    34268,
-    34269,
-    1502,
-    34419,
-    1652,
-    34422,
-    1655,
-    34520,
-    1753,
-    34529,
-    34530,
-    1763,
-    34537,
-    34538,
-    1771,
-    34547,
-    1780,
-    34556,
-    34557,
-    1790,
-    34564,
-    34565,
-    1798,
-    34574,
-    1807,
-    34597,
-    1830,
-    34646,
-    1879,
-    34677,
-    34678,
-    34679,
-    34680,
-    1913,
-    34689,
-    34690,
-    34691,
-    1924,
-    34700,
-    1933,
-    34715,
-    34716,
-    34717,
-    34718,
-    1951,
-    34721,
-    34722,
-    34723,
-    34724,
-    34725,
-    34726,
-    34727,
-    34728,
-    1961,
-    34734,
-    1967,
-    34738,
-    1971,
-    34742,
-    34743,
-    34744,
-    1977,
-    34747,
-    34748,
-    34749,
-    1982,
-    34752,
-    1985,
-    34794,
-    34795,
-    34796,
-    34797,
-    34798,
-    34799,
-    34800,
-    2033,
-    34812,
-    34813,
-    34814,
-    34815,
-    2048,
-    34819,
-    2052,
-    34822,
-    34823,
-    2056,
-    34839,
-    2072,
-    34852,
-    2085,
-    34855,
-    34856,
-    2089,
-    34860,
-    2093,
-    34909,
-    34910,
-    34911,
-    34912,
-    34913,
-    34914,
-    34915,
-    2148,
-    34921,
-    34922,
-    34923,
-    34924,
-    34925,
-    2158,
-    34928,
-    34929,
-    34930,
-    34931,
-    2164,
-    34972,
-    2205,
-    35052,
-    35053,
-    35054,
-    2287,
-    35058,
-    35059,
-    35060,
-    35061,
-    35062,
-    35063,
-    35064,
-    2297,
-    35113,
-    2346,
-    35120,
-    2353,
-    35133,
-    35134,
-    35135,
-    2368,
-    35239,
-    2472,
-    35243,
-    2476,
-    35246,
-    35247,
-    2480,
-    35250,
-    35251,
-    35252,
-    35253,
-    35254,
-    2487,
-    35257,
-    35258,
-    35259,
-    35260,
-    35261,
-    35262,
-    35263,
-    35264,
-    35265,
-    35266,
-    35267,
-    35268,
-    35269,
-    35270,
-    35271,
-    35272,
-    35273,
-    35274,
-    35275,
-    35276,
-    35277,
-    35278,
-    35279,
-    35280,
-    35281,
-    35282,
-    35283,
-    35284,
-    2517,
-    35499,
-    2732,
-    35503,
-    2736,
-    35509,
-    35510,
-    35511,
-    35512,
-    35513,
-    2746,
-    35516,
-    35517,
-    35518,
-    35519,
-    35520,
-    35521,
-    2754,
-    35618,
-    2851,
-    35633,
-    35634,
-    35635,
-    2868,
-    35708,
-    2941,
-    36141,
-    36142,
-    36143,
-    36144,
-    36145,
-    36146,
-    36147,
-    36148,
-    3381,
-    36194,
-    3427,
-    36225,
-    36226,
-    36227,
-    3460,
-    36241,
-    3474,
-    36305,
-    3538,
-    36320,
-    3553,
-    36324,
-    3557,
-    36328,
-    3561,
-    36371,
-    3604,
-    36381,
-    36382,
-    36383,
-    3616,
-    36386,
-    36387,
-    36388,
-    36389,
-    36390,
-    36391,
-    36392,
-    36393,
-    36394,
-    36395,
-    36396,
-    36397,
-    36398,
-    36399,
-    36400,
-    36401,
-    36402,
-    36403,
-    36404,
-    36405,
-    36406,
-    36407,
-    36408,
-    36409,
-    36410,
-    36411,
-    36412,
-    36413,
-    36414,
-    36415,
-    36416,
-    36417,
-    36418,
-    36419,
-    36420,
-    36421,
-    36422,
-    36423,
-    36424,
-    36425,
-    36426,
-    3659,
-    36431,
-    36432,
-    36433,
-    36434,
-    3667,
-    36515,
-    36516,
-    36517,
-    36518,
-    36519,
-    36520,
-    36521,
-    36522,
-    36523,
-    36524,
-    3757,
-    36532,
-    3765,
-    36794,
-    4027,
-    36798,
-    4031,
-    36813,
-    4046,
-    36816,
-    4049,
-    36868,
-    4101,
-    36884,
-    4117,
-    36991,
-    4224,
-    36997,
-    36998,
-    4231,
-    37004,
-    4237,
-    37056,
-    37057,
-    37058,
-    37059,
-    37060,
-    37061,
-    37062,
-    37063,
-    37064,
-    37065,
-    37066,
-    37067,
-    37068,
-    37069,
-    37070,
-    37071,
-    37072,
-    37073,
-    37074,
-    37075,
-    37076,
-    37077,
-    37078,
-    37079,
-    37080,
-    37081,
-    37082,
-    37083,
-    37084,
-    37085,
-    37086,
-    37087,
-    37088,
-    37089,
-    37090,
-    37091,
-    37092,
-    37093,
-    37094,
-    37095,
-    37096,
-    37097,
-    37098,
-    37099,
-    37100,
-    37101,
-    37102,
-    37103,
-    37104,
-    37105,
-    37106,
-    4339,
-    37423,
-    37424,
-    37425,
-    37426,
-    37427,
-    4660,
-    37433,
-    4666,
-    37439,
-    37440,
-    37441,
-    37442,
-    37443,
-    37444,
-    37445,
-    37446,
-    37447,
-    37448,
-    37449,
-    37450,
-    4683,
-    37454,
-    4687,
-    37459,
-    4692,
-    37465,
-    37466,
-    37467,
-    4700,
-    37475,
-    4708,
-    37481,
-    4714,
-    37485,
-    4718,
-    37528,
-    4761,
-    37543,
-    37544,
-    4777,
-    37554,
-    37555,
-    4788,
-    37559,
-    4792,
-    37576,
-    4809,
-    37579,
-    37580,
-    4813,
-    37583,
-    4816,
-    37608,
-    4841,
-    37626,
-    37627,
-    37628,
-    37629,
-    37630,
-    37631,
-    37632,
-    37633,
-    37634,
-    37635,
-    37636,
-    37637,
-    37638,
-    37639,
-    37640,
-    37641,
-    37642,
-    37643,
-    37644,
-    37645,
-    37646,
-    37647,
-    37648,
-    37649,
-    37650,
-    37651,
-    37652,
-    37653,
-    37654,
-    37655,
-    37656,
-    37657,
-    37658,
-    37659,
-    37660,
-    37661,
-    37662,
-    37663,
-    37664,
-    37665,
-    4898,
-    37858,
-    5091,
-    37865,
-    5098,
-    37872,
-    5105,
-    37879,
-    5112,
-    37883,
-    5116,
-    37899,
-    37900,
-    37901,
-    37902,
-    37903,
-    37904,
-    37905,
-    37906,
-    37907,
-    37908,
-    37909,
-    37910,
-    37911,
-    37912,
-    37913,
-    37914,
-    37915,
-    37916,
-    37917,
-    37918,
-    37919,
-    37920,
-    37921,
-    37922,
-    37923,
-    37924,
-    37925,
-    37926,
-    37927,
-    37928,
-    37929,
-    37930,
-    37931,
-    37932,
-    37933,
-    37934,
-    37935,
-    37936,
-    37937,
-    37938,
-    37939,
-    37940,
-    37941,
-    37942,
-    37943,
-    5176,
-    37984,
-    37985,
-    37986,
-    37987,
-    5220,
-    38024,
-    38025,
-    38026,
-    38027,
-    38028,
-    38029,
-    38030,
-    38031,
-    38032,
-    38033,
-    38034,
-    38035,
-    38036,
-    38037,
-    38038,
-    38039,
-    38040,
-    5273,
-    38043,
-    38044,
-    38045,
-    38046,
-    38047,
-    38048,
-    38049,
-    38050,
-    38051,
-    38052,
-    38053,
-    38054,
-    38055,
-    38056,
-    38057,
-    38058,
-    38059,
-    38060,
-    38061,
-    38062,
-    38063,
-    38064,
-    38065,
-    38066,
-    38067,
-    38068,
-    38069,
-    38070,
-    38071,
-    38072,
-    38073,
-    38074,
-    38075,
-    38076,
-    38077,
-    38078,
-    38079,
-    38080,
-    38081,
-    38082,
-    38083,
-    38084,
-    38085,
-    38086,
-    38087,
-    38088,
-    38089,
-    38090,
-    38091,
-    38092,
-    38093,
-    38094,
-    38095,
-    38096,
-    38097,
-    38098,
-    38099,
-    38100,
-    38101,
-    38102,
-    38103,
-    38104,
-    5337,
-    38156,
-    38157,
-    38158,
-    38159,
-    38160,
-    38161,
-    38162,
-    38163,
-    38164,
-    38165,
-    38166,
-    38167,
-    38168,
-    38169,
-    38170,
-    38171,
-    38172,
-    38173,
-    38174,
-    38175,
-    38176,
-    38177,
-    38178,
-    38179,
-    38180,
-    38181,
-    38182,
-    38183,
-    38184,
-    38185,
-    38186,
-    38187,
-    38188,
-    38189,
-    38190,
-    38191,
-    38192,
-    38193,
-    38194,
-    38195,
-    38196,
-    38197,
-    38198,
-    38199,
-    38200,
-    38201,
-    38202,
-    38203,
-    38204,
-    38205,
-    5438,
-    38209,
-    38210,
-    38211,
-    38212,
-    38213,
-    38214,
-    38215,
-    38216,
-    38217,
-    38218,
-    38219,
-    38220,
-    38221,
-    38222,
-    38223,
-    38224,
-    38225,
-    38226,
-    38227,
-    38228,
-    38229,
-    38230,
-    38231,
-    38232,
-    38233,
-    38234,
-    38235,
-    38236,
-    38237,
-    38238,
-    38239,
-    38240,
-    38241,
-    38242,
-    38243,
-    38244,
-    38245,
-    38246,
-    38247,
-    38248,
-    38249,
-    38250,
-    38251,
-    38252,
-    38253,
-    38254,
-    38255,
-    38256,
-    38257,
-    38258,
-    38259,
-    38260,
-    38261,
-    38262,
-    38263,
-    38264,
-    38265,
-    38266,
-    38267,
-    38268,
-    38269,
-    38270,
-    38271,
-    38272,
-    38273,
-    38274,
-    38275,
-    38276,
-    38277,
-    38278,
-    5511,
-    38311,
-    38312,
-    38313,
-    38314,
-    38315,
-    38316,
-    38317,
-    38318,
-    38319,
-    38320,
-    38321,
-    38322,
-    38323,
-    38324,
-    38325,
-    38326,
-    38327,
-    38328,
-    38329,
-    38330,
-    38331,
-    38332,
-    38333,
-    38334,
-    38335,
-    38336,
-    38337,
-    38338,
-    38339,
-    38340,
-    38341,
-    38342,
-    38343,
-    38344,
-    38345,
-    38346,
-    38347,
-    38348,
-    38349,
-    38350,
-    38351,
-    38352,
-    38353,
-    38354,
-    38355,
-    38356,
-    38357,
-    38358,
-    38359,
-    38360,
-    5593,
-    38363,
-    38364,
-    38365,
-    38366,
-    38367,
-    38368,
-    38369,
-    38370,
-    38371,
-    38372,
-    38373,
-    38374,
-    38375,
-    38376,
-    38377,
-    38378,
-    38379,
-    38380,
-    38381,
-    38382,
-    38383,
-    38384,
-    38385,
-    38386,
-    38387,
-    38388,
-    38389,
-    38390,
-    38391,
-    38392,
-    38393,
-    38394,
-    38395,
-    38396,
-    38397,
-    38398,
-    38399,
-    38400,
-    38401,
-    38402,
-    38403,
-    38404,
-    38405,
-    38406,
-    38407,
-    38408,
-    38409,
-    38410,
-    38411,
-    38412,
-    38413,
-    38414,
-    38415,
-    38416,
-    38417,
-    38418,
-    38419,
-    38420,
-    5653,
-    38453,
-    38454,
-    38455,
-    38456,
-    38457,
-    38458,
-    38459,
-    38460,
-    38461,
-    38462,
-    38463,
-    38464,
-    38465,
-    38466,
-    38467,
-    38468,
-    38469,
-    38470,
-    38471,
-    38472,
-    38473,
-    38474,
-    38475,
-    38476,
-    38477,
-    38478,
-    38479,
-    38480,
-    38481,
-    38482,
-    38483,
-    38484,
-    38485,
-    38486,
-    38487,
-    38488,
-    38489,
-    38490,
-    38491,
-    38492,
-    38493,
-    38494,
-    5727,
-    38502,
-    38503,
-    38504,
-    5737,
-    38511,
-    38512,
-    38513,
-    38514,
-    38515,
-    38516,
-    38517,
-    38518,
-    38519,
-    38520,
-    5753,
-    38681,
-    38682,
-    38683,
-    5916,
-    38686,
-    5919,
-    38785,
-    6018,
-    38844,
-    6077,
-    39193,
-    6426,
-    39237,
-    6470,
-    39294,
-    6527,
-    39351,
-    6584,
-    39408,
-    6641,
-    39465,
-    6698,
-    39479,
-    39480,
-    6713,
-    39531,
-    39532,
-    39533,
-    39534,
-    39535,
-    39536,
-    39537,
-    39538,
-    39539,
-    39540,
-    39541,
-    39542,
-    39543,
-    39544,
-    39545,
-    39546,
-    39547,
-    39548,
-    39549,
-    39550,
-    39551,
-    39552,
-    39553,
-    39554,
-    39555,
-    39556,
-    39557,
-    39558,
-    39559,
-    39560,
-    39561,
-    39562,
-    6795,
-    39597,
-    39598,
-    39599,
-    39600,
-    39601,
-    39602,
-    39603,
-    39604,
-    39605,
-    39606,
-    6839,
-    39644,
-    6877,
-    39666,
-    39667,
-    39668,
-    6901,
-    39683,
-    6916,
-    39698,
-    6931,
-    39752,
-    6985,
-    39780,
-    39781,
-    39782,
-    39783,
-    39784,
-    39785,
-    39786,
-    39787,
-    39788,
-    39789,
-    39790,
-    39791,
-    39792,
-    39793,
-    39794,
-    7027,
-    39805,
-    7038,
-    39870,
-    7103,
-    39874,
-    39875,
-    39876,
-    39877,
-    39878,
-    7111,
-    39882,
-    7115,
-    39927,
-    7160,
-    39937,
-    7170,
-    39940,
-    39941,
-    39942,
-    39943,
-    39944,
-    39945,
-    39946,
-    39947,
-    39948,
-    39949,
-    39950,
-    39951,
-    39952,
-    39953,
-    39954,
-    39955,
-    39956,
-    39957,
-    39958,
-    39959,
-    39960,
-    39961,
-    39962,
-    39963,
-    39964,
-    39965,
-    39966,
-    39967,
-    39968,
-    39969,
-    39970,
-    39971,
-    39972,
-    39973,
-    39974,
-    39975,
-    39976,
-    39977,
-    39978,
-    39979,
-    39980,
-    39981,
-    39982,
-    39983,
-    39984,
-    39985,
-    39986,
-    39987,
-    39988,
-    39989,
-    39990,
-    39991,
-    39992,
-    7225,
-    40003,
-    40004,
-    40005,
-    40006,
-    40007,
-    40008,
-    40009,
-    40010,
-    40011,
-    40012,
-    40013,
-    7246,
-    40063,
-    7296,
-    40081,
-    7314,
-    40117,
-    7350,
-    40155,
-    40156,
-    40157,
-    7390,
-    40308,
-    7541,
-    40333,
-    7566,
-    40355,
-    7588,
-    40515,
-    7748,
-    40546,
-    40547,
-    40548,
-    40549,
-    40550,
+static TABLE: &[(char, u16)] = &[
+    ('\u{0}', 32768),
+    ('\u{2d}', 32769),
+    ('\u{2f}', 32770),
+    ('\u{30}', 32771),
+    ('\u{3a}', 32772),
+    ('\u{41}', 5),
+    ('\u{5b}', 32799),
+    ('\u{61}', 32800),
+    ('\u{7b}', 32801),
+    ('\u{80}', 32802),
+    ('\u{a0}', 32803),
+    ('\u{a1}', 32804),
+    ('\u{a8}', 37),
+    ('\u{ab}', 32808),
+    ('\u{ad}', 41),
+    ('\u{b0}', 32812),
+    ('\u{b2}', 45),
+    ('\u{e0}', 32859),
+    ('\u{f7}', 32860),
+    ('\u{f8}', 32861),
+    ('\u{100}', 94),
+    ('\u{132}', 32912),
+    ('\u{134}', 145),
+    ('\u{137}', 32916),
+    ('\u{139}', 149),
+    ('\u{13f}', 32923),
+    ('\u{141}', 156),
+    ('\u{18c}', 32999),
+    ('\u{18e}', 232),
+    ('\u{199}', 33011),
+    ('\u{19c}', 244),
+    ('\u{1aa}', 33026),
+    ('\u{1ac}', 259),
+    ('\u{1b9}', 33040),
+    ('\u{1bc}', 33041),
+    ('\u{1bd}', 33042),
+    ('\u{1c4}', 33043),
+    ('\u{1c7}', 33044),
+    ('\u{1ca}', 33045),
+    ('\u{1cd}', 278),
+    ('\u{1dc}', 33061),
+    ('\u{1de}', 294),
+    ('\u{1ef}', 33079),
+    ('\u{1f1}', 33080),
+    ('\u{1f4}', 313),
+    ('\u{233}', 33144),
+    ('\u{23a}', 377),
+    ('\u{23f}', 33150),
+    ('\u{241}', 383),
+    ('\u{24f}', 33165),
+    ('\u{2b0}', 398),
+    ('\u{2b9}', 33175),
+    ('\u{2c2}', 33176),
+    ('\u{2c6}', 33177),
+    ('\u{2d2}', 33178),
+    ('\u{2d8}', 411),
+    ('\u{2de}', 33185),
+    ('\u{2e0}', 418),
+    ('\u{2e5}', 33191),
+    ('\u{2ec}', 424),
+    ('\u{2ef}', 33195),
+    ('\u{300}', 33196),
+    ('\u{340}', 429),
+    ('\u{346}', 33203),
+    ('\u{34f}', 33204),
+    ('\u{350}', 33205),
+    ('\u{370}', 438),
+    ('\u{378}', 33214),
+    ('\u{37a}', 33215),
+    ('\u{37b}', 33216),
+    ('\u{37e}', 449),
+    ('\u{380}', 33219),
+    ('\u{384}', 452),
+    ('\u{3ac}', 33260),
+    ('\u{3c2}', 33261),
+    ('\u{3c3}', 33262),
+    ('\u{3cf}', 495),
+    ('\u{3fb}', 33307),
+    ('\u{3fd}', 540),
+    ('\u{430}', 33359),
+    ('\u{460}', 592),
+    ('\u{483}', 33395),
+    ('\u{488}', 33396),
+    ('\u{48a}', 629),
+    ('\u{4ce}', 33465),
+    ('\u{4d0}', 698),
+    ('\u{557}', 33601),
+    ('\u{559}', 33602),
+    ('\u{55a}', 33603),
+    ('\u{560}', 33604),
+    ('\u{587}', 837),
+    ('\u{589}', 33607),
+    ('\u{58b}', 33608),
+    ('\u{58d}', 33609),
+    ('\u{590}', 33610),
+    ('\u{591}', 33611),
+    ('\u{5be}', 844),
+    ('\u{5c1}', 33615),
+    ('\u{5c3}', 33616),
+    ('\u{5c4}', 33617),
+    ('\u{5c6}', 850),
+    ('\u{5c8}', 33620),
+    ('\u{5d0}', 33621),
+    ('\u{5eb}', 33622),
+    ('\u{5ef}', 33623),
+    ('\u{5f5}', 33624),
+    ('\u{606}', 33625),
+    ('\u{610}', 33626),
+    ('\u{61b}', 33627),
+    ('\u{61c}', 33628),
+    ('\u{61e}', 33629),
+    ('\u{620}', 33630),
+    ('\u{640}', 33631),
+    ('\u{641}', 33632),
+    ('\u{66a}', 33633),
+    ('\u{66e}', 33634),
+    ('\u{675}', 867),
+    ('\u{679}', 33639),
+    ('\u{6d4}', 33640),
+    ('\u{6d5}', 33641),
+    ('\u{6dd}', 874),
+    ('\u{6df}', 33644),
+    ('\u{6e9}', 33645),
+    ('\u{6ea}', 33646),
+    ('\u{700}', 33647),
+    ('\u{70e}', 33648),
+    ('\u{710}', 33649),
+    ('\u{74b}', 33650),
+    ('\u{74d}', 33651),
+    ('\u{7b2}', 33652),
+    ('\u{7c0}', 33653),
+    ('\u{7f6}', 33654),
+    ('\u{7fb}', 33655),
+    ('\u{7fd}', 33656),
+    ('\u{7fe}', 33657),
+    ('\u{800}', 33658),
+    ('\u{82e}', 33659),
+    ('\u{830}', 33660),
+    ('\u{83f}', 33661),
+    ('\u{840}', 33662),
+    ('\u{85c}', 33663),
+    ('\u{85e}', 896),
+    ('\u{860}', 33666),
+    ('\u{86b}', 33667),
+    ('\u{8a0}', 33668),
+    ('\u{8b5}', 33669),
+    ('\u{8b6}', 33670),
+    ('\u{8c8}', 33671),
+    ('\u{8d3}', 33672),
+    ('\u{8e2}', 33673),
+    ('\u{8e3}', 33674),
+    ('\u{958}', 907),
+    ('\u{960}', 33683),
+    ('\u{964}', 33684),
+    ('\u{966}', 33685),
+    ('\u{970}', 33686),
+    ('\u{971}', 33687),
+    ('\u{984}', 33688),
+    ('\u{985}', 33689),
+    ('\u{98d}', 33690),
+    ('\u{98f}', 33691),
+    ('\u{991}', 33692),
+    ('\u{993}', 33693),
+    ('\u{9a9}', 33694),
+    ('\u{9aa}', 33695),
+    ('\u{9b1}', 928),
+    ('\u{9b3}', 33698),
+    ('\u{9b6}', 33699),
+    ('\u{9ba}', 33700),
+    ('\u{9bc}', 33701),
+    ('\u{9c5}', 33702),
+    ('\u{9c7}', 33703),
+    ('\u{9c9}', 33704),
+    ('\u{9cb}', 33705),
+    ('\u{9cf}', 33706),
+    ('\u{9d7}', 33707),
+    ('\u{9d8}', 33708),
+    ('\u{9dc}', 941),
+    ('\u{9e0}', 33713),
+    ('\u{9e4}', 33714),
+    ('\u{9e6}', 33715),
+    ('\u{9f2}', 33716),
+    ('\u{9fc}', 949),
+    ('\u{9ff}', 33720),
+    ('\u{a01}', 33721),
+    ('\u{a04}', 33722),
+    ('\u{a05}', 33723),
+    ('\u{a0b}', 33724),
+    ('\u{a0f}', 33725),
+    ('\u{a11}', 33726),
+    ('\u{a13}', 33727),
+    ('\u{a29}', 33728),
+    ('\u{a2a}', 33729),
+    ('\u{a31}', 962),
+    ('\u{a38}', 33737),
+    ('\u{a3a}', 33738),
+    ('\u{a3c}', 971),
+    ('\u{a3e}', 33741),
+    ('\u{a43}', 33742),
+    ('\u{a47}', 33743),
+    ('\u{a49}', 33744),
+    ('\u{a4b}', 33745),
+    ('\u{a4e}', 33746),
+    ('\u{a51}', 33747),
+    ('\u{a52}', 33748),
+    ('\u{a59}', 981),
+    ('\u{a5f}', 33755),
+    ('\u{a66}', 33756),
+    ('\u{a76}', 33757),
+    ('\u{a77}', 33758),
+    ('\u{a81}', 33759),
+    ('\u{a84}', 33760),
+    ('\u{a85}', 33761),
+    ('\u{a8e}', 33762),
+    ('\u{a8f}', 33763),
+    ('\u{a92}', 33764),
+    ('\u{a93}', 33765),
+    ('\u{aa9}', 33766),
+    ('\u{aaa}', 33767),
+    ('\u{ab1}', 33768),
+    ('\u{ab2}', 33769),
+    ('\u{ab4}', 33770),
+    ('\u{ab5}', 33771),
+    ('\u{aba}', 33772),
+    ('\u{abc}', 33773),
+    ('\u{ac6}', 33774),
+    ('\u{ac7}', 33775),
+    ('\u{aca}', 33776),
+    ('\u{acb}', 33777),
+    ('\u{ace}', 33778),
+    ('\u{ad0}', 33779),
+    ('\u{ad1}', 33780),
+    ('\u{ae0}', 33781),
+    ('\u{ae4}', 33782),
+    ('\u{ae6}', 33783),
+    ('\u{af0}', 33784),
+    ('\u{af2}', 33785),
+    ('\u{af9}', 33786),
+    ('\u{b00}', 33787),
+    ('\u{b01}', 33788),
+    ('\u{b04}', 33789),
+    ('\u{b05}', 33790),
+    ('\u{b0d}', 33791),
+    ('\u{b0f}', 33792),
+    ('\u{b11}', 33793),
+    ('\u{b13}', 33794),
+    ('\u{b29}', 33795),
+    ('\u{b2a}', 33796),
+    ('\u{b31}', 33797),
+    ('\u{b32}', 33798),
+    ('\u{b34}', 33799),
+    ('\u{b35}', 33800),
+    ('\u{b3a}', 33801),
+    ('\u{b3c}', 33802),
+    ('\u{b45}', 33803),
+    ('\u{b47}', 33804),
+    ('\u{b49}', 33805),
+    ('\u{b4b}', 33806),
+    ('\u{b4e}', 33807),
+    ('\u{b55}', 33808),
+    ('\u{b58}', 33809),
+    ('\u{b5c}', 1042),
+    ('\u{b5f}', 33813),
+    ('\u{b64}', 33814),
+    ('\u{b66}', 33815),
+    ('\u{b70}', 1048),
+    ('\u{b72}', 33818),
+    ('\u{b78}', 33819),
+    ('\u{b82}', 33820),
+    ('\u{b84}', 33821),
+    ('\u{b85}', 33822),
+    ('\u{b8b}', 33823),
+    ('\u{b8e}', 33824),
+    ('\u{b91}', 33825),
+    ('\u{b92}', 33826),
+    ('\u{b96}', 33827),
+    ('\u{b99}', 33828),
+    ('\u{b9b}', 1061),
+    ('\u{b9e}', 33832),
+    ('\u{ba0}', 33833),
+    ('\u{ba3}', 33834),
+    ('\u{ba5}', 33835),
+    ('\u{ba8}', 33836),
+    ('\u{bab}', 33837),
+    ('\u{bae}', 33838),
+    ('\u{bba}', 33839),
+    ('\u{bbe}', 33840),
+    ('\u{bc3}', 33841),
+    ('\u{bc6}', 33842),
+    ('\u{bc9}', 33843),
+    ('\u{bca}', 33844),
+    ('\u{bce}', 33845),
+    ('\u{bd0}', 33846),
+    ('\u{bd1}', 33847),
+    ('\u{bd7}', 33848),
+    ('\u{bd8}', 33849),
+    ('\u{be6}', 33850),
+    ('\u{bf0}', 33851),
+    ('\u{bfb}', 33852),
+    ('\u{c00}', 33853),
+    ('\u{c0d}', 33854),
+    ('\u{c0e}', 33855),
+    ('\u{c11}', 33856),
+    ('\u{c12}', 33857),
+    ('\u{c29}', 33858),
+    ('\u{c2a}', 33859),
+    ('\u{c3a}', 33860),
+    ('\u{c3d}', 33861),
+    ('\u{c45}', 33862),
+    ('\u{c46}', 33863),
+    ('\u{c49}', 33864),
+    ('\u{c4a}', 33865),
+    ('\u{c4e}', 33866),
+    ('\u{c55}', 33867),
+    ('\u{c57}', 33868),
+    ('\u{c58}', 33869),
+    ('\u{c5b}', 33870),
+    ('\u{c60}', 33871),
+    ('\u{c64}', 33872),
+    ('\u{c66}', 33873),
+    ('\u{c70}', 33874),
+    ('\u{c77}', 33875),
+    ('\u{c80}', 33876),
+    ('\u{c84}', 33877),
+    ('\u{c85}', 33878),
+    ('\u{c8d}', 33879),
+    ('\u{c8e}', 33880),
+    ('\u{c91}', 33881),
+    ('\u{c92}', 33882),
+    ('\u{ca9}', 33883),
+    ('\u{caa}', 33884),
+    ('\u{cb4}', 33885),
+    ('\u{cb5}', 33886),
+    ('\u{cba}', 33887),
+    ('\u{cbc}', 33888),
+    ('\u{cc5}', 33889),
+    ('\u{cc6}', 33890),
+    ('\u{cc9}', 33891),
+    ('\u{cca}', 33892),
+    ('\u{cce}', 33893),
+    ('\u{cd5}', 33894),
+    ('\u{cd7}', 33895),
+    ('\u{cde}', 1128),
+    ('\u{ce0}', 33898),
+    ('\u{ce4}', 33899),
+    ('\u{ce6}', 33900),
+    ('\u{cf0}', 33901),
+    ('\u{cf1}', 33902),
+    ('\u{cf3}', 33903),
+    ('\u{d00}', 33904),
+    ('\u{d0d}', 33905),
+    ('\u{d0e}', 33906),
+    ('\u{d11}', 33907),
+    ('\u{d12}', 33908),
+    ('\u{d45}', 33909),
+    ('\u{d46}', 33910),
+    ('\u{d49}', 33911),
+    ('\u{d4a}', 33912),
+    ('\u{d4f}', 33913),
+    ('\u{d50}', 33914),
+    ('\u{d54}', 33915),
+    ('\u{d58}', 33916),
+    ('\u{d5f}', 33917),
+    ('\u{d64}', 33918),
+    ('\u{d66}', 33919),
+    ('\u{d70}', 33920),
+    ('\u{d7a}', 33921),
+    ('\u{d80}', 33922),
+    ('\u{d81}', 33923),
+    ('\u{d84}', 33924),
+    ('\u{d85}', 33925),
+    ('\u{d97}', 33926),
+    ('\u{d9a}', 33927),
+    ('\u{db2}', 33928),
+    ('\u{db3}', 33929),
+    ('\u{dbc}', 1162),
+    ('\u{dbe}', 33932),
+    ('\u{dc0}', 33933),
+    ('\u{dc7}', 33934),
+    ('\u{dca}', 33935),
+    ('\u{dcb}', 33936),
+    ('\u{dcf}', 33937),
+    ('\u{dd5}', 1170),
+    ('\u{dd8}', 33941),
+    ('\u{de0}', 33942),
+    ('\u{de6}', 33943),
+    ('\u{df0}', 33944),
+    ('\u{df2}', 33945),
+    ('\u{df4}', 33946),
+    ('\u{df5}', 33947),
+    ('\u{e01}', 33948),
+    ('\u{e33}', 33949),
+    ('\u{e34}', 33950),
+    ('\u{e3b}', 33951),
+    ('\u{e3f}', 33952),
+    ('\u{e40}', 33953),
+    ('\u{e4f}', 33954),
+    ('\u{e50}', 33955),
+    ('\u{e5a}', 33956),
+    ('\u{e5c}', 33957),
+    ('\u{e81}', 33958),
+    ('\u{e83}', 1191),
+    ('\u{e86}', 33962),
+    ('\u{e8b}', 33963),
+    ('\u{e8c}', 33964),
+    ('\u{ea4}', 1197),
+    ('\u{ea7}', 33968),
+    ('\u{eb3}', 33969),
+    ('\u{eb4}', 33970),
+    ('\u{ebe}', 33971),
+    ('\u{ec0}', 33972),
+    ('\u{ec5}', 1205),
+    ('\u{ec8}', 33976),
+    ('\u{ece}', 33977),
+    ('\u{ed0}', 33978),
+    ('\u{eda}', 33979),
+    ('\u{edc}', 1212),
+    ('\u{ede}', 33982),
+    ('\u{ee0}', 33983),
+    ('\u{f00}', 33984),
+    ('\u{f01}', 33985),
+    ('\u{f0b}', 1218),
+    ('\u{f0d}', 33988),
+    ('\u{f18}', 33989),
+    ('\u{f1a}', 33990),
+    ('\u{f20}', 33991),
+    ('\u{f2a}', 33992),
+    ('\u{f35}', 1225),
+    ('\u{f3a}', 33998),
+    ('\u{f3e}', 33999),
+    ('\u{f43}', 34000),
+    ('\u{f44}', 34001),
+    ('\u{f48}', 34002),
+    ('\u{f49}', 34003),
+    ('\u{f4d}', 34004),
+    ('\u{f4e}', 34005),
+    ('\u{f52}', 34006),
+    ('\u{f53}', 34007),
+    ('\u{f57}', 34008),
+    ('\u{f58}', 34009),
+    ('\u{f5c}', 34010),
+    ('\u{f5d}', 34011),
+    ('\u{f69}', 34012),
+    ('\u{f6a}', 34013),
+    ('\u{f6d}', 34014),
+    ('\u{f71}', 34015),
+    ('\u{f73}', 1248),
+    ('\u{f7a}', 34023),
+    ('\u{f81}', 34024),
+    ('\u{f82}', 34025),
+    ('\u{f85}', 34026),
+    ('\u{f86}', 34027),
+    ('\u{f93}', 34028),
+    ('\u{f94}', 34029),
+    ('\u{f98}', 34030),
+    ('\u{f99}', 34031),
+    ('\u{f9d}', 34032),
+    ('\u{f9e}', 34033),
+    ('\u{fa2}', 34034),
+    ('\u{fa3}', 34035),
+    ('\u{fa7}', 34036),
+    ('\u{fa8}', 34037),
+    ('\u{fac}', 34038),
+    ('\u{fad}', 34039),
+    ('\u{fb9}', 34040),
+    ('\u{fba}', 34041),
+    ('\u{fbd}', 34042),
+    ('\u{fbe}', 34043),
+    ('\u{fc6}', 34044),
+    ('\u{fc7}', 34045),
+    ('\u{fcd}', 34046),
+    ('\u{fce}', 34047),
+    ('\u{fdb}', 34048),
+    ('\u{1000}', 34049),
+    ('\u{104a}', 34050),
+    ('\u{1050}', 34051),
+    ('\u{109e}', 34052),
+    ('\u{10a0}', 34053),
+    ('\u{10c7}', 34054),
+    ('\u{10c8}', 34055),
+    ('\u{10cd}', 34056),
+    ('\u{10ce}', 34057),
+    ('\u{10d0}', 34058),
+    ('\u{10fb}', 1291),
+    ('\u{10fd}', 34061),
+    ('\u{1100}', 34062),
+    ('\u{115f}', 34063),
+    ('\u{1161}', 34064),
+    ('\u{1200}', 34065),
+    ('\u{1249}', 34066),
+    ('\u{124a}', 34067),
+    ('\u{124e}', 34068),
+    ('\u{1250}', 34069),
+    ('\u{1257}', 1302),
+    ('\u{125a}', 34073),
+    ('\u{125e}', 34074),
+    ('\u{1260}', 34075),
+    ('\u{1289}', 34076),
+    ('\u{128a}', 34077),
+    ('\u{128e}', 34078),
+    ('\u{1290}', 34079),
+    ('\u{12b1}', 34080),
+    ('\u{12b2}', 34081),
+    ('\u{12b6}', 34082),
+    ('\u{12b8}', 34083),
+    ('\u{12bf}', 1316),
+    ('\u{12c2}', 34087),
+    ('\u{12c6}', 34088),
+    ('\u{12c8}', 34089),
+    ('\u{12d7}', 34090),
+    ('\u{12d8}', 34091),
+    ('\u{1311}', 34092),
+    ('\u{1312}', 34093),
+    ('\u{1316}', 34094),
+    ('\u{1318}', 34095),
+    ('\u{135b}', 34096),
+    ('\u{135d}', 34097),
+    ('\u{1360}', 34098),
+    ('\u{137d}', 34099),
+    ('\u{1380}', 34100),
+    ('\u{1390}', 34101),
+    ('\u{139a}', 34102),
+    ('\u{13a0}', 34103),
+    ('\u{13f6}', 34104),
+    ('\u{13f8}', 1337),
+    ('\u{13fe}', 34111),
+    ('\u{1400}', 34112),
+    ('\u{1401}', 34113),
+    ('\u{166d}', 34114),
+    ('\u{166f}', 34115),
+    ('\u{1680}', 34116),
+    ('\u{1681}', 34117),
+    ('\u{169b}', 34118),
+    ('\u{169d}', 34119),
+    ('\u{16a0}', 34120),
+    ('\u{16eb}', 34121),
+    ('\u{16f1}', 34122),
+    ('\u{16f9}', 34123),
+    ('\u{1700}', 34124),
+    ('\u{170d}', 34125),
+    ('\u{170e}', 34126),
+    ('\u{1715}', 34127),
+    ('\u{1720}', 34128),
+    ('\u{1735}', 34129),
+    ('\u{1737}', 34130),
+    ('\u{1740}', 34131),
+    ('\u{1754}', 34132),
+    ('\u{1760}', 34133),
+    ('\u{176d}', 34134),
+    ('\u{176e}', 34135),
+    ('\u{1771}', 34136),
+    ('\u{1772}', 34137),
+    ('\u{1774}', 34138),
+    ('\u{1780}', 34139),
+    ('\u{17b4}', 34140),
+    ('\u{17b6}', 34141),
+    ('\u{17d4}', 34142),
+    ('\u{17d7}', 34143),
+    ('\u{17d8}', 34144),
+    ('\u{17dc}', 34145),
+    ('\u{17de}', 34146),
+    ('\u{17e0}', 34147),
+    ('\u{17ea}', 34148),
+    ('\u{17f0}', 34149),
+    ('\u{17fa}', 34150),
+    ('\u{1800}', 34151),
+    ('\u{1806}', 34152),
+    ('\u{1807}', 34153),
+    ('\u{180b}', 34154),
+    ('\u{180e}', 34155),
+    ('\u{1810}', 34156),
+    ('\u{181a}', 34157),
+    ('\u{1820}', 34158),
+    ('\u{1879}', 34159),
+    ('\u{1880}', 34160),
+    ('\u{18ab}', 34161),
+    ('\u{18b0}', 34162),
+    ('\u{18f6}', 34163),
+    ('\u{1900}', 34164),
+    ('\u{191f}', 34165),
+    ('\u{1920}', 34166),
+    ('\u{192c}', 34167),
+    ('\u{1930}', 34168),
+    ('\u{193c}', 34169),
+    ('\u{1940}', 34170),
+    ('\u{1941}', 34171),
+    ('\u{1944}', 34172),
+    ('\u{1946}', 34173),
+    ('\u{196e}', 34174),
+    ('\u{1970}', 34175),
+    ('\u{1975}', 34176),
+    ('\u{1980}', 34177),
+    ('\u{19ac}', 34178),
+    ('\u{19b0}', 34179),
+    ('\u{19ca}', 34180),
+    ('\u{19d0}', 34181),
+    ('\u{19da}', 34182),
+    ('\u{19db}', 34183),
+    ('\u{19de}', 34184),
+    ('\u{1a00}', 34185),
+    ('\u{1a1c}', 34186),
+    ('\u{1a1e}', 34187),
+    ('\u{1a20}', 34188),
+    ('\u{1a5f}', 34189),
+    ('\u{1a60}', 34190),
+    ('\u{1a7d}', 34191),
+    ('\u{1a7f}', 34192),
+    ('\u{1a8a}', 34193),
+    ('\u{1a90}', 34194),
+    ('\u{1a9a}', 34195),
+    ('\u{1aa0}', 34196),
+    ('\u{1aa7}', 34197),
+    ('\u{1aa8}', 34198),
+    ('\u{1aae}', 34199),
+    ('\u{1ab0}', 34200),
+    ('\u{1abe}', 34201),
+    ('\u{1abf}', 34202),
+    ('\u{1ac1}', 34203),
+    ('\u{1b00}', 34204),
+    ('\u{1b4c}', 34205),
+    ('\u{1b50}', 34206),
+    ('\u{1b5a}', 34207),
+    ('\u{1b6b}', 34208),
+    ('\u{1b74}', 34209),
+    ('\u{1b7d}', 34210),
+    ('\u{1b80}', 34211),
+    ('\u{1bf4}', 34212),
+    ('\u{1bfc}', 34213),
+    ('\u{1c00}', 34214),
+    ('\u{1c38}', 34215),
+    ('\u{1c3b}', 34216),
+    ('\u{1c40}', 34217),
+    ('\u{1c4a}', 34218),
+    ('\u{1c4d}', 34219),
+    ('\u{1c7e}', 34220),
+    ('\u{1c80}', 1453),
+    ('\u{1c84}', 34225),
+    ('\u{1c86}', 1458),
+    ('\u{1c89}', 34229),
+    ('\u{1c90}', 1462),
+    ('\u{1cbb}', 34273),
+    ('\u{1cbd}', 1506),
+    ('\u{1cc0}', 34277),
+    ('\u{1cc8}', 34278),
+    ('\u{1cd0}', 34279),
+    ('\u{1cd3}', 34280),
+    ('\u{1cd4}', 34281),
+    ('\u{1cfb}', 34282),
+    ('\u{1d00}', 34283),
+    ('\u{1d2c}', 1516),
+    ('\u{1d6b}', 34347),
+    ('\u{1d78}', 34348),
+    ('\u{1d79}', 34349),
+    ('\u{1d9b}', 1582),
+    ('\u{1dc0}', 34387),
+    ('\u{1dfa}', 34388),
+    ('\u{1dfb}', 34389),
+    ('\u{1e00}', 1622),
+    ('\u{1e95}', 34539),
+    ('\u{1e9a}', 1772),
+    ('\u{1e9c}', 34542),
+    ('\u{1e9e}', 1775),
+    ('\u{1eff}', 34640),
+    ('\u{1f08}', 1873),
+    ('\u{1f10}', 34649),
+    ('\u{1f16}', 34650),
+    ('\u{1f18}', 1883),
+    ('\u{1f1e}', 34657),
+    ('\u{1f20}', 34658),
+    ('\u{1f28}', 1891),
+    ('\u{1f30}', 34667),
+    ('\u{1f38}', 1900),
+    ('\u{1f40}', 34676),
+    ('\u{1f46}', 34677),
+    ('\u{1f48}', 1910),
+    ('\u{1f4e}', 34684),
+    ('\u{1f50}', 34685),
+    ('\u{1f58}', 1918),
+    ('\u{1f60}', 34694),
+    ('\u{1f68}', 1927),
+    ('\u{1f7e}', 34717),
+    ('\u{1f80}', 1950),
+    ('\u{1fb0}', 34766),
+    ('\u{1fb2}', 1999),
+    ('\u{1fd0}', 34797),
+    ('\u{1fd3}', 34798),
+    ('\u{1fd4}', 34799),
+    ('\u{1fd6}', 34800),
+    ('\u{1fd8}', 2033),
+    ('\u{1fe0}', 34809),
+    ('\u{1fe3}', 34810),
+    ('\u{1fe4}', 34811),
+    ('\u{1fe8}', 2044),
+    ('\u{1ff0}', 34820),
+    ('\u{1ff2}', 2053),
+    ('\u{2000}', 34835),
+    ('\u{200b}', 34836),
+    ('\u{200c}', 34837),
+    ('\u{200e}', 34838),
+    ('\u{2010}', 2071),
+    ('\u{2012}', 34841),
+    ('\u{2017}', 34842),
+    ('\u{2018}', 34843),
+    ('\u{2024}', 34844),
+    ('\u{2027}', 34845),
+    ('\u{2028}', 34846),
+    ('\u{202f}', 34847),
+    ('\u{2030}', 34848),
+    ('\u{2033}', 2081),
+    ('\u{2038}', 34854),
+    ('\u{203c}', 2087),
+    ('\u{203f}', 34858),
+    ('\u{2047}', 2091),
+    ('\u{204a}', 34862),
+    ('\u{2057}', 34863),
+    ('\u{2058}', 34864),
+    ('\u{205f}', 2097),
+    ('\u{2061}', 34867),
+    ('\u{2064}', 34868),
+    ('\u{2065}', 34869),
+    ('\u{2070}', 2102),
+    ('\u{2072}', 34872),
+    ('\u{2074}', 2105),
+    ('\u{209d}', 34914),
+    ('\u{20a0}', 34915),
+    ('\u{20a8}', 34916),
+    ('\u{20a9}', 34917),
+    ('\u{20c0}', 34918),
+    ('\u{20d0}', 34919),
+    ('\u{20f1}', 34920),
+    ('\u{2100}', 2153),
+    ('\u{210b}', 34932),
+    ('\u{210f}', 34933),
+    ('\u{2110}', 34934),
+    ('\u{2112}', 34935),
+    ('\u{2114}', 2168),
+    ('\u{2117}', 34939),
+    ('\u{2119}', 2172),
+    ('\u{211b}', 34942),
+    ('\u{211e}', 34943),
+    ('\u{2120}', 2176),
+    ('\u{212f}', 34959),
+    ('\u{2131}', 2192),
+    ('\u{213d}', 34972),
+    ('\u{213f}', 2205),
+    ('\u{2141}', 34975),
+    ('\u{2145}', 34976),
+    ('\u{2147}', 2209),
+    ('\u{214a}', 34980),
+    ('\u{214e}', 2213),
+    ('\u{2180}', 35031),
+    ('\u{2183}', 2264),
+    ('\u{2185}', 35034),
+    ('\u{2189}', 35035),
+    ('\u{218a}', 35036),
+    ('\u{218c}', 35037),
+    ('\u{2190}', 35038),
+    ('\u{222c}', 2271),
+    ('\u{2231}', 35044),
+    ('\u{2260}', 35045),
+    ('\u{2261}', 35046),
+    ('\u{226e}', 35047),
+    ('\u{2270}', 35048),
+    ('\u{2329}', 2281),
+    ('\u{232b}', 35051),
+    ('\u{2427}', 35052),
+    ('\u{2440}', 35053),
+    ('\u{244b}', 35054),
+    ('\u{2460}', 2287),
+    ('\u{2488}', 35095),
+    ('\u{249c}', 2328),
+    ('\u{24eb}', 35175),
+    ('\u{2a0c}', 35176),
+    ('\u{2a0d}', 35177),
+    ('\u{2a74}', 2410),
+    ('\u{2a77}', 35181),
+    ('\u{2adc}', 35182),
+    ('\u{2add}', 35183),
+    ('\u{2b74}', 35184),
+    ('\u{2b76}', 35185),
+    ('\u{2b96}', 35186),
+    ('\u{2b97}', 35187),
+    ('\u{2c00}', 2420),
+    ('\u{2c30}', 35236),
+    ('\u{2c5f}', 2469),
+    ('\u{2c65}', 35243),
+    ('\u{2c67}', 2476),
+    ('\u{2c73}', 35256),
+    ('\u{2c75}', 35257),
+    ('\u{2c76}', 35258),
+    ('\u{2c7c}', 2491),
+    ('\u{2ce3}', 35362),
+    ('\u{2ce5}', 35363),
+    ('\u{2ceb}', 2596),
+    ('\u{2cee}', 35367),
+    ('\u{2cf2}', 2600),
+    ('\u{2cf4}', 35370),
+    ('\u{2cf9}', 35371),
+    ('\u{2d00}', 35372),
+    ('\u{2d26}', 2605),
+    ('\u{2d28}', 35375),
+    ('\u{2d2d}', 35376),
+    ('\u{2d2e}', 35377),
+    ('\u{2d30}', 35378),
+    ('\u{2d68}', 35379),
+    ('\u{2d6f}', 2612),
+    ('\u{2d71}', 35382),
+    ('\u{2d7f}', 35383),
+    ('\u{2d97}', 35384),
+    ('\u{2da0}', 35385),
+    ('\u{2da7}', 35386),
+    ('\u{2da8}', 35387),
+    ('\u{2daf}', 35388),
+    ('\u{2db0}', 35389),
+    ('\u{2db7}', 35390),
+    ('\u{2db8}', 35391),
+    ('\u{2dbf}', 35392),
+    ('\u{2dc0}', 35393),
+    ('\u{2dc7}', 35394),
+    ('\u{2dc8}', 35395),
+    ('\u{2dcf}', 35396),
+    ('\u{2dd0}', 35397),
+    ('\u{2dd7}', 35398),
+    ('\u{2dd8}', 35399),
+    ('\u{2ddf}', 35400),
+    ('\u{2de0}', 35401),
+    ('\u{2e00}', 35402),
+    ('\u{2e2f}', 35403),
+    ('\u{2e30}', 35404),
+    ('\u{2e53}', 35405),
+    ('\u{2e80}', 35406),
+    ('\u{2e9a}', 35407),
+    ('\u{2e9b}', 35408),
+    ('\u{2e9f}', 35409),
+    ('\u{2ea0}', 35410),
+    ('\u{2ef3}', 35411),
+    ('\u{2ef4}', 35412),
+    ('\u{2f00}', 2645),
+    ('\u{2fd6}', 35627),
+    ('\u{3000}', 2860),
+    ('\u{3003}', 35631),
+    ('\u{3005}', 35632),
+    ('\u{3008}', 35633),
+    ('\u{302a}', 35634),
+    ('\u{302e}', 35635),
+    ('\u{3036}', 2868),
+    ('\u{303d}', 35643),
+    ('\u{3040}', 35644),
+    ('\u{3041}', 35645),
+    ('\u{3097}', 35646),
+    ('\u{3099}', 35647),
+    ('\u{309b}', 2880),
+    ('\u{309d}', 35650),
+    ('\u{309f}', 2883),
+    ('\u{30a1}', 35653),
+    ('\u{30ff}', 35654),
+    ('\u{3100}', 35655),
+    ('\u{3105}', 35656),
+    ('\u{3130}', 2889),
+    ('\u{3190}', 35753),
+    ('\u{3192}', 2986),
+    ('\u{31a0}', 35768),
+    ('\u{31c0}', 35769),
+    ('\u{31e4}', 35770),
+    ('\u{31f0}', 35771),
+    ('\u{3200}', 3004),
+    ('\u{3248}', 35844),
+    ('\u{3250}', 3077),
+    ('\u{3400}', 36277),
+    ('\u{4dc0}', 36278),
+    ('\u{4e00}', 36279),
+    ('\u{9ffd}', 36280),
+    ('\u{a000}', 36281),
+    ('\u{a48d}', 36282),
+    ('\u{a490}', 36283),
+    ('\u{a4c7}', 36284),
+    ('\u{a4d0}', 36285),
+    ('\u{a4fe}', 36286),
+    ('\u{a500}', 36287),
+    ('\u{a60d}', 36288),
+    ('\u{a610}', 36289),
+    ('\u{a62c}', 36290),
+    ('\u{a640}', 3523),
+    ('\u{a66d}', 36336),
+    ('\u{a670}', 36337),
+    ('\u{a674}', 36338),
+    ('\u{a67e}', 3571),
+    ('\u{a69e}', 36371),
+    ('\u{a6e6}', 36372),
+    ('\u{a6f0}', 36373),
+    ('\u{a6f2}', 36374),
+    ('\u{a6f8}', 36375),
+    ('\u{a700}', 36376),
+    ('\u{a717}', 36377),
+    ('\u{a720}', 36378),
+    ('\u{a722}', 3611),
+    ('\u{a72f}', 36392),
+    ('\u{a732}', 3625),
+    ('\u{a771}', 36456),
+    ('\u{a779}', 3689),
+    ('\u{a787}', 36471),
+    ('\u{a789}', 36472),
+    ('\u{a78b}', 3705),
+    ('\u{a78e}', 36476),
+    ('\u{a790}', 3709),
+    ('\u{a793}', 36480),
+    ('\u{a796}', 3713),
+    ('\u{a7c0}', 36523),
+    ('\u{a7c2}', 3756),
+    ('\u{a7cb}', 36533),
+    ('\u{a7f5}', 36534),
+    ('\u{a7f6}', 36535),
+    ('\u{a7f8}', 3768),
+    ('\u{a7fa}', 36538),
+    ('\u{a828}', 36539),
+    ('\u{a82c}', 36540),
+    ('\u{a82d}', 36541),
+    ('\u{a830}', 36542),
+    ('\u{a83a}', 36543),
+    ('\u{a840}', 36544),
+    ('\u{a874}', 36545),
+    ('\u{a878}', 36546),
+    ('\u{a880}', 36547),
+    ('\u{a8c6}', 36548),
+    ('\u{a8ce}', 36549),
+    ('\u{a8d0}', 36550),
+    ('\u{a8da}', 36551),
+    ('\u{a8e0}', 36552),
+    ('\u{a8f8}', 36553),
+    ('\u{a8fb}', 3786),
+    ('\u{a8fd}', 36556),
+    ('\u{a92e}', 36557),
+    ('\u{a930}', 36558),
+    ('\u{a954}', 36559),
+    ('\u{a95f}', 36560),
+    ('\u{a97d}', 36561),
+    ('\u{a980}', 36562),
+    ('\u{a9c1}', 36563),
+    ('\u{a9ce}', 36564),
+    ('\u{a9cf}', 36565),
+    ('\u{a9da}', 36566),
+    ('\u{a9de}', 36567),
+    ('\u{a9e0}', 36568),
+    ('\u{a9ff}', 36569),
+    ('\u{aa00}', 36570),
+    ('\u{aa37}', 36571),
+    ('\u{aa40}', 36572),
+    ('\u{aa4e}', 36573),
+    ('\u{aa50}', 36574),
+    ('\u{aa5a}', 36575),
+    ('\u{aa5c}', 36576),
+    ('\u{aa60}', 36577),
+    ('\u{aa77}', 36578),
+    ('\u{aa7a}', 36579),
+    ('\u{aac3}', 36580),
+    ('\u{aadb}', 36581),
+    ('\u{aade}', 36582),
+    ('\u{aae0}', 36583),
+    ('\u{aaf0}', 36584),
+    ('\u{aaf2}', 36585),
+    ('\u{aaf7}', 36586),
+    ('\u{ab01}', 36587),
+    ('\u{ab07}', 36588),
+    ('\u{ab09}', 36589),
+    ('\u{ab0f}', 36590),
+    ('\u{ab11}', 36591),
+    ('\u{ab17}', 36592),
+    ('\u{ab20}', 36593),
+    ('\u{ab27}', 36594),
+    ('\u{ab28}', 36595),
+    ('\u{ab2f}', 36596),
+    ('\u{ab30}', 36597),
+    ('\u{ab5b}', 3830),
+    ('\u{ab60}', 36603),
+    ('\u{ab69}', 36604),
+    ('\u{ab6a}', 36605),
+    ('\u{ab6c}', 36606),
+    ('\u{ab70}', 3839),
+    ('\u{abc0}', 36687),
+    ('\u{abeb}', 36688),
+    ('\u{abec}', 36689),
+    ('\u{abee}', 36690),
+    ('\u{abf0}', 36691),
+    ('\u{abfa}', 36692),
+    ('\u{ac00}', 36693),
+    ('\u{d7a4}', 36694),
+    ('\u{d7b0}', 36695),
+    ('\u{d7c7}', 36696),
+    ('\u{d7cb}', 36697),
+    ('\u{d7fc}', 36698),
+    ('\u{f900}', 3931),
+    ('\u{f907}', 36706),
+    ('\u{f909}', 3939),
+    ('\u{fa0e}', 36968),
+    ('\u{fa10}', 4201),
+    ('\u{fa13}', 36972),
+    ('\u{fa15}', 4205),
+    ('\u{fa23}', 36987),
+    ('\u{fa25}', 4220),
+    ('\u{fa27}', 36990),
+    ('\u{fa2a}', 4223),
+    ('\u{fa5d}', 37042),
+    ('\u{fa5f}', 4275),
+    ('\u{fa6e}', 37058),
+    ('\u{fa70}', 4291),
+    ('\u{fada}', 37165),
+    ('\u{fb00}', 4398),
+    ('\u{fb05}', 37171),
+    ('\u{fb07}', 37172),
+    ('\u{fb13}', 4405),
+    ('\u{fb18}', 37178),
+    ('\u{fb1d}', 4411),
+    ('\u{fb50}', 37230),
+    ('\u{fb52}', 37231),
+    ('\u{fb56}', 37232),
+    ('\u{fb5a}', 37233),
+    ('\u{fb5e}', 37234),
+    ('\u{fb62}', 37235),
+    ('\u{fb66}', 37236),
+    ('\u{fb6a}', 37237),
+    ('\u{fb6e}', 37238),
+    ('\u{fb72}', 37239),
+    ('\u{fb76}', 37240),
+    ('\u{fb7a}', 37241),
+    ('\u{fb7e}', 37242),
+    ('\u{fb82}', 37243),
+    ('\u{fb84}', 37244),
+    ('\u{fb86}', 37245),
+    ('\u{fb88}', 37246),
+    ('\u{fb8a}', 37247),
+    ('\u{fb8c}', 37248),
+    ('\u{fb8e}', 37249),
+    ('\u{fb92}', 37250),
+    ('\u{fb96}', 37251),
+    ('\u{fb9a}', 37252),
+    ('\u{fb9e}', 37253),
+    ('\u{fba0}', 37254),
+    ('\u{fba4}', 37255),
+    ('\u{fba6}', 37256),
+    ('\u{fbaa}', 37257),
+    ('\u{fbae}', 37258),
+    ('\u{fbb0}', 37259),
+    ('\u{fbb2}', 37260),
+    ('\u{fbc2}', 37261),
+    ('\u{fbd3}', 37262),
+    ('\u{fbd7}', 37263),
+    ('\u{fbd9}', 37264),
+    ('\u{fbdb}', 37265),
+    ('\u{fbdd}', 37266),
+    ('\u{fbde}', 37267),
+    ('\u{fbe0}', 37268),
+    ('\u{fbe2}', 37269),
+    ('\u{fbe4}', 37270),
+    ('\u{fbe8}', 37271),
+    ('\u{fbea}', 37272),
+    ('\u{fbec}', 37273),
+    ('\u{fbee}', 37274),
+    ('\u{fbf0}', 37275),
+    ('\u{fbf2}', 37276),
+    ('\u{fbf4}', 37277),
+    ('\u{fbf6}', 37278),
+    ('\u{fbf9}', 37279),
+    ('\u{fbfc}', 37280),
+    ('\u{fc00}', 4513),
+    ('\u{fd3c}', 37597),
+    ('\u{fd3e}', 37598),
+    ('\u{fd40}', 37599),
+    ('\u{fd50}', 37600),
+    ('\u{fd51}', 37601),
+    ('\u{fd53}', 4834),
+    ('\u{fd58}', 37607),
+    ('\u{fd5a}', 4840),
+    ('\u{fd5f}', 37613),
+    ('\u{fd61}', 37614),
+    ('\u{fd62}', 37615),
+    ('\u{fd64}', 37616),
+    ('\u{fd66}', 37617),
+    ('\u{fd67}', 37618),
+    ('\u{fd69}', 37619),
+    ('\u{fd6a}', 37620),
+    ('\u{fd6c}', 37621),
+    ('\u{fd6e}', 37622),
+    ('\u{fd6f}', 37623),
+    ('\u{fd71}', 37624),
+    ('\u{fd73}', 4857),
+    ('\u{fd76}', 37628),
+    ('\u{fd78}', 4861),
+    ('\u{fd7c}', 37633),
+    ('\u{fd7e}', 4866),
+    ('\u{fd83}', 37639),
+    ('\u{fd85}', 37640),
+    ('\u{fd87}', 37641),
+    ('\u{fd89}', 4874),
+    ('\u{fd90}', 37649),
+    ('\u{fd92}', 4882),
+    ('\u{fd97}', 37655),
+    ('\u{fd99}', 4888),
+    ('\u{fd9c}', 37659),
+    ('\u{fd9e}', 4892),
+    ('\u{fdc8}', 37702),
+    ('\u{fdf0}', 4935),
+    ('\u{fdfe}', 37717),
+    ('\u{fe00}', 37718),
+    ('\u{fe10}', 4951),
+    ('\u{fe19}', 37728),
+    ('\u{fe20}', 37729),
+    ('\u{fe30}', 4962),
+    ('\u{fe33}', 37733),
+    ('\u{fe35}', 4966),
+    ('\u{fe45}', 37750),
+    ('\u{fe47}', 4983),
+    ('\u{fe49}', 37753),
+    ('\u{fe4d}', 37754),
+    ('\u{fe50}', 4987),
+    ('\u{fe52}', 37757),
+    ('\u{fe54}', 4990),
+    ('\u{fe6c}', 37782),
+    ('\u{fe70}', 5015),
+    ('\u{fe81}', 37800),
+    ('\u{fe83}', 37801),
+    ('\u{fe85}', 37802),
+    ('\u{fe87}', 37803),
+    ('\u{fe89}', 37804),
+    ('\u{fe8d}', 37805),
+    ('\u{fe8f}', 37806),
+    ('\u{fe93}', 37807),
+    ('\u{fe95}', 37808),
+    ('\u{fe99}', 37809),
+    ('\u{fe9d}', 37810),
+    ('\u{fea1}', 37811),
+    ('\u{fea5}', 37812),
+    ('\u{fea9}', 37813),
+    ('\u{feab}', 37814),
+    ('\u{fead}', 37815),
+    ('\u{feaf}', 37816),
+    ('\u{feb1}', 37817),
+    ('\u{feb5}', 37818),
+    ('\u{feb9}', 37819),
+    ('\u{febd}', 37820),
+    ('\u{fec1}', 37821),
+    ('\u{fec5}', 37822),
+    ('\u{fec9}', 37823),
+    ('\u{fecd}', 37824),
+    ('\u{fed1}', 37825),
+    ('\u{fed5}', 37826),
+    ('\u{fed9}', 37827),
+    ('\u{fedd}', 37828),
+    ('\u{fee1}', 37829),
+    ('\u{fee5}', 37830),
+    ('\u{fee9}', 37831),
+    ('\u{feed}', 37832),
+    ('\u{feef}', 37833),
+    ('\u{fef1}', 37834),
+    ('\u{fef5}', 37835),
+    ('\u{fef7}', 37836),
+    ('\u{fef9}', 37837),
+    ('\u{fefb}', 37838),
+    ('\u{fefd}', 37839),
+    ('\u{feff}', 5072),
+    ('\u{ffbf}', 38032),
+    ('\u{ffc2}', 5265),
+    ('\u{ffc8}', 38039),
+    ('\u{ffca}', 5272),
+    ('\u{ffd0}', 38046),
+    ('\u{ffd2}', 5279),
+    ('\u{ffd8}', 38053),
+    ('\u{ffda}', 5286),
+    ('\u{ffdd}', 38057),
+    ('\u{ffe0}', 5290),
+    ('\u{ffef}', 38073),
+    ('\u{10000}', 38074),
+    ('\u{1000c}', 38075),
+    ('\u{1000d}', 38076),
+    ('\u{10027}', 38077),
+    ('\u{10028}', 38078),
+    ('\u{1003b}', 38079),
+    ('\u{1003c}', 38080),
+    ('\u{1003e}', 38081),
+    ('\u{1003f}', 38082),
+    ('\u{1004e}', 38083),
+    ('\u{10050}', 38084),
+    ('\u{1005e}', 38085),
+    ('\u{10080}', 38086),
+    ('\u{100fb}', 38087),
+    ('\u{10100}', 38088),
+    ('\u{10103}', 38089),
+    ('\u{10107}', 38090),
+    ('\u{10134}', 38091),
+    ('\u{10137}', 38092),
+    ('\u{1018f}', 38093),
+    ('\u{10190}', 38094),
+    ('\u{1019d}', 38095),
+    ('\u{101a0}', 38096),
+    ('\u{101a1}', 38097),
+    ('\u{101d0}', 38098),
+    ('\u{101fd}', 38099),
+    ('\u{101fe}', 38100),
+    ('\u{10280}', 38101),
+    ('\u{1029d}', 38102),
+    ('\u{102a0}', 38103),
+    ('\u{102d1}', 38104),
+    ('\u{102e0}', 38105),
+    ('\u{102e1}', 38106),
+    ('\u{102fc}', 38107),
+    ('\u{10300}', 38108),
+    ('\u{10320}', 38109),
+    ('\u{10324}', 38110),
+    ('\u{1032d}', 38111),
+    ('\u{10341}', 38112),
+    ('\u{10342}', 38113),
+    ('\u{1034a}', 38114),
+    ('\u{1034b}', 38115),
+    ('\u{10350}', 38116),
+    ('\u{1037b}', 38117),
+    ('\u{10380}', 38118),
+    ('\u{1039e}', 5351),
+    ('\u{103a0}', 38121),
+    ('\u{103c4}', 38122),
+    ('\u{103c8}', 38123),
+    ('\u{103d0}', 38124),
+    ('\u{103d6}', 38125),
+    ('\u{10400}', 5358),
+    ('\u{10428}', 38166),
+    ('\u{1049e}', 38167),
+    ('\u{104a0}', 38168),
+    ('\u{104aa}', 38169),
+    ('\u{104b0}', 5402),
+    ('\u{104d4}', 38206),
+    ('\u{104d8}', 38207),
+    ('\u{104fc}', 38208),
+    ('\u{10500}', 38209),
+    ('\u{10528}', 38210),
+    ('\u{10530}', 38211),
+    ('\u{10564}', 38212),
+    ('\u{1056f}', 38213),
+    ('\u{10570}', 38214),
+    ('\u{10600}', 38215),
+    ('\u{10737}', 38216),
+    ('\u{10740}', 38217),
+    ('\u{10756}', 38218),
+    ('\u{10760}', 38219),
+    ('\u{10768}', 38220),
+    ('\u{10800}', 38221),
+    ('\u{10806}', 38222),
+    ('\u{10808}', 5455),
+    ('\u{1080a}', 38225),
+    ('\u{10836}', 38226),
+    ('\u{10837}', 38227),
+    ('\u{10839}', 38228),
+    ('\u{1083c}', 38229),
+    ('\u{1083d}', 38230),
+    ('\u{1083f}', 38231),
+    ('\u{10856}', 38232),
+    ('\u{10857}', 38233),
+    ('\u{10860}', 38234),
+    ('\u{10877}', 38235),
+    ('\u{10880}', 38236),
+    ('\u{1089f}', 38237),
+    ('\u{108a7}', 38238),
+    ('\u{108b0}', 38239),
+    ('\u{108e0}', 38240),
+    ('\u{108f3}', 38241),
+    ('\u{108f4}', 38242),
+    ('\u{108f6}', 38243),
+    ('\u{108fb}', 38244),
+    ('\u{10900}', 38245),
+    ('\u{10916}', 38246),
+    ('\u{1091c}', 38247),
+    ('\u{1091f}', 38248),
+    ('\u{10920}', 38249),
+    ('\u{1093a}', 38250),
+    ('\u{1093f}', 38251),
+    ('\u{10940}', 38252),
+    ('\u{10980}', 38253),
+    ('\u{109b8}', 38254),
+    ('\u{109bc}', 38255),
+    ('\u{109be}', 38256),
+    ('\u{109c0}', 38257),
+    ('\u{109d0}', 38258),
+    ('\u{109d2}', 38259),
+    ('\u{10a00}', 38260),
+    ('\u{10a04}', 38261),
+    ('\u{10a05}', 38262),
+    ('\u{10a07}', 38263),
+    ('\u{10a0c}', 38264),
+    ('\u{10a14}', 38265),
+    ('\u{10a15}', 38266),
+    ('\u{10a18}', 38267),
+    ('\u{10a19}', 38268),
+    ('\u{10a36}', 38269),
+    ('\u{10a38}', 38270),
+    ('\u{10a3b}', 38271),
+    ('\u{10a3f}', 38272),
+    ('\u{10a40}', 38273),
+    ('\u{10a49}', 38274),
+    ('\u{10a50}', 38275),
+    ('\u{10a59}', 38276),
+    ('\u{10a60}', 38277),
+    ('\u{10a7d}', 38278),
+    ('\u{10a80}', 38279),
+    ('\u{10a9d}', 38280),
+    ('\u{10aa0}', 38281),
+    ('\u{10ac0}', 38282),
+    ('\u{10ac8}', 38283),
+    ('\u{10ac9}', 38284),
+    ('\u{10ae7}', 38285),
+    ('\u{10aeb}', 38286),
+    ('\u{10af7}', 38287),
+    ('\u{10b00}', 38288),
+    ('\u{10b36}', 38289),
+    ('\u{10b39}', 38290),
+    ('\u{10b40}', 38291),
+    ('\u{10b56}', 38292),
+    ('\u{10b58}', 38293),
+    ('\u{10b60}', 38294),
+    ('\u{10b73}', 38295),
+    ('\u{10b78}', 38296),
+    ('\u{10b80}', 38297),
+    ('\u{10b92}', 38298),
+    ('\u{10b99}', 38299),
+    ('\u{10b9d}', 38300),
+    ('\u{10ba9}', 38301),
+    ('\u{10bb0}', 38302),
+    ('\u{10c00}', 38303),
+    ('\u{10c49}', 38304),
+    ('\u{10c80}', 5537),
+    ('\u{10cb3}', 38356),
+    ('\u{10cc0}', 38357),
+    ('\u{10cf3}', 38358),
+    ('\u{10cfa}', 38359),
+    ('\u{10d00}', 38360),
+    ('\u{10d28}', 38361),
+    ('\u{10d30}', 38362),
+    ('\u{10d3a}', 38363),
+    ('\u{10e60}', 38364),
+    ('\u{10e7f}', 38365),
+    ('\u{10e80}', 38366),
+    ('\u{10eaa}', 38367),
+    ('\u{10eab}', 38368),
+    ('\u{10ead}', 38369),
+    ('\u{10eae}', 38370),
+    ('\u{10eb0}', 38371),
+    ('\u{10eb2}', 38372),
+    ('\u{10f00}', 38373),
+    ('\u{10f1d}', 38374),
+    ('\u{10f27}', 38375),
+    ('\u{10f28}', 38376),
+    ('\u{10f30}', 38377),
+    ('\u{10f51}', 38378),
+    ('\u{10f5a}', 38379),
+    ('\u{10fb0}', 38380),
+    ('\u{10fc5}', 38381),
+    ('\u{10fcc}', 38382),
+    ('\u{10fe0}', 38383),
+    ('\u{10ff7}', 38384),
+    ('\u{11000}', 38385),
+    ('\u{11047}', 38386),
+    ('\u{1104e}', 38387),
+    ('\u{11052}', 38388),
+    ('\u{11066}', 38389),
+    ('\u{11070}', 38390),
+    ('\u{1107f}', 38391),
+    ('\u{110bb}', 38392),
+    ('\u{110bd}', 38393),
+    ('\u{110be}', 38394),
+    ('\u{110c2}', 38395),
+    ('\u{110d0}', 38396),
+    ('\u{110e9}', 38397),
+    ('\u{110f0}', 38398),
+    ('\u{110fa}', 38399),
+    ('\u{11100}', 38400),
+    ('\u{11135}', 38401),
+    ('\u{11136}', 38402),
+    ('\u{11140}', 38403),
+    ('\u{11144}', 38404),
+    ('\u{11148}', 38405),
+    ('\u{11150}', 38406),
+    ('\u{11174}', 38407),
+    ('\u{11176}', 38408),
+    ('\u{11177}', 38409),
+    ('\u{11180}', 38410),
+    ('\u{111c5}', 38411),
+    ('\u{111c9}', 38412),
+    ('\u{111cd}', 38413),
+    ('\u{111ce}', 38414),
+    ('\u{111db}', 5647),
+    ('\u{111dd}', 38417),
+    ('\u{111e0}', 38418),
+    ('\u{111e1}', 38419),
+    ('\u{111f5}', 38420),
+    ('\u{11200}', 38421),
+    ('\u{11212}', 38422),
+    ('\u{11213}', 38423),
+    ('\u{11238}', 38424),
+    ('\u{1123e}', 38425),
+    ('\u{1123f}', 38426),
+    ('\u{11280}', 38427),
+    ('\u{11287}', 5660),
+    ('\u{1128a}', 38431),
+    ('\u{1128e}', 38432),
+    ('\u{1128f}', 38433),
+    ('\u{1129e}', 38434),
+    ('\u{1129f}', 38435),
+    ('\u{112a9}', 38436),
+    ('\u{112aa}', 38437),
+    ('\u{112b0}', 38438),
+    ('\u{112eb}', 38439),
+    ('\u{112f0}', 38440),
+    ('\u{112fa}', 38441),
+    ('\u{11300}', 38442),
+    ('\u{11304}', 38443),
+    ('\u{11305}', 38444),
+    ('\u{1130d}', 38445),
+    ('\u{1130f}', 38446),
+    ('\u{11311}', 38447),
+    ('\u{11313}', 38448),
+    ('\u{11329}', 38449),
+    ('\u{1132a}', 38450),
+    ('\u{11331}', 38451),
+    ('\u{11332}', 38452),
+    ('\u{11334}', 38453),
+    ('\u{11335}', 38454),
+    ('\u{1133a}', 38455),
+    ('\u{1133b}', 38456),
+    ('\u{11345}', 38457),
+    ('\u{11347}', 38458),
+    ('\u{11349}', 38459),
+    ('\u{1134b}', 38460),
+    ('\u{1134e}', 38461),
+    ('\u{11350}', 38462),
+    ('\u{11351}', 38463),
+    ('\u{11357}', 38464),
+    ('\u{11358}', 38465),
+    ('\u{1135d}', 38466),
+    ('\u{11364}', 38467),
+    ('\u{11366}', 38468),
+    ('\u{1136d}', 38469),
+    ('\u{11370}', 38470),
+    ('\u{11375}', 38471),
+    ('\u{11400}', 38472),
+    ('\u{1144b}', 38473),
+    ('\u{11450}', 38474),
+    ('\u{1145a}', 38475),
+    ('\u{1145c}', 5708),
+    ('\u{1145e}', 38478),
+    ('\u{11462}', 38479),
+    ('\u{11480}', 38480),
+    ('\u{114c6}', 5713),
+    ('\u{114c8}', 38483),
+    ('\u{114d0}', 38484),
+    ('\u{114da}', 38485),
+    ('\u{11580}', 38486),
+    ('\u{115b6}', 38487),
+    ('\u{115b8}', 38488),
+    ('\u{115c1}', 38489),
+    ('\u{115d8}', 38490),
+    ('\u{115de}', 38491),
+    ('\u{11600}', 38492),
+    ('\u{11641}', 38493),
+    ('\u{11644}', 38494),
+    ('\u{11645}', 38495),
+    ('\u{11650}', 38496),
+    ('\u{1165a}', 38497),
+    ('\u{11660}', 38498),
+    ('\u{1166d}', 38499),
+    ('\u{11680}', 38500),
+    ('\u{116b9}', 38501),
+    ('\u{116c0}', 38502),
+    ('\u{116ca}', 38503),
+    ('\u{11700}', 38504),
+    ('\u{1171b}', 38505),
+    ('\u{1171d}', 38506),
+    ('\u{1172c}', 38507),
+    ('\u{11730}', 38508),
+    ('\u{1173a}', 38509),
+    ('\u{11740}', 38510),
+    ('\u{11800}', 38511),
+    ('\u{1183b}', 38512),
+    ('\u{1183c}', 38513),
+    ('\u{118a0}', 5746),
+    ('\u{118c0}', 38546),
+    ('\u{118ea}', 38547),
+    ('\u{118f3}', 38548),
+    ('\u{118ff}', 38549),
+    ('\u{11907}', 38550),
+    ('\u{11909}', 38551),
+    ('\u{1190a}', 38552),
+    ('\u{1190c}', 38553),
+    ('\u{11914}', 38554),
+    ('\u{11915}', 38555),
+    ('\u{11917}', 38556),
+    ('\u{11918}', 38557),
+    ('\u{11936}', 38558),
+    ('\u{11937}', 38559),
+    ('\u{11939}', 38560),
+    ('\u{1193b}', 38561),
+    ('\u{11944}', 38562),
+    ('\u{11947}', 38563),
+    ('\u{11950}', 38564),
+    ('\u{1195a}', 38565),
+    ('\u{119a0}', 38566),
+    ('\u{119a8}', 38567),
+    ('\u{119aa}', 38568),
+    ('\u{119d8}', 38569),
+    ('\u{119da}', 38570),
+    ('\u{119e2}', 38571),
+    ('\u{119e3}', 38572),
+    ('\u{119e5}', 38573),
+    ('\u{11a00}', 38574),
+    ('\u{11a3f}', 38575),
+    ('\u{11a47}', 38576),
+    ('\u{11a48}', 38577),
+    ('\u{11a50}', 38578),
+    ('\u{11a9a}', 38579),
+    ('\u{11a9d}', 38580),
+    ('\u{11a9e}', 38581),
+    ('\u{11aa3}', 38582),
+    ('\u{11ac0}', 38583),
+    ('\u{11af9}', 38584),
+    ('\u{11c00}', 38585),
+    ('\u{11c09}', 38586),
+    ('\u{11c0a}', 38587),
+    ('\u{11c37}', 38588),
+    ('\u{11c38}', 38589),
+    ('\u{11c41}', 38590),
+    ('\u{11c46}', 38591),
+    ('\u{11c50}', 38592),
+    ('\u{11c5a}', 38593),
+    ('\u{11c6d}', 38594),
+    ('\u{11c70}', 38595),
+    ('\u{11c72}', 38596),
+    ('\u{11c90}', 38597),
+    ('\u{11c92}', 38598),
+    ('\u{11ca8}', 38599),
+    ('\u{11ca9}', 38600),
+    ('\u{11cb7}', 38601),
+    ('\u{11d00}', 38602),
+    ('\u{11d07}', 38603),
+    ('\u{11d08}', 38604),
+    ('\u{11d0a}', 38605),
+    ('\u{11d0b}', 38606),
+    ('\u{11d37}', 38607),
+    ('\u{11d3a}', 5840),
+    ('\u{11d3c}', 38610),
+    ('\u{11d3e}', 38611),
+    ('\u{11d3f}', 38612),
+    ('\u{11d48}', 38613),
+    ('\u{11d50}', 38614),
+    ('\u{11d5a}', 38615),
+    ('\u{11d60}', 38616),
+    ('\u{11d66}', 38617),
+    ('\u{11d67}', 38618),
+    ('\u{11d69}', 38619),
+    ('\u{11d6a}', 38620),
+    ('\u{11d8f}', 38621),
+    ('\u{11d90}', 38622),
+    ('\u{11d92}', 38623),
+    ('\u{11d93}', 38624),
+    ('\u{11d99}', 38625),
+    ('\u{11da0}', 38626),
+    ('\u{11daa}', 38627),
+    ('\u{11ee0}', 38628),
+    ('\u{11ef7}', 38629),
+    ('\u{11ef9}', 38630),
+    ('\u{11fb0}', 38631),
+    ('\u{11fb1}', 38632),
+    ('\u{11fc0}', 38633),
+    ('\u{11ff2}', 38634),
+    ('\u{11fff}', 38635),
+    ('\u{12000}', 38636),
+    ('\u{1239a}', 38637),
+    ('\u{12400}', 38638),
+    ('\u{1246f}', 38639),
+    ('\u{12470}', 38640),
+    ('\u{12475}', 38641),
+    ('\u{12480}', 38642),
+    ('\u{12544}', 38643),
+    ('\u{13000}', 38644),
+    ('\u{1342f}', 38645),
+    ('\u{14400}', 38646),
+    ('\u{14647}', 38647),
+    ('\u{16800}', 38648),
+    ('\u{16a39}', 38649),
+    ('\u{16a40}', 38650),
+    ('\u{16a5f}', 38651),
+    ('\u{16a60}', 38652),
+    ('\u{16a6a}', 38653),
+    ('\u{16a6e}', 38654),
+    ('\u{16a70}', 38655),
+    ('\u{16ad0}', 38656),
+    ('\u{16aee}', 38657),
+    ('\u{16af0}', 38658),
+    ('\u{16af5}', 38659),
+    ('\u{16af6}', 38660),
+    ('\u{16b00}', 38661),
+    ('\u{16b37}', 38662),
+    ('\u{16b40}', 38663),
+    ('\u{16b44}', 38664),
+    ('\u{16b46}', 38665),
+    ('\u{16b50}', 38666),
+    ('\u{16b5a}', 38667),
+    ('\u{16b5b}', 38668),
+    ('\u{16b62}', 38669),
+    ('\u{16b63}', 38670),
+    ('\u{16b78}', 38671),
+    ('\u{16b7d}', 38672),
+    ('\u{16b90}', 38673),
+    ('\u{16e40}', 5906),
+    ('\u{16e60}', 38706),
+    ('\u{16e80}', 38707),
+    ('\u{16e9b}', 38708),
+    ('\u{16f00}', 38709),
+    ('\u{16f4b}', 38710),
+    ('\u{16f4f}', 38711),
+    ('\u{16f88}', 38712),
+    ('\u{16f8f}', 38713),
+    ('\u{16fa0}', 38714),
+    ('\u{16fe0}', 38715),
+    ('\u{16fe2}', 38716),
+    ('\u{16fe3}', 38717),
+    ('\u{16fe5}', 38718),
+    ('\u{16ff0}', 38719),
+    ('\u{16ff2}', 38720),
+    ('\u{17000}', 38721),
+    ('\u{187f8}', 38722),
+    ('\u{18800}', 38723),
+    ('\u{18cd6}', 38724),
+    ('\u{18d00}', 38725),
+    ('\u{18d09}', 38726),
+    ('\u{1b000}', 38727),
+    ('\u{1b11f}', 38728),
+    ('\u{1b150}', 38729),
+    ('\u{1b153}', 38730),
+    ('\u{1b164}', 38731),
+    ('\u{1b168}', 38732),
+    ('\u{1b170}', 38733),
+    ('\u{1b2fc}', 38734),
+    ('\u{1bc00}', 38735),
+    ('\u{1bc6b}', 38736),
+    ('\u{1bc70}', 38737),
+    ('\u{1bc7d}', 38738),
+    ('\u{1bc80}', 38739),
+    ('\u{1bc89}', 38740),
+    ('\u{1bc90}', 38741),
+    ('\u{1bc9a}', 38742),
+    ('\u{1bc9c}', 38743),
+    ('\u{1bc9d}', 38744),
+    ('\u{1bc9f}', 38745),
+    ('\u{1bca0}', 38746),
+    ('\u{1bca4}', 38747),
+    ('\u{1d000}', 38748),
+    ('\u{1d0f6}', 38749),
+    ('\u{1d100}', 38750),
+    ('\u{1d127}', 38751),
+    ('\u{1d129}', 38752),
+    ('\u{1d15e}', 5985),
+    ('\u{1d165}', 38760),
+    ('\u{1d173}', 38761),
+    ('\u{1d17b}', 38762),
+    ('\u{1d1bb}', 5995),
+    ('\u{1d1c1}', 38769),
+    ('\u{1d1e9}', 38770),
+    ('\u{1d200}', 38771),
+    ('\u{1d246}', 38772),
+    ('\u{1d2e0}', 38773),
+    ('\u{1d2f4}', 38774),
+    ('\u{1d300}', 38775),
+    ('\u{1d357}', 38776),
+    ('\u{1d360}', 38777),
+    ('\u{1d379}', 38778),
+    ('\u{1d400}', 6011),
+    ('\u{1d4a0}', 38939),
+    ('\u{1d4a2}', 38940),
+    ('\u{1d4a3}', 38941),
+    ('\u{1d4a5}', 6174),
+    ('\u{1d4a7}', 38944),
+    ('\u{1d4a9}', 6177),
+    ('\u{1d50b}', 39043),
+    ('\u{1d50d}', 6276),
+    ('\u{1d547}', 39102),
+    ('\u{1d54a}', 6335),
+    ('\u{1d6a6}', 39451),
+    ('\u{1d6a8}', 6684),
+    ('\u{1d6d3}', 39495),
+    ('\u{1d6d5}', 6728),
+    ('\u{1d70d}', 39552),
+    ('\u{1d70f}', 6785),
+    ('\u{1d747}', 39609),
+    ('\u{1d749}', 6842),
+    ('\u{1d781}', 39666),
+    ('\u{1d783}', 6899),
+    ('\u{1d7bb}', 39723),
+    ('\u{1d7bd}', 6956),
+    ('\u{1d7ca}', 39737),
+    ('\u{1d7cc}', 39738),
+    ('\u{1d7ce}', 6971),
+    ('\u{1d800}', 39789),
+    ('\u{1da00}', 39790),
+    ('\u{1da37}', 39791),
+    ('\u{1da3b}', 39792),
+    ('\u{1da6d}', 39793),
+    ('\u{1da75}', 39794),
+    ('\u{1da76}', 39795),
+    ('\u{1da84}', 39796),
+    ('\u{1da85}', 39797),
+    ('\u{1da8c}', 39798),
+    ('\u{1da9b}', 39799),
+    ('\u{1daa0}', 39800),
+    ('\u{1daa1}', 39801),
+    ('\u{1dab0}', 39802),
+    ('\u{1e000}', 39803),
+    ('\u{1e007}', 39804),
+    ('\u{1e008}', 39805),
+    ('\u{1e019}', 39806),
+    ('\u{1e01b}', 39807),
+    ('\u{1e022}', 39808),
+    ('\u{1e023}', 39809),
+    ('\u{1e025}', 39810),
+    ('\u{1e026}', 39811),
+    ('\u{1e02b}', 39812),
+    ('\u{1e100}', 39813),
+    ('\u{1e12d}', 39814),
+    ('\u{1e130}', 39815),
+    ('\u{1e13e}', 39816),
+    ('\u{1e140}', 39817),
+    ('\u{1e14a}', 39818),
+    ('\u{1e14e}', 7051),
+    ('\u{1e150}', 39821),
+    ('\u{1e2c0}', 39822),
+    ('\u{1e2fa}', 39823),
+    ('\u{1e2ff}', 39824),
+    ('\u{1e300}', 39825),
+    ('\u{1e800}', 39826),
+    ('\u{1e8c5}', 39827),
+    ('\u{1e8c7}', 39828),
+    ('\u{1e8d0}', 39829),
+    ('\u{1e8d7}', 39830),
+    ('\u{1e900}', 7063),
+    ('\u{1e922}', 39865),
+    ('\u{1e94c}', 39866),
+    ('\u{1e950}', 39867),
+    ('\u{1e95a}', 39868),
+    ('\u{1e95e}', 39869),
+    ('\u{1e960}', 39870),
+    ('\u{1ec71}', 39871),
+    ('\u{1ecb5}', 39872),
+    ('\u{1ed01}', 39873),
+    ('\u{1ed3e}', 39874),
+    ('\u{1ee00}', 7107),
+    ('\u{1ee25}', 39912),
+    ('\u{1ee27}', 7145),
+    ('\u{1ee3c}', 39934),
+    ('\u{1ee42}', 39935),
+    ('\u{1ee43}', 39936),
+    ('\u{1ee47}', 7169),
+    ('\u{1ee55}', 39951),
+    ('\u{1ee57}', 7184),
+    ('\u{1ee65}', 39966),
+    ('\u{1ee67}', 7199),
+    ('\u{1ee9c}', 40020),
+    ('\u{1eea1}', 7253),
+    ('\u{1eebc}', 40048),
+    ('\u{1eef0}', 40049),
+    ('\u{1eef2}', 40050),
+    ('\u{1f000}', 40051),
+    ('\u{1f02c}', 40052),
+    ('\u{1f030}', 40053),
+    ('\u{1f094}', 40054),
+    ('\u{1f0a0}', 40055),
+    ('\u{1f0af}', 40056),
+    ('\u{1f0b1}', 40057),
+    ('\u{1f0c0}', 40058),
+    ('\u{1f0c1}', 40059),
+    ('\u{1f0d0}', 40060),
+    ('\u{1f0d1}', 40061),
+    ('\u{1f0f6}', 40062),
+    ('\u{1f101}', 7295),
+    ('\u{1f10b}', 40073),
+    ('\u{1f110}', 7306),
+    ('\u{1f150}', 40138),
+    ('\u{1f16a}', 7371),
+    ('\u{1f16d}', 40142),
+    ('\u{1f190}', 40143),
+    ('\u{1f191}', 40144),
+    ('\u{1f1ae}', 40145),
+    ('\u{1f1e6}', 40146),
+    ('\u{1f200}', 7379),
+    ('\u{1f203}', 40150),
+    ('\u{1f210}', 7383),
+    ('\u{1f23c}', 40195),
+    ('\u{1f240}', 7428),
+    ('\u{1f249}', 40205),
+    ('\u{1f250}', 7438),
+    ('\u{1f252}', 40208),
+    ('\u{1f260}', 40209),
+    ('\u{1f266}', 40210),
+    ('\u{1f300}', 40211),
+    ('\u{1f6d8}', 40212),
+    ('\u{1f6e0}', 40213),
+    ('\u{1f6ed}', 40214),
+    ('\u{1f6f0}', 40215),
+    ('\u{1f6fd}', 40216),
+    ('\u{1f700}', 40217),
+    ('\u{1f774}', 40218),
+    ('\u{1f780}', 40219),
+    ('\u{1f7d9}', 40220),
+    ('\u{1f7e0}', 40221),
+    ('\u{1f7ec}', 40222),
+    ('\u{1f800}', 40223),
+    ('\u{1f80c}', 40224),
+    ('\u{1f810}', 40225),
+    ('\u{1f848}', 40226),
+    ('\u{1f850}', 40227),
+    ('\u{1f85a}', 40228),
+    ('\u{1f860}', 40229),
+    ('\u{1f888}', 40230),
+    ('\u{1f890}', 40231),
+    ('\u{1f8ae}', 40232),
+    ('\u{1f8b0}', 40233),
+    ('\u{1f8b2}', 40234),
+    ('\u{1f900}', 40235),
+    ('\u{1f979}', 40236),
+    ('\u{1f97a}', 40237),
+    ('\u{1f9cc}', 40238),
+    ('\u{1f9cd}', 40239),
+    ('\u{1fa54}', 40240),
+    ('\u{1fa60}', 40241),
+    ('\u{1fa6e}', 40242),
+    ('\u{1fa70}', 40243),
+    ('\u{1fa75}', 40244),
+    ('\u{1fa78}', 40245),
+    ('\u{1fa7b}', 40246),
+    ('\u{1fa80}', 40247),
+    ('\u{1fa87}', 40248),
+    ('\u{1fa90}', 40249),
+    ('\u{1faa9}', 40250),
+    ('\u{1fab0}', 40251),
+    ('\u{1fab7}', 40252),
+    ('\u{1fac0}', 40253),
+    ('\u{1fac3}', 40254),
+    ('\u{1fad0}', 40255),
+    ('\u{1fad7}', 40256),
+    ('\u{1fb00}', 40257),
+    ('\u{1fb93}', 40258),
+    ('\u{1fb94}', 40259),
+    ('\u{1fbcb}', 40260),
+    ('\u{1fbf0}', 7493),
+    ('\u{1fbfa}', 40271),
+    ('\u{20000}', 40272),
+    ('\u{2a6de}', 40273),
+    ('\u{2a700}', 40274),
+    ('\u{2b735}', 40275),
+    ('\u{2b740}', 40276),
+    ('\u{2b81e}', 40277),
+    ('\u{2b820}', 40278),
+    ('\u{2cea2}', 40279),
+    ('\u{2ceb0}', 40280),
+    ('\u{2ebe1}', 40281),
+    ('\u{2f800}', 7514),
+    ('\u{2f831}', 40331),
+    ('\u{2f834}', 7564),
+    ('\u{2f845}', 40349),
+    ('\u{2f847}', 7582),
+    ('\u{2f86a}', 40385),
+    ('\u{2f86c}', 7618),
+    ('\u{2f891}', 40423),
+    ('\u{2f893}', 40424),
+    ('\u{2f894}', 40425),
+    ('\u{2f896}', 7658),
+    ('\u{2f92c}', 40576),
+    ('\u{2f92e}', 7809),
+    ('\u{2f946}', 40601),
+    ('\u{2f948}', 7834),
+    ('\u{2f95d}', 40623),
+    ('\u{2f95f}', 7856),
+    ('\u{2f9fe}', 40783),
+    ('\u{2fa00}', 8016),
+    ('\u{2fa1e}', 40814),
+    ('\u{30000}', 40815),
+    ('\u{3134b}', 40816),
+    ('\u{e0100}', 40817),
+    ('\u{e01f0}', 40818),
 ];
 
 static MAPPING_TABLE: &[Mapping] = &[
@@ -3351,28 +1930,29 @@
     DisallowedStd3Valid,
     Disallowed,
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 26, byte_start_hi: 0, byte_len: 1 }),
-    Valid,
+    DisallowedIdna2008,
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 27, byte_start_hi: 0, byte_len: 3 }),
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Valid,
+    DisallowedIdna2008,
     Ignored,
-    Valid,
+    DisallowedIdna2008,
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 30, byte_start_hi: 0, byte_len: 3 }),
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 33, byte_start_hi: 0, byte_len: 1 }),
     Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 0, byte_len: 1 }),
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 35, byte_start_hi: 0, byte_len: 3 }),
     Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 0, byte_len: 2 }),
+    DisallowedIdna2008,
     Valid,
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 0, byte_len: 3 }),
     Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 0, byte_len: 1 }),
     Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 44, byte_start_hi: 0, byte_len: 5 }),
     Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 0, byte_len: 5 }),
     Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 0, byte_len: 5 }),
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 59, byte_start_hi: 0, byte_len: 2 }),
     Mapped(StringTableSlice { byte_start_lo: 61, byte_start_hi: 0, byte_len: 2 }),
     Mapped(StringTableSlice { byte_start_lo: 63, byte_start_hi: 0, byte_len: 2 }),
@@ -3396,7 +1976,7 @@
     Mapped(StringTableSlice { byte_start_lo: 99, byte_start_hi: 0, byte_len: 2 }),
     Mapped(StringTableSlice { byte_start_lo: 101, byte_start_hi: 0, byte_len: 2 }),
     Mapped(StringTableSlice { byte_start_lo: 103, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 105, byte_start_hi: 0, byte_len: 2 }),
     Mapped(StringTableSlice { byte_start_lo: 107, byte_start_hi: 0, byte_len: 2 }),
     Mapped(StringTableSlice { byte_start_lo: 109, byte_start_hi: 0, byte_len: 2 }),
@@ -3406,6 +1986,8 @@
     Mapped(StringTableSlice { byte_start_lo: 117, byte_start_hi: 0, byte_len: 2 }),
     Deviation(StringTableSlice { byte_start_lo: 119, byte_start_hi: 0, byte_len: 2 }),
     Valid,
+    DisallowedIdna2008,
+    Valid,
     Mapped(StringTableSlice { byte_start_lo: 121, byte_start_hi: 0, byte_len: 2 }),
     Valid,
     Mapped(StringTableSlice { byte_start_lo: 123, byte_start_hi: 0, byte_len: 2 }),
@@ -3720,18 +2302,26 @@
     Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
     Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
     Valid,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 213, byte_start_hi: 1, byte_len: 3 }),
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 216, byte_start_hi: 1, byte_len: 3 }),
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 219, byte_start_hi: 1, byte_len: 3 }),
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 222, byte_start_hi: 1, byte_len: 3 }),
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 225, byte_start_hi: 1, byte_len: 3 }),
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 228, byte_start_hi: 1, byte_len: 3 }),
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 1, byte_len: 2 }),
     Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
     Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
     Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
     Mapped(StringTableSlice { byte_start_lo: 231, byte_start_hi: 1, byte_len: 2 }),
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
     Valid,
     Mapped(StringTableSlice { byte_start_lo: 233, byte_start_hi: 1, byte_len: 2 }),
     Mapped(StringTableSlice { byte_start_lo: 235, byte_start_hi: 1, byte_len: 2 }),
@@ -3838,7 +2428,7 @@
     Valid,
     Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 2, byte_len: 2 }),
     Mapped(StringTableSlice { byte_start_lo: 32, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 98, byte_start_hi: 2, byte_len: 2 }),
     Valid,
     Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 2, byte_len: 2 }),
@@ -3930,6 +2520,9 @@
     Valid,
     Mapped(StringTableSlice { byte_start_lo: 236, byte_start_hi: 2, byte_len: 2 }),
     Valid,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 238, byte_start_hi: 2, byte_len: 2 }),
     Valid,
     Mapped(StringTableSlice { byte_start_lo: 240, byte_start_hi: 2, byte_len: 2 }),
@@ -4136,41 +2729,68 @@
     Mapped(StringTableSlice { byte_start_lo: 220, byte_start_hi: 3, byte_len: 2 }),
     Disallowed,
     Valid,
+    DisallowedIdna2008,
+    Valid,
     Mapped(StringTableSlice { byte_start_lo: 222, byte_start_hi: 3, byte_len: 4 }),
     Valid,
+    DisallowedIdna2008,
     Disallowed,
+    DisallowedIdna2008,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
     Valid,
     Disallowed,
     Valid,
     Disallowed,
     Valid,
     Disallowed,
+    DisallowedIdna2008,
     Valid,
+    DisallowedIdna2008,
     Disallowed,
+    DisallowedIdna2008,
     Valid,
-    Disallowed,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
     Valid,
     Mapped(StringTableSlice { byte_start_lo: 226, byte_start_hi: 3, byte_len: 4 }),
     Mapped(StringTableSlice { byte_start_lo: 230, byte_start_hi: 3, byte_len: 4 }),
     Mapped(StringTableSlice { byte_start_lo: 234, byte_start_hi: 3, byte_len: 4 }),
     Mapped(StringTableSlice { byte_start_lo: 238, byte_start_hi: 3, byte_len: 4 }),
     Valid,
+    DisallowedIdna2008,
+    Valid,
+    Disallowed,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
     Disallowed,
     Valid,
     Disallowed,
     Valid,
+    DisallowedIdna2008,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    Disallowed,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
     Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
     Disallowed,
@@ -4190,6 +2810,10 @@
     Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 4, byte_len: 6 }),
     Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 4, byte_len: 6 }),
     Valid,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
     Disallowed,
     Valid,
     Disallowed,
@@ -4218,6 +2842,10 @@
     Valid,
     Disallowed,
     Valid,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
     Disallowed,
     Valid,
     Disallowed,
@@ -4255,6 +2883,7 @@
     Mapped(StringTableSlice { byte_start_lo: 82, byte_start_hi: 4, byte_len: 6 }),
     Disallowed,
     Valid,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
     Disallowed,
@@ -4281,6 +2910,7 @@
     Valid,
     Disallowed,
     Valid,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
     Disallowed,
@@ -4312,6 +2942,9 @@
     Valid,
     Disallowed,
     Valid,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
     Disallowed,
@@ -4344,12 +2977,77 @@
     Valid,
     Disallowed,
     Valid,
+    DisallowedIdna2008,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
     Disallowed,
     Valid,
     Disallowed,
     Valid,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
+    DisallowedIdna2008,
+    Valid,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
     Disallowed,
     Valid,
     Disallowed,
@@ -4374,68 +3072,17 @@
     Valid,
     Disallowed,
     Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
     Mapped(StringTableSlice { byte_start_lo: 100, byte_start_hi: 4, byte_len: 6 }),
     Valid,
     Disallowed,
+    DisallowedIdna2008,
     Valid,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
     Disallowed,
@@ -4464,7 +3111,20 @@
     Valid,
     Disallowed,
     Valid,
+    DisallowedIdna2008,
+    Valid,
     Mapped(StringTableSlice { byte_start_lo: 124, byte_start_hi: 4, byte_len: 3 }),
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
     Valid,
     Mapped(StringTableSlice { byte_start_lo: 127, byte_start_hi: 4, byte_len: 6 }),
     Valid,
@@ -4492,6 +3152,8 @@
     Valid,
     Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 4, byte_len: 6 }),
     Valid,
+    DisallowedIdna2008,
+    Valid,
     Mapped(StringTableSlice { byte_start_lo: 211, byte_start_hi: 4, byte_len: 6 }),
     Valid,
     Disallowed,
@@ -4507,20 +3169,28 @@
     Mapped(StringTableSlice { byte_start_lo: 241, byte_start_hi: 4, byte_len: 6 }),
     Valid,
     Disallowed,
+    DisallowedIdna2008,
     Valid,
+    DisallowedIdna2008,
+    Disallowed,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
-    Disallowed,
+    DisallowedIdna2008,
     Valid,
+    DisallowedIdna2008,
     Disallowed,
     Mapped(StringTableSlice { byte_start_lo: 247, byte_start_hi: 4, byte_len: 3 }),
     Disallowed,
     Mapped(StringTableSlice { byte_start_lo: 250, byte_start_hi: 4, byte_len: 3 }),
     Disallowed,
     Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 253, byte_start_hi: 4, byte_len: 3 }),
     Valid,
+    DisallowedIdna2008,
     Disallowed,
+    DisallowedIdna2008,
     Valid,
     Disallowed,
     Valid,
@@ -4554,8 +3224,10 @@
     Valid,
     Disallowed,
     Valid,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
     Disallowed,
@@ -4566,7 +3238,24 @@
     Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 5, byte_len: 3 }),
     Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 5, byte_len: 3 }),
     Disallowed,
+    DisallowedIdna2008,
     Valid,
+    DisallowedIdna2008,
+    Valid,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
     Disallowed,
@@ -4579,24 +3268,18 @@
     Valid,
     Disallowed,
     Valid,
-    Disallowed,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
     Valid,
     Disallowed,
     Valid,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Ignored,
     Disallowed,
     Valid,
@@ -4613,6 +3296,9 @@
     Disallowed,
     Valid,
     Disallowed,
+    DisallowedIdna2008,
+    Disallowed,
+    DisallowedIdna2008,
     Valid,
     Disallowed,
     Valid,
@@ -4622,7 +3308,12 @@
     Valid,
     Disallowed,
     Valid,
+    DisallowedIdna2008,
     Disallowed,
+    DisallowedIdna2008,
+    Valid,
+    Disallowed,
+    DisallowedIdna2008,
     Valid,
     Disallowed,
     Valid,
@@ -4631,25 +3322,31 @@
     Disallowed,
     Valid,
     Disallowed,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
     Valid,
     Disallowed,
     Valid,
     Disallowed,
     Valid,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
     Disallowed,
+    DisallowedIdna2008,
+    Valid,
+    Disallowed,
+    DisallowedIdna2008,
     Valid,
     Disallowed,
     Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 144, byte_start_hi: 2, byte_len: 2 }),
     Mapped(StringTableSlice { byte_start_lo: 148, byte_start_hi: 2, byte_len: 2 }),
     Mapped(StringTableSlice { byte_start_lo: 168, byte_start_hi: 2, byte_len: 2 }),
@@ -4706,9 +3403,11 @@
     Mapped(StringTableSlice { byte_start_lo: 147, byte_start_hi: 5, byte_len: 3 }),
     Mapped(StringTableSlice { byte_start_lo: 150, byte_start_hi: 5, byte_len: 3 }),
     Mapped(StringTableSlice { byte_start_lo: 153, byte_start_hi: 5, byte_len: 3 }),
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
+    DisallowedIdna2008,
+    Valid,
     Disallowed,
     Valid,
     Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
@@ -5266,32 +3965,32 @@
     Ignored,
     Deviation(StringTableSlice { byte_start_lo: 240, byte_start_hi: 8, byte_len: 0 }),
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 240, byte_start_hi: 8, byte_len: 3 }),
-    Valid,
+    DisallowedIdna2008,
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 243, byte_start_hi: 8, byte_len: 3 }),
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 26, byte_start_hi: 0, byte_len: 1 }),
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 246, byte_start_hi: 8, byte_len: 6 }),
     Mapped(StringTableSlice { byte_start_lo: 252, byte_start_hi: 8, byte_len: 9 }),
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 9, byte_len: 6 }),
     Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 9, byte_len: 9 }),
-    Valid,
+    DisallowedIdna2008,
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 9, byte_len: 2 }),
-    Valid,
+    DisallowedIdna2008,
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 9, byte_len: 3 }),
-    Valid,
+    DisallowedIdna2008,
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 9, byte_len: 2 }),
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 27, byte_start_hi: 9, byte_len: 2 }),
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 29, byte_start_hi: 9, byte_len: 2 }),
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 31, byte_start_hi: 9, byte_len: 12 }),
-    Valid,
+    DisallowedIdna2008,
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 26, byte_start_hi: 0, byte_len: 1 }),
     Ignored,
     Disallowed,
@@ -5342,50 +4041,50 @@
     Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
     Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 57, byte_start_hi: 9, byte_len: 2 }),
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 59, byte_start_hi: 9, byte_len: 3 }),
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 62, byte_start_hi: 9, byte_len: 3 }),
     Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
     Mapped(StringTableSlice { byte_start_lo: 65, byte_start_hi: 9, byte_len: 3 }),
-    Valid,
+    DisallowedIdna2008,
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 68, byte_start_hi: 9, byte_len: 3 }),
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 71, byte_start_hi: 9, byte_len: 3 }),
     Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 74, byte_start_hi: 9, byte_len: 3 }),
     Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
     Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 0, byte_len: 1 }),
     Mapped(StringTableSlice { byte_start_lo: 159, byte_start_hi: 0, byte_len: 2 }),
     Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
     Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
     Mapped(StringTableSlice { byte_start_lo: 77, byte_start_hi: 9, byte_len: 2 }),
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
     Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 0, byte_len: 1 }),
     Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 79, byte_start_hi: 9, byte_len: 2 }),
     Mapped(StringTableSlice { byte_start_lo: 81, byte_start_hi: 9, byte_len: 3 }),
     Mapped(StringTableSlice { byte_start_lo: 84, byte_start_hi: 9, byte_len: 2 }),
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 66, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
     Mapped(StringTableSlice { byte_start_lo: 69, byte_start_hi: 0, byte_len: 2 }),
     Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
     Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
     Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
     Disallowed,
@@ -5396,18 +4095,20 @@
     Mapped(StringTableSlice { byte_start_lo: 90, byte_start_hi: 9, byte_len: 2 }),
     Mapped(StringTableSlice { byte_start_lo: 92, byte_start_hi: 9, byte_len: 2 }),
     Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 94, byte_start_hi: 9, byte_len: 3 }),
     Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 2, byte_len: 2 }),
     Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 2, byte_len: 2 }),
     Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 2, byte_len: 2 }),
     Mapped(StringTableSlice { byte_start_lo: 97, byte_start_hi: 9, byte_len: 3 }),
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
     Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
     Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
     Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
+    DisallowedIdna2008,
     Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 100, byte_start_hi: 9, byte_len: 5 }),
     Mapped(StringTableSlice { byte_start_lo: 105, byte_start_hi: 9, byte_len: 5 }),
     Mapped(StringTableSlice { byte_start_lo: 110, byte_start_hi: 9, byte_len: 6 }),
@@ -5456,28 +4157,29 @@
     Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
     Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
     Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 203, byte_start_hi: 9, byte_len: 5 }),
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 208, byte_start_hi: 9, byte_len: 6 }),
     Mapped(StringTableSlice { byte_start_lo: 214, byte_start_hi: 9, byte_len: 9 }),
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 223, byte_start_hi: 9, byte_len: 6 }),
     Mapped(StringTableSlice { byte_start_lo: 229, byte_start_hi: 9, byte_len: 9 }),
-    Valid,
+    DisallowedIdna2008,
     DisallowedStd3Valid,
-    Valid,
+    DisallowedIdna2008,
     DisallowedStd3Valid,
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 238, byte_start_hi: 9, byte_len: 3 }),
     Mapped(StringTableSlice { byte_start_lo: 241, byte_start_hi: 9, byte_len: 3 }),
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
     Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 0, byte_len: 1 }),
     Mapped(StringTableSlice { byte_start_lo: 33, byte_start_hi: 0, byte_len: 1 }),
@@ -5599,19 +4301,19 @@
     Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
     Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
     Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 9, byte_len: 1 }),
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 159, byte_start_hi: 10, byte_len: 12 }),
-    Valid,
+    DisallowedIdna2008,
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 171, byte_start_hi: 10, byte_len: 3 }),
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 174, byte_start_hi: 10, byte_len: 2 }),
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 176, byte_start_hi: 10, byte_len: 3 }),
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 179, byte_start_hi: 10, byte_len: 5 }),
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 184, byte_start_hi: 10, byte_len: 3 }),
     Mapped(StringTableSlice { byte_start_lo: 187, byte_start_hi: 10, byte_len: 3 }),
     Mapped(StringTableSlice { byte_start_lo: 190, byte_start_hi: 10, byte_len: 3 }),
@@ -5787,6 +4489,7 @@
     Valid,
     Mapped(StringTableSlice { byte_start_lo: 245, byte_start_hi: 11, byte_len: 3 }),
     Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 248, byte_start_hi: 11, byte_len: 3 }),
     Valid,
     Mapped(StringTableSlice { byte_start_lo: 251, byte_start_hi: 11, byte_len: 3 }),
@@ -5794,6 +4497,7 @@
     Mapped(StringTableSlice { byte_start_lo: 254, byte_start_hi: 11, byte_len: 3 }),
     Valid,
     Disallowed,
+    DisallowedIdna2008,
     Valid,
     Disallowed,
     Valid,
@@ -5803,7 +4507,7 @@
     Valid,
     Disallowed,
     Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 12, byte_len: 3 }),
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
     Disallowed,
@@ -5824,12 +4528,15 @@
     Valid,
     Disallowed,
     Valid,
-    Disallowed,
+    DisallowedIdna2008,
     Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
+    Disallowed,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 12, byte_len: 3 }),
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 12, byte_len: 3 }),
     Disallowed,
     Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 12, byte_len: 3 }),
@@ -6048,15 +4755,21 @@
     Mapped(StringTableSlice { byte_start_lo: 137, byte_start_hi: 14, byte_len: 3 }),
     Disallowed,
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 26, byte_start_hi: 0, byte_len: 1 }),
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 140, byte_start_hi: 14, byte_len: 1 }),
+    DisallowedIdna2008,
     Valid,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 141, byte_start_hi: 14, byte_len: 3 }),
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 79, byte_start_hi: 12, byte_len: 3 }),
     Mapped(StringTableSlice { byte_start_lo: 144, byte_start_hi: 14, byte_len: 3 }),
     Mapped(StringTableSlice { byte_start_lo: 147, byte_start_hi: 14, byte_len: 3 }),
+    DisallowedIdna2008,
     Valid,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
     Disallowed,
@@ -6065,6 +4778,7 @@
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 154, byte_start_hi: 14, byte_len: 4 }),
     Valid,
     Mapped(StringTableSlice { byte_start_lo: 158, byte_start_hi: 14, byte_len: 6 }),
+    DisallowedIdna2008,
     Valid,
     Mapped(StringTableSlice { byte_start_lo: 164, byte_start_hi: 14, byte_len: 6 }),
     Disallowed,
@@ -6165,7 +4879,7 @@
     Mapped(StringTableSlice { byte_start_lo: 187, byte_start_hi: 15, byte_len: 3 }),
     Mapped(StringTableSlice { byte_start_lo: 190, byte_start_hi: 15, byte_len: 3 }),
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 12, byte_len: 3 }),
     Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 12, byte_len: 3 }),
     Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 15, byte_len: 3 }),
@@ -6181,6 +4895,7 @@
     Mapped(StringTableSlice { byte_start_lo: 220, byte_start_hi: 15, byte_len: 3 }),
     Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 12, byte_len: 3 }),
     Valid,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 223, byte_start_hi: 15, byte_len: 5 }),
@@ -6255,7 +4970,7 @@
     Mapped(StringTableSlice { byte_start_lo: 55, byte_start_hi: 17, byte_len: 3 }),
     Mapped(StringTableSlice { byte_start_lo: 208, byte_start_hi: 12, byte_len: 3 }),
     Mapped(StringTableSlice { byte_start_lo: 58, byte_start_hi: 17, byte_len: 3 }),
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 61, byte_start_hi: 17, byte_len: 3 }),
     Mapped(StringTableSlice { byte_start_lo: 64, byte_start_hi: 17, byte_len: 2 }),
     Mapped(StringTableSlice { byte_start_lo: 66, byte_start_hi: 17, byte_len: 2 }),
@@ -6303,7 +5018,7 @@
     Mapped(StringTableSlice { byte_start_lo: 136, byte_start_hi: 17, byte_len: 6 }),
     Mapped(StringTableSlice { byte_start_lo: 142, byte_start_hi: 17, byte_len: 6 }),
     Mapped(StringTableSlice { byte_start_lo: 148, byte_start_hi: 17, byte_len: 3 }),
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 12, byte_len: 3 }),
     Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 12, byte_len: 3 }),
     Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 15, byte_len: 3 }),
@@ -6689,11 +5404,17 @@
     Mapped(StringTableSlice { byte_start_lo: 150, byte_start_hi: 24, byte_len: 5 }),
     Mapped(StringTableSlice { byte_start_lo: 155, byte_start_hi: 24, byte_len: 3 }),
     Valid,
-    Disallowed,
+    DisallowedIdna2008,
     Valid,
     Disallowed,
     Valid,
     Disallowed,
+    DisallowedIdna2008,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
     Valid,
     Disallowed,
     Mapped(StringTableSlice { byte_start_lo: 158, byte_start_hi: 24, byte_len: 3 }),
@@ -6742,6 +5463,10 @@
     Valid,
     Mapped(StringTableSlice { byte_start_lo: 221, byte_start_hi: 24, byte_len: 3 }),
     Valid,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
     Mapped(StringTableSlice { byte_start_lo: 224, byte_start_hi: 24, byte_len: 3 }),
     Valid,
     Mapped(StringTableSlice { byte_start_lo: 227, byte_start_hi: 24, byte_len: 3 }),
@@ -6773,8 +5498,13 @@
     Mapped(StringTableSlice { byte_start_lo: 192, byte_start_hi: 2, byte_len: 2 }),
     Mapped(StringTableSlice { byte_start_lo: 196, byte_start_hi: 2, byte_len: 2 }),
     Valid,
-    Disallowed,
+    DisallowedIdna2008,
     Valid,
+    DisallowedIdna2008,
+    Disallowed,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 25, byte_len: 3 }),
     Valid,
     Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 25, byte_len: 3 }),
@@ -6868,6 +5598,7 @@
     Valid,
     Mapped(StringTableSlice { byte_start_lo: 145, byte_start_hi: 25, byte_len: 3 }),
     Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 148, byte_start_hi: 25, byte_len: 3 }),
     Valid,
     Mapped(StringTableSlice { byte_start_lo: 185, byte_start_hi: 5, byte_len: 2 }),
@@ -6934,7 +5665,52 @@
     Mapped(StringTableSlice { byte_start_lo: 159, byte_start_hi: 0, byte_len: 2 }),
     Mapped(StringTableSlice { byte_start_lo: 206, byte_start_hi: 0, byte_len: 2 }),
     Valid,
+    DisallowedIdna2008,
+    Valid,
     Disallowed,
+    DisallowedIdna2008,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Disallowed,
+    Valid,
+    Disallowed,
+    DisallowedIdna2008,
+    Valid,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    Disallowed,
+    DisallowedIdna2008,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Disallowed,
+    Valid,
+    Disallowed,
+    DisallowedIdna2008,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
     Valid,
     Disallowed,
     Valid,
@@ -6948,39 +5724,14 @@
     Valid,
     Disallowed,
     Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 25, byte_len: 3 }),
     Mapped(StringTableSlice { byte_start_lo: 232, byte_start_hi: 25, byte_len: 3 }),
     Mapped(StringTableSlice { byte_start_lo: 72, byte_start_hi: 11, byte_len: 2 }),
     Mapped(StringTableSlice { byte_start_lo: 235, byte_start_hi: 25, byte_len: 3 }),
     Valid,
     Mapped(StringTableSlice { byte_start_lo: 238, byte_start_hi: 25, byte_len: 2 }),
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
     Mapped(StringTableSlice { byte_start_lo: 240, byte_start_hi: 25, byte_len: 3 }),
     Mapped(StringTableSlice { byte_start_lo: 243, byte_start_hi: 25, byte_len: 3 }),
@@ -7063,14 +5814,16 @@
     Mapped(StringTableSlice { byte_start_lo: 218, byte_start_hi: 26, byte_len: 3 }),
     Mapped(StringTableSlice { byte_start_lo: 221, byte_start_hi: 26, byte_len: 3 }),
     Valid,
-    Disallowed,
+    DisallowedIdna2008,
     Valid,
     Disallowed,
     Valid,
     Disallowed,
     Valid,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
+    Disallowed,
+    DisallowedIdna2008,
     Disallowed,
     Mapped(StringTableSlice { byte_start_lo: 224, byte_start_hi: 26, byte_len: 3 }),
     Mapped(StringTableSlice { byte_start_lo: 227, byte_start_hi: 26, byte_len: 3 }),
@@ -7633,7 +6386,7 @@
     Mapped(StringTableSlice { byte_start_lo: 159, byte_start_hi: 32, byte_len: 2 }),
     Mapped(StringTableSlice { byte_start_lo: 161, byte_start_hi: 32, byte_len: 2 }),
     Mapped(StringTableSlice { byte_start_lo: 163, byte_start_hi: 32, byte_len: 2 }),
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
     Mapped(StringTableSlice { byte_start_lo: 165, byte_start_hi: 32, byte_len: 2 }),
     Mapped(StringTableSlice { byte_start_lo: 167, byte_start_hi: 32, byte_len: 2 }),
@@ -7971,7 +6724,7 @@
     Mapped(StringTableSlice { byte_start_lo: 113, byte_start_hi: 33, byte_len: 4 }),
     Mapped(StringTableSlice { byte_start_lo: 117, byte_start_hi: 33, byte_len: 4 }),
     Mapped(StringTableSlice { byte_start_lo: 105, byte_start_hi: 35, byte_len: 4 }),
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
     Mapped(StringTableSlice { byte_start_lo: 109, byte_start_hi: 35, byte_len: 6 }),
     Mapped(StringTableSlice { byte_start_lo: 115, byte_start_hi: 35, byte_len: 6 }),
@@ -8089,7 +6842,7 @@
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 235, byte_start_hi: 37, byte_len: 33 }),
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 38, byte_len: 15 }),
     Mapped(StringTableSlice { byte_start_lo: 27, byte_start_hi: 38, byte_len: 8 }),
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
     Ignored,
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 35, byte_start_hi: 38, byte_len: 1 }),
@@ -8123,7 +6876,7 @@
     Mapped(StringTableSlice { byte_start_lo: 78, byte_start_hi: 38, byte_len: 3 }),
     Mapped(StringTableSlice { byte_start_lo: 81, byte_start_hi: 38, byte_len: 3 }),
     Mapped(StringTableSlice { byte_start_lo: 84, byte_start_hi: 38, byte_len: 3 }),
-    Valid,
+    DisallowedIdna2008,
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 87, byte_start_hi: 38, byte_len: 1 }),
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 88, byte_start_hi: 38, byte_len: 1 }),
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 9, byte_len: 3 }),
@@ -8461,6 +7214,17 @@
     Disallowed,
     Valid,
     Disallowed,
+    DisallowedIdna2008,
+    Disallowed,
+    DisallowedIdna2008,
+    Disallowed,
+    DisallowedIdna2008,
+    Disallowed,
+    DisallowedIdna2008,
+    Disallowed,
+    DisallowedIdna2008,
+    Disallowed,
+    DisallowedIdna2008,
     Valid,
     Disallowed,
     Valid,
@@ -8468,28 +7232,25 @@
     Valid,
     Disallowed,
     Valid,
+    DisallowedIdna2008,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
     Disallowed,
     Valid,
     Disallowed,
+    DisallowedIdna2008,
     Valid,
     Disallowed,
     Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
     Mapped(StringTableSlice { byte_start_lo: 65, byte_start_hi: 39, byte_len: 4 }),
     Mapped(StringTableSlice { byte_start_lo: 69, byte_start_hi: 39, byte_len: 4 }),
@@ -8578,7 +7339,7 @@
     Disallowed,
     Valid,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
     Disallowed,
@@ -8598,6 +7359,33 @@
     Disallowed,
     Valid,
     Disallowed,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    Disallowed,
+    DisallowedIdna2008,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
+    Disallowed,
+    DisallowedIdna2008,
+    Valid,
+    Disallowed,
+    DisallowedIdna2008,
+    Disallowed,
+    Valid,
+    Disallowed,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
+    Disallowed,
+    DisallowedIdna2008,
     Valid,
     Disallowed,
     Valid,
@@ -8611,44 +7399,35 @@
     Valid,
     Disallowed,
     Valid,
+    DisallowedIdna2008,
+    Disallowed,
+    DisallowedIdna2008,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    Disallowed,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
     Disallowed,
+    DisallowedIdna2008,
     Valid,
     Disallowed,
+    DisallowedIdna2008,
     Valid,
     Disallowed,
+    DisallowedIdna2008,
     Valid,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
     Disallowed,
@@ -8706,10 +7485,87 @@
     Disallowed,
     Valid,
     Disallowed,
+    DisallowedIdna2008,
     Valid,
     Disallowed,
     Valid,
     Disallowed,
+    DisallowedIdna2008,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Disallowed,
+    DisallowedIdna2008,
+    Valid,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Disallowed,
+    DisallowedIdna2008,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
+    Disallowed,
+    DisallowedIdna2008,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Disallowed,
+    Valid,
+    Disallowed,
     Valid,
     Disallowed,
     Valid,
@@ -8743,6 +7599,32 @@
     Valid,
     Disallowed,
     Valid,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
+    Disallowed,
+    DisallowedIdna2008,
+    Valid,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
     Disallowed,
@@ -8753,78 +7635,10 @@
     Valid,
     Disallowed,
     Valid,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
     Mapped(StringTableSlice { byte_start_lo: 61, byte_start_hi: 41, byte_len: 4 }),
     Mapped(StringTableSlice { byte_start_lo: 65, byte_start_hi: 41, byte_len: 4 }),
@@ -8859,6 +7673,7 @@
     Mapped(StringTableSlice { byte_start_lo: 181, byte_start_hi: 41, byte_len: 4 }),
     Mapped(StringTableSlice { byte_start_lo: 185, byte_start_hi: 41, byte_len: 4 }),
     Valid,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
     Disallowed,
@@ -8873,6 +7688,53 @@
     Valid,
     Disallowed,
     Valid,
+    DisallowedIdna2008,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Disallowed,
+    DisallowedIdna2008,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
     Disallowed,
     Valid,
     Disallowed,
@@ -8893,6 +7755,18 @@
     Valid,
     Disallowed,
     Valid,
+    DisallowedIdna2008,
+    Disallowed,
+    Valid,
+    Disallowed,
+    DisallowedIdna2008,
+    Disallowed,
+    DisallowedIdna2008,
+    Valid,
+    Disallowed,
+    DisallowedIdna2008,
+    Disallowed,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
     Disallowed,
@@ -8906,63 +7780,21 @@
     Disallowed,
     Valid,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
     Disallowed,
     Valid,
+    DisallowedIdna2008,
+    Disallowed,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
     Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
     Disallowed,
@@ -9001,6 +7833,7 @@
     Mapped(StringTableSlice { byte_start_lo: 53, byte_start_hi: 42, byte_len: 4 }),
     Mapped(StringTableSlice { byte_start_lo: 57, byte_start_hi: 42, byte_len: 4 }),
     Valid,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
     Disallowed,
@@ -9009,6 +7842,14 @@
     Valid,
     Disallowed,
     Valid,
+    DisallowedIdna2008,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
+    Disallowed,
+    Valid,
     Disallowed,
     Valid,
     Disallowed,
@@ -9028,20 +7869,16 @@
     Disallowed,
     Valid,
     Disallowed,
+    DisallowedIdna2008,
     Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Ignored,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 61, byte_start_hi: 42, byte_len: 8 }),
     Mapped(StringTableSlice { byte_start_lo: 69, byte_start_hi: 42, byte_len: 8 }),
     Mapped(StringTableSlice { byte_start_lo: 77, byte_start_hi: 42, byte_len: 12 }),
@@ -9049,24 +7886,24 @@
     Mapped(StringTableSlice { byte_start_lo: 101, byte_start_hi: 42, byte_len: 12 }),
     Mapped(StringTableSlice { byte_start_lo: 113, byte_start_hi: 42, byte_len: 12 }),
     Mapped(StringTableSlice { byte_start_lo: 125, byte_start_hi: 42, byte_len: 12 }),
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 137, byte_start_hi: 42, byte_len: 8 }),
     Mapped(StringTableSlice { byte_start_lo: 145, byte_start_hi: 42, byte_len: 8 }),
     Mapped(StringTableSlice { byte_start_lo: 153, byte_start_hi: 42, byte_len: 12 }),
     Mapped(StringTableSlice { byte_start_lo: 165, byte_start_hi: 42, byte_len: 12 }),
     Mapped(StringTableSlice { byte_start_lo: 177, byte_start_hi: 42, byte_len: 12 }),
     Mapped(StringTableSlice { byte_start_lo: 189, byte_start_hi: 42, byte_len: 12 }),
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
     Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
     Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
@@ -10078,7 +8915,15 @@
     Mapped(StringTableSlice { byte_start_lo: 47, byte_start_hi: 9, byte_len: 1 }),
     Mapped(StringTableSlice { byte_start_lo: 48, byte_start_hi: 9, byte_len: 1 }),
     Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 9, byte_len: 1 }),
+    DisallowedIdna2008,
     Valid,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
+    Valid,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
     Disallowed,
@@ -10101,13 +8946,15 @@
     Valid,
     Disallowed,
     Valid,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
     Valid,
     Disallowed,
+    DisallowedIdna2008,
     Valid,
     Disallowed,
     Mapped(StringTableSlice { byte_start_lo: 211, byte_start_hi: 42, byte_len: 4 }),
@@ -10148,11 +8995,11 @@
     Disallowed,
     Valid,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
     Mapped(StringTableSlice { byte_start_lo: 159, byte_start_hi: 38, byte_len: 2 }),
     Mapped(StringTableSlice { byte_start_lo: 161, byte_start_hi: 38, byte_len: 2 }),
@@ -10328,19 +9175,19 @@
     Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 38, byte_len: 2 }),
     Mapped(StringTableSlice { byte_start_lo: 197, byte_start_hi: 38, byte_len: 2 }),
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 97, byte_start_hi: 43, byte_len: 2 }),
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 99, byte_start_hi: 43, byte_len: 2 }),
@@ -10352,7 +9199,7 @@
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 111, byte_start_hi: 43, byte_len: 2 }),
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 113, byte_start_hi: 43, byte_len: 2 }),
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 115, byte_start_hi: 43, byte_len: 2 }),
-    Valid,
+    DisallowedIdna2008,
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 81, byte_start_hi: 10, byte_len: 3 }),
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 84, byte_start_hi: 10, byte_len: 3 }),
     DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 87, byte_start_hi: 10, byte_len: 3 }),
@@ -10384,7 +9231,7 @@
     Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
     Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 23, byte_len: 2 }),
     Mapped(StringTableSlice { byte_start_lo: 124, byte_start_hi: 43, byte_len: 2 }),
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
     Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
     Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
@@ -10417,15 +9264,15 @@
     Mapped(StringTableSlice { byte_start_lo: 119, byte_start_hi: 0, byte_len: 2 }),
     Mapped(StringTableSlice { byte_start_lo: 130, byte_start_hi: 43, byte_len: 3 }),
     Mapped(StringTableSlice { byte_start_lo: 133, byte_start_hi: 43, byte_len: 2 }),
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 135, byte_start_hi: 43, byte_len: 2 }),
     Mapped(StringTableSlice { byte_start_lo: 137, byte_start_hi: 43, byte_len: 2 }),
     Mapped(StringTableSlice { byte_start_lo: 139, byte_start_hi: 43, byte_len: 2 }),
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 141, byte_start_hi: 43, byte_len: 2 }),
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Mapped(StringTableSlice { byte_start_lo: 143, byte_start_hi: 43, byte_len: 6 }),
     Mapped(StringTableSlice { byte_start_lo: 149, byte_start_hi: 43, byte_len: 6 }),
     Mapped(StringTableSlice { byte_start_lo: 112, byte_start_hi: 18, byte_len: 3 }),
@@ -10488,57 +9335,57 @@
     Mapped(StringTableSlice { byte_start_lo: 73, byte_start_hi: 44, byte_len: 3 }),
     Mapped(StringTableSlice { byte_start_lo: 76, byte_start_hi: 44, byte_len: 3 }),
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
-    Valid,
+    DisallowedIdna2008,
     Disallowed,
     Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 9, byte_len: 1 }),
     Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 0, byte_len: 1 }),
diff --git a/tests/punycode.rs b/tests/punycode.rs
index 357a621..c0123c6 100644
--- a/tests/punycode.rs
+++ b/tests/punycode.rs
@@ -19,10 +19,10 @@
             let result = result.into_iter().collect::<String>();
             assert!(
                 result == decoded,
-                format!(
-                    "Incorrect decoding of \"{}\":\n   \"{}\"\n!= \"{}\"\n",
-                    encoded, result, decoded
-                )
+                "Incorrect decoding of \"{}\":\n   \"{}\"\n!= \"{}\"\n",
+                encoded,
+                result,
+                decoded
             )
         }
     }
@@ -31,10 +31,10 @@
         None => panic!("Encoding {} failed.", decoded),
         Some(result) => assert!(
             result == encoded,
-            format!(
-                "Incorrect encoding of \"{}\":\n   \"{}\"\n!= \"{}\"\n",
-                decoded, result, encoded
-            )
+            "Incorrect encoding of \"{}\":\n   \"{}\"\n!= \"{}\"\n",
+            decoded,
+            result,
+            encoded
         ),
     }
 }
diff --git a/tests/unit.rs b/tests/unit.rs
index a9aa375..84a9d54 100644
--- a/tests/unit.rs
+++ b/tests/unit.rs
@@ -114,3 +114,20 @@
     // Bidi chars may be punycode-encoded
     assert!(config.to_ascii("xn--0ca24w").is_err());
 }
+
+#[test]
+fn emoji_domains() {
+    // HOT BEVERAGE is allowed here...
+    let config = idna::Config::default()
+        .verify_dns_length(true)
+        .use_std3_ascii_rules(true);
+    assert_eq!(config.to_ascii("☕.com").unwrap(), "xn--53h.com");
+
+    // ... but not here
+    let config = idna::Config::default()
+        .verify_dns_length(true)
+        .use_std3_ascii_rules(true)
+        .use_idna_2008_rules(true);
+    let error = format!("{:?}", config.to_ascii("☕.com").unwrap_err());
+    assert!(error.contains("disallowed_in_idna_2008"));
+}