1 /*-------------------------------------------------------------------------
2 This is an automatically generated file: do not edit
3 Generated by ubconfc at Mon Feb 7 20:26:56 CET 2011
4 -------------------------------------------------------------------------*/
8 /* Unicode general categories, listed in the same order as in the Unicode
9 * standard -- this must be the same order as in GHC.Unicode.
13 NUMCAT_LU, /* Letter, Uppercase */
14 NUMCAT_LL, /* Letter, Lowercase */
15 NUMCAT_LT, /* Letter, Titlecase */
16 NUMCAT_LM, /* Letter, Modifier */
17 NUMCAT_LO, /* Letter, Other */
18 NUMCAT_MN, /* Mark, Non-Spacing */
19 NUMCAT_MC, /* Mark, Spacing Combining */
20 NUMCAT_ME, /* Mark, Enclosing */
21 NUMCAT_ND, /* Number, Decimal */
22 NUMCAT_NL, /* Number, Letter */
23 NUMCAT_NO, /* Number, Other */
24 NUMCAT_PC, /* Punctuation, Connector */
25 NUMCAT_PD, /* Punctuation, Dash */
26 NUMCAT_PS, /* Punctuation, Open */
27 NUMCAT_PE, /* Punctuation, Close */
28 NUMCAT_PI, /* Punctuation, Initial quote */
29 NUMCAT_PF, /* Punctuation, Final quote */
30 NUMCAT_PO, /* Punctuation, Other */
31 NUMCAT_SM, /* Symbol, Math */
32 NUMCAT_SC, /* Symbol, Currency */
33 NUMCAT_SK, /* Symbol, Modifier */
34 NUMCAT_SO, /* Symbol, Other */
35 NUMCAT_ZS, /* Separator, Space */
36 NUMCAT_ZL, /* Separator, Line */
37 NUMCAT_ZP, /* Separator, Paragraph */
38 NUMCAT_CC, /* Other, Control */
39 NUMCAT_CF, /* Other, Format */
40 NUMCAT_CS, /* Other, Surrogate */
41 NUMCAT_CO, /* Other, Private Use */
42 NUMCAT_CN /* Other, Not Assigned */
47 unsigned int category;
48 unsigned int catnumber;
59 const struct _convrule_ *rule;
62 #define GENCAT_LO 262144
63 #define GENCAT_PC 2048
65 #define GENCAT_MN 2097152
67 #define GENCAT_NL 16777216
68 #define GENCAT_PF 131072
69 #define GENCAT_LT 524288
70 #define GENCAT_NO 65536
72 #define GENCAT_PI 16384
76 #define GENCAT_SK 1024
78 #define GENCAT_SO 8192
80 #define GENCAT_CF 32768
81 #define GENCAT_CO 268435456
82 #define GENCAT_ZL 33554432
83 #define GENCAT_CS 134217728
84 #define GENCAT_ZP 67108864
86 #define GENCAT_MC 8388608
87 #define GENCAT_ME 4194304
89 #define GENCAT_LL 4096
90 #define GENCAT_LM 1048576
91 #define MAX_UNI_CHAR 1114109
92 #define NUM_BLOCKS 2783
93 #define NUM_CONVBLOCKS 1230
94 #define NUM_SPACEBLOCKS 8
95 #define NUM_LAT1BLOCKS 63
97 static const struct _convrule_ rule160={GENCAT_LL, NUMCAT_LL, 1, -7264, 0, -7264};
98 static const struct _convrule_ rule36={GENCAT_LU, NUMCAT_LU, 1, 0, 211, 0};
99 static const struct _convrule_ rule25={GENCAT_LU, NUMCAT_LU, 1, 0, -121, 0};
100 static const struct _convrule_ rule18={GENCAT_LL, NUMCAT_LL, 1, 743, 0, 743};
101 static const struct _convrule_ rule108={GENCAT_LU, NUMCAT_LU, 1, 0, 80, 0};
102 static const struct _convrule_ rule50={GENCAT_LL, NUMCAT_LL, 1, -79, 0, -79};
103 static const struct _convrule_ rule106={GENCAT_LL, NUMCAT_LL, 1, -96, 0, -96};
104 static const struct _convrule_ rule79={GENCAT_LL, NUMCAT_LL, 1, -69, 0, -69};
105 static const struct _convrule_ rule126={GENCAT_LL, NUMCAT_LL, 1, 128, 0, 128};
106 static const struct _convrule_ rule119={GENCAT_LL, NUMCAT_LL, 1, -59, 0, -59};
107 static const struct _convrule_ rule102={GENCAT_LL, NUMCAT_LL, 1, -86, 0, -86};
108 static const struct _convrule_ rule38={GENCAT_LL, NUMCAT_LL, 1, 163, 0, 163};
109 static const struct _convrule_ rule113={GENCAT_LL, NUMCAT_LL, 1, -48, 0, -48};
110 static const struct _convrule_ rule133={GENCAT_LL, NUMCAT_LL, 1, -7205, 0, -7205};
111 static const struct _convrule_ rule128={GENCAT_LL, NUMCAT_LL, 1, 126, 0, 126};
112 static const struct _convrule_ rule97={GENCAT_LL, NUMCAT_LL, 1, -57, 0, -57};
113 static const struct _convrule_ rule161={GENCAT_LU, NUMCAT_LU, 1, 0, -35332, 0};
114 static const struct _convrule_ rule136={GENCAT_LU, NUMCAT_LU, 1, 0, -112, 0};
115 static const struct _convrule_ rule99={GENCAT_LL, NUMCAT_LL, 1, -47, 0, -47};
116 static const struct _convrule_ rule90={GENCAT_LL, NUMCAT_LL, 1, -38, 0, -38};
117 static const struct _convrule_ rule32={GENCAT_LU, NUMCAT_LU, 1, 0, 202, 0};
118 static const struct _convrule_ rule145={GENCAT_LL, NUMCAT_LL, 1, -28, 0, -28};
119 static const struct _convrule_ rule93={GENCAT_LL, NUMCAT_LL, 1, -64, 0, -64};
120 static const struct _convrule_ rule91={GENCAT_LL, NUMCAT_LL, 1, -37, 0, -37};
121 static const struct _convrule_ rule60={GENCAT_LU, NUMCAT_LU, 1, 0, 71, 0};
122 static const struct _convrule_ rule100={GENCAT_LL, NUMCAT_LL, 1, -54, 0, -54};
123 static const struct _convrule_ rule94={GENCAT_LL, NUMCAT_LL, 1, -63, 0, -63};
124 static const struct _convrule_ rule35={GENCAT_LL, NUMCAT_LL, 1, 97, 0, 97};
125 static const struct _convrule_ rule149={GENCAT_SO, NUMCAT_SO, 1, -26, 0, -26};
126 static const struct _convrule_ rule103={GENCAT_LL, NUMCAT_LL, 1, -80, 0, -80};
127 static const struct _convrule_ rule96={GENCAT_LL, NUMCAT_LL, 1, -62, 0, -62};
128 static const struct _convrule_ rule81={GENCAT_LL, NUMCAT_LL, 1, -71, 0, -71};
129 static const struct _convrule_ rule9={GENCAT_LU, NUMCAT_LU, 1, 0, 32, 0};
130 static const struct _convrule_ rule147={GENCAT_NL, NUMCAT_NL, 1, -16, 0, -16};
131 static const struct _convrule_ rule143={GENCAT_LU, NUMCAT_LU, 1, 0, -8262, 0};
132 static const struct _convrule_ rule127={GENCAT_LL, NUMCAT_LL, 1, 112, 0, 112};
133 static const struct _convrule_ rule124={GENCAT_LL, NUMCAT_LL, 1, 86, 0, 86};
134 static const struct _convrule_ rule40={GENCAT_LL, NUMCAT_LL, 1, 130, 0, 130};
135 static const struct _convrule_ rule20={GENCAT_LL, NUMCAT_LL, 1, 121, 0, 121};
136 static const struct _convrule_ rule158={GENCAT_LU, NUMCAT_LU, 1, 0, -10782, 0};
137 static const struct _convrule_ rule111={GENCAT_LL, NUMCAT_LL, 1, -15, 0, -15};
138 static const struct _convrule_ rule12={GENCAT_LL, NUMCAT_LL, 1, -32, 0, -32};
139 static const struct _convrule_ rule85={GENCAT_MN, NUMCAT_MN, 1, 84, 0, 84};
140 static const struct _convrule_ rule166={GENCAT_LL, NUMCAT_LL, 1, -40, 0, -40};
141 static const struct _convrule_ rule125={GENCAT_LL, NUMCAT_LL, 1, 100, 0, 100};
142 static const struct _convrule_ rule123={GENCAT_LL, NUMCAT_LL, 1, 74, 0, 74};
143 static const struct _convrule_ rule92={GENCAT_LL, NUMCAT_LL, 1, -31, 0, -31};
144 static const struct _convrule_ rule56={GENCAT_LU, NUMCAT_LU, 1, 0, 10792, 0};
145 static const struct _convrule_ rule46={GENCAT_LL, NUMCAT_LL, 1, 56, 0, 56};
146 static const struct _convrule_ rule33={GENCAT_LU, NUMCAT_LU, 1, 0, 203, 0};
147 static const struct _convrule_ rule150={GENCAT_LU, NUMCAT_LU, 1, 0, -10743, 0};
148 static const struct _convrule_ rule39={GENCAT_LU, NUMCAT_LU, 1, 0, 213, 0};
149 static const struct _convrule_ rule57={GENCAT_LL, NUMCAT_LL, 1, 10815, 0, 10815};
150 static const struct _convrule_ rule157={GENCAT_LU, NUMCAT_LU, 1, 0, -10783, 0};
151 static const struct _convrule_ rule55={GENCAT_LU, NUMCAT_LU, 1, 0, -163, 0};
152 static const struct _convrule_ rule151={GENCAT_LU, NUMCAT_LU, 1, 0, -3814, 0};
153 static const struct _convrule_ rule142={GENCAT_LU, NUMCAT_LU, 1, 0, -8383, 0};
154 static const struct _convrule_ rule101={GENCAT_LL, NUMCAT_LL, 1, -8, 0, -8};
155 static const struct _convrule_ rule89={GENCAT_LU, NUMCAT_LU, 1, 0, 63, 0};
156 static const struct _convrule_ rule41={GENCAT_LU, NUMCAT_LU, 1, 0, 214, 0};
157 static const struct _convrule_ rule118={GENCAT_LL, NUMCAT_LL, 1, 3814, 0, 3814};
158 static const struct _convrule_ rule26={GENCAT_LL, NUMCAT_LL, 1, -300, 0, -300};
159 static const struct _convrule_ rule159={GENCAT_LU, NUMCAT_LU, 1, 0, -10815, 0};
160 static const struct _convrule_ rule115={GENCAT_LU, NUMCAT_LU, 1, 0, 7264, 0};
161 static const struct _convrule_ rule22={GENCAT_LL, NUMCAT_LL, 1, -1, 0, -1};
162 static const struct _convrule_ rule120={GENCAT_LU, NUMCAT_LU, 1, 0, -7615, 0};
163 static const struct _convrule_ rule49={GENCAT_LL, NUMCAT_LL, 1, -2, 0, -1};
164 static const struct _convrule_ rule131={GENCAT_LU, NUMCAT_LU, 1, 0, -74, 0};
165 static const struct _convrule_ rule88={GENCAT_LU, NUMCAT_LU, 1, 0, 64, 0};
166 static const struct _convrule_ rule30={GENCAT_LU, NUMCAT_LU, 1, 0, 205, 0};
167 static const struct _convrule_ rule117={GENCAT_LL, NUMCAT_LL, 1, 35332, 0, 35332};
168 static const struct _convrule_ rule110={GENCAT_LU, NUMCAT_LU, 1, 0, 15, 0};
169 static const struct _convrule_ rule130={GENCAT_LL, NUMCAT_LL, 1, 9, 0, 9};
170 static const struct _convrule_ rule121={GENCAT_LL, NUMCAT_LL, 1, 8, 0, 8};
171 static const struct _convrule_ rule95={GENCAT_LU, NUMCAT_LU, 1, 0, 8, 0};
172 static const struct _convrule_ rule54={GENCAT_LU, NUMCAT_LU, 1, 0, 10795, 0};
173 static const struct _convrule_ rule29={GENCAT_LU, NUMCAT_LU, 1, 0, 206, 0};
174 static const struct _convrule_ rule138={GENCAT_LU, NUMCAT_LU, 1, 0, -126, 0};
175 static const struct _convrule_ rule104={GENCAT_LL, NUMCAT_LL, 1, 7, 0, 7};
176 static const struct _convrule_ rule58={GENCAT_LU, NUMCAT_LU, 1, 0, -195, 0};
177 static const struct _convrule_ rule146={GENCAT_NL, NUMCAT_NL, 1, 0, 16, 0};
178 static const struct _convrule_ rule148={GENCAT_SO, NUMCAT_SO, 1, 0, 26, 0};
179 static const struct _convrule_ rule70={GENCAT_LL, NUMCAT_LL, 1, 42280, 0, 42280};
180 static const struct _convrule_ rule107={GENCAT_LU, NUMCAT_LU, 1, 0, -7, 0};
181 static const struct _convrule_ rule52={GENCAT_LU, NUMCAT_LU, 1, 0, -56, 0};
182 static const struct _convrule_ rule153={GENCAT_LL, NUMCAT_LL, 1, -10795, 0, -10795};
183 static const struct _convrule_ rule152={GENCAT_LU, NUMCAT_LU, 1, 0, -10727, 0};
184 static const struct _convrule_ rule141={GENCAT_LU, NUMCAT_LU, 1, 0, -7517, 0};
185 static const struct _convrule_ rule34={GENCAT_LU, NUMCAT_LU, 1, 0, 207, 0};
186 static const struct _convrule_ rule164={GENCAT_CO, NUMCAT_CO, 0, 0, 0, 0};
187 static const struct _convrule_ rule84={GENCAT_MN, NUMCAT_MN, 0, 0, 0, 0};
188 static const struct _convrule_ rule16={GENCAT_CF, NUMCAT_CF, 0, 0, 0, 0};
189 static const struct _convrule_ rule45={GENCAT_LO, NUMCAT_LO, 0, 0, 0, 0};
190 static const struct _convrule_ rule13={GENCAT_SO, NUMCAT_SO, 0, 0, 0, 0};
191 static const struct _convrule_ rule17={GENCAT_NO, NUMCAT_NO, 0, 0, 0, 0};
192 static const struct _convrule_ rule8={GENCAT_ND, NUMCAT_ND, 0, 0, 0, 0};
193 static const struct _convrule_ rule14={GENCAT_LL, NUMCAT_LL, 0, 0, 0, 0};
194 static const struct _convrule_ rule98={GENCAT_LU, NUMCAT_LU, 0, 0, 0, 0};
195 static const struct _convrule_ rule6={GENCAT_SM, NUMCAT_SM, 0, 0, 0, 0};
196 static const struct _convrule_ rule114={GENCAT_MC, NUMCAT_MC, 0, 0, 0, 0};
197 static const struct _convrule_ rule2={GENCAT_PO, NUMCAT_PO, 0, 0, 0, 0};
198 static const struct _convrule_ rule116={GENCAT_NL, NUMCAT_NL, 0, 0, 0, 0};
199 static const struct _convrule_ rule3={GENCAT_SC, NUMCAT_SC, 0, 0, 0, 0};
200 static const struct _convrule_ rule10={GENCAT_SK, NUMCAT_SK, 0, 0, 0, 0};
201 static const struct _convrule_ rule83={GENCAT_LM, NUMCAT_LM, 0, 0, 0, 0};
202 static const struct _convrule_ rule5={GENCAT_PE, NUMCAT_PE, 0, 0, 0, 0};
203 static const struct _convrule_ rule4={GENCAT_PS, NUMCAT_PS, 0, 0, 0, 0};
204 static const struct _convrule_ rule11={GENCAT_PC, NUMCAT_PC, 0, 0, 0, 0};
205 static const struct _convrule_ rule7={GENCAT_PD, NUMCAT_PD, 0, 0, 0, 0};
206 static const struct _convrule_ rule163={GENCAT_CS, NUMCAT_CS, 0, 0, 0, 0};
207 static const struct _convrule_ rule109={GENCAT_ME, NUMCAT_ME, 0, 0, 0, 0};
208 static const struct _convrule_ rule1={GENCAT_ZS, NUMCAT_ZS, 0, 0, 0, 0};
209 static const struct _convrule_ rule19={GENCAT_PF, NUMCAT_PF, 0, 0, 0, 0};
210 static const struct _convrule_ rule15={GENCAT_PI, NUMCAT_PI, 0, 0, 0, 0};
211 static const struct _convrule_ rule140={GENCAT_ZP, NUMCAT_ZP, 0, 0, 0, 0};
212 static const struct _convrule_ rule139={GENCAT_ZL, NUMCAT_ZL, 0, 0, 0, 0};
213 static const struct _convrule_ rule134={GENCAT_LU, NUMCAT_LU, 1, 0, -86, 0};
214 static const struct _convrule_ rule43={GENCAT_LU, NUMCAT_LU, 1, 0, 217, 0};
215 static const struct _convrule_ rule0={GENCAT_CC, NUMCAT_CC, 0, 0, 0, 0};
216 static const struct _convrule_ rule154={GENCAT_LL, NUMCAT_LL, 1, -10792, 0, -10792};
217 static const struct _convrule_ rule74={GENCAT_LL, NUMCAT_LL, 1, 10749, 0, 10749};
218 static const struct _convrule_ rule87={GENCAT_LU, NUMCAT_LU, 1, 0, 37, 0};
219 static const struct _convrule_ rule61={GENCAT_LL, NUMCAT_LL, 1, 10783, 0, 10783};
220 static const struct _convrule_ rule122={GENCAT_LU, NUMCAT_LU, 1, 0, -8, 0};
221 static const struct _convrule_ rule129={GENCAT_LT, NUMCAT_LT, 1, 0, -8, 0};
222 static const struct _convrule_ rule63={GENCAT_LL, NUMCAT_LL, 1, 10782, 0, 10782};
223 static const struct _convrule_ rule82={GENCAT_LL, NUMCAT_LL, 1, -219, 0, -219};
224 static const struct _convrule_ rule77={GENCAT_LL, NUMCAT_LL, 1, 10727, 0, 10727};
225 static const struct _convrule_ rule78={GENCAT_LL, NUMCAT_LL, 1, -218, 0, -218};
226 static const struct _convrule_ rule71={GENCAT_LL, NUMCAT_LL, 1, -209, 0, -209};
227 static const struct _convrule_ rule62={GENCAT_LL, NUMCAT_LL, 1, 10780, 0, 10780};
228 static const struct _convrule_ rule48={GENCAT_LT, NUMCAT_LT, 1, -1, 1, 0};
229 static const struct _convrule_ rule21={GENCAT_LU, NUMCAT_LU, 1, 0, 1, 0};
230 static const struct _convrule_ rule137={GENCAT_LU, NUMCAT_LU, 1, 0, -128, 0};
231 static const struct _convrule_ rule80={GENCAT_LL, NUMCAT_LL, 1, -217, 0, -217};
232 static const struct _convrule_ rule73={GENCAT_LL, NUMCAT_LL, 1, 10743, 0, 10743};
233 static const struct _convrule_ rule42={GENCAT_LU, NUMCAT_LU, 1, 0, 218, 0};
234 static const struct _convrule_ rule69={GENCAT_LL, NUMCAT_LL, 1, -207, 0, -207};
235 static const struct _convrule_ rule51={GENCAT_LU, NUMCAT_LU, 1, 0, -97, 0};
236 static const struct _convrule_ rule144={GENCAT_LU, NUMCAT_LU, 1, 0, 28, 0};
237 static const struct _convrule_ rule65={GENCAT_LL, NUMCAT_LL, 1, -206, 0, -206};
238 static const struct _convrule_ rule86={GENCAT_LU, NUMCAT_LU, 1, 0, 38, 0};
239 static const struct _convrule_ rule76={GENCAT_LL, NUMCAT_LL, 1, -214, 0, -214};
240 static const struct _convrule_ rule66={GENCAT_LL, NUMCAT_LL, 1, -205, 0, -205};
241 static const struct _convrule_ rule24={GENCAT_LL, NUMCAT_LL, 1, -232, 0, -232};
242 static const struct _convrule_ rule112={GENCAT_LU, NUMCAT_LU, 1, 0, 48, 0};
243 static const struct _convrule_ rule132={GENCAT_LT, NUMCAT_LT, 1, 0, -9, 0};
244 static const struct _convrule_ rule75={GENCAT_LL, NUMCAT_LL, 1, -213, 0, -213};
245 static const struct _convrule_ rule68={GENCAT_LL, NUMCAT_LL, 1, -203, 0, -203};
246 static const struct _convrule_ rule135={GENCAT_LU, NUMCAT_LU, 1, 0, -100, 0};
247 static const struct _convrule_ rule72={GENCAT_LL, NUMCAT_LL, 1, -211, 0, -211};
248 static const struct _convrule_ rule67={GENCAT_LL, NUMCAT_LL, 1, -202, 0, -202};
249 static const struct _convrule_ rule47={GENCAT_LU, NUMCAT_LU, 1, 0, 2, 1};
250 static const struct _convrule_ rule37={GENCAT_LU, NUMCAT_LU, 1, 0, 209, 0};
251 static const struct _convrule_ rule156={GENCAT_LU, NUMCAT_LU, 1, 0, -10749, 0};
252 static const struct _convrule_ rule64={GENCAT_LL, NUMCAT_LL, 1, -210, 0, -210};
253 static const struct _convrule_ rule44={GENCAT_LU, NUMCAT_LU, 1, 0, 219, 0};
254 static const struct _convrule_ rule28={GENCAT_LU, NUMCAT_LU, 1, 0, 210, 0};
255 static const struct _convrule_ rule53={GENCAT_LU, NUMCAT_LU, 1, 0, -130, 0};
256 static const struct _convrule_ rule165={GENCAT_LU, NUMCAT_LU, 1, 0, 40, 0};
257 static const struct _convrule_ rule162={GENCAT_LU, NUMCAT_LU, 1, 0, -42280, 0};
258 static const struct _convrule_ rule155={GENCAT_LU, NUMCAT_LU, 1, 0, -10780, 0};
259 static const struct _convrule_ rule105={GENCAT_LU, NUMCAT_LU, 1, 0, -60, 0};
260 static const struct _convrule_ rule59={GENCAT_LU, NUMCAT_LU, 1, 0, 69, 0};
261 static const struct _convrule_ rule31={GENCAT_LU, NUMCAT_LU, 1, 0, 79, 0};
262 static const struct _convrule_ rule27={GENCAT_LL, NUMCAT_LL, 1, 195, 0, 195};
263 static const struct _convrule_ rule23={GENCAT_LU, NUMCAT_LU, 1, 0, -199, 0};
264 static const struct _charblock_ allchars[]={
782 {1024, 16, &rule108},
785 {1104, 16, &rule103},
981 {1329, 38, &rule112},
984 {1377, 38, &rule113},
1006 {1552, 11, &rule84},
1009 {1568, 32, &rule45},
1011 {1601, 10, &rule45},
1012 {1611, 21, &rule84},
1017 {1649, 99, &rule45},
1037 {1810, 30, &rule45},
1038 {1840, 27, &rule84},
1039 {1869, 89, &rule45},
1040 {1958, 11, &rule84},
1043 {1994, 33, &rule45},
1049 {2048, 22, &rule45},
1058 {2112, 25, &rule45},
1062 {2307, 1, &rule114},
1063 {2308, 54, &rule45},
1065 {2363, 1, &rule114},
1068 {2366, 3, &rule114},
1070 {2377, 4, &rule114},
1072 {2382, 2, &rule114},
1075 {2392, 10, &rule45},
1084 {2434, 2, &rule114},
1087 {2451, 22, &rule45},
1093 {2494, 3, &rule114},
1095 {2503, 2, &rule114},
1096 {2507, 2, &rule114},
1099 {2519, 1, &rule114},
1110 {2563, 1, &rule114},
1113 {2579, 22, &rule45},
1119 {2622, 3, &rule114},
1131 {2691, 1, &rule114},
1134 {2707, 22, &rule45},
1140 {2750, 3, &rule114},
1143 {2761, 1, &rule114},
1144 {2763, 2, &rule114},
1152 {2818, 2, &rule114},
1155 {2835, 22, &rule45},
1161 {2878, 1, &rule114},
1163 {2880, 1, &rule114},
1165 {2887, 2, &rule114},
1166 {2891, 2, &rule114},
1169 {2903, 1, &rule114},
1187 {2990, 12, &rule45},
1188 {3006, 2, &rule114},
1190 {3009, 2, &rule114},
1191 {3014, 3, &rule114},
1192 {3018, 3, &rule114},
1195 {3031, 1, &rule114},
1201 {3073, 3, &rule114},
1204 {3090, 23, &rule45},
1205 {3114, 10, &rule45},
1209 {3137, 4, &rule114},
1219 {3202, 2, &rule114},
1222 {3218, 23, &rule45},
1223 {3242, 10, &rule45},
1227 {3262, 1, &rule114},
1229 {3264, 5, &rule114},
1231 {3271, 2, &rule114},
1232 {3274, 2, &rule114},
1234 {3285, 2, &rule114},
1240 {3330, 2, &rule114},
1243 {3346, 41, &rule45},
1245 {3390, 3, &rule114},
1247 {3398, 3, &rule114},
1248 {3402, 3, &rule114},
1251 {3415, 1, &rule114},
1258 {3458, 2, &rule114},
1259 {3461, 18, &rule45},
1260 {3482, 24, &rule45},
1265 {3535, 3, &rule114},
1268 {3544, 8, &rule114},
1269 {3570, 2, &rule114},
1271 {3585, 48, &rule45},
1311 {3882, 10, &rule17},
1322 {3902, 2, &rule114},
1324 {3913, 36, &rule45},
1325 {3953, 14, &rule84},
1326 {3967, 1, &rule114},
1331 {3981, 11, &rule84},
1332 {3993, 36, &rule84},
1340 {4096, 43, &rule45},
1341 {4139, 2, &rule114},
1343 {4145, 1, &rule114},
1345 {4152, 1, &rule114},
1347 {4155, 2, &rule114},
1353 {4182, 2, &rule114},
1358 {4194, 3, &rule114},
1360 {4199, 7, &rule114},
1363 {4213, 13, &rule45},
1365 {4227, 2, &rule114},
1367 {4231, 6, &rule114},
1370 {4239, 1, &rule114},
1372 {4250, 3, &rule114},
1375 {4256, 38, &rule115},
1376 {4304, 43, &rule45},
1379 {4352, 329, &rule45},
1384 {4704, 41, &rule45},
1386 {4752, 33, &rule45},
1391 {4808, 15, &rule45},
1392 {4824, 57, &rule45},
1394 {4888, 67, &rule45},
1398 {4969, 20, &rule17},
1399 {4992, 16, &rule45},
1400 {5008, 10, &rule13},
1401 {5024, 85, &rule45},
1403 {5121, 620, &rule45},
1405 {5743, 17, &rule45},
1407 {5761, 26, &rule45},
1410 {5792, 75, &rule45},
1412 {5870, 3, &rule116},
1413 {5888, 13, &rule45},
1416 {5920, 18, &rule45},
1419 {5952, 18, &rule45},
1421 {5984, 13, &rule45},
1424 {6016, 52, &rule45},
1426 {6070, 1, &rule114},
1428 {6078, 8, &rule114},
1430 {6087, 2, &rule114},
1431 {6089, 11, &rule84},
1439 {6128, 10, &rule17},
1446 {6176, 35, &rule45},
1448 {6212, 52, &rule45},
1449 {6272, 41, &rule45},
1452 {6320, 70, &rule45},
1453 {6400, 29, &rule45},
1455 {6435, 4, &rule114},
1457 {6441, 3, &rule114},
1458 {6448, 2, &rule114},
1460 {6451, 6, &rule114},
1465 {6480, 30, &rule45},
1467 {6528, 44, &rule45},
1468 {6576, 17, &rule114},
1470 {6600, 2, &rule114},
1473 {6622, 34, &rule13},
1474 {6656, 23, &rule45},
1476 {6681, 3, &rule114},
1478 {6688, 53, &rule45},
1479 {6741, 1, &rule114},
1481 {6743, 1, &rule114},
1484 {6753, 1, &rule114},
1486 {6755, 2, &rule114},
1488 {6765, 6, &rule114},
1489 {6771, 10, &rule84},
1497 {6916, 1, &rule114},
1498 {6917, 47, &rule45},
1500 {6965, 1, &rule114},
1502 {6971, 1, &rule114},
1504 {6973, 5, &rule114},
1506 {6979, 2, &rule114},
1510 {7009, 10, &rule13},
1514 {7042, 1, &rule114},
1515 {7043, 30, &rule45},
1516 {7073, 1, &rule114},
1518 {7078, 2, &rule114},
1520 {7082, 1, &rule114},
1523 {7104, 38, &rule45},
1525 {7143, 1, &rule114},
1527 {7146, 3, &rule114},
1529 {7150, 1, &rule114},
1531 {7154, 2, &rule114},
1533 {7168, 36, &rule45},
1534 {7204, 8, &rule114},
1536 {7220, 2, &rule114},
1542 {7258, 30, &rule45},
1547 {7380, 13, &rule84},
1548 {7393, 1, &rule114},
1553 {7410, 1, &rule114},
1554 {7424, 44, &rule14},
1555 {7468, 54, &rule83},
1556 {7522, 22, &rule14},
1558 {7545, 1, &rule117},
1560 {7549, 1, &rule118},
1561 {7550, 29, &rule14},
1562 {7579, 37, &rule83},
1563 {7616, 39, &rule84},
1716 {7835, 1, &rule119},
1718 {7838, 1, &rule120},
1816 {7936, 8, &rule121},
1817 {7944, 8, &rule122},
1818 {7952, 6, &rule121},
1819 {7960, 6, &rule122},
1820 {7968, 8, &rule121},
1821 {7976, 8, &rule122},
1822 {7984, 8, &rule121},
1823 {7992, 8, &rule122},
1824 {8000, 6, &rule121},
1825 {8008, 6, &rule122},
1827 {8017, 1, &rule121},
1829 {8019, 1, &rule121},
1831 {8021, 1, &rule121},
1833 {8023, 1, &rule121},
1834 {8025, 1, &rule122},
1835 {8027, 1, &rule122},
1836 {8029, 1, &rule122},
1837 {8031, 1, &rule122},
1838 {8032, 8, &rule121},
1839 {8040, 8, &rule122},
1840 {8048, 2, &rule123},
1841 {8050, 4, &rule124},
1842 {8054, 2, &rule125},
1843 {8056, 2, &rule126},
1844 {8058, 2, &rule127},
1845 {8060, 2, &rule128},
1846 {8064, 8, &rule121},
1847 {8072, 8, &rule129},
1848 {8080, 8, &rule121},
1849 {8088, 8, &rule129},
1850 {8096, 8, &rule121},
1851 {8104, 8, &rule129},
1852 {8112, 2, &rule121},
1854 {8115, 1, &rule130},
1857 {8120, 2, &rule122},
1858 {8122, 2, &rule131},
1859 {8124, 1, &rule132},
1861 {8126, 1, &rule133},
1864 {8131, 1, &rule130},
1867 {8136, 4, &rule134},
1868 {8140, 1, &rule132},
1870 {8144, 2, &rule121},
1873 {8152, 2, &rule122},
1874 {8154, 2, &rule135},
1876 {8160, 2, &rule121},
1878 {8165, 1, &rule104},
1880 {8168, 2, &rule122},
1881 {8170, 2, &rule136},
1882 {8172, 1, &rule107},
1885 {8179, 1, &rule130},
1888 {8184, 2, &rule137},
1889 {8186, 2, &rule138},
1890 {8188, 1, &rule132},
1904 {8232, 1, &rule139},
1905 {8233, 1, &rule140},
1932 {8320, 10, &rule17},
1936 {8336, 13, &rule83},
1938 {8400, 13, &rule84},
1939 {8413, 4, &rule109},
1941 {8418, 3, &rule109},
1942 {8421, 12, &rule84},
1961 {8486, 1, &rule141},
1965 {8490, 1, &rule142},
1966 {8491, 1, &rule143},
1971 {8498, 1, &rule144},
1985 {8526, 1, &rule145},
1987 {8528, 16, &rule17},
1988 {8544, 16, &rule146},
1989 {8560, 16, &rule147},
1990 {8576, 3, &rule116},
1993 {8581, 4, &rule116},
2006 {8623, 31, &rule13},
2012 {8661, 31, &rule13},
2013 {8692, 268, &rule6},
2016 {8972, 20, &rule13},
2021 {9003, 81, &rule13},
2023 {9085, 30, &rule13},
2025 {9140, 40, &rule13},
2027 {9186, 18, &rule13},
2028 {9216, 39, &rule13},
2029 {9280, 11, &rule13},
2030 {9312, 60, &rule17},
2031 {9372, 26, &rule13},
2032 {9398, 26, &rule148},
2033 {9424, 26, &rule149},
2034 {9450, 22, &rule17},
2035 {9472, 183, &rule13},
2039 {9666, 54, &rule13},
2041 {9728, 111, &rule13},
2043 {9840, 144, &rule13},
2044 {9985, 103, &rule13},
2059 {10102, 30, &rule17},
2060 {10132, 44, &rule13},
2066 {10190, 24, &rule6},
2077 {10224, 16, &rule6},
2078 {10240, 256, &rule13},
2079 {10496, 131, &rule6},
2102 {10649, 63, &rule6},
2107 {10716, 32, &rule6},
2110 {10750, 258, &rule6},
2111 {11008, 48, &rule13},
2112 {11056, 21, &rule6},
2113 {11077, 2, &rule13},
2115 {11088, 10, &rule13},
2116 {11264, 47, &rule112},
2117 {11312, 47, &rule113},
2118 {11360, 1, &rule21},
2119 {11361, 1, &rule22},
2120 {11362, 1, &rule150},
2121 {11363, 1, &rule151},
2122 {11364, 1, &rule152},
2123 {11365, 1, &rule153},
2124 {11366, 1, &rule154},
2125 {11367, 1, &rule21},
2126 {11368, 1, &rule22},
2127 {11369, 1, &rule21},
2128 {11370, 1, &rule22},
2129 {11371, 1, &rule21},
2130 {11372, 1, &rule22},
2131 {11373, 1, &rule155},
2132 {11374, 1, &rule156},
2133 {11375, 1, &rule157},
2134 {11376, 1, &rule158},
2135 {11377, 1, &rule14},
2136 {11378, 1, &rule21},
2137 {11379, 1, &rule22},
2138 {11380, 1, &rule14},
2139 {11381, 1, &rule21},
2140 {11382, 1, &rule22},
2141 {11383, 6, &rule14},
2142 {11389, 1, &rule83},
2143 {11390, 2, &rule159},
2144 {11392, 1, &rule21},
2145 {11393, 1, &rule22},
2146 {11394, 1, &rule21},
2147 {11395, 1, &rule22},
2148 {11396, 1, &rule21},
2149 {11397, 1, &rule22},
2150 {11398, 1, &rule21},
2151 {11399, 1, &rule22},
2152 {11400, 1, &rule21},
2153 {11401, 1, &rule22},
2154 {11402, 1, &rule21},
2155 {11403, 1, &rule22},
2156 {11404, 1, &rule21},
2157 {11405, 1, &rule22},
2158 {11406, 1, &rule21},
2159 {11407, 1, &rule22},
2160 {11408, 1, &rule21},
2161 {11409, 1, &rule22},
2162 {11410, 1, &rule21},
2163 {11411, 1, &rule22},
2164 {11412, 1, &rule21},
2165 {11413, 1, &rule22},
2166 {11414, 1, &rule21},
2167 {11415, 1, &rule22},
2168 {11416, 1, &rule21},
2169 {11417, 1, &rule22},
2170 {11418, 1, &rule21},
2171 {11419, 1, &rule22},
2172 {11420, 1, &rule21},
2173 {11421, 1, &rule22},
2174 {11422, 1, &rule21},
2175 {11423, 1, &rule22},
2176 {11424, 1, &rule21},
2177 {11425, 1, &rule22},
2178 {11426, 1, &rule21},
2179 {11427, 1, &rule22},
2180 {11428, 1, &rule21},
2181 {11429, 1, &rule22},
2182 {11430, 1, &rule21},
2183 {11431, 1, &rule22},
2184 {11432, 1, &rule21},
2185 {11433, 1, &rule22},
2186 {11434, 1, &rule21},
2187 {11435, 1, &rule22},
2188 {11436, 1, &rule21},
2189 {11437, 1, &rule22},
2190 {11438, 1, &rule21},
2191 {11439, 1, &rule22},
2192 {11440, 1, &rule21},
2193 {11441, 1, &rule22},
2194 {11442, 1, &rule21},
2195 {11443, 1, &rule22},
2196 {11444, 1, &rule21},
2197 {11445, 1, &rule22},
2198 {11446, 1, &rule21},
2199 {11447, 1, &rule22},
2200 {11448, 1, &rule21},
2201 {11449, 1, &rule22},
2202 {11450, 1, &rule21},
2203 {11451, 1, &rule22},
2204 {11452, 1, &rule21},
2205 {11453, 1, &rule22},
2206 {11454, 1, &rule21},
2207 {11455, 1, &rule22},
2208 {11456, 1, &rule21},
2209 {11457, 1, &rule22},
2210 {11458, 1, &rule21},
2211 {11459, 1, &rule22},
2212 {11460, 1, &rule21},
2213 {11461, 1, &rule22},
2214 {11462, 1, &rule21},
2215 {11463, 1, &rule22},
2216 {11464, 1, &rule21},
2217 {11465, 1, &rule22},
2218 {11466, 1, &rule21},
2219 {11467, 1, &rule22},
2220 {11468, 1, &rule21},
2221 {11469, 1, &rule22},
2222 {11470, 1, &rule21},
2223 {11471, 1, &rule22},
2224 {11472, 1, &rule21},
2225 {11473, 1, &rule22},
2226 {11474, 1, &rule21},
2227 {11475, 1, &rule22},
2228 {11476, 1, &rule21},
2229 {11477, 1, &rule22},
2230 {11478, 1, &rule21},
2231 {11479, 1, &rule22},
2232 {11480, 1, &rule21},
2233 {11481, 1, &rule22},
2234 {11482, 1, &rule21},
2235 {11483, 1, &rule22},
2236 {11484, 1, &rule21},
2237 {11485, 1, &rule22},
2238 {11486, 1, &rule21},
2239 {11487, 1, &rule22},
2240 {11488, 1, &rule21},
2241 {11489, 1, &rule22},
2242 {11490, 1, &rule21},
2243 {11491, 1, &rule22},
2244 {11492, 1, &rule14},
2245 {11493, 6, &rule13},
2246 {11499, 1, &rule21},
2247 {11500, 1, &rule22},
2248 {11501, 1, &rule21},
2249 {11502, 1, &rule22},
2250 {11503, 3, &rule84},
2252 {11517, 1, &rule17},
2254 {11520, 38, &rule160},
2255 {11568, 54, &rule45},
2256 {11631, 1, &rule83},
2258 {11647, 1, &rule84},
2259 {11648, 23, &rule45},
2260 {11680, 7, &rule45},
2261 {11688, 7, &rule45},
2262 {11696, 7, &rule45},
2263 {11704, 7, &rule45},
2264 {11712, 7, &rule45},
2265 {11720, 7, &rule45},
2266 {11728, 7, &rule45},
2267 {11736, 7, &rule45},
2268 {11744, 32, &rule84},
2270 {11778, 1, &rule15},
2271 {11779, 1, &rule19},
2272 {11780, 1, &rule15},
2273 {11781, 1, &rule19},
2275 {11785, 1, &rule15},
2276 {11786, 1, &rule19},
2278 {11788, 1, &rule15},
2279 {11789, 1, &rule19},
2285 {11804, 1, &rule15},
2286 {11805, 1, &rule19},
2288 {11808, 1, &rule15},
2289 {11809, 1, &rule19},
2299 {11823, 1, &rule83},
2301 {11904, 26, &rule13},
2302 {11931, 89, &rule13},
2303 {12032, 214, &rule13},
2304 {12272, 12, &rule13},
2307 {12292, 1, &rule13},
2308 {12293, 1, &rule83},
2309 {12294, 1, &rule45},
2310 {12295, 1, &rule116},
2321 {12306, 2, &rule13},
2333 {12320, 1, &rule13},
2334 {12321, 9, &rule116},
2335 {12330, 6, &rule84},
2337 {12337, 5, &rule83},
2338 {12342, 2, &rule13},
2339 {12344, 3, &rule116},
2340 {12347, 1, &rule83},
2341 {12348, 1, &rule45},
2343 {12350, 2, &rule13},
2344 {12353, 86, &rule45},
2345 {12441, 2, &rule84},
2346 {12443, 2, &rule10},
2347 {12445, 2, &rule83},
2348 {12447, 1, &rule45},
2350 {12449, 90, &rule45},
2352 {12540, 3, &rule83},
2353 {12543, 1, &rule45},
2354 {12549, 41, &rule45},
2355 {12593, 94, &rule45},
2356 {12688, 2, &rule13},
2357 {12690, 4, &rule17},
2358 {12694, 10, &rule13},
2359 {12704, 27, &rule45},
2360 {12736, 36, &rule13},
2361 {12784, 16, &rule45},
2362 {12800, 31, &rule13},
2363 {12832, 10, &rule17},
2364 {12842, 39, &rule13},
2365 {12881, 15, &rule17},
2366 {12896, 32, &rule13},
2367 {12928, 10, &rule17},
2368 {12938, 39, &rule13},
2369 {12977, 15, &rule17},
2370 {12992, 63, &rule13},
2371 {13056, 256, &rule13},
2372 {13312, 6582, &rule45},
2373 {19904, 64, &rule13},
2374 {19968, 20940, &rule45},
2375 {40960, 21, &rule45},
2376 {40981, 1, &rule83},
2377 {40982, 1143, &rule45},
2378 {42128, 55, &rule13},
2379 {42192, 40, &rule45},
2380 {42232, 6, &rule83},
2382 {42240, 268, &rule45},
2383 {42508, 1, &rule83},
2385 {42512, 16, &rule45},
2386 {42528, 10, &rule8},
2387 {42538, 2, &rule45},
2388 {42560, 1, &rule21},
2389 {42561, 1, &rule22},
2390 {42562, 1, &rule21},
2391 {42563, 1, &rule22},
2392 {42564, 1, &rule21},
2393 {42565, 1, &rule22},
2394 {42566, 1, &rule21},
2395 {42567, 1, &rule22},
2396 {42568, 1, &rule21},
2397 {42569, 1, &rule22},
2398 {42570, 1, &rule21},
2399 {42571, 1, &rule22},
2400 {42572, 1, &rule21},
2401 {42573, 1, &rule22},
2402 {42574, 1, &rule21},
2403 {42575, 1, &rule22},
2404 {42576, 1, &rule21},
2405 {42577, 1, &rule22},
2406 {42578, 1, &rule21},
2407 {42579, 1, &rule22},
2408 {42580, 1, &rule21},
2409 {42581, 1, &rule22},
2410 {42582, 1, &rule21},
2411 {42583, 1, &rule22},
2412 {42584, 1, &rule21},
2413 {42585, 1, &rule22},
2414 {42586, 1, &rule21},
2415 {42587, 1, &rule22},
2416 {42588, 1, &rule21},
2417 {42589, 1, &rule22},
2418 {42590, 1, &rule21},
2419 {42591, 1, &rule22},
2420 {42592, 1, &rule21},
2421 {42593, 1, &rule22},
2422 {42594, 1, &rule21},
2423 {42595, 1, &rule22},
2424 {42596, 1, &rule21},
2425 {42597, 1, &rule22},
2426 {42598, 1, &rule21},
2427 {42599, 1, &rule22},
2428 {42600, 1, &rule21},
2429 {42601, 1, &rule22},
2430 {42602, 1, &rule21},
2431 {42603, 1, &rule22},
2432 {42604, 1, &rule21},
2433 {42605, 1, &rule22},
2434 {42606, 1, &rule45},
2435 {42607, 1, &rule84},
2436 {42608, 3, &rule109},
2438 {42620, 2, &rule84},
2440 {42623, 1, &rule83},
2441 {42624, 1, &rule21},
2442 {42625, 1, &rule22},
2443 {42626, 1, &rule21},
2444 {42627, 1, &rule22},
2445 {42628, 1, &rule21},
2446 {42629, 1, &rule22},
2447 {42630, 1, &rule21},
2448 {42631, 1, &rule22},
2449 {42632, 1, &rule21},
2450 {42633, 1, &rule22},
2451 {42634, 1, &rule21},
2452 {42635, 1, &rule22},
2453 {42636, 1, &rule21},
2454 {42637, 1, &rule22},
2455 {42638, 1, &rule21},
2456 {42639, 1, &rule22},
2457 {42640, 1, &rule21},
2458 {42641, 1, &rule22},
2459 {42642, 1, &rule21},
2460 {42643, 1, &rule22},
2461 {42644, 1, &rule21},
2462 {42645, 1, &rule22},
2463 {42646, 1, &rule21},
2464 {42647, 1, &rule22},
2465 {42656, 70, &rule45},
2466 {42726, 10, &rule116},
2467 {42736, 2, &rule84},
2469 {42752, 23, &rule10},
2470 {42775, 9, &rule83},
2471 {42784, 2, &rule10},
2472 {42786, 1, &rule21},
2473 {42787, 1, &rule22},
2474 {42788, 1, &rule21},
2475 {42789, 1, &rule22},
2476 {42790, 1, &rule21},
2477 {42791, 1, &rule22},
2478 {42792, 1, &rule21},
2479 {42793, 1, &rule22},
2480 {42794, 1, &rule21},
2481 {42795, 1, &rule22},
2482 {42796, 1, &rule21},
2483 {42797, 1, &rule22},
2484 {42798, 1, &rule21},
2485 {42799, 1, &rule22},
2486 {42800, 2, &rule14},
2487 {42802, 1, &rule21},
2488 {42803, 1, &rule22},
2489 {42804, 1, &rule21},
2490 {42805, 1, &rule22},
2491 {42806, 1, &rule21},
2492 {42807, 1, &rule22},
2493 {42808, 1, &rule21},
2494 {42809, 1, &rule22},
2495 {42810, 1, &rule21},
2496 {42811, 1, &rule22},
2497 {42812, 1, &rule21},
2498 {42813, 1, &rule22},
2499 {42814, 1, &rule21},
2500 {42815, 1, &rule22},
2501 {42816, 1, &rule21},
2502 {42817, 1, &rule22},
2503 {42818, 1, &rule21},
2504 {42819, 1, &rule22},
2505 {42820, 1, &rule21},
2506 {42821, 1, &rule22},
2507 {42822, 1, &rule21},
2508 {42823, 1, &rule22},
2509 {42824, 1, &rule21},
2510 {42825, 1, &rule22},
2511 {42826, 1, &rule21},
2512 {42827, 1, &rule22},
2513 {42828, 1, &rule21},
2514 {42829, 1, &rule22},
2515 {42830, 1, &rule21},
2516 {42831, 1, &rule22},
2517 {42832, 1, &rule21},
2518 {42833, 1, &rule22},
2519 {42834, 1, &rule21},
2520 {42835, 1, &rule22},
2521 {42836, 1, &rule21},
2522 {42837, 1, &rule22},
2523 {42838, 1, &rule21},
2524 {42839, 1, &rule22},
2525 {42840, 1, &rule21},
2526 {42841, 1, &rule22},
2527 {42842, 1, &rule21},
2528 {42843, 1, &rule22},
2529 {42844, 1, &rule21},
2530 {42845, 1, &rule22},
2531 {42846, 1, &rule21},
2532 {42847, 1, &rule22},
2533 {42848, 1, &rule21},
2534 {42849, 1, &rule22},
2535 {42850, 1, &rule21},
2536 {42851, 1, &rule22},
2537 {42852, 1, &rule21},
2538 {42853, 1, &rule22},
2539 {42854, 1, &rule21},
2540 {42855, 1, &rule22},
2541 {42856, 1, &rule21},
2542 {42857, 1, &rule22},
2543 {42858, 1, &rule21},
2544 {42859, 1, &rule22},
2545 {42860, 1, &rule21},
2546 {42861, 1, &rule22},
2547 {42862, 1, &rule21},
2548 {42863, 1, &rule22},
2549 {42864, 1, &rule83},
2550 {42865, 8, &rule14},
2551 {42873, 1, &rule21},
2552 {42874, 1, &rule22},
2553 {42875, 1, &rule21},
2554 {42876, 1, &rule22},
2555 {42877, 1, &rule161},
2556 {42878, 1, &rule21},
2557 {42879, 1, &rule22},
2558 {42880, 1, &rule21},
2559 {42881, 1, &rule22},
2560 {42882, 1, &rule21},
2561 {42883, 1, &rule22},
2562 {42884, 1, &rule21},
2563 {42885, 1, &rule22},
2564 {42886, 1, &rule21},
2565 {42887, 1, &rule22},
2566 {42888, 1, &rule83},
2567 {42889, 2, &rule10},
2568 {42891, 1, &rule21},
2569 {42892, 1, &rule22},
2570 {42893, 1, &rule162},
2571 {42894, 1, &rule14},
2572 {42896, 1, &rule21},
2573 {42897, 1, &rule22},
2574 {42912, 1, &rule21},
2575 {42913, 1, &rule22},
2576 {42914, 1, &rule21},
2577 {42915, 1, &rule22},
2578 {42916, 1, &rule21},
2579 {42917, 1, &rule22},
2580 {42918, 1, &rule21},
2581 {42919, 1, &rule22},
2582 {42920, 1, &rule21},
2583 {42921, 1, &rule22},
2584 {43002, 1, &rule14},
2585 {43003, 7, &rule45},
2586 {43010, 1, &rule84},
2587 {43011, 3, &rule45},
2588 {43014, 1, &rule84},
2589 {43015, 4, &rule45},
2590 {43019, 1, &rule84},
2591 {43020, 23, &rule45},
2592 {43043, 2, &rule114},
2593 {43045, 2, &rule84},
2594 {43047, 1, &rule114},
2595 {43048, 4, &rule13},
2596 {43056, 6, &rule17},
2597 {43062, 2, &rule13},
2599 {43065, 1, &rule13},
2600 {43072, 52, &rule45},
2602 {43136, 2, &rule114},
2603 {43138, 50, &rule45},
2604 {43188, 16, &rule114},
2605 {43204, 1, &rule84},
2607 {43216, 10, &rule8},
2608 {43232, 18, &rule84},
2609 {43250, 6, &rule45},
2611 {43259, 1, &rule45},
2612 {43264, 10, &rule8},
2613 {43274, 28, &rule45},
2614 {43302, 8, &rule84},
2616 {43312, 23, &rule45},
2617 {43335, 11, &rule84},
2618 {43346, 2, &rule114},
2620 {43360, 29, &rule45},
2621 {43392, 3, &rule84},
2622 {43395, 1, &rule114},
2623 {43396, 47, &rule45},
2624 {43443, 1, &rule84},
2625 {43444, 2, &rule114},
2626 {43446, 4, &rule84},
2627 {43450, 2, &rule114},
2628 {43452, 1, &rule84},
2629 {43453, 4, &rule114},
2630 {43457, 13, &rule2},
2631 {43471, 1, &rule83},
2632 {43472, 10, &rule8},
2634 {43520, 41, &rule45},
2635 {43561, 6, &rule84},
2636 {43567, 2, &rule114},
2637 {43569, 2, &rule84},
2638 {43571, 2, &rule114},
2639 {43573, 2, &rule84},
2640 {43584, 3, &rule45},
2641 {43587, 1, &rule84},
2642 {43588, 8, &rule45},
2643 {43596, 1, &rule84},
2644 {43597, 1, &rule114},
2645 {43600, 10, &rule8},
2647 {43616, 16, &rule45},
2648 {43632, 1, &rule83},
2649 {43633, 6, &rule45},
2650 {43639, 3, &rule13},
2651 {43642, 1, &rule45},
2652 {43643, 1, &rule114},
2653 {43648, 48, &rule45},
2654 {43696, 1, &rule84},
2655 {43697, 1, &rule45},
2656 {43698, 3, &rule84},
2657 {43701, 2, &rule45},
2658 {43703, 2, &rule84},
2659 {43705, 5, &rule45},
2660 {43710, 2, &rule84},
2661 {43712, 1, &rule45},
2662 {43713, 1, &rule84},
2663 {43714, 1, &rule45},
2664 {43739, 2, &rule45},
2665 {43741, 1, &rule83},
2667 {43777, 6, &rule45},
2668 {43785, 6, &rule45},
2669 {43793, 6, &rule45},
2670 {43808, 7, &rule45},
2671 {43816, 7, &rule45},
2672 {43968, 35, &rule45},
2673 {44003, 2, &rule114},
2674 {44005, 1, &rule84},
2675 {44006, 2, &rule114},
2676 {44008, 1, &rule84},
2677 {44009, 2, &rule114},
2679 {44012, 1, &rule114},
2680 {44013, 1, &rule84},
2681 {44016, 10, &rule8},
2682 {44032, 11172, &rule45},
2683 {55216, 23, &rule45},
2684 {55243, 49, &rule45},
2685 {55296, 896, &rule163},
2686 {56192, 128, &rule163},
2687 {56320, 1024, &rule163},
2688 {57344, 6400, &rule164},
2689 {63744, 302, &rule45},
2690 {64048, 62, &rule45},
2691 {64112, 106, &rule45},
2692 {64256, 7, &rule14},
2693 {64275, 5, &rule14},
2694 {64285, 1, &rule45},
2695 {64286, 1, &rule84},
2696 {64287, 10, &rule45},
2698 {64298, 13, &rule45},
2699 {64312, 5, &rule45},
2700 {64318, 1, &rule45},
2701 {64320, 2, &rule45},
2702 {64323, 2, &rule45},
2703 {64326, 108, &rule45},
2704 {64434, 16, &rule10},
2705 {64467, 363, &rule45},
2708 {64848, 64, &rule45},
2709 {64914, 54, &rule45},
2710 {65008, 12, &rule45},
2712 {65021, 1, &rule13},
2713 {65024, 16, &rule84},
2718 {65056, 7, &rule84},
2721 {65075, 2, &rule11},
2742 {65101, 3, &rule11},
2759 {65136, 5, &rule45},
2760 {65142, 135, &rule45},
2761 {65279, 1, &rule16},
2772 {65296, 10, &rule8},
2776 {65313, 26, &rule9},
2780 {65342, 1, &rule10},
2781 {65343, 1, &rule11},
2782 {65344, 1, &rule10},
2783 {65345, 26, &rule12},
2794 {65382, 10, &rule45},
2795 {65392, 1, &rule83},
2796 {65393, 45, &rule45},
2797 {65438, 2, &rule83},
2798 {65440, 31, &rule45},
2799 {65474, 6, &rule45},
2800 {65482, 6, &rule45},
2801 {65490, 6, &rule45},
2802 {65498, 3, &rule45},
2805 {65507, 1, &rule10},
2806 {65508, 1, &rule13},
2808 {65512, 1, &rule13},
2810 {65517, 2, &rule13},
2811 {65529, 3, &rule16},
2812 {65532, 2, &rule13},
2813 {65536, 12, &rule45},
2814 {65549, 26, &rule45},
2815 {65576, 19, &rule45},
2816 {65596, 2, &rule45},
2817 {65599, 15, &rule45},
2818 {65616, 14, &rule45},
2819 {65664, 123, &rule45},
2821 {65794, 1, &rule13},
2822 {65799, 45, &rule17},
2823 {65847, 9, &rule13},
2824 {65856, 53, &rule116},
2825 {65909, 4, &rule17},
2826 {65913, 17, &rule13},
2827 {65930, 1, &rule17},
2828 {65936, 12, &rule13},
2829 {66000, 45, &rule13},
2830 {66045, 1, &rule84},
2831 {66176, 29, &rule45},
2832 {66208, 49, &rule45},
2833 {66304, 31, &rule45},
2834 {66336, 4, &rule17},
2835 {66352, 17, &rule45},
2836 {66369, 1, &rule116},
2837 {66370, 8, &rule45},
2838 {66378, 1, &rule116},
2839 {66432, 30, &rule45},
2841 {66464, 36, &rule45},
2842 {66504, 8, &rule45},
2844 {66513, 5, &rule116},
2845 {66560, 40, &rule165},
2846 {66600, 40, &rule166},
2847 {66640, 78, &rule45},
2848 {66720, 10, &rule8},
2849 {67584, 6, &rule45},
2850 {67592, 1, &rule45},
2851 {67594, 44, &rule45},
2852 {67639, 2, &rule45},
2853 {67644, 1, &rule45},
2854 {67647, 23, &rule45},
2856 {67672, 8, &rule17},
2857 {67840, 22, &rule45},
2858 {67862, 6, &rule17},
2860 {67872, 26, &rule45},
2862 {68096, 1, &rule45},
2863 {68097, 3, &rule84},
2864 {68101, 2, &rule84},
2865 {68108, 4, &rule84},
2866 {68112, 4, &rule45},
2867 {68117, 3, &rule45},
2868 {68121, 27, &rule45},
2869 {68152, 3, &rule84},
2870 {68159, 1, &rule84},
2871 {68160, 8, &rule17},
2873 {68192, 29, &rule45},
2874 {68221, 2, &rule17},
2876 {68352, 54, &rule45},
2878 {68416, 22, &rule45},
2879 {68440, 8, &rule17},
2880 {68448, 19, &rule45},
2881 {68472, 8, &rule17},
2882 {68608, 73, &rule45},
2883 {69216, 31, &rule17},
2884 {69632, 1, &rule114},
2885 {69633, 1, &rule84},
2886 {69634, 1, &rule114},
2887 {69635, 53, &rule45},
2888 {69688, 15, &rule84},
2890 {69714, 20, &rule17},
2891 {69734, 10, &rule8},
2892 {69760, 2, &rule84},
2893 {69762, 1, &rule114},
2894 {69763, 45, &rule45},
2895 {69808, 3, &rule114},
2896 {69811, 4, &rule84},
2897 {69815, 2, &rule114},
2898 {69817, 2, &rule84},
2900 {69821, 1, &rule16},
2902 {73728, 879, &rule45},
2903 {74752, 99, &rule116},
2905 {77824, 1071, &rule45},
2906 {92160, 569, &rule45},
2907 {110592, 2, &rule45},
2908 {118784, 246, &rule13},
2909 {119040, 39, &rule13},
2910 {119081, 60, &rule13},
2911 {119141, 2, &rule114},
2912 {119143, 3, &rule84},
2913 {119146, 3, &rule13},
2914 {119149, 6, &rule114},
2915 {119155, 8, &rule16},
2916 {119163, 8, &rule84},
2917 {119171, 2, &rule13},
2918 {119173, 7, &rule84},
2919 {119180, 30, &rule13},
2920 {119210, 4, &rule84},
2921 {119214, 48, &rule13},
2922 {119296, 66, &rule13},
2923 {119362, 3, &rule84},
2924 {119365, 1, &rule13},
2925 {119552, 87, &rule13},
2926 {119648, 18, &rule17},
2927 {119808, 26, &rule98},
2928 {119834, 26, &rule14},
2929 {119860, 26, &rule98},
2930 {119886, 7, &rule14},
2931 {119894, 18, &rule14},
2932 {119912, 26, &rule98},
2933 {119938, 26, &rule14},
2934 {119964, 1, &rule98},
2935 {119966, 2, &rule98},
2936 {119970, 1, &rule98},
2937 {119973, 2, &rule98},
2938 {119977, 4, &rule98},
2939 {119982, 8, &rule98},
2940 {119990, 4, &rule14},
2941 {119995, 1, &rule14},
2942 {119997, 7, &rule14},
2943 {120005, 11, &rule14},
2944 {120016, 26, &rule98},
2945 {120042, 26, &rule14},
2946 {120068, 2, &rule98},
2947 {120071, 4, &rule98},
2948 {120077, 8, &rule98},
2949 {120086, 7, &rule98},
2950 {120094, 26, &rule14},
2951 {120120, 2, &rule98},
2952 {120123, 4, &rule98},
2953 {120128, 5, &rule98},
2954 {120134, 1, &rule98},
2955 {120138, 7, &rule98},
2956 {120146, 26, &rule14},
2957 {120172, 26, &rule98},
2958 {120198, 26, &rule14},
2959 {120224, 26, &rule98},
2960 {120250, 26, &rule14},
2961 {120276, 26, &rule98},
2962 {120302, 26, &rule14},
2963 {120328, 26, &rule98},
2964 {120354, 26, &rule14},
2965 {120380, 26, &rule98},
2966 {120406, 26, &rule14},
2967 {120432, 26, &rule98},
2968 {120458, 28, &rule14},
2969 {120488, 25, &rule98},
2970 {120513, 1, &rule6},
2971 {120514, 25, &rule14},
2972 {120539, 1, &rule6},
2973 {120540, 6, &rule14},
2974 {120546, 25, &rule98},
2975 {120571, 1, &rule6},
2976 {120572, 25, &rule14},
2977 {120597, 1, &rule6},
2978 {120598, 6, &rule14},
2979 {120604, 25, &rule98},
2980 {120629, 1, &rule6},
2981 {120630, 25, &rule14},
2982 {120655, 1, &rule6},
2983 {120656, 6, &rule14},
2984 {120662, 25, &rule98},
2985 {120687, 1, &rule6},
2986 {120688, 25, &rule14},
2987 {120713, 1, &rule6},
2988 {120714, 6, &rule14},
2989 {120720, 25, &rule98},
2990 {120745, 1, &rule6},
2991 {120746, 25, &rule14},
2992 {120771, 1, &rule6},
2993 {120772, 6, &rule14},
2994 {120778, 1, &rule98},
2995 {120779, 1, &rule14},
2996 {120782, 50, &rule8},
2997 {126976, 44, &rule13},
2998 {127024, 100, &rule13},
2999 {127136, 15, &rule13},
3000 {127153, 14, &rule13},
3001 {127169, 15, &rule13},
3002 {127185, 15, &rule13},
3003 {127232, 11, &rule17},
3004 {127248, 31, &rule13},
3005 {127280, 58, &rule13},
3006 {127344, 43, &rule13},
3007 {127462, 29, &rule13},
3008 {127504, 43, &rule13},
3009 {127552, 9, &rule13},
3010 {127568, 2, &rule13},
3011 {127744, 33, &rule13},
3012 {127792, 6, &rule13},
3013 {127799, 70, &rule13},
3014 {127872, 20, &rule13},
3015 {127904, 37, &rule13},
3016 {127942, 5, &rule13},
3017 {127968, 17, &rule13},
3018 {128000, 63, &rule13},
3019 {128064, 1, &rule13},
3020 {128066, 182, &rule13},
3021 {128249, 4, &rule13},
3022 {128256, 62, &rule13},
3023 {128336, 24, &rule13},
3024 {128507, 5, &rule13},
3025 {128513, 16, &rule13},
3026 {128530, 3, &rule13},
3027 {128534, 1, &rule13},
3028 {128536, 1, &rule13},
3029 {128538, 1, &rule13},
3030 {128540, 3, &rule13},
3031 {128544, 6, &rule13},
3032 {128552, 4, &rule13},
3033 {128557, 1, &rule13},
3034 {128560, 4, &rule13},
3035 {128565, 12, &rule13},
3036 {128581, 11, &rule13},
3037 {128640, 70, &rule13},
3038 {128768, 116, &rule13},
3039 {131072, 42711, &rule45},
3040 {173824, 4149, &rule45},
3041 {177984, 222, &rule45},
3042 {194560, 542, &rule45},
3043 {917505, 1, &rule16},
3044 {917536, 96, &rule16},
3045 {917760, 240, &rule84},
3046 {983040, 65534, &rule164},
3047 {1048576, 65534, &rule164}
3049 static const struct _charblock_ convchars[]={
3447 {1008, 1, &rule102},
3448 {1009, 1, &rule103},
3449 {1010, 1, &rule104},
3450 {1012, 1, &rule105},
3451 {1013, 1, &rule106},
3454 {1017, 1, &rule107},
3458 {1024, 16, &rule108},
3460 {1072, 32, &rule12},
3461 {1104, 16, &rule103},
3550 {1216, 1, &rule110},
3565 {1231, 1, &rule111},
3654 {1329, 38, &rule112},
3655 {1377, 38, &rule113},
3656 {4256, 38, &rule115},
3657 {7545, 1, &rule117},
3658 {7549, 1, &rule118},
3809 {7835, 1, &rule119},
3810 {7838, 1, &rule120},
3907 {7936, 8, &rule121},
3908 {7944, 8, &rule122},
3909 {7952, 6, &rule121},
3910 {7960, 6, &rule122},
3911 {7968, 8, &rule121},
3912 {7976, 8, &rule122},
3913 {7984, 8, &rule121},
3914 {7992, 8, &rule122},
3915 {8000, 6, &rule121},
3916 {8008, 6, &rule122},
3917 {8017, 1, &rule121},
3918 {8019, 1, &rule121},
3919 {8021, 1, &rule121},
3920 {8023, 1, &rule121},
3921 {8025, 1, &rule122},
3922 {8027, 1, &rule122},
3923 {8029, 1, &rule122},
3924 {8031, 1, &rule122},
3925 {8032, 8, &rule121},
3926 {8040, 8, &rule122},
3927 {8048, 2, &rule123},
3928 {8050, 4, &rule124},
3929 {8054, 2, &rule125},
3930 {8056, 2, &rule126},
3931 {8058, 2, &rule127},
3932 {8060, 2, &rule128},
3933 {8064, 8, &rule121},
3934 {8072, 8, &rule129},
3935 {8080, 8, &rule121},
3936 {8088, 8, &rule129},
3937 {8096, 8, &rule121},
3938 {8104, 8, &rule129},
3939 {8112, 2, &rule121},
3940 {8115, 1, &rule130},
3941 {8120, 2, &rule122},
3942 {8122, 2, &rule131},
3943 {8124, 1, &rule132},
3944 {8126, 1, &rule133},
3945 {8131, 1, &rule130},
3946 {8136, 4, &rule134},
3947 {8140, 1, &rule132},
3948 {8144, 2, &rule121},
3949 {8152, 2, &rule122},
3950 {8154, 2, &rule135},
3951 {8160, 2, &rule121},
3952 {8165, 1, &rule104},
3953 {8168, 2, &rule122},
3954 {8170, 2, &rule136},
3955 {8172, 1, &rule107},
3956 {8179, 1, &rule130},
3957 {8184, 2, &rule137},
3958 {8186, 2, &rule138},
3959 {8188, 1, &rule132},
3960 {8486, 1, &rule141},
3961 {8490, 1, &rule142},
3962 {8491, 1, &rule143},
3963 {8498, 1, &rule144},
3964 {8526, 1, &rule145},
3965 {8544, 16, &rule146},
3966 {8560, 16, &rule147},
3969 {9398, 26, &rule148},
3970 {9424, 26, &rule149},
3971 {11264, 47, &rule112},
3972 {11312, 47, &rule113},
3973 {11360, 1, &rule21},
3974 {11361, 1, &rule22},
3975 {11362, 1, &rule150},
3976 {11363, 1, &rule151},
3977 {11364, 1, &rule152},
3978 {11365, 1, &rule153},
3979 {11366, 1, &rule154},
3980 {11367, 1, &rule21},
3981 {11368, 1, &rule22},
3982 {11369, 1, &rule21},
3983 {11370, 1, &rule22},
3984 {11371, 1, &rule21},
3985 {11372, 1, &rule22},
3986 {11373, 1, &rule155},
3987 {11374, 1, &rule156},
3988 {11375, 1, &rule157},
3989 {11376, 1, &rule158},
3990 {11378, 1, &rule21},
3991 {11379, 1, &rule22},
3992 {11381, 1, &rule21},
3993 {11382, 1, &rule22},
3994 {11390, 2, &rule159},
3995 {11392, 1, &rule21},
3996 {11393, 1, &rule22},
3997 {11394, 1, &rule21},
3998 {11395, 1, &rule22},
3999 {11396, 1, &rule21},
4000 {11397, 1, &rule22},
4001 {11398, 1, &rule21},
4002 {11399, 1, &rule22},
4003 {11400, 1, &rule21},
4004 {11401, 1, &rule22},
4005 {11402, 1, &rule21},
4006 {11403, 1, &rule22},
4007 {11404, 1, &rule21},
4008 {11405, 1, &rule22},
4009 {11406, 1, &rule21},
4010 {11407, 1, &rule22},
4011 {11408, 1, &rule21},
4012 {11409, 1, &rule22},
4013 {11410, 1, &rule21},
4014 {11411, 1, &rule22},
4015 {11412, 1, &rule21},
4016 {11413, 1, &rule22},
4017 {11414, 1, &rule21},
4018 {11415, 1, &rule22},
4019 {11416, 1, &rule21},
4020 {11417, 1, &rule22},
4021 {11418, 1, &rule21},
4022 {11419, 1, &rule22},
4023 {11420, 1, &rule21},
4024 {11421, 1, &rule22},
4025 {11422, 1, &rule21},
4026 {11423, 1, &rule22},
4027 {11424, 1, &rule21},
4028 {11425, 1, &rule22},
4029 {11426, 1, &rule21},
4030 {11427, 1, &rule22},
4031 {11428, 1, &rule21},
4032 {11429, 1, &rule22},
4033 {11430, 1, &rule21},
4034 {11431, 1, &rule22},
4035 {11432, 1, &rule21},
4036 {11433, 1, &rule22},
4037 {11434, 1, &rule21},
4038 {11435, 1, &rule22},
4039 {11436, 1, &rule21},
4040 {11437, 1, &rule22},
4041 {11438, 1, &rule21},
4042 {11439, 1, &rule22},
4043 {11440, 1, &rule21},
4044 {11441, 1, &rule22},
4045 {11442, 1, &rule21},
4046 {11443, 1, &rule22},
4047 {11444, 1, &rule21},
4048 {11445, 1, &rule22},
4049 {11446, 1, &rule21},
4050 {11447, 1, &rule22},
4051 {11448, 1, &rule21},
4052 {11449, 1, &rule22},
4053 {11450, 1, &rule21},
4054 {11451, 1, &rule22},
4055 {11452, 1, &rule21},
4056 {11453, 1, &rule22},
4057 {11454, 1, &rule21},
4058 {11455, 1, &rule22},
4059 {11456, 1, &rule21},
4060 {11457, 1, &rule22},
4061 {11458, 1, &rule21},
4062 {11459, 1, &rule22},
4063 {11460, 1, &rule21},
4064 {11461, 1, &rule22},
4065 {11462, 1, &rule21},
4066 {11463, 1, &rule22},
4067 {11464, 1, &rule21},
4068 {11465, 1, &rule22},
4069 {11466, 1, &rule21},
4070 {11467, 1, &rule22},
4071 {11468, 1, &rule21},
4072 {11469, 1, &rule22},
4073 {11470, 1, &rule21},
4074 {11471, 1, &rule22},
4075 {11472, 1, &rule21},
4076 {11473, 1, &rule22},
4077 {11474, 1, &rule21},
4078 {11475, 1, &rule22},
4079 {11476, 1, &rule21},
4080 {11477, 1, &rule22},
4081 {11478, 1, &rule21},
4082 {11479, 1, &rule22},
4083 {11480, 1, &rule21},
4084 {11481, 1, &rule22},
4085 {11482, 1, &rule21},
4086 {11483, 1, &rule22},
4087 {11484, 1, &rule21},
4088 {11485, 1, &rule22},
4089 {11486, 1, &rule21},
4090 {11487, 1, &rule22},
4091 {11488, 1, &rule21},
4092 {11489, 1, &rule22},
4093 {11490, 1, &rule21},
4094 {11491, 1, &rule22},
4095 {11499, 1, &rule21},
4096 {11500, 1, &rule22},
4097 {11501, 1, &rule21},
4098 {11502, 1, &rule22},
4099 {11520, 38, &rule160},
4100 {42560, 1, &rule21},
4101 {42561, 1, &rule22},
4102 {42562, 1, &rule21},
4103 {42563, 1, &rule22},
4104 {42564, 1, &rule21},
4105 {42565, 1, &rule22},
4106 {42566, 1, &rule21},
4107 {42567, 1, &rule22},
4108 {42568, 1, &rule21},
4109 {42569, 1, &rule22},
4110 {42570, 1, &rule21},
4111 {42571, 1, &rule22},
4112 {42572, 1, &rule21},
4113 {42573, 1, &rule22},
4114 {42574, 1, &rule21},
4115 {42575, 1, &rule22},
4116 {42576, 1, &rule21},
4117 {42577, 1, &rule22},
4118 {42578, 1, &rule21},
4119 {42579, 1, &rule22},
4120 {42580, 1, &rule21},
4121 {42581, 1, &rule22},
4122 {42582, 1, &rule21},
4123 {42583, 1, &rule22},
4124 {42584, 1, &rule21},
4125 {42585, 1, &rule22},
4126 {42586, 1, &rule21},
4127 {42587, 1, &rule22},
4128 {42588, 1, &rule21},
4129 {42589, 1, &rule22},
4130 {42590, 1, &rule21},
4131 {42591, 1, &rule22},
4132 {42592, 1, &rule21},
4133 {42593, 1, &rule22},
4134 {42594, 1, &rule21},
4135 {42595, 1, &rule22},
4136 {42596, 1, &rule21},
4137 {42597, 1, &rule22},
4138 {42598, 1, &rule21},
4139 {42599, 1, &rule22},
4140 {42600, 1, &rule21},
4141 {42601, 1, &rule22},
4142 {42602, 1, &rule21},
4143 {42603, 1, &rule22},
4144 {42604, 1, &rule21},
4145 {42605, 1, &rule22},
4146 {42624, 1, &rule21},
4147 {42625, 1, &rule22},
4148 {42626, 1, &rule21},
4149 {42627, 1, &rule22},
4150 {42628, 1, &rule21},
4151 {42629, 1, &rule22},
4152 {42630, 1, &rule21},
4153 {42631, 1, &rule22},
4154 {42632, 1, &rule21},
4155 {42633, 1, &rule22},
4156 {42634, 1, &rule21},
4157 {42635, 1, &rule22},
4158 {42636, 1, &rule21},
4159 {42637, 1, &rule22},
4160 {42638, 1, &rule21},
4161 {42639, 1, &rule22},
4162 {42640, 1, &rule21},
4163 {42641, 1, &rule22},
4164 {42642, 1, &rule21},
4165 {42643, 1, &rule22},
4166 {42644, 1, &rule21},
4167 {42645, 1, &rule22},
4168 {42646, 1, &rule21},
4169 {42647, 1, &rule22},
4170 {42786, 1, &rule21},
4171 {42787, 1, &rule22},
4172 {42788, 1, &rule21},
4173 {42789, 1, &rule22},
4174 {42790, 1, &rule21},
4175 {42791, 1, &rule22},
4176 {42792, 1, &rule21},
4177 {42793, 1, &rule22},
4178 {42794, 1, &rule21},
4179 {42795, 1, &rule22},
4180 {42796, 1, &rule21},
4181 {42797, 1, &rule22},
4182 {42798, 1, &rule21},
4183 {42799, 1, &rule22},
4184 {42802, 1, &rule21},
4185 {42803, 1, &rule22},
4186 {42804, 1, &rule21},
4187 {42805, 1, &rule22},
4188 {42806, 1, &rule21},
4189 {42807, 1, &rule22},
4190 {42808, 1, &rule21},
4191 {42809, 1, &rule22},
4192 {42810, 1, &rule21},
4193 {42811, 1, &rule22},
4194 {42812, 1, &rule21},
4195 {42813, 1, &rule22},
4196 {42814, 1, &rule21},
4197 {42815, 1, &rule22},
4198 {42816, 1, &rule21},
4199 {42817, 1, &rule22},
4200 {42818, 1, &rule21},
4201 {42819, 1, &rule22},
4202 {42820, 1, &rule21},
4203 {42821, 1, &rule22},
4204 {42822, 1, &rule21},
4205 {42823, 1, &rule22},
4206 {42824, 1, &rule21},
4207 {42825, 1, &rule22},
4208 {42826, 1, &rule21},
4209 {42827, 1, &rule22},
4210 {42828, 1, &rule21},
4211 {42829, 1, &rule22},
4212 {42830, 1, &rule21},
4213 {42831, 1, &rule22},
4214 {42832, 1, &rule21},
4215 {42833, 1, &rule22},
4216 {42834, 1, &rule21},
4217 {42835, 1, &rule22},
4218 {42836, 1, &rule21},
4219 {42837, 1, &rule22},
4220 {42838, 1, &rule21},
4221 {42839, 1, &rule22},
4222 {42840, 1, &rule21},
4223 {42841, 1, &rule22},
4224 {42842, 1, &rule21},
4225 {42843, 1, &rule22},
4226 {42844, 1, &rule21},
4227 {42845, 1, &rule22},
4228 {42846, 1, &rule21},
4229 {42847, 1, &rule22},
4230 {42848, 1, &rule21},
4231 {42849, 1, &rule22},
4232 {42850, 1, &rule21},
4233 {42851, 1, &rule22},
4234 {42852, 1, &rule21},
4235 {42853, 1, &rule22},
4236 {42854, 1, &rule21},
4237 {42855, 1, &rule22},
4238 {42856, 1, &rule21},
4239 {42857, 1, &rule22},
4240 {42858, 1, &rule21},
4241 {42859, 1, &rule22},
4242 {42860, 1, &rule21},
4243 {42861, 1, &rule22},
4244 {42862, 1, &rule21},
4245 {42863, 1, &rule22},
4246 {42873, 1, &rule21},
4247 {42874, 1, &rule22},
4248 {42875, 1, &rule21},
4249 {42876, 1, &rule22},
4250 {42877, 1, &rule161},
4251 {42878, 1, &rule21},
4252 {42879, 1, &rule22},
4253 {42880, 1, &rule21},
4254 {42881, 1, &rule22},
4255 {42882, 1, &rule21},
4256 {42883, 1, &rule22},
4257 {42884, 1, &rule21},
4258 {42885, 1, &rule22},
4259 {42886, 1, &rule21},
4260 {42887, 1, &rule22},
4261 {42891, 1, &rule21},
4262 {42892, 1, &rule22},
4263 {42893, 1, &rule162},
4264 {42896, 1, &rule21},
4265 {42897, 1, &rule22},
4266 {42912, 1, &rule21},
4267 {42913, 1, &rule22},
4268 {42914, 1, &rule21},
4269 {42915, 1, &rule22},
4270 {42916, 1, &rule21},
4271 {42917, 1, &rule22},
4272 {42918, 1, &rule21},
4273 {42919, 1, &rule22},
4274 {42920, 1, &rule21},
4275 {42921, 1, &rule22},
4276 {65313, 26, &rule9},
4277 {65345, 26, &rule12},
4278 {66560, 40, &rule165},
4279 {66600, 40, &rule166}
4281 static const struct _charblock_ spacechars[]={
4293 Obtain the reference to character rule by doing
4294 binary search over the specified array of blocks.
4295 To make checkattr shorter, the address of
4296 nullrule is returned if the search fails:
4297 this rule defines no category and no conversion
4298 distances. The compare function returns 0 when
4299 key->start is within the block. Otherwise
4300 result of comparison of key->start and start of the
4301 current block is returned as usual.
4304 static const struct _convrule_ nullrule={0,NUMCAT_CN,0,0,0,0};
4306 int blkcmp(const void *vk,const void *vb)
4308 const struct _charblock_ *key,*cur;
4311 if((key->start>=cur->start)&&(key->start<(cur->start+cur->length)))
4315 if(key->start>cur->start) return 1;
4319 static const struct _convrule_ *getrule(
4320 const struct _charblock_ *blocks,
4324 struct _charblock_ key={unichar,1,(void *)0};
4325 struct _charblock_ *cb=bsearch(&key,blocks,numblocks,sizeof(key),blkcmp);
4326 if(cb==(void *)0) return &nullrule;
4333 Check whether a character (internal code) has certain attributes.
4334 Attributes (category flags) may be ORed. The function ANDs
4335 character category flags and the mask and returns the result.
4336 If the character belongs to one of the categories requested,
4337 the result will be nonzero.
4340 inline static int checkattr(int c,unsigned int catmask)
4342 return (catmask & (getrule(allchars,(c<256)?NUM_LAT1BLOCKS:NUM_BLOCKS,c)->category));
4345 inline static int checkattr_s(int c,unsigned int catmask)
4347 return (catmask & (getrule(spacechars,NUM_SPACEBLOCKS,c)->category));
4351 Define predicate functions for some combinations of categories.
4354 #define unipred(p,m) \
4357 return checkattr(c,m); \
4360 #define unipred_s(p,m) \
4363 return checkattr_s(c,m); \
4367 Make these rules as close to Hugs as possible.
4370 unipred(u_iswcntrl,GENCAT_CC)
4371 unipred(u_iswprint, (GENCAT_MC | GENCAT_NO | GENCAT_SK | GENCAT_ME | GENCAT_ND | GENCAT_PO | GENCAT_LT | GENCAT_PC | GENCAT_SM | GENCAT_ZS | GENCAT_LU | GENCAT_PD | GENCAT_SO | GENCAT_PE | GENCAT_PF | GENCAT_PS | GENCAT_SC | GENCAT_LL | GENCAT_LM | GENCAT_PI | GENCAT_NL | GENCAT_MN | GENCAT_LO))
4372 unipred_s(u_iswspace,GENCAT_ZS)
4373 unipred(u_iswupper,(GENCAT_LU|GENCAT_LT))
4374 unipred(u_iswlower,GENCAT_LL)
4375 unipred(u_iswalpha,(GENCAT_LL|GENCAT_LU|GENCAT_LT|GENCAT_LM|GENCAT_LO))
4376 unipred(u_iswdigit,GENCAT_ND)
4378 unipred(u_iswalnum,(GENCAT_LT|GENCAT_LU|GENCAT_LL|GENCAT_LM|GENCAT_LO|
4379 GENCAT_MC|GENCAT_ME|GENCAT_MN|
4380 GENCAT_NO|GENCAT_ND|GENCAT_NL))
4382 #define caseconv(p,to) \
4385 const struct _convrule_ *rule=getrule(convchars,NUM_CONVBLOCKS,c);\
4386 if(rule==&nullrule) return c;\
4390 caseconv(u_towupper,updist)
4391 caseconv(u_towlower,lowdist)
4392 caseconv(u_towtitle,titledist)
4396 return getrule(allchars,NUM_BLOCKS,c)->catnumber;