From 245aba3edd8fbda320eb19094ff7ebdbc6efef99 Mon Sep 17 00:00:00 2001 From: Dirkjan Ochtman Date: Tue, 16 Feb 2021 12:50:33 +0100 Subject: [PATCH] idna: implement support for reporting errors on invalid IDNA2008 characters --- idna/src/make_uts46_mapping_table.py | 8 +- idna/src/uts46.rs | 22 +- idna/src/uts46_mapping_table.rs | 3832 +++++++++++++++----------- idna/tests/unit.rs | 17 + 4 files changed, 2327 insertions(+), 1552 deletions(-) diff --git a/idna/src/make_uts46_mapping_table.py b/idna/src/make_uts46_mapping_table.py index 33ad01b..b072118 100644 --- a/idna/src/make_uts46_mapping_table.py +++ b/idna/src/make_uts46_mapping_table.py @@ -78,6 +78,12 @@ for line in txt: 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 @@ def mergeable_key(r): # 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) diff --git a/idna/src/uts46.rs b/idna/src/uts46.rs index 5501a65..d5478d7 100644 --- a/idna/src/uts46.rs +++ b/idna/src/uts46.rs @@ -48,6 +48,7 @@ enum Mapping { Disallowed, DisallowedStd3Valid, DisallowedStd3Mapped(StringTableSlice), + DisallowedIdna2008, } struct Range { @@ -140,6 +141,12 @@ impl<'a> Iterator for Mapper<'a> { 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 +317,7 @@ fn check_validity(label: &str, config: Config, errors: &mut Errors) { // 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 +517,7 @@ pub struct Config { 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 +532,7 @@ impl Default for Config { // Only use for to_ascii, not to_unicode verify_dns_length: false, + use_idna_2008_rules: false, } } } @@ -553,6 +562,12 @@ impl Config { 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 { let mut result = String::new(); @@ -599,6 +614,7 @@ pub struct Errors { disallowed_character: bool, too_long_for_dns: bool, too_short_for_dns: bool, + disallowed_in_idna_2008: bool, } impl Errors { @@ -615,6 +631,7 @@ impl Errors { disallowed_character, too_long_for_dns, too_short_for_dns, + disallowed_in_idna_2008, } = *self; punycode || check_hyphens @@ -627,6 +644,7 @@ impl Errors { || disallowed_character || too_long_for_dns || too_short_for_dns + || disallowed_in_idna_2008 } } @@ -644,6 +662,7 @@ impl fmt::Debug for Errors { disallowed_character, too_long_for_dns, too_short_for_dns, + disallowed_in_idna_2008, } = *self; let fields = [ @@ -661,6 +680,7 @@ impl fmt::Debug for Errors { ("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/idna/src/uts46_mapping_table.rs b/idna/src/uts46_mapping_table.rs index 3d1d0c1..1548686 100644 --- a/idna/src/uts46_mapping_table.rs +++ b/idna/src/uts46_mapping_table.rs @@ -25,10 +25,10 @@ static TABLE: &[Range] = &[ 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{b2}', to: '\u{df}', }, + Range { from: '\u{e0}', to: '\u{f6}', }, + Range { from: '\u{f7}', to: '\u{f7}', }, + Range { from: '\u{f8}', to: '\u{ff}', }, Range { from: '\u{100}', to: '\u{131}', }, Range { from: '\u{132}', to: '\u{133}', }, Range { from: '\u{134}', to: '\u{136}', }, @@ -60,11 +60,17 @@ static TABLE: &[Range] = &[ 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{2b9}', to: '\u{2c1}', }, + Range { from: '\u{2c2}', to: '\u{2c5}', }, + Range { from: '\u{2c6}', to: '\u{2d1}', }, + Range { from: '\u{2d2}', 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{2e5}', to: '\u{2eb}', }, + Range { from: '\u{2ec}', to: '\u{2ee}', }, + Range { from: '\u{2ef}', to: '\u{2ff}', }, + Range { from: '\u{300}', to: '\u{33f}', }, Range { from: '\u{340}', to: '\u{345}', }, Range { from: '\u{346}', to: '\u{34e}', }, Range { from: '\u{34f}', to: '\u{34f}', }, @@ -83,39 +89,62 @@ static TABLE: &[Range] = &[ 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{460}', to: '\u{482}', }, + Range { from: '\u{483}', to: '\u{487}', }, + Range { from: '\u{488}', 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{559}', to: '\u{559}', }, + Range { from: '\u{55a}', to: '\u{55f}', }, + Range { from: '\u{560}', to: '\u{586}', }, + Range { from: '\u{587}', to: '\u{588}', }, + Range { from: '\u{589}', 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{591}', to: '\u{5bd}', }, + Range { from: '\u{5be}', to: '\u{5c0}', }, + Range { from: '\u{5c1}', to: '\u{5c2}', }, + Range { from: '\u{5c3}', to: '\u{5c3}', }, + Range { from: '\u{5c4}', to: '\u{5c5}', }, + Range { from: '\u{5c6}', 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{606}', to: '\u{60f}', }, + Range { from: '\u{610}', to: '\u{61a}', }, + Range { from: '\u{61b}', to: '\u{61b}', }, Range { from: '\u{61c}', to: '\u{61d}', }, - Range { from: '\u{61e}', to: '\u{674}', }, + Range { from: '\u{61e}', to: '\u{61f}', }, + Range { from: '\u{620}', to: '\u{63f}', }, + Range { from: '\u{640}', to: '\u{640}', }, + Range { from: '\u{641}', to: '\u{669}', }, + Range { from: '\u{66a}', to: '\u{66d}', }, + Range { from: '\u{66e}', 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{679}', to: '\u{6d3}', }, + Range { from: '\u{6d4}', to: '\u{6d4}', }, + Range { from: '\u{6d5}', to: '\u{6dc}', }, + Range { from: '\u{6dd}', to: '\u{6de}', }, + Range { from: '\u{6df}', to: '\u{6e8}', }, + Range { from: '\u{6e9}', to: '\u{6e9}', }, + Range { from: '\u{6ea}', to: '\u{6ff}', }, + Range { from: '\u{700}', 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{7c0}', to: '\u{7f5}', }, + Range { from: '\u{7f6}', to: '\u{7fa}', }, Range { from: '\u{7fb}', to: '\u{7fc}', }, - Range { from: '\u{7fd}', to: '\u{82d}', }, + Range { from: '\u{7fd}', to: '\u{7fd}', }, + Range { from: '\u{7fe}', to: '\u{7ff}', }, + Range { from: '\u{800}', to: '\u{82d}', }, Range { from: '\u{82e}', to: '\u{82f}', }, Range { from: '\u{830}', to: '\u{83e}', }, Range { from: '\u{83f}', to: '\u{83f}', }, @@ -132,7 +161,11 @@ static TABLE: &[Range] = &[ 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{960}', to: '\u{963}', }, + Range { from: '\u{964}', to: '\u{965}', }, + Range { from: '\u{966}', to: '\u{96f}', }, + Range { from: '\u{970}', to: '\u{970}', }, + Range { from: '\u{971}', to: '\u{983}', }, Range { from: '\u{984}', to: '\u{984}', }, Range { from: '\u{985}', to: '\u{98c}', }, Range { from: '\u{98d}', to: '\u{98e}', }, @@ -156,7 +189,9 @@ static TABLE: &[Range] = &[ 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{9e6}', to: '\u{9f1}', }, + Range { from: '\u{9f2}', to: '\u{9fb}', }, + Range { from: '\u{9fc}', to: '\u{9fe}', }, Range { from: '\u{9ff}', to: '\u{a00}', }, Range { from: '\u{a01}', to: '\u{a03}', }, Range { from: '\u{a04}', to: '\u{a04}', }, @@ -181,7 +216,8 @@ static TABLE: &[Range] = &[ 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{a66}', to: '\u{a75}', }, + Range { from: '\u{a76}', to: '\u{a76}', }, Range { from: '\u{a77}', to: '\u{a80}', }, Range { from: '\u{a81}', to: '\u{a83}', }, Range { from: '\u{a84}', to: '\u{a84}', }, @@ -207,7 +243,8 @@ static TABLE: &[Range] = &[ 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{ae6}', to: '\u{aef}', }, + Range { from: '\u{af0}', to: '\u{af1}', }, Range { from: '\u{af2}', to: '\u{af8}', }, Range { from: '\u{af9}', to: '\u{aff}', }, Range { from: '\u{b00}', to: '\u{b00}', }, @@ -236,7 +273,9 @@ static TABLE: &[Range] = &[ 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{b66}', to: '\u{b6f}', }, + Range { from: '\u{b70}', to: '\u{b71}', }, + Range { from: '\u{b72}', to: '\u{b77}', }, Range { from: '\u{b78}', to: '\u{b81}', }, Range { from: '\u{b82}', to: '\u{b83}', }, Range { from: '\u{b84}', to: '\u{b84}', }, @@ -266,7 +305,8 @@ static TABLE: &[Range] = &[ 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{be6}', to: '\u{bef}', }, + Range { from: '\u{bf0}', to: '\u{bfa}', }, Range { from: '\u{bfb}', to: '\u{bff}', }, Range { from: '\u{c00}', to: '\u{c0c}', }, Range { from: '\u{c0d}', to: '\u{c0d}', }, @@ -290,7 +330,10 @@ static TABLE: &[Range] = &[ 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{c77}', to: '\u{c7f}', }, + Range { from: '\u{c80}', to: '\u{c83}', }, + Range { from: '\u{c84}', to: '\u{c84}', }, + Range { from: '\u{c85}', to: '\u{c8c}', }, Range { from: '\u{c8d}', to: '\u{c8d}', }, Range { from: '\u{c8e}', to: '\u{c90}', }, Range { from: '\u{c91}', to: '\u{c91}', }, @@ -323,11 +366,16 @@ static TABLE: &[Range] = &[ 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{d4a}', to: '\u{d4e}', }, + Range { from: '\u{d4f}', to: '\u{d4f}', }, Range { from: '\u{d50}', to: '\u{d53}', }, - Range { from: '\u{d54}', to: '\u{d63}', }, + Range { from: '\u{d54}', to: '\u{d57}', }, + Range { from: '\u{d58}', to: '\u{d5e}', }, + Range { from: '\u{d5f}', to: '\u{d63}', }, Range { from: '\u{d64}', to: '\u{d65}', }, - Range { from: '\u{d66}', to: '\u{d7f}', }, + Range { from: '\u{d66}', to: '\u{d6f}', }, + Range { from: '\u{d70}', to: '\u{d79}', }, + Range { from: '\u{d7a}', to: '\u{d7f}', }, Range { from: '\u{d80}', to: '\u{d80}', }, Range { from: '\u{d81}', to: '\u{d83}', }, Range { from: '\u{d84}', to: '\u{d84}', }, @@ -348,13 +396,18 @@ static TABLE: &[Range] = &[ 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{df2}', to: '\u{df3}', }, + Range { from: '\u{df4}', 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{e3f}', to: '\u{e3f}', }, + Range { from: '\u{e40}', to: '\u{e4e}', }, + Range { from: '\u{e4f}', to: '\u{e4f}', }, + Range { from: '\u{e50}', to: '\u{e59}', }, + Range { from: '\u{e5a}', to: '\u{e5b}', }, Range { from: '\u{e5c}', to: '\u{e80}', }, Range { from: '\u{e81}', to: '\u{e82}', }, Range { from: '\u{e83}', to: '\u{e85}', }, @@ -375,9 +428,17 @@ static TABLE: &[Range] = &[ 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{f00}', to: '\u{f00}', }, + Range { from: '\u{f01}', to: '\u{f0a}', }, + Range { from: '\u{f0b}', to: '\u{f0c}', }, + Range { from: '\u{f0d}', to: '\u{f17}', }, + Range { from: '\u{f18}', to: '\u{f19}', }, + Range { from: '\u{f1a}', to: '\u{f1f}', }, + Range { from: '\u{f20}', to: '\u{f29}', }, + Range { from: '\u{f2a}', to: '\u{f34}', }, + Range { from: '\u{f35}', to: '\u{f39}', }, + Range { from: '\u{f3a}', to: '\u{f3d}', }, + Range { from: '\u{f3e}', to: '\u{f42}', }, Range { from: '\u{f43}', to: '\u{f43}', }, Range { from: '\u{f44}', to: '\u{f47}', }, Range { from: '\u{f48}', to: '\u{f48}', }, @@ -397,7 +458,9 @@ static TABLE: &[Range] = &[ 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{f82}', to: '\u{f84}', }, + Range { from: '\u{f85}', to: '\u{f85}', }, + Range { from: '\u{f86}', to: '\u{f92}', }, Range { from: '\u{f93}', to: '\u{f93}', }, Range { from: '\u{f94}', to: '\u{f97}', }, Range { from: '\u{f98}', to: '\u{f98}', }, @@ -413,21 +476,28 @@ static TABLE: &[Range] = &[ 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{fbe}', to: '\u{fc5}', }, + Range { from: '\u{fc6}', to: '\u{fc6}', }, + Range { from: '\u{fc7}', 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{1000}', to: '\u{1049}', }, + Range { from: '\u{104a}', to: '\u{104f}', }, + Range { from: '\u{1050}', to: '\u{109d}', }, + Range { from: '\u{109e}', 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{10d0}', to: '\u{10fa}', }, + Range { from: '\u{10fb}', to: '\u{10fc}', }, + Range { from: '\u{10fd}', to: '\u{10ff}', }, + Range { from: '\u{1100}', to: '\u{115e}', }, Range { from: '\u{115f}', to: '\u{1160}', }, - Range { from: '\u{1161}', to: '\u{1248}', }, + Range { from: '\u{1161}', to: '\u{11ff}', }, + Range { from: '\u{1200}', to: '\u{1248}', }, Range { from: '\u{1249}', to: '\u{1249}', }, Range { from: '\u{124a}', to: '\u{124d}', }, Range { from: '\u{124e}', to: '\u{124f}', }, @@ -455,25 +525,34 @@ static TABLE: &[Range] = &[ 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{135d}', to: '\u{135f}', }, + Range { from: '\u{1360}', to: '\u{137c}', }, Range { from: '\u{137d}', to: '\u{137f}', }, - Range { from: '\u{1380}', to: '\u{1399}', }, + Range { from: '\u{1380}', to: '\u{138f}', }, + Range { from: '\u{1390}', 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{1400}', to: '\u{1400}', }, + Range { from: '\u{1401}', to: '\u{166c}', }, + Range { from: '\u{166d}', to: '\u{166e}', }, + Range { from: '\u{166f}', to: '\u{167f}', }, Range { from: '\u{1680}', to: '\u{1680}', }, - Range { from: '\u{1681}', to: '\u{169c}', }, + Range { from: '\u{1681}', to: '\u{169a}', }, + Range { from: '\u{169b}', to: '\u{169c}', }, Range { from: '\u{169d}', to: '\u{169f}', }, - Range { from: '\u{16a0}', to: '\u{16f8}', }, + Range { from: '\u{16a0}', to: '\u{16ea}', }, + Range { from: '\u{16eb}', to: '\u{16f0}', }, + Range { from: '\u{16f1}', 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{1720}', to: '\u{1734}', }, + Range { from: '\u{1735}', to: '\u{1736}', }, Range { from: '\u{1737}', to: '\u{173f}', }, Range { from: '\u{1740}', to: '\u{1753}', }, Range { from: '\u{1754}', to: '\u{175f}', }, @@ -485,7 +564,11 @@ static TABLE: &[Range] = &[ 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{17b6}', to: '\u{17d3}', }, + Range { from: '\u{17d4}', to: '\u{17d6}', }, + Range { from: '\u{17d7}', to: '\u{17d7}', }, + Range { from: '\u{17d8}', to: '\u{17db}', }, + Range { from: '\u{17dc}', to: '\u{17dd}', }, Range { from: '\u{17de}', to: '\u{17df}', }, Range { from: '\u{17e0}', to: '\u{17e9}', }, Range { from: '\u{17ea}', to: '\u{17ef}', }, @@ -512,7 +595,8 @@ static TABLE: &[Range] = &[ 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{1944}', to: '\u{1945}', }, + Range { from: '\u{1946}', to: '\u{196d}', }, Range { from: '\u{196e}', to: '\u{196f}', }, Range { from: '\u{1970}', to: '\u{1974}', }, Range { from: '\u{1975}', to: '\u{197f}', }, @@ -520,11 +604,14 @@ static TABLE: &[Range] = &[ 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{19d0}', to: '\u{19d9}', }, + Range { from: '\u{19da}', to: '\u{19da}', }, Range { from: '\u{19db}', to: '\u{19dd}', }, - Range { from: '\u{19de}', to: '\u{1a1b}', }, + Range { from: '\u{19de}', to: '\u{19ff}', }, + Range { from: '\u{1a00}', to: '\u{1a1b}', }, Range { from: '\u{1a1c}', to: '\u{1a1d}', }, - Range { from: '\u{1a1e}', to: '\u{1a5e}', }, + Range { from: '\u{1a1e}', to: '\u{1a1f}', }, + Range { from: '\u{1a20}', to: '\u{1a5e}', }, Range { from: '\u{1a5f}', to: '\u{1a5f}', }, Range { from: '\u{1a60}', to: '\u{1a7c}', }, Range { from: '\u{1a7d}', to: '\u{1a7e}', }, @@ -532,21 +619,31 @@ static TABLE: &[Range] = &[ 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{1aa0}', to: '\u{1aa6}', }, + Range { from: '\u{1aa7}', to: '\u{1aa7}', }, + Range { from: '\u{1aa8}', to: '\u{1aad}', }, Range { from: '\u{1aae}', to: '\u{1aaf}', }, - Range { from: '\u{1ab0}', to: '\u{1ac0}', }, + Range { from: '\u{1ab0}', to: '\u{1abd}', }, + Range { from: '\u{1abe}', to: '\u{1abe}', }, + Range { from: '\u{1abf}', 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{1b50}', to: '\u{1b59}', }, + Range { from: '\u{1b5a}', to: '\u{1b6a}', }, + Range { from: '\u{1b6b}', to: '\u{1b73}', }, + Range { from: '\u{1b74}', 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{1bfc}', to: '\u{1bff}', }, + Range { from: '\u{1c00}', to: '\u{1c37}', }, Range { from: '\u{1c38}', to: '\u{1c3a}', }, - Range { from: '\u{1c3b}', to: '\u{1c49}', }, + Range { from: '\u{1c3b}', to: '\u{1c3f}', }, + Range { from: '\u{1c40}', to: '\u{1c49}', }, Range { from: '\u{1c4a}', to: '\u{1c4c}', }, - Range { from: '\u{1c4d}', to: '\u{1c7f}', }, + Range { from: '\u{1c4d}', to: '\u{1c7d}', }, + Range { from: '\u{1c7e}', to: '\u{1c7f}', }, Range { from: '\u{1c80}', to: '\u{1c83}', }, Range { from: '\u{1c84}', to: '\u{1c85}', }, Range { from: '\u{1c86}', to: '\u{1c88}', }, @@ -556,7 +653,9 @@ static TABLE: &[Range] = &[ 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{1cd0}', to: '\u{1cd2}', }, + Range { from: '\u{1cd3}', to: '\u{1cd3}', }, + Range { from: '\u{1cd4}', to: '\u{1cfa}', }, Range { from: '\u{1cfb}', to: '\u{1cff}', }, Range { from: '\u{1d00}', to: '\u{1d2b}', }, Range { from: '\u{1d2c}', to: '\u{1d6a}', }, @@ -658,11 +757,11 @@ static TABLE: &[Range] = &[ 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{214a}', to: '\u{214d}', }, + Range { from: '\u{214e}', 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{2183}', to: '\u{2184}', }, + Range { from: '\u{2185}', to: '\u{2188}', }, Range { from: '\u{2189}', to: '\u{2189}', }, Range { from: '\u{218a}', to: '\u{218b}', }, Range { from: '\u{218c}', to: '\u{218f}', }, @@ -701,12 +800,14 @@ static TABLE: &[Range] = &[ 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{2ce3}', to: '\u{2ce4}', }, + Range { from: '\u{2ce5}', 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{2cf9}', to: '\u{2cff}', }, + Range { from: '\u{2d00}', to: '\u{2d25}', }, Range { from: '\u{2d26}', to: '\u{2d27}', }, Range { from: '\u{2d28}', to: '\u{2d2c}', }, Range { from: '\u{2d2d}', to: '\u{2d2d}', }, @@ -733,7 +834,10 @@ static TABLE: &[Range] = &[ 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{2de0}', to: '\u{2dff}', }, + Range { from: '\u{2e00}', to: '\u{2e2e}', }, + Range { from: '\u{2e2f}', to: '\u{2e2f}', }, + Range { from: '\u{2e30}', to: '\u{2e52}', }, Range { from: '\u{2e53}', to: '\u{2e7f}', }, Range { from: '\u{2e80}', to: '\u{2e99}', }, Range { from: '\u{2e9a}', to: '\u{2e9a}', }, @@ -745,49 +849,68 @@ static TABLE: &[Range] = &[ 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{3003}', to: '\u{3004}', }, + Range { from: '\u{3005}', to: '\u{3007}', }, + Range { from: '\u{3008}', to: '\u{3029}', }, + Range { from: '\u{302a}', to: '\u{302d}', }, + Range { from: '\u{302e}', to: '\u{3035}', }, + Range { from: '\u{3036}', to: '\u{303c}', }, + Range { from: '\u{303d}', 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{309f}', to: '\u{30a0}', }, + Range { from: '\u{30a1}', 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{31a0}', to: '\u{31bf}', }, + Range { from: '\u{31c0}', 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{3400}', to: '\u{4dbf}', }, + Range { from: '\u{4dc0}', to: '\u{4dff}', }, + Range { from: '\u{4e00}', 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{a4d0}', to: '\u{a4fd}', }, + Range { from: '\u{a4fe}', to: '\u{a4ff}', }, + Range { from: '\u{a500}', to: '\u{a60c}', }, + Range { from: '\u{a60d}', to: '\u{a60f}', }, + Range { from: '\u{a610}', 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{a66d}', to: '\u{a66f}', }, + Range { from: '\u{a670}', to: '\u{a673}', }, + Range { from: '\u{a674}', to: '\u{a67d}', }, + Range { from: '\u{a67e}', to: '\u{a69d}', }, + Range { from: '\u{a69e}', to: '\u{a6e5}', }, + Range { from: '\u{a6e6}', to: '\u{a6ef}', }, + Range { from: '\u{a6f0}', to: '\u{a6f1}', }, + Range { from: '\u{a6f2}', to: '\u{a6f7}', }, Range { from: '\u{a6f8}', to: '\u{a6ff}', }, - Range { from: '\u{a700}', to: '\u{a721}', }, + Range { from: '\u{a700}', to: '\u{a716}', }, + Range { from: '\u{a717}', to: '\u{a71f}', }, + Range { from: '\u{a720}', 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{a787}', to: '\u{a788}', }, + Range { from: '\u{a789}', to: '\u{a78a}', }, Range { from: '\u{a78b}', to: '\u{a78d}', }, Range { from: '\u{a78e}', to: '\u{a78f}', }, Range { from: '\u{a790}', to: '\u{a792}', }, @@ -799,25 +922,36 @@ static TABLE: &[Range] = &[ 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{a7fa}', to: '\u{a827}', }, + Range { from: '\u{a828}', to: '\u{a82b}', }, + Range { from: '\u{a82c}', 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{a840}', to: '\u{a873}', }, + Range { from: '\u{a874}', 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{a8ce}', to: '\u{a8cf}', }, + Range { from: '\u{a8d0}', to: '\u{a8d9}', }, Range { from: '\u{a8da}', to: '\u{a8df}', }, - Range { from: '\u{a8e0}', to: '\u{a953}', }, + Range { from: '\u{a8e0}', to: '\u{a8f7}', }, + Range { from: '\u{a8f8}', to: '\u{a8fa}', }, + Range { from: '\u{a8fb}', to: '\u{a8fc}', }, + Range { from: '\u{a8fd}', to: '\u{a92d}', }, + Range { from: '\u{a92e}', to: '\u{a92f}', }, + Range { from: '\u{a930}', 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{a980}', to: '\u{a9c0}', }, + Range { from: '\u{a9c1}', 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{a9de}', to: '\u{a9df}', }, + Range { from: '\u{a9e0}', to: '\u{a9fe}', }, Range { from: '\u{a9ff}', to: '\u{a9ff}', }, Range { from: '\u{aa00}', to: '\u{aa36}', }, Range { from: '\u{aa37}', to: '\u{aa3f}', }, @@ -825,9 +959,16 @@ static TABLE: &[Range] = &[ 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{aa5c}', to: '\u{aa5f}', }, + Range { from: '\u{aa60}', to: '\u{aa76}', }, + Range { from: '\u{aa77}', to: '\u{aa79}', }, + Range { from: '\u{aa7a}', to: '\u{aac2}', }, Range { from: '\u{aac3}', to: '\u{aada}', }, - Range { from: '\u{aadb}', to: '\u{aaf6}', }, + Range { from: '\u{aadb}', to: '\u{aadd}', }, + Range { from: '\u{aade}', to: '\u{aadf}', }, + Range { from: '\u{aae0}', to: '\u{aaef}', }, + Range { from: '\u{aaf0}', to: '\u{aaf1}', }, + Range { from: '\u{aaf2}', to: '\u{aaf6}', }, Range { from: '\u{aaf7}', to: '\u{ab00}', }, Range { from: '\u{ab01}', to: '\u{ab06}', }, Range { from: '\u{ab07}', to: '\u{ab08}', }, @@ -839,14 +980,16 @@ static TABLE: &[Range] = &[ 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{ab30}', to: '\u{ab5a}', }, + Range { from: '\u{ab5b}', 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{abc0}', to: '\u{abea}', }, + Range { from: '\u{abeb}', to: '\u{abeb}', }, + Range { from: '\u{abec}', to: '\u{abed}', }, Range { from: '\u{abee}', to: '\u{abef}', }, Range { from: '\u{abf0}', to: '\u{abf9}', }, Range { from: '\u{abfa}', to: '\u{abff}', }, @@ -1060,25 +1203,32 @@ static TABLE: &[Range] = &[ 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{101d0}', to: '\u{101fc}', }, + Range { from: '\u{101fd}', 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{102e0}', to: '\u{102e0}', }, + Range { from: '\u{102e1}', to: '\u{102fb}', }, Range { from: '\u{102fc}', to: '\u{102ff}', }, - Range { from: '\u{10300}', to: '\u{10323}', }, + Range { from: '\u{10300}', to: '\u{1031f}', }, + Range { from: '\u{10320}', to: '\u{10323}', }, Range { from: '\u{10324}', to: '\u{1032c}', }, - Range { from: '\u{1032d}', to: '\u{1034a}', }, + Range { from: '\u{1032d}', to: '\u{10340}', }, + Range { from: '\u{10341}', to: '\u{10341}', }, + Range { from: '\u{10342}', to: '\u{10349}', }, + Range { from: '\u{1034a}', 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{1039e}', to: '\u{1039f}', }, + Range { from: '\u{103a0}', to: '\u{103c3}', }, Range { from: '\u{103c4}', to: '\u{103c7}', }, - Range { from: '\u{103c8}', to: '\u{103d5}', }, + Range { from: '\u{103c8}', to: '\u{103cf}', }, + Range { from: '\u{103d0}', to: '\u{103d5}', }, Range { from: '\u{103d6}', to: '\u{103ff}', }, Range { from: '\u{10400}', to: '\u{10427}', }, Range { from: '\u{10428}', to: '\u{1049d}', }, @@ -1112,7 +1262,10 @@ static TABLE: &[Range] = &[ 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{10857}', to: '\u{1085f}', }, + Range { from: '\u{10860}', to: '\u{10876}', }, + Range { from: '\u{10877}', to: '\u{1087f}', }, + Range { from: '\u{10880}', to: '\u{1089e}', }, Range { from: '\u{1089f}', to: '\u{108a6}', }, Range { from: '\u{108a7}', to: '\u{108af}', }, Range { from: '\u{108b0}', to: '\u{108df}', }, @@ -1120,17 +1273,23 @@ static TABLE: &[Range] = &[ 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{108fb}', to: '\u{108ff}', }, + Range { from: '\u{10900}', to: '\u{10915}', }, + Range { from: '\u{10916}', to: '\u{1091b}', }, Range { from: '\u{1091c}', to: '\u{1091e}', }, - Range { from: '\u{1091f}', to: '\u{10939}', }, + Range { from: '\u{1091f}', to: '\u{1091f}', }, + Range { from: '\u{10920}', 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{109bc}', to: '\u{109bd}', }, + Range { from: '\u{109be}', to: '\u{109bf}', }, + Range { from: '\u{109c0}', to: '\u{109cf}', }, Range { from: '\u{109d0}', to: '\u{109d1}', }, - Range { from: '\u{109d2}', to: '\u{10a03}', }, + Range { from: '\u{109d2}', to: '\u{109ff}', }, + Range { from: '\u{10a00}', to: '\u{10a03}', }, Range { from: '\u{10a04}', to: '\u{10a04}', }, Range { from: '\u{10a05}', to: '\u{10a06}', }, Range { from: '\u{10a07}', to: '\u{10a0b}', }, @@ -1142,23 +1301,32 @@ static TABLE: &[Range] = &[ 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{10a3f}', to: '\u{10a3f}', }, + Range { from: '\u{10a40}', 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{10a60}', to: '\u{10a7c}', }, + Range { from: '\u{10a7d}', to: '\u{10a7f}', }, + Range { from: '\u{10a80}', to: '\u{10a9c}', }, + Range { from: '\u{10a9d}', to: '\u{10a9f}', }, Range { from: '\u{10aa0}', to: '\u{10abf}', }, - Range { from: '\u{10ac0}', to: '\u{10ae6}', }, + Range { from: '\u{10ac0}', to: '\u{10ac7}', }, + Range { from: '\u{10ac8}', to: '\u{10ac8}', }, + Range { from: '\u{10ac9}', 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{10b39}', to: '\u{10b3f}', }, + Range { from: '\u{10b40}', to: '\u{10b55}', }, Range { from: '\u{10b56}', to: '\u{10b57}', }, - Range { from: '\u{10b58}', to: '\u{10b72}', }, + Range { from: '\u{10b58}', to: '\u{10b5f}', }, + Range { from: '\u{10b60}', to: '\u{10b72}', }, Range { from: '\u{10b73}', to: '\u{10b77}', }, - Range { from: '\u{10b78}', to: '\u{10b91}', }, + Range { from: '\u{10b78}', to: '\u{10b7f}', }, + Range { from: '\u{10b80}', to: '\u{10b91}', }, Range { from: '\u{10b92}', to: '\u{10b98}', }, Range { from: '\u{10b99}', to: '\u{10b9c}', }, Range { from: '\u{10b9d}', to: '\u{10ba8}', }, @@ -1170,7 +1338,8 @@ static TABLE: &[Range] = &[ 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{10cfa}', to: '\u{10cff}', }, + Range { from: '\u{10d00}', to: '\u{10d27}', }, Range { from: '\u{10d28}', to: '\u{10d2f}', }, Range { from: '\u{10d30}', to: '\u{10d39}', }, Range { from: '\u{10d3a}', to: '\u{10e5f}', }, @@ -1178,23 +1347,31 @@ static TABLE: &[Range] = &[ 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{10eab}', to: '\u{10eac}', }, + Range { from: '\u{10ead}', 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{10f00}', to: '\u{10f1c}', }, + Range { from: '\u{10f1d}', to: '\u{10f26}', }, + Range { from: '\u{10f27}', to: '\u{10f27}', }, Range { from: '\u{10f28}', to: '\u{10f2f}', }, - Range { from: '\u{10f30}', to: '\u{10f59}', }, + Range { from: '\u{10f30}', to: '\u{10f50}', }, + Range { from: '\u{10f51}', to: '\u{10f59}', }, Range { from: '\u{10f5a}', to: '\u{10faf}', }, - Range { from: '\u{10fb0}', to: '\u{10fcb}', }, + Range { from: '\u{10fb0}', to: '\u{10fc4}', }, + Range { from: '\u{10fc5}', 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{11000}', to: '\u{11046}', }, + Range { from: '\u{11047}', to: '\u{1104d}', }, Range { from: '\u{1104e}', to: '\u{11051}', }, - Range { from: '\u{11052}', to: '\u{1106f}', }, + Range { from: '\u{11052}', to: '\u{11065}', }, + Range { from: '\u{11066}', to: '\u{1106f}', }, Range { from: '\u{11070}', to: '\u{1107e}', }, - Range { from: '\u{1107f}', to: '\u{110bc}', }, + Range { from: '\u{1107f}', to: '\u{110ba}', }, + Range { from: '\u{110bb}', to: '\u{110bc}', }, Range { from: '\u{110bd}', to: '\u{110bd}', }, Range { from: '\u{110be}', to: '\u{110c1}', }, Range { from: '\u{110c2}', to: '\u{110cf}', }, @@ -1204,17 +1381,29 @@ static TABLE: &[Range] = &[ 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{11136}', to: '\u{1113f}', }, + Range { from: '\u{11140}', to: '\u{11143}', }, + Range { from: '\u{11144}', to: '\u{11147}', }, Range { from: '\u{11148}', to: '\u{1114f}', }, - Range { from: '\u{11150}', to: '\u{11176}', }, + Range { from: '\u{11150}', to: '\u{11173}', }, + Range { from: '\u{11174}', to: '\u{11175}', }, + Range { from: '\u{11176}', to: '\u{11176}', }, Range { from: '\u{11177}', to: '\u{1117f}', }, - Range { from: '\u{11180}', to: '\u{111df}', }, + Range { from: '\u{11180}', to: '\u{111c4}', }, + Range { from: '\u{111c5}', to: '\u{111c8}', }, + Range { from: '\u{111c9}', to: '\u{111cc}', }, + Range { from: '\u{111cd}', to: '\u{111cd}', }, + Range { from: '\u{111ce}', to: '\u{111da}', }, + Range { from: '\u{111db}', to: '\u{111dc}', }, + Range { from: '\u{111dd}', 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{11213}', to: '\u{11237}', }, + Range { from: '\u{11238}', to: '\u{1123d}', }, + Range { from: '\u{1123e}', to: '\u{1123e}', }, Range { from: '\u{1123f}', to: '\u{1127f}', }, Range { from: '\u{11280}', to: '\u{11286}', }, Range { from: '\u{11287}', to: '\u{11289}', }, @@ -1222,7 +1411,8 @@ static TABLE: &[Range] = &[ 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{1129f}', to: '\u{112a8}', }, + Range { from: '\u{112a9}', to: '\u{112a9}', }, Range { from: '\u{112aa}', to: '\u{112af}', }, Range { from: '\u{112b0}', to: '\u{112ea}', }, Range { from: '\u{112eb}', to: '\u{112ef}', }, @@ -1258,19 +1448,27 @@ static TABLE: &[Range] = &[ 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{11400}', to: '\u{1144a}', }, + Range { from: '\u{1144b}', to: '\u{1144f}', }, + Range { from: '\u{11450}', to: '\u{11459}', }, + Range { from: '\u{1145a}', to: '\u{1145b}', }, + Range { from: '\u{1145c}', to: '\u{1145d}', }, + Range { from: '\u{1145e}', to: '\u{11461}', }, Range { from: '\u{11462}', to: '\u{1147f}', }, - Range { from: '\u{11480}', to: '\u{114c7}', }, + Range { from: '\u{11480}', to: '\u{114c5}', }, + Range { from: '\u{114c6}', 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{115b8}', to: '\u{115c0}', }, + Range { from: '\u{115c1}', to: '\u{115d7}', }, + Range { from: '\u{115d8}', to: '\u{115dd}', }, Range { from: '\u{115de}', to: '\u{115ff}', }, - Range { from: '\u{11600}', to: '\u{11644}', }, + Range { from: '\u{11600}', to: '\u{11640}', }, + Range { from: '\u{11641}', to: '\u{11643}', }, + Range { from: '\u{11644}', to: '\u{11644}', }, Range { from: '\u{11645}', to: '\u{1164f}', }, Range { from: '\u{11650}', to: '\u{11659}', }, Range { from: '\u{1165a}', to: '\u{1165f}', }, @@ -1284,12 +1482,15 @@ static TABLE: &[Range] = &[ 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{11730}', to: '\u{11739}', }, + Range { from: '\u{1173a}', to: '\u{1173f}', }, Range { from: '\u{11740}', to: '\u{117ff}', }, - Range { from: '\u{11800}', to: '\u{1183b}', }, + Range { from: '\u{11800}', to: '\u{1183a}', }, + Range { from: '\u{1183b}', 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{118c0}', to: '\u{118e9}', }, + Range { from: '\u{118ea}', to: '\u{118f2}', }, Range { from: '\u{118f3}', to: '\u{118fe}', }, Range { from: '\u{118ff}', to: '\u{11906}', }, Range { from: '\u{11907}', to: '\u{11908}', }, @@ -1303,7 +1504,8 @@ static TABLE: &[Range] = &[ 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{1193b}', to: '\u{11943}', }, + Range { from: '\u{11944}', to: '\u{11946}', }, Range { from: '\u{11947}', to: '\u{1194f}', }, Range { from: '\u{11950}', to: '\u{11959}', }, Range { from: '\u{1195a}', to: '\u{1199f}', }, @@ -1311,11 +1513,18 @@ static TABLE: &[Range] = &[ 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{119da}', to: '\u{119e1}', }, + Range { from: '\u{119e2}', to: '\u{119e2}', }, + Range { from: '\u{119e3}', to: '\u{119e4}', }, Range { from: '\u{119e5}', to: '\u{119ff}', }, - Range { from: '\u{11a00}', to: '\u{11a47}', }, + Range { from: '\u{11a00}', to: '\u{11a3e}', }, + Range { from: '\u{11a3f}', to: '\u{11a46}', }, + Range { from: '\u{11a47}', to: '\u{11a47}', }, Range { from: '\u{11a48}', to: '\u{11a4f}', }, - Range { from: '\u{11a50}', to: '\u{11aa2}', }, + Range { from: '\u{11a50}', to: '\u{11a99}', }, + Range { from: '\u{11a9a}', to: '\u{11a9c}', }, + Range { from: '\u{11a9d}', to: '\u{11a9d}', }, + Range { from: '\u{11a9e}', to: '\u{11aa2}', }, Range { from: '\u{11aa3}', to: '\u{11abf}', }, Range { from: '\u{11ac0}', to: '\u{11af8}', }, Range { from: '\u{11af9}', to: '\u{11bff}', }, @@ -1323,11 +1532,14 @@ static TABLE: &[Range] = &[ 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{11c38}', to: '\u{11c40}', }, + Range { from: '\u{11c41}', to: '\u{11c45}', }, Range { from: '\u{11c46}', to: '\u{11c4f}', }, - Range { from: '\u{11c50}', to: '\u{11c6c}', }, + Range { from: '\u{11c50}', to: '\u{11c59}', }, + Range { from: '\u{11c5a}', to: '\u{11c6c}', }, Range { from: '\u{11c6d}', to: '\u{11c6f}', }, - Range { from: '\u{11c70}', to: '\u{11c8f}', }, + Range { from: '\u{11c70}', to: '\u{11c71}', }, + Range { from: '\u{11c72}', to: '\u{11c8f}', }, Range { from: '\u{11c90}', to: '\u{11c91}', }, Range { from: '\u{11c92}', to: '\u{11ca7}', }, Range { from: '\u{11ca8}', to: '\u{11ca8}', }, @@ -1358,13 +1570,15 @@ static TABLE: &[Range] = &[ 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{11ee0}', to: '\u{11ef6}', }, + Range { from: '\u{11ef7}', 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{11fff}', to: '\u{11fff}', }, + Range { from: '\u{12000}', to: '\u{12399}', }, Range { from: '\u{1239a}', to: '\u{123ff}', }, Range { from: '\u{12400}', to: '\u{1246e}', }, Range { from: '\u{1246f}', to: '\u{1246f}', }, @@ -1386,9 +1600,13 @@ static TABLE: &[Range] = &[ 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{16af0}', to: '\u{16af4}', }, + Range { from: '\u{16af5}', to: '\u{16af5}', }, Range { from: '\u{16af6}', to: '\u{16aff}', }, - Range { from: '\u{16b00}', to: '\u{16b45}', }, + Range { from: '\u{16b00}', to: '\u{16b36}', }, + Range { from: '\u{16b37}', to: '\u{16b3f}', }, + Range { from: '\u{16b40}', to: '\u{16b43}', }, + Range { from: '\u{16b44}', to: '\u{16b45}', }, Range { from: '\u{16b46}', to: '\u{16b4f}', }, Range { from: '\u{16b50}', to: '\u{16b59}', }, Range { from: '\u{16b5a}', to: '\u{16b5a}', }, @@ -1399,7 +1617,8 @@ static TABLE: &[Range] = &[ 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{16e60}', to: '\u{16e7f}', }, + Range { from: '\u{16e80}', to: '\u{16e9a}', }, Range { from: '\u{16e9b}', to: '\u{16eff}', }, Range { from: '\u{16f00}', to: '\u{16f4a}', }, Range { from: '\u{16f4b}', to: '\u{16f4e}', }, @@ -1407,7 +1626,9 @@ static TABLE: &[Range] = &[ 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{16fe0}', to: '\u{16fe1}', }, + Range { from: '\u{16fe2}', to: '\u{16fe2}', }, + Range { from: '\u{16fe3}', to: '\u{16fe4}', }, Range { from: '\u{16fe5}', to: '\u{16fef}', }, Range { from: '\u{16ff0}', to: '\u{16ff1}', }, Range { from: '\u{16ff2}', to: '\u{16fff}', }, @@ -1433,7 +1654,9 @@ static TABLE: &[Range] = &[ 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{1bc9c}', to: '\u{1bc9c}', }, + Range { from: '\u{1bc9d}', to: '\u{1bc9e}', }, + Range { from: '\u{1bc9f}', to: '\u{1bc9f}', }, Range { from: '\u{1bca0}', to: '\u{1bca3}', }, Range { from: '\u{1bca4}', to: '\u{1cfff}', }, Range { from: '\u{1d000}', to: '\u{1d0f5}', }, @@ -1482,7 +1705,15 @@ static TABLE: &[Range] = &[ 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{1d800}', to: '\u{1d9ff}', }, + Range { from: '\u{1da00}', to: '\u{1da36}', }, + Range { from: '\u{1da37}', to: '\u{1da3a}', }, + Range { from: '\u{1da3b}', to: '\u{1da6c}', }, + Range { from: '\u{1da6d}', to: '\u{1da74}', }, + Range { from: '\u{1da75}', to: '\u{1da75}', }, + Range { from: '\u{1da76}', to: '\u{1da83}', }, + Range { from: '\u{1da84}', to: '\u{1da84}', }, + Range { from: '\u{1da85}', to: '\u{1da8b}', }, Range { from: '\u{1da8c}', to: '\u{1da9a}', }, Range { from: '\u{1da9b}', to: '\u{1da9f}', }, Range { from: '\u{1daa0}', to: '\u{1daa0}', }, @@ -1512,7 +1743,8 @@ static TABLE: &[Range] = &[ 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{1e8c7}', to: '\u{1e8cf}', }, + Range { from: '\u{1e8d0}', to: '\u{1e8d6}', }, Range { from: '\u{1e8d7}', to: '\u{1e8ff}', }, Range { from: '\u{1e900}', to: '\u{1e921}', }, Range { from: '\u{1e922}', to: '\u{1e94b}', }, @@ -1679,102 +1911,95 @@ static INDEX_TABLE: &[u16] = &[ 41, 32812, 45, - 32817, - 50, - 32858, - 91, - 32909, - 142, - 32913, - 146, - 32920, - 153, - 32996, - 229, - 33008, - 241, - 33023, - 256, - 33037, - 33038, - 33039, + 32859, + 32860, + 32861, + 94, + 32912, + 145, + 32916, + 149, + 32923, + 156, + 32999, + 232, + 33011, + 244, + 33026, + 259, 33040, 33041, 33042, - 275, - 33058, - 291, - 33076, - 33077, - 310, - 33141, - 374, - 33147, - 380, - 33162, - 395, - 33172, - 405, - 33179, - 412, + 33043, + 33044, + 33045, + 278, + 33061, + 294, + 33079, + 33080, + 313, + 33144, + 377, + 33150, + 383, + 33165, + 398, + 33175, + 33176, + 33177, + 33178, + 411, 33185, 418, - 33192, - 33193, - 33194, - 427, + 33191, + 424, + 33195, + 33196, + 429, 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, + 33214, + 33215, + 33216, + 449, + 33219, + 452, + 33260, + 33261, + 33262, + 495, + 33307, + 540, + 33359, + 592, + 33395, + 33396, + 629, + 33465, + 698, 33601, 33602, - 835, + 33603, + 33604, + 837, 33607, 33608, 33609, 33610, 33611, - 33612, - 33613, - 33614, + 844, 33615, 33616, 33617, - 33618, - 33619, + 850, 33620, 33621, 33622, - 855, + 33623, + 33624, 33625, 33626, 33627, @@ -1784,9 +2009,12 @@ static INDEX_TABLE: &[u16] = &[ 33631, 33632, 33633, - 866, - 33642, - 33643, + 33634, + 867, + 33639, + 33640, + 33641, + 874, 33644, 33645, 33646, @@ -1794,7 +2022,8 @@ static INDEX_TABLE: &[u16] = &[ 33648, 33649, 33650, - 883, + 33651, + 33652, 33653, 33654, 33655, @@ -1807,6 +2036,8 @@ static INDEX_TABLE: &[u16] = &[ 33662, 33663, 896, + 33666, + 33667, 33668, 33669, 33670, @@ -1814,39 +2045,38 @@ static INDEX_TABLE: &[u16] = &[ 33672, 33673, 33674, - 33675, - 33676, - 33677, - 33678, - 33679, - 33680, - 913, + 907, + 33683, + 33684, + 33685, + 33686, + 33687, 33688, 33689, - 922, + 33690, + 33691, 33692, 33693, 33694, 33695, - 33696, - 33697, + 928, 33698, 33699, - 932, + 33700, + 33701, + 33702, + 33703, + 33704, + 33705, 33706, 33707, 33708, - 33709, - 33710, - 33711, - 33712, + 941, 33713, 33714, 33715, 33716, - 33717, - 33718, - 33719, + 949, 33720, 33721, 33722, @@ -1857,17 +2087,10 @@ static INDEX_TABLE: &[u16] = &[ 33727, 33728, 33729, - 33730, - 33731, - 33732, - 33733, - 33734, - 33735, - 33736, + 962, 33737, 33738, - 33739, - 33740, + 971, 33741, 33742, 33743, @@ -1876,17 +2099,14 @@ static INDEX_TABLE: &[u16] = &[ 33746, 33747, 33748, - 33749, - 33750, - 33751, - 33752, - 33753, - 33754, + 981, 33755, 33756, 33757, 33758, - 991, + 33759, + 33760, + 33761, 33762, 33763, 33764, @@ -1900,7 +2120,9 @@ static INDEX_TABLE: &[u16] = &[ 33772, 33773, 33774, - 1007, + 33775, + 33776, + 33777, 33778, 33779, 33780, @@ -1933,14 +2155,11 @@ static INDEX_TABLE: &[u16] = &[ 33807, 33808, 33809, - 33810, - 33811, - 33812, + 1042, 33813, 33814, 33815, - 33816, - 33817, + 1048, 33818, 33819, 33820, @@ -1952,16 +2171,15 @@ static INDEX_TABLE: &[u16] = &[ 33826, 33827, 33828, - 33829, - 33830, - 33831, + 1061, 33832, 33833, 33834, 33835, 33836, 33837, - 1070, + 33838, + 33839, 33840, 33841, 33842, @@ -1989,14 +2207,17 @@ static INDEX_TABLE: &[u16] = &[ 33864, 33865, 33866, - 1099, + 33867, + 33868, 33869, 33870, 33871, 33872, 33873, 33874, - 1107, + 33875, + 33876, + 33877, 33878, 33879, 33880, @@ -2010,22 +2231,28 @@ static INDEX_TABLE: &[u16] = &[ 33888, 33889, 33890, - 1123, + 33891, + 33892, + 33893, 33894, 33895, - 33896, - 1129, + 1128, + 33898, + 33899, 33900, 33901, 33902, 33903, 33904, - 1137, + 33905, + 33906, + 33907, 33908, 33909, 33910, 33911, - 1144, + 33912, + 33913, 33914, 33915, 33916, @@ -2042,12 +2269,15 @@ static INDEX_TABLE: &[u16] = &[ 33927, 33928, 33929, - 33930, - 33931, + 1162, 33932, 33933, 33934, - 1167, + 33935, + 33936, + 33937, + 1170, + 33941, 33942, 33943, 33944, @@ -2065,41 +2295,33 @@ static INDEX_TABLE: &[u16] = &[ 33956, 33957, 33958, - 33959, - 33960, - 33961, + 1191, 33962, 33963, 33964, - 33965, - 33966, - 33967, + 1197, 33968, 33969, 33970, 33971, 33972, - 33973, - 33974, - 33975, + 1205, 33976, 33977, 33978, - 1211, + 33979, + 1212, 33982, 33983, 33984, 33985, - 33986, - 33987, + 1218, 33988, 33989, 33990, 33991, 33992, 1225, - 33996, - 33997, 33998, 33999, 34000, @@ -2114,12 +2336,11 @@ static INDEX_TABLE: &[u16] = &[ 34009, 34010, 34011, - 1244, - 34018, - 34019, - 34020, - 34021, - 34022, + 34012, + 34013, + 34014, + 34015, + 1248, 34023, 34024, 34025, @@ -2156,8 +2377,7 @@ static INDEX_TABLE: &[u16] = &[ 34056, 34057, 34058, - 34059, - 34060, + 1291, 34061, 34062, 34063, @@ -2167,9 +2387,7 @@ static INDEX_TABLE: &[u16] = &[ 34067, 34068, 34069, - 34070, - 34071, - 34072, + 1302, 34073, 34074, 34075, @@ -2181,9 +2399,7 @@ static INDEX_TABLE: &[u16] = &[ 34081, 34082, 34083, - 34084, - 34085, - 34086, + 1316, 34087, 34088, 34089, @@ -2200,593 +2416,653 @@ static INDEX_TABLE: &[u16] = &[ 34100, 34101, 34102, - 1335, - 34107, - 1340, + 34103, + 34104, + 1337, 34111, - 1344, + 34112, + 34113, + 34114, + 34115, + 34116, + 34117, + 34118, + 34119, + 34120, + 34121, + 34122, + 34123, + 34124, + 34125, + 34126, + 34127, + 34128, + 34129, + 34130, + 34131, + 34132, + 34133, + 34134, + 34135, + 34136, + 34137, + 34138, + 34139, + 34140, + 34141, + 34142, + 34143, + 34144, + 34145, + 34146, + 34147, + 34148, + 34149, + 34150, + 34151, + 34152, + 34153, + 34154, 34155, - 1388, + 34156, + 34157, + 34158, 34159, 34160, 34161, 34162, 34163, - 1396, - 34227, - 34228, + 34164, + 34165, + 34166, + 34167, + 34168, + 34169, + 34170, + 34171, + 34172, + 34173, + 34174, + 34175, + 34176, + 34177, + 34178, + 34179, + 34180, + 34181, + 34182, + 34183, + 34184, + 34185, + 34186, + 34187, + 34188, + 34189, + 34190, + 34191, + 34192, + 34193, + 34194, + 34195, + 34196, + 34197, + 34198, + 34199, + 34200, + 34201, + 34202, + 34203, + 34204, + 34205, + 34206, + 34207, + 34208, + 34209, + 34210, + 34211, + 34212, + 34213, + 34214, + 34215, + 34216, + 34217, + 34218, + 34219, + 34220, + 1453, + 34225, + 1458, 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, + 34273, + 1506, + 34277, + 34278, + 34279, + 34280, + 34281, + 34282, + 34283, + 1516, + 34347, + 34348, + 34349, + 1582, + 34387, + 34388, + 34389, + 1622, + 34539, + 1772, + 34542, + 1775, + 34640, + 1873, + 34649, + 34650, + 1883, + 34657, + 34658, + 1891, + 34667, + 1900, + 34676, 34677, - 34678, - 34679, - 34680, - 1913, - 34689, - 34690, - 34691, - 1924, - 34700, - 1933, - 34715, - 34716, + 1910, + 34684, + 34685, + 1918, + 34694, + 1927, 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, + 1950, + 34766, + 1999, 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, + 34809, + 34810, + 34811, + 2044, + 34820, + 2053, + 34835, + 34836, + 34837, + 34838, + 2071, + 34841, + 34842, + 34843, + 34844, + 34845, + 34846, + 34847, + 34848, + 2081, + 34854, + 2087, + 34858, + 2091, + 34862, + 34863, + 34864, + 2097, + 34867, + 34868, + 34869, + 2102, + 34872, + 2105, 34914, 34915, - 2148, - 34921, - 34922, - 34923, - 34924, - 34925, - 2158, - 34928, - 34929, - 34930, - 34931, - 2164, + 34916, + 34917, + 34918, + 34919, + 34920, + 2153, + 34932, + 34933, + 34934, + 34935, + 2168, + 34939, + 2172, + 34942, + 34943, + 2176, + 34959, + 2192, 34972, 2205, + 34975, + 34976, + 2209, + 34980, + 2213, + 35031, + 2264, + 35034, + 35035, + 35036, + 35037, + 35038, + 2271, + 35044, + 35045, + 35046, + 35047, + 35048, + 2281, + 35051, 35052, 35053, 35054, 2287, - 35058, - 35059, - 35060, - 35061, - 35062, - 35063, - 35064, - 2297, - 35113, - 2346, - 35120, - 2353, - 35133, - 35134, - 35135, - 2368, - 35239, - 2472, + 35095, + 2328, + 35175, + 35176, + 35177, + 2410, + 35181, + 35182, + 35183, + 35184, + 35185, + 35186, + 35187, + 2420, + 35236, + 2469, 35243, 2476, - 35246, - 35247, - 2480, - 35250, - 35251, - 35252, - 35253, - 35254, - 2487, + 35256, 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, + 2491, + 35362, + 35363, + 2596, + 35367, + 2600, + 35370, + 35371, + 35372, + 2605, + 35375, + 35376, + 35377, + 35378, + 35379, + 2612, + 35382, + 35383, + 35384, + 35385, + 35386, + 35387, + 35388, + 35389, + 35390, + 35391, + 35392, + 35393, + 35394, + 35395, + 35396, + 35397, + 35398, + 35399, + 35400, + 35401, + 35402, + 35403, + 35404, + 35405, + 35406, + 35407, + 35408, + 35409, + 35410, + 35411, + 35412, + 2645, + 35627, + 2860, + 35631, + 35632, 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, + 35643, + 35644, + 35645, + 35646, + 35647, + 2880, + 35650, + 2883, + 35653, + 35654, + 35655, + 35656, + 2889, + 35753, + 2986, + 35768, + 35769, + 35770, + 35771, + 3004, + 35844, + 3077, + 36277, + 36278, + 36279, + 36280, + 36281, + 36282, + 36283, + 36284, + 36285, + 36286, + 36287, + 36288, + 36289, + 36290, + 3523, + 36336, + 36337, + 36338, + 3571, 36371, - 3604, - 36381, - 36382, - 36383, - 3616, - 36386, - 36387, - 36388, - 36389, - 36390, - 36391, + 36372, + 36373, + 36374, + 36375, + 36376, + 36377, + 36378, + 3611, 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, + 3625, + 36456, + 3689, + 36471, + 36472, + 3705, + 36476, + 3709, + 36480, + 3713, 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, + 3756, + 36533, + 36534, + 36535, + 3768, + 36538, + 36539, + 36540, + 36541, + 36542, + 36543, + 36544, + 36545, + 36546, + 36547, + 36548, + 36549, + 36550, + 36551, + 36552, + 36553, + 3786, + 36556, + 36557, + 36558, + 36559, + 36560, + 36561, + 36562, + 36563, + 36564, + 36565, + 36566, + 36567, + 36568, + 36569, + 36570, + 36571, + 36572, + 36573, + 36574, + 36575, + 36576, + 36577, + 36578, + 36579, + 36580, + 36581, + 36582, + 36583, + 36584, + 36585, + 36586, + 36587, + 36588, + 36589, + 36590, + 36591, + 36592, + 36593, + 36594, + 36595, + 36596, + 36597, + 3830, + 36603, + 36604, + 36605, + 36606, + 3839, + 36687, + 36688, + 36689, + 36690, + 36691, + 36692, + 36693, + 36694, + 36695, + 36696, + 36697, + 36698, + 3931, + 36706, + 3939, + 36968, + 4201, + 36972, + 4205, + 36987, + 4220, + 36990, + 4223, + 37042, + 4275, 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, + 4291, + 37165, + 4398, + 37171, + 37172, + 4405, + 37178, + 4411, + 37230, + 37231, + 37232, + 37233, + 37234, + 37235, + 37236, + 37237, + 37238, + 37239, + 37240, + 37241, + 37242, + 37243, + 37244, + 37245, + 37246, + 37247, + 37248, + 37249, + 37250, + 37251, + 37252, + 37253, + 37254, + 37255, + 37256, + 37257, + 37258, + 37259, + 37260, + 37261, + 37262, + 37263, + 37264, + 37265, + 37266, + 37267, + 37268, + 37269, + 37270, + 37271, + 37272, + 37273, + 37274, + 37275, + 37276, + 37277, + 37278, + 37279, + 37280, + 4513, + 37597, + 37598, + 37599, + 37600, + 37601, + 4834, + 37607, + 4840, + 37613, + 37614, + 37615, + 37616, + 37617, + 37618, + 37619, + 37620, + 37621, + 37622, + 37623, + 37624, + 4857, 37628, - 37629, - 37630, - 37631, - 37632, + 4861, 37633, - 37634, - 37635, - 37636, - 37637, - 37638, + 4866, 37639, 37640, 37641, - 37642, - 37643, - 37644, - 37645, - 37646, - 37647, - 37648, + 4874, 37649, - 37650, - 37651, - 37652, - 37653, - 37654, + 4882, 37655, - 37656, - 37657, - 37658, + 4888, 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, + 4892, + 37702, + 4935, + 37717, + 37718, + 4951, + 37728, + 37729, + 4962, + 37733, + 4966, + 37750, + 4983, + 37753, + 37754, + 4987, + 37757, + 4990, + 37782, + 5015, + 37800, + 37801, + 37802, + 37803, + 37804, + 37805, + 37806, + 37807, + 37808, + 37809, + 37810, + 37811, + 37812, + 37813, + 37814, + 37815, + 37816, + 37817, + 37818, + 37819, + 37820, + 37821, + 37822, + 37823, + 37824, + 37825, + 37826, + 37827, + 37828, + 37829, + 37830, + 37831, + 37832, + 37833, + 37834, + 37835, + 37836, + 37837, + 37838, + 37839, + 5072, 38032, - 38033, - 38034, - 38035, - 38036, - 38037, - 38038, + 5265, 38039, - 38040, - 5273, - 38043, - 38044, - 38045, + 5272, 38046, - 38047, - 38048, - 38049, - 38050, - 38051, - 38052, + 5279, 38053, - 38054, - 38055, - 38056, + 5286, 38057, - 38058, - 38059, - 38060, - 38061, - 38062, - 38063, - 38064, - 38065, - 38066, - 38067, - 38068, - 38069, - 38070, - 38071, - 38072, + 5290, 38073, 38074, 38075, @@ -2819,58 +3095,35 @@ static INDEX_TABLE: &[u16] = &[ 38102, 38103, 38104, - 5337, - 38156, - 38157, - 38158, - 38159, - 38160, - 38161, - 38162, - 38163, - 38164, - 38165, + 38105, + 38106, + 38107, + 38108, + 38109, + 38110, + 38111, + 38112, + 38113, + 38114, + 38115, + 38116, + 38117, + 38118, + 5351, + 38121, + 38122, + 38123, + 38124, + 38125, + 5358, 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, + 5402, + 38206, + 38207, + 38208, 38209, 38210, 38211, @@ -2885,8 +3138,7 @@ static INDEX_TABLE: &[u16] = &[ 38220, 38221, 38222, - 38223, - 38224, + 5455, 38225, 38226, 38227, @@ -2941,58 +3193,40 @@ static INDEX_TABLE: &[u16] = &[ 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, + 38279, + 38280, + 38281, + 38282, + 38283, + 38284, + 38285, + 38286, + 38287, + 38288, + 38289, + 38290, + 38291, + 38292, + 38293, + 38294, + 38295, + 38296, + 38297, + 38298, + 38299, + 38300, + 38301, + 38302, + 38303, + 38304, + 5537, 38356, 38357, 38358, 38359, 38360, - 5593, + 38361, + 38362, 38363, 38364, 38365, @@ -3045,13 +3279,41 @@ static INDEX_TABLE: &[u16] = &[ 38412, 38413, 38414, - 38415, - 38416, + 5647, 38417, 38418, 38419, 38420, - 5653, + 38421, + 38422, + 38423, + 38424, + 38425, + 38426, + 38427, + 5660, + 38431, + 38432, + 38433, + 38434, + 38435, + 38436, + 38437, + 38438, + 38439, + 38440, + 38441, + 38442, + 38443, + 38444, + 38445, + 38446, + 38447, + 38448, + 38449, + 38450, + 38451, + 38452, 38453, 38454, 38455, @@ -3075,13 +3337,11 @@ static INDEX_TABLE: &[u16] = &[ 38473, 38474, 38475, - 38476, - 38477, + 5708, 38478, 38479, 38480, - 38481, - 38482, + 5713, 38483, 38484, 38485, @@ -3094,224 +3354,428 @@ static INDEX_TABLE: &[u16] = &[ 38492, 38493, 38494, - 5727, + 38495, + 38496, + 38497, + 38498, + 38499, + 38500, + 38501, 38502, 38503, 38504, - 5737, + 38505, + 38506, + 38507, + 38508, + 38509, + 38510, 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, + 5746, + 38546, + 38547, + 38548, + 38549, + 38550, + 38551, + 38552, + 38553, + 38554, + 38555, + 38556, + 38557, + 38558, + 38559, + 38560, + 38561, + 38562, + 38563, + 38564, + 38565, + 38566, + 38567, + 38568, + 38569, + 38570, + 38571, + 38572, + 38573, + 38574, + 38575, + 38576, + 38577, + 38578, + 38579, + 38580, + 38581, + 38582, + 38583, + 38584, + 38585, + 38586, + 38587, + 38588, + 38589, + 38590, + 38591, + 38592, + 38593, + 38594, + 38595, + 38596, + 38597, + 38598, + 38599, + 38600, + 38601, + 38602, + 38603, + 38604, + 38605, + 38606, + 38607, + 5840, + 38610, + 38611, + 38612, + 38613, + 38614, + 38615, + 38616, + 38617, + 38618, + 38619, + 38620, + 38621, + 38622, + 38623, + 38624, + 38625, + 38626, + 38627, + 38628, + 38629, + 38630, + 38631, + 38632, + 38633, + 38634, + 38635, + 38636, + 38637, + 38638, + 38639, + 38640, + 38641, + 38642, + 38643, + 38644, + 38645, + 38646, + 38647, + 38648, + 38649, + 38650, + 38651, + 38652, + 38653, + 38654, + 38655, + 38656, + 38657, + 38658, + 38659, + 38660, + 38661, + 38662, + 38663, + 38664, + 38665, + 38666, + 38667, + 38668, + 38669, + 38670, + 38671, + 38672, + 38673, + 5906, + 38706, + 38707, + 38708, + 38709, + 38710, + 38711, + 38712, + 38713, + 38714, + 38715, + 38716, + 38717, + 38718, + 38719, + 38720, + 38721, + 38722, + 38723, + 38724, + 38725, + 38726, + 38727, + 38728, + 38729, + 38730, + 38731, + 38732, + 38733, + 38734, + 38735, + 38736, + 38737, + 38738, + 38739, + 38740, + 38741, + 38742, + 38743, + 38744, + 38745, + 38746, + 38747, + 38748, + 38749, + 38750, + 38751, + 38752, + 5985, + 38760, + 38761, + 38762, + 5995, + 38769, + 38770, + 38771, + 38772, + 38773, + 38774, + 38775, + 38776, + 38777, + 38778, + 6011, + 38939, + 38940, + 38941, + 6174, + 38944, + 6177, + 39043, + 6276, + 39102, + 6335, + 39451, + 6684, + 39495, + 6728, 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, + 6785, + 39609, + 6842, 39666, - 39667, - 39668, - 6901, - 39683, - 6916, - 39698, - 6931, - 39752, - 6985, - 39780, - 39781, - 39782, - 39783, - 39784, - 39785, - 39786, - 39787, - 39788, + 6899, + 39723, + 6956, + 39737, + 39738, + 6971, 39789, 39790, 39791, 39792, 39793, 39794, - 7027, + 39795, + 39796, + 39797, + 39798, + 39799, + 39800, + 39801, + 39802, + 39803, + 39804, 39805, - 7038, + 39806, + 39807, + 39808, + 39809, + 39810, + 39811, + 39812, + 39813, + 39814, + 39815, + 39816, + 39817, + 39818, + 7051, + 39821, + 39822, + 39823, + 39824, + 39825, + 39826, + 39827, + 39828, + 39829, + 39830, + 7063, + 39865, + 39866, + 39867, + 39868, + 39869, 39870, - 7103, + 39871, + 39872, + 39873, 39874, - 39875, - 39876, - 39877, - 39878, - 7111, - 39882, - 7115, - 39927, - 7160, - 39937, - 7170, - 39940, - 39941, - 39942, - 39943, - 39944, - 39945, - 39946, - 39947, - 39948, - 39949, - 39950, + 7107, + 39912, + 7145, + 39934, + 39935, + 39936, + 7169, 39951, - 39952, - 39953, - 39954, - 39955, - 39956, - 39957, - 39958, - 39959, - 39960, - 39961, - 39962, - 39963, - 39964, - 39965, + 7184, 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, + 7199, + 40020, + 7253, + 40048, + 40049, + 40050, + 40051, + 40052, + 40053, + 40054, + 40055, + 40056, + 40057, + 40058, + 40059, + 40060, + 40061, + 40062, + 7295, + 40073, + 7306, + 40138, + 7371, + 40142, + 40143, + 40144, + 40145, + 40146, + 7379, + 40150, + 7383, + 40195, + 7428, + 40205, + 7438, + 40208, + 40209, + 40210, + 40211, + 40212, + 40213, + 40214, + 40215, + 40216, + 40217, + 40218, + 40219, + 40220, + 40221, + 40222, + 40223, + 40224, + 40225, + 40226, + 40227, + 40228, + 40229, + 40230, + 40231, + 40232, + 40233, + 40234, + 40235, + 40236, + 40237, + 40238, + 40239, + 40240, + 40241, + 40242, + 40243, + 40244, + 40245, + 40246, + 40247, + 40248, + 40249, + 40250, + 40251, + 40252, + 40253, + 40254, + 40255, + 40256, + 40257, + 40258, + 40259, + 40260, + 7493, + 40271, + 40272, + 40273, + 40274, + 40275, + 40276, + 40277, + 40278, + 40279, + 40280, + 40281, + 7514, + 40331, + 7564, + 40349, + 7582, + 40385, + 7618, + 40423, + 40424, + 40425, + 7658, + 40576, + 7809, + 40601, + 7834, + 40623, + 7856, + 40783, + 8016, + 40814, + 40815, + 40816, + 40817, + 40818, ]; static MAPPING_TABLE: &[Mapping] = &[ @@ -3351,28 +3815,29 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +3861,7 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +3871,8 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +4187,26 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +4313,7 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +4405,9 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +4614,68 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +4695,10 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +4727,10 @@ static MAPPING_TABLE: &[Mapping] = &[ Valid, Disallowed, Valid, + DisallowedIdna2008, + Valid, + DisallowedIdna2008, + Valid, Disallowed, Valid, Disallowed, @@ -4255,6 +4768,7 @@ static MAPPING_TABLE: &[Mapping] = &[ Mapped(StringTableSlice { byte_start_lo: 82, byte_start_hi: 4, byte_len: 6 }), Disallowed, Valid, + DisallowedIdna2008, Disallowed, Valid, Disallowed, @@ -4281,6 +4795,7 @@ static MAPPING_TABLE: &[Mapping] = &[ Valid, Disallowed, Valid, + DisallowedIdna2008, Disallowed, Valid, Disallowed, @@ -4312,6 +4827,9 @@ static MAPPING_TABLE: &[Mapping] = &[ Valid, Disallowed, Valid, + DisallowedIdna2008, + Valid, + DisallowedIdna2008, Disallowed, Valid, Disallowed, @@ -4344,12 +4862,77 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +4957,17 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +4996,20 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +5037,8 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +5054,28 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +5109,10 @@ static MAPPING_TABLE: &[Mapping] = &[ Valid, Disallowed, Valid, + DisallowedIdna2008, Disallowed, Valid, + DisallowedIdna2008, Disallowed, Valid, Disallowed, @@ -4566,7 +5123,24 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +5153,18 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +5181,9 @@ static MAPPING_TABLE: &[Mapping] = &[ Disallowed, Valid, Disallowed, + DisallowedIdna2008, + Disallowed, + DisallowedIdna2008, Valid, Disallowed, Valid, @@ -4622,7 +5193,12 @@ static MAPPING_TABLE: &[Mapping] = &[ Valid, Disallowed, Valid, + DisallowedIdna2008, Disallowed, + DisallowedIdna2008, + Valid, + Disallowed, + DisallowedIdna2008, Valid, Disallowed, Valid, @@ -4631,25 +5207,31 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +5288,11 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +5850,32 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +5926,50 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +5980,20 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +6042,29 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +6186,19 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +6374,7 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +6382,7 @@ static MAPPING_TABLE: &[Mapping] = &[ Mapped(StringTableSlice { byte_start_lo: 254, byte_start_hi: 11, byte_len: 3 }), Valid, Disallowed, + DisallowedIdna2008, Valid, Disallowed, Valid, @@ -5803,7 +6392,7 @@ static MAPPING_TABLE: &[Mapping] = &[ Valid, Disallowed, Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 12, byte_len: 3 }), - Valid, + DisallowedIdna2008, Disallowed, Valid, Disallowed, @@ -5824,12 +6413,15 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +6640,21 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +6663,7 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +6764,7 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +6780,7 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +6855,7 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +6903,7 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +7289,17 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +7348,10 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +7383,13 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +7483,7 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +7550,52 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +7609,14 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +7699,16 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +8271,7 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +8609,7 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +8727,7 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +8761,7 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +9099,17 @@ static MAPPING_TABLE: &[Mapping] = &[ Disallowed, Valid, Disallowed, + DisallowedIdna2008, + Disallowed, + DisallowedIdna2008, + Disallowed, + DisallowedIdna2008, + Disallowed, + DisallowedIdna2008, + Disallowed, + DisallowedIdna2008, + Disallowed, + DisallowedIdna2008, Valid, Disallowed, Valid, @@ -8468,28 +9117,25 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +9224,7 @@ static MAPPING_TABLE: &[Mapping] = &[ Disallowed, Valid, Disallowed, - Valid, + DisallowedIdna2008, Disallowed, Valid, Disallowed, @@ -8598,6 +9244,33 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +9284,35 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +9370,87 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +9484,32 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +9520,10 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +9558,7 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +9573,53 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +9640,18 @@ static MAPPING_TABLE: &[Mapping] = &[ Valid, Disallowed, Valid, + DisallowedIdna2008, + Disallowed, + Valid, + Disallowed, + DisallowedIdna2008, + Disallowed, + DisallowedIdna2008, + Valid, + Disallowed, + DisallowedIdna2008, + Disallowed, + DisallowedIdna2008, Disallowed, Valid, Disallowed, @@ -8906,63 +9665,21 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +9718,7 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +9727,14 @@ static MAPPING_TABLE: &[Mapping] = &[ Valid, Disallowed, Valid, + DisallowedIdna2008, + Valid, + Disallowed, + Valid, + Disallowed, + Valid, + Disallowed, + Valid, Disallowed, Valid, Disallowed, @@ -9028,20 +9754,16 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +9771,24 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +10800,15 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +10831,15 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +10880,11 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +11060,19 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +11084,7 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +11116,7 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +11149,15 @@ static MAPPING_TABLE: &[Mapping] = &[ 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 +11220,57 @@ static MAPPING_TABLE: &[Mapping] = &[ 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/idna/tests/unit.rs b/idna/tests/unit.rs index a9aa375..84a9d54 100644 --- a/idna/tests/unit.rs +++ b/idna/tests/unit.rs @@ -114,3 +114,20 @@ fn test_v8_bidi_rules() { // 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")); +}