const DEFAULT_IGNORABLE_RANGES: &[(u32, u32)] = &[
(0xAD, 0xAD),
(0x34F, 0x34F),
(0x61C, 0x61C),
(0x115F, 0x1160),
(0x17B4, 0x17B5),
(0x180B, 0x180F),
(0x200B, 0x200F),
(0x202A, 0x202E),
(0x2060, 0x206F),
(0x3164, 0x3164),
(0xFE00, 0xFE0F),
(0xFEFF, 0xFEFF),
(0xFFA0, 0xFFA0),
(0xFFF0, 0xFFF8),
(0x1BCA0, 0x1BCA3),
(0x1D173, 0x1D17A),
(0xE0000, 0xE0FFF),
];
const FORMAT_RANGES: &[(u32, u32)] = &[
(0xAD, 0xAD),
(0x600, 0x605),
(0x61C, 0x61C),
(0x6DD, 0x6DD),
(0x70F, 0x70F),
(0x890, 0x891),
(0x8E2, 0x8E2),
(0x180E, 0x180E),
(0x200B, 0x200F),
(0x202A, 0x202E),
(0x2060, 0x2064),
(0x2066, 0x206F),
(0xFEFF, 0xFEFF),
(0xFFF9, 0xFFFB),
(0x110BD, 0x110BD),
(0x110CD, 0x110CD),
(0x13430, 0x1343F),
(0x1BCA0, 0x1BCA3),
(0x1D173, 0x1D17A),
(0xE0001, 0xE0001),
(0xE0020, 0xE007F),
];
const MARK_RANGES: &[(u32, u32)] = &[
(0x300, 0x36F),
(0x483, 0x489),
(0x591, 0x5BD),
(0x5BF, 0x5BF),
(0x5C1, 0x5C2),
(0x5C4, 0x5C5),
(0x5C7, 0x5C7),
(0x610, 0x61A),
(0x64B, 0x65F),
(0x670, 0x670),
(0x6D6, 0x6DC),
(0x6DF, 0x6E4),
(0x6E7, 0x6E8),
(0x6EA, 0x6ED),
(0x711, 0x711),
(0x730, 0x74A),
(0x7A6, 0x7B0),
(0x7EB, 0x7F3),
(0x7FD, 0x7FD),
(0x816, 0x819),
(0x81B, 0x823),
(0x825, 0x827),
(0x829, 0x82D),
(0x859, 0x85B),
(0x897, 0x89F),
(0x8CA, 0x8E1),
(0x8E3, 0x903),
(0x93A, 0x93C),
(0x93E, 0x94F),
(0x951, 0x957),
(0x962, 0x963),
(0x981, 0x983),
(0x9BC, 0x9BC),
(0x9BE, 0x9C4),
(0x9C7, 0x9C8),
(0x9CB, 0x9CD),
(0x9D7, 0x9D7),
(0x9E2, 0x9E3),
(0x9FE, 0x9FE),
(0xA01, 0xA03),
(0xA3C, 0xA3C),
(0xA3E, 0xA42),
(0xA47, 0xA48),
(0xA4B, 0xA4D),
(0xA51, 0xA51),
(0xA70, 0xA71),
(0xA75, 0xA75),
(0xA81, 0xA83),
(0xABC, 0xABC),
(0xABE, 0xAC5),
(0xAC7, 0xAC9),
(0xACB, 0xACD),
(0xAE2, 0xAE3),
(0xAFA, 0xAFF),
(0xB01, 0xB03),
(0xB3C, 0xB3C),
(0xB3E, 0xB44),
(0xB47, 0xB48),
(0xB4B, 0xB4D),
(0xB55, 0xB57),
(0xB62, 0xB63),
(0xB82, 0xB82),
(0xBBE, 0xBC2),
(0xBC6, 0xBC8),
(0xBCA, 0xBCD),
(0xBD7, 0xBD7),
(0xC00, 0xC04),
(0xC3C, 0xC3C),
(0xC3E, 0xC44),
(0xC46, 0xC48),
(0xC4A, 0xC4D),
(0xC55, 0xC56),
(0xC62, 0xC63),
(0xC81, 0xC83),
(0xCBC, 0xCBC),
(0xCBE, 0xCC4),
(0xCC6, 0xCC8),
(0xCCA, 0xCCD),
(0xCD5, 0xCD6),
(0xCE2, 0xCE3),
(0xCF3, 0xCF3),
(0xD00, 0xD03),
(0xD3B, 0xD3C),
(0xD3E, 0xD44),
(0xD46, 0xD48),
(0xD4A, 0xD4D),
(0xD57, 0xD57),
(0xD62, 0xD63),
(0xD81, 0xD83),
(0xDCA, 0xDCA),
(0xDCF, 0xDD4),
(0xDD6, 0xDD6),
(0xDD8, 0xDDF),
(0xDF2, 0xDF3),
(0xE31, 0xE31),
(0xE34, 0xE3A),
(0xE47, 0xE4E),
(0xEB1, 0xEB1),
(0xEB4, 0xEBC),
(0xEC8, 0xECE),
(0xF18, 0xF19),
(0xF35, 0xF35),
(0xF37, 0xF37),
(0xF39, 0xF39),
(0xF3E, 0xF3F),
(0xF71, 0xF84),
(0xF86, 0xF87),
(0xF8D, 0xF97),
(0xF99, 0xFBC),
(0xFC6, 0xFC6),
(0x102B, 0x103E),
(0x1056, 0x1059),
(0x105E, 0x1060),
(0x1062, 0x1064),
(0x1067, 0x106D),
(0x1071, 0x1074),
(0x1082, 0x108D),
(0x108F, 0x108F),
(0x109A, 0x109D),
(0x135D, 0x135F),
(0x1712, 0x1715),
(0x1732, 0x1734),
(0x1752, 0x1753),
(0x1772, 0x1773),
(0x17B4, 0x17D3),
(0x17DD, 0x17DD),
(0x180B, 0x180D),
(0x180F, 0x180F),
(0x1885, 0x1886),
(0x18A9, 0x18A9),
(0x1920, 0x192B),
(0x1930, 0x193B),
(0x1A17, 0x1A1B),
(0x1A55, 0x1A5E),
(0x1A60, 0x1A7C),
(0x1A7F, 0x1A7F),
(0x1AB0, 0x1ADD),
(0x1AE0, 0x1AEB),
(0x1B00, 0x1B04),
(0x1B34, 0x1B44),
(0x1B6B, 0x1B73),
(0x1B80, 0x1B82),
(0x1BA1, 0x1BAD),
(0x1BE6, 0x1BF3),
(0x1C24, 0x1C37),
(0x1CD0, 0x1CD2),
(0x1CD4, 0x1CE8),
(0x1CED, 0x1CED),
(0x1CF4, 0x1CF4),
(0x1CF7, 0x1CF9),
(0x1DC0, 0x1DFF),
(0x20D0, 0x20F0),
(0x2CEF, 0x2CF1),
(0x2D7F, 0x2D7F),
(0x2DE0, 0x2DFF),
(0x302A, 0x302F),
(0x3099, 0x309A),
(0xA66F, 0xA672),
(0xA674, 0xA67D),
(0xA69E, 0xA69F),
(0xA6F0, 0xA6F1),
(0xA802, 0xA802),
(0xA806, 0xA806),
(0xA80B, 0xA80B),
(0xA823, 0xA827),
(0xA82C, 0xA82C),
(0xA880, 0xA881),
(0xA8B4, 0xA8C5),
(0xA8E0, 0xA8F1),
(0xA8FF, 0xA8FF),
(0xA926, 0xA92D),
(0xA947, 0xA953),
(0xA980, 0xA983),
(0xA9B3, 0xA9C0),
(0xA9E5, 0xA9E5),
(0xAA29, 0xAA36),
(0xAA43, 0xAA43),
(0xAA4C, 0xAA4D),
(0xAA7B, 0xAA7D),
(0xAAB0, 0xAAB0),
(0xAAB2, 0xAAB4),
(0xAAB7, 0xAAB8),
(0xAABE, 0xAABF),
(0xAAC1, 0xAAC1),
(0xAAEB, 0xAAEF),
(0xAAF5, 0xAAF6),
(0xABE3, 0xABEA),
(0xABEC, 0xABED),
(0xFB1E, 0xFB1E),
(0xFE00, 0xFE0F),
(0xFE20, 0xFE2F),
(0x101FD, 0x101FD),
(0x102E0, 0x102E0),
(0x10376, 0x1037A),
(0x10A01, 0x10A03),
(0x10A05, 0x10A06),
(0x10A0C, 0x10A0F),
(0x10A38, 0x10A3A),
(0x10A3F, 0x10A3F),
(0x10AE5, 0x10AE6),
(0x10D24, 0x10D27),
(0x10D69, 0x10D6D),
(0x10EAB, 0x10EAC),
(0x10EFA, 0x10EFF),
(0x10F46, 0x10F50),
(0x10F82, 0x10F85),
(0x11000, 0x11002),
(0x11038, 0x11046),
(0x11070, 0x11070),
(0x11073, 0x11074),
(0x1107F, 0x11082),
(0x110B0, 0x110BA),
(0x110C2, 0x110C2),
(0x11100, 0x11102),
(0x11127, 0x11134),
(0x11145, 0x11146),
(0x11173, 0x11173),
(0x11180, 0x11182),
(0x111B3, 0x111C0),
(0x111C9, 0x111CC),
(0x111CE, 0x111CF),
(0x1122C, 0x11237),
(0x1123E, 0x1123E),
(0x11241, 0x11241),
(0x112DF, 0x112EA),
(0x11300, 0x11303),
(0x1133B, 0x1133C),
(0x1133E, 0x11344),
(0x11347, 0x11348),
(0x1134B, 0x1134D),
(0x11357, 0x11357),
(0x11362, 0x11363),
(0x11366, 0x1136C),
(0x11370, 0x11374),
(0x113B8, 0x113C0),
(0x113C2, 0x113C2),
(0x113C5, 0x113C5),
(0x113C7, 0x113CA),
(0x113CC, 0x113D0),
(0x113D2, 0x113D2),
(0x113E1, 0x113E2),
(0x11435, 0x11446),
(0x1145E, 0x1145E),
(0x114B0, 0x114C3),
(0x115AF, 0x115B5),
(0x115B8, 0x115C0),
(0x115DC, 0x115DD),
(0x11630, 0x11640),
(0x116AB, 0x116B7),
(0x1171D, 0x1172B),
(0x1182C, 0x1183A),
(0x11930, 0x11935),
(0x11937, 0x11938),
(0x1193B, 0x1193E),
(0x11940, 0x11940),
(0x11942, 0x11943),
(0x119D1, 0x119D7),
(0x119DA, 0x119E0),
(0x119E4, 0x119E4),
(0x11A01, 0x11A0A),
(0x11A33, 0x11A39),
(0x11A3B, 0x11A3E),
(0x11A47, 0x11A47),
(0x11A51, 0x11A5B),
(0x11A8A, 0x11A99),
(0x11B60, 0x11B67),
(0x11C2F, 0x11C36),
(0x11C38, 0x11C3F),
(0x11C92, 0x11CA7),
(0x11CA9, 0x11CB6),
(0x11D31, 0x11D36),
(0x11D3A, 0x11D3A),
(0x11D3C, 0x11D3D),
(0x11D3F, 0x11D45),
(0x11D47, 0x11D47),
(0x11D8A, 0x11D8E),
(0x11D90, 0x11D91),
(0x11D93, 0x11D97),
(0x11EF3, 0x11EF6),
(0x11F00, 0x11F01),
(0x11F03, 0x11F03),
(0x11F34, 0x11F3A),
(0x11F3E, 0x11F42),
(0x11F5A, 0x11F5A),
(0x13440, 0x13440),
(0x13447, 0x13455),
(0x1611E, 0x1612F),
(0x16AF0, 0x16AF4),
(0x16B30, 0x16B36),
(0x16F4F, 0x16F4F),
(0x16F51, 0x16F87),
(0x16F8F, 0x16F92),
(0x16FE4, 0x16FE4),
(0x16FF0, 0x16FF1),
(0x1BC9D, 0x1BC9E),
(0x1CF00, 0x1CF2D),
(0x1CF30, 0x1CF46),
(0x1D165, 0x1D169),
(0x1D16D, 0x1D172),
(0x1D17B, 0x1D182),
(0x1D185, 0x1D18B),
(0x1D1AA, 0x1D1AD),
(0x1D242, 0x1D244),
(0x1DA00, 0x1DA36),
(0x1DA3B, 0x1DA6C),
(0x1DA75, 0x1DA75),
(0x1DA84, 0x1DA84),
(0x1DA9B, 0x1DA9F),
(0x1DAA1, 0x1DAAF),
(0x1E000, 0x1E006),
(0x1E008, 0x1E018),
(0x1E01B, 0x1E021),
(0x1E023, 0x1E024),
(0x1E026, 0x1E02A),
(0x1E08F, 0x1E08F),
(0x1E130, 0x1E136),
(0x1E2AE, 0x1E2AE),
(0x1E2EC, 0x1E2EF),
(0x1E4EC, 0x1E4EF),
(0x1E5EE, 0x1E5EF),
(0x1E6E3, 0x1E6E3),
(0x1E6E6, 0x1E6E6),
(0x1E6EE, 0x1E6EF),
(0x1E6F5, 0x1E6F5),
(0x1E8D0, 0x1E8D6),
(0x1E944, 0x1E94A),
(0xE0100, 0xE01EF),
];
const EXTENDED_PICTOGRAPHIC_RANGES: &[(u32, u32)] = &[
(0xA9, 0xA9),
(0xAE, 0xAE),
(0x203C, 0x203C),
(0x2049, 0x2049),
(0x2122, 0x2122),
(0x2139, 0x2139),
(0x2194, 0x2199),
(0x21A9, 0x21AA),
(0x231A, 0x231B),
(0x2328, 0x2328),
(0x23CF, 0x23CF),
(0x23E9, 0x23F3),
(0x23F8, 0x23FA),
(0x24C2, 0x24C2),
(0x25AA, 0x25AB),
(0x25B6, 0x25B6),
(0x25C0, 0x25C0),
(0x25FB, 0x25FE),
(0x2600, 0x2604),
(0x260E, 0x260E),
(0x2611, 0x2611),
(0x2614, 0x2615),
(0x2618, 0x2618),
(0x261D, 0x261D),
(0x2620, 0x2620),
(0x2622, 0x2623),
(0x2626, 0x2626),
(0x262A, 0x262A),
(0x262E, 0x262F),
(0x2638, 0x263A),
(0x2640, 0x2640),
(0x2642, 0x2642),
(0x2648, 0x2653),
(0x265F, 0x2660),
(0x2663, 0x2663),
(0x2665, 0x2666),
(0x2668, 0x2668),
(0x267B, 0x267B),
(0x267E, 0x267F),
(0x2692, 0x2697),
(0x2699, 0x2699),
(0x269B, 0x269C),
(0x26A0, 0x26A1),
(0x26A7, 0x26A7),
(0x26AA, 0x26AB),
(0x26B0, 0x26B1),
(0x26BD, 0x26BE),
(0x26C4, 0x26C5),
(0x26C8, 0x26C8),
(0x26CE, 0x26CF),
(0x26D1, 0x26D1),
(0x26D3, 0x26D4),
(0x26E9, 0x26EA),
(0x26F0, 0x26F5),
(0x26F7, 0x26FA),
(0x26FD, 0x26FD),
(0x2702, 0x2702),
(0x2705, 0x2705),
(0x2708, 0x270D),
(0x270F, 0x270F),
(0x2712, 0x2712),
(0x2714, 0x2714),
(0x2716, 0x2716),
(0x271D, 0x271D),
(0x2721, 0x2721),
(0x2728, 0x2728),
(0x2733, 0x2734),
(0x2744, 0x2744),
(0x2747, 0x2747),
(0x274C, 0x274C),
(0x274E, 0x274E),
(0x2753, 0x2755),
(0x2757, 0x2757),
(0x2763, 0x2764),
(0x2795, 0x2797),
(0x27A1, 0x27A1),
(0x27B0, 0x27B0),
(0x27BF, 0x27BF),
(0x2934, 0x2935),
(0x2B05, 0x2B07),
(0x2B1B, 0x2B1C),
(0x2B50, 0x2B50),
(0x2B55, 0x2B55),
(0x3030, 0x3030),
(0x303D, 0x303D),
(0x3297, 0x3297),
(0x3299, 0x3299),
(0x1F004, 0x1F004),
(0x1F02C, 0x1F02F),
(0x1F094, 0x1F09F),
(0x1F0AF, 0x1F0B0),
(0x1F0C0, 0x1F0C0),
(0x1F0CF, 0x1F0D0),
(0x1F0F6, 0x1F0FF),
(0x1F170, 0x1F171),
(0x1F17E, 0x1F17F),
(0x1F18E, 0x1F18E),
(0x1F191, 0x1F19A),
(0x1F1AE, 0x1F1E5),
(0x1F201, 0x1F20F),
(0x1F21A, 0x1F21A),
(0x1F22F, 0x1F22F),
(0x1F232, 0x1F23A),
(0x1F23C, 0x1F23F),
(0x1F249, 0x1F25F),
(0x1F266, 0x1F321),
(0x1F324, 0x1F393),
(0x1F396, 0x1F397),
(0x1F399, 0x1F39B),
(0x1F39E, 0x1F3F0),
(0x1F3F3, 0x1F3F5),
(0x1F3F7, 0x1F3FA),
(0x1F400, 0x1F4FD),
(0x1F4FF, 0x1F53D),
(0x1F549, 0x1F54E),
(0x1F550, 0x1F567),
(0x1F56F, 0x1F570),
(0x1F573, 0x1F57A),
(0x1F587, 0x1F587),
(0x1F58A, 0x1F58D),
(0x1F590, 0x1F590),
(0x1F595, 0x1F596),
(0x1F5A4, 0x1F5A5),
(0x1F5A8, 0x1F5A8),
(0x1F5B1, 0x1F5B2),
(0x1F5BC, 0x1F5BC),
(0x1F5C2, 0x1F5C4),
(0x1F5D1, 0x1F5D3),
(0x1F5DC, 0x1F5DE),
(0x1F5E1, 0x1F5E1),
(0x1F5E3, 0x1F5E3),
(0x1F5E8, 0x1F5E8),
(0x1F5EF, 0x1F5EF),
(0x1F5F3, 0x1F5F3),
(0x1F5FA, 0x1F64F),
(0x1F680, 0x1F6C5),
(0x1F6CB, 0x1F6D2),
(0x1F6D5, 0x1F6E5),
(0x1F6E9, 0x1F6E9),
(0x1F6EB, 0x1F6F0),
(0x1F6F3, 0x1F6FF),
(0x1F7DA, 0x1F7FF),
(0x1F80C, 0x1F80F),
(0x1F848, 0x1F84F),
(0x1F85A, 0x1F85F),
(0x1F888, 0x1F88F),
(0x1F8AE, 0x1F8AF),
(0x1F8BC, 0x1F8BF),
(0x1F8C2, 0x1F8CF),
(0x1F8D9, 0x1F8FF),
(0x1F90C, 0x1F93A),
(0x1F93C, 0x1F945),
(0x1F947, 0x1F9FF),
(0x1FA58, 0x1FA5F),
(0x1FA6E, 0x1FAFF),
(0x1FC00, 0x1FFFD),
];
const EMOJI_MODIFIER_BASE_RANGES: &[(u32, u32)] = &[
(0x261D, 0x261D),
(0x26F9, 0x26F9),
(0x270A, 0x270D),
(0x1F385, 0x1F385),
(0x1F3C2, 0x1F3C4),
(0x1F3C7, 0x1F3C7),
(0x1F3CA, 0x1F3CC),
(0x1F442, 0x1F443),
(0x1F446, 0x1F450),
(0x1F466, 0x1F478),
(0x1F47C, 0x1F47C),
(0x1F481, 0x1F483),
(0x1F485, 0x1F487),
(0x1F48F, 0x1F48F),
(0x1F491, 0x1F491),
(0x1F4AA, 0x1F4AA),
(0x1F574, 0x1F575),
(0x1F57A, 0x1F57A),
(0x1F590, 0x1F590),
(0x1F595, 0x1F596),
(0x1F645, 0x1F647),
(0x1F64B, 0x1F64F),
(0x1F6A3, 0x1F6A3),
(0x1F6B4, 0x1F6B6),
(0x1F6C0, 0x1F6C0),
(0x1F6CC, 0x1F6CC),
(0x1F90C, 0x1F90C),
(0x1F90F, 0x1F90F),
(0x1F918, 0x1F91F),
(0x1F926, 0x1F926),
(0x1F930, 0x1F939),
(0x1F93C, 0x1F93E),
(0x1F977, 0x1F977),
(0x1F9B5, 0x1F9B6),
(0x1F9B8, 0x1F9B9),
(0x1F9BB, 0x1F9BB),
(0x1F9CD, 0x1F9CF),
(0x1F9D1, 0x1F9DD),
(0x1FAC3, 0x1FAC5),
(0x1FAF0, 0x1FAF8),
];
const EAW_FULLWIDTH_RANGES: &[(u32, u32)] = &[
(0x3000, 0x3000),
(0xFF01, 0xFF60),
(0xFFE0, 0xFFE6),
];
const EAW_WIDE_RANGES: &[(u32, u32)] = &[
(0x1100, 0x115F),
(0x231A, 0x231B),
(0x2329, 0x232A),
(0x23E9, 0x23EC),
(0x23F0, 0x23F0),
(0x23F3, 0x23F3),
(0x25FD, 0x25FE),
(0x2614, 0x2615),
(0x2630, 0x2637),
(0x2648, 0x2653),
(0x267F, 0x267F),
(0x268A, 0x268F),
(0x2693, 0x2693),
(0x26A1, 0x26A1),
(0x26AA, 0x26AB),
(0x26BD, 0x26BE),
(0x26C4, 0x26C5),
(0x26CE, 0x26CE),
(0x26D4, 0x26D4),
(0x26EA, 0x26EA),
(0x26F2, 0x26F3),
(0x26F5, 0x26F5),
(0x26FA, 0x26FA),
(0x26FD, 0x26FD),
(0x2705, 0x2705),
(0x270A, 0x270B),
(0x2728, 0x2728),
(0x274C, 0x274C),
(0x274E, 0x274E),
(0x2753, 0x2755),
(0x2757, 0x2757),
(0x2795, 0x2797),
(0x27B0, 0x27B0),
(0x27BF, 0x27BF),
(0x2B1B, 0x2B1C),
(0x2B50, 0x2B50),
(0x2B55, 0x2B55),
(0x2E80, 0x2E99),
(0x2E9B, 0x2EF3),
(0x2F00, 0x2FD5),
(0x2FF0, 0x2FFF),
(0x3001, 0x303E),
(0x3041, 0x3096),
(0x3099, 0x30FF),
(0x3105, 0x312F),
(0x3131, 0x318E),
(0x3190, 0x31E5),
(0x31EF, 0x321E),
(0x3220, 0x3247),
(0x3250, 0xA48C),
(0xA490, 0xA4C6),
(0xA960, 0xA97C),
(0xAC00, 0xD7A3),
(0xF900, 0xFAFF),
(0xFE10, 0xFE19),
(0xFE30, 0xFE52),
(0xFE54, 0xFE66),
(0xFE68, 0xFE6B),
(0x16FE0, 0x16FE4),
(0x16FF0, 0x16FF6),
(0x17000, 0x18CD5),
(0x18CFF, 0x18D1E),
(0x18D80, 0x18DF2),
(0x1AFF0, 0x1AFF3),
(0x1AFF5, 0x1AFFB),
(0x1AFFD, 0x1AFFE),
(0x1B000, 0x1B122),
(0x1B132, 0x1B132),
(0x1B150, 0x1B152),
(0x1B155, 0x1B155),
(0x1B164, 0x1B167),
(0x1B170, 0x1B2FB),
(0x1D300, 0x1D356),
(0x1D360, 0x1D376),
(0x1F004, 0x1F004),
(0x1F0CF, 0x1F0CF),
(0x1F18E, 0x1F18E),
(0x1F191, 0x1F19A),
(0x1F200, 0x1F202),
(0x1F210, 0x1F23B),
(0x1F240, 0x1F248),
(0x1F250, 0x1F251),
(0x1F260, 0x1F265),
(0x1F300, 0x1F320),
(0x1F32D, 0x1F335),
(0x1F337, 0x1F37C),
(0x1F37E, 0x1F393),
(0x1F3A0, 0x1F3CA),
(0x1F3CF, 0x1F3D3),
(0x1F3E0, 0x1F3F0),
(0x1F3F4, 0x1F3F4),
(0x1F3F8, 0x1F43E),
(0x1F440, 0x1F440),
(0x1F442, 0x1F4FC),
(0x1F4FF, 0x1F53D),
(0x1F54B, 0x1F54E),
(0x1F550, 0x1F567),
(0x1F57A, 0x1F57A),
(0x1F595, 0x1F596),
(0x1F5A4, 0x1F5A4),
(0x1F5FB, 0x1F64F),
(0x1F680, 0x1F6C5),
(0x1F6CC, 0x1F6CC),
(0x1F6D0, 0x1F6D2),
(0x1F6D5, 0x1F6D8),
(0x1F6DC, 0x1F6DF),
(0x1F6EB, 0x1F6EC),
(0x1F6F4, 0x1F6FC),
(0x1F7E0, 0x1F7EB),
(0x1F7F0, 0x1F7F0),
(0x1F90C, 0x1F93A),
(0x1F93C, 0x1F945),
(0x1F947, 0x1F9FF),
(0x1FA70, 0x1FA7C),
(0x1FA80, 0x1FA8A),
(0x1FA8E, 0x1FAC6),
(0x1FAC8, 0x1FAC8),
(0x1FACD, 0x1FADC),
(0x1FADF, 0x1FAEA),
(0x1FAEF, 0x1FAF8),
(0x20000, 0x2FFFD),
(0x30000, 0x3FFFD),
];
const EAW_AMBIGUOUS_RANGES: &[(u32, u32)] = &[
(0xA1, 0xA1),
(0xA4, 0xA4),
(0xA7, 0xA8),
(0xAA, 0xAA),
(0xAD, 0xAE),
(0xB0, 0xB4),
(0xB6, 0xBA),
(0xBC, 0xBF),
(0xC6, 0xC6),
(0xD0, 0xD0),
(0xD7, 0xD8),
(0xDE, 0xE1),
(0xE6, 0xE6),
(0xE8, 0xEA),
(0xEC, 0xED),
(0xF0, 0xF0),
(0xF2, 0xF3),
(0xF7, 0xFA),
(0xFC, 0xFC),
(0xFE, 0xFE),
(0x101, 0x101),
(0x111, 0x111),
(0x113, 0x113),
(0x11B, 0x11B),
(0x126, 0x127),
(0x12B, 0x12B),
(0x131, 0x133),
(0x138, 0x138),
(0x13F, 0x142),
(0x144, 0x144),
(0x148, 0x14B),
(0x14D, 0x14D),
(0x152, 0x153),
(0x166, 0x167),
(0x16B, 0x16B),
(0x1CE, 0x1CE),
(0x1D0, 0x1D0),
(0x1D2, 0x1D2),
(0x1D4, 0x1D4),
(0x1D6, 0x1D6),
(0x1D8, 0x1D8),
(0x1DA, 0x1DA),
(0x1DC, 0x1DC),
(0x251, 0x251),
(0x261, 0x261),
(0x2C4, 0x2C4),
(0x2C7, 0x2C7),
(0x2C9, 0x2CB),
(0x2CD, 0x2CD),
(0x2D0, 0x2D0),
(0x2D8, 0x2DB),
(0x2DD, 0x2DD),
(0x2DF, 0x2DF),
(0x300, 0x36F),
(0x391, 0x3A1),
(0x3A3, 0x3A9),
(0x3B1, 0x3C1),
(0x3C3, 0x3C9),
(0x401, 0x401),
(0x410, 0x44F),
(0x451, 0x451),
(0x2010, 0x2010),
(0x2013, 0x2016),
(0x2018, 0x2019),
(0x201C, 0x201D),
(0x2020, 0x2022),
(0x2024, 0x2027),
(0x2030, 0x2030),
(0x2032, 0x2033),
(0x2035, 0x2035),
(0x203B, 0x203B),
(0x203E, 0x203E),
(0x2074, 0x2074),
(0x207F, 0x207F),
(0x2081, 0x2084),
(0x20AC, 0x20AC),
(0x2103, 0x2103),
(0x2105, 0x2105),
(0x2109, 0x2109),
(0x2113, 0x2113),
(0x2116, 0x2116),
(0x2121, 0x2122),
(0x2126, 0x2126),
(0x212B, 0x212B),
(0x2153, 0x2154),
(0x215B, 0x215E),
(0x2160, 0x216B),
(0x2170, 0x2179),
(0x2189, 0x2189),
(0x2190, 0x2199),
(0x21B8, 0x21B9),
(0x21D2, 0x21D2),
(0x21D4, 0x21D4),
(0x21E7, 0x21E7),
(0x2200, 0x2200),
(0x2202, 0x2203),
(0x2207, 0x2208),
(0x220B, 0x220B),
(0x220F, 0x220F),
(0x2211, 0x2211),
(0x2215, 0x2215),
(0x221A, 0x221A),
(0x221D, 0x2220),
(0x2223, 0x2223),
(0x2225, 0x2225),
(0x2227, 0x222C),
(0x222E, 0x222E),
(0x2234, 0x2237),
(0x223C, 0x223D),
(0x2248, 0x2248),
(0x224C, 0x224C),
(0x2252, 0x2252),
(0x2260, 0x2261),
(0x2264, 0x2267),
(0x226A, 0x226B),
(0x226E, 0x226F),
(0x2282, 0x2283),
(0x2286, 0x2287),
(0x2295, 0x2295),
(0x2299, 0x2299),
(0x22A5, 0x22A5),
(0x22BF, 0x22BF),
(0x2312, 0x2312),
(0x2460, 0x24E9),
(0x24EB, 0x254B),
(0x2550, 0x2573),
(0x2580, 0x258F),
(0x2592, 0x2595),
(0x25A0, 0x25A1),
(0x25A3, 0x25A9),
(0x25B2, 0x25B3),
(0x25B6, 0x25B7),
(0x25BC, 0x25BD),
(0x25C0, 0x25C1),
(0x25C6, 0x25C8),
(0x25CB, 0x25CB),
(0x25CE, 0x25D1),
(0x25E2, 0x25E5),
(0x25EF, 0x25EF),
(0x2605, 0x2606),
(0x2609, 0x2609),
(0x260E, 0x260F),
(0x261C, 0x261C),
(0x261E, 0x261E),
(0x2640, 0x2640),
(0x2642, 0x2642),
(0x2660, 0x2661),
(0x2663, 0x2665),
(0x2667, 0x266A),
(0x266C, 0x266D),
(0x266F, 0x266F),
(0x269E, 0x269F),
(0x26BF, 0x26BF),
(0x26C6, 0x26CD),
(0x26CF, 0x26D3),
(0x26D5, 0x26E1),
(0x26E3, 0x26E3),
(0x26E8, 0x26E9),
(0x26EB, 0x26F1),
(0x26F4, 0x26F4),
(0x26F6, 0x26F9),
(0x26FB, 0x26FC),
(0x26FE, 0x26FF),
(0x273D, 0x273D),
(0x2776, 0x277F),
(0x2B56, 0x2B59),
(0x3248, 0x324F),
(0xE000, 0xF8FF),
(0xFE00, 0xFE0F),
(0xFFFD, 0xFFFD),
(0x1F100, 0x1F10A),
(0x1F110, 0x1F12D),
(0x1F130, 0x1F169),
(0x1F170, 0x1F18D),
(0x1F18F, 0x1F190),
(0x1F19B, 0x1F1AC),
(0xE0100, 0xE01EF),
(0xF0000, 0xFFFFD),
(0x100000, 0x10FFFD),
];
const RGI_FLAG_PAIRS: &[[u8; 2]] = &[
*b"AC", *b"AD", *b"AE", *b"AF", *b"AG", *b"AI", *b"AL", *b"AM", *b"AO", *b"AQ", *b"AR", *b"AS",
*b"AT", *b"AU", *b"AW", *b"AX", *b"AZ", *b"BA", *b"BB", *b"BD", *b"BE", *b"BF", *b"BG", *b"BH",
*b"BI", *b"BJ", *b"BL", *b"BM", *b"BN", *b"BO", *b"BQ", *b"BR", *b"BS", *b"BT", *b"BV", *b"BW",
*b"BY", *b"BZ", *b"CA", *b"CC", *b"CD", *b"CF", *b"CG", *b"CH", *b"CI", *b"CK", *b"CL", *b"CM",
*b"CN", *b"CO", *b"CP", *b"CQ", *b"CR", *b"CU", *b"CV", *b"CW", *b"CX", *b"CY", *b"CZ", *b"DE",
*b"DG", *b"DJ", *b"DK", *b"DM", *b"DO", *b"DZ", *b"EA", *b"EC", *b"EE", *b"EG", *b"EH", *b"ER",
*b"ES", *b"ET", *b"EU", *b"FI", *b"FJ", *b"FK", *b"FM", *b"FO", *b"FR", *b"GA", *b"GB", *b"GD",
*b"GE", *b"GF", *b"GG", *b"GH", *b"GI", *b"GL", *b"GM", *b"GN", *b"GP", *b"GQ", *b"GR", *b"GS",
*b"GT", *b"GU", *b"GW", *b"GY", *b"HK", *b"HM", *b"HN", *b"HR", *b"HT", *b"HU", *b"IC", *b"ID",
*b"IE", *b"IL", *b"IM", *b"IN", *b"IO", *b"IQ", *b"IR", *b"IS", *b"IT", *b"JE", *b"JM", *b"JO",
*b"JP", *b"KE", *b"KG", *b"KH", *b"KI", *b"KM", *b"KN", *b"KP", *b"KR", *b"KW", *b"KY", *b"KZ",
*b"LA", *b"LB", *b"LC", *b"LI", *b"LK", *b"LR", *b"LS", *b"LT", *b"LU", *b"LV", *b"LY", *b"MA",
*b"MC", *b"MD", *b"ME", *b"MF", *b"MG", *b"MH", *b"MK", *b"ML", *b"MM", *b"MN", *b"MO", *b"MP",
*b"MQ", *b"MR", *b"MS", *b"MT", *b"MU", *b"MV", *b"MW", *b"MX", *b"MY", *b"MZ", *b"NA", *b"NC",
*b"NE", *b"NF", *b"NG", *b"NI", *b"NL", *b"NO", *b"NP", *b"NR", *b"NU", *b"NZ", *b"OM", *b"PA",
*b"PE", *b"PF", *b"PG", *b"PH", *b"PK", *b"PL", *b"PM", *b"PN", *b"PR", *b"PS", *b"PT", *b"PW",
*b"PY", *b"QA", *b"RE", *b"RO", *b"RS", *b"RU", *b"RW", *b"SA", *b"SB", *b"SC", *b"SD", *b"SE",
*b"SG", *b"SH", *b"SI", *b"SJ", *b"SK", *b"SL", *b"SM", *b"SN", *b"SO", *b"SR", *b"SS", *b"ST",
*b"SV", *b"SX", *b"SY", *b"SZ", *b"TA", *b"TC", *b"TD", *b"TF", *b"TG", *b"TH", *b"TJ", *b"TK",
*b"TL", *b"TM", *b"TN", *b"TO", *b"TR", *b"TT", *b"TV", *b"TW", *b"TZ", *b"UA", *b"UG", *b"UM",
*b"UN", *b"US", *b"UY", *b"UZ", *b"VA", *b"VC", *b"VE", *b"VG", *b"VI", *b"VN", *b"VU", *b"WF",
*b"WS", *b"XK", *b"YE", *b"YT", *b"ZA", *b"ZM", *b"ZW",
];