"""
The hardcoded information on this module was loaded from the Unicode file Scripts-15.1.0.txt
https://www.unicode.org/Public/UNIDATA/Scripts.txt
Python's standard "unicodedata" library doesn't offer this table.
"""
from enum import IntEnum
from functools import lru_cache
class UnicodeScript(IntEnum):
COMMON = 0
LATIN = 1
GREEK = 2
CYRILLIC = 3
ARMENIAN = 4
HEBREW = 5
ARABIC = 6
SYRIAC = 7
THAANA = 8
DEVANAGARI = 9
BENGALI = 10
GURMUKHI = 11
GUJARATI = 12
ORIYA = 13
TAMIL = 14
TELUGU = 15
KANNADA = 16
MALAYALAM = 17
SINHALA = 18
THAI = 19
LAO = 20
TIBETAN = 21
MYANMAR = 22
GEORGIAN = 23
HANGUL = 24
ETHIOPIC = 25
CHEROKEE = 26
CANADIAN_ABORIGINAL = 27
OGHAM = 28
RUNIC = 29
KHMER = 30
MONGOLIAN = 31
HIRAGANA = 32
KATAKANA = 33
BOPOMOFO = 34
HAN = 35
YI = 36
OLD_ITALIC = 37
GOTHIC = 38
DESERET = 39
INHERITED = 40
TAGALOG = 41
HANUNOO = 42
BUHID = 43
TAGBANWA = 44
LIMBU = 45
TAI_LE = 46
LINEAR_B = 47
UGARITIC = 48
SHAVIAN = 49
OSMANYA = 50
CYPRIOT = 51
BRAILLE = 52
BUGINESE = 53
COPTIC = 54
NEW_TAI_LUE = 55
GLAGOLITIC = 56
TIFINAGH = 57
SYLOTI_NAGRI = 58
OLD_PERSIAN = 59
KHAROSHTHI = 60
BALINESE = 61
CUNEIFORM = 62
PHOENICIAN = 63
PHAGS_PA = 64
NKO = 65
SUNDANESE = 66
LEPCHA = 67
OL_CHIKI = 68
VAI = 69
SAURASHTRA = 70
KAYAH_LI = 71
REJANG = 72
LYCIAN = 73
CARIAN = 74
LYDIAN = 75
CHAM = 76
TAI_THAM = 77
TAI_VIET = 78
AVESTAN = 79
EGYPTIAN_HIEROGLYPHS = 80
SAMARITAN = 81
LISU = 82
BAMUM = 83
JAVANESE = 84
MEETEI_MAYEK = 85
IMPERIAL_ARAMAIC = 86
OLD_SOUTH_ARABIAN = 87
INSCRIPTIONAL_PARTHIAN = 88
INSCRIPTIONAL_PAHLAVI = 89
OLD_TURKIC = 90
KAITHI = 91
BATAK = 92
BRAHMI = 93
MANDAIC = 94
CHAKMA = 95
MEROITIC_CURSIVE = 96
MEROITIC_HIEROGLYPHS = 97
MIAO = 98
SHARADA = 99
SORA_SOMPENG = 100
TAKRI = 101
CAUCASIAN_ALBANIAN = 102
BASSA_VAH = 103
DUPLOYAN = 104
ELBASAN = 105
GRANTHA = 106
PAHAWH_HMONG = 107
KHOJKI = 108
LINEAR_A = 109
MAHAJANI = 110
MANICHAEAN = 111
MENDE_KIKAKUI = 112
MODI = 113
MRO = 114
OLD_NORTH_ARABIAN = 115
NABATAEAN = 116
PALMYRENE = 117
PAU_CIN_HAU = 118
OLD_PERMIC = 119
PSALTER_PAHLAVI = 120
SIDDHAM = 121
KHUDAWADI = 122
TIRHUTA = 123
WARANG_CITI = 124
AHOM = 125
ANATOLIAN_HIEROGLYPHS = 126
HATRAN = 127
MULTANI = 128
OLD_HUNGARIAN = 129
SIGNWRITING = 130
ADLAM = 131
BHAIKSUKI = 132
MARCHEN = 133
NEWA = 134
OSAGE = 135
TANGUT = 136
MASARAM_GONDI = 137
NUSHU = 138
SOYOMBO = 139
ZANABAZAR_SQUARE = 140
DOGRA = 141
GUNJALA_GONDI = 142
MAKASAR = 143
MEDEFAIDRIN = 144
HANIFI_ROHINGYA = 145
SOGDIAN = 146
OLD_SOGDIAN = 147
ELYMAIC = 148
NANDINAGARI = 149
NYIAKENG_PUACHUE_HMONG = 150
WANCHO = 151
CHORASMIAN = 152
DIVES_AKURU = 153
KHITAN_SMALL_SCRIPT = 154
YEZIDI = 155
CYPRO_MINOAN = 156
OLD_UYGHUR = 157
TANGSA = 158
TOTO = 159
VITHKUQI = 160
KAWI = 161
NAG_MUNDARI = 162
UNKNOWN = 999
UNICODE_RANGE_TO_SCRIPT = (
(0, 31, 0),
(32, 32, 0),
(33, 35, 0),
(36, 36, 0),
(37, 39, 0),
(40, 40, 0),
(41, 41, 0),
(42, 42, 0),
(43, 43, 0),
(44, 44, 0),
(45, 45, 0),
(46, 47, 0),
(48, 57, 0),
(58, 59, 0),
(60, 62, 0),
(63, 64, 0),
(65, 90, 1),
(91, 91, 0),
(92, 92, 0),
(93, 93, 0),
(94, 94, 0),
(95, 95, 0),
(96, 96, 0),
(97, 122, 1),
(123, 123, 0),
(124, 124, 0),
(125, 125, 0),
(126, 126, 0),
(127, 159, 0),
(160, 160, 0),
(161, 161, 0),
(162, 165, 0),
(166, 166, 0),
(167, 167, 0),
(168, 168, 0),
(169, 169, 0),
(170, 170, 1),
(171, 171, 0),
(172, 172, 0),
(173, 173, 0),
(174, 174, 0),
(175, 175, 0),
(176, 176, 0),
(177, 177, 0),
(178, 179, 0),
(180, 180, 0),
(181, 181, 0),
(182, 183, 0),
(184, 184, 0),
(185, 185, 0),
(186, 186, 1),
(187, 187, 0),
(188, 190, 0),
(191, 191, 0),
(192, 214, 1),
(215, 215, 0),
(216, 246, 1),
(247, 247, 0),
(248, 442, 1),
(443, 443, 1),
(444, 447, 1),
(448, 451, 1),
(452, 659, 1),
(660, 660, 1),
(661, 687, 1),
(688, 696, 1),
(697, 705, 0),
(706, 709, 0),
(710, 721, 0),
(722, 735, 0),
(736, 740, 1),
(741, 745, 0),
(746, 747, 34),
(748, 748, 0),
(749, 749, 0),
(750, 750, 0),
(751, 767, 0),
(768, 879, 40),
(880, 883, 2),
(884, 884, 0),
(885, 885, 2),
(886, 887, 2),
(890, 890, 2),
(891, 893, 2),
(894, 894, 0),
(895, 895, 2),
(900, 900, 2),
(901, 901, 0),
(902, 902, 2),
(903, 903, 0),
(904, 906, 2),
(908, 908, 2),
(910, 929, 2),
(931, 993, 2),
(994, 1007, 54),
(1008, 1013, 2),
(1014, 1014, 2),
(1015, 1023, 2),
(1024, 1153, 3),
(1154, 1154, 3),
(1155, 1156, 3),
(1157, 1158, 40),
(1159, 1159, 3),
(1160, 1161, 3),
(1162, 1327, 3),
(1329, 1366, 4),
(1369, 1369, 4),
(1370, 1375, 4),
(1376, 1416, 4),
(1417, 1417, 4),
(1418, 1418, 4),
(1421, 1422, 4),
(1423, 1423, 4),
(1425, 1469, 5),
(1470, 1470, 5),
(1471, 1471, 5),
(1472, 1472, 5),
(1473, 1474, 5),
(1475, 1475, 5),
(1476, 1477, 5),
(1478, 1478, 5),
(1479, 1479, 5),
(1488, 1514, 5),
(1519, 1522, 5),
(1523, 1524, 5),
(1536, 1540, 6),
(1541, 1541, 0),
(1542, 1544, 6),
(1545, 1546, 6),
(1547, 1547, 6),
(1548, 1548, 0),
(1549, 1549, 6),
(1550, 1551, 6),
(1552, 1562, 6),
(1563, 1563, 0),
(1564, 1564, 6),
(1565, 1566, 6),
(1567, 1567, 0),
(1568, 1599, 6),
(1600, 1600, 0),
(1601, 1610, 6),
(1611, 1621, 40),
(1622, 1631, 6),
(1632, 1641, 6),
(1642, 1645, 6),
(1646, 1647, 6),
(1648, 1648, 40),
(1649, 1747, 6),
(1748, 1748, 6),
(1749, 1749, 6),
(1750, 1756, 6),
(1757, 1757, 0),
(1758, 1758, 6),
(1759, 1764, 6),
(1765, 1766, 6),
(1767, 1768, 6),
(1769, 1769, 6),
(1770, 1773, 6),
(1774, 1775, 6),
(1776, 1785, 6),
(1786, 1788, 6),
(1789, 1790, 6),
(1791, 1791, 6),
(1792, 1805, 7),
(1807, 1807, 7),
(1808, 1808, 7),
(1809, 1809, 7),
(1810, 1839, 7),
(1840, 1866, 7),
(1869, 1871, 7),
(1872, 1919, 6),
(1920, 1957, 8),
(1958, 1968, 8),
(1969, 1969, 8),
(1984, 1993, 65),
(1994, 2026, 65),
(2027, 2035, 65),
(2036, 2037, 65),
(2038, 2038, 65),
(2039, 2041, 65),
(2042, 2042, 65),
(2045, 2045, 65),
(2046, 2047, 65),
(2048, 2069, 81),
(2070, 2073, 81),
(2074, 2074, 81),
(2075, 2083, 81),
(2084, 2084, 81),
(2085, 2087, 81),
(2088, 2088, 81),
(2089, 2093, 81),
(2096, 2110, 81),
(2112, 2136, 94),
(2137, 2139, 94),
(2142, 2142, 94),
(2144, 2154, 7),
(2160, 2183, 6),
(2184, 2184, 6),
(2185, 2190, 6),
(2192, 2193, 6),
(2200, 2207, 6),
(2208, 2248, 6),
(2249, 2249, 6),
(2250, 2273, 6),
(2274, 2274, 0),
(2275, 2303, 6),
(2304, 2306, 9),
(2307, 2307, 9),
(2308, 2361, 9),
(2362, 2362, 9),
(2363, 2363, 9),
(2364, 2364, 9),
(2365, 2365, 9),
(2366, 2368, 9),
(2369, 2376, 9),
(2377, 2380, 9),
(2381, 2381, 9),
(2382, 2383, 9),
(2384, 2384, 9),
(2385, 2388, 40),
(2389, 2391, 9),
(2392, 2401, 9),
(2402, 2403, 9),
(2404, 2405, 0),
(2406, 2415, 9),
(2416, 2416, 9),
(2417, 2417, 9),
(2418, 2431, 9),
(2432, 2432, 10),
(2433, 2433, 10),
(2434, 2435, 10),
(2437, 2444, 10),
(2447, 2448, 10),
(2451, 2472, 10),
(2474, 2480, 10),
(2482, 2482, 10),
(2486, 2489, 10),
(2492, 2492, 10),
(2493, 2493, 10),
(2494, 2496, 10),
(2497, 2500, 10),
(2503, 2504, 10),
(2507, 2508, 10),
(2509, 2509, 10),
(2510, 2510, 10),
(2519, 2519, 10),
(2524, 2525, 10),
(2527, 2529, 10),
(2530, 2531, 10),
(2534, 2543, 10),
(2544, 2545, 10),
(2546, 2547, 10),
(2548, 2553, 10),
(2554, 2554, 10),
(2555, 2555, 10),
(2556, 2556, 10),
(2557, 2557, 10),
(2558, 2558, 10),
(2561, 2562, 11),
(2563, 2563, 11),
(2565, 2570, 11),
(2575, 2576, 11),
(2579, 2600, 11),
(2602, 2608, 11),
(2610, 2611, 11),
(2613, 2614, 11),
(2616, 2617, 11),
(2620, 2620, 11),
(2622, 2624, 11),
(2625, 2626, 11),
(2631, 2632, 11),
(2635, 2637, 11),
(2641, 2641, 11),
(2649, 2652, 11),
(2654, 2654, 11),
(2662, 2671, 11),
(2672, 2673, 11),
(2674, 2676, 11),
(2677, 2677, 11),
(2678, 2678, 11),
(2689, 2690, 12),
(2691, 2691, 12),
(2693, 2701, 12),
(2703, 2705, 12),
(2707, 2728, 12),
(2730, 2736, 12),
(2738, 2739, 12),
(2741, 2745, 12),
(2748, 2748, 12),
(2749, 2749, 12),
(2750, 2752, 12),
(2753, 2757, 12),
(2759, 2760, 12),
(2761, 2761, 12),
(2763, 2764, 12),
(2765, 2765, 12),
(2768, 2768, 12),
(2784, 2785, 12),
(2786, 2787, 12),
(2790, 2799, 12),
(2800, 2800, 12),
(2801, 2801, 12),
(2809, 2809, 12),
(2810, 2815, 12),
(2817, 2817, 13),
(2818, 2819, 13),
(2821, 2828, 13),
(2831, 2832, 13),
(2835, 2856, 13),
(2858, 2864, 13),
(2866, 2867, 13),
(2869, 2873, 13),
(2876, 2876, 13),
(2877, 2877, 13),
(2878, 2878, 13),
(2879, 2879, 13),
(2880, 2880, 13),
(2881, 2884, 13),
(2887, 2888, 13),
(2891, 2892, 13),
(2893, 2893, 13),
(2901, 2902, 13),
(2903, 2903, 13),
(2908, 2909, 13),
(2911, 2913, 13),
(2914, 2915, 13),
(2918, 2927, 13),
(2928, 2928, 13),
(2929, 2929, 13),
(2930, 2935, 13),
(2946, 2946, 14),
(2947, 2947, 14),
(2949, 2954, 14),
(2958, 2960, 14),
(2962, 2965, 14),
(2969, 2970, 14),
(2972, 2972, 14),
(2974, 2975, 14),
(2979, 2980, 14),
(2984, 2986, 14),
(2990, 3001, 14),
(3006, 3007, 14),
(3008, 3008, 14),
(3009, 3010, 14),
(3014, 3016, 14),
(3018, 3020, 14),
(3021, 3021, 14),
(3024, 3024, 14),
(3031, 3031, 14),
(3046, 3055, 14),
(3056, 3058, 14),
(3059, 3064, 14),
(3065, 3065, 14),
(3066, 3066, 14),
(3072, 3072, 15),
(3073, 3075, 15),
(3076, 3076, 15),
(3077, 3084, 15),
(3086, 3088, 15),
(3090, 3112, 15),
(3114, 3129, 15),
(3132, 3132, 15),
(3133, 3133, 15),
(3134, 3136, 15),
(3137, 3140, 15),
(3142, 3144, 15),
(3146, 3149, 15),
(3157, 3158, 15),
(3160, 3162, 15),
(3165, 3165, 15),
(3168, 3169, 15),
(3170, 3171, 15),
(3174, 3183, 15),
(3191, 3191, 15),
(3192, 3198, 15),
(3199, 3199, 15),
(3200, 3200, 16),
(3201, 3201, 16),
(3202, 3203, 16),
(3204, 3204, 16),
(3205, 3212, 16),
(3214, 3216, 16),
(3218, 3240, 16),
(3242, 3251, 16),
(3253, 3257, 16),
(3260, 3260, 16),
(3261, 3261, 16),
(3262, 3262, 16),
(3263, 3263, 16),
(3264, 3268, 16),
(3270, 3270, 16),
(3271, 3272, 16),
(3274, 3275, 16),
(3276, 3277, 16),
(3285, 3286, 16),
(3293, 3294, 16),
(3296, 3297, 16),
(3298, 3299, 16),
(3302, 3311, 16),
(3313, 3314, 16),
(3315, 3315, 16),
(3328, 3329, 17),
(3330, 3331, 17),
(3332, 3340, 17),
(3342, 3344, 17),
(3346, 3386, 17),
(3387, 3388, 17),
(3389, 3389, 17),
(3390, 3392, 17),
(3393, 3396, 17),
(3398, 3400, 17),
(3402, 3404, 17),
(3405, 3405, 17),
(3406, 3406, 17),
(3407, 3407, 17),
(3412, 3414, 17),
(3415, 3415, 17),
(3416, 3422, 17),
(3423, 3425, 17),
(3426, 3427, 17),
(3430, 3439, 17),
(3440, 3448, 17),
(3449, 3449, 17),
(3450, 3455, 17),
(3457, 3457, 18),
(3458, 3459, 18),
(3461, 3478, 18),
(3482, 3505, 18),
(3507, 3515, 18),
(3517, 3517, 18),
(3520, 3526, 18),
(3530, 3530, 18),
(3535, 3537, 18),
(3538, 3540, 18),
(3542, 3542, 18),
(3544, 3551, 18),
(3558, 3567, 18),
(3570, 3571, 18),
(3572, 3572, 18),
(3585, 3632, 19),
(3633, 3633, 19),
(3634, 3635, 19),
(3636, 3642, 19),
(3647, 3647, 0),
(3648, 3653, 19),
(3654, 3654, 19),
(3655, 3662, 19),
(3663, 3663, 19),
(3664, 3673, 19),
(3674, 3675, 19),
(3713, 3714, 20),
(3716, 3716, 20),
(3718, 3722, 20),
(3724, 3747, 20),
(3749, 3749, 20),
(3751, 3760, 20),
(3761, 3761, 20),
(3762, 3763, 20),
(3764, 3772, 20),
(3773, 3773, 20),
(3776, 3780, 20),
(3782, 3782, 20),
(3784, 3790, 20),
(3792, 3801, 20),
(3804, 3807, 20),
(3840, 3840, 21),
(3841, 3843, 21),
(3844, 3858, 21),
(3859, 3859, 21),
(3860, 3860, 21),
(3861, 3863, 21),
(3864, 3865, 21),
(3866, 3871, 21),
(3872, 3881, 21),
(3882, 3891, 21),
(3892, 3892, 21),
(3893, 3893, 21),
(3894, 3894, 21),
(3895, 3895, 21),
(3896, 3896, 21),
(3897, 3897, 21),
(3898, 3898, 21),
(3899, 3899, 21),
(3900, 3900, 21),
(3901, 3901, 21),
(3902, 3903, 21),
(3904, 3911, 21),
(3913, 3948, 21),
(3953, 3966, 21),
(3967, 3967, 21),
(3968, 3972, 21),
(3973, 3973, 21),
(3974, 3975, 21),
(3976, 3980, 21),
(3981, 3991, 21),
(3993, 4028, 21),
(4030, 4037, 21),
(4038, 4038, 21),
(4039, 4044, 21),
(4046, 4047, 21),
(4048, 4052, 21),
(4053, 4056, 0),
(4057, 4058, 21),
(4096, 4138, 22),
(4139, 4140, 22),
(4141, 4144, 22),
(4145, 4145, 22),
(4146, 4151, 22),
(4152, 4152, 22),
(4153, 4154, 22),
(4155, 4156, 22),
(4157, 4158, 22),
(4159, 4159, 22),
(4160, 4169, 22),
(4170, 4175, 22),
(4176, 4181, 22),
(4182, 4183, 22),
(4184, 4185, 22),
(4186, 4189, 22),
(4190, 4192, 22),
(4193, 4193, 22),
(4194, 4196, 22),
(4197, 4198, 22),
(4199, 4205, 22),
(4206, 4208, 22),
(4209, 4212, 22),
(4213, 4225, 22),
(4226, 4226, 22),
(4227, 4228, 22),
(4229, 4230, 22),
(4231, 4236, 22),
(4237, 4237, 22),
(4238, 4238, 22),
(4239, 4239, 22),
(4240, 4249, 22),
(4250, 4252, 22),
(4253, 4253, 22),
(4254, 4255, 22),
(4256, 4293, 23),
(4295, 4295, 23),
(4301, 4301, 23),
(4304, 4346, 23),
(4347, 4347, 0),
(4348, 4348, 23),
(4349, 4351, 23),
(4352, 4607, 24),
(4608, 4680, 25),
(4682, 4685, 25),
(4688, 4694, 25),
(4696, 4696, 25),
(4698, 4701, 25),
(4704, 4744, 25),
(4746, 4749, 25),
(4752, 4784, 25),
(4786, 4789, 25),
(4792, 4798, 25),
(4800, 4800, 25),
(4802, 4805, 25),
(4808, 4822, 25),
(4824, 4880, 25),
(4882, 4885, 25),
(4888, 4954, 25),
(4957, 4959, 25),
(4960, 4968, 25),
(4969, 4988, 25),
(4992, 5007, 25),
(5008, 5017, 25),
(5024, 5109, 26),
(5112, 5117, 26),
(5120, 5120, 27),
(5121, 5740, 27),
(5741, 5741, 27),
(5742, 5742, 27),
(5743, 5759, 27),
(5760, 5760, 28),
(5761, 5786, 28),
(5787, 5787, 28),
(5788, 5788, 28),
(5792, 5866, 29),
(5867, 5869, 0),
(5870, 5872, 29),
(5873, 5880, 29),
(5888, 5905, 41),
(5906, 5908, 41),
(5909, 5909, 41),
(5919, 5919, 41),
(5920, 5937, 42),
(5938, 5939, 42),
(5940, 5940, 42),
(5941, 5942, 0),
(5952, 5969, 43),
(5970, 5971, 43),
(5984, 5996, 44),
(5998, 6000, 44),
(6002, 6003, 44),
(6016, 6067, 30),
(6068, 6069, 30),
(6070, 6070, 30),
(6071, 6077, 30),
(6078, 6085, 30),
(6086, 6086, 30),
(6087, 6088, 30),
(6089, 6099, 30),
(6100, 6102, 30),
(6103, 6103, 30),
(6104, 6106, 30),
(6107, 6107, 30),
(6108, 6108, 30),
(6109, 6109, 30),
(6112, 6121, 30),
(6128, 6137, 30),
(6144, 6145, 31),
(6146, 6147, 0),
(6148, 6148, 31),
(6149, 6149, 0),
(6150, 6150, 31),
(6151, 6154, 31),
(6155, 6157, 31),
(6158, 6158, 31),
(6159, 6159, 31),
(6160, 6169, 31),
(6176, 6210, 31),
(6211, 6211, 31),
(6212, 6264, 31),
(6272, 6276, 31),
(6277, 6278, 31),
(6279, 6312, 31),
(6313, 6313, 31),
(6314, 6314, 31),
(6320, 6389, 27),
(6400, 6430, 45),
(6432, 6434, 45),
(6435, 6438, 45),
(6439, 6440, 45),
(6441, 6443, 45),
(6448, 6449, 45),
(6450, 6450, 45),
(6451, 6456, 45),
(6457, 6459, 45),
(6464, 6464, 45),
(6468, 6469, 45),
(6470, 6479, 45),
(6480, 6509, 46),
(6512, 6516, 46),
(6528, 6571, 55),
(6576, 6601, 55),
(6608, 6617, 55),
(6618, 6618, 55),
(6622, 6623, 55),
(6624, 6655, 30),
(6656, 6678, 53),
(6679, 6680, 53),
(6681, 6682, 53),
(6683, 6683, 53),
(6686, 6687, 53),
(6688, 6740, 77),
(6741, 6741, 77),
(6742, 6742, 77),
(6743, 6743, 77),
(6744, 6750, 77),
(6752, 6752, 77),
(6753, 6753, 77),
(6754, 6754, 77),
(6755, 6756, 77),
(6757, 6764, 77),
(6765, 6770, 77),
(6771, 6780, 77),
(6783, 6783, 77),
(6784, 6793, 77),
(6800, 6809, 77),
(6816, 6822, 77),
(6823, 6823, 77),
(6824, 6829, 77),
(6832, 6845, 40),
(6846, 6846, 40),
(6847, 6862, 40),
(6912, 6915, 61),
(6916, 6916, 61),
(6917, 6963, 61),
(6964, 6964, 61),
(6965, 6965, 61),
(6966, 6970, 61),
(6971, 6971, 61),
(6972, 6972, 61),
(6973, 6977, 61),
(6978, 6978, 61),
(6979, 6980, 61),
(6981, 6988, 61),
(6992, 7001, 61),
(7002, 7008, 61),
(7009, 7018, 61),
(7019, 7027, 61),
(7028, 7036, 61),
(7037, 7038, 61),
(7040, 7041, 66),
(7042, 7042, 66),
(7043, 7072, 66),
(7073, 7073, 66),
(7074, 7077, 66),
(7078, 7079, 66),
(7080, 7081, 66),
(7082, 7082, 66),
(7083, 7085, 66),
(7086, 7087, 66),
(7088, 7097, 66),
(7098, 7103, 66),
(7104, 7141, 92),
(7142, 7142, 92),
(7143, 7143, 92),
(7144, 7145, 92),
(7146, 7148, 92),
(7149, 7149, 92),
(7150, 7150, 92),
(7151, 7153, 92),
(7154, 7155, 92),
(7164, 7167, 92),
(7168, 7203, 67),
(7204, 7211, 67),
(7212, 7219, 67),
(7220, 7221, 67),
(7222, 7223, 67),
(7227, 7231, 67),
(7232, 7241, 67),
(7245, 7247, 67),
(7248, 7257, 68),
(7258, 7287, 68),
(7288, 7293, 68),
(7294, 7295, 68),
(7296, 7304, 3),
(7312, 7354, 23),
(7357, 7359, 23),
(7360, 7367, 66),
(7376, 7378, 40),
(7379, 7379, 0),
(7380, 7392, 40),
(7393, 7393, 0),
(7394, 7400, 40),
(7401, 7404, 0),
(7405, 7405, 40),
(7406, 7411, 0),
(7412, 7412, 40),
(7413, 7414, 0),
(7415, 7415, 0),
(7416, 7417, 40),
(7418, 7418, 0),
(7424, 7461, 1),
(7462, 7466, 2),
(7467, 7467, 3),
(7468, 7516, 1),
(7517, 7521, 2),
(7522, 7525, 1),
(7526, 7530, 2),
(7531, 7543, 1),
(7544, 7544, 3),
(7545, 7578, 1),
(7579, 7614, 1),
(7615, 7615, 2),
(7616, 7679, 40),
(7680, 7935, 1),
(7936, 7957, 2),
(7960, 7965, 2),
(7968, 8005, 2),
(8008, 8013, 2),
(8016, 8023, 2),
(8025, 8025, 2),
(8027, 8027, 2),
(8029, 8029, 2),
(8031, 8061, 2),
(8064, 8116, 2),
(8118, 8124, 2),
(8125, 8125, 2),
(8126, 8126, 2),
(8127, 8129, 2),
(8130, 8132, 2),
(8134, 8140, 2),
(8141, 8143, 2),
(8144, 8147, 2),
(8150, 8155, 2),
(8157, 8159, 2),
(8160, 8172, 2),
(8173, 8175, 2),
(8178, 8180, 2),
(8182, 8188, 2),
(8189, 8190, 2),
(8192, 8202, 0),
(8203, 8203, 0),
(8204, 8205, 40),
(8206, 8207, 0),
(8208, 8213, 0),
(8214, 8215, 0),
(8216, 8216, 0),
(8217, 8217, 0),
(8218, 8218, 0),
(8219, 8220, 0),
(8221, 8221, 0),
(8222, 8222, 0),
(8223, 8223, 0),
(8224, 8231, 0),
(8232, 8232, 0),
(8233, 8233, 0),
(8234, 8238, 0),
(8239, 8239, 0),
(8240, 8248, 0),
(8249, 8249, 0),
(8250, 8250, 0),
(8251, 8254, 0),
(8255, 8256, 0),
(8257, 8259, 0),
(8260, 8260, 0),
(8261, 8261, 0),
(8262, 8262, 0),
(8263, 8273, 0),
(8274, 8274, 0),
(8275, 8275, 0),
(8276, 8276, 0),
(8277, 8286, 0),
(8287, 8287, 0),
(8288, 8292, 0),
(8294, 8303, 0),
(8304, 8304, 0),
(8305, 8305, 1),
(8308, 8313, 0),
(8314, 8316, 0),
(8317, 8317, 0),
(8318, 8318, 0),
(8319, 8319, 1),
(8320, 8329, 0),
(8330, 8332, 0),
(8333, 8333, 0),
(8334, 8334, 0),
(8336, 8348, 1),
(8352, 8384, 0),
(8400, 8412, 40),
(8413, 8416, 40),
(8417, 8417, 40),
(8418, 8420, 40),
(8421, 8432, 40),
(8448, 8449, 0),
(8450, 8450, 0),
(8451, 8454, 0),
(8455, 8455, 0),
(8456, 8457, 0),
(8458, 8467, 0),
(8468, 8468, 0),
(8469, 8469, 0),
(8470, 8471, 0),
(8472, 8472, 0),
(8473, 8477, 0),
(8478, 8483, 0),
(8484, 8484, 0),
(8485, 8485, 0),
(8486, 8486, 2),
(8487, 8487, 0),
(8488, 8488, 0),
(8489, 8489, 0),
(8490, 8491, 1),
(8492, 8493, 0),
(8494, 8494, 0),
(8495, 8497, 0),
(8498, 8498, 1),
(8499, 8500, 0),
(8501, 8504, 0),
(8505, 8505, 0),
(8506, 8507, 0),
(8508, 8511, 0),
(8512, 8516, 0),
(8517, 8521, 0),
(8522, 8522, 0),
(8523, 8523, 0),
(8524, 8525, 0),
(8526, 8526, 1),
(8527, 8527, 0),
(8528, 8543, 0),
(8544, 8578, 1),
(8579, 8580, 1),
(8581, 8584, 1),
(8585, 8585, 0),
(8586, 8587, 0),
(8592, 8596, 0),
(8597, 8601, 0),
(8602, 8603, 0),
(8604, 8607, 0),
(8608, 8608, 0),
(8609, 8610, 0),
(8611, 8611, 0),
(8612, 8613, 0),
(8614, 8614, 0),
(8615, 8621, 0),
(8622, 8622, 0),
(8623, 8653, 0),
(8654, 8655, 0),
(8656, 8657, 0),
(8658, 8658, 0),
(8659, 8659, 0),
(8660, 8660, 0),
(8661, 8691, 0),
(8692, 8959, 0),
(8960, 8967, 0),
(8968, 8968, 0),
(8969, 8969, 0),
(8970, 8970, 0),
(8971, 8971, 0),
(8972, 8991, 0),
(8992, 8993, 0),
(8994, 9000, 0),
(9001, 9001, 0),
(9002, 9002, 0),
(9003, 9083, 0),
(9084, 9084, 0),
(9085, 9114, 0),
(9115, 9139, 0),
(9140, 9179, 0),
(9180, 9185, 0),
(9186, 9254, 0),
(9280, 9290, 0),
(9312, 9371, 0),
(9372, 9449, 0),
(9450, 9471, 0),
(9472, 9654, 0),
(9655, 9655, 0),
(9656, 9664, 0),
(9665, 9665, 0),
(9666, 9719, 0),
(9720, 9727, 0),
(9728, 9838, 0),
(9839, 9839, 0),
(9840, 10087, 0),
(10088, 10088, 0),
(10089, 10089, 0),
(10090, 10090, 0),
(10091, 10091, 0),
(10092, 10092, 0),
(10093, 10093, 0),
(10094, 10094, 0),
(10095, 10095, 0),
(10096, 10096, 0),
(10097, 10097, 0),
(10098, 10098, 0),
(10099, 10099, 0),
(10100, 10100, 0),
(10101, 10101, 0),
(10102, 10131, 0),
(10132, 10175, 0),
(10176, 10180, 0),
(10181, 10181, 0),
(10182, 10182, 0),
(10183, 10213, 0),
(10214, 10214, 0),
(10215, 10215, 0),
(10216, 10216, 0),
(10217, 10217, 0),
(10218, 10218, 0),
(10219, 10219, 0),
(10220, 10220, 0),
(10221, 10221, 0),
(10222, 10222, 0),
(10223, 10223, 0),
(10224, 10239, 0),
(10240, 10495, 52),
(10496, 10626, 0),
(10627, 10627, 0),
(10628, 10628, 0),
(10629, 10629, 0),
(10630, 10630, 0),
(10631, 10631, 0),
(10632, 10632, 0),
(10633, 10633, 0),
(10634, 10634, 0),
(10635, 10635, 0),
(10636, 10636, 0),
(10637, 10637, 0),
(10638, 10638, 0),
(10639, 10639, 0),
(10640, 10640, 0),
(10641, 10641, 0),
(10642, 10642, 0),
(10643, 10643, 0),
(10644, 10644, 0),
(10645, 10645, 0),
(10646, 10646, 0),
(10647, 10647, 0),
(10648, 10648, 0),
(10649, 10711, 0),
(10712, 10712, 0),
(10713, 10713, 0),
(10714, 10714, 0),
(10715, 10715, 0),
(10716, 10747, 0),
(10748, 10748, 0),
(10749, 10749, 0),
(10750, 11007, 0),
(11008, 11055, 0),
(11056, 11076, 0),
(11077, 11078, 0),
(11079, 11084, 0),
(11085, 11123, 0),
(11126, 11157, 0),
(11159, 11263, 0),
(11264, 11359, 56),
(11360, 11387, 1),
(11388, 11389, 1),
(11390, 11391, 1),
(11392, 11492, 54),
(11493, 11498, 54),
(11499, 11502, 54),
(11503, 11505, 54),
(11506, 11507, 54),
(11513, 11516, 54),
(11517, 11517, 54),
(11518, 11519, 54),
(11520, 11557, 23),
(11559, 11559, 23),
(11565, 11565, 23),
(11568, 11623, 57),
(11631, 11631, 57),
(11632, 11632, 57),
(11647, 11647, 57),
(11648, 11670, 25),
(11680, 11686, 25),
(11688, 11694, 25),
(11696, 11702, 25),
(11704, 11710, 25),
(11712, 11718, 25),
(11720, 11726, 25),
(11728, 11734, 25),
(11736, 11742, 25),
(11744, 11775, 3),
(11776, 11777, 0),
(11778, 11778, 0),
(11779, 11779, 0),
(11780, 11780, 0),
(11781, 11781, 0),
(11782, 11784, 0),
(11785, 11785, 0),
(11786, 11786, 0),
(11787, 11787, 0),
(11788, 11788, 0),
(11789, 11789, 0),
(11790, 11798, 0),
(11799, 11799, 0),
(11800, 11801, 0),
(11802, 11802, 0),
(11803, 11803, 0),
(11804, 11804, 0),
(11805, 11805, 0),
(11806, 11807, 0),
(11808, 11808, 0),
(11809, 11809, 0),
(11810, 11810, 0),
(11811, 11811, 0),
(11812, 11812, 0),
(11813, 11813, 0),
(11814, 11814, 0),
(11815, 11815, 0),
(11816, 11816, 0),
(11817, 11817, 0),
(11818, 11822, 0),
(11823, 11823, 0),
(11824, 11833, 0),
(11834, 11835, 0),
(11836, 11839, 0),
(11840, 11840, 0),
(11841, 11841, 0),
(11842, 11842, 0),
(11843, 11855, 0),
(11856, 11857, 0),
(11858, 11860, 0),
(11861, 11861, 0),
(11862, 11862, 0),
(11863, 11863, 0),
(11864, 11864, 0),
(11865, 11865, 0),
(11866, 11866, 0),
(11867, 11867, 0),
(11868, 11868, 0),
(11869, 11869, 0),
(11904, 11929, 35),
(11931, 12019, 35),
(12032, 12245, 35),
(12272, 12287, 0),
(12288, 12288, 0),
(12289, 12291, 0),
(12292, 12292, 0),
(12293, 12293, 35),
(12294, 12294, 0),
(12295, 12295, 35),
(12296, 12296, 0),
(12297, 12297, 0),
(12298, 12298, 0),
(12299, 12299, 0),
(12300, 12300, 0),
(12301, 12301, 0),
(12302, 12302, 0),
(12303, 12303, 0),
(12304, 12304, 0),
(12305, 12305, 0),
(12306, 12307, 0),
(12308, 12308, 0),
(12309, 12309, 0),
(12310, 12310, 0),
(12311, 12311, 0),
(12312, 12312, 0),
(12313, 12313, 0),
(12314, 12314, 0),
(12315, 12315, 0),
(12316, 12316, 0),
(12317, 12317, 0),
(12318, 12319, 0),
(12320, 12320, 0),
(12321, 12329, 35),
(12330, 12333, 40),
(12334, 12335, 24),
(12336, 12336, 0),
(12337, 12341, 0),
(12342, 12343, 0),
(12344, 12346, 35),
(12347, 12347, 35),
(12348, 12348, 0),
(12349, 12349, 0),
(12350, 12351, 0),
(12353, 12438, 32),
(12441, 12442, 40),
(12443, 12444, 0),
(12445, 12446, 32),
(12447, 12447, 32),
(12448, 12448, 0),
(12449, 12538, 33),
(12539, 12539, 0),
(12540, 12540, 0),
(12541, 12542, 33),
(12543, 12543, 33),
(12549, 12591, 34),
(12593, 12686, 24),
(12688, 12689, 0),
(12690, 12693, 0),
(12694, 12703, 0),
(12704, 12735, 34),
(12736, 12771, 0),
(12783, 12783, 0),
(12784, 12799, 33),
(12800, 12830, 24),
(12832, 12841, 0),
(12842, 12871, 0),
(12872, 12879, 0),
(12880, 12880, 0),
(12881, 12895, 0),
(12896, 12926, 24),
(12927, 12927, 0),
(12928, 12937, 0),
(12938, 12976, 0),
(12977, 12991, 0),
(12992, 13007, 0),
(13008, 13054, 33),
(13055, 13055, 0),
(13056, 13143, 33),
(13144, 13311, 0),
(13312, 19903, 35),
(19904, 19967, 0),
(19968, 40959, 35),
(40960, 40980, 36),
(40981, 40981, 36),
(40982, 42124, 36),
(42128, 42182, 36),
(42192, 42231, 82),
(42232, 42237, 82),
(42238, 42239, 82),
(42240, 42507, 69),
(42508, 42508, 69),
(42509, 42511, 69),
(42512, 42527, 69),
(42528, 42537, 69),
(42538, 42539, 69),
(42560, 42605, 3),
(42606, 42606, 3),
(42607, 42607, 3),
(42608, 42610, 3),
(42611, 42611, 3),
(42612, 42621, 3),
(42622, 42622, 3),
(42623, 42623, 3),
(42624, 42651, 3),
(42652, 42653, 3),
(42654, 42655, 3),
(42656, 42725, 83),
(42726, 42735, 83),
(42736, 42737, 83),
(42738, 42743, 83),
(42752, 42774, 0),
(42775, 42783, 0),
(42784, 42785, 0),
(42786, 42863, 1),
(42864, 42864, 1),
(42865, 42887, 1),
(42888, 42888, 0),
(42889, 42890, 0),
(42891, 42894, 1),
(42895, 42895, 1),
(42896, 42954, 1),
(42960, 42961, 1),
(42963, 42963, 1),
(42965, 42969, 1),
(42994, 42996, 1),
(42997, 42998, 1),
(42999, 42999, 1),
(43000, 43001, 1),
(43002, 43002, 1),
(43003, 43007, 1),
(43008, 43009, 58),
(43010, 43010, 58),
(43011, 43013, 58),
(43014, 43014, 58),
(43015, 43018, 58),
(43019, 43019, 58),
(43020, 43042, 58),
(43043, 43044, 58),
(43045, 43046, 58),
(43047, 43047, 58),
(43048, 43051, 58),
(43052, 43052, 58),
(43056, 43061, 0),
(43062, 43063, 0),
(43064, 43064, 0),
(43065, 43065, 0),
(43072, 43123, 64),
(43124, 43127, 64),
(43136, 43137, 70),
(43138, 43187, 70),
(43188, 43203, 70),
(43204, 43205, 70),
(43214, 43215, 70),
(43216, 43225, 70),
(43232, 43249, 9),
(43250, 43255, 9),
(43256, 43258, 9),
(43259, 43259, 9),
(43260, 43260, 9),
(43261, 43262, 9),
(43263, 43263, 9),
(43264, 43273, 71),
(43274, 43301, 71),
(43302, 43309, 71),
(43310, 43310, 0),
(43311, 43311, 71),
(43312, 43334, 72),
(43335, 43345, 72),
(43346, 43347, 72),
(43359, 43359, 72),
(43360, 43388, 24),
(43392, 43394, 84),
(43395, 43395, 84),
(43396, 43442, 84),
(43443, 43443, 84),
(43444, 43445, 84),
(43446, 43449, 84),
(43450, 43451, 84),
(43452, 43453, 84),
(43454, 43456, 84),
(43457, 43469, 84),
(43471, 43471, 0),
(43472, 43481, 84),
(43486, 43487, 84),
(43488, 43492, 22),
(43493, 43493, 22),
(43494, 43494, 22),
(43495, 43503, 22),
(43504, 43513, 22),
(43514, 43518, 22),
(43520, 43560, 76),
(43561, 43566, 76),
(43567, 43568, 76),
(43569, 43570, 76),
(43571, 43572, 76),
(43573, 43574, 76),
(43584, 43586, 76),
(43587, 43587, 76),
(43588, 43595, 76),
(43596, 43596, 76),
(43597, 43597, 76),
(43600, 43609, 76),
(43612, 43615, 76),
(43616, 43631, 22),
(43632, 43632, 22),
(43633, 43638, 22),
(43639, 43641, 22),
(43642, 43642, 22),
(43643, 43643, 22),
(43644, 43644, 22),
(43645, 43645, 22),
(43646, 43647, 22),
(43648, 43695, 78),
(43696, 43696, 78),
(43697, 43697, 78),
(43698, 43700, 78),
(43701, 43702, 78),
(43703, 43704, 78),
(43705, 43709, 78),
(43710, 43711, 78),
(43712, 43712, 78),
(43713, 43713, 78),
(43714, 43714, 78),
(43739, 43740, 78),
(43741, 43741, 78),
(43742, 43743, 78),
(43744, 43754, 85),
(43755, 43755, 85),
(43756, 43757, 85),
(43758, 43759, 85),
(43760, 43761, 85),
(43762, 43762, 85),
(43763, 43764, 85),
(43765, 43765, 85),
(43766, 43766, 85),
(43777, 43782, 25),
(43785, 43790, 25),
(43793, 43798, 25),
(43808, 43814, 25),
(43816, 43822, 25),
(43824, 43866, 1),
(43867, 43867, 0),
(43868, 43871, 1),
(43872, 43876, 1),
(43877, 43877, 2),
(43878, 43880, 1),
(43881, 43881, 1),
(43882, 43883, 0),
(43888, 43967, 26),
(43968, 44002, 85),
(44003, 44004, 85),
(44005, 44005, 85),
(44006, 44007, 85),
(44008, 44008, 85),
(44009, 44010, 85),
(44011, 44011, 85),
(44012, 44012, 85),
(44013, 44013, 85),
(44016, 44025, 85),
(44032, 55203, 24),
(55216, 55238, 24),
(55243, 55291, 24),
(63744, 64109, 35),
(64112, 64217, 35),
(64256, 64262, 1),
(64275, 64279, 4),
(64285, 64285, 5),
(64286, 64286, 5),
(64287, 64296, 5),
(64297, 64297, 5),
(64298, 64310, 5),
(64312, 64316, 5),
(64318, 64318, 5),
(64320, 64321, 5),
(64323, 64324, 5),
(64326, 64335, 5),
(64336, 64433, 6),
(64434, 64450, 6),
(64467, 64829, 6),
(64830, 64830, 0),
(64831, 64831, 0),
(64832, 64847, 6),
(64848, 64911, 6),
(64914, 64967, 6),
(64975, 64975, 6),
(65008, 65019, 6),
(65020, 65020, 6),
(65021, 65023, 6),
(65024, 65039, 40),
(65040, 65046, 0),
(65047, 65047, 0),
(65048, 65048, 0),
(65049, 65049, 0),
(65056, 65069, 40),
(65070, 65071, 3),
(65072, 65072, 0),
(65073, 65074, 0),
(65075, 65076, 0),
(65077, 65077, 0),
(65078, 65078, 0),
(65079, 65079, 0),
(65080, 65080, 0),
(65081, 65081, 0),
(65082, 65082, 0),
(65083, 65083, 0),
(65084, 65084, 0),
(65085, 65085, 0),
(65086, 65086, 0),
(65087, 65087, 0),
(65088, 65088, 0),
(65089, 65089, 0),
(65090, 65090, 0),
(65091, 65091, 0),
(65092, 65092, 0),
(65093, 65094, 0),
(65095, 65095, 0),
(65096, 65096, 0),
(65097, 65100, 0),
(65101, 65103, 0),
(65104, 65106, 0),
(65108, 65111, 0),
(65112, 65112, 0),
(65113, 65113, 0),
(65114, 65114, 0),
(65115, 65115, 0),
(65116, 65116, 0),
(65117, 65117, 0),
(65118, 65118, 0),
(65119, 65121, 0),
(65122, 65122, 0),
(65123, 65123, 0),
(65124, 65126, 0),
(65128, 65128, 0),
(65129, 65129, 0),
(65130, 65131, 0),
(65136, 65140, 6),
(65142, 65276, 6),
(65279, 65279, 0),
(65281, 65283, 0),
(65284, 65284, 0),
(65285, 65287, 0),
(65288, 65288, 0),
(65289, 65289, 0),
(65290, 65290, 0),
(65291, 65291, 0),
(65292, 65292, 0),
(65293, 65293, 0),
(65294, 65295, 0),
(65296, 65305, 0),
(65306, 65307, 0),
(65308, 65310, 0),
(65311, 65312, 0),
(65313, 65338, 1),
(65339, 65339, 0),
(65340, 65340, 0),
(65341, 65341, 0),
(65342, 65342, 0),
(65343, 65343, 0),
(65344, 65344, 0),
(65345, 65370, 1),
(65371, 65371, 0),
(65372, 65372, 0),
(65373, 65373, 0),
(65374, 65374, 0),
(65375, 65375, 0),
(65376, 65376, 0),
(65377, 65377, 0),
(65378, 65378, 0),
(65379, 65379, 0),
(65380, 65381, 0),
(65382, 65391, 33),
(65392, 65392, 0),
(65393, 65437, 33),
(65438, 65439, 0),
(65440, 65470, 24),
(65474, 65479, 24),
(65482, 65487, 24),
(65490, 65495, 24),
(65498, 65500, 24),
(65504, 65505, 0),
(65506, 65506, 0),
(65507, 65507, 0),
(65508, 65508, 0),
(65509, 65510, 0),
(65512, 65512, 0),
(65513, 65516, 0),
(65517, 65518, 0),
(65529, 65531, 0),
(65532, 65533, 0),
(65536, 65547, 47),
(65549, 65574, 47),
(65576, 65594, 47),
(65596, 65597, 47),
(65599, 65613, 47),
(65616, 65629, 47),
(65664, 65786, 47),
(65792, 65794, 0),
(65799, 65843, 0),
(65847, 65855, 0),
(65856, 65908, 2),
(65909, 65912, 2),
(65913, 65929, 2),
(65930, 65931, 2),
(65932, 65934, 2),
(65936, 65948, 0),
(65952, 65952, 2),
(66000, 66044, 0),
(66045, 66045, 40),
(66176, 66204, 73),
(66208, 66256, 74),
(66272, 66272, 40),
(66273, 66299, 0),
(66304, 66335, 37),
(66336, 66339, 37),
(66349, 66351, 37),
(66352, 66368, 38),
(66369, 66369, 38),
(66370, 66377, 38),
(66378, 66378, 38),
(66384, 66421, 119),
(66422, 66426, 119),
(66432, 66461, 48),
(66463, 66463, 48),
(66464, 66499, 59),
(66504, 66511, 59),
(66512, 66512, 59),
(66513, 66517, 59),
(66560, 66639, 39),
(66640, 66687, 49),
(66688, 66717, 50),
(66720, 66729, 50),
(66736, 66771, 135),
(66776, 66811, 135),
(66816, 66855, 105),
(66864, 66915, 102),
(66927, 66927, 102),
(66928, 66938, 160),
(66940, 66954, 160),
(66956, 66962, 160),
(66964, 66965, 160),
(66967, 66977, 160),
(66979, 66993, 160),
(66995, 67001, 160),
(67003, 67004, 160),
(67072, 67382, 109),
(67392, 67413, 109),
(67424, 67431, 109),
(67456, 67461, 1),
(67463, 67504, 1),
(67506, 67514, 1),
(67584, 67589, 51),
(67592, 67592, 51),
(67594, 67637, 51),
(67639, 67640, 51),
(67644, 67644, 51),
(67647, 67647, 51),
(67648, 67669, 86),
(67671, 67671, 86),
(67672, 67679, 86),
(67680, 67702, 117),
(67703, 67704, 117),
(67705, 67711, 117),
(67712, 67742, 116),
(67751, 67759, 116),
(67808, 67826, 127),
(67828, 67829, 127),
(67835, 67839, 127),
(67840, 67861, 63),
(67862, 67867, 63),
(67871, 67871, 63),
(67872, 67897, 75),
(67903, 67903, 75),
(67968, 67999, 97),
(68000, 68023, 96),
(68028, 68029, 96),
(68030, 68031, 96),
(68032, 68047, 96),
(68050, 68095, 96),
(68096, 68096, 60),
(68097, 68099, 60),
(68101, 68102, 60),
(68108, 68111, 60),
(68112, 68115, 60),
(68117, 68119, 60),
(68121, 68149, 60),
(68152, 68154, 60),
(68159, 68159, 60),
(68160, 68168, 60),
(68176, 68184, 60),
(68192, 68220, 87),
(68221, 68222, 87),
(68223, 68223, 87),
(68224, 68252, 115),
(68253, 68255, 115),
(68288, 68295, 111),
(68296, 68296, 111),
(68297, 68324, 111),
(68325, 68326, 111),
(68331, 68335, 111),
(68336, 68342, 111),
(68352, 68405, 79),
(68409, 68415, 79),
(68416, 68437, 88),
(68440, 68447, 88),
(68448, 68466, 89),
(68472, 68479, 89),
(68480, 68497, 120),
(68505, 68508, 120),
(68521, 68527, 120),
(68608, 68680, 90),
(68736, 68786, 129),
(68800, 68850, 129),
(68858, 68863, 129),
(68864, 68899, 145),
(68900, 68903, 145),
(68912, 68921, 145),
(69216, 69246, 6),
(69248, 69289, 155),
(69291, 69292, 155),
(69293, 69293, 155),
(69296, 69297, 155),
(69373, 69375, 6),
(69376, 69404, 147),
(69405, 69414, 147),
(69415, 69415, 147),
(69424, 69445, 146),
(69446, 69456, 146),
(69457, 69460, 146),
(69461, 69465, 146),
(69488, 69505, 157),
(69506, 69509, 157),
(69510, 69513, 157),
(69552, 69572, 152),
(69573, 69579, 152),
(69600, 69622, 148),
(69632, 69632, 93),
(69633, 69633, 93),
(69634, 69634, 93),
(69635, 69687, 93),
(69688, 69702, 93),
(69703, 69709, 93),
(69714, 69733, 93),
(69734, 69743, 93),
(69744, 69744, 93),
(69745, 69746, 93),
(69747, 69748, 93),
(69749, 69749, 93),
(69759, 69759, 93),
(69760, 69761, 91),
(69762, 69762, 91),
(69763, 69807, 91),
(69808, 69810, 91),
(69811, 69814, 91),
(69815, 69816, 91),
(69817, 69818, 91),
(69819, 69820, 91),
(69821, 69821, 91),
(69822, 69825, 91),
(69826, 69826, 91),
(69837, 69837, 91),
(69840, 69864, 100),
(69872, 69881, 100),
(69888, 69890, 95),
(69891, 69926, 95),
(69927, 69931, 95),
(69932, 69932, 95),
(69933, 69940, 95),
(69942, 69951, 95),
(69952, 69955, 95),
(69956, 69956, 95),
(69957, 69958, 95),
(69959, 69959, 95),
(69968, 70002, 110),
(70003, 70003, 110),
(70004, 70005, 110),
(70006, 70006, 110),
(70016, 70017, 99),
(70018, 70018, 99),
(70019, 70066, 99),
(70067, 70069, 99),
(70070, 70078, 99),
(70079, 70080, 99),
(70081, 70084, 99),
(70085, 70088, 99),
(70089, 70092, 99),
(70093, 70093, 99),
(70094, 70094, 99),
(70095, 70095, 99),
(70096, 70105, 99),
(70106, 70106, 99),
(70107, 70107, 99),
(70108, 70108, 99),
(70109, 70111, 99),
(70113, 70132, 18),
(70144, 70161, 108),
(70163, 70187, 108),
(70188, 70190, 108),
(70191, 70193, 108),
(70194, 70195, 108),
(70196, 70196, 108),
(70197, 70197, 108),
(70198, 70199, 108),
(70200, 70205, 108),
(70206, 70206, 108),
(70207, 70208, 108),
(70209, 70209, 108),
(70272, 70278, 128),
(70280, 70280, 128),
(70282, 70285, 128),
(70287, 70301, 128),
(70303, 70312, 128),
(70313, 70313, 128),
(70320, 70366, 122),
(70367, 70367, 122),
(70368, 70370, 122),
(70371, 70378, 122),
(70384, 70393, 122),
(70400, 70401, 106),
(70402, 70403, 106),
(70405, 70412, 106),
(70415, 70416, 106),
(70419, 70440, 106),
(70442, 70448, 106),
(70450, 70451, 106),
(70453, 70457, 106),
(70459, 70459, 40),
(70460, 70460, 106),
(70461, 70461, 106),
(70462, 70463, 106),
(70464, 70464, 106),
(70465, 70468, 106),
(70471, 70472, 106),
(70475, 70477, 106),
(70480, 70480, 106),
(70487, 70487, 106),
(70493, 70497, 106),
(70498, 70499, 106),
(70502, 70508, 106),
(70512, 70516, 106),
(70656, 70708, 134),
(70709, 70711, 134),
(70712, 70719, 134),
(70720, 70721, 134),
(70722, 70724, 134),
(70725, 70725, 134),
(70726, 70726, 134),
(70727, 70730, 134),
(70731, 70735, 134),
(70736, 70745, 134),
(70746, 70747, 134),
(70749, 70749, 134),
(70750, 70750, 134),
(70751, 70753, 134),
(70784, 70831, 123),
(70832, 70834, 123),
(70835, 70840, 123),
(70841, 70841, 123),
(70842, 70842, 123),
(70843, 70846, 123),
(70847, 70848, 123),
(70849, 70849, 123),
(70850, 70851, 123),
(70852, 70853, 123),
(70854, 70854, 123),
(70855, 70855, 123),
(70864, 70873, 123),
(71040, 71086, 121),
(71087, 71089, 121),
(71090, 71093, 121),
(71096, 71099, 121),
(71100, 71101, 121),
(71102, 71102, 121),
(71103, 71104, 121),
(71105, 71127, 121),
(71128, 71131, 121),
(71132, 71133, 121),
(71168, 71215, 113),
(71216, 71218, 113),
(71219, 71226, 113),
(71227, 71228, 113),
(71229, 71229, 113),
(71230, 71230, 113),
(71231, 71232, 113),
(71233, 71235, 113),
(71236, 71236, 113),
(71248, 71257, 113),
(71264, 71276, 31),
(71296, 71338, 101),
(71339, 71339, 101),
(71340, 71340, 101),
(71341, 71341, 101),
(71342, 71343, 101),
(71344, 71349, 101),
(71350, 71350, 101),
(71351, 71351, 101),
(71352, 71352, 101),
(71353, 71353, 101),
(71360, 71369, 101),
(71424, 71450, 125),
(71453, 71455, 125),
(71456, 71457, 125),
(71458, 71461, 125),
(71462, 71462, 125),
(71463, 71467, 125),
(71472, 71481, 125),
(71482, 71483, 125),
(71484, 71486, 125),
(71487, 71487, 125),
(71488, 71494, 125),
(71680, 71723, 141),
(71724, 71726, 141),
(71727, 71735, 141),
(71736, 71736, 141),
(71737, 71738, 141),
(71739, 71739, 141),
(71840, 71903, 124),
(71904, 71913, 124),
(71914, 71922, 124),
(71935, 71935, 124),
(71936, 71942, 153),
(71945, 71945, 153),
(71948, 71955, 153),
(71957, 71958, 153),
(71960, 71983, 153),
(71984, 71989, 153),
(71991, 71992, 153),
(71995, 71996, 153),
(71997, 71997, 153),
(71998, 71998, 153),
(71999, 71999, 153),
(72000, 72000, 153),
(72001, 72001, 153),
(72002, 72002, 153),
(72003, 72003, 153),
(72004, 72006, 153),
(72016, 72025, 153),
(72096, 72103, 149),
(72106, 72144, 149),
(72145, 72147, 149),
(72148, 72151, 149),
(72154, 72155, 149),
(72156, 72159, 149),
(72160, 72160, 149),
(72161, 72161, 149),
(72162, 72162, 149),
(72163, 72163, 149),
(72164, 72164, 149),
(72192, 72192, 140),
(72193, 72202, 140),
(72203, 72242, 140),
(72243, 72248, 140),
(72249, 72249, 140),
(72250, 72250, 140),
(72251, 72254, 140),
(72255, 72262, 140),
(72263, 72263, 140),
(72272, 72272, 139),
(72273, 72278, 139),
(72279, 72280, 139),
(72281, 72283, 139),
(72284, 72329, 139),
(72330, 72342, 139),
(72343, 72343, 139),
(72344, 72345, 139),
(72346, 72348, 139),
(72349, 72349, 139),
(72350, 72354, 139),
(72368, 72383, 27),
(72384, 72440, 118),
(72448, 72457, 9),
(72704, 72712, 132),
(72714, 72750, 132),
(72751, 72751, 132),
(72752, 72758, 132),
(72760, 72765, 132),
(72766, 72766, 132),
(72767, 72767, 132),
(72768, 72768, 132),
(72769, 72773, 132),
(72784, 72793, 132),
(72794, 72812, 132),
(72816, 72817, 133),
(72818, 72847, 133),
(72850, 72871, 133),
(72873, 72873, 133),
(72874, 72880, 133),
(72881, 72881, 133),
(72882, 72883, 133),
(72884, 72884, 133),
(72885, 72886, 133),
(72960, 72966, 137),
(72968, 72969, 137),
(72971, 73008, 137),
(73009, 73014, 137),
(73018, 73018, 137),
(73020, 73021, 137),
(73023, 73029, 137),
(73030, 73030, 137),
(73031, 73031, 137),
(73040, 73049, 137),
(73056, 73061, 142),
(73063, 73064, 142),
(73066, 73097, 142),
(73098, 73102, 142),
(73104, 73105, 142),
(73107, 73108, 142),
(73109, 73109, 142),
(73110, 73110, 142),
(73111, 73111, 142),
(73112, 73112, 142),
(73120, 73129, 142),
(73440, 73458, 143),
(73459, 73460, 143),
(73461, 73462, 143),
(73463, 73464, 143),
(73472, 73473, 161),
(73474, 73474, 161),
(73475, 73475, 161),
(73476, 73488, 161),
(73490, 73523, 161),
(73524, 73525, 161),
(73526, 73530, 161),
(73534, 73535, 161),
(73536, 73536, 161),
(73537, 73537, 161),
(73538, 73538, 161),
(73539, 73551, 161),
(73552, 73561, 161),
(73648, 73648, 82),
(73664, 73684, 14),
(73685, 73692, 14),
(73693, 73696, 14),
(73697, 73713, 14),
(73727, 73727, 14),
(73728, 74649, 62),
(74752, 74862, 62),
(74864, 74868, 62),
(74880, 75075, 62),
(77712, 77808, 156),
(77809, 77810, 156),
(77824, 78895, 80),
(78896, 78911, 80),
(78912, 78912, 80),
(78913, 78918, 80),
(78919, 78933, 80),
(82944, 83526, 126),
(92160, 92728, 83),
(92736, 92766, 114),
(92768, 92777, 114),
(92782, 92783, 114),
(92784, 92862, 158),
(92864, 92873, 158),
(92880, 92909, 103),
(92912, 92916, 103),
(92917, 92917, 103),
(92928, 92975, 107),
(92976, 92982, 107),
(92983, 92987, 107),
(92988, 92991, 107),
(92992, 92995, 107),
(92996, 92996, 107),
(92997, 92997, 107),
(93008, 93017, 107),
(93019, 93025, 107),
(93027, 93047, 107),
(93053, 93071, 107),
(93760, 93823, 144),
(93824, 93846, 144),
(93847, 93850, 144),
(93952, 94026, 98),
(94031, 94031, 98),
(94032, 94032, 98),
(94033, 94087, 98),
(94095, 94098, 98),
(94099, 94111, 98),
(94176, 94176, 136),
(94177, 94177, 138),
(94178, 94178, 35),
(94179, 94179, 35),
(94180, 94180, 154),
(94192, 94193, 35),
(94208, 100343, 136),
(100352, 101119, 136),
(101120, 101589, 154),
(101632, 101640, 136),
(110576, 110579, 33),
(110581, 110587, 33),
(110589, 110590, 33),
(110592, 110592, 33),
(110593, 110879, 32),
(110880, 110882, 33),
(110898, 110898, 32),
(110928, 110930, 32),
(110933, 110933, 33),
(110948, 110951, 33),
(110960, 111355, 138),
(113664, 113770, 104),
(113776, 113788, 104),
(113792, 113800, 104),
(113808, 113817, 104),
(113820, 113820, 104),
(113821, 113822, 104),
(113823, 113823, 104),
(113824, 113827, 0),
(118528, 118573, 40),
(118576, 118598, 40),
(118608, 118723, 0),
(118784, 119029, 0),
(119040, 119078, 0),
(119081, 119140, 0),
(119141, 119142, 0),
(119143, 119145, 40),
(119146, 119148, 0),
(119149, 119154, 0),
(119155, 119162, 0),
(119163, 119170, 40),
(119171, 119172, 0),
(119173, 119179, 40),
(119180, 119209, 0),
(119210, 119213, 40),
(119214, 119274, 0),
(119296, 119361, 2),
(119362, 119364, 2),
(119365, 119365, 2),
(119488, 119507, 0),
(119520, 119539, 0),
(119552, 119638, 0),
(119648, 119672, 0),
(119808, 119892, 0),
(119894, 119964, 0),
(119966, 119967, 0),
(119970, 119970, 0),
(119973, 119974, 0),
(119977, 119980, 0),
(119982, 119993, 0),
(119995, 119995, 0),
(119997, 120003, 0),
(120005, 120069, 0),
(120071, 120074, 0),
(120077, 120084, 0),
(120086, 120092, 0),
(120094, 120121, 0),
(120123, 120126, 0),
(120128, 120132, 0),
(120134, 120134, 0),
(120138, 120144, 0),
(120146, 120485, 0),
(120488, 120512, 0),
(120513, 120513, 0),
(120514, 120538, 0),
(120539, 120539, 0),
(120540, 120570, 0),
(120571, 120571, 0),
(120572, 120596, 0),
(120597, 120597, 0),
(120598, 120628, 0),
(120629, 120629, 0),
(120630, 120654, 0),
(120655, 120655, 0),
(120656, 120686, 0),
(120687, 120687, 0),
(120688, 120712, 0),
(120713, 120713, 0),
(120714, 120744, 0),
(120745, 120745, 0),
(120746, 120770, 0),
(120771, 120771, 0),
(120772, 120779, 0),
(120782, 120831, 0),
(120832, 121343, 130),
(121344, 121398, 130),
(121399, 121402, 130),
(121403, 121452, 130),
(121453, 121460, 130),
(121461, 121461, 130),
(121462, 121475, 130),
(121476, 121476, 130),
(121477, 121478, 130),
(121479, 121483, 130),
(121499, 121503, 130),
(121505, 121519, 130),
(122624, 122633, 1),
(122634, 122634, 1),
(122635, 122654, 1),
(122661, 122666, 1),
(122880, 122886, 56),
(122888, 122904, 56),
(122907, 122913, 56),
(122915, 122916, 56),
(122918, 122922, 56),
(122928, 122989, 3),
(123023, 123023, 3),
(123136, 123180, 150),
(123184, 123190, 150),
(123191, 123197, 150),
(123200, 123209, 150),
(123214, 123214, 150),
(123215, 123215, 150),
(123536, 123565, 159),
(123566, 123566, 159),
(123584, 123627, 151),
(123628, 123631, 151),
(123632, 123641, 151),
(123647, 123647, 151),
(124112, 124138, 162),
(124139, 124139, 162),
(124140, 124143, 162),
(124144, 124153, 162),
(124896, 124902, 25),
(124904, 124907, 25),
(124909, 124910, 25),
(124912, 124926, 25),
(124928, 125124, 112),
(125127, 125135, 112),
(125136, 125142, 112),
(125184, 125251, 131),
(125252, 125258, 131),
(125259, 125259, 131),
(125264, 125273, 131),
(125278, 125279, 131),
(126065, 126123, 0),
(126124, 126124, 0),
(126125, 126127, 0),
(126128, 126128, 0),
(126129, 126132, 0),
(126209, 126253, 0),
(126254, 126254, 0),
(126255, 126269, 0),
(126464, 126467, 6),
(126469, 126495, 6),
(126497, 126498, 6),
(126500, 126500, 6),
(126503, 126503, 6),
(126505, 126514, 6),
(126516, 126519, 6),
(126521, 126521, 6),
(126523, 126523, 6),
(126530, 126530, 6),
(126535, 126535, 6),
(126537, 126537, 6),
(126539, 126539, 6),
(126541, 126543, 6),
(126545, 126546, 6),
(126548, 126548, 6),
(126551, 126551, 6),
(126553, 126553, 6),
(126555, 126555, 6),
(126557, 126557, 6),
(126559, 126559, 6),
(126561, 126562, 6),
(126564, 126564, 6),
(126567, 126570, 6),
(126572, 126578, 6),
(126580, 126583, 6),
(126585, 126588, 6),
(126590, 126590, 6),
(126592, 126601, 6),
(126603, 126619, 6),
(126625, 126627, 6),
(126629, 126633, 6),
(126635, 126651, 6),
(126704, 126705, 6),
(126976, 127019, 0),
(127024, 127123, 0),
(127136, 127150, 0),
(127153, 127167, 0),
(127169, 127183, 0),
(127185, 127221, 0),
(127232, 127244, 0),
(127245, 127405, 0),
(127462, 127487, 0),
(127488, 127488, 32),
(127489, 127490, 0),
(127504, 127547, 0),
(127552, 127560, 0),
(127568, 127569, 0),
(127584, 127589, 0),
(127744, 127994, 0),
(127995, 127999, 0),
(128000, 128727, 0),
(128732, 128748, 0),
(128752, 128764, 0),
(128768, 128886, 0),
(128891, 128985, 0),
(128992, 129003, 0),
(129008, 129008, 0),
(129024, 129035, 0),
(129040, 129095, 0),
(129104, 129113, 0),
(129120, 129159, 0),
(129168, 129197, 0),
(129200, 129201, 0),
(129280, 129619, 0),
(129632, 129645, 0),
(129648, 129660, 0),
(129664, 129672, 0),
(129680, 129725, 0),
(129727, 129733, 0),
(129742, 129755, 0),
(129760, 129768, 0),
(129776, 129784, 0),
(129792, 129938, 0),
(129940, 129994, 0),
(130032, 130041, 0),
(131072, 173791, 35),
(173824, 177977, 35),
(177984, 178205, 35),
(178208, 183969, 35),
(183984, 191456, 35),
(191472, 192093, 35),
(194560, 195101, 35),
(196608, 201546, 35),
(201552, 205743, 35),
(917505, 917505, 0),
(917536, 917631, 0),
(917760, 917999, 40),
)
@lru_cache(maxsize=None)
def get_unicode_script(char: str) -> UnicodeScript:
chr_search = ord(char)
for range_start, range_end, script_code in UNICODE_RANGE_TO_SCRIPT:
if range_start <= chr_search <= range_end:
return UnicodeScript(script_code)
if chr_search < range_start:
break
return UnicodeScript(999) # default to Unknown