• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 #line 1 "hb-ot-shaper-use-machine.rl"
3 /*
4  * Copyright © 2015  Mozilla Foundation.
5  * Copyright © 2015  Google, Inc.
6  *
7  *  This is part of HarfBuzz, a text shaping library.
8  *
9  * Permission is hereby granted, without written agreement and without
10  * license or royalty fees, to use, copy, modify, and distribute this
11  * software and its documentation for any purpose, provided that the
12  * above copyright notice and the following two paragraphs appear in
13  * all copies of this software.
14  *
15  * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
16  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
17  * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
18  * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
19  * DAMAGE.
20  *
21  * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
22  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
23  * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
24  * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
25  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
26  *
27  * Mozilla Author(s): Jonathan Kew
28  * Google Author(s): Behdad Esfahbod
29  */
30 
31 #ifndef HB_OT_SHAPER_USE_MACHINE_HH
32 #define HB_OT_SHAPER_USE_MACHINE_HH
33 
34 #include "hb.hh"
35 
36 #include "hb-ot-shaper-syllabic.hh"
37 
38 /* buffer var allocations */
39 #define use_category() ot_shaper_var_u8_category()
40 
41 #define USE(Cat) use_syllable_machine_ex_##Cat
42 
43 enum use_syllable_type_t {
44   use_virama_terminated_cluster,
45   use_sakot_terminated_cluster,
46   use_standard_cluster,
47   use_number_joiner_terminated_cluster,
48   use_numeral_cluster,
49   use_symbol_cluster,
50   use_hieroglyph_cluster,
51   use_broken_cluster,
52   use_non_cluster,
53 };
54 
55 
56 #line 57 "hb-ot-shaper-use-machine.hh"
57 #define use_syllable_machine_ex_B 1u
58 #define use_syllable_machine_ex_CGJ 6u
59 #define use_syllable_machine_ex_CMAbv 31u
60 #define use_syllable_machine_ex_CMBlw 32u
61 #define use_syllable_machine_ex_CS 43u
62 #define use_syllable_machine_ex_FAbv 24u
63 #define use_syllable_machine_ex_FBlw 25u
64 #define use_syllable_machine_ex_FMAbv 45u
65 #define use_syllable_machine_ex_FMBlw 46u
66 #define use_syllable_machine_ex_FMPst 47u
67 #define use_syllable_machine_ex_FPst 26u
68 #define use_syllable_machine_ex_G 49u
69 #define use_syllable_machine_ex_GB 5u
70 #define use_syllable_machine_ex_H 12u
71 #define use_syllable_machine_ex_HM 54u
72 #define use_syllable_machine_ex_HN 13u
73 #define use_syllable_machine_ex_HR 55u
74 #define use_syllable_machine_ex_HVM 53u
75 #define use_syllable_machine_ex_IS 44u
76 #define use_syllable_machine_ex_J 50u
77 #define use_syllable_machine_ex_MAbv 27u
78 #define use_syllable_machine_ex_MBlw 28u
79 #define use_syllable_machine_ex_MPre 30u
80 #define use_syllable_machine_ex_MPst 29u
81 #define use_syllable_machine_ex_N 4u
82 #define use_syllable_machine_ex_O 0u
83 #define use_syllable_machine_ex_R 18u
84 #define use_syllable_machine_ex_RK 56u
85 #define use_syllable_machine_ex_SB 51u
86 #define use_syllable_machine_ex_SE 52u
87 #define use_syllable_machine_ex_SMAbv 41u
88 #define use_syllable_machine_ex_SMBlw 42u
89 #define use_syllable_machine_ex_SUB 11u
90 #define use_syllable_machine_ex_Sk 48u
91 #define use_syllable_machine_ex_VAbv 33u
92 #define use_syllable_machine_ex_VBlw 34u
93 #define use_syllable_machine_ex_VMAbv 37u
94 #define use_syllable_machine_ex_VMBlw 38u
95 #define use_syllable_machine_ex_VMPre 23u
96 #define use_syllable_machine_ex_VMPst 39u
97 #define use_syllable_machine_ex_VPre 22u
98 #define use_syllable_machine_ex_VPst 35u
99 #define use_syllable_machine_ex_WJ 16u
100 #define use_syllable_machine_ex_ZWNJ 14u
101 
102 
103 #line 104 "hb-ot-shaper-use-machine.hh"
104 static const unsigned char _use_syllable_machine_trans_keys[] = {
105 	49u, 51u, 0u, 56u, 11u, 56u, 11u, 56u, 1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u,
106 	14u, 47u, 14u, 46u, 14u, 46u, 14u, 14u, 14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u,
107 	14u, 48u, 14u, 53u, 14u, 53u, 14u, 53u, 14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u,
108 	12u, 53u, 12u, 53u, 11u, 56u, 1u, 14u, 1u, 48u, 14u, 42u, 14u, 42u, 11u, 56u,
109 	1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u, 14u, 47u, 14u, 46u, 14u, 46u, 14u, 14u,
110 	14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u, 14u, 48u, 14u, 53u, 14u, 53u, 14u, 53u,
111 	14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u, 12u, 53u, 11u, 56u, 1u, 14u,
112 	1u, 14u, 1u, 48u, 14u, 14u, 13u, 14u, 4u, 14u, 11u, 56u, 11u, 56u, 1u, 53u,
113 	14u, 48u, 14u, 47u, 14u, 47u, 14u, 47u, 14u, 46u, 14u, 46u, 14u, 14u, 14u, 48u,
114 	14u, 48u, 14u, 48u, 1u, 14u, 14u, 48u, 14u, 53u, 14u, 53u, 14u, 53u, 14u, 53u,
115 	12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u, 12u, 53u, 11u, 56u, 1u, 14u, 1u, 14u,
116 	1u, 48u, 14u, 14u, 11u, 56u, 1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u, 14u, 47u,
117 	14u, 46u, 14u, 46u, 14u, 14u, 14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u, 14u, 48u,
118 	14u, 53u, 14u, 53u, 14u, 53u, 14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u,
119 	12u, 53u, 11u, 56u, 1u, 14u, 1u, 48u, 4u, 14u, 13u, 14u, 1u, 56u, 14u, 42u,
120 	14u, 42u, 1u, 5u, 14u, 55u, 14u, 51u, 14u, 52u, 14u, 54u, 11u, 56u, 0
121 };
122 
123 static const char _use_syllable_machine_key_spans[] = {
124 	3, 57, 46, 46, 53, 35, 34, 34,
125 	34, 33, 33, 1, 35, 35, 35, 14,
126 	35, 40, 40, 40, 40, 42, 40, 42,
127 	42, 42, 46, 14, 48, 29, 29, 46,
128 	53, 35, 34, 34, 34, 33, 33, 1,
129 	35, 35, 35, 14, 35, 40, 40, 40,
130 	40, 42, 40, 42, 42, 42, 46, 14,
131 	14, 48, 1, 2, 11, 46, 46, 53,
132 	35, 34, 34, 34, 33, 33, 1, 35,
133 	35, 35, 14, 35, 40, 40, 40, 40,
134 	42, 40, 42, 42, 42, 46, 14, 14,
135 	48, 1, 46, 53, 35, 34, 34, 34,
136 	33, 33, 1, 35, 35, 35, 14, 35,
137 	40, 40, 40, 40, 42, 40, 42, 42,
138 	42, 46, 14, 48, 11, 2, 56, 29,
139 	29, 5, 42, 38, 39, 41, 46
140 };
141 
142 static const short _use_syllable_machine_index_offsets[] = {
143 	0, 4, 62, 109, 156, 210, 246, 281,
144 	316, 351, 385, 419, 421, 457, 493, 529,
145 	544, 580, 621, 662, 703, 744, 787, 828,
146 	871, 914, 957, 1004, 1019, 1068, 1098, 1128,
147 	1175, 1229, 1265, 1300, 1335, 1370, 1404, 1438,
148 	1440, 1476, 1512, 1548, 1563, 1599, 1640, 1681,
149 	1722, 1763, 1806, 1847, 1890, 1933, 1976, 2023,
150 	2038, 2053, 2102, 2104, 2107, 2119, 2166, 2213,
151 	2267, 2303, 2338, 2373, 2408, 2442, 2476, 2478,
152 	2514, 2550, 2586, 2601, 2637, 2678, 2719, 2760,
153 	2801, 2844, 2885, 2928, 2971, 3014, 3061, 3076,
154 	3091, 3140, 3142, 3189, 3243, 3279, 3314, 3349,
155 	3384, 3418, 3452, 3454, 3490, 3526, 3562, 3577,
156 	3613, 3654, 3695, 3736, 3777, 3820, 3861, 3904,
157 	3947, 3990, 4037, 4052, 4101, 4113, 4116, 4173,
158 	4203, 4233, 4239, 4282, 4321, 4361, 4403
159 };
160 
161 static const unsigned char _use_syllable_machine_indicies[] = {
162 	1, 0, 2, 0, 3, 4, 5, 5,
163 	6, 7, 5, 5, 5, 5, 5, 8,
164 	9, 10, 11, 5, 5, 5, 12, 5,
165 	5, 5, 13, 14, 15, 16, 17, 18,
166 	19, 20, 21, 8, 22, 23, 24, 25,
167 	5, 26, 27, 28, 5, 29, 30, 31,
168 	32, 33, 34, 35, 32, 1, 5, 36,
169 	5, 37, 5, 5, 38, 5, 40, 41,
170 	39, 42, 39, 39, 39, 39, 39, 39,
171 	39, 43, 44, 45, 46, 47, 48, 49,
172 	50, 51, 40, 52, 53, 54, 55, 39,
173 	56, 57, 58, 39, 59, 60, 39, 61,
174 	62, 63, 64, 61, 39, 39, 39, 39,
175 	65, 39, 39, 64, 39, 40, 41, 39,
176 	42, 39, 39, 39, 39, 39, 39, 39,
177 	43, 44, 45, 46, 47, 48, 49, 50,
178 	51, 40, 52, 53, 54, 55, 39, 56,
179 	57, 58, 39, 39, 39, 39, 61, 62,
180 	63, 64, 61, 39, 39, 39, 39, 65,
181 	39, 39, 64, 39, 40, 39, 39, 39,
182 	39, 39, 39, 39, 39, 39, 39, 39,
183 	39, 42, 39, 39, 39, 39, 39, 39,
184 	39, 39, 44, 45, 46, 47, 39, 39,
185 	39, 39, 39, 39, 39, 39, 39, 39,
186 	56, 57, 58, 39, 39, 39, 39, 39,
187 	62, 63, 64, 66, 39, 39, 39, 39,
188 	44, 39, 42, 39, 39, 39, 39, 39,
189 	39, 39, 39, 44, 45, 46, 47, 39,
190 	39, 39, 39, 39, 39, 39, 39, 39,
191 	39, 56, 57, 58, 39, 39, 39, 39,
192 	39, 62, 63, 64, 66, 39, 42, 39,
193 	39, 39, 39, 39, 39, 39, 39, 39,
194 	45, 46, 47, 39, 39, 39, 39, 39,
195 	39, 39, 39, 39, 39, 39, 39, 39,
196 	39, 39, 39, 39, 39, 62, 63, 64,
197 	39, 42, 39, 39, 39, 39, 39, 39,
198 	39, 39, 39, 39, 46, 47, 39, 39,
199 	39, 39, 39, 39, 39, 39, 39, 39,
200 	39, 39, 39, 39, 39, 39, 39, 39,
201 	62, 63, 64, 39, 42, 39, 39, 39,
202 	39, 39, 39, 39, 39, 39, 39, 39,
203 	47, 39, 39, 39, 39, 39, 39, 39,
204 	39, 39, 39, 39, 39, 39, 39, 39,
205 	39, 39, 39, 62, 63, 64, 39, 42,
206 	39, 39, 39, 39, 39, 39, 39, 39,
207 	39, 39, 39, 39, 39, 39, 39, 39,
208 	39, 39, 39, 39, 39, 39, 39, 39,
209 	39, 39, 39, 39, 39, 39, 62, 63,
210 	39, 42, 39, 39, 39, 39, 39, 39,
211 	39, 39, 39, 39, 39, 39, 39, 39,
212 	39, 39, 39, 39, 39, 39, 39, 39,
213 	39, 39, 39, 39, 39, 39, 39, 39,
214 	39, 63, 39, 42, 39, 42, 39, 39,
215 	39, 39, 39, 39, 39, 39, 39, 45,
216 	46, 47, 39, 39, 39, 39, 39, 39,
217 	39, 39, 39, 39, 56, 57, 58, 39,
218 	39, 39, 39, 39, 62, 63, 64, 66,
219 	39, 42, 39, 39, 39, 39, 39, 39,
220 	39, 39, 39, 45, 46, 47, 39, 39,
221 	39, 39, 39, 39, 39, 39, 39, 39,
222 	39, 57, 58, 39, 39, 39, 39, 39,
223 	62, 63, 64, 66, 39, 42, 39, 39,
224 	39, 39, 39, 39, 39, 39, 39, 45,
225 	46, 47, 39, 39, 39, 39, 39, 39,
226 	39, 39, 39, 39, 39, 39, 58, 39,
227 	39, 39, 39, 39, 62, 63, 64, 66,
228 	39, 67, 39, 39, 39, 39, 39, 39,
229 	39, 39, 39, 39, 39, 39, 42, 39,
230 	42, 39, 39, 39, 39, 39, 39, 39,
231 	39, 39, 45, 46, 47, 39, 39, 39,
232 	39, 39, 39, 39, 39, 39, 39, 39,
233 	39, 39, 39, 39, 39, 39, 39, 62,
234 	63, 64, 66, 39, 42, 39, 39, 39,
235 	39, 39, 39, 39, 43, 44, 45, 46,
236 	47, 39, 39, 39, 39, 39, 39, 53,
237 	54, 55, 39, 56, 57, 58, 39, 39,
238 	39, 39, 39, 62, 63, 64, 66, 39,
239 	39, 39, 39, 44, 39, 42, 39, 39,
240 	39, 39, 39, 39, 39, 39, 44, 45,
241 	46, 47, 39, 39, 39, 39, 39, 39,
242 	53, 54, 55, 39, 56, 57, 58, 39,
243 	39, 39, 39, 39, 62, 63, 64, 66,
244 	39, 39, 39, 39, 44, 39, 42, 39,
245 	39, 39, 39, 39, 39, 39, 39, 44,
246 	45, 46, 47, 39, 39, 39, 39, 39,
247 	39, 39, 54, 55, 39, 56, 57, 58,
248 	39, 39, 39, 39, 39, 62, 63, 64,
249 	66, 39, 39, 39, 39, 44, 39, 42,
250 	39, 39, 39, 39, 39, 39, 39, 39,
251 	44, 45, 46, 47, 39, 39, 39, 39,
252 	39, 39, 39, 39, 55, 39, 56, 57,
253 	58, 39, 39, 39, 39, 39, 62, 63,
254 	64, 66, 39, 39, 39, 39, 44, 39,
255 	68, 39, 42, 39, 39, 39, 39, 39,
256 	39, 39, 43, 44, 45, 46, 47, 39,
257 	49, 50, 39, 39, 39, 53, 54, 55,
258 	39, 56, 57, 58, 39, 39, 39, 39,
259 	39, 62, 63, 64, 66, 39, 39, 39,
260 	39, 44, 39, 42, 39, 39, 39, 39,
261 	39, 39, 39, 39, 44, 45, 46, 47,
262 	39, 39, 39, 39, 39, 39, 39, 39,
263 	39, 39, 56, 57, 58, 39, 39, 39,
264 	39, 39, 62, 63, 64, 66, 39, 39,
265 	39, 39, 44, 39, 68, 39, 42, 39,
266 	39, 39, 39, 39, 39, 39, 43, 44,
267 	45, 46, 47, 39, 39, 50, 39, 39,
268 	39, 53, 54, 55, 39, 56, 57, 58,
269 	39, 39, 39, 39, 39, 62, 63, 64,
270 	66, 39, 39, 39, 39, 44, 39, 68,
271 	39, 42, 39, 39, 39, 39, 39, 39,
272 	39, 43, 44, 45, 46, 47, 39, 39,
273 	39, 39, 39, 39, 53, 54, 55, 39,
274 	56, 57, 58, 39, 39, 39, 39, 39,
275 	62, 63, 64, 66, 39, 39, 39, 39,
276 	44, 39, 68, 39, 42, 39, 39, 39,
277 	39, 39, 39, 39, 43, 44, 45, 46,
278 	47, 48, 49, 50, 39, 39, 39, 53,
279 	54, 55, 39, 56, 57, 58, 39, 39,
280 	39, 39, 39, 62, 63, 64, 66, 39,
281 	39, 39, 39, 44, 39, 40, 41, 39,
282 	42, 39, 39, 39, 39, 39, 39, 39,
283 	43, 44, 45, 46, 47, 48, 49, 50,
284 	51, 39, 52, 53, 54, 55, 39, 56,
285 	57, 58, 39, 39, 39, 39, 61, 62,
286 	63, 64, 61, 39, 39, 39, 39, 65,
287 	39, 39, 64, 39, 40, 39, 39, 39,
288 	39, 39, 39, 39, 39, 39, 39, 39,
289 	39, 42, 39, 40, 39, 39, 39, 39,
290 	39, 39, 39, 39, 39, 39, 39, 39,
291 	42, 39, 39, 39, 39, 39, 39, 39,
292 	39, 44, 45, 46, 47, 39, 39, 39,
293 	39, 39, 39, 39, 39, 39, 39, 56,
294 	57, 58, 39, 39, 39, 39, 39, 62,
295 	63, 64, 66, 39, 42, 39, 39, 39,
296 	39, 39, 39, 39, 39, 39, 39, 39,
297 	39, 39, 39, 39, 39, 39, 39, 39,
298 	39, 39, 39, 39, 39, 39, 39, 59,
299 	60, 39, 42, 39, 39, 39, 39, 39,
300 	39, 39, 39, 39, 39, 39, 39, 39,
301 	39, 39, 39, 39, 39, 39, 39, 39,
302 	39, 39, 39, 39, 39, 39, 60, 39,
303 	4, 70, 69, 71, 69, 69, 69, 69,
304 	69, 69, 69, 72, 73, 74, 75, 76,
305 	77, 78, 79, 80, 4, 81, 82, 83,
306 	84, 69, 85, 86, 87, 69, 69, 69,
307 	69, 88, 89, 90, 91, 92, 69, 69,
308 	69, 69, 93, 69, 69, 94, 69, 4,
309 	69, 69, 69, 69, 69, 69, 69, 69,
310 	69, 69, 69, 69, 71, 69, 69, 69,
311 	69, 69, 69, 69, 69, 73, 74, 75,
312 	76, 69, 69, 69, 69, 69, 69, 69,
313 	69, 69, 69, 85, 86, 87, 69, 69,
314 	69, 69, 69, 89, 90, 91, 95, 69,
315 	69, 69, 69, 73, 69, 71, 69, 69,
316 	69, 69, 69, 69, 69, 69, 73, 74,
317 	75, 76, 69, 69, 69, 69, 69, 69,
318 	69, 69, 69, 69, 85, 86, 87, 69,
319 	69, 69, 69, 69, 89, 90, 91, 95,
320 	69, 71, 69, 69, 69, 69, 69, 69,
321 	69, 69, 69, 74, 75, 76, 69, 69,
322 	69, 69, 69, 69, 69, 69, 69, 69,
323 	69, 69, 69, 69, 69, 69, 69, 69,
324 	89, 90, 91, 69, 71, 69, 69, 69,
325 	69, 69, 69, 69, 69, 69, 69, 75,
326 	76, 69, 69, 69, 69, 69, 69, 69,
327 	69, 69, 69, 69, 69, 69, 69, 69,
328 	69, 69, 69, 89, 90, 91, 69, 71,
329 	69, 69, 69, 69, 69, 69, 69, 69,
330 	69, 69, 69, 76, 69, 69, 69, 69,
331 	69, 69, 69, 69, 69, 69, 69, 69,
332 	69, 69, 69, 69, 69, 69, 89, 90,
333 	91, 69, 71, 69, 69, 69, 69, 69,
334 	69, 69, 69, 69, 69, 69, 69, 69,
335 	69, 69, 69, 69, 69, 69, 69, 69,
336 	69, 69, 69, 69, 69, 69, 69, 69,
337 	69, 89, 90, 69, 71, 69, 69, 69,
338 	69, 69, 69, 69, 69, 69, 69, 69,
339 	69, 69, 69, 69, 69, 69, 69, 69,
340 	69, 69, 69, 69, 69, 69, 69, 69,
341 	69, 69, 69, 69, 90, 69, 71, 69,
342 	71, 69, 69, 69, 69, 69, 69, 69,
343 	69, 69, 74, 75, 76, 69, 69, 69,
344 	69, 69, 69, 69, 69, 69, 69, 85,
345 	86, 87, 69, 69, 69, 69, 69, 89,
346 	90, 91, 95, 69, 71, 69, 69, 69,
347 	69, 69, 69, 69, 69, 69, 74, 75,
348 	76, 69, 69, 69, 69, 69, 69, 69,
349 	69, 69, 69, 69, 86, 87, 69, 69,
350 	69, 69, 69, 89, 90, 91, 95, 69,
351 	71, 69, 69, 69, 69, 69, 69, 69,
352 	69, 69, 74, 75, 76, 69, 69, 69,
353 	69, 69, 69, 69, 69, 69, 69, 69,
354 	69, 87, 69, 69, 69, 69, 69, 89,
355 	90, 91, 95, 69, 97, 96, 96, 96,
356 	96, 96, 96, 96, 96, 96, 96, 96,
357 	96, 98, 96, 71, 69, 69, 69, 69,
358 	69, 69, 69, 69, 69, 74, 75, 76,
359 	69, 69, 69, 69, 69, 69, 69, 69,
360 	69, 69, 69, 69, 69, 69, 69, 69,
361 	69, 69, 89, 90, 91, 95, 69, 71,
362 	69, 69, 69, 69, 69, 69, 69, 72,
363 	73, 74, 75, 76, 69, 69, 69, 69,
364 	69, 69, 82, 83, 84, 69, 85, 86,
365 	87, 69, 69, 69, 69, 69, 89, 90,
366 	91, 95, 69, 69, 69, 69, 73, 69,
367 	71, 69, 69, 69, 69, 69, 69, 69,
368 	69, 73, 74, 75, 76, 69, 69, 69,
369 	69, 69, 69, 82, 83, 84, 69, 85,
370 	86, 87, 69, 69, 69, 69, 69, 89,
371 	90, 91, 95, 69, 69, 69, 69, 73,
372 	69, 71, 69, 69, 69, 69, 69, 69,
373 	69, 69, 73, 74, 75, 76, 69, 69,
374 	69, 69, 69, 69, 69, 83, 84, 69,
375 	85, 86, 87, 69, 69, 69, 69, 69,
376 	89, 90, 91, 95, 69, 69, 69, 69,
377 	73, 69, 71, 69, 69, 69, 69, 69,
378 	69, 69, 69, 73, 74, 75, 76, 69,
379 	69, 69, 69, 69, 69, 69, 69, 84,
380 	69, 85, 86, 87, 69, 69, 69, 69,
381 	69, 89, 90, 91, 95, 69, 69, 69,
382 	69, 73, 69, 99, 69, 71, 69, 69,
383 	69, 69, 69, 69, 69, 72, 73, 74,
384 	75, 76, 69, 78, 79, 69, 69, 69,
385 	82, 83, 84, 69, 85, 86, 87, 69,
386 	69, 69, 69, 69, 89, 90, 91, 95,
387 	69, 69, 69, 69, 73, 69, 71, 69,
388 	69, 69, 69, 69, 69, 69, 69, 73,
389 	74, 75, 76, 69, 69, 69, 69, 69,
390 	69, 69, 69, 69, 69, 85, 86, 87,
391 	69, 69, 69, 69, 69, 89, 90, 91,
392 	95, 69, 69, 69, 69, 73, 69, 99,
393 	69, 71, 69, 69, 69, 69, 69, 69,
394 	69, 72, 73, 74, 75, 76, 69, 69,
395 	79, 69, 69, 69, 82, 83, 84, 69,
396 	85, 86, 87, 69, 69, 69, 69, 69,
397 	89, 90, 91, 95, 69, 69, 69, 69,
398 	73, 69, 99, 69, 71, 69, 69, 69,
399 	69, 69, 69, 69, 72, 73, 74, 75,
400 	76, 69, 69, 69, 69, 69, 69, 82,
401 	83, 84, 69, 85, 86, 87, 69, 69,
402 	69, 69, 69, 89, 90, 91, 95, 69,
403 	69, 69, 69, 73, 69, 99, 69, 71,
404 	69, 69, 69, 69, 69, 69, 69, 72,
405 	73, 74, 75, 76, 77, 78, 79, 69,
406 	69, 69, 82, 83, 84, 69, 85, 86,
407 	87, 69, 69, 69, 69, 69, 89, 90,
408 	91, 95, 69, 69, 69, 69, 73, 69,
409 	4, 70, 69, 71, 69, 69, 69, 69,
410 	69, 69, 69, 72, 73, 74, 75, 76,
411 	77, 78, 79, 80, 69, 81, 82, 83,
412 	84, 69, 85, 86, 87, 69, 69, 69,
413 	69, 88, 89, 90, 91, 92, 69, 69,
414 	69, 69, 93, 69, 69, 94, 69, 4,
415 	100, 100, 100, 100, 100, 100, 100, 100,
416 	100, 100, 100, 100, 101, 100, 4, 96,
417 	96, 96, 96, 96, 96, 96, 96, 96,
418 	96, 96, 96, 98, 96, 4, 69, 69,
419 	69, 69, 69, 69, 69, 69, 69, 69,
420 	69, 69, 71, 69, 69, 69, 69, 69,
421 	69, 69, 69, 73, 74, 75, 76, 69,
422 	69, 69, 69, 69, 69, 69, 69, 69,
423 	69, 85, 86, 87, 69, 69, 69, 69,
424 	69, 89, 90, 91, 95, 69, 101, 100,
425 	103, 104, 102, 6, 105, 105, 105, 105,
426 	105, 105, 105, 105, 105, 106, 105, 107,
427 	108, 69, 71, 69, 69, 69, 69, 69,
428 	69, 69, 109, 110, 111, 112, 113, 114,
429 	115, 116, 117, 107, 118, 119, 120, 121,
430 	69, 122, 123, 124, 69, 59, 60, 69,
431 	125, 126, 127, 128, 129, 69, 69, 69,
432 	69, 130, 69, 69, 131, 69, 107, 108,
433 	69, 71, 69, 69, 69, 69, 69, 69,
434 	69, 109, 110, 111, 112, 113, 114, 115,
435 	116, 117, 107, 118, 119, 120, 121, 69,
436 	122, 123, 124, 69, 69, 69, 69, 125,
437 	126, 127, 128, 129, 69, 69, 69, 69,
438 	130, 69, 69, 131, 69, 107, 69, 69,
439 	69, 69, 69, 69, 69, 69, 69, 69,
440 	69, 69, 71, 69, 69, 69, 69, 69,
441 	69, 69, 69, 110, 111, 112, 113, 69,
442 	69, 69, 69, 69, 69, 69, 69, 69,
443 	69, 122, 123, 124, 69, 69, 69, 69,
444 	69, 126, 127, 128, 132, 69, 69, 69,
445 	69, 110, 69, 71, 69, 69, 69, 69,
446 	69, 69, 69, 69, 110, 111, 112, 113,
447 	69, 69, 69, 69, 69, 69, 69, 69,
448 	69, 69, 122, 123, 124, 69, 69, 69,
449 	69, 69, 126, 127, 128, 132, 69, 71,
450 	69, 69, 69, 69, 69, 69, 69, 69,
451 	69, 111, 112, 113, 69, 69, 69, 69,
452 	69, 69, 69, 69, 69, 69, 69, 69,
453 	69, 69, 69, 69, 69, 69, 126, 127,
454 	128, 69, 71, 69, 69, 69, 69, 69,
455 	69, 69, 69, 69, 69, 112, 113, 69,
456 	69, 69, 69, 69, 69, 69, 69, 69,
457 	69, 69, 69, 69, 69, 69, 69, 69,
458 	69, 126, 127, 128, 69, 71, 69, 69,
459 	69, 69, 69, 69, 69, 69, 69, 69,
460 	69, 113, 69, 69, 69, 69, 69, 69,
461 	69, 69, 69, 69, 69, 69, 69, 69,
462 	69, 69, 69, 69, 126, 127, 128, 69,
463 	71, 69, 69, 69, 69, 69, 69, 69,
464 	69, 69, 69, 69, 69, 69, 69, 69,
465 	69, 69, 69, 69, 69, 69, 69, 69,
466 	69, 69, 69, 69, 69, 69, 69, 126,
467 	127, 69, 71, 69, 69, 69, 69, 69,
468 	69, 69, 69, 69, 69, 69, 69, 69,
469 	69, 69, 69, 69, 69, 69, 69, 69,
470 	69, 69, 69, 69, 69, 69, 69, 69,
471 	69, 69, 127, 69, 71, 69, 71, 69,
472 	69, 69, 69, 69, 69, 69, 69, 69,
473 	111, 112, 113, 69, 69, 69, 69, 69,
474 	69, 69, 69, 69, 69, 122, 123, 124,
475 	69, 69, 69, 69, 69, 126, 127, 128,
476 	132, 69, 71, 69, 69, 69, 69, 69,
477 	69, 69, 69, 69, 111, 112, 113, 69,
478 	69, 69, 69, 69, 69, 69, 69, 69,
479 	69, 69, 123, 124, 69, 69, 69, 69,
480 	69, 126, 127, 128, 132, 69, 71, 69,
481 	69, 69, 69, 69, 69, 69, 69, 69,
482 	111, 112, 113, 69, 69, 69, 69, 69,
483 	69, 69, 69, 69, 69, 69, 69, 124,
484 	69, 69, 69, 69, 69, 126, 127, 128,
485 	132, 69, 133, 96, 96, 96, 96, 96,
486 	96, 96, 96, 96, 96, 96, 96, 98,
487 	96, 71, 69, 69, 69, 69, 69, 69,
488 	69, 69, 69, 111, 112, 113, 69, 69,
489 	69, 69, 69, 69, 69, 69, 69, 69,
490 	69, 69, 69, 69, 69, 69, 69, 69,
491 	126, 127, 128, 132, 69, 71, 69, 69,
492 	69, 69, 69, 69, 69, 109, 110, 111,
493 	112, 113, 69, 69, 69, 69, 69, 69,
494 	119, 120, 121, 69, 122, 123, 124, 69,
495 	69, 69, 69, 69, 126, 127, 128, 132,
496 	69, 69, 69, 69, 110, 69, 71, 69,
497 	69, 69, 69, 69, 69, 69, 69, 110,
498 	111, 112, 113, 69, 69, 69, 69, 69,
499 	69, 119, 120, 121, 69, 122, 123, 124,
500 	69, 69, 69, 69, 69, 126, 127, 128,
501 	132, 69, 69, 69, 69, 110, 69, 71,
502 	69, 69, 69, 69, 69, 69, 69, 69,
503 	110, 111, 112, 113, 69, 69, 69, 69,
504 	69, 69, 69, 120, 121, 69, 122, 123,
505 	124, 69, 69, 69, 69, 69, 126, 127,
506 	128, 132, 69, 69, 69, 69, 110, 69,
507 	71, 69, 69, 69, 69, 69, 69, 69,
508 	69, 110, 111, 112, 113, 69, 69, 69,
509 	69, 69, 69, 69, 69, 121, 69, 122,
510 	123, 124, 69, 69, 69, 69, 69, 126,
511 	127, 128, 132, 69, 69, 69, 69, 110,
512 	69, 134, 69, 71, 69, 69, 69, 69,
513 	69, 69, 69, 109, 110, 111, 112, 113,
514 	69, 115, 116, 69, 69, 69, 119, 120,
515 	121, 69, 122, 123, 124, 69, 69, 69,
516 	69, 69, 126, 127, 128, 132, 69, 69,
517 	69, 69, 110, 69, 71, 69, 69, 69,
518 	69, 69, 69, 69, 69, 110, 111, 112,
519 	113, 69, 69, 69, 69, 69, 69, 69,
520 	69, 69, 69, 122, 123, 124, 69, 69,
521 	69, 69, 69, 126, 127, 128, 132, 69,
522 	69, 69, 69, 110, 69, 134, 69, 71,
523 	69, 69, 69, 69, 69, 69, 69, 109,
524 	110, 111, 112, 113, 69, 69, 116, 69,
525 	69, 69, 119, 120, 121, 69, 122, 123,
526 	124, 69, 69, 69, 69, 69, 126, 127,
527 	128, 132, 69, 69, 69, 69, 110, 69,
528 	134, 69, 71, 69, 69, 69, 69, 69,
529 	69, 69, 109, 110, 111, 112, 113, 69,
530 	69, 69, 69, 69, 69, 119, 120, 121,
531 	69, 122, 123, 124, 69, 69, 69, 69,
532 	69, 126, 127, 128, 132, 69, 69, 69,
533 	69, 110, 69, 134, 69, 71, 69, 69,
534 	69, 69, 69, 69, 69, 109, 110, 111,
535 	112, 113, 114, 115, 116, 69, 69, 69,
536 	119, 120, 121, 69, 122, 123, 124, 69,
537 	69, 69, 69, 69, 126, 127, 128, 132,
538 	69, 69, 69, 69, 110, 69, 107, 108,
539 	69, 71, 69, 69, 69, 69, 69, 69,
540 	69, 109, 110, 111, 112, 113, 114, 115,
541 	116, 117, 69, 118, 119, 120, 121, 69,
542 	122, 123, 124, 69, 69, 69, 69, 125,
543 	126, 127, 128, 129, 69, 69, 69, 69,
544 	130, 69, 69, 131, 69, 107, 100, 100,
545 	100, 100, 100, 100, 100, 100, 100, 100,
546 	100, 100, 101, 100, 107, 96, 96, 96,
547 	96, 96, 96, 96, 96, 96, 96, 96,
548 	96, 98, 96, 107, 69, 69, 69, 69,
549 	69, 69, 69, 69, 69, 69, 69, 69,
550 	71, 69, 69, 69, 69, 69, 69, 69,
551 	69, 110, 111, 112, 113, 69, 69, 69,
552 	69, 69, 69, 69, 69, 69, 69, 122,
553 	123, 124, 69, 69, 69, 69, 69, 126,
554 	127, 128, 132, 69, 101, 100, 8, 9,
555 	135, 11, 135, 135, 135, 135, 135, 135,
556 	135, 13, 14, 15, 16, 17, 18, 19,
557 	20, 21, 8, 22, 23, 24, 25, 135,
558 	26, 27, 28, 135, 135, 135, 135, 32,
559 	33, 34, 38, 32, 135, 135, 135, 135,
560 	37, 135, 135, 38, 135, 8, 135, 135,
561 	135, 135, 135, 135, 135, 135, 135, 135,
562 	135, 135, 11, 135, 135, 135, 135, 135,
563 	135, 135, 135, 14, 15, 16, 17, 135,
564 	135, 135, 135, 135, 135, 135, 135, 135,
565 	135, 26, 27, 28, 135, 135, 135, 135,
566 	135, 33, 34, 38, 136, 135, 135, 135,
567 	135, 14, 135, 11, 135, 135, 135, 135,
568 	135, 135, 135, 135, 14, 15, 16, 17,
569 	135, 135, 135, 135, 135, 135, 135, 135,
570 	135, 135, 26, 27, 28, 135, 135, 135,
571 	135, 135, 33, 34, 38, 136, 135, 11,
572 	135, 135, 135, 135, 135, 135, 135, 135,
573 	135, 15, 16, 17, 135, 135, 135, 135,
574 	135, 135, 135, 135, 135, 135, 135, 135,
575 	135, 135, 135, 135, 135, 135, 33, 34,
576 	38, 135, 11, 135, 135, 135, 135, 135,
577 	135, 135, 135, 135, 135, 16, 17, 135,
578 	135, 135, 135, 135, 135, 135, 135, 135,
579 	135, 135, 135, 135, 135, 135, 135, 135,
580 	135, 33, 34, 38, 135, 11, 135, 135,
581 	135, 135, 135, 135, 135, 135, 135, 135,
582 	135, 17, 135, 135, 135, 135, 135, 135,
583 	135, 135, 135, 135, 135, 135, 135, 135,
584 	135, 135, 135, 135, 33, 34, 38, 135,
585 	11, 135, 135, 135, 135, 135, 135, 135,
586 	135, 135, 135, 135, 135, 135, 135, 135,
587 	135, 135, 135, 135, 135, 135, 135, 135,
588 	135, 135, 135, 135, 135, 135, 135, 33,
589 	34, 135, 11, 135, 135, 135, 135, 135,
590 	135, 135, 135, 135, 135, 135, 135, 135,
591 	135, 135, 135, 135, 135, 135, 135, 135,
592 	135, 135, 135, 135, 135, 135, 135, 135,
593 	135, 135, 34, 135, 11, 137, 11, 135,
594 	135, 135, 135, 135, 135, 135, 135, 135,
595 	15, 16, 17, 135, 135, 135, 135, 135,
596 	135, 135, 135, 135, 135, 26, 27, 28,
597 	135, 135, 135, 135, 135, 33, 34, 38,
598 	136, 135, 11, 135, 135, 135, 135, 135,
599 	135, 135, 135, 135, 15, 16, 17, 135,
600 	135, 135, 135, 135, 135, 135, 135, 135,
601 	135, 135, 27, 28, 135, 135, 135, 135,
602 	135, 33, 34, 38, 136, 135, 11, 135,
603 	135, 135, 135, 135, 135, 135, 135, 135,
604 	15, 16, 17, 135, 135, 135, 135, 135,
605 	135, 135, 135, 135, 135, 135, 135, 28,
606 	135, 135, 135, 135, 135, 33, 34, 38,
607 	136, 135, 138, 135, 135, 135, 135, 135,
608 	135, 135, 135, 135, 135, 135, 135, 11,
609 	135, 11, 135, 135, 135, 135, 135, 135,
610 	135, 135, 135, 15, 16, 17, 135, 135,
611 	135, 135, 135, 135, 135, 135, 135, 135,
612 	135, 135, 135, 135, 135, 135, 135, 135,
613 	33, 34, 38, 136, 135, 11, 135, 135,
614 	135, 135, 135, 135, 135, 13, 14, 15,
615 	16, 17, 135, 135, 135, 135, 135, 135,
616 	23, 24, 25, 135, 26, 27, 28, 135,
617 	135, 135, 135, 135, 33, 34, 38, 136,
618 	135, 135, 135, 135, 14, 135, 11, 135,
619 	135, 135, 135, 135, 135, 135, 135, 14,
620 	15, 16, 17, 135, 135, 135, 135, 135,
621 	135, 23, 24, 25, 135, 26, 27, 28,
622 	135, 135, 135, 135, 135, 33, 34, 38,
623 	136, 135, 135, 135, 135, 14, 135, 11,
624 	135, 135, 135, 135, 135, 135, 135, 135,
625 	14, 15, 16, 17, 135, 135, 135, 135,
626 	135, 135, 135, 24, 25, 135, 26, 27,
627 	28, 135, 135, 135, 135, 135, 33, 34,
628 	38, 136, 135, 135, 135, 135, 14, 135,
629 	11, 135, 135, 135, 135, 135, 135, 135,
630 	135, 14, 15, 16, 17, 135, 135, 135,
631 	135, 135, 135, 135, 135, 25, 135, 26,
632 	27, 28, 135, 135, 135, 135, 135, 33,
633 	34, 38, 136, 135, 135, 135, 135, 14,
634 	135, 139, 135, 11, 135, 135, 135, 135,
635 	135, 135, 135, 13, 14, 15, 16, 17,
636 	135, 19, 20, 135, 135, 135, 23, 24,
637 	25, 135, 26, 27, 28, 135, 135, 135,
638 	135, 135, 33, 34, 38, 136, 135, 135,
639 	135, 135, 14, 135, 11, 135, 135, 135,
640 	135, 135, 135, 135, 135, 14, 15, 16,
641 	17, 135, 135, 135, 135, 135, 135, 135,
642 	135, 135, 135, 26, 27, 28, 135, 135,
643 	135, 135, 135, 33, 34, 38, 136, 135,
644 	135, 135, 135, 14, 135, 139, 135, 11,
645 	135, 135, 135, 135, 135, 135, 135, 13,
646 	14, 15, 16, 17, 135, 135, 20, 135,
647 	135, 135, 23, 24, 25, 135, 26, 27,
648 	28, 135, 135, 135, 135, 135, 33, 34,
649 	38, 136, 135, 135, 135, 135, 14, 135,
650 	139, 135, 11, 135, 135, 135, 135, 135,
651 	135, 135, 13, 14, 15, 16, 17, 135,
652 	135, 135, 135, 135, 135, 23, 24, 25,
653 	135, 26, 27, 28, 135, 135, 135, 135,
654 	135, 33, 34, 38, 136, 135, 135, 135,
655 	135, 14, 135, 139, 135, 11, 135, 135,
656 	135, 135, 135, 135, 135, 13, 14, 15,
657 	16, 17, 18, 19, 20, 135, 135, 135,
658 	23, 24, 25, 135, 26, 27, 28, 135,
659 	135, 135, 135, 135, 33, 34, 38, 136,
660 	135, 135, 135, 135, 14, 135, 8, 9,
661 	135, 11, 135, 135, 135, 135, 135, 135,
662 	135, 13, 14, 15, 16, 17, 18, 19,
663 	20, 21, 135, 22, 23, 24, 25, 135,
664 	26, 27, 28, 135, 135, 135, 135, 32,
665 	33, 34, 38, 32, 135, 135, 135, 135,
666 	37, 135, 135, 38, 135, 8, 135, 135,
667 	135, 135, 135, 135, 135, 135, 135, 135,
668 	135, 135, 11, 135, 8, 135, 135, 135,
669 	135, 135, 135, 135, 135, 135, 135, 135,
670 	135, 11, 135, 135, 135, 135, 135, 135,
671 	135, 135, 14, 15, 16, 17, 135, 135,
672 	135, 135, 135, 135, 135, 135, 135, 135,
673 	26, 27, 28, 135, 135, 135, 135, 135,
674 	33, 34, 38, 136, 135, 140, 135, 135,
675 	135, 135, 135, 135, 135, 135, 135, 11,
676 	135, 10, 11, 135, 4, 135, 135, 135,
677 	4, 135, 135, 135, 135, 135, 8, 9,
678 	10, 11, 135, 135, 135, 135, 135, 135,
679 	135, 13, 14, 15, 16, 17, 18, 19,
680 	20, 21, 8, 22, 23, 24, 25, 135,
681 	26, 27, 28, 135, 29, 30, 135, 32,
682 	33, 34, 38, 32, 135, 135, 135, 135,
683 	37, 135, 135, 38, 135, 11, 135, 135,
684 	135, 135, 135, 135, 135, 135, 135, 135,
685 	135, 135, 135, 135, 135, 135, 135, 135,
686 	135, 135, 135, 135, 135, 135, 135, 135,
687 	29, 30, 135, 11, 135, 135, 135, 135,
688 	135, 135, 135, 135, 135, 135, 135, 135,
689 	135, 135, 135, 135, 135, 135, 135, 135,
690 	135, 135, 135, 135, 135, 135, 135, 30,
691 	135, 4, 141, 141, 141, 4, 141, 143,
692 	142, 142, 142, 142, 142, 142, 142, 142,
693 	142, 142, 142, 142, 142, 142, 142, 142,
694 	142, 142, 142, 142, 142, 142, 142, 142,
695 	142, 142, 142, 142, 142, 142, 142, 142,
696 	142, 142, 142, 144, 142, 145, 142, 145,
697 	146, 142, 143, 142, 142, 142, 142, 142,
698 	142, 142, 142, 142, 142, 142, 142, 142,
699 	142, 142, 142, 142, 142, 142, 142, 142,
700 	142, 142, 142, 142, 142, 142, 142, 142,
701 	142, 142, 142, 142, 142, 1, 144, 144,
702 	142, 143, 142, 142, 142, 142, 142, 142,
703 	142, 142, 142, 142, 142, 142, 142, 142,
704 	142, 142, 142, 142, 142, 142, 142, 142,
705 	142, 142, 142, 142, 142, 142, 142, 142,
706 	142, 142, 142, 142, 142, 144, 142, 145,
707 	142, 143, 142, 142, 142, 142, 142, 142,
708 	142, 142, 142, 142, 142, 142, 142, 142,
709 	142, 142, 142, 142, 142, 142, 142, 142,
710 	142, 142, 142, 142, 142, 142, 142, 142,
711 	142, 142, 142, 142, 142, 144, 142, 145,
712 	142, 145, 142, 40, 41, 39, 42, 39,
713 	39, 39, 39, 39, 39, 39, 43, 44,
714 	45, 46, 47, 48, 49, 50, 51, 40,
715 	52, 53, 54, 55, 39, 56, 57, 58,
716 	39, 59, 60, 39, 61, 62, 63, 64,
717 	61, 1, 39, 2, 39, 65, 39, 39,
718 	64, 39, 0
719 };
720 
721 static const char _use_syllable_machine_trans_targs[] = {
722 	1, 122, 0, 2, 31, 1, 59, 61,
723 	90, 91, 116, 1, 118, 104, 92, 93,
724 	94, 95, 108, 110, 111, 112, 113, 105,
725 	106, 107, 99, 100, 101, 119, 120, 121,
726 	114, 96, 97, 98, 126, 115, 98, 1,
727 	3, 4, 1, 17, 5, 6, 7, 8,
728 	21, 23, 24, 25, 26, 18, 19, 20,
729 	12, 13, 14, 29, 30, 27, 9, 10,
730 	11, 28, 15, 16, 22, 1, 32, 1,
731 	45, 33, 34, 35, 36, 49, 51, 52,
732 	53, 54, 46, 47, 48, 40, 41, 42,
733 	55, 37, 38, 39, 56, 57, 58, 43,
734 	1, 44, 1, 50, 1, 1, 1, 60,
735 	1, 1, 1, 62, 63, 76, 64, 65,
736 	66, 67, 80, 82, 83, 84, 85, 77,
737 	78, 79, 71, 72, 73, 86, 68, 69,
738 	70, 87, 88, 89, 74, 75, 81, 1,
739 	102, 1, 103, 109, 117, 1, 1, 1,
740 	123, 124, 125
741 };
742 
743 static const char _use_syllable_machine_trans_actions[] = {
744 	1, 0, 0, 0, 0, 4, 0, 0,
745 	0, 0, 0, 5, 0, 0, 0, 0,
746 	0, 0, 0, 0, 0, 0, 0, 0,
747 	0, 0, 0, 0, 0, 0, 0, 0,
748 	0, 0, 0, 6, 7, 0, 8, 9,
749 	0, 0, 10, 0, 0, 0, 0, 0,
750 	0, 0, 0, 0, 0, 0, 0, 0,
751 	0, 0, 0, 0, 0, 0, 0, 0,
752 	0, 0, 0, 0, 0, 11, 0, 12,
753 	0, 0, 0, 0, 0, 0, 0, 0,
754 	0, 0, 0, 0, 0, 0, 0, 0,
755 	0, 0, 0, 0, 0, 0, 0, 0,
756 	13, 0, 14, 0, 15, 16, 17, 0,
757 	18, 19, 20, 0, 0, 0, 0, 0,
758 	0, 0, 0, 0, 0, 0, 0, 0,
759 	0, 0, 0, 0, 0, 0, 0, 0,
760 	0, 0, 0, 0, 0, 0, 0, 21,
761 	0, 22, 0, 0, 0, 23, 24, 25,
762 	0, 0, 0
763 };
764 
765 static const char _use_syllable_machine_to_state_actions[] = {
766 	0, 2, 0, 0, 0, 0, 0, 0,
767 	0, 0, 0, 0, 0, 0, 0, 0,
768 	0, 0, 0, 0, 0, 0, 0, 0,
769 	0, 0, 0, 0, 0, 0, 0, 0,
770 	0, 0, 0, 0, 0, 0, 0, 0,
771 	0, 0, 0, 0, 0, 0, 0, 0,
772 	0, 0, 0, 0, 0, 0, 0, 0,
773 	0, 0, 0, 0, 0, 0, 0, 0,
774 	0, 0, 0, 0, 0, 0, 0, 0,
775 	0, 0, 0, 0, 0, 0, 0, 0,
776 	0, 0, 0, 0, 0, 0, 0, 0,
777 	0, 0, 0, 0, 0, 0, 0, 0,
778 	0, 0, 0, 0, 0, 0, 0, 0,
779 	0, 0, 0, 0, 0, 0, 0, 0,
780 	0, 0, 0, 0, 0, 0, 0, 0,
781 	0, 0, 0, 0, 0, 0, 0
782 };
783 
784 static const char _use_syllable_machine_from_state_actions[] = {
785 	0, 3, 0, 0, 0, 0, 0, 0,
786 	0, 0, 0, 0, 0, 0, 0, 0,
787 	0, 0, 0, 0, 0, 0, 0, 0,
788 	0, 0, 0, 0, 0, 0, 0, 0,
789 	0, 0, 0, 0, 0, 0, 0, 0,
790 	0, 0, 0, 0, 0, 0, 0, 0,
791 	0, 0, 0, 0, 0, 0, 0, 0,
792 	0, 0, 0, 0, 0, 0, 0, 0,
793 	0, 0, 0, 0, 0, 0, 0, 0,
794 	0, 0, 0, 0, 0, 0, 0, 0,
795 	0, 0, 0, 0, 0, 0, 0, 0,
796 	0, 0, 0, 0, 0, 0, 0, 0,
797 	0, 0, 0, 0, 0, 0, 0, 0,
798 	0, 0, 0, 0, 0, 0, 0, 0,
799 	0, 0, 0, 0, 0, 0, 0, 0,
800 	0, 0, 0, 0, 0, 0, 0
801 };
802 
803 static const short _use_syllable_machine_eof_trans[] = {
804 	1, 0, 40, 40, 40, 40, 40, 40,
805 	40, 40, 40, 40, 40, 40, 40, 40,
806 	40, 40, 40, 40, 40, 40, 40, 40,
807 	40, 40, 40, 40, 40, 40, 40, 70,
808 	70, 70, 70, 70, 70, 70, 70, 70,
809 	70, 70, 70, 97, 70, 70, 70, 70,
810 	70, 70, 70, 70, 70, 70, 70, 101,
811 	97, 70, 101, 103, 106, 70, 70, 70,
812 	70, 70, 70, 70, 70, 70, 70, 70,
813 	70, 70, 97, 70, 70, 70, 70, 70,
814 	70, 70, 70, 70, 70, 70, 101, 97,
815 	70, 101, 136, 136, 136, 136, 136, 136,
816 	136, 136, 138, 136, 136, 136, 136, 136,
817 	136, 136, 136, 136, 136, 136, 136, 136,
818 	136, 136, 136, 136, 136, 136, 136, 136,
819 	136, 142, 143, 143, 143, 143, 40
820 };
821 
822 static const int use_syllable_machine_start = 1;
823 static const int use_syllable_machine_first_final = 1;
824 static const int use_syllable_machine_error = -1;
825 
826 static const int use_syllable_machine_en_main = 1;
827 
828 
829 #line 58 "hb-ot-shaper-use-machine.rl"
830 
831 
832 
833 #line 186 "hb-ot-shaper-use-machine.rl"
834 
835 
836 #define found_syllable(syllable_type) \
837   HB_STMT_START { \
838     if (0) fprintf (stderr, "syllable %u..%u %s\n", (*ts).second.first, (*te).second.first, #syllable_type); \
839     for (unsigned i = (*ts).second.first; i < (*te).second.first; ++i) \
840       info[i].syllable() = (syllable_serial << 4) | syllable_type; \
841     syllable_serial++; \
842     if (syllable_serial == 16) syllable_serial = 1; \
843   } HB_STMT_END
844 
845 
846 template <typename Iter>
847 struct machine_index_t :
848   hb_iter_with_fallback_t<machine_index_t<Iter>,
849 			  typename Iter::item_t>
850 {
machine_index_tmachine_index_t851   machine_index_t (const Iter& it) : it (it) {}
machine_index_tmachine_index_t852   machine_index_t (const machine_index_t& o) : hb_iter_with_fallback_t<machine_index_t<Iter>,
853 								       typename Iter::item_t> (),
854 					       it (o.it), is_null (o.is_null) {}
855 
856   static constexpr bool is_random_access_iterator = Iter::is_random_access_iterator;
857   static constexpr bool is_sorted_iterator = Iter::is_sorted_iterator;
858 
__item__machine_index_t859   typename Iter::item_t __item__ () const { return *it; }
__item_at__machine_index_t860   typename Iter::item_t __item_at__ (unsigned i) const { return it[i]; }
__len__machine_index_t861   unsigned __len__ () const { return it.len (); }
__next__machine_index_t862   void __next__ () { ++it; }
__forward__machine_index_t863   void __forward__ (unsigned n) { it += n; }
__prev__machine_index_t864   void __prev__ () { --it; }
__rewind__machine_index_t865   void __rewind__ (unsigned n) { it -= n; }
866 
operator =machine_index_t867   void operator = (unsigned n)
868   {
869     assert (n == 0);
870     is_null = true;
871   }
operator boolmachine_index_t872   explicit operator bool () { return !is_null; }
873 
operator =machine_index_t874   void operator = (const machine_index_t& o)
875   {
876     is_null = o.is_null;
877     unsigned index = (*it).first;
878     unsigned n = (*o.it).first;
879     if (index < n) it += n - index; else if (index > n) it -= index - n;
880   }
operator ==machine_index_t881   bool operator == (const machine_index_t& o) const
882   { return is_null ? o.is_null : !o.is_null && (*it).first == (*o.it).first; }
operator !=machine_index_t883   bool operator != (const machine_index_t& o) const { return !(*this == o); }
884 
885   private:
886   Iter it;
887   bool is_null = false;
888 };
889 struct
890 {
891   template <typename Iter,
892 	    hb_requires (hb_is_iterable (Iter))>
893   machine_index_t<hb_iter_type<Iter>>
operator ()__anonddaa6bf10108894   operator () (Iter&& it) const
895   { return machine_index_t<hb_iter_type<Iter>> (hb_iter (it)); }
896 }
897 HB_FUNCOBJ (machine_index);
898 
899 
900 
901 static bool
not_ccs_default_ignorable(const hb_glyph_info_t & i)902 not_ccs_default_ignorable (const hb_glyph_info_t &i)
903 { return i.use_category() != USE(CGJ); }
904 
905 static inline void
find_syllables_use(hb_buffer_t * buffer)906 find_syllables_use (hb_buffer_t *buffer)
907 {
908   hb_glyph_info_t *info = buffer->info;
909   auto p =
910     + hb_iter (info, buffer->len)
911     | hb_enumerate
912     | hb_filter ([] (const hb_glyph_info_t &i) { return not_ccs_default_ignorable (i); },
913 		 hb_second)
914     | hb_filter ([&] (const hb_pair_t<unsigned, const hb_glyph_info_t &> p)
915 		 {
916 		   if (p.second.use_category() == USE(ZWNJ))
917 		     for (unsigned i = p.first + 1; i < buffer->len; ++i)
918 		       if (not_ccs_default_ignorable (info[i]))
919 			 return !_hb_glyph_info_is_unicode_mark (&info[i]);
920 		   return true;
921 		 })
922     | hb_enumerate
923     | machine_index
924     ;
925   auto pe = p + p.len ();
926   auto eof = +pe;
927   auto ts = +p;
928   auto te = +p;
929   unsigned int act HB_UNUSED;
930   int cs;
931 
932 #line 933 "hb-ot-shaper-use-machine.hh"
933 	{
934 	cs = use_syllable_machine_start;
935 	ts = 0;
936 	te = 0;
937 	act = 0;
938 	}
939 
940 #line 286 "hb-ot-shaper-use-machine.rl"
941 
942 
943   unsigned int syllable_serial = 1;
944 
945 #line 946 "hb-ot-shaper-use-machine.hh"
946 	{
947 	int _slen;
948 	int _trans;
949 	const unsigned char *_keys;
950 	const unsigned char *_inds;
951 	if ( p == pe )
952 		goto _test_eof;
953 _resume:
954 	switch ( _use_syllable_machine_from_state_actions[cs] ) {
955 	case 3:
956 #line 1 "NONE"
957 	{ts = p;}
958 	break;
959 #line 960 "hb-ot-shaper-use-machine.hh"
960 	}
961 
962 	_keys = _use_syllable_machine_trans_keys + (cs<<1);
963 	_inds = _use_syllable_machine_indicies + _use_syllable_machine_index_offsets[cs];
964 
965 	_slen = _use_syllable_machine_key_spans[cs];
966 	_trans = _inds[ _slen > 0 && _keys[0] <=( (*p).second.second.use_category()) &&
967 		( (*p).second.second.use_category()) <= _keys[1] ?
968 		( (*p).second.second.use_category()) - _keys[0] : _slen ];
969 
970 _eof_trans:
971 	cs = _use_syllable_machine_trans_targs[_trans];
972 
973 	if ( _use_syllable_machine_trans_actions[_trans] == 0 )
974 		goto _again;
975 
976 	switch ( _use_syllable_machine_trans_actions[_trans] ) {
977 	case 7:
978 #line 1 "NONE"
979 	{te = p+1;}
980 	break;
981 	case 16:
982 #line 173 "hb-ot-shaper-use-machine.rl"
983 	{te = p+1;{ found_syllable (use_virama_terminated_cluster); }}
984 	break;
985 	case 14:
986 #line 174 "hb-ot-shaper-use-machine.rl"
987 	{te = p+1;{ found_syllable (use_sakot_terminated_cluster); }}
988 	break;
989 	case 12:
990 #line 175 "hb-ot-shaper-use-machine.rl"
991 	{te = p+1;{ found_syllable (use_standard_cluster); }}
992 	break;
993 	case 20:
994 #line 176 "hb-ot-shaper-use-machine.rl"
995 	{te = p+1;{ found_syllable (use_number_joiner_terminated_cluster); }}
996 	break;
997 	case 18:
998 #line 177 "hb-ot-shaper-use-machine.rl"
999 	{te = p+1;{ found_syllable (use_numeral_cluster); }}
1000 	break;
1001 	case 10:
1002 #line 178 "hb-ot-shaper-use-machine.rl"
1003 	{te = p+1;{ found_syllable (use_symbol_cluster); }}
1004 	break;
1005 	case 25:
1006 #line 179 "hb-ot-shaper-use-machine.rl"
1007 	{te = p+1;{ found_syllable (use_hieroglyph_cluster); }}
1008 	break;
1009 	case 5:
1010 #line 181 "hb-ot-shaper-use-machine.rl"
1011 	{te = p+1;{ found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
1012 	break;
1013 	case 4:
1014 #line 182 "hb-ot-shaper-use-machine.rl"
1015 	{te = p+1;{ found_syllable (use_non_cluster); }}
1016 	break;
1017 	case 15:
1018 #line 173 "hb-ot-shaper-use-machine.rl"
1019 	{te = p;p--;{ found_syllable (use_virama_terminated_cluster); }}
1020 	break;
1021 	case 13:
1022 #line 174 "hb-ot-shaper-use-machine.rl"
1023 	{te = p;p--;{ found_syllable (use_sakot_terminated_cluster); }}
1024 	break;
1025 	case 11:
1026 #line 175 "hb-ot-shaper-use-machine.rl"
1027 	{te = p;p--;{ found_syllable (use_standard_cluster); }}
1028 	break;
1029 	case 19:
1030 #line 176 "hb-ot-shaper-use-machine.rl"
1031 	{te = p;p--;{ found_syllable (use_number_joiner_terminated_cluster); }}
1032 	break;
1033 	case 17:
1034 #line 177 "hb-ot-shaper-use-machine.rl"
1035 	{te = p;p--;{ found_syllable (use_numeral_cluster); }}
1036 	break;
1037 	case 9:
1038 #line 178 "hb-ot-shaper-use-machine.rl"
1039 	{te = p;p--;{ found_syllable (use_symbol_cluster); }}
1040 	break;
1041 	case 24:
1042 #line 179 "hb-ot-shaper-use-machine.rl"
1043 	{te = p;p--;{ found_syllable (use_hieroglyph_cluster); }}
1044 	break;
1045 	case 21:
1046 #line 181 "hb-ot-shaper-use-machine.rl"
1047 	{te = p;p--;{ found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
1048 	break;
1049 	case 23:
1050 #line 182 "hb-ot-shaper-use-machine.rl"
1051 	{te = p;p--;{ found_syllable (use_non_cluster); }}
1052 	break;
1053 	case 1:
1054 #line 178 "hb-ot-shaper-use-machine.rl"
1055 	{{p = ((te))-1;}{ found_syllable (use_symbol_cluster); }}
1056 	break;
1057 	case 22:
1058 #line 1 "NONE"
1059 	{	switch( act ) {
1060 	case 8:
1061 	{{p = ((te))-1;} found_syllable (use_non_cluster); }
1062 	break;
1063 	case 9:
1064 	{{p = ((te))-1;} found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }
1065 	break;
1066 	}
1067 	}
1068 	break;
1069 	case 6:
1070 #line 1 "NONE"
1071 	{te = p+1;}
1072 #line 180 "hb-ot-shaper-use-machine.rl"
1073 	{act = 8;}
1074 	break;
1075 	case 8:
1076 #line 1 "NONE"
1077 	{te = p+1;}
1078 #line 181 "hb-ot-shaper-use-machine.rl"
1079 	{act = 9;}
1080 	break;
1081 #line 1082 "hb-ot-shaper-use-machine.hh"
1082 	}
1083 
1084 _again:
1085 	switch ( _use_syllable_machine_to_state_actions[cs] ) {
1086 	case 2:
1087 #line 1 "NONE"
1088 	{ts = 0;}
1089 	break;
1090 #line 1091 "hb-ot-shaper-use-machine.hh"
1091 	}
1092 
1093 	if ( ++p != pe )
1094 		goto _resume;
1095 	_test_eof: {}
1096 	if ( p == eof )
1097 	{
1098 	if ( _use_syllable_machine_eof_trans[cs] > 0 ) {
1099 		_trans = _use_syllable_machine_eof_trans[cs] - 1;
1100 		goto _eof_trans;
1101 	}
1102 	}
1103 
1104 	}
1105 
1106 #line 291 "hb-ot-shaper-use-machine.rl"
1107 
1108 }
1109 
1110 #undef found_syllable
1111 
1112 #endif /* HB_OT_SHAPER_USE_MACHINE_HH */
1113