1 // Generated by update_unicode.py DO NOT MODIFY
2 // Unicode version: 13.0.0
3 
4 const FLAG_ID_START: u8 = 1;
5 const FLAG_ID_CONTINUE: u8 = 2;
6 
7 pub struct CharInfo {
8     flags: u8,
9 }
10 
11 impl CharInfo {
is_id_start(&self) -> bool12     pub fn is_id_start(&self) -> bool {
13         self.flags & FLAG_ID_START != 0
14     }
15 
is_id_continue(&self) -> bool16     pub fn is_id_continue(&self) -> bool {
17         self.flags & FLAG_ID_CONTINUE != 0
18     }
19 }
20 
21 pub const CHAR_INFO_TABLE: &'static [CharInfo] = &[
22     CharInfo { flags: 0 },
23     CharInfo { flags: 2 },
24     CharInfo { flags: 3 },
25 ];
26 
27 pub const INDEX1: &'static [u8] = &[
28     0, 0, 0, 1, 2, 3, 2, 4, 0, 0, 5, 6, 7, 8, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
29     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 9, 10, 11, 0, 12, 12, 12, 12, 12, 12, 12, 13, 14, 7, 15, 7,
30     7, 7, 7, 16, 7, 7, 7, 7, 7, 7, 7, 7, 17, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 7, 18, 7, 7, 19, 20,
31     12, 21, 22, 7, 23, 24, 0, 25, 7, 7, 26, 12, 27, 28, 7, 7, 7, 7, 7, 29, 30, 31, 0, 32, 7, 12,
32     33, 7, 7, 7, 7, 7, 34, 35, 36, 7, 26, 37, 7, 38, 39, 0, 7, 40, 4, 0, 0, 0, 7, 41, 42, 43, 44,
33     12, 45, 7, 7, 46, 12, 47, 48, 2, 49, 50, 51, 52, 53, 54, 48, 55, 56, 50, 51, 57, 58, 59, 60,
34     61, 62, 15, 51, 63, 64, 65, 48, 66, 67, 50, 51, 63, 68, 69, 48, 70, 71, 72, 73, 74, 75, 76, 60,
35     0, 77, 78, 51, 79, 80, 81, 48, 0, 82, 78, 51, 83, 80, 84, 48, 85, 86, 78, 7, 87, 88, 89, 48,
36     90, 91, 92, 7, 93, 94, 95, 60, 96, 2, 7, 7, 97, 98, 1, 0, 0, 99, 7, 100, 101, 102, 103, 0, 0,
37     65, 104, 1, 105, 106, 7, 107, 20, 108, 109, 12, 110, 111, 0, 0, 0, 7, 7, 26, 112, 1, 113, 114,
38     115, 116, 117, 7, 7, 118, 7, 7, 119, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
39     7, 120, 121, 7, 7, 120, 7, 7, 122, 123, 8, 7, 7, 7, 123, 7, 7, 7, 124, 125, 126, 7, 0, 7, 7, 7,
40     7, 7, 127, 2, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
41     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 128, 7, 2, 4, 7, 7, 7, 7, 129, 19, 130, 131, 7, 131, 7, 132, 130,
42     133, 7, 7, 7, 134, 12, 135, 1, 0, 136, 1, 7, 7, 7, 7, 7, 19, 7, 7, 137, 7, 7, 7, 7, 138, 7,
43     139, 140, 140, 60, 7, 141, 142, 7, 7, 143, 7, 144, 25, 0, 0, 7, 145, 7, 7, 7, 146, 12, 147, 1,
44     1, 148, 21, 149, 0, 0, 0, 150, 7, 7, 134, 151, 1, 152, 153, 154, 7, 155, 36, 7, 7, 34, 153, 7,
45     7, 134, 156, 157, 36, 7, 141, 19, 7, 7, 158, 0, 159, 160, 161, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
46     7, 12, 12, 12, 162, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 127, 7, 7, 127, 163, 7,
47     141, 7, 7, 7, 164, 165, 166, 107, 165, 0, 0, 0, 167, 149, 168, 0, 169, 0, 107, 0, 0, 0, 110,
48     170, 149, 171, 172, 173, 174, 175, 0, 7, 7, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
49     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
50     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
51     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
52     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
53     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 139, 7, 7, 139, 7,
54     7, 7, 7, 7, 7, 7, 7, 176, 177, 7, 7, 118, 7, 7, 7, 178, 167, 7, 179, 180, 180, 180, 180, 12,
55     12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
56     0, 0, 181, 0, 182, 183, 2, 7, 7, 7, 7, 184, 2, 7, 7, 7, 7, 119, 185, 7, 7, 2, 7, 7, 7, 7, 139,
57     0, 7, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
58     0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
59     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
60     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
61     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
62     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
63     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
64     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
65     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
66     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
67     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
68     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
69     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
70     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
71     7, 7, 7, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
72     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
73     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
74     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
75     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
76     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
77     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
78     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
79     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
80     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
81     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
82     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
83     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
84     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
85     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
86     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
87     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
88     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
89     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
90     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
91     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
92     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
93     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
94     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
95     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
96     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
97     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
98     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
99     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
100     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
101     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
102     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
103     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
104     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
105     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
106     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
107     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
108     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
109     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
110     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
111     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
112     7, 7, 7, 7, 7, 7, 107, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
113     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
114     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 107, 0, 0, 0, 0, 7, 7, 141, 7, 7, 7, 7, 7, 7,
115     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 107, 7, 186, 0, 7, 7, 187, 188, 7, 189, 7, 7, 7, 7, 7, 126, 0,
116     190, 191, 7, 7, 7, 7, 7, 192, 7, 7, 7, 193, 0, 0, 185, 194, 7, 195, 0, 7, 7, 7, 196, 197, 7, 7,
117     134, 198, 1, 12, 199, 36, 7, 200, 7, 201, 153, 7, 107, 45, 7, 7, 202, 203, 1, 204, 205, 7, 7,
118     206, 207, 208, 1, 7, 209, 7, 7, 7, 210, 211, 212, 26, 213, 214, 215, 180, 7, 7, 119, 144, 7, 7,
119     7, 7, 7, 7, 7, 216, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
120     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
121     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
122     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
123     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
124     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
125     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
126     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
127     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
128     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
129     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
130     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
131     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
132     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
133     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
134     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
135     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
136     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
137     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
138     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
139     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
140     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
141     7, 7, 196, 7, 217, 7, 7, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
142     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
143     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
144     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
145     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
146     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
147     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
148     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
149     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
150     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
151     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
152     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
153     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
154     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
155     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
156     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
157     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7,
158     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 141, 7, 7, 7, 7, 7, 7, 144, 0, 0, 179, 218, 51,
159     219, 220, 7, 7, 7, 7, 7, 7, 10, 0, 221, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
160     7, 7, 7, 141, 0, 7, 7, 7, 7, 191, 7, 7, 42, 0, 0, 143, 12, 0, 12, 222, 223, 0, 0, 41, 7, 7, 7,
161     7, 7, 7, 7, 107, 0, 1, 2, 3, 2, 4, 224, 7, 7, 7, 7, 139, 225, 226, 0, 0,
162 ];
163 
164 pub const INDEX2: &'static [u8] = &[
165     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
166     0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 1,
167     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,
168     0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
169     2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
170     2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0,
171     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 0, 2,
172     0, 0, 0, 0, 0, 0, 2, 1, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
173     2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 0, 0, 2, 2, 2, 2, 2, 2,
174     2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0,
175     0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,
176     0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2,
177     2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
178     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 2, 2,
179     1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1,
180     1, 1, 1, 1, 1, 2, 2, 1, 1, 0, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 0, 0, 2,
181     2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 2, 2,
182     2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
183     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 2, 2, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0,
184     2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 0, 0,
185     2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
186     2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
187     1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
188     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2,
189     2, 2, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2,
190     2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2,
191     2, 0, 2, 0, 0, 0, 2, 2, 2, 2, 0, 0, 1, 2, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 2, 0,
192     0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0,
193     0, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 0, 2, 2, 0, 2, 2, 0, 2, 2, 0, 0, 1, 0, 1, 1,
194     1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 2, 0,
195     0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
196     0, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, 1, 2, 1, 1,
197     1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
198     0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2,
199     1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 2, 2, 0, 2,
200     0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2,
201     2, 0, 2, 2, 2, 2, 0, 0, 0, 2, 2, 0, 2, 0, 2, 2, 0, 0, 0, 2, 2, 0, 0, 0, 2, 2, 2, 0, 0, 0, 2, 2,
202     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0,
203     2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2,
204     2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 1, 1,
205     1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 2, 2, 2, 0, 0, 0, 0, 0,
206     2, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, 1, 2, 1, 1,
207     0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
208     1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 1, 1,
209     1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 2, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 2,
210     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
211     2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0,
212     2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
213     0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
214     2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2,
215     2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 0,
216     2, 2, 2, 2, 2, 0, 2, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 2, 2, 2,
217     0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1,
218     2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0,
219     1, 1, 1, 1, 1, 0, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1,
220     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
221     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1,
222     1, 2, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
223     2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
224     2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2,
225     2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 0, 0,
226     2, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2,
227     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
228     1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0,
229     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2,
230     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
231     2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
232     2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 2, 0, 0, 0, 0, 2, 1, 0, 0,
233     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, 0, 0, 0, 0,
234     2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0,
235     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0,
236     2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0,
237     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0,
238     2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1,
239     0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
240     1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0,
241     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
242     1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
243     1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 2, 2, 2,
244     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
245     1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 1, 1, 1, 2, 0, 0, 0, 0, 0,
246     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 0, 2,
247     2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0,
248     2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
249     0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
250     0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 2, 2,
251     2, 2, 2, 2, 0, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2,
252     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 0,
253     2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 1, 1, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
254     2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
255     2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0,
256     0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0,
257     2, 2, 2, 2, 2, 2, 2, 0, 0, 1, 1, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
258     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
259     0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
260     0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
261     2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0,
262     2, 2, 1, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0,
263     2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
264     1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 0, 2, 2, 1,
265     2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
266     2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
267     2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 0,
268     2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
269     2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 1, 1, 1, 2, 2,
270     1, 2, 1, 1, 1, 2, 2, 1, 1, 2, 2, 2, 2, 2, 1, 1, 2, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
271     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
272     0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
273     2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2,
274     0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 0,
275     2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
276     0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
277     0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2,
278     0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 0, 0, 0,
279 ];
280 
281 const SHIFT: usize = 4;
282 
char_info(c: char) -> &'static CharInfo283 pub fn char_info(c: char) -> &'static CharInfo {
284     let code = c as usize;
285     let index = INDEX1[code >> SHIFT] as usize;
286     let index = INDEX2[(index << SHIFT) + (code & ((1 << SHIFT) - 1))] as usize;
287 
288     &CHAR_INFO_TABLE[index]
289 }
290 
291 pub const IS_ID_START_TABLE: &'static [bool] = &[
292     false, false, false, false, false, false, false, false, false, false, false, false, false,
293     false, false, false, false, false, false, false, false, false, false, false, false, false,
294     false, false, false, false, false, false, false, false, false, false, false, false, false,
295     false, false, false, false, false, false, false, false, false, false, false, false, false,
296     false, false, false, false, false, false, false, false, false, false, false, false, false,
297     true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
298     true, true, true, true, true, true, true, true, true, true, false, false, false, false, false,
299     false, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
300     true, true, true, true, true, true, true, true, true, true, true, true, false, false, false,
301     false, false,
302 ];
303 
304 pub const IS_ID_CONTINUE_TABLE: &'static [bool] = &[
305     false, false, false, false, false, false, false, false, false, false, false, false, false,
306     false, false, false, false, false, false, false, false, false, false, false, false, false,
307     false, false, false, false, false, false, false, false, false, false, false, false, false,
308     false, false, false, false, false, false, false, false, false, true, true, true, true, true,
309     true, true, true, true, true, false, false, false, false, false, false, false, true, true,
310     true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
311     true, true, true, true, true, true, true, true, false, false, false, false, true, false, true,
312     true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
313     true, true, true, true, true, true, true, true, true, false, false, false, false, false,
314 ];
315 
is_id_start_non_bmp(c: char) -> bool316 pub fn is_id_start_non_bmp(c: char) -> bool {
317     if c >= '\u{10000}' && c <= '\u{1000B}' {
318         return true;
319     }
320     if c >= '\u{1000D}' && c <= '\u{10026}' {
321         return true;
322     }
323     if c >= '\u{10028}' && c <= '\u{1003A}' {
324         return true;
325     }
326     if c >= '\u{1003C}' && c <= '\u{1003D}' {
327         return true;
328     }
329     if c >= '\u{1003F}' && c <= '\u{1004D}' {
330         return true;
331     }
332     if c >= '\u{10050}' && c <= '\u{1005D}' {
333         return true;
334     }
335     if c >= '\u{10080}' && c <= '\u{100FA}' {
336         return true;
337     }
338     if c >= '\u{10140}' && c <= '\u{10174}' {
339         return true;
340     }
341     if c >= '\u{10280}' && c <= '\u{1029C}' {
342         return true;
343     }
344     if c >= '\u{102A0}' && c <= '\u{102D0}' {
345         return true;
346     }
347     if c >= '\u{10300}' && c <= '\u{1031F}' {
348         return true;
349     }
350     if c >= '\u{1032D}' && c <= '\u{1034A}' {
351         return true;
352     }
353     if c >= '\u{10350}' && c <= '\u{10375}' {
354         return true;
355     }
356     if c >= '\u{10380}' && c <= '\u{1039D}' {
357         return true;
358     }
359     if c >= '\u{103A0}' && c <= '\u{103C3}' {
360         return true;
361     }
362     if c >= '\u{103C8}' && c <= '\u{103CF}' {
363         return true;
364     }
365     if c >= '\u{103D1}' && c <= '\u{103D5}' {
366         return true;
367     }
368     if c >= '\u{10400}' && c <= '\u{1049D}' {
369         return true;
370     }
371     if c >= '\u{104B0}' && c <= '\u{104D3}' {
372         return true;
373     }
374     if c >= '\u{104D8}' && c <= '\u{104FB}' {
375         return true;
376     }
377     if c >= '\u{10500}' && c <= '\u{10527}' {
378         return true;
379     }
380     if c >= '\u{10530}' && c <= '\u{10563}' {
381         return true;
382     }
383     if c >= '\u{10600}' && c <= '\u{10736}' {
384         return true;
385     }
386     if c >= '\u{10740}' && c <= '\u{10755}' {
387         return true;
388     }
389     if c >= '\u{10760}' && c <= '\u{10767}' {
390         return true;
391     }
392     if c >= '\u{10800}' && c <= '\u{10805}' {
393         return true;
394     }
395     if c >= '\u{10808}' && c <= '\u{10808}' {
396         return true;
397     }
398     if c >= '\u{1080A}' && c <= '\u{10835}' {
399         return true;
400     }
401     if c >= '\u{10837}' && c <= '\u{10838}' {
402         return true;
403     }
404     if c >= '\u{1083C}' && c <= '\u{1083C}' {
405         return true;
406     }
407     if c >= '\u{1083F}' && c <= '\u{10855}' {
408         return true;
409     }
410     if c >= '\u{10860}' && c <= '\u{10876}' {
411         return true;
412     }
413     if c >= '\u{10880}' && c <= '\u{1089E}' {
414         return true;
415     }
416     if c >= '\u{108E0}' && c <= '\u{108F2}' {
417         return true;
418     }
419     if c >= '\u{108F4}' && c <= '\u{108F5}' {
420         return true;
421     }
422     if c >= '\u{10900}' && c <= '\u{10915}' {
423         return true;
424     }
425     if c >= '\u{10920}' && c <= '\u{10939}' {
426         return true;
427     }
428     if c >= '\u{10980}' && c <= '\u{109B7}' {
429         return true;
430     }
431     if c >= '\u{109BE}' && c <= '\u{109BF}' {
432         return true;
433     }
434     if c >= '\u{10A00}' && c <= '\u{10A00}' {
435         return true;
436     }
437     if c >= '\u{10A10}' && c <= '\u{10A13}' {
438         return true;
439     }
440     if c >= '\u{10A15}' && c <= '\u{10A17}' {
441         return true;
442     }
443     if c >= '\u{10A19}' && c <= '\u{10A35}' {
444         return true;
445     }
446     if c >= '\u{10A60}' && c <= '\u{10A7C}' {
447         return true;
448     }
449     if c >= '\u{10A80}' && c <= '\u{10A9C}' {
450         return true;
451     }
452     if c >= '\u{10AC0}' && c <= '\u{10AC7}' {
453         return true;
454     }
455     if c >= '\u{10AC9}' && c <= '\u{10AE4}' {
456         return true;
457     }
458     if c >= '\u{10B00}' && c <= '\u{10B35}' {
459         return true;
460     }
461     if c >= '\u{10B40}' && c <= '\u{10B55}' {
462         return true;
463     }
464     if c >= '\u{10B60}' && c <= '\u{10B72}' {
465         return true;
466     }
467     if c >= '\u{10B80}' && c <= '\u{10B91}' {
468         return true;
469     }
470     if c >= '\u{10C00}' && c <= '\u{10C48}' {
471         return true;
472     }
473     if c >= '\u{10C80}' && c <= '\u{10CB2}' {
474         return true;
475     }
476     if c >= '\u{10CC0}' && c <= '\u{10CF2}' {
477         return true;
478     }
479     if c >= '\u{10D00}' && c <= '\u{10D23}' {
480         return true;
481     }
482     if c >= '\u{10E80}' && c <= '\u{10EA9}' {
483         return true;
484     }
485     if c >= '\u{10EB0}' && c <= '\u{10EB1}' {
486         return true;
487     }
488     if c >= '\u{10F00}' && c <= '\u{10F1C}' {
489         return true;
490     }
491     if c >= '\u{10F27}' && c <= '\u{10F27}' {
492         return true;
493     }
494     if c >= '\u{10F30}' && c <= '\u{10F45}' {
495         return true;
496     }
497     if c >= '\u{10FB0}' && c <= '\u{10FC4}' {
498         return true;
499     }
500     if c >= '\u{10FE0}' && c <= '\u{10FF6}' {
501         return true;
502     }
503     if c >= '\u{11003}' && c <= '\u{11037}' {
504         return true;
505     }
506     if c >= '\u{11083}' && c <= '\u{110AF}' {
507         return true;
508     }
509     if c >= '\u{110D0}' && c <= '\u{110E8}' {
510         return true;
511     }
512     if c >= '\u{11103}' && c <= '\u{11126}' {
513         return true;
514     }
515     if c >= '\u{11144}' && c <= '\u{11144}' {
516         return true;
517     }
518     if c >= '\u{11147}' && c <= '\u{11147}' {
519         return true;
520     }
521     if c >= '\u{11150}' && c <= '\u{11172}' {
522         return true;
523     }
524     if c >= '\u{11176}' && c <= '\u{11176}' {
525         return true;
526     }
527     if c >= '\u{11183}' && c <= '\u{111B2}' {
528         return true;
529     }
530     if c >= '\u{111C1}' && c <= '\u{111C4}' {
531         return true;
532     }
533     if c >= '\u{111DA}' && c <= '\u{111DA}' {
534         return true;
535     }
536     if c >= '\u{111DC}' && c <= '\u{111DC}' {
537         return true;
538     }
539     if c >= '\u{11200}' && c <= '\u{11211}' {
540         return true;
541     }
542     if c >= '\u{11213}' && c <= '\u{1122B}' {
543         return true;
544     }
545     if c >= '\u{11280}' && c <= '\u{11286}' {
546         return true;
547     }
548     if c >= '\u{11288}' && c <= '\u{11288}' {
549         return true;
550     }
551     if c >= '\u{1128A}' && c <= '\u{1128D}' {
552         return true;
553     }
554     if c >= '\u{1128F}' && c <= '\u{1129D}' {
555         return true;
556     }
557     if c >= '\u{1129F}' && c <= '\u{112A8}' {
558         return true;
559     }
560     if c >= '\u{112B0}' && c <= '\u{112DE}' {
561         return true;
562     }
563     if c >= '\u{11305}' && c <= '\u{1130C}' {
564         return true;
565     }
566     if c >= '\u{1130F}' && c <= '\u{11310}' {
567         return true;
568     }
569     if c >= '\u{11313}' && c <= '\u{11328}' {
570         return true;
571     }
572     if c >= '\u{1132A}' && c <= '\u{11330}' {
573         return true;
574     }
575     if c >= '\u{11332}' && c <= '\u{11333}' {
576         return true;
577     }
578     if c >= '\u{11335}' && c <= '\u{11339}' {
579         return true;
580     }
581     if c >= '\u{1133D}' && c <= '\u{1133D}' {
582         return true;
583     }
584     if c >= '\u{11350}' && c <= '\u{11350}' {
585         return true;
586     }
587     if c >= '\u{1135D}' && c <= '\u{11361}' {
588         return true;
589     }
590     if c >= '\u{11400}' && c <= '\u{11434}' {
591         return true;
592     }
593     if c >= '\u{11447}' && c <= '\u{1144A}' {
594         return true;
595     }
596     if c >= '\u{1145F}' && c <= '\u{11461}' {
597         return true;
598     }
599     if c >= '\u{11480}' && c <= '\u{114AF}' {
600         return true;
601     }
602     if c >= '\u{114C4}' && c <= '\u{114C5}' {
603         return true;
604     }
605     if c >= '\u{114C7}' && c <= '\u{114C7}' {
606         return true;
607     }
608     if c >= '\u{11580}' && c <= '\u{115AE}' {
609         return true;
610     }
611     if c >= '\u{115D8}' && c <= '\u{115DB}' {
612         return true;
613     }
614     if c >= '\u{11600}' && c <= '\u{1162F}' {
615         return true;
616     }
617     if c >= '\u{11644}' && c <= '\u{11644}' {
618         return true;
619     }
620     if c >= '\u{11680}' && c <= '\u{116AA}' {
621         return true;
622     }
623     if c >= '\u{116B8}' && c <= '\u{116B8}' {
624         return true;
625     }
626     if c >= '\u{11700}' && c <= '\u{1171A}' {
627         return true;
628     }
629     if c >= '\u{11800}' && c <= '\u{1182B}' {
630         return true;
631     }
632     if c >= '\u{118A0}' && c <= '\u{118DF}' {
633         return true;
634     }
635     if c >= '\u{118FF}' && c <= '\u{11906}' {
636         return true;
637     }
638     if c >= '\u{11909}' && c <= '\u{11909}' {
639         return true;
640     }
641     if c >= '\u{1190C}' && c <= '\u{11913}' {
642         return true;
643     }
644     if c >= '\u{11915}' && c <= '\u{11916}' {
645         return true;
646     }
647     if c >= '\u{11918}' && c <= '\u{1192F}' {
648         return true;
649     }
650     if c >= '\u{1193F}' && c <= '\u{1193F}' {
651         return true;
652     }
653     if c >= '\u{11941}' && c <= '\u{11941}' {
654         return true;
655     }
656     if c >= '\u{119A0}' && c <= '\u{119A7}' {
657         return true;
658     }
659     if c >= '\u{119AA}' && c <= '\u{119D0}' {
660         return true;
661     }
662     if c >= '\u{119E1}' && c <= '\u{119E1}' {
663         return true;
664     }
665     if c >= '\u{119E3}' && c <= '\u{119E3}' {
666         return true;
667     }
668     if c >= '\u{11A00}' && c <= '\u{11A00}' {
669         return true;
670     }
671     if c >= '\u{11A0B}' && c <= '\u{11A32}' {
672         return true;
673     }
674     if c >= '\u{11A3A}' && c <= '\u{11A3A}' {
675         return true;
676     }
677     if c >= '\u{11A50}' && c <= '\u{11A50}' {
678         return true;
679     }
680     if c >= '\u{11A5C}' && c <= '\u{11A89}' {
681         return true;
682     }
683     if c >= '\u{11A9D}' && c <= '\u{11A9D}' {
684         return true;
685     }
686     if c >= '\u{11AC0}' && c <= '\u{11AF8}' {
687         return true;
688     }
689     if c >= '\u{11C00}' && c <= '\u{11C08}' {
690         return true;
691     }
692     if c >= '\u{11C0A}' && c <= '\u{11C2E}' {
693         return true;
694     }
695     if c >= '\u{11C40}' && c <= '\u{11C40}' {
696         return true;
697     }
698     if c >= '\u{11C72}' && c <= '\u{11C8F}' {
699         return true;
700     }
701     if c >= '\u{11D00}' && c <= '\u{11D06}' {
702         return true;
703     }
704     if c >= '\u{11D08}' && c <= '\u{11D09}' {
705         return true;
706     }
707     if c >= '\u{11D0B}' && c <= '\u{11D30}' {
708         return true;
709     }
710     if c >= '\u{11D46}' && c <= '\u{11D46}' {
711         return true;
712     }
713     if c >= '\u{11D60}' && c <= '\u{11D65}' {
714         return true;
715     }
716     if c >= '\u{11D67}' && c <= '\u{11D68}' {
717         return true;
718     }
719     if c >= '\u{11D6A}' && c <= '\u{11D89}' {
720         return true;
721     }
722     if c >= '\u{11D98}' && c <= '\u{11D98}' {
723         return true;
724     }
725     if c >= '\u{11EE0}' && c <= '\u{11EF2}' {
726         return true;
727     }
728     if c >= '\u{11FB0}' && c <= '\u{11FB0}' {
729         return true;
730     }
731     if c >= '\u{12000}' && c <= '\u{12399}' {
732         return true;
733     }
734     if c >= '\u{12400}' && c <= '\u{1246E}' {
735         return true;
736     }
737     if c >= '\u{12480}' && c <= '\u{12543}' {
738         return true;
739     }
740     if c >= '\u{13000}' && c <= '\u{1342E}' {
741         return true;
742     }
743     if c >= '\u{14400}' && c <= '\u{14646}' {
744         return true;
745     }
746     if c >= '\u{16800}' && c <= '\u{16A38}' {
747         return true;
748     }
749     if c >= '\u{16A40}' && c <= '\u{16A5E}' {
750         return true;
751     }
752     if c >= '\u{16AD0}' && c <= '\u{16AED}' {
753         return true;
754     }
755     if c >= '\u{16B00}' && c <= '\u{16B2F}' {
756         return true;
757     }
758     if c >= '\u{16B40}' && c <= '\u{16B43}' {
759         return true;
760     }
761     if c >= '\u{16B63}' && c <= '\u{16B77}' {
762         return true;
763     }
764     if c >= '\u{16B7D}' && c <= '\u{16B8F}' {
765         return true;
766     }
767     if c >= '\u{16E40}' && c <= '\u{16E7F}' {
768         return true;
769     }
770     if c >= '\u{16F00}' && c <= '\u{16F4A}' {
771         return true;
772     }
773     if c >= '\u{16F50}' && c <= '\u{16F50}' {
774         return true;
775     }
776     if c >= '\u{16F93}' && c <= '\u{16F9F}' {
777         return true;
778     }
779     if c >= '\u{16FE0}' && c <= '\u{16FE1}' {
780         return true;
781     }
782     if c >= '\u{16FE3}' && c <= '\u{16FE3}' {
783         return true;
784     }
785     if c >= '\u{17000}' && c <= '\u{187F7}' {
786         return true;
787     }
788     if c >= '\u{18800}' && c <= '\u{18CD5}' {
789         return true;
790     }
791     if c >= '\u{18D00}' && c <= '\u{18D08}' {
792         return true;
793     }
794     if c >= '\u{1B000}' && c <= '\u{1B11E}' {
795         return true;
796     }
797     if c >= '\u{1B150}' && c <= '\u{1B152}' {
798         return true;
799     }
800     if c >= '\u{1B164}' && c <= '\u{1B167}' {
801         return true;
802     }
803     if c >= '\u{1B170}' && c <= '\u{1B2FB}' {
804         return true;
805     }
806     if c >= '\u{1BC00}' && c <= '\u{1BC6A}' {
807         return true;
808     }
809     if c >= '\u{1BC70}' && c <= '\u{1BC7C}' {
810         return true;
811     }
812     if c >= '\u{1BC80}' && c <= '\u{1BC88}' {
813         return true;
814     }
815     if c >= '\u{1BC90}' && c <= '\u{1BC99}' {
816         return true;
817     }
818     if c >= '\u{1D400}' && c <= '\u{1D454}' {
819         return true;
820     }
821     if c >= '\u{1D456}' && c <= '\u{1D49C}' {
822         return true;
823     }
824     if c >= '\u{1D49E}' && c <= '\u{1D49F}' {
825         return true;
826     }
827     if c >= '\u{1D4A2}' && c <= '\u{1D4A2}' {
828         return true;
829     }
830     if c >= '\u{1D4A5}' && c <= '\u{1D4A6}' {
831         return true;
832     }
833     if c >= '\u{1D4A9}' && c <= '\u{1D4AC}' {
834         return true;
835     }
836     if c >= '\u{1D4AE}' && c <= '\u{1D4B9}' {
837         return true;
838     }
839     if c >= '\u{1D4BB}' && c <= '\u{1D4BB}' {
840         return true;
841     }
842     if c >= '\u{1D4BD}' && c <= '\u{1D4C3}' {
843         return true;
844     }
845     if c >= '\u{1D4C5}' && c <= '\u{1D505}' {
846         return true;
847     }
848     if c >= '\u{1D507}' && c <= '\u{1D50A}' {
849         return true;
850     }
851     if c >= '\u{1D50D}' && c <= '\u{1D514}' {
852         return true;
853     }
854     if c >= '\u{1D516}' && c <= '\u{1D51C}' {
855         return true;
856     }
857     if c >= '\u{1D51E}' && c <= '\u{1D539}' {
858         return true;
859     }
860     if c >= '\u{1D53B}' && c <= '\u{1D53E}' {
861         return true;
862     }
863     if c >= '\u{1D540}' && c <= '\u{1D544}' {
864         return true;
865     }
866     if c >= '\u{1D546}' && c <= '\u{1D546}' {
867         return true;
868     }
869     if c >= '\u{1D54A}' && c <= '\u{1D550}' {
870         return true;
871     }
872     if c >= '\u{1D552}' && c <= '\u{1D6A5}' {
873         return true;
874     }
875     if c >= '\u{1D6A8}' && c <= '\u{1D6C0}' {
876         return true;
877     }
878     if c >= '\u{1D6C2}' && c <= '\u{1D6DA}' {
879         return true;
880     }
881     if c >= '\u{1D6DC}' && c <= '\u{1D6FA}' {
882         return true;
883     }
884     if c >= '\u{1D6FC}' && c <= '\u{1D714}' {
885         return true;
886     }
887     if c >= '\u{1D716}' && c <= '\u{1D734}' {
888         return true;
889     }
890     if c >= '\u{1D736}' && c <= '\u{1D74E}' {
891         return true;
892     }
893     if c >= '\u{1D750}' && c <= '\u{1D76E}' {
894         return true;
895     }
896     if c >= '\u{1D770}' && c <= '\u{1D788}' {
897         return true;
898     }
899     if c >= '\u{1D78A}' && c <= '\u{1D7A8}' {
900         return true;
901     }
902     if c >= '\u{1D7AA}' && c <= '\u{1D7C2}' {
903         return true;
904     }
905     if c >= '\u{1D7C4}' && c <= '\u{1D7CB}' {
906         return true;
907     }
908     if c >= '\u{1E100}' && c <= '\u{1E12C}' {
909         return true;
910     }
911     if c >= '\u{1E137}' && c <= '\u{1E13D}' {
912         return true;
913     }
914     if c >= '\u{1E14E}' && c <= '\u{1E14E}' {
915         return true;
916     }
917     if c >= '\u{1E2C0}' && c <= '\u{1E2EB}' {
918         return true;
919     }
920     if c >= '\u{1E800}' && c <= '\u{1E8C4}' {
921         return true;
922     }
923     if c >= '\u{1E900}' && c <= '\u{1E943}' {
924         return true;
925     }
926     if c >= '\u{1E94B}' && c <= '\u{1E94B}' {
927         return true;
928     }
929     if c >= '\u{1EE00}' && c <= '\u{1EE03}' {
930         return true;
931     }
932     if c >= '\u{1EE05}' && c <= '\u{1EE1F}' {
933         return true;
934     }
935     if c >= '\u{1EE21}' && c <= '\u{1EE22}' {
936         return true;
937     }
938     if c >= '\u{1EE24}' && c <= '\u{1EE24}' {
939         return true;
940     }
941     if c >= '\u{1EE27}' && c <= '\u{1EE27}' {
942         return true;
943     }
944     if c >= '\u{1EE29}' && c <= '\u{1EE32}' {
945         return true;
946     }
947     if c >= '\u{1EE34}' && c <= '\u{1EE37}' {
948         return true;
949     }
950     if c >= '\u{1EE39}' && c <= '\u{1EE39}' {
951         return true;
952     }
953     if c >= '\u{1EE3B}' && c <= '\u{1EE3B}' {
954         return true;
955     }
956     if c >= '\u{1EE42}' && c <= '\u{1EE42}' {
957         return true;
958     }
959     if c >= '\u{1EE47}' && c <= '\u{1EE47}' {
960         return true;
961     }
962     if c >= '\u{1EE49}' && c <= '\u{1EE49}' {
963         return true;
964     }
965     if c >= '\u{1EE4B}' && c <= '\u{1EE4B}' {
966         return true;
967     }
968     if c >= '\u{1EE4D}' && c <= '\u{1EE4F}' {
969         return true;
970     }
971     if c >= '\u{1EE51}' && c <= '\u{1EE52}' {
972         return true;
973     }
974     if c >= '\u{1EE54}' && c <= '\u{1EE54}' {
975         return true;
976     }
977     if c >= '\u{1EE57}' && c <= '\u{1EE57}' {
978         return true;
979     }
980     if c >= '\u{1EE59}' && c <= '\u{1EE59}' {
981         return true;
982     }
983     if c >= '\u{1EE5B}' && c <= '\u{1EE5B}' {
984         return true;
985     }
986     if c >= '\u{1EE5D}' && c <= '\u{1EE5D}' {
987         return true;
988     }
989     if c >= '\u{1EE5F}' && c <= '\u{1EE5F}' {
990         return true;
991     }
992     if c >= '\u{1EE61}' && c <= '\u{1EE62}' {
993         return true;
994     }
995     if c >= '\u{1EE64}' && c <= '\u{1EE64}' {
996         return true;
997     }
998     if c >= '\u{1EE67}' && c <= '\u{1EE6A}' {
999         return true;
1000     }
1001     if c >= '\u{1EE6C}' && c <= '\u{1EE72}' {
1002         return true;
1003     }
1004     if c >= '\u{1EE74}' && c <= '\u{1EE77}' {
1005         return true;
1006     }
1007     if c >= '\u{1EE79}' && c <= '\u{1EE7C}' {
1008         return true;
1009     }
1010     if c >= '\u{1EE7E}' && c <= '\u{1EE7E}' {
1011         return true;
1012     }
1013     if c >= '\u{1EE80}' && c <= '\u{1EE89}' {
1014         return true;
1015     }
1016     if c >= '\u{1EE8B}' && c <= '\u{1EE9B}' {
1017         return true;
1018     }
1019     if c >= '\u{1EEA1}' && c <= '\u{1EEA3}' {
1020         return true;
1021     }
1022     if c >= '\u{1EEA5}' && c <= '\u{1EEA9}' {
1023         return true;
1024     }
1025     if c >= '\u{1EEAB}' && c <= '\u{1EEBB}' {
1026         return true;
1027     }
1028     if c >= '\u{20000}' && c <= '\u{2A6DD}' {
1029         return true;
1030     }
1031     if c >= '\u{2A700}' && c <= '\u{2B734}' {
1032         return true;
1033     }
1034     if c >= '\u{2B740}' && c <= '\u{2B81D}' {
1035         return true;
1036     }
1037     if c >= '\u{2B820}' && c <= '\u{2CEA1}' {
1038         return true;
1039     }
1040     if c >= '\u{2CEB0}' && c <= '\u{2EBE0}' {
1041         return true;
1042     }
1043     if c >= '\u{2F800}' && c <= '\u{2FA1D}' {
1044         return true;
1045     }
1046     if c >= '\u{30000}' && c <= '\u{3134A}' {
1047         return true;
1048     }
1049     false
1050 }
1051 
is_id_continue_non_bmp(c: char) -> bool1052 pub fn is_id_continue_non_bmp(c: char) -> bool {
1053     if c >= '\u{10000}' && c <= '\u{1000B}' {
1054         return true;
1055     }
1056     if c >= '\u{1000D}' && c <= '\u{10026}' {
1057         return true;
1058     }
1059     if c >= '\u{10028}' && c <= '\u{1003A}' {
1060         return true;
1061     }
1062     if c >= '\u{1003C}' && c <= '\u{1003D}' {
1063         return true;
1064     }
1065     if c >= '\u{1003F}' && c <= '\u{1004D}' {
1066         return true;
1067     }
1068     if c >= '\u{10050}' && c <= '\u{1005D}' {
1069         return true;
1070     }
1071     if c >= '\u{10080}' && c <= '\u{100FA}' {
1072         return true;
1073     }
1074     if c >= '\u{10140}' && c <= '\u{10174}' {
1075         return true;
1076     }
1077     if c >= '\u{101FD}' && c <= '\u{101FD}' {
1078         return true;
1079     }
1080     if c >= '\u{10280}' && c <= '\u{1029C}' {
1081         return true;
1082     }
1083     if c >= '\u{102A0}' && c <= '\u{102D0}' {
1084         return true;
1085     }
1086     if c >= '\u{102E0}' && c <= '\u{102E0}' {
1087         return true;
1088     }
1089     if c >= '\u{10300}' && c <= '\u{1031F}' {
1090         return true;
1091     }
1092     if c >= '\u{1032D}' && c <= '\u{1034A}' {
1093         return true;
1094     }
1095     if c >= '\u{10350}' && c <= '\u{1037A}' {
1096         return true;
1097     }
1098     if c >= '\u{10380}' && c <= '\u{1039D}' {
1099         return true;
1100     }
1101     if c >= '\u{103A0}' && c <= '\u{103C3}' {
1102         return true;
1103     }
1104     if c >= '\u{103C8}' && c <= '\u{103CF}' {
1105         return true;
1106     }
1107     if c >= '\u{103D1}' && c <= '\u{103D5}' {
1108         return true;
1109     }
1110     if c >= '\u{10400}' && c <= '\u{1049D}' {
1111         return true;
1112     }
1113     if c >= '\u{104A0}' && c <= '\u{104A9}' {
1114         return true;
1115     }
1116     if c >= '\u{104B0}' && c <= '\u{104D3}' {
1117         return true;
1118     }
1119     if c >= '\u{104D8}' && c <= '\u{104FB}' {
1120         return true;
1121     }
1122     if c >= '\u{10500}' && c <= '\u{10527}' {
1123         return true;
1124     }
1125     if c >= '\u{10530}' && c <= '\u{10563}' {
1126         return true;
1127     }
1128     if c >= '\u{10600}' && c <= '\u{10736}' {
1129         return true;
1130     }
1131     if c >= '\u{10740}' && c <= '\u{10755}' {
1132         return true;
1133     }
1134     if c >= '\u{10760}' && c <= '\u{10767}' {
1135         return true;
1136     }
1137     if c >= '\u{10800}' && c <= '\u{10805}' {
1138         return true;
1139     }
1140     if c >= '\u{10808}' && c <= '\u{10808}' {
1141         return true;
1142     }
1143     if c >= '\u{1080A}' && c <= '\u{10835}' {
1144         return true;
1145     }
1146     if c >= '\u{10837}' && c <= '\u{10838}' {
1147         return true;
1148     }
1149     if c >= '\u{1083C}' && c <= '\u{1083C}' {
1150         return true;
1151     }
1152     if c >= '\u{1083F}' && c <= '\u{10855}' {
1153         return true;
1154     }
1155     if c >= '\u{10860}' && c <= '\u{10876}' {
1156         return true;
1157     }
1158     if c >= '\u{10880}' && c <= '\u{1089E}' {
1159         return true;
1160     }
1161     if c >= '\u{108E0}' && c <= '\u{108F2}' {
1162         return true;
1163     }
1164     if c >= '\u{108F4}' && c <= '\u{108F5}' {
1165         return true;
1166     }
1167     if c >= '\u{10900}' && c <= '\u{10915}' {
1168         return true;
1169     }
1170     if c >= '\u{10920}' && c <= '\u{10939}' {
1171         return true;
1172     }
1173     if c >= '\u{10980}' && c <= '\u{109B7}' {
1174         return true;
1175     }
1176     if c >= '\u{109BE}' && c <= '\u{109BF}' {
1177         return true;
1178     }
1179     if c >= '\u{10A00}' && c <= '\u{10A03}' {
1180         return true;
1181     }
1182     if c >= '\u{10A05}' && c <= '\u{10A06}' {
1183         return true;
1184     }
1185     if c >= '\u{10A0C}' && c <= '\u{10A13}' {
1186         return true;
1187     }
1188     if c >= '\u{10A15}' && c <= '\u{10A17}' {
1189         return true;
1190     }
1191     if c >= '\u{10A19}' && c <= '\u{10A35}' {
1192         return true;
1193     }
1194     if c >= '\u{10A38}' && c <= '\u{10A3A}' {
1195         return true;
1196     }
1197     if c >= '\u{10A3F}' && c <= '\u{10A3F}' {
1198         return true;
1199     }
1200     if c >= '\u{10A60}' && c <= '\u{10A7C}' {
1201         return true;
1202     }
1203     if c >= '\u{10A80}' && c <= '\u{10A9C}' {
1204         return true;
1205     }
1206     if c >= '\u{10AC0}' && c <= '\u{10AC7}' {
1207         return true;
1208     }
1209     if c >= '\u{10AC9}' && c <= '\u{10AE6}' {
1210         return true;
1211     }
1212     if c >= '\u{10B00}' && c <= '\u{10B35}' {
1213         return true;
1214     }
1215     if c >= '\u{10B40}' && c <= '\u{10B55}' {
1216         return true;
1217     }
1218     if c >= '\u{10B60}' && c <= '\u{10B72}' {
1219         return true;
1220     }
1221     if c >= '\u{10B80}' && c <= '\u{10B91}' {
1222         return true;
1223     }
1224     if c >= '\u{10C00}' && c <= '\u{10C48}' {
1225         return true;
1226     }
1227     if c >= '\u{10C80}' && c <= '\u{10CB2}' {
1228         return true;
1229     }
1230     if c >= '\u{10CC0}' && c <= '\u{10CF2}' {
1231         return true;
1232     }
1233     if c >= '\u{10D00}' && c <= '\u{10D27}' {
1234         return true;
1235     }
1236     if c >= '\u{10D30}' && c <= '\u{10D39}' {
1237         return true;
1238     }
1239     if c >= '\u{10E80}' && c <= '\u{10EA9}' {
1240         return true;
1241     }
1242     if c >= '\u{10EAB}' && c <= '\u{10EAC}' {
1243         return true;
1244     }
1245     if c >= '\u{10EB0}' && c <= '\u{10EB1}' {
1246         return true;
1247     }
1248     if c >= '\u{10F00}' && c <= '\u{10F1C}' {
1249         return true;
1250     }
1251     if c >= '\u{10F27}' && c <= '\u{10F27}' {
1252         return true;
1253     }
1254     if c >= '\u{10F30}' && c <= '\u{10F50}' {
1255         return true;
1256     }
1257     if c >= '\u{10FB0}' && c <= '\u{10FC4}' {
1258         return true;
1259     }
1260     if c >= '\u{10FE0}' && c <= '\u{10FF6}' {
1261         return true;
1262     }
1263     if c >= '\u{11000}' && c <= '\u{11046}' {
1264         return true;
1265     }
1266     if c >= '\u{11066}' && c <= '\u{1106F}' {
1267         return true;
1268     }
1269     if c >= '\u{1107F}' && c <= '\u{110BA}' {
1270         return true;
1271     }
1272     if c >= '\u{110D0}' && c <= '\u{110E8}' {
1273         return true;
1274     }
1275     if c >= '\u{110F0}' && c <= '\u{110F9}' {
1276         return true;
1277     }
1278     if c >= '\u{11100}' && c <= '\u{11134}' {
1279         return true;
1280     }
1281     if c >= '\u{11136}' && c <= '\u{1113F}' {
1282         return true;
1283     }
1284     if c >= '\u{11144}' && c <= '\u{11147}' {
1285         return true;
1286     }
1287     if c >= '\u{11150}' && c <= '\u{11173}' {
1288         return true;
1289     }
1290     if c >= '\u{11176}' && c <= '\u{11176}' {
1291         return true;
1292     }
1293     if c >= '\u{11180}' && c <= '\u{111C4}' {
1294         return true;
1295     }
1296     if c >= '\u{111C9}' && c <= '\u{111CC}' {
1297         return true;
1298     }
1299     if c >= '\u{111CE}' && c <= '\u{111DA}' {
1300         return true;
1301     }
1302     if c >= '\u{111DC}' && c <= '\u{111DC}' {
1303         return true;
1304     }
1305     if c >= '\u{11200}' && c <= '\u{11211}' {
1306         return true;
1307     }
1308     if c >= '\u{11213}' && c <= '\u{11237}' {
1309         return true;
1310     }
1311     if c >= '\u{1123E}' && c <= '\u{1123E}' {
1312         return true;
1313     }
1314     if c >= '\u{11280}' && c <= '\u{11286}' {
1315         return true;
1316     }
1317     if c >= '\u{11288}' && c <= '\u{11288}' {
1318         return true;
1319     }
1320     if c >= '\u{1128A}' && c <= '\u{1128D}' {
1321         return true;
1322     }
1323     if c >= '\u{1128F}' && c <= '\u{1129D}' {
1324         return true;
1325     }
1326     if c >= '\u{1129F}' && c <= '\u{112A8}' {
1327         return true;
1328     }
1329     if c >= '\u{112B0}' && c <= '\u{112EA}' {
1330         return true;
1331     }
1332     if c >= '\u{112F0}' && c <= '\u{112F9}' {
1333         return true;
1334     }
1335     if c >= '\u{11300}' && c <= '\u{11303}' {
1336         return true;
1337     }
1338     if c >= '\u{11305}' && c <= '\u{1130C}' {
1339         return true;
1340     }
1341     if c >= '\u{1130F}' && c <= '\u{11310}' {
1342         return true;
1343     }
1344     if c >= '\u{11313}' && c <= '\u{11328}' {
1345         return true;
1346     }
1347     if c >= '\u{1132A}' && c <= '\u{11330}' {
1348         return true;
1349     }
1350     if c >= '\u{11332}' && c <= '\u{11333}' {
1351         return true;
1352     }
1353     if c >= '\u{11335}' && c <= '\u{11339}' {
1354         return true;
1355     }
1356     if c >= '\u{1133B}' && c <= '\u{11344}' {
1357         return true;
1358     }
1359     if c >= '\u{11347}' && c <= '\u{11348}' {
1360         return true;
1361     }
1362     if c >= '\u{1134B}' && c <= '\u{1134D}' {
1363         return true;
1364     }
1365     if c >= '\u{11350}' && c <= '\u{11350}' {
1366         return true;
1367     }
1368     if c >= '\u{11357}' && c <= '\u{11357}' {
1369         return true;
1370     }
1371     if c >= '\u{1135D}' && c <= '\u{11363}' {
1372         return true;
1373     }
1374     if c >= '\u{11366}' && c <= '\u{1136C}' {
1375         return true;
1376     }
1377     if c >= '\u{11370}' && c <= '\u{11374}' {
1378         return true;
1379     }
1380     if c >= '\u{11400}' && c <= '\u{1144A}' {
1381         return true;
1382     }
1383     if c >= '\u{11450}' && c <= '\u{11459}' {
1384         return true;
1385     }
1386     if c >= '\u{1145E}' && c <= '\u{11461}' {
1387         return true;
1388     }
1389     if c >= '\u{11480}' && c <= '\u{114C5}' {
1390         return true;
1391     }
1392     if c >= '\u{114C7}' && c <= '\u{114C7}' {
1393         return true;
1394     }
1395     if c >= '\u{114D0}' && c <= '\u{114D9}' {
1396         return true;
1397     }
1398     if c >= '\u{11580}' && c <= '\u{115B5}' {
1399         return true;
1400     }
1401     if c >= '\u{115B8}' && c <= '\u{115C0}' {
1402         return true;
1403     }
1404     if c >= '\u{115D8}' && c <= '\u{115DD}' {
1405         return true;
1406     }
1407     if c >= '\u{11600}' && c <= '\u{11640}' {
1408         return true;
1409     }
1410     if c >= '\u{11644}' && c <= '\u{11644}' {
1411         return true;
1412     }
1413     if c >= '\u{11650}' && c <= '\u{11659}' {
1414         return true;
1415     }
1416     if c >= '\u{11680}' && c <= '\u{116B8}' {
1417         return true;
1418     }
1419     if c >= '\u{116C0}' && c <= '\u{116C9}' {
1420         return true;
1421     }
1422     if c >= '\u{11700}' && c <= '\u{1171A}' {
1423         return true;
1424     }
1425     if c >= '\u{1171D}' && c <= '\u{1172B}' {
1426         return true;
1427     }
1428     if c >= '\u{11730}' && c <= '\u{11739}' {
1429         return true;
1430     }
1431     if c >= '\u{11800}' && c <= '\u{1183A}' {
1432         return true;
1433     }
1434     if c >= '\u{118A0}' && c <= '\u{118E9}' {
1435         return true;
1436     }
1437     if c >= '\u{118FF}' && c <= '\u{11906}' {
1438         return true;
1439     }
1440     if c >= '\u{11909}' && c <= '\u{11909}' {
1441         return true;
1442     }
1443     if c >= '\u{1190C}' && c <= '\u{11913}' {
1444         return true;
1445     }
1446     if c >= '\u{11915}' && c <= '\u{11916}' {
1447         return true;
1448     }
1449     if c >= '\u{11918}' && c <= '\u{11935}' {
1450         return true;
1451     }
1452     if c >= '\u{11937}' && c <= '\u{11938}' {
1453         return true;
1454     }
1455     if c >= '\u{1193B}' && c <= '\u{11943}' {
1456         return true;
1457     }
1458     if c >= '\u{11950}' && c <= '\u{11959}' {
1459         return true;
1460     }
1461     if c >= '\u{119A0}' && c <= '\u{119A7}' {
1462         return true;
1463     }
1464     if c >= '\u{119AA}' && c <= '\u{119D7}' {
1465         return true;
1466     }
1467     if c >= '\u{119DA}' && c <= '\u{119E1}' {
1468         return true;
1469     }
1470     if c >= '\u{119E3}' && c <= '\u{119E4}' {
1471         return true;
1472     }
1473     if c >= '\u{11A00}' && c <= '\u{11A3E}' {
1474         return true;
1475     }
1476     if c >= '\u{11A47}' && c <= '\u{11A47}' {
1477         return true;
1478     }
1479     if c >= '\u{11A50}' && c <= '\u{11A99}' {
1480         return true;
1481     }
1482     if c >= '\u{11A9D}' && c <= '\u{11A9D}' {
1483         return true;
1484     }
1485     if c >= '\u{11AC0}' && c <= '\u{11AF8}' {
1486         return true;
1487     }
1488     if c >= '\u{11C00}' && c <= '\u{11C08}' {
1489         return true;
1490     }
1491     if c >= '\u{11C0A}' && c <= '\u{11C36}' {
1492         return true;
1493     }
1494     if c >= '\u{11C38}' && c <= '\u{11C40}' {
1495         return true;
1496     }
1497     if c >= '\u{11C50}' && c <= '\u{11C59}' {
1498         return true;
1499     }
1500     if c >= '\u{11C72}' && c <= '\u{11C8F}' {
1501         return true;
1502     }
1503     if c >= '\u{11C92}' && c <= '\u{11CA7}' {
1504         return true;
1505     }
1506     if c >= '\u{11CA9}' && c <= '\u{11CB6}' {
1507         return true;
1508     }
1509     if c >= '\u{11D00}' && c <= '\u{11D06}' {
1510         return true;
1511     }
1512     if c >= '\u{11D08}' && c <= '\u{11D09}' {
1513         return true;
1514     }
1515     if c >= '\u{11D0B}' && c <= '\u{11D36}' {
1516         return true;
1517     }
1518     if c >= '\u{11D3A}' && c <= '\u{11D3A}' {
1519         return true;
1520     }
1521     if c >= '\u{11D3C}' && c <= '\u{11D3D}' {
1522         return true;
1523     }
1524     if c >= '\u{11D3F}' && c <= '\u{11D47}' {
1525         return true;
1526     }
1527     if c >= '\u{11D50}' && c <= '\u{11D59}' {
1528         return true;
1529     }
1530     if c >= '\u{11D60}' && c <= '\u{11D65}' {
1531         return true;
1532     }
1533     if c >= '\u{11D67}' && c <= '\u{11D68}' {
1534         return true;
1535     }
1536     if c >= '\u{11D6A}' && c <= '\u{11D8E}' {
1537         return true;
1538     }
1539     if c >= '\u{11D90}' && c <= '\u{11D91}' {
1540         return true;
1541     }
1542     if c >= '\u{11D93}' && c <= '\u{11D98}' {
1543         return true;
1544     }
1545     if c >= '\u{11DA0}' && c <= '\u{11DA9}' {
1546         return true;
1547     }
1548     if c >= '\u{11EE0}' && c <= '\u{11EF6}' {
1549         return true;
1550     }
1551     if c >= '\u{11FB0}' && c <= '\u{11FB0}' {
1552         return true;
1553     }
1554     if c >= '\u{12000}' && c <= '\u{12399}' {
1555         return true;
1556     }
1557     if c >= '\u{12400}' && c <= '\u{1246E}' {
1558         return true;
1559     }
1560     if c >= '\u{12480}' && c <= '\u{12543}' {
1561         return true;
1562     }
1563     if c >= '\u{13000}' && c <= '\u{1342E}' {
1564         return true;
1565     }
1566     if c >= '\u{14400}' && c <= '\u{14646}' {
1567         return true;
1568     }
1569     if c >= '\u{16800}' && c <= '\u{16A38}' {
1570         return true;
1571     }
1572     if c >= '\u{16A40}' && c <= '\u{16A5E}' {
1573         return true;
1574     }
1575     if c >= '\u{16A60}' && c <= '\u{16A69}' {
1576         return true;
1577     }
1578     if c >= '\u{16AD0}' && c <= '\u{16AED}' {
1579         return true;
1580     }
1581     if c >= '\u{16AF0}' && c <= '\u{16AF4}' {
1582         return true;
1583     }
1584     if c >= '\u{16B00}' && c <= '\u{16B36}' {
1585         return true;
1586     }
1587     if c >= '\u{16B40}' && c <= '\u{16B43}' {
1588         return true;
1589     }
1590     if c >= '\u{16B50}' && c <= '\u{16B59}' {
1591         return true;
1592     }
1593     if c >= '\u{16B63}' && c <= '\u{16B77}' {
1594         return true;
1595     }
1596     if c >= '\u{16B7D}' && c <= '\u{16B8F}' {
1597         return true;
1598     }
1599     if c >= '\u{16E40}' && c <= '\u{16E7F}' {
1600         return true;
1601     }
1602     if c >= '\u{16F00}' && c <= '\u{16F4A}' {
1603         return true;
1604     }
1605     if c >= '\u{16F4F}' && c <= '\u{16F87}' {
1606         return true;
1607     }
1608     if c >= '\u{16F8F}' && c <= '\u{16F9F}' {
1609         return true;
1610     }
1611     if c >= '\u{16FE0}' && c <= '\u{16FE1}' {
1612         return true;
1613     }
1614     if c >= '\u{16FE3}' && c <= '\u{16FE4}' {
1615         return true;
1616     }
1617     if c >= '\u{16FF0}' && c <= '\u{16FF1}' {
1618         return true;
1619     }
1620     if c >= '\u{17000}' && c <= '\u{187F7}' {
1621         return true;
1622     }
1623     if c >= '\u{18800}' && c <= '\u{18CD5}' {
1624         return true;
1625     }
1626     if c >= '\u{18D00}' && c <= '\u{18D08}' {
1627         return true;
1628     }
1629     if c >= '\u{1B000}' && c <= '\u{1B11E}' {
1630         return true;
1631     }
1632     if c >= '\u{1B150}' && c <= '\u{1B152}' {
1633         return true;
1634     }
1635     if c >= '\u{1B164}' && c <= '\u{1B167}' {
1636         return true;
1637     }
1638     if c >= '\u{1B170}' && c <= '\u{1B2FB}' {
1639         return true;
1640     }
1641     if c >= '\u{1BC00}' && c <= '\u{1BC6A}' {
1642         return true;
1643     }
1644     if c >= '\u{1BC70}' && c <= '\u{1BC7C}' {
1645         return true;
1646     }
1647     if c >= '\u{1BC80}' && c <= '\u{1BC88}' {
1648         return true;
1649     }
1650     if c >= '\u{1BC90}' && c <= '\u{1BC99}' {
1651         return true;
1652     }
1653     if c >= '\u{1BC9D}' && c <= '\u{1BC9E}' {
1654         return true;
1655     }
1656     if c >= '\u{1D165}' && c <= '\u{1D169}' {
1657         return true;
1658     }
1659     if c >= '\u{1D16D}' && c <= '\u{1D172}' {
1660         return true;
1661     }
1662     if c >= '\u{1D17B}' && c <= '\u{1D182}' {
1663         return true;
1664     }
1665     if c >= '\u{1D185}' && c <= '\u{1D18B}' {
1666         return true;
1667     }
1668     if c >= '\u{1D1AA}' && c <= '\u{1D1AD}' {
1669         return true;
1670     }
1671     if c >= '\u{1D242}' && c <= '\u{1D244}' {
1672         return true;
1673     }
1674     if c >= '\u{1D400}' && c <= '\u{1D454}' {
1675         return true;
1676     }
1677     if c >= '\u{1D456}' && c <= '\u{1D49C}' {
1678         return true;
1679     }
1680     if c >= '\u{1D49E}' && c <= '\u{1D49F}' {
1681         return true;
1682     }
1683     if c >= '\u{1D4A2}' && c <= '\u{1D4A2}' {
1684         return true;
1685     }
1686     if c >= '\u{1D4A5}' && c <= '\u{1D4A6}' {
1687         return true;
1688     }
1689     if c >= '\u{1D4A9}' && c <= '\u{1D4AC}' {
1690         return true;
1691     }
1692     if c >= '\u{1D4AE}' && c <= '\u{1D4B9}' {
1693         return true;
1694     }
1695     if c >= '\u{1D4BB}' && c <= '\u{1D4BB}' {
1696         return true;
1697     }
1698     if c >= '\u{1D4BD}' && c <= '\u{1D4C3}' {
1699         return true;
1700     }
1701     if c >= '\u{1D4C5}' && c <= '\u{1D505}' {
1702         return true;
1703     }
1704     if c >= '\u{1D507}' && c <= '\u{1D50A}' {
1705         return true;
1706     }
1707     if c >= '\u{1D50D}' && c <= '\u{1D514}' {
1708         return true;
1709     }
1710     if c >= '\u{1D516}' && c <= '\u{1D51C}' {
1711         return true;
1712     }
1713     if c >= '\u{1D51E}' && c <= '\u{1D539}' {
1714         return true;
1715     }
1716     if c >= '\u{1D53B}' && c <= '\u{1D53E}' {
1717         return true;
1718     }
1719     if c >= '\u{1D540}' && c <= '\u{1D544}' {
1720         return true;
1721     }
1722     if c >= '\u{1D546}' && c <= '\u{1D546}' {
1723         return true;
1724     }
1725     if c >= '\u{1D54A}' && c <= '\u{1D550}' {
1726         return true;
1727     }
1728     if c >= '\u{1D552}' && c <= '\u{1D6A5}' {
1729         return true;
1730     }
1731     if c >= '\u{1D6A8}' && c <= '\u{1D6C0}' {
1732         return true;
1733     }
1734     if c >= '\u{1D6C2}' && c <= '\u{1D6DA}' {
1735         return true;
1736     }
1737     if c >= '\u{1D6DC}' && c <= '\u{1D6FA}' {
1738         return true;
1739     }
1740     if c >= '\u{1D6FC}' && c <= '\u{1D714}' {
1741         return true;
1742     }
1743     if c >= '\u{1D716}' && c <= '\u{1D734}' {
1744         return true;
1745     }
1746     if c >= '\u{1D736}' && c <= '\u{1D74E}' {
1747         return true;
1748     }
1749     if c >= '\u{1D750}' && c <= '\u{1D76E}' {
1750         return true;
1751     }
1752     if c >= '\u{1D770}' && c <= '\u{1D788}' {
1753         return true;
1754     }
1755     if c >= '\u{1D78A}' && c <= '\u{1D7A8}' {
1756         return true;
1757     }
1758     if c >= '\u{1D7AA}' && c <= '\u{1D7C2}' {
1759         return true;
1760     }
1761     if c >= '\u{1D7C4}' && c <= '\u{1D7CB}' {
1762         return true;
1763     }
1764     if c >= '\u{1D7CE}' && c <= '\u{1D7FF}' {
1765         return true;
1766     }
1767     if c >= '\u{1DA00}' && c <= '\u{1DA36}' {
1768         return true;
1769     }
1770     if c >= '\u{1DA3B}' && c <= '\u{1DA6C}' {
1771         return true;
1772     }
1773     if c >= '\u{1DA75}' && c <= '\u{1DA75}' {
1774         return true;
1775     }
1776     if c >= '\u{1DA84}' && c <= '\u{1DA84}' {
1777         return true;
1778     }
1779     if c >= '\u{1DA9B}' && c <= '\u{1DA9F}' {
1780         return true;
1781     }
1782     if c >= '\u{1DAA1}' && c <= '\u{1DAAF}' {
1783         return true;
1784     }
1785     if c >= '\u{1E000}' && c <= '\u{1E006}' {
1786         return true;
1787     }
1788     if c >= '\u{1E008}' && c <= '\u{1E018}' {
1789         return true;
1790     }
1791     if c >= '\u{1E01B}' && c <= '\u{1E021}' {
1792         return true;
1793     }
1794     if c >= '\u{1E023}' && c <= '\u{1E024}' {
1795         return true;
1796     }
1797     if c >= '\u{1E026}' && c <= '\u{1E02A}' {
1798         return true;
1799     }
1800     if c >= '\u{1E100}' && c <= '\u{1E12C}' {
1801         return true;
1802     }
1803     if c >= '\u{1E130}' && c <= '\u{1E13D}' {
1804         return true;
1805     }
1806     if c >= '\u{1E140}' && c <= '\u{1E149}' {
1807         return true;
1808     }
1809     if c >= '\u{1E14E}' && c <= '\u{1E14E}' {
1810         return true;
1811     }
1812     if c >= '\u{1E2C0}' && c <= '\u{1E2F9}' {
1813         return true;
1814     }
1815     if c >= '\u{1E800}' && c <= '\u{1E8C4}' {
1816         return true;
1817     }
1818     if c >= '\u{1E8D0}' && c <= '\u{1E8D6}' {
1819         return true;
1820     }
1821     if c >= '\u{1E900}' && c <= '\u{1E94B}' {
1822         return true;
1823     }
1824     if c >= '\u{1E950}' && c <= '\u{1E959}' {
1825         return true;
1826     }
1827     if c >= '\u{1EE00}' && c <= '\u{1EE03}' {
1828         return true;
1829     }
1830     if c >= '\u{1EE05}' && c <= '\u{1EE1F}' {
1831         return true;
1832     }
1833     if c >= '\u{1EE21}' && c <= '\u{1EE22}' {
1834         return true;
1835     }
1836     if c >= '\u{1EE24}' && c <= '\u{1EE24}' {
1837         return true;
1838     }
1839     if c >= '\u{1EE27}' && c <= '\u{1EE27}' {
1840         return true;
1841     }
1842     if c >= '\u{1EE29}' && c <= '\u{1EE32}' {
1843         return true;
1844     }
1845     if c >= '\u{1EE34}' && c <= '\u{1EE37}' {
1846         return true;
1847     }
1848     if c >= '\u{1EE39}' && c <= '\u{1EE39}' {
1849         return true;
1850     }
1851     if c >= '\u{1EE3B}' && c <= '\u{1EE3B}' {
1852         return true;
1853     }
1854     if c >= '\u{1EE42}' && c <= '\u{1EE42}' {
1855         return true;
1856     }
1857     if c >= '\u{1EE47}' && c <= '\u{1EE47}' {
1858         return true;
1859     }
1860     if c >= '\u{1EE49}' && c <= '\u{1EE49}' {
1861         return true;
1862     }
1863     if c >= '\u{1EE4B}' && c <= '\u{1EE4B}' {
1864         return true;
1865     }
1866     if c >= '\u{1EE4D}' && c <= '\u{1EE4F}' {
1867         return true;
1868     }
1869     if c >= '\u{1EE51}' && c <= '\u{1EE52}' {
1870         return true;
1871     }
1872     if c >= '\u{1EE54}' && c <= '\u{1EE54}' {
1873         return true;
1874     }
1875     if c >= '\u{1EE57}' && c <= '\u{1EE57}' {
1876         return true;
1877     }
1878     if c >= '\u{1EE59}' && c <= '\u{1EE59}' {
1879         return true;
1880     }
1881     if c >= '\u{1EE5B}' && c <= '\u{1EE5B}' {
1882         return true;
1883     }
1884     if c >= '\u{1EE5D}' && c <= '\u{1EE5D}' {
1885         return true;
1886     }
1887     if c >= '\u{1EE5F}' && c <= '\u{1EE5F}' {
1888         return true;
1889     }
1890     if c >= '\u{1EE61}' && c <= '\u{1EE62}' {
1891         return true;
1892     }
1893     if c >= '\u{1EE64}' && c <= '\u{1EE64}' {
1894         return true;
1895     }
1896     if c >= '\u{1EE67}' && c <= '\u{1EE6A}' {
1897         return true;
1898     }
1899     if c >= '\u{1EE6C}' && c <= '\u{1EE72}' {
1900         return true;
1901     }
1902     if c >= '\u{1EE74}' && c <= '\u{1EE77}' {
1903         return true;
1904     }
1905     if c >= '\u{1EE79}' && c <= '\u{1EE7C}' {
1906         return true;
1907     }
1908     if c >= '\u{1EE7E}' && c <= '\u{1EE7E}' {
1909         return true;
1910     }
1911     if c >= '\u{1EE80}' && c <= '\u{1EE89}' {
1912         return true;
1913     }
1914     if c >= '\u{1EE8B}' && c <= '\u{1EE9B}' {
1915         return true;
1916     }
1917     if c >= '\u{1EEA1}' && c <= '\u{1EEA3}' {
1918         return true;
1919     }
1920     if c >= '\u{1EEA5}' && c <= '\u{1EEA9}' {
1921         return true;
1922     }
1923     if c >= '\u{1EEAB}' && c <= '\u{1EEBB}' {
1924         return true;
1925     }
1926     if c >= '\u{1FBF0}' && c <= '\u{1FBF9}' {
1927         return true;
1928     }
1929     if c >= '\u{20000}' && c <= '\u{2A6DD}' {
1930         return true;
1931     }
1932     if c >= '\u{2A700}' && c <= '\u{2B734}' {
1933         return true;
1934     }
1935     if c >= '\u{2B740}' && c <= '\u{2B81D}' {
1936         return true;
1937     }
1938     if c >= '\u{2B820}' && c <= '\u{2CEA1}' {
1939         return true;
1940     }
1941     if c >= '\u{2CEB0}' && c <= '\u{2EBE0}' {
1942         return true;
1943     }
1944     if c >= '\u{2F800}' && c <= '\u{2FA1D}' {
1945         return true;
1946     }
1947     if c >= '\u{30000}' && c <= '\u{3134A}' {
1948         return true;
1949     }
1950     if c >= '\u{E0100}' && c <= '\u{E01EF}' {
1951         return true;
1952     }
1953     false
1954 }
1955