Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(267)

Side by Side Diff: third_party/harfbuzz-ng/src/hb-ot-shape-complex-indic-machine.hh

Issue 10915172: harfbuzz-ng roll (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 1
2 #line 1 "hb-ot-shape-complex-indic-machine.rl" 2 #line 1 "hb-ot-shape-complex-indic-machine.rl"
3 /* 3 /*
4 * Copyright © 2011,2012 Google, Inc. 4 * Copyright © 2011,2012 Google, Inc.
5 * 5 *
6 * This is part of HarfBuzz, a text shaping library. 6 * This is part of HarfBuzz, a text shaping library.
7 * 7 *
8 * Permission is hereby granted, without written agreement and without 8 * Permission is hereby granted, without written agreement and without
9 * license or royalty fees, to use, copy, modify, and distribute this 9 * license or royalty fees, to use, copy, modify, and distribute this
10 * software and its documentation for any purpose, provided that the 10 * software and its documentation for any purpose, provided that the
(...skipping 13 matching lines...) Expand all
24 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 24 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
25 * 25 *
26 * Google Author(s): Behdad Esfahbod 26 * Google Author(s): Behdad Esfahbod
27 */ 27 */
28 28
29 #ifndef HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH 29 #ifndef HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH
30 #define HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH 30 #define HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH
31 31
32 #include "hb-private.hh" 32 #include "hb-private.hh"
33 33
34 HB_BEGIN_DECLS 34
35 35 #line 36 "hb-ot-shape-complex-indic-machine.hh.tmp"
36
37 #line 38 "hb-ot-shape-complex-indic-machine.hh.tmp"
38 static const unsigned char _indic_syllable_machine_trans_keys[] = { 36 static const unsigned char _indic_syllable_machine_trans_keys[] = {
39 » 5u, 5u, 1u, 2u, 1u, 2u, 5u, 5u, 1u, 5u, 1u, 2u, 5u, 5u, 1u, 13u, 37 » 1u, 16u, 13u, 13u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u,
40 » 4u, 11u, 4u, 11u, 5u, 11u, 1u, 10u, 1u, 10u, 10u, 10u, 10u, 10u, 4u, 10u , 38 » 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 4u, 4u, 6u, 6u,
41 » 5u, 10u, 8u, 10u, 5u, 10u, 6u, 10u, 9u, 10u, 4u, 11u, 1u, 13u, 4u, 10u, 39 » 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u,
42 » 4u, 10u, 5u, 10u, 4u, 10u, 5u, 10u, 8u, 10u, 10u, 10u, 10u, 10u, 4u, 10u , 40 » 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u,
43 » 4u, 10u, 5u, 10u, 4u, 10u, 5u, 10u, 8u, 10u, 10u, 10u, 10u, 10u, 0 41 » 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 1u, 16u, 13u, 13u, 5u, 7u, 5u, 7u,
42 » 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u,
43 » 5u, 7u, 7u, 7u, 4u, 4u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u,
44 » 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u,
45 » 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u,
46 » 1u, 16u, 13u, 13u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u,
47 » 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 4u, 4u, 6u, 6u,
48 » 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u,
49 » 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u,
50 » 4u, 14u, 4u, 14u, 4u, 14u, 1u, 16u, 13u, 13u, 5u, 7u, 5u, 7u, 7u, 7u,
51 » 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u,
52 » 7u, 7u, 4u, 4u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u,
53 » 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u,
54 » 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 1u, 16u,
55 » 3u, 14u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, 4u, 14u, 1u, 16u,
56 » 3u, 14u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, 4u, 14u, 1u, 16u,
57 » 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 8u, 14u, 5u, 9u, 9u, 9u, 9u, 9u,
58 » 3u, 13u, 3u, 9u, 8u, 9u, 3u, 9u, 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u,
59 » 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u,
60 » 4u, 14u, 6u, 14u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u,
61 » 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u,
62 » 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u,
63 » 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
64 » 1u, 16u, 3u, 14u, 3u, 14u, 3u, 14u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 14u,
65 » 3u, 14u, 4u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 14u,
66 » 3u, 14u, 4u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 8u, 14u,
67 » 5u, 9u, 9u, 9u, 9u, 9u, 3u, 13u, 3u, 9u, 8u, 9u, 3u, 9u, 3u, 13u,
68 » 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u,
69 » 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 6u, 14u, 3u, 14u, 1u, 16u, 3u, 14u,
70 » 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u,
71 » 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u,
72 » 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u,
73 » 1u, 16u, 1u, 16u, 4u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, 4u, 14u, 1u, 16u,
74 » 3u, 14u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, 4u, 14u, 1u, 16u,
75 » 3u, 14u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u,
76 » 8u, 14u, 5u, 9u, 9u, 9u, 9u, 9u, 3u, 13u, 3u, 9u, 8u, 9u, 3u, 9u,
77 » 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u,
78 » 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 6u, 14u, 3u, 14u, 1u, 16u,
79 » 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u,
80 » 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u,
81 » 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u,
82 » 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 4u, 14u, 3u, 14u, 4u, 14u, 3u, 14u,
83 » 3u, 14u, 4u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 14u,
84 » 3u, 14u, 4u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 14u,
85 » 3u, 14u, 4u, 14u, 5u, 14u, 8u, 14u, 5u, 9u, 9u, 9u, 9u, 9u, 3u, 13u,
86 » 3u, 9u, 8u, 9u, 3u, 9u, 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u,
87 » 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u,
88 » 6u, 14u, 3u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u,
89 » 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
90 » 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
91 » 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u,
92 » 1u, 16u, 3u, 14u, 1u, 16u, 0
44 }; 93 };
45 94
46 static const char _indic_syllable_machine_key_spans[] = { 95 static const char _indic_syllable_machine_key_spans[] = {
47 » 1, 2, 2, 1, 5, 2, 1, 13, 96 » 16, 1, 3, 3, 1, 3, 3, 1,
48 » 8, 8, 7, 10, 10, 1, 1, 7, 97 » 3, 3, 1, 3, 3, 1, 1, 1,
49 » 6, 3, 6, 5, 2, 8, 13, 7, 98 » 1, 4, 1, 1, 4, 1, 1, 4,
50 » 7, 6, 7, 6, 3, 1, 1, 7, 99 » 1, 1, 11, 11, 11, 11, 11, 11,
51 » 7, 6, 7, 6, 3, 1, 1 100 » 11, 11, 11, 11, 16, 1, 3, 3,
101 » 1, 3, 3, 1, 3, 3, 1, 3,
102 » 3, 1, 1, 1, 1, 4, 1, 1,
103 » 4, 1, 1, 4, 1, 1, 11, 11,
104 » 11, 11, 11, 11, 11, 11, 11, 11,
105 » 16, 1, 3, 3, 1, 3, 3, 1,
106 » 3, 3, 1, 3, 3, 1, 1, 1,
107 » 1, 4, 1, 1, 4, 1, 1, 4,
108 » 1, 1, 11, 11, 11, 11, 11, 11,
109 » 11, 11, 11, 16, 1, 3, 3, 1,
110 » 3, 3, 1, 3, 3, 1, 3, 3,
111 » 1, 1, 1, 1, 4, 1, 1, 4,
112 » 1, 1, 4, 1, 1, 11, 11, 11,
113 » 11, 11, 11, 11, 11, 11, 11, 16,
114 » 12, 12, 11, 16, 12, 12, 11, 16,
115 » 12, 12, 11, 16, 12, 12, 11, 16,
116 » 12, 12, 11, 10, 7, 5, 1, 1,
117 » 11, 7, 2, 7, 11, 12, 12, 11,
118 » 10, 12, 11, 10, 12, 11, 10, 12,
119 » 11, 9, 12, 11, 16, 12, 12, 16,
120 » 16, 16, 16, 16, 12, 12, 16, 16,
121 » 16, 16, 16, 12, 12, 16, 16, 16,
122 » 16, 16, 12, 12, 16, 16, 16, 16,
123 » 16, 12, 12, 12, 12, 11, 16, 12,
124 » 12, 11, 16, 12, 12, 11, 16, 12,
125 » 12, 11, 16, 12, 12, 11, 10, 7,
126 » 5, 1, 1, 11, 7, 2, 7, 11,
127 » 12, 12, 11, 10, 12, 11, 10, 12,
128 » 11, 10, 12, 11, 9, 12, 16, 12,
129 » 12, 16, 16, 16, 16, 16, 12, 12,
130 » 16, 16, 16, 16, 16, 12, 12, 16,
131 » 16, 16, 16, 16, 12, 12, 16, 16,
132 » 16, 16, 11, 16, 12, 12, 11, 16,
133 » 12, 12, 11, 16, 12, 12, 11, 16,
134 » 12, 12, 11, 16, 12, 12, 11, 10,
135 » 7, 5, 1, 1, 11, 7, 2, 7,
136 » 11, 12, 12, 11, 10, 12, 11, 10,
137 » 12, 11, 10, 12, 11, 9, 12, 16,
138 » 12, 12, 16, 16, 16, 16, 16, 12,
139 » 12, 16, 16, 16, 16, 16, 12, 12,
140 » 16, 16, 16, 16, 16, 12, 12, 16,
141 » 16, 16, 16, 16, 11, 12, 11, 12,
142 » 12, 11, 16, 12, 12, 11, 16, 12,
143 » 12, 11, 16, 12, 12, 11, 16, 12,
144 » 12, 11, 10, 7, 5, 1, 1, 11,
145 » 7, 2, 7, 11, 12, 12, 11, 10,
146 » 12, 11, 10, 12, 11, 10, 12, 11,
147 » 9, 12, 16, 12, 12, 16, 16, 16,
148 » 16, 16, 12, 12, 16, 16, 16, 16,
149 » 16, 12, 12, 16, 16, 16, 16, 16,
150 » 12, 12, 16, 16, 16, 16, 16, 12,
151 » 16, 12, 16
52 }; 152 };
53 153
54 static const unsigned char _indic_syllable_machine_index_offsets[] = { 154 static const short _indic_syllable_machine_index_offsets[] = {
55 » 0, 2, 5, 8, 10, 16, 19, 21, 155 » 0, 17, 19, 23, 27, 29, 33, 37,
56 » 35, 44, 53, 61, 72, 83, 85, 87, 156 » 39, 43, 47, 49, 53, 57, 59, 61,
57 » 95, 102, 106, 113, 119, 122, 131, 145, 157 » 63, 65, 70, 72, 74, 79, 81, 83,
58 » 153, 161, 168, 176, 183, 187, 189, 191, 158 » 88, 90, 92, 104, 116, 128, 140, 152,
59 » 199, 207, 214, 222, 229, 233, 235 159 » 164, 176, 188, 200, 212, 229, 231, 235,
160 » 239, 241, 245, 249, 251, 255, 259, 261,
161 » 265, 269, 271, 273, 275, 277, 282, 284,
162 » 286, 291, 293, 295, 300, 302, 304, 316,
163 » 328, 340, 352, 364, 376, 388, 400, 412,
164 » 424, 441, 443, 447, 451, 453, 457, 461,
165 » 463, 467, 471, 473, 477, 481, 483, 485,
166 » 487, 489, 494, 496, 498, 503, 505, 507,
167 » 512, 514, 516, 528, 540, 552, 564, 576,
168 » 588, 600, 612, 624, 641, 643, 647, 651,
169 » 653, 657, 661, 663, 667, 671, 673, 677,
170 » 681, 683, 685, 687, 689, 694, 696, 698,
171 » 703, 705, 707, 712, 714, 716, 728, 740,
172 » 752, 764, 776, 788, 800, 812, 824, 836,
173 » 853, 866, 879, 891, 908, 921, 934, 946,
174 » 963, 976, 989, 1001, 1018, 1031, 1044, 1056,
175 » 1073, 1086, 1099, 1111, 1122, 1130, 1136, 1138,
176 » 1140, 1152, 1160, 1163, 1171, 1183, 1196, 1209,
177 » 1221, 1232, 1245, 1257, 1268, 1281, 1293, 1304,
178 » 1317, 1329, 1339, 1352, 1364, 1381, 1394, 1407,
179 » 1424, 1441, 1458, 1475, 1492, 1505, 1518, 1535,
180 » 1552, 1569, 1586, 1603, 1616, 1629, 1646, 1663,
181 » 1680, 1697, 1714, 1727, 1740, 1757, 1774, 1791,
182 » 1808, 1825, 1838, 1851, 1864, 1877, 1889, 1906,
183 » 1919, 1932, 1944, 1961, 1974, 1987, 1999, 2016,
184 » 2029, 2042, 2054, 2071, 2084, 2097, 2109, 2120,
185 » 2128, 2134, 2136, 2138, 2150, 2158, 2161, 2169,
186 » 2181, 2194, 2207, 2219, 2230, 2243, 2255, 2266,
187 » 2279, 2291, 2302, 2315, 2327, 2337, 2350, 2367,
188 » 2380, 2393, 2410, 2427, 2444, 2461, 2478, 2491,
189 » 2504, 2521, 2538, 2555, 2572, 2589, 2602, 2615,
190 » 2632, 2649, 2666, 2683, 2700, 2713, 2726, 2743,
191 » 2760, 2777, 2794, 2806, 2823, 2836, 2849, 2861,
192 » 2878, 2891, 2904, 2916, 2933, 2946, 2959, 2971,
193 » 2988, 3001, 3014, 3026, 3043, 3056, 3069, 3081,
194 » 3092, 3100, 3106, 3108, 3110, 3122, 3130, 3133,
195 » 3141, 3153, 3166, 3179, 3191, 3202, 3215, 3227,
196 » 3238, 3251, 3263, 3274, 3287, 3299, 3309, 3322,
197 » 3339, 3352, 3365, 3382, 3399, 3416, 3433, 3450,
198 » 3463, 3476, 3493, 3510, 3527, 3544, 3561, 3574,
199 » 3587, 3604, 3621, 3638, 3655, 3672, 3685, 3698,
200 » 3715, 3732, 3749, 3766, 3783, 3795, 3808, 3820,
201 » 3833, 3846, 3858, 3875, 3888, 3901, 3913, 3930,
202 » 3943, 3956, 3968, 3985, 3998, 4011, 4023, 4040,
203 » 4053, 4066, 4078, 4089, 4097, 4103, 4105, 4107,
204 » 4119, 4127, 4130, 4138, 4150, 4163, 4176, 4188,
205 » 4199, 4212, 4224, 4235, 4248, 4260, 4271, 4284,
206 » 4296, 4306, 4319, 4336, 4349, 4362, 4379, 4396,
207 » 4413, 4430, 4447, 4460, 4473, 4490, 4507, 4524,
208 » 4541, 4558, 4571, 4584, 4601, 4618, 4635, 4652,
209 » 4669, 4682, 4695, 4712, 4729, 4746, 4763, 4780,
210 » 4793, 4810, 4823
60 }; 211 };
61 212
62 static const char _indic_syllable_machine_indicies[] = { 213 static const short _indic_syllable_machine_indicies[] = {
63 1, 0, 2, 2, 0, 4, 4, 3, 214 1, 2, 0, 0, 0, 0, 0, 0,
64 5, 3, 4, 4, 3, 3, 5, 3, 215 0, 0, 0, 0, 0, 0, 0, 1,
65 7, 7, 6, 8, 6, 2, 10, 11, 216 0, 3, 0, 4, 4, 5, 0, 6,
66 9, 9, 9, 9, 9, 9, 9, 9, 217 6, 5, 0, 5, 0, 7, 7, 8,
67 12, 12, 9, 14, 15, 16, 16, 17, 218 0, 9, 9, 8, 0, 8, 0, 10,
68 18, 19, 20, 13, 21, 15, 16, 16, 219 10, 11, 0, 12, 12, 11, 0, 11,
69 17, 18, 19, 20, 13, 15, 16, 16, 220 0, 13, 13, 14, 0, 15, 15, 14,
70 17, 18, 19, 20, 13, 2, 2, 13, 221 0, 14, 0, 16, 0, 17, 0, 18,
71 13, 13, 22, 22, 13, 18, 19, 13, 222 0, 19, 13, 13, 14, 0, 20, 0,
72 2, 2, 13, 13, 13, 13, 13, 13, 223 21, 0, 22, 10, 10, 11, 0, 23,
73 18, 19, 13, 19, 13, 23, 13, 24, 224 0, 24, 0, 25, 7, 7, 8, 0,
74 25, 13, 13, 17, 18, 19, 13, 25, 225 26, 0, 27, 0, 28, 4, 4, 5,
75 13, 13, 17, 18, 19, 13, 17, 18, 226 0, 0, 0, 0, 0, 0, 28, 0,
76 19, 13, 26, 13, 13, 17, 18, 19, 227 28, 4, 4, 5, 0, 0, 0, 0,
77 13, 27, 27, 13, 18, 19, 13, 18, 228 0, 29, 28, 0, 30, 4, 4, 5,
78 19, 13, 14, 28, 16, 16, 17, 18, 229 0, 0, 0, 0, 0, 0, 30, 0,
79 19, 20, 13, 2, 2, 11, 13, 13, 230 30, 4, 4, 5, 0, 0, 0, 0,
80 22, 22, 13, 18, 19, 13, 12, 12, 231 0, 31, 30, 0, 32, 4, 4, 5,
81 13, 30, 5, 31, 32, 33, 34, 35, 232 0, 0, 0, 0, 0, 0, 32, 0,
82 29, 4, 5, 31, 32, 33, 34, 35, 233 32, 4, 4, 5, 0, 0, 0, 0,
83 29, 5, 31, 32, 33, 34, 35, 29, 234 0, 33, 32, 0, 34, 4, 4, 5,
84 36, 37, 29, 29, 33, 34, 35, 29, 235 0, 0, 0, 0, 0, 0, 34, 0,
85 37, 29, 29, 33, 34, 35, 29, 33, 236 34, 4, 4, 5, 0, 0, 0, 0,
86 34, 35, 29, 35, 29, 38, 29, 40, 237 0, 35, 34, 0, 36, 4, 4, 5,
87 8, 41, 41, 42, 43, 44, 39, 7, 238 0, 0, 0, 0, 0, 0, 36, 0,
88 8, 41, 41, 42, 43, 44, 39, 8, 239 36, 4, 4, 5, 0, 0, 0, 0,
89 41, 41, 42, 43, 44, 39, 45, 46, 240 0, 37, 36, 0, 39, 40, 38, 38,
90 39, 39, 42, 43, 44, 39, 46, 39, 241 38, 38, 38, 38, 38, 38, 38, 38,
91 39, 42, 43, 44, 39, 42, 43, 44, 242 38, 38, 38, 39, 38, 41, 38, 42,
92 39, 44, 39, 47, 39, 0 243 42, 43, 38, 44, 44, 43, 38, 43,
244 38, 45, 45, 46, 38, 47, 47, 46,
245 38, 46, 38, 48, 48, 49, 38, 50,
246 50, 49, 38, 49, 38, 51, 51, 52,
247 38, 53, 53, 52, 38, 52, 38, 54,
248 38, 55, 38, 56, 38, 57, 51, 51,
249 52, 38, 58, 38, 59, 38, 60, 48,
250 48, 49, 38, 61, 38, 62, 38, 63,
251 45, 45, 46, 38, 64, 38, 65, 38,
252 66, 42, 42, 43, 38, 38, 38, 38,
253 38, 38, 66, 38, 66, 42, 42, 43,
254 38, 38, 38, 38, 38, 67, 66, 38,
255 68, 42, 42, 43, 38, 38, 38, 38,
256 38, 38, 68, 38, 68, 42, 42, 43,
257 38, 38, 38, 38, 38, 69, 68, 38,
258 70, 42, 42, 43, 38, 38, 38, 38,
259 38, 38, 70, 38, 70, 42, 42, 43,
260 38, 38, 38, 38, 38, 71, 70, 38,
261 72, 42, 42, 43, 38, 38, 38, 38,
262 38, 38, 72, 38, 72, 42, 42, 43,
263 38, 38, 38, 38, 38, 73, 72, 38,
264 74, 42, 42, 43, 38, 38, 38, 38,
265 38, 38, 74, 38, 74, 42, 42, 43,
266 38, 38, 38, 38, 38, 75, 74, 38,
267 77, 78, 76, 76, 76, 76, 76, 76,
268 76, 76, 76, 76, 76, 76, 76, 77,
269 76, 79, 76, 80, 80, 81, 76, 83,
270 83, 81, 82, 81, 82, 84, 84, 85,
271 76, 86, 86, 85, 76, 85, 76, 87,
272 87, 88, 76, 89, 89, 88, 76, 88,
273 76, 90, 90, 91, 76, 92, 92, 91,
274 76, 91, 76, 93, 76, 94, 76, 95,
275 76, 96, 90, 90, 91, 76, 97, 76,
276 98, 76, 99, 87, 87, 88, 76, 100,
277 76, 101, 76, 102, 84, 84, 85, 76,
278 103, 76, 104, 76, 105, 80, 80, 81,
279 76, 76, 76, 76, 76, 76, 105, 76,
280 105, 80, 80, 81, 76, 76, 76, 76,
281 76, 106, 105, 76, 107, 80, 80, 81,
282 76, 76, 76, 76, 76, 76, 107, 76,
283 107, 80, 80, 81, 76, 76, 76, 76,
284 76, 108, 107, 76, 109, 80, 80, 81,
285 76, 76, 76, 76, 76, 76, 109, 76,
286 109, 80, 80, 81, 76, 76, 76, 76,
287 76, 110, 109, 76, 111, 80, 80, 81,
288 76, 76, 76, 76, 76, 76, 111, 76,
289 111, 80, 80, 81, 76, 76, 76, 76,
290 76, 112, 111, 76, 113, 80, 80, 81,
291 76, 76, 76, 76, 76, 76, 113, 76,
292 115, 116, 114, 114, 114, 114, 114, 114,
293 114, 114, 114, 114, 114, 114, 114, 115,
294 114, 117, 114, 118, 118, 119, 114, 120,
295 120, 119, 114, 119, 114, 121, 121, 122,
296 114, 123, 123, 122, 114, 122, 114, 124,
297 124, 125, 114, 126, 126, 125, 114, 125,
298 114, 127, 127, 128, 114, 129, 129, 128,
299 114, 128, 114, 130, 114, 131, 114, 132,
300 114, 133, 127, 127, 128, 114, 134, 114,
301 135, 114, 136, 124, 124, 125, 114, 137,
302 114, 138, 114, 139, 121, 121, 122, 114,
303 140, 114, 141, 114, 142, 118, 118, 119,
304 114, 114, 114, 114, 114, 114, 142, 114,
305 142, 118, 118, 119, 114, 114, 114, 114,
306 114, 143, 142, 114, 144, 118, 118, 119,
307 114, 114, 114, 114, 114, 114, 144, 114,
308 144, 118, 118, 119, 114, 114, 114, 114,
309 114, 145, 144, 114, 146, 118, 118, 119,
310 114, 114, 114, 114, 114, 114, 146, 114,
311 146, 118, 118, 119, 114, 114, 114, 114,
312 114, 147, 146, 114, 148, 118, 118, 119,
313 114, 114, 114, 114, 114, 114, 148, 114,
314 148, 118, 118, 119, 114, 114, 114, 114,
315 114, 149, 148, 114, 150, 118, 118, 119,
316 114, 114, 114, 114, 114, 114, 150, 114,
317 150, 118, 118, 119, 114, 114, 114, 114,
318 114, 151, 150, 114, 153, 154, 155, 156,
319 157, 158, 81, 159, 160, 152, 161, 161,
320 162, 163, 164, 165, 152, 167, 168, 169,
321 170, 5, 171, 172, 173, 166, 166, 37,
322 174, 166, 175, 168, 176, 176, 5, 171,
323 172, 173, 166, 166, 166, 174, 166, 168,
324 176, 176, 5, 171, 172, 173, 166, 166,
325 166, 174, 166, 177, 166, 166, 166, 18,
326 178, 166, 171, 172, 166, 166, 166, 166,
327 179, 166, 177, 166, 180, 181, 182, 183,
328 5, 171, 172, 173, 166, 166, 35, 184,
329 166, 185, 181, 186, 186, 5, 171, 172,
330 173, 166, 166, 166, 184, 166, 181, 186,
331 186, 5, 171, 172, 173, 166, 166, 166,
332 184, 166, 187, 166, 166, 166, 18, 188,
333 166, 171, 172, 166, 166, 166, 166, 179,
334 166, 187, 166, 189, 190, 191, 192, 5,
335 171, 172, 173, 166, 166, 33, 193, 166,
336 194, 190, 195, 195, 5, 171, 172, 173,
337 166, 166, 166, 193, 166, 190, 195, 195,
338 5, 171, 172, 173, 166, 166, 166, 193,
339 166, 196, 166, 166, 166, 18, 197, 166,
340 171, 172, 166, 166, 166, 166, 179, 166,
341 196, 166, 198, 199, 200, 201, 5, 171,
342 172, 173, 166, 166, 31, 202, 166, 203,
343 199, 204, 204, 5, 171, 172, 173, 166,
344 166, 166, 202, 166, 199, 204, 204, 5,
345 171, 172, 173, 166, 166, 166, 202, 166,
346 205, 166, 166, 166, 18, 206, 166, 171,
347 172, 166, 166, 166, 166, 179, 166, 205,
348 166, 207, 208, 209, 210, 5, 171, 172,
349 173, 166, 166, 29, 211, 166, 212, 208,
350 213, 213, 5, 171, 172, 173, 166, 166,
351 166, 211, 166, 208, 213, 213, 5, 171,
352 172, 173, 166, 166, 166, 211, 166, 18,
353 214, 166, 171, 172, 166, 166, 166, 166,
354 179, 166, 171, 172, 166, 166, 166, 166,
355 179, 166, 215, 166, 166, 166, 172, 166,
356 172, 166, 216, 166, 217, 166, 218, 219,
357 166, 171, 172, 166, 166, 166, 3, 166,
358 2, 166, 166, 166, 166, 171, 172, 166,
359 171, 172, 166, 217, 166, 166, 166, 166,
360 171, 172, 166, 217, 166, 218, 166, 166,
361 171, 172, 166, 166, 166, 3, 166, 18,
362 166, 220, 220, 5, 171, 172, 166, 166,
363 166, 166, 179, 166, 221, 27, 222, 223,
364 8, 171, 172, 166, 166, 166, 166, 179,
365 166, 27, 222, 223, 8, 171, 172, 166,
366 166, 166, 166, 179, 166, 222, 222, 8,
367 171, 172, 166, 166, 166, 166, 179, 166,
368 224, 24, 225, 226, 11, 171, 172, 166,
369 166, 166, 166, 179, 166, 24, 225, 226,
370 11, 171, 172, 166, 166, 166, 166, 179,
371 166, 225, 225, 11, 171, 172, 166, 166,
372 166, 166, 179, 166, 227, 21, 228, 229,
373 14, 171, 172, 166, 166, 166, 166, 179,
374 166, 21, 228, 229, 14, 171, 172, 166,
375 166, 166, 166, 179, 166, 228, 228, 14,
376 171, 172, 166, 166, 166, 166, 179, 166,
377 230, 18, 166, 231, 166, 171, 172, 166,
378 166, 166, 166, 179, 166, 18, 166, 231,
379 166, 171, 172, 166, 166, 166, 166, 179,
380 166, 232, 166, 171, 172, 166, 166, 166,
381 166, 179, 166, 18, 166, 166, 166, 166,
382 171, 172, 166, 166, 166, 166, 179, 166,
383 208, 213, 213, 5, 171, 172, 166, 166,
384 166, 166, 211, 166, 1, 2, 166, 166,
385 18, 214, 166, 171, 172, 166, 166, 166,
386 166, 179, 166, 1, 166, 207, 208, 213,
387 213, 5, 171, 172, 173, 166, 166, 166,
388 211, 166, 207, 208, 209, 213, 5, 171,
389 172, 173, 166, 166, 29, 211, 166, 205,
390 166, 233, 166, 220, 220, 5, 171, 172,
391 166, 166, 166, 166, 179, 166, 205, 166,
392 205, 166, 166, 166, 166, 166, 166, 171,
393 172, 166, 166, 166, 166, 179, 166, 205,
394 166, 205, 166, 166, 166, 166, 234, 166,
395 171, 172, 166, 166, 166, 166, 179, 166,
396 205, 166, 205, 166, 233, 166, 166, 166,
397 166, 171, 172, 166, 166, 166, 166, 179,
398 166, 205, 166, 205, 2, 166, 166, 18,
399 206, 166, 171, 172, 166, 166, 166, 166,
400 179, 166, 205, 166, 198, 199, 204, 204,
401 5, 171, 172, 173, 166, 166, 166, 202,
402 166, 198, 199, 200, 204, 5, 171, 172,
403 173, 166, 166, 31, 202, 166, 196, 166,
404 235, 166, 220, 220, 5, 171, 172, 166,
405 166, 166, 166, 179, 166, 196, 166, 196,
406 166, 166, 166, 166, 166, 166, 171, 172,
407 166, 166, 166, 166, 179, 166, 196, 166,
408 196, 166, 166, 166, 166, 236, 166, 171,
409 172, 166, 166, 166, 166, 179, 166, 196,
410 166, 196, 166, 235, 166, 166, 166, 166,
411 171, 172, 166, 166, 166, 166, 179, 166,
412 196, 166, 196, 2, 166, 166, 18, 197,
413 166, 171, 172, 166, 166, 166, 166, 179,
414 166, 196, 166, 189, 190, 195, 195, 5,
415 171, 172, 173, 166, 166, 166, 193, 166,
416 189, 190, 191, 195, 5, 171, 172, 173,
417 166, 166, 33, 193, 166, 187, 166, 237,
418 166, 220, 220, 5, 171, 172, 166, 166,
419 166, 166, 179, 166, 187, 166, 187, 166,
420 166, 166, 166, 166, 166, 171, 172, 166,
421 166, 166, 166, 179, 166, 187, 166, 187,
422 166, 166, 166, 166, 238, 166, 171, 172,
423 166, 166, 166, 166, 179, 166, 187, 166,
424 187, 166, 237, 166, 166, 166, 166, 171,
425 172, 166, 166, 166, 166, 179, 166, 187,
426 166, 187, 2, 166, 166, 18, 188, 166,
427 171, 172, 166, 166, 166, 166, 179, 166,
428 187, 166, 180, 181, 186, 186, 5, 171,
429 172, 173, 166, 166, 166, 184, 166, 180,
430 181, 182, 186, 5, 171, 172, 173, 166,
431 166, 35, 184, 166, 177, 166, 239, 166,
432 220, 220, 5, 171, 172, 166, 166, 166,
433 166, 179, 166, 177, 166, 177, 166, 166,
434 166, 166, 166, 166, 171, 172, 166, 166,
435 166, 166, 179, 166, 177, 166, 177, 166,
436 166, 166, 166, 240, 166, 171, 172, 166,
437 166, 166, 166, 179, 166, 177, 166, 177,
438 166, 239, 166, 166, 166, 166, 171, 172,
439 166, 166, 166, 166, 179, 166, 177, 166,
440 177, 2, 166, 166, 18, 178, 166, 171,
441 172, 166, 166, 166, 166, 179, 166, 177,
442 166, 167, 168, 176, 176, 5, 171, 172,
443 173, 166, 166, 166, 174, 166, 167, 168,
444 169, 176, 5, 171, 172, 173, 166, 166,
445 37, 174, 166, 242, 243, 244, 245, 43,
446 246, 247, 241, 241, 241, 75, 248, 241,
447 249, 243, 250, 245, 43, 246, 247, 241,
448 241, 241, 241, 248, 241, 243, 250, 245,
449 43, 246, 247, 241, 241, 241, 241, 248,
450 241, 251, 241, 241, 241, 56, 252, 241,
451 246, 247, 241, 241, 241, 241, 253, 241,
452 251, 241, 254, 255, 256, 257, 43, 246,
453 247, 241, 241, 241, 73, 258, 241, 259,
454 255, 260, 260, 43, 246, 247, 241, 241,
455 241, 241, 258, 241, 255, 260, 260, 43,
456 246, 247, 241, 241, 241, 241, 258, 241,
457 261, 241, 241, 241, 56, 262, 241, 246,
458 247, 241, 241, 241, 241, 253, 241, 261,
459 241, 263, 264, 265, 266, 43, 246, 247,
460 241, 241, 241, 71, 267, 241, 268, 264,
461 269, 269, 43, 246, 247, 241, 241, 241,
462 241, 267, 241, 264, 269, 269, 43, 246,
463 247, 241, 241, 241, 241, 267, 241, 270,
464 241, 241, 241, 56, 271, 241, 246, 247,
465 241, 241, 241, 241, 253, 241, 270, 241,
466 272, 273, 274, 275, 43, 246, 247, 241,
467 241, 241, 69, 276, 241, 277, 273, 278,
468 278, 43, 246, 247, 241, 241, 241, 241,
469 276, 241, 273, 278, 278, 43, 246, 247,
470 241, 241, 241, 241, 276, 241, 279, 241,
471 241, 241, 56, 280, 241, 246, 247, 241,
472 241, 241, 241, 253, 241, 279, 241, 281,
473 282, 283, 284, 43, 246, 247, 241, 241,
474 241, 67, 285, 241, 286, 282, 287, 287,
475 43, 246, 247, 241, 241, 241, 241, 285,
476 241, 282, 287, 287, 43, 246, 247, 241,
477 241, 241, 241, 285, 241, 56, 288, 241,
478 246, 247, 241, 241, 241, 241, 253, 241,
479 246, 247, 241, 241, 241, 241, 253, 241,
480 289, 241, 241, 241, 247, 241, 247, 241,
481 290, 241, 291, 241, 292, 293, 241, 246,
482 247, 241, 241, 241, 41, 241, 40, 241,
483 241, 241, 241, 246, 247, 241, 246, 247,
484 241, 291, 241, 241, 241, 241, 246, 247,
485 241, 291, 241, 292, 241, 241, 246, 247,
486 241, 241, 241, 41, 241, 56, 241, 294,
487 294, 43, 246, 247, 241, 241, 241, 241,
488 253, 241, 295, 65, 296, 297, 46, 246,
489 247, 241, 241, 241, 241, 253, 241, 65,
490 296, 297, 46, 246, 247, 241, 241, 241,
491 241, 253, 241, 296, 296, 46, 246, 247,
492 241, 241, 241, 241, 253, 241, 298, 62,
493 299, 300, 49, 246, 247, 241, 241, 241,
494 241, 253, 241, 62, 299, 300, 49, 246,
495 247, 241, 241, 241, 241, 253, 241, 299,
496 299, 49, 246, 247, 241, 241, 241, 241,
497 253, 241, 301, 59, 302, 303, 52, 246,
498 247, 241, 241, 241, 241, 253, 241, 59,
499 302, 303, 52, 246, 247, 241, 241, 241,
500 241, 253, 241, 302, 302, 52, 246, 247,
501 241, 241, 241, 241, 253, 241, 304, 56,
502 241, 305, 241, 246, 247, 241, 241, 241,
503 241, 253, 241, 56, 241, 305, 241, 246,
504 247, 241, 241, 241, 241, 253, 241, 306,
505 241, 246, 247, 241, 241, 241, 241, 253,
506 241, 56, 241, 241, 241, 241, 246, 247,
507 241, 241, 241, 241, 253, 241, 39, 40,
508 241, 241, 56, 288, 241, 246, 247, 241,
509 241, 241, 241, 253, 241, 39, 241, 281,
510 282, 287, 287, 43, 246, 247, 241, 241,
511 241, 241, 285, 241, 281, 282, 283, 287,
512 43, 246, 247, 241, 241, 241, 67, 285,
513 241, 279, 241, 307, 241, 294, 294, 43,
514 246, 247, 241, 241, 241, 241, 253, 241,
515 279, 241, 279, 241, 241, 241, 241, 241,
516 241, 246, 247, 241, 241, 241, 241, 253,
517 241, 279, 241, 279, 241, 241, 241, 241,
518 308, 241, 246, 247, 241, 241, 241, 241,
519 253, 241, 279, 241, 279, 241, 307, 241,
520 241, 241, 241, 246, 247, 241, 241, 241,
521 241, 253, 241, 279, 241, 279, 40, 241,
522 241, 56, 280, 241, 246, 247, 241, 241,
523 241, 241, 253, 241, 279, 241, 272, 273,
524 278, 278, 43, 246, 247, 241, 241, 241,
525 241, 276, 241, 272, 273, 274, 278, 43,
526 246, 247, 241, 241, 241, 69, 276, 241,
527 270, 241, 309, 241, 294, 294, 43, 246,
528 247, 241, 241, 241, 241, 253, 241, 270,
529 241, 270, 241, 241, 241, 241, 241, 241,
530 246, 247, 241, 241, 241, 241, 253, 241,
531 270, 241, 270, 241, 241, 241, 241, 310,
532 241, 246, 247, 241, 241, 241, 241, 253,
533 241, 270, 241, 270, 241, 309, 241, 241,
534 241, 241, 246, 247, 241, 241, 241, 241,
535 253, 241, 270, 241, 270, 40, 241, 241,
536 56, 271, 241, 246, 247, 241, 241, 241,
537 241, 253, 241, 270, 241, 263, 264, 269,
538 269, 43, 246, 247, 241, 241, 241, 241,
539 267, 241, 263, 264, 265, 269, 43, 246,
540 247, 241, 241, 241, 71, 267, 241, 261,
541 241, 311, 241, 294, 294, 43, 246, 247,
542 241, 241, 241, 241, 253, 241, 261, 241,
543 261, 241, 241, 241, 241, 241, 241, 246,
544 247, 241, 241, 241, 241, 253, 241, 261,
545 241, 261, 241, 241, 241, 241, 312, 241,
546 246, 247, 241, 241, 241, 241, 253, 241,
547 261, 241, 261, 241, 311, 241, 241, 241,
548 241, 246, 247, 241, 241, 241, 241, 253,
549 241, 261, 241, 261, 40, 241, 241, 56,
550 262, 241, 246, 247, 241, 241, 241, 241,
551 253, 241, 261, 241, 254, 255, 260, 260,
552 43, 246, 247, 241, 241, 241, 241, 258,
553 241, 254, 255, 256, 260, 43, 246, 247,
554 241, 241, 241, 73, 258, 241, 251, 241,
555 313, 241, 294, 294, 43, 246, 247, 241,
556 241, 241, 241, 253, 241, 251, 241, 251,
557 241, 241, 241, 241, 241, 241, 246, 247,
558 241, 241, 241, 241, 253, 241, 251, 241,
559 251, 241, 241, 241, 241, 314, 241, 246,
560 247, 241, 241, 241, 241, 253, 241, 251,
561 241, 251, 241, 313, 241, 241, 241, 241,
562 246, 247, 241, 241, 241, 241, 253, 241,
563 251, 241, 74, 42, 42, 43, 241, 241,
564 241, 241, 241, 241, 74, 241, 251, 40,
565 241, 241, 56, 252, 241, 246, 247, 241,
566 241, 241, 241, 253, 241, 251, 241, 242,
567 243, 250, 245, 43, 246, 247, 241, 241,
568 241, 241, 248, 241, 316, 156, 317, 317,
569 81, 159, 160, 315, 315, 315, 315, 163,
570 315, 156, 317, 317, 81, 159, 160, 315,
571 315, 315, 315, 163, 315, 318, 315, 315,
572 315, 95, 319, 315, 159, 160, 315, 315,
573 315, 315, 320, 315, 318, 315, 321, 322,
574 323, 324, 81, 159, 160, 315, 315, 315,
575 112, 325, 315, 326, 322, 327, 327, 81,
576 159, 160, 315, 315, 315, 315, 325, 315,
577 322, 327, 327, 81, 159, 160, 315, 315,
578 315, 315, 325, 315, 328, 315, 315, 315,
579 95, 329, 315, 159, 160, 315, 315, 315,
580 315, 320, 315, 328, 315, 330, 331, 332,
581 333, 81, 159, 160, 315, 315, 315, 110,
582 334, 315, 335, 331, 336, 336, 81, 159,
583 160, 315, 315, 315, 315, 334, 315, 331,
584 336, 336, 81, 159, 160, 315, 315, 315,
585 315, 334, 315, 337, 315, 315, 315, 95,
586 338, 315, 159, 160, 315, 315, 315, 315,
587 320, 315, 337, 315, 339, 340, 341, 342,
588 81, 159, 160, 315, 315, 315, 108, 343,
589 315, 344, 340, 345, 345, 81, 159, 160,
590 315, 315, 315, 315, 343, 315, 340, 345,
591 345, 81, 159, 160, 315, 315, 315, 315,
592 343, 315, 346, 315, 315, 315, 95, 347,
593 315, 159, 160, 315, 315, 315, 315, 320,
594 315, 346, 315, 348, 349, 350, 351, 81,
595 159, 160, 315, 315, 315, 106, 352, 315,
596 353, 349, 354, 354, 81, 159, 160, 315,
597 315, 315, 315, 352, 315, 349, 354, 354,
598 81, 159, 160, 315, 315, 315, 315, 352,
599 315, 95, 355, 315, 159, 160, 315, 315,
600 315, 315, 320, 315, 159, 160, 315, 315,
601 315, 315, 320, 315, 356, 315, 315, 315,
602 160, 315, 160, 315, 357, 315, 358, 315,
603 359, 360, 315, 159, 160, 315, 315, 315,
604 79, 315, 78, 315, 315, 315, 315, 159,
605 160, 315, 159, 160, 315, 358, 315, 315,
606 315, 315, 159, 160, 315, 358, 315, 359,
607 315, 315, 159, 160, 315, 315, 315, 79,
608 315, 95, 315, 361, 361, 81, 159, 160,
609 315, 315, 315, 315, 320, 315, 362, 104,
610 363, 364, 85, 159, 160, 315, 315, 315,
611 315, 320, 315, 104, 363, 364, 85, 159,
612 160, 315, 315, 315, 315, 320, 315, 363,
613 363, 85, 159, 160, 315, 315, 315, 315,
614 320, 315, 365, 101, 366, 367, 88, 159,
615 160, 315, 315, 315, 315, 320, 315, 101,
616 366, 367, 88, 159, 160, 315, 315, 315,
617 315, 320, 315, 366, 366, 88, 159, 160,
618 315, 315, 315, 315, 320, 315, 368, 98,
619 369, 370, 91, 159, 160, 315, 315, 315,
620 315, 320, 315, 98, 369, 370, 91, 159,
621 160, 315, 315, 315, 315, 320, 315, 369,
622 369, 91, 159, 160, 315, 315, 315, 315,
623 320, 315, 371, 95, 315, 372, 315, 159,
624 160, 315, 315, 315, 315, 320, 315, 95,
625 315, 372, 315, 159, 160, 315, 315, 315,
626 315, 320, 315, 373, 315, 159, 160, 315,
627 315, 315, 315, 320, 315, 95, 315, 315,
628 315, 315, 159, 160, 315, 315, 315, 315,
629 320, 315, 77, 78, 315, 315, 95, 355,
630 315, 159, 160, 315, 315, 315, 315, 320,
631 315, 77, 315, 348, 349, 354, 354, 81,
632 159, 160, 315, 315, 315, 315, 352, 315,
633 348, 349, 350, 354, 81, 159, 160, 315,
634 315, 315, 106, 352, 315, 346, 315, 374,
635 315, 361, 361, 81, 159, 160, 315, 315,
636 315, 315, 320, 315, 346, 315, 346, 315,
637 315, 315, 315, 315, 315, 159, 160, 315,
638 315, 315, 315, 320, 315, 346, 315, 346,
639 315, 315, 315, 315, 375, 315, 159, 160,
640 315, 315, 315, 315, 320, 315, 346, 315,
641 346, 315, 374, 315, 315, 315, 315, 159,
642 160, 315, 315, 315, 315, 320, 315, 346,
643 315, 346, 78, 315, 315, 95, 347, 315,
644 159, 160, 315, 315, 315, 315, 320, 315,
645 346, 315, 339, 340, 345, 345, 81, 159,
646 160, 315, 315, 315, 315, 343, 315, 339,
647 340, 341, 345, 81, 159, 160, 315, 315,
648 315, 108, 343, 315, 337, 315, 376, 315,
649 361, 361, 81, 159, 160, 315, 315, 315,
650 315, 320, 315, 337, 315, 337, 315, 315,
651 315, 315, 315, 315, 159, 160, 315, 315,
652 315, 315, 320, 315, 337, 315, 337, 315,
653 315, 315, 315, 377, 315, 159, 160, 315,
654 315, 315, 315, 320, 315, 337, 315, 337,
655 315, 376, 315, 315, 315, 315, 159, 160,
656 315, 315, 315, 315, 320, 315, 337, 315,
657 337, 78, 315, 315, 95, 338, 315, 159,
658 160, 315, 315, 315, 315, 320, 315, 337,
659 315, 330, 331, 336, 336, 81, 159, 160,
660 315, 315, 315, 315, 334, 315, 330, 331,
661 332, 336, 81, 159, 160, 315, 315, 315,
662 110, 334, 315, 328, 315, 378, 315, 361,
663 361, 81, 159, 160, 315, 315, 315, 315,
664 320, 315, 328, 315, 328, 315, 315, 315,
665 315, 315, 315, 159, 160, 315, 315, 315,
666 315, 320, 315, 328, 315, 328, 315, 315,
667 315, 315, 379, 315, 159, 160, 315, 315,
668 315, 315, 320, 315, 328, 315, 328, 315,
669 378, 315, 315, 315, 315, 159, 160, 315,
670 315, 315, 315, 320, 315, 328, 315, 328,
671 78, 315, 315, 95, 329, 315, 159, 160,
672 315, 315, 315, 315, 320, 315, 328, 315,
673 321, 322, 327, 327, 81, 159, 160, 315,
674 315, 315, 315, 325, 315, 321, 322, 323,
675 327, 81, 159, 160, 315, 315, 315, 112,
676 325, 315, 318, 315, 380, 315, 361, 361,
677 81, 159, 160, 315, 315, 315, 315, 320,
678 315, 318, 315, 318, 315, 315, 315, 315,
679 315, 315, 159, 160, 315, 315, 315, 315,
680 320, 315, 318, 315, 318, 315, 315, 315,
681 315, 381, 315, 159, 160, 315, 315, 315,
682 315, 320, 315, 318, 315, 318, 315, 380,
683 315, 315, 315, 315, 159, 160, 315, 315,
684 315, 315, 320, 315, 318, 315, 318, 78,
685 315, 315, 95, 319, 315, 159, 160, 315,
686 315, 315, 315, 320, 315, 318, 315, 113,
687 80, 80, 81, 382, 382, 382, 382, 382,
688 162, 113, 382, 155, 156, 317, 317, 81,
689 159, 160, 315, 315, 315, 315, 163, 315,
690 113, 80, 80, 81, 382, 382, 382, 382,
691 382, 382, 113, 382, 384, 385, 386, 387,
692 119, 388, 389, 383, 383, 383, 151, 390,
693 383, 391, 385, 387, 387, 119, 388, 389,
694 383, 383, 383, 383, 390, 383, 385, 387,
695 387, 119, 388, 389, 383, 383, 383, 383,
696 390, 383, 392, 383, 383, 383, 132, 393,
697 383, 388, 389, 383, 383, 383, 383, 394,
698 383, 392, 383, 395, 396, 397, 398, 119,
699 388, 389, 383, 383, 383, 149, 399, 383,
700 400, 396, 401, 401, 119, 388, 389, 383,
701 383, 383, 383, 399, 383, 396, 401, 401,
702 119, 388, 389, 383, 383, 383, 383, 399,
703 383, 402, 383, 383, 383, 132, 403, 383,
704 388, 389, 383, 383, 383, 383, 394, 383,
705 402, 383, 404, 405, 406, 407, 119, 388,
706 389, 383, 383, 383, 147, 408, 383, 409,
707 405, 410, 410, 119, 388, 389, 383, 383,
708 383, 383, 408, 383, 405, 410, 410, 119,
709 388, 389, 383, 383, 383, 383, 408, 383,
710 411, 383, 383, 383, 132, 412, 383, 388,
711 389, 383, 383, 383, 383, 394, 383, 411,
712 383, 413, 414, 415, 416, 119, 388, 389,
713 383, 383, 383, 145, 417, 383, 418, 414,
714 419, 419, 119, 388, 389, 383, 383, 383,
715 383, 417, 383, 414, 419, 419, 119, 388,
716 389, 383, 383, 383, 383, 417, 383, 420,
717 383, 383, 383, 132, 421, 383, 388, 389,
718 383, 383, 383, 383, 394, 383, 420, 383,
719 422, 423, 424, 425, 119, 388, 389, 383,
720 383, 383, 143, 426, 383, 427, 423, 428,
721 428, 119, 388, 389, 383, 383, 383, 383,
722 426, 383, 423, 428, 428, 119, 388, 389,
723 383, 383, 383, 383, 426, 383, 132, 429,
724 383, 388, 389, 383, 383, 383, 383, 394,
725 383, 388, 389, 383, 383, 383, 383, 394,
726 383, 430, 383, 383, 383, 389, 383, 389,
727 383, 431, 383, 432, 383, 433, 434, 383,
728 388, 389, 383, 383, 383, 117, 383, 116,
729 383, 383, 383, 383, 388, 389, 383, 388,
730 389, 383, 432, 383, 383, 383, 383, 388,
731 389, 383, 432, 383, 433, 383, 383, 388,
732 389, 383, 383, 383, 117, 383, 132, 383,
733 435, 435, 119, 388, 389, 383, 383, 383,
734 383, 394, 383, 436, 141, 437, 438, 122,
735 388, 389, 383, 383, 383, 383, 394, 383,
736 141, 437, 438, 122, 388, 389, 383, 383,
737 383, 383, 394, 383, 437, 437, 122, 388,
738 389, 383, 383, 383, 383, 394, 383, 439,
739 138, 440, 441, 125, 388, 389, 383, 383,
740 383, 383, 394, 383, 138, 440, 441, 125,
741 388, 389, 383, 383, 383, 383, 394, 383,
742 440, 440, 125, 388, 389, 383, 383, 383,
743 383, 394, 383, 442, 135, 443, 444, 128,
744 388, 389, 383, 383, 383, 383, 394, 383,
745 135, 443, 444, 128, 388, 389, 383, 383,
746 383, 383, 394, 383, 443, 443, 128, 388,
747 389, 383, 383, 383, 383, 394, 383, 445,
748 132, 383, 446, 383, 388, 389, 383, 383,
749 383, 383, 394, 383, 132, 383, 446, 383,
750 388, 389, 383, 383, 383, 383, 394, 383,
751 447, 383, 388, 389, 383, 383, 383, 383,
752 394, 383, 132, 383, 383, 383, 383, 388,
753 389, 383, 383, 383, 383, 394, 383, 115,
754 116, 383, 383, 132, 429, 383, 388, 389,
755 383, 383, 383, 383, 394, 383, 115, 383,
756 422, 423, 428, 428, 119, 388, 389, 383,
757 383, 383, 383, 426, 383, 422, 423, 424,
758 428, 119, 388, 389, 383, 383, 383, 143,
759 426, 383, 420, 383, 448, 383, 435, 435,
760 119, 388, 389, 383, 383, 383, 383, 394,
761 383, 420, 383, 420, 383, 383, 383, 383,
762 383, 383, 388, 389, 383, 383, 383, 383,
763 394, 383, 420, 383, 420, 383, 383, 383,
764 383, 449, 383, 388, 389, 383, 383, 383,
765 383, 394, 383, 420, 383, 420, 383, 448,
766 383, 383, 383, 383, 388, 389, 383, 383,
767 383, 383, 394, 383, 420, 383, 420, 116,
768 383, 383, 132, 421, 383, 388, 389, 383,
769 383, 383, 383, 394, 383, 420, 383, 413,
770 414, 419, 419, 119, 388, 389, 383, 383,
771 383, 383, 417, 383, 413, 414, 415, 419,
772 119, 388, 389, 383, 383, 383, 145, 417,
773 383, 411, 383, 450, 383, 435, 435, 119,
774 388, 389, 383, 383, 383, 383, 394, 383,
775 411, 383, 411, 383, 383, 383, 383, 383,
776 383, 388, 389, 383, 383, 383, 383, 394,
777 383, 411, 383, 411, 383, 383, 383, 383,
778 451, 383, 388, 389, 383, 383, 383, 383,
779 394, 383, 411, 383, 411, 383, 450, 383,
780 383, 383, 383, 388, 389, 383, 383, 383,
781 383, 394, 383, 411, 383, 411, 116, 383,
782 383, 132, 412, 383, 388, 389, 383, 383,
783 383, 383, 394, 383, 411, 383, 404, 405,
784 410, 410, 119, 388, 389, 383, 383, 383,
785 383, 408, 383, 404, 405, 406, 410, 119,
786 388, 389, 383, 383, 383, 147, 408, 383,
787 402, 383, 452, 383, 435, 435, 119, 388,
788 389, 383, 383, 383, 383, 394, 383, 402,
789 383, 402, 383, 383, 383, 383, 383, 383,
790 388, 389, 383, 383, 383, 383, 394, 383,
791 402, 383, 402, 383, 383, 383, 383, 453,
792 383, 388, 389, 383, 383, 383, 383, 394,
793 383, 402, 383, 402, 383, 452, 383, 383,
794 383, 383, 388, 389, 383, 383, 383, 383,
795 394, 383, 402, 383, 402, 116, 383, 383,
796 132, 403, 383, 388, 389, 383, 383, 383,
797 383, 394, 383, 402, 383, 395, 396, 401,
798 401, 119, 388, 389, 383, 383, 383, 383,
799 399, 383, 395, 396, 397, 401, 119, 388,
800 389, 383, 383, 383, 149, 399, 383, 392,
801 383, 454, 383, 435, 435, 119, 388, 389,
802 383, 383, 383, 383, 394, 383, 392, 383,
803 392, 383, 383, 383, 383, 383, 383, 388,
804 389, 383, 383, 383, 383, 394, 383, 392,
805 383, 392, 383, 383, 383, 383, 455, 383,
806 388, 389, 383, 383, 383, 383, 394, 383,
807 392, 383, 392, 383, 454, 383, 383, 383,
808 383, 388, 389, 383, 383, 383, 383, 394,
809 383, 392, 383, 392, 116, 383, 383, 132,
810 393, 383, 388, 389, 383, 383, 383, 383,
811 394, 383, 392, 383, 384, 385, 387, 387,
812 119, 388, 389, 383, 383, 383, 383, 390,
813 383, 153, 154, 382, 382, 382, 382, 382,
814 382, 382, 382, 161, 161, 382, 382, 382,
815 153, 382, 167, 456, 169, 170, 5, 171,
816 172, 173, 166, 166, 37, 174, 166, 177,
817 154, 166, 166, 18, 178, 166, 171, 172,
818 166, 161, 161, 166, 179, 166, 177, 166,
819 0
93 }; 820 };
94 821
95 static const char _indic_syllable_machine_trans_targs[] = { 822 static const short _indic_syllable_machine_trans_targs[] = {
96 » 7, 1, 8, 7, 25, 2, 7, 33, 823 » 143, 168, 170, 171, 3, 174, 4, 6,
97 » 5, 7, 21, 23, 31, 7, 9, 11, 824 » 177, 7, 9, 180, 10, 12, 183, 13,
98 » 0, 15, 13, 14, 18, 10, 12, 7, 825 » 15, 16, 164, 18, 19, 182, 21, 22,
99 » 16, 17, 19, 20, 22, 7, 24, 3, 826 » 179, 24, 25, 176, 185, 189, 193, 196,
100 » 4, 26, 29, 30, 27, 28, 7, 7, 827 » 200, 203, 207, 210, 214, 217, 143, 243,
101 » 32, 6, 34, 37, 38, 35, 36, 7 828 » 245, 246, 39, 249, 40, 42, 252, 43,
829 » 45, 255, 46, 48, 258, 49, 51, 52,
830 » 239, 54, 55, 257, 57, 58, 254, 60,
831 » 61, 251, 260, 263, 267, 270, 274, 277,
832 » 281, 284, 288, 292, 143, 316, 318, 319,
833 » 75, 322, 143, 76, 78, 325, 79, 81,
834 » 328, 82, 84, 331, 85, 87, 88, 312,
835 » 90, 91, 330, 93, 94, 327, 96, 97,
836 » 324, 333, 336, 340, 343, 347, 350, 354,
837 » 357, 361, 143, 391, 393, 394, 110, 397,
838 » 111, 113, 400, 114, 116, 403, 117, 119,
839 » 406, 120, 122, 123, 387, 125, 126, 405,
840 » 128, 129, 402, 131, 132, 399, 408, 411,
841 » 415, 418, 422, 425, 429, 432, 436, 439,
842 » 143, 144, 219, 293, 295, 364, 366, 313,
843 » 315, 367, 365, 363, 440, 441, 143, 145,
844 » 147, 35, 218, 165, 167, 187, 216, 146,
845 » 34, 148, 212, 0, 149, 151, 33, 211,
846 » 209, 150, 32, 152, 205, 153, 155, 31,
847 » 204, 202, 154, 30, 156, 198, 157, 159,
848 » 29, 197, 195, 158, 28, 160, 191, 161,
849 » 163, 27, 190, 188, 162, 26, 173, 166,
850 » 143, 169, 1, 172, 2, 175, 5, 23,
851 » 178, 8, 20, 181, 11, 17, 184, 14,
852 » 186, 192, 194, 199, 201, 206, 208, 213,
853 » 215, 143, 220, 222, 71, 290, 240, 242,
854 » 291, 221, 70, 223, 286, 36, 224, 226,
855 » 69, 285, 283, 225, 68, 227, 279, 228,
856 » 230, 67, 278, 276, 229, 66, 231, 272,
857 » 232, 234, 65, 271, 269, 233, 64, 235,
858 » 265, 236, 238, 63, 264, 262, 237, 62,
859 » 248, 241, 143, 244, 37, 247, 38, 250,
860 » 41, 59, 253, 44, 56, 256, 47, 53,
861 » 259, 50, 261, 266, 268, 273, 275, 280,
862 » 282, 287, 289, 143, 294, 106, 296, 359,
863 » 72, 297, 299, 105, 358, 356, 298, 104,
864 » 300, 352, 301, 303, 103, 351, 349, 302,
865 » 102, 304, 345, 305, 307, 101, 344, 342,
866 » 306, 100, 308, 338, 309, 311, 99, 337,
867 » 335, 310, 98, 321, 314, 143, 317, 73,
868 » 320, 74, 323, 77, 95, 326, 80, 92,
869 » 329, 83, 89, 332, 86, 334, 339, 341,
870 » 346, 348, 353, 355, 360, 362, 143, 143,
871 » 368, 370, 142, 141, 388, 390, 438, 369,
872 » 371, 434, 107, 372, 374, 140, 433, 431,
873 » 373, 139, 375, 427, 376, 378, 138, 426,
874 » 424, 377, 137, 379, 420, 380, 382, 136,
875 » 419, 417, 381, 135, 383, 413, 384, 386,
876 » 134, 412, 410, 385, 133, 396, 389, 143,
877 » 392, 108, 395, 109, 398, 112, 130, 401,
878 » 115, 127, 404, 118, 124, 407, 121, 409,
879 » 414, 416, 421, 423, 428, 430, 435, 437,
880 » 442
102 }; 881 };
103 882
104 static const char _indic_syllable_machine_trans_actions[] = { 883 static const char _indic_syllable_machine_trans_actions[] = {
105 » 1, 0, 2, 3, 2, 0, 4, 2, 884 » 1, 2, 0, 0, 0, 2, 0, 0,
106 » 0, 7, 2, 2, 2, 8, 2, 0, 885 » 2, 0, 0, 2, 0, 0, 2, 0,
107 » 0, 0, 0, 0, 0, 2, 0, 9, 886 » 0, 0, 2, 0, 0, 2, 0, 0,
108 » 0, 0, 0, 0, 0, 10, 2, 0, 887 » 2, 0, 0, 2, 2, 2, 2, 2,
109 » 0, 0, 0, 0, 0, 0, 11, 12, 888 » 2, 2, 2, 2, 2, 2, 3, 2,
110 » 2, 0, 0, 0, 0, 0, 0, 13 889 » 0, 0, 0, 2, 0, 0, 2, 0,
890 » 0, 2, 0, 0, 2, 0, 0, 0,
891 » 2, 0, 0, 2, 0, 0, 2, 0,
892 » 0, 2, 2, 2, 2, 2, 2, 2,
893 » 2, 2, 2, 2, 4, 2, 0, 0,
894 » 0, 2, 5, 0, 0, 2, 0, 0,
895 » 2, 0, 0, 2, 0, 0, 0, 2,
896 » 0, 0, 2, 0, 0, 2, 0, 0,
897 » 2, 2, 6, 2, 6, 2, 6, 2,
898 » 6, 2, 7, 2, 0, 0, 0, 2,
899 » 0, 0, 2, 0, 0, 2, 0, 0,
900 » 2, 0, 0, 0, 2, 0, 0, 2,
901 » 0, 0, 2, 0, 0, 2, 2, 2,
902 » 2, 2, 2, 2, 2, 2, 2, 2,
903 » 10, 2, 2, 6, 2, 11, 11, 0,
904 » 0, 2, 6, 2, 0, 2, 12, 2,
905 » 2, 0, 2, 0, 0, 2, 2, 2,
906 » 0, 2, 2, 0, 2, 2, 0, 2,
907 » 2, 2, 0, 2, 2, 2, 2, 0,
908 » 2, 2, 2, 0, 2, 2, 2, 2,
909 » 0, 2, 2, 2, 0, 2, 2, 2,
910 » 2, 0, 2, 2, 2, 0, 2, 0,
911 » 13, 0, 0, 2, 0, 2, 0, 0,
912 » 2, 0, 0, 2, 0, 0, 2, 0,
913 » 2, 2, 2, 2, 2, 2, 2, 2,
914 » 2, 14, 2, 2, 0, 2, 0, 0,
915 » 2, 2, 0, 2, 2, 0, 2, 2,
916 » 0, 2, 2, 2, 0, 2, 2, 2,
917 » 2, 0, 2, 2, 2, 0, 2, 2,
918 » 2, 2, 0, 2, 2, 2, 0, 2,
919 » 2, 2, 2, 0, 2, 2, 2, 0,
920 » 2, 0, 15, 0, 0, 2, 0, 2,
921 » 0, 0, 2, 0, 0, 2, 0, 0,
922 » 2, 0, 2, 2, 2, 2, 2, 2,
923 » 2, 2, 2, 16, 6, 0, 6, 6,
924 » 0, 6, 2, 0, 6, 2, 6, 0,
925 » 6, 6, 6, 2, 0, 6, 2, 6,
926 » 0, 6, 6, 6, 2, 0, 6, 2,
927 » 6, 0, 6, 6, 6, 2, 0, 6,
928 » 2, 6, 0, 6, 0, 17, 0, 0,
929 » 2, 0, 2, 0, 0, 2, 0, 0,
930 » 2, 0, 0, 2, 0, 2, 2, 2,
931 » 2, 2, 2, 2, 2, 2, 18, 19,
932 » 2, 2, 0, 0, 0, 0, 2, 2,
933 » 2, 2, 0, 2, 2, 0, 2, 2,
934 » 2, 0, 2, 2, 2, 2, 0, 2,
935 » 2, 2, 0, 2, 2, 2, 2, 0,
936 » 2, 2, 2, 0, 2, 2, 2, 2,
937 » 0, 2, 2, 2, 0, 2, 0, 20,
938 » 0, 0, 2, 0, 2, 0, 0, 2,
939 » 0, 0, 2, 0, 0, 2, 0, 2,
940 » 2, 2, 2, 2, 2, 2, 2, 2,
941 » 2
111 }; 942 };
112 943
113 static const char _indic_syllable_machine_to_state_actions[] = { 944 static const char _indic_syllable_machine_to_state_actions[] = {
114 » 0, 0, 0, 0, 0, 0, 0, 5, 945 » 0, 0, 0, 0, 0, 0, 0, 0,
115 » 0, 0, 0, 0, 0, 0, 0, 0, 946 » 0, 0, 0, 0, 0, 0, 0, 0,
116 » 0, 0, 0, 0, 0, 0, 0, 0, 947 » 0, 0, 0, 0, 0, 0, 0, 0,
117 » 0, 0, 0, 0, 0, 0, 0, 0, 948 » 0, 0, 0, 0, 0, 0, 0, 0,
118 » 0, 0, 0, 0, 0, 0, 0 949 » 0, 0, 0, 0, 0, 0, 0, 0,
950 » 0, 0, 0, 0, 0, 0, 0, 0,
951 » 0, 0, 0, 0, 0, 0, 0, 0,
952 » 0, 0, 0, 0, 0, 0, 0, 0,
953 » 0, 0, 0, 0, 0, 0, 0, 0,
954 » 0, 0, 0, 0, 0, 0, 0, 0,
955 » 0, 0, 0, 0, 0, 0, 0, 0,
956 » 0, 0, 0, 0, 0, 0, 0, 0,
957 » 0, 0, 0, 0, 0, 0, 0, 0,
958 » 0, 0, 0, 0, 0, 0, 0, 0,
959 » 0, 0, 0, 0, 0, 0, 0, 0,
960 » 0, 0, 0, 0, 0, 0, 0, 0,
961 » 0, 0, 0, 0, 0, 0, 0, 0,
962 » 0, 0, 0, 0, 0, 0, 0, 8,
963 » 0, 0, 0, 0, 0, 0, 0, 0,
964 » 0, 0, 0, 0, 0, 0, 0, 0,
965 » 0, 0, 0, 0, 0, 0, 0, 0,
966 » 0, 0, 0, 0, 0, 0, 0, 0,
967 » 0, 0, 0, 0, 0, 0, 0, 0,
968 » 0, 0, 0, 0, 0, 0, 0, 0,
969 » 0, 0, 0, 0, 0, 0, 0, 0,
970 » 0, 0, 0, 0, 0, 0, 0, 0,
971 » 0, 0, 0, 0, 0, 0, 0, 0,
972 » 0, 0, 0, 0, 0, 0, 0, 0,
973 » 0, 0, 0, 0, 0, 0, 0, 0,
974 » 0, 0, 0, 0, 0, 0, 0, 0,
975 » 0, 0, 0, 0, 0, 0, 0, 0,
976 » 0, 0, 0, 0, 0, 0, 0, 0,
977 » 0, 0, 0, 0, 0, 0, 0, 0,
978 » 0, 0, 0, 0, 0, 0, 0, 0,
979 » 0, 0, 0, 0, 0, 0, 0, 0,
980 » 0, 0, 0, 0, 0, 0, 0, 0,
981 » 0, 0, 0, 0, 0, 0, 0, 0,
982 » 0, 0, 0, 0, 0, 0, 0, 0,
983 » 0, 0, 0, 0, 0, 0, 0, 0,
984 » 0, 0, 0, 0, 0, 0, 0, 0,
985 » 0, 0, 0, 0, 0, 0, 0, 0,
986 » 0, 0, 0, 0, 0, 0, 0, 0,
987 » 0, 0, 0, 0, 0, 0, 0, 0,
988 » 0, 0, 0, 0, 0, 0, 0, 0,
989 » 0, 0, 0, 0, 0, 0, 0, 0,
990 » 0, 0, 0, 0, 0, 0, 0, 0,
991 » 0, 0, 0, 0, 0, 0, 0, 0,
992 » 0, 0, 0, 0, 0, 0, 0, 0,
993 » 0, 0, 0, 0, 0, 0, 0, 0,
994 » 0, 0, 0, 0, 0, 0, 0, 0,
995 » 0, 0, 0, 0, 0, 0, 0, 0,
996 » 0, 0, 0, 0, 0, 0, 0, 0,
997 » 0, 0, 0, 0, 0, 0, 0, 0,
998 » 0, 0, 0, 0, 0, 0, 0, 0,
999 » 0, 0, 0, 0, 0, 0, 0, 0,
1000 » 0, 0, 0
119 }; 1001 };
120 1002
121 static const char _indic_syllable_machine_from_state_actions[] = { 1003 static const char _indic_syllable_machine_from_state_actions[] = {
122 » 0, 0, 0, 0, 0, 0, 0, 6, 1004 » 0, 0, 0, 0, 0, 0, 0, 0,
123 » 0, 0, 0, 0, 0, 0, 0, 0, 1005 » 0, 0, 0, 0, 0, 0, 0, 0,
124 » 0, 0, 0, 0, 0, 0, 0, 0, 1006 » 0, 0, 0, 0, 0, 0, 0, 0,
125 » 0, 0, 0, 0, 0, 0, 0, 0, 1007 » 0, 0, 0, 0, 0, 0, 0, 0,
126 » 0, 0, 0, 0, 0, 0, 0 1008 » 0, 0, 0, 0, 0, 0, 0, 0,
1009 » 0, 0, 0, 0, 0, 0, 0, 0,
1010 » 0, 0, 0, 0, 0, 0, 0, 0,
1011 » 0, 0, 0, 0, 0, 0, 0, 0,
1012 » 0, 0, 0, 0, 0, 0, 0, 0,
1013 » 0, 0, 0, 0, 0, 0, 0, 0,
1014 » 0, 0, 0, 0, 0, 0, 0, 0,
1015 » 0, 0, 0, 0, 0, 0, 0, 0,
1016 » 0, 0, 0, 0, 0, 0, 0, 0,
1017 » 0, 0, 0, 0, 0, 0, 0, 0,
1018 » 0, 0, 0, 0, 0, 0, 0, 0,
1019 » 0, 0, 0, 0, 0, 0, 0, 0,
1020 » 0, 0, 0, 0, 0, 0, 0, 0,
1021 » 0, 0, 0, 0, 0, 0, 0, 9,
1022 » 0, 0, 0, 0, 0, 0, 0, 0,
1023 » 0, 0, 0, 0, 0, 0, 0, 0,
1024 » 0, 0, 0, 0, 0, 0, 0, 0,
1025 » 0, 0, 0, 0, 0, 0, 0, 0,
1026 » 0, 0, 0, 0, 0, 0, 0, 0,
1027 » 0, 0, 0, 0, 0, 0, 0, 0,
1028 » 0, 0, 0, 0, 0, 0, 0, 0,
1029 » 0, 0, 0, 0, 0, 0, 0, 0,
1030 » 0, 0, 0, 0, 0, 0, 0, 0,
1031 » 0, 0, 0, 0, 0, 0, 0, 0,
1032 » 0, 0, 0, 0, 0, 0, 0, 0,
1033 » 0, 0, 0, 0, 0, 0, 0, 0,
1034 » 0, 0, 0, 0, 0, 0, 0, 0,
1035 » 0, 0, 0, 0, 0, 0, 0, 0,
1036 » 0, 0, 0, 0, 0, 0, 0, 0,
1037 » 0, 0, 0, 0, 0, 0, 0, 0,
1038 » 0, 0, 0, 0, 0, 0, 0, 0,
1039 » 0, 0, 0, 0, 0, 0, 0, 0,
1040 » 0, 0, 0, 0, 0, 0, 0, 0,
1041 » 0, 0, 0, 0, 0, 0, 0, 0,
1042 » 0, 0, 0, 0, 0, 0, 0, 0,
1043 » 0, 0, 0, 0, 0, 0, 0, 0,
1044 » 0, 0, 0, 0, 0, 0, 0, 0,
1045 » 0, 0, 0, 0, 0, 0, 0, 0,
1046 » 0, 0, 0, 0, 0, 0, 0, 0,
1047 » 0, 0, 0, 0, 0, 0, 0, 0,
1048 » 0, 0, 0, 0, 0, 0, 0, 0,
1049 » 0, 0, 0, 0, 0, 0, 0, 0,
1050 » 0, 0, 0, 0, 0, 0, 0, 0,
1051 » 0, 0, 0, 0, 0, 0, 0, 0,
1052 » 0, 0, 0, 0, 0, 0, 0, 0,
1053 » 0, 0, 0, 0, 0, 0, 0, 0,
1054 » 0, 0, 0, 0, 0, 0, 0, 0,
1055 » 0, 0, 0, 0, 0, 0, 0, 0,
1056 » 0, 0, 0, 0, 0, 0, 0, 0,
1057 » 0, 0, 0, 0, 0, 0, 0, 0,
1058 » 0, 0, 0, 0, 0, 0, 0, 0,
1059 » 0, 0, 0
127 }; 1060 };
128 1061
129 static const unsigned char _indic_syllable_machine_eof_trans[] = { 1062 static const short _indic_syllable_machine_eof_trans[] = {
130 » 1, 1, 4, 4, 4, 7, 7, 0, 1063 » 1, 1, 1, 1, 1, 1, 1, 1,
131 » 14, 14, 14, 14, 14, 14, 14, 14, 1064 » 1, 1, 1, 1, 1, 1, 1, 1,
132 » 14, 14, 14, 14, 14, 14, 14, 30, 1065 » 1, 1, 1, 1, 1, 1, 1, 1,
133 » 30, 30, 30, 30, 30, 30, 30, 40, 1066 » 1, 1, 1, 1, 1, 1, 1, 1,
134 » 40, 40, 40, 40, 40, 40, 40 1067 » 1, 1, 1, 1, 39, 39, 39, 39,
1068 » 39, 39, 39, 39, 39, 39, 39, 39,
1069 » 39, 39, 39, 39, 39, 39, 39, 39,
1070 » 39, 39, 39, 39, 39, 39, 39, 39,
1071 » 39, 39, 39, 39, 39, 39, 39, 39,
1072 » 77, 77, 77, 83, 83, 77, 77, 77,
1073 » 77, 77, 77, 77, 77, 77, 77, 77,
1074 » 77, 77, 77, 77, 77, 77, 77, 77,
1075 » 77, 77, 77, 77, 77, 77, 77, 77,
1076 » 77, 77, 77, 115, 115, 115, 115, 115,
1077 » 115, 115, 115, 115, 115, 115, 115, 115,
1078 » 115, 115, 115, 115, 115, 115, 115, 115,
1079 » 115, 115, 115, 115, 115, 115, 115, 115,
1080 » 115, 115, 115, 115, 115, 115, 115, 0,
1081 » 167, 167, 167, 167, 167, 167, 167, 167,
1082 » 167, 167, 167, 167, 167, 167, 167, 167,
1083 » 167, 167, 167, 167, 167, 167, 167, 167,
1084 » 167, 167, 167, 167, 167, 167, 167, 167,
1085 » 167, 167, 167, 167, 167, 167, 167, 167,
1086 » 167, 167, 167, 167, 167, 167, 167, 167,
1087 » 167, 167, 167, 167, 167, 167, 167, 167,
1088 » 167, 167, 167, 167, 167, 167, 167, 167,
1089 » 167, 167, 167, 167, 167, 167, 167, 167,
1090 » 167, 167, 167, 242, 242, 242, 242, 242,
1091 » 242, 242, 242, 242, 242, 242, 242, 242,
1092 » 242, 242, 242, 242, 242, 242, 242, 242,
1093 » 242, 242, 242, 242, 242, 242, 242, 242,
1094 » 242, 242, 242, 242, 242, 242, 242, 242,
1095 » 242, 242, 242, 242, 242, 242, 242, 242,
1096 » 242, 242, 242, 242, 242, 242, 242, 242,
1097 » 242, 242, 242, 242, 242, 242, 242, 242,
1098 » 242, 242, 242, 242, 242, 242, 242, 242,
1099 » 242, 242, 242, 242, 242, 316, 316, 316,
1100 » 316, 316, 316, 316, 316, 316, 316, 316,
1101 » 316, 316, 316, 316, 316, 316, 316, 316,
1102 » 316, 316, 316, 316, 316, 316, 316, 316,
1103 » 316, 316, 316, 316, 316, 316, 316, 316,
1104 » 316, 316, 316, 316, 316, 316, 316, 316,
1105 » 316, 316, 316, 316, 316, 316, 316, 316,
1106 » 316, 316, 316, 316, 316, 316, 316, 316,
1107 » 316, 316, 316, 316, 316, 316, 316, 316,
1108 » 316, 316, 316, 316, 383, 316, 383, 384,
1109 » 384, 384, 384, 384, 384, 384, 384, 384,
1110 » 384, 384, 384, 384, 384, 384, 384, 384,
1111 » 384, 384, 384, 384, 384, 384, 384, 384,
1112 » 384, 384, 384, 384, 384, 384, 384, 384,
1113 » 384, 384, 384, 384, 384, 384, 384, 384,
1114 » 384, 384, 384, 384, 384, 384, 384, 384,
1115 » 384, 384, 384, 384, 384, 384, 384, 384,
1116 » 384, 384, 384, 384, 384, 384, 384, 384,
1117 » 384, 384, 384, 384, 384, 384, 384, 384,
1118 » 383, 167, 167
135 }; 1119 };
136 1120
137 static const int indic_syllable_machine_start = 7; 1121 static const int indic_syllable_machine_start = 143;
138 static const int indic_syllable_machine_first_final = 7; 1122 static const int indic_syllable_machine_first_final = 143;
139 static const int indic_syllable_machine_error = -1; 1123 static const int indic_syllable_machine_error = -1;
140 1124
141 static const int indic_syllable_machine_en_main = 7; 1125 static const int indic_syllable_machine_en_main = 143;
142 1126
143 1127
144 #line 38 "hb-ot-shape-complex-indic-machine.rl" 1128 #line 36 "hb-ot-shape-complex-indic-machine.rl"
145 1129
146 1130
147 1131
148 #line 79 "hb-ot-shape-complex-indic-machine.rl" 1132 #line 90 "hb-ot-shape-complex-indic-machine.rl"
149 1133
150 1134
151 #define process_syllable(func) \ 1135 #define found_syllable(syllable_type) \
152 HB_STMT_START { \ 1136 HB_STMT_START { \
153 /* fprintf (stderr, "syllable %d..%d %s\n", last, p+1, #func); */ \ 1137 if (0) fprintf (stderr, "syllable %d..%d %s\n", last, p+1, #syllable_type); \
154 for (unsigned int i = last; i < p+1; i++) \ 1138 for (unsigned int i = last; i < p+1; i++) \
155 info[i].syllable() = syllable_serial; \ 1139 info[i].syllable() = (syllable_serial << 4) | syllable_type; \
156 PASTE (initial_reordering_, func) (map, buffer, mask_array, last, p+1); \
157 last = p+1; \ 1140 last = p+1; \
158 syllable_serial++; \ 1141 syllable_serial++; \
159 if (unlikely (!syllable_serial)) syllable_serial++; \ 1142 if (unlikely (syllable_serial == 16)) syllable_serial = 1; \
160 } HB_STMT_END 1143 } HB_STMT_END
161 1144
162 static void 1145 static void
163 find_syllables (const hb_ot_map_t *map, hb_buffer_t *buffer, hb_mask_t *mask_arr ay) 1146 find_syllables (hb_buffer_t *buffer)
164 { 1147 {
165 unsigned int p, pe, eof, ts, te, act; 1148 unsigned int p, pe, eof, ts, te, act;
166 int cs; 1149 int cs;
167 hb_glyph_info_t *info = buffer->info; 1150 hb_glyph_info_t *info = buffer->info;
168 1151
169 #line 170 "hb-ot-shape-complex-indic-machine.hh.tmp" 1152 #line 1153 "hb-ot-shape-complex-indic-machine.hh.tmp"
170 { 1153 {
171 cs = indic_syllable_machine_start; 1154 cs = indic_syllable_machine_start;
172 ts = 0; 1155 ts = 0;
173 te = 0; 1156 te = 0;
174 act = 0; 1157 act = 0;
175 } 1158 }
176 1159
177 #line 101 "hb-ot-shape-complex-indic-machine.rl" 1160 #line 111 "hb-ot-shape-complex-indic-machine.rl"
178 1161
179 1162
180 p = 0; 1163 p = 0;
181 pe = eof = buffer->len; 1164 pe = eof = buffer->len;
182 1165
183 unsigned int last = 0; 1166 unsigned int last = 0;
184 uint8_t syllable_serial = 1; 1167 unsigned int syllable_serial = 1;
185 1168
186 #line 187 "hb-ot-shape-complex-indic-machine.hh.tmp" 1169 #line 1170 "hb-ot-shape-complex-indic-machine.hh.tmp"
187 { 1170 {
188 int _slen; 1171 int _slen;
189 int _trans; 1172 int _trans;
190 const unsigned char *_keys; 1173 const unsigned char *_keys;
191 » const char *_inds; 1174 » const short *_inds;
192 if ( p == pe ) 1175 if ( p == pe )
193 goto _test_eof; 1176 goto _test_eof;
194 _resume: 1177 _resume:
195 switch ( _indic_syllable_machine_from_state_actions[cs] ) { 1178 switch ( _indic_syllable_machine_from_state_actions[cs] ) {
196 » case 6: 1179 » case 9:
197 #line 1 "hb-ot-shape-complex-indic-machine.rl" 1180 #line 1 "hb-ot-shape-complex-indic-machine.rl"
198 {ts = p;} 1181 {ts = p;}
199 break; 1182 break;
200 #line 201 "hb-ot-shape-complex-indic-machine.hh.tmp" 1183 #line 1184 "hb-ot-shape-complex-indic-machine.hh.tmp"
201 } 1184 }
202 1185
203 _keys = _indic_syllable_machine_trans_keys + (cs<<1); 1186 _keys = _indic_syllable_machine_trans_keys + (cs<<1);
204 _inds = _indic_syllable_machine_indicies + _indic_syllable_machine_index _offsets[cs]; 1187 _inds = _indic_syllable_machine_indicies + _indic_syllable_machine_index _offsets[cs];
205 1188
206 _slen = _indic_syllable_machine_key_spans[cs]; 1189 _slen = _indic_syllable_machine_key_spans[cs];
207 _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].indic_category()) && 1190 _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].indic_category()) &&
208 ( info[p].indic_category()) <= _keys[1] ? 1191 ( info[p].indic_category()) <= _keys[1] ?
209 ( info[p].indic_category()) - _keys[0] : _slen ]; 1192 ( info[p].indic_category()) - _keys[0] : _slen ];
210 1193
211 _eof_trans: 1194 _eof_trans:
212 cs = _indic_syllable_machine_trans_targs[_trans]; 1195 cs = _indic_syllable_machine_trans_targs[_trans];
213 1196
214 if ( _indic_syllable_machine_trans_actions[_trans] == 0 ) 1197 if ( _indic_syllable_machine_trans_actions[_trans] == 0 )
215 goto _again; 1198 goto _again;
216 1199
217 switch ( _indic_syllable_machine_trans_actions[_trans] ) { 1200 switch ( _indic_syllable_machine_trans_actions[_trans] ) {
218 case 2: 1201 case 2:
219 #line 1 "hb-ot-shape-complex-indic-machine.rl" 1202 #line 1 "hb-ot-shape-complex-indic-machine.rl"
220 {te = p+1;} 1203 {te = p+1;}
221 break; 1204 break;
222 » case 9: 1205 » case 13:
223 #line 72 "hb-ot-shape-complex-indic-machine.rl" 1206 #line 82 "hb-ot-shape-complex-indic-machine.rl"
224 » {te = p+1;{ process_syllable (consonant_syllable); }} 1207 » {te = p+1;{ found_syllable (consonant_syllable); }}
1208 » break;
1209 » case 15:
1210 #line 83 "hb-ot-shape-complex-indic-machine.rl"
1211 » {te = p+1;{ found_syllable (vowel_syllable); }}
1212 » break;
1213 » case 20:
1214 #line 84 "hb-ot-shape-complex-indic-machine.rl"
1215 » {te = p+1;{ found_syllable (standalone_cluster); }}
1216 » break;
1217 » case 17:
1218 #line 85 "hb-ot-shape-complex-indic-machine.rl"
1219 » {te = p+1;{ found_syllable (broken_cluster); }}
1220 » break;
1221 » case 10:
1222 #line 86 "hb-ot-shape-complex-indic-machine.rl"
1223 » {te = p+1;{ found_syllable (non_indic_cluster); }}
1224 » break;
1225 » case 12:
1226 #line 82 "hb-ot-shape-complex-indic-machine.rl"
1227 » {te = p;p--;{ found_syllable (consonant_syllable); }}
1228 » break;
1229 » case 14:
1230 #line 83 "hb-ot-shape-complex-indic-machine.rl"
1231 » {te = p;p--;{ found_syllable (vowel_syllable); }}
1232 » break;
1233 » case 19:
1234 #line 84 "hb-ot-shape-complex-indic-machine.rl"
1235 » {te = p;p--;{ found_syllable (standalone_cluster); }}
1236 » break;
1237 » case 16:
1238 #line 85 "hb-ot-shape-complex-indic-machine.rl"
1239 » {te = p;p--;{ found_syllable (broken_cluster); }}
1240 » break;
1241 » case 18:
1242 #line 86 "hb-ot-shape-complex-indic-machine.rl"
1243 » {te = p;p--;{ found_syllable (non_indic_cluster); }}
1244 » break;
1245 » case 1:
1246 #line 82 "hb-ot-shape-complex-indic-machine.rl"
1247 » {{p = ((te))-1;}{ found_syllable (consonant_syllable); }}
1248 » break;
1249 » case 3:
1250 #line 83 "hb-ot-shape-complex-indic-machine.rl"
1251 » {{p = ((te))-1;}{ found_syllable (vowel_syllable); }}
1252 » break;
1253 » case 7:
1254 #line 84 "hb-ot-shape-complex-indic-machine.rl"
1255 » {{p = ((te))-1;}{ found_syllable (standalone_cluster); }}
1256 » break;
1257 » case 4:
1258 #line 85 "hb-ot-shape-complex-indic-machine.rl"
1259 » {{p = ((te))-1;}{ found_syllable (broken_cluster); }}
1260 » break;
1261 » case 5:
1262 #line 1 "hb-ot-shape-complex-indic-machine.rl"
1263 » {» switch( act ) {
1264 » case 4:
1265 » {{p = ((te))-1;} found_syllable (broken_cluster); }
1266 » break;
1267 » case 5:
1268 » {{p = ((te))-1;} found_syllable (non_indic_cluster); }
1269 » break;
1270 » }
1271 » }
1272 » break;
1273 » case 6:
1274 #line 1 "hb-ot-shape-complex-indic-machine.rl"
1275 » {te = p+1;}
1276 #line 85 "hb-ot-shape-complex-indic-machine.rl"
1277 » {act = 4;}
225 break; 1278 break;
226 case 11: 1279 case 11:
227 #line 73 "hb-ot-shape-complex-indic-machine.rl" 1280 #line 1 "hb-ot-shape-complex-indic-machine.rl"
228 » {te = p+1;{ process_syllable (vowel_syllable); }} 1281 » {te = p+1;}
1282 #line 86 "hb-ot-shape-complex-indic-machine.rl"
1283 » {act = 5;}
229 break; 1284 break;
230 » case 13: 1285 #line 1286 "hb-ot-shape-complex-indic-machine.hh.tmp"
231 #line 74 "hb-ot-shape-complex-indic-machine.rl"
232 » {te = p+1;{ process_syllable (standalone_cluster); }}
233 » break;
234 » case 7:
235 #line 75 "hb-ot-shape-complex-indic-machine.rl"
236 » {te = p+1;{ process_syllable (non_indic); }}
237 » break;
238 » case 8:
239 #line 72 "hb-ot-shape-complex-indic-machine.rl"
240 » {te = p;p--;{ process_syllable (consonant_syllable); }}
241 » break;
242 » case 10:
243 #line 73 "hb-ot-shape-complex-indic-machine.rl"
244 » {te = p;p--;{ process_syllable (vowel_syllable); }}
245 » break;
246 » case 12:
247 #line 74 "hb-ot-shape-complex-indic-machine.rl"
248 » {te = p;p--;{ process_syllable (standalone_cluster); }}
249 » break;
250 » case 1:
251 #line 72 "hb-ot-shape-complex-indic-machine.rl"
252 » {{p = ((te))-1;}{ process_syllable (consonant_syllable); }}
253 » break;
254 » case 3:
255 #line 73 "hb-ot-shape-complex-indic-machine.rl"
256 » {{p = ((te))-1;}{ process_syllable (vowel_syllable); }}
257 » break;
258 » case 4:
259 #line 74 "hb-ot-shape-complex-indic-machine.rl"
260 » {{p = ((te))-1;}{ process_syllable (standalone_cluster); }}
261 » break;
262 #line 263 "hb-ot-shape-complex-indic-machine.hh.tmp"
263 } 1286 }
264 1287
265 _again: 1288 _again:
266 switch ( _indic_syllable_machine_to_state_actions[cs] ) { 1289 switch ( _indic_syllable_machine_to_state_actions[cs] ) {
267 » case 5: 1290 » case 8:
268 #line 1 "hb-ot-shape-complex-indic-machine.rl" 1291 #line 1 "hb-ot-shape-complex-indic-machine.rl"
269 {ts = 0;} 1292 {ts = 0;}
270 break; 1293 break;
271 #line 272 "hb-ot-shape-complex-indic-machine.hh.tmp" 1294 #line 1295 "hb-ot-shape-complex-indic-machine.hh.tmp"
272 } 1295 }
273 1296
274 if ( ++p != pe ) 1297 if ( ++p != pe )
275 goto _resume; 1298 goto _resume;
276 _test_eof: {} 1299 _test_eof: {}
277 if ( p == eof ) 1300 if ( p == eof )
278 { 1301 {
279 if ( _indic_syllable_machine_eof_trans[cs] > 0 ) { 1302 if ( _indic_syllable_machine_eof_trans[cs] > 0 ) {
280 _trans = _indic_syllable_machine_eof_trans[cs] - 1; 1303 _trans = _indic_syllable_machine_eof_trans[cs] - 1;
281 goto _eof_trans; 1304 goto _eof_trans;
282 } 1305 }
283 } 1306 }
284 1307
285 } 1308 }
286 1309
287 #line 110 "hb-ot-shape-complex-indic-machine.rl" 1310 #line 120 "hb-ot-shape-complex-indic-machine.rl"
288 1311
289 } 1312 }
290 1313
291 HB_END_DECLS
292
293 #endif /* HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH */ 1314 #endif /* HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH */
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698