]> git.sesse.net Git - ffmpeg/blob - libavcodec/dirac_vlc.c
hwcontext_vulkan: dlopen libvulkan
[ffmpeg] / libavcodec / dirac_vlc.c
1 /*
2  * This file is part of FFmpeg.
3  *
4  * FFmpeg is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * FFmpeg is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with FFmpeg; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17  */
18
19 #include "libavutil/mem_internal.h"
20
21 #include "dirac_vlc.h"
22
23 enum {
24     /* Next byte contains an exactly aligned start to a new symbol (even bit) */
25     STATE_START  = 0,
26     /* Next byte should end the current value on an odd bit */
27     STATE_FOLLOW = 256,
28     /* Byte is completely data and doesn't end nor start a value */
29     STATE_DATA   = 512,
30     /* Byte has the current value's sign bit and starts a new value */
31     STATE_SIGN   = 768,
32 };
33
34 /* Exactly 128 bits */
35 typedef struct LUTState {
36     int16_t   val0;      /* Bits to which to add after applying preshift */
37     int16_t   val1;
38     int16_t   val2;
39     int16_t   val3;
40     int16_t   val4;
41     uint8_t   val0_bits; /* The size of val0 in bits */
42     int8_t    sign;      /* Sign of the current value (0 == zero the value) */
43     int8_t    num;       /* Number of values in this byte */
44     uint8_t   val;       /* Init value in case current value was terminated */
45     uint16_t  state;     /* Expected state for the next byte */
46 } LUTState;
47
48 static const DECLARE_ALIGNED(32, LUTState, dirac_golomb_lut)[1024] = {
49     { +16,  0,  0,  0,  0, 5, +1, 0,  0, STATE_FOLLOW },
50     { +17,  0,  0,  0,  0, 5, +1, 0,  0, STATE_FOLLOW },
51     {  +8,  0,  0,  0,  0, 4, +1, 1,  0,  STATE_START },
52     {  +8,  0,  0,  0,  0, 4, -1, 1,  0,  STATE_START },
53     { +18,  0,  0,  0,  0, 5, +1, 0,  0, STATE_FOLLOW },
54     { +19,  0,  0,  0,  0, 5, +1, 0,  0, STATE_FOLLOW },
55     {  +9,  0,  0,  0,  0, 4, +1, 1,  0,  STATE_START },
56     {  +9,  0,  0,  0,  0, 4, -1, 1,  0,  STATE_START },
57     {  +4,  0,  0,  0,  0, 3, +1, 1,  2, STATE_FOLLOW },
58     {  +4,  0,  0,  0,  0, 3, +1, 1,  3, STATE_FOLLOW },
59     {  +4,  0,  0,  0,  0, 3, +1, 2,  1,   STATE_DATA },
60     {  +4,  0,  0,  0,  0, 3, +1, 3,  0,  STATE_START },
61     {  +4,  0,  0,  0,  0, 3, -1, 1,  2, STATE_FOLLOW },
62     {  +4,  0,  0,  0,  0, 3, -1, 1,  3, STATE_FOLLOW },
63     {  +4,  0,  0,  0,  0, 3, -1, 2,  1,   STATE_DATA },
64     {  +4,  0,  0,  0,  0, 3, -1, 3,  0,  STATE_START },
65     { +20,  0,  0,  0,  0, 5, +1, 0,  0, STATE_FOLLOW },
66     { +21,  0,  0,  0,  0, 5, +1, 0,  0, STATE_FOLLOW },
67     { +10,  0,  0,  0,  0, 4, +1, 1,  0,  STATE_START },
68     { +10,  0,  0,  0,  0, 4, -1, 1,  0,  STATE_START },
69     { +22,  0,  0,  0,  0, 5, +1, 0,  0, STATE_FOLLOW },
70     { +23,  0,  0,  0,  0, 5, +1, 0,  0, STATE_FOLLOW },
71     { +11,  0,  0,  0,  0, 4, +1, 1,  0,  STATE_START },
72     { +11,  0,  0,  0,  0, 4, -1, 1,  0,  STATE_START },
73     {  +5,  0,  0,  0,  0, 3, +1, 1,  2, STATE_FOLLOW },
74     {  +5,  0,  0,  0,  0, 3, +1, 1,  3, STATE_FOLLOW },
75     {  +5,  0,  0,  0,  0, 3, +1, 2,  1,   STATE_DATA },
76     {  +5,  0,  0,  0,  0, 3, +1, 3,  0,  STATE_START },
77     {  +5,  0,  0,  0,  0, 3, -1, 1,  2, STATE_FOLLOW },
78     {  +5,  0,  0,  0,  0, 3, -1, 1,  3, STATE_FOLLOW },
79     {  +5,  0,  0,  0,  0, 3, -1, 2,  1,   STATE_DATA },
80     {  +5,  0,  0,  0,  0, 3, -1, 3,  0,  STATE_START },
81     {  +2,  0,  0,  0,  0, 2, +1, 1,  4, STATE_FOLLOW },
82     {  +2,  0,  0,  0,  0, 2, +1, 1,  5, STATE_FOLLOW },
83     {  +2, +1,  0,  0,  0, 2, +1, 2,  0,  STATE_START },
84     {  +2, -1,  0,  0,  0, 2, +1, 2,  0,  STATE_START },
85     {  +2,  0,  0,  0,  0, 2, +1, 1,  6, STATE_FOLLOW },
86     {  +2,  0,  0,  0,  0, 2, +1, 1,  7, STATE_FOLLOW },
87     {  +2, +2,  0,  0,  0, 2, +1, 2,  0,  STATE_START },
88     {  +2, -2,  0,  0,  0, 2, +1, 2,  0,  STATE_START },
89     {  +2,  0,  0,  0,  0, 2, +1, 2,  2,   STATE_DATA },
90     {  +2,  0,  0,  0,  0, 2, +1, 2,  2,   STATE_SIGN },
91     {  +2,  0,  0,  0,  0, 2, +1, 2,  3,   STATE_DATA },
92     {  +2,  0,  0,  0,  0, 2, +1, 2,  3,   STATE_SIGN },
93     {  +2,  0,  0,  0,  0, 2, +1, 3,  2, STATE_FOLLOW },
94     {  +2,  0,  0,  0,  0, 2, +1, 3,  3, STATE_FOLLOW },
95     {  +2,  0,  0,  0,  0, 2, +1, 4,  1,   STATE_DATA },
96     {  +2,  0,  0,  0,  0, 2, +1, 5,  0,  STATE_START },
97     {  +2,  0,  0,  0,  0, 2, -1, 1,  4, STATE_FOLLOW },
98     {  +2,  0,  0,  0,  0, 2, -1, 1,  5, STATE_FOLLOW },
99     {  +2, +1,  0,  0,  0, 2, -1, 2,  0,  STATE_START },
100     {  +2, -1,  0,  0,  0, 2, -1, 2,  0,  STATE_START },
101     {  +2,  0,  0,  0,  0, 2, -1, 1,  6, STATE_FOLLOW },
102     {  +2,  0,  0,  0,  0, 2, -1, 1,  7, STATE_FOLLOW },
103     {  +2, +2,  0,  0,  0, 2, -1, 2,  0,  STATE_START },
104     {  +2, -2,  0,  0,  0, 2, -1, 2,  0,  STATE_START },
105     {  +2,  0,  0,  0,  0, 2, -1, 2,  2,   STATE_DATA },
106     {  +2,  0,  0,  0,  0, 2, -1, 2,  2,   STATE_SIGN },
107     {  +2,  0,  0,  0,  0, 2, -1, 2,  3,   STATE_DATA },
108     {  +2,  0,  0,  0,  0, 2, -1, 2,  3,   STATE_SIGN },
109     {  +2,  0,  0,  0,  0, 2, -1, 3,  2, STATE_FOLLOW },
110     {  +2,  0,  0,  0,  0, 2, -1, 3,  3, STATE_FOLLOW },
111     {  +2,  0,  0,  0,  0, 2, -1, 4,  1,   STATE_DATA },
112     {  +2,  0,  0,  0,  0, 2, -1, 5,  0,  STATE_START },
113     { +24,  0,  0,  0,  0, 5, +1, 0,  0, STATE_FOLLOW },
114     { +25,  0,  0,  0,  0, 5, +1, 0,  0, STATE_FOLLOW },
115     { +12,  0,  0,  0,  0, 4, +1, 1,  0,  STATE_START },
116     { +12,  0,  0,  0,  0, 4, -1, 1,  0,  STATE_START },
117     { +26,  0,  0,  0,  0, 5, +1, 0,  0, STATE_FOLLOW },
118     { +27,  0,  0,  0,  0, 5, +1, 0,  0, STATE_FOLLOW },
119     { +13,  0,  0,  0,  0, 4, +1, 1,  0,  STATE_START },
120     { +13,  0,  0,  0,  0, 4, -1, 1,  0,  STATE_START },
121     {  +6,  0,  0,  0,  0, 3, +1, 1,  2, STATE_FOLLOW },
122     {  +6,  0,  0,  0,  0, 3, +1, 1,  3, STATE_FOLLOW },
123     {  +6,  0,  0,  0,  0, 3, +1, 2,  1,   STATE_DATA },
124     {  +6,  0,  0,  0,  0, 3, +1, 3,  0,  STATE_START },
125     {  +6,  0,  0,  0,  0, 3, -1, 1,  2, STATE_FOLLOW },
126     {  +6,  0,  0,  0,  0, 3, -1, 1,  3, STATE_FOLLOW },
127     {  +6,  0,  0,  0,  0, 3, -1, 2,  1,   STATE_DATA },
128     {  +6,  0,  0,  0,  0, 3, -1, 3,  0,  STATE_START },
129     { +28,  0,  0,  0,  0, 5, +1, 0,  0, STATE_FOLLOW },
130     { +29,  0,  0,  0,  0, 5, +1, 0,  0, STATE_FOLLOW },
131     { +14,  0,  0,  0,  0, 4, +1, 1,  0,  STATE_START },
132     { +14,  0,  0,  0,  0, 4, -1, 1,  0,  STATE_START },
133     { +30,  0,  0,  0,  0, 5, +1, 0,  0, STATE_FOLLOW },
134     { +31,  0,  0,  0,  0, 5, +1, 0,  0, STATE_FOLLOW },
135     { +15,  0,  0,  0,  0, 4, +1, 1,  0,  STATE_START },
136     { +15,  0,  0,  0,  0, 4, -1, 1,  0,  STATE_START },
137     {  +7,  0,  0,  0,  0, 3, +1, 1,  2, STATE_FOLLOW },
138     {  +7,  0,  0,  0,  0, 3, +1, 1,  3, STATE_FOLLOW },
139     {  +7,  0,  0,  0,  0, 3, +1, 2,  1,   STATE_DATA },
140     {  +7,  0,  0,  0,  0, 3, +1, 3,  0,  STATE_START },
141     {  +7,  0,  0,  0,  0, 3, -1, 1,  2, STATE_FOLLOW },
142     {  +7,  0,  0,  0,  0, 3, -1, 1,  3, STATE_FOLLOW },
143     {  +7,  0,  0,  0,  0, 3, -1, 2,  1,   STATE_DATA },
144     {  +7,  0,  0,  0,  0, 3, -1, 3,  0,  STATE_START },
145     {  +3,  0,  0,  0,  0, 2, +1, 1,  4, STATE_FOLLOW },
146     {  +3,  0,  0,  0,  0, 2, +1, 1,  5, STATE_FOLLOW },
147     {  +3, +1,  0,  0,  0, 2, +1, 2,  0,  STATE_START },
148     {  +3, -1,  0,  0,  0, 2, +1, 2,  0,  STATE_START },
149     {  +3,  0,  0,  0,  0, 2, +1, 1,  6, STATE_FOLLOW },
150     {  +3,  0,  0,  0,  0, 2, +1, 1,  7, STATE_FOLLOW },
151     {  +3, +2,  0,  0,  0, 2, +1, 2,  0,  STATE_START },
152     {  +3, -2,  0,  0,  0, 2, +1, 2,  0,  STATE_START },
153     {  +3,  0,  0,  0,  0, 2, +1, 2,  2,   STATE_DATA },
154     {  +3,  0,  0,  0,  0, 2, +1, 2,  2,   STATE_SIGN },
155     {  +3,  0,  0,  0,  0, 2, +1, 2,  3,   STATE_DATA },
156     {  +3,  0,  0,  0,  0, 2, +1, 2,  3,   STATE_SIGN },
157     {  +3,  0,  0,  0,  0, 2, +1, 3,  2, STATE_FOLLOW },
158     {  +3,  0,  0,  0,  0, 2, +1, 3,  3, STATE_FOLLOW },
159     {  +3,  0,  0,  0,  0, 2, +1, 4,  1,   STATE_DATA },
160     {  +3,  0,  0,  0,  0, 2, +1, 5,  0,  STATE_START },
161     {  +3,  0,  0,  0,  0, 2, -1, 1,  4, STATE_FOLLOW },
162     {  +3,  0,  0,  0,  0, 2, -1, 1,  5, STATE_FOLLOW },
163     {  +3, +1,  0,  0,  0, 2, -1, 2,  0,  STATE_START },
164     {  +3, -1,  0,  0,  0, 2, -1, 2,  0,  STATE_START },
165     {  +3,  0,  0,  0,  0, 2, -1, 1,  6, STATE_FOLLOW },
166     {  +3,  0,  0,  0,  0, 2, -1, 1,  7, STATE_FOLLOW },
167     {  +3, +2,  0,  0,  0, 2, -1, 2,  0,  STATE_START },
168     {  +3, -2,  0,  0,  0, 2, -1, 2,  0,  STATE_START },
169     {  +3,  0,  0,  0,  0, 2, -1, 2,  2,   STATE_DATA },
170     {  +3,  0,  0,  0,  0, 2, -1, 2,  2,   STATE_SIGN },
171     {  +3,  0,  0,  0,  0, 2, -1, 2,  3,   STATE_DATA },
172     {  +3,  0,  0,  0,  0, 2, -1, 2,  3,   STATE_SIGN },
173     {  +3,  0,  0,  0,  0, 2, -1, 3,  2, STATE_FOLLOW },
174     {  +3,  0,  0,  0,  0, 2, -1, 3,  3, STATE_FOLLOW },
175     {  +3,  0,  0,  0,  0, 2, -1, 4,  1,   STATE_DATA },
176     {  +3,  0,  0,  0,  0, 2, -1, 5,  0,  STATE_START },
177     {   0,  0,  0,  0,  0, 0,  0, 1,  8,   STATE_DATA },
178     {   0,  0,  0,  0,  0, 0,  0, 1,  8,   STATE_SIGN },
179     {   0,  0,  0,  0,  0, 0,  0, 1,  9,   STATE_DATA },
180     {   0,  0,  0,  0,  0, 0,  0, 1,  9,   STATE_SIGN },
181     {   0, +3,  0,  0,  0, 0,  0, 2,  1,   STATE_DATA },
182     {   0, +3,  0,  0,  0, 0,  0, 3,  0,  STATE_START },
183     {   0, -3,  0,  0,  0, 0,  0, 2,  1,   STATE_DATA },
184     {   0, -3,  0,  0,  0, 0,  0, 3,  0,  STATE_START },
185     {   0,  0,  0,  0,  0, 0,  0, 1, 10,   STATE_DATA },
186     {   0,  0,  0,  0,  0, 0,  0, 1, 10,   STATE_SIGN },
187     {   0,  0,  0,  0,  0, 0,  0, 1, 11,   STATE_DATA },
188     {   0,  0,  0,  0,  0, 0,  0, 1, 11,   STATE_SIGN },
189     {   0, +4,  0,  0,  0, 0,  0, 2,  1,   STATE_DATA },
190     {   0, +4,  0,  0,  0, 0,  0, 3,  0,  STATE_START },
191     {   0, -4,  0,  0,  0, 0,  0, 2,  1,   STATE_DATA },
192     {   0, -4,  0,  0,  0, 0,  0, 3,  0,  STATE_START },
193     {   0, +1,  0,  0,  0, 0,  0, 2,  2,   STATE_DATA },
194     {   0, +1,  0,  0,  0, 0,  0, 2,  2,   STATE_SIGN },
195     {   0, +1,  0,  0,  0, 0,  0, 2,  3,   STATE_DATA },
196     {   0, +1,  0,  0,  0, 0,  0, 2,  3,   STATE_SIGN },
197     {   0, +1,  0,  0,  0, 0,  0, 3,  2, STATE_FOLLOW },
198     {   0, +1,  0,  0,  0, 0,  0, 3,  3, STATE_FOLLOW },
199     {   0, +1,  0,  0,  0, 0,  0, 4,  1,   STATE_DATA },
200     {   0, +1,  0,  0,  0, 0,  0, 5,  0,  STATE_START },
201     {   0, -1,  0,  0,  0, 0,  0, 2,  2,   STATE_DATA },
202     {   0, -1,  0,  0,  0, 0,  0, 2,  2,   STATE_SIGN },
203     {   0, -1,  0,  0,  0, 0,  0, 2,  3,   STATE_DATA },
204     {   0, -1,  0,  0,  0, 0,  0, 2,  3,   STATE_SIGN },
205     {   0, -1,  0,  0,  0, 0,  0, 3,  2, STATE_FOLLOW },
206     {   0, -1,  0,  0,  0, 0,  0, 3,  3, STATE_FOLLOW },
207     {   0, -1,  0,  0,  0, 0,  0, 4,  1,   STATE_DATA },
208     {   0, -1,  0,  0,  0, 0,  0, 5,  0,  STATE_START },
209     {   0,  0,  0,  0,  0, 0,  0, 1, 12,   STATE_DATA },
210     {   0,  0,  0,  0,  0, 0,  0, 1, 12,   STATE_SIGN },
211     {   0,  0,  0,  0,  0, 0,  0, 1, 13,   STATE_DATA },
212     {   0,  0,  0,  0,  0, 0,  0, 1, 13,   STATE_SIGN },
213     {   0, +5,  0,  0,  0, 0,  0, 2,  1,   STATE_DATA },
214     {   0, +5,  0,  0,  0, 0,  0, 3,  0,  STATE_START },
215     {   0, -5,  0,  0,  0, 0,  0, 2,  1,   STATE_DATA },
216     {   0, -5,  0,  0,  0, 0,  0, 3,  0,  STATE_START },
217     {   0,  0,  0,  0,  0, 0,  0, 1, 14,   STATE_DATA },
218     {   0,  0,  0,  0,  0, 0,  0, 1, 14,   STATE_SIGN },
219     {   0,  0,  0,  0,  0, 0,  0, 1, 15,   STATE_DATA },
220     {   0,  0,  0,  0,  0, 0,  0, 1, 15,   STATE_SIGN },
221     {   0, +6,  0,  0,  0, 0,  0, 2,  1,   STATE_DATA },
222     {   0, +6,  0,  0,  0, 0,  0, 3,  0,  STATE_START },
223     {   0, -6,  0,  0,  0, 0,  0, 2,  1,   STATE_DATA },
224     {   0, -6,  0,  0,  0, 0,  0, 3,  0,  STATE_START },
225     {   0, +2,  0,  0,  0, 0,  0, 2,  2,   STATE_DATA },
226     {   0, +2,  0,  0,  0, 0,  0, 2,  2,   STATE_SIGN },
227     {   0, +2,  0,  0,  0, 0,  0, 2,  3,   STATE_DATA },
228     {   0, +2,  0,  0,  0, 0,  0, 2,  3,   STATE_SIGN },
229     {   0, +2,  0,  0,  0, 0,  0, 3,  2, STATE_FOLLOW },
230     {   0, +2,  0,  0,  0, 0,  0, 3,  3, STATE_FOLLOW },
231     {   0, +2,  0,  0,  0, 0,  0, 4,  1,   STATE_DATA },
232     {   0, +2,  0,  0,  0, 0,  0, 5,  0,  STATE_START },
233     {   0, -2,  0,  0,  0, 0,  0, 2,  2,   STATE_DATA },
234     {   0, -2,  0,  0,  0, 0,  0, 2,  2,   STATE_SIGN },
235     {   0, -2,  0,  0,  0, 0,  0, 2,  3,   STATE_DATA },
236     {   0, -2,  0,  0,  0, 0,  0, 2,  3,   STATE_SIGN },
237     {   0, -2,  0,  0,  0, 0,  0, 3,  2, STATE_FOLLOW },
238     {   0, -2,  0,  0,  0, 0,  0, 3,  3, STATE_FOLLOW },
239     {   0, -2,  0,  0,  0, 0,  0, 4,  1,   STATE_DATA },
240     {   0, -2,  0,  0,  0, 0,  0, 5,  0,  STATE_START },
241     {   0,  0,  0,  0,  0, 0,  0, 2,  8, STATE_FOLLOW },
242     {   0,  0,  0,  0,  0, 0,  0, 2,  9, STATE_FOLLOW },
243     {   0,  0, +3,  0,  0, 0,  0, 3,  0,  STATE_START },
244     {   0,  0, -3,  0,  0, 0,  0, 3,  0,  STATE_START },
245     {   0,  0,  0,  0,  0, 0,  0, 2, 10, STATE_FOLLOW },
246     {   0,  0,  0,  0,  0, 0,  0, 2, 11, STATE_FOLLOW },
247     {   0,  0, +4,  0,  0, 0,  0, 3,  0,  STATE_START },
248     {   0,  0, -4,  0,  0, 0,  0, 3,  0,  STATE_START },
249     {   0,  0, +1,  0,  0, 0,  0, 3,  2, STATE_FOLLOW },
250     {   0,  0, +1,  0,  0, 0,  0, 3,  3, STATE_FOLLOW },
251     {   0,  0, +1,  0,  0, 0,  0, 4,  1,   STATE_DATA },
252     {   0,  0, +1,  0,  0, 0,  0, 5,  0,  STATE_START },
253     {   0,  0, -1,  0,  0, 0,  0, 3,  2, STATE_FOLLOW },
254     {   0,  0, -1,  0,  0, 0,  0, 3,  3, STATE_FOLLOW },
255     {   0,  0, -1,  0,  0, 0,  0, 4,  1,   STATE_DATA },
256     {   0,  0, -1,  0,  0, 0,  0, 5,  0,  STATE_START },
257     {   0,  0,  0,  0,  0, 0,  0, 2, 12, STATE_FOLLOW },
258     {   0,  0,  0,  0,  0, 0,  0, 2, 13, STATE_FOLLOW },
259     {   0,  0, +5,  0,  0, 0,  0, 3,  0,  STATE_START },
260     {   0,  0, -5,  0,  0, 0,  0, 3,  0,  STATE_START },
261     {   0,  0,  0,  0,  0, 0,  0, 2, 14, STATE_FOLLOW },
262     {   0,  0,  0,  0,  0, 0,  0, 2, 15, STATE_FOLLOW },
263     {   0,  0, +6,  0,  0, 0,  0, 3,  0,  STATE_START },
264     {   0,  0, -6,  0,  0, 0,  0, 3,  0,  STATE_START },
265     {   0,  0, +2,  0,  0, 0,  0, 3,  2, STATE_FOLLOW },
266     {   0,  0, +2,  0,  0, 0,  0, 3,  3, STATE_FOLLOW },
267     {   0,  0, +2,  0,  0, 0,  0, 4,  1,   STATE_DATA },
268     {   0,  0, +2,  0,  0, 0,  0, 5,  0,  STATE_START },
269     {   0,  0, -2,  0,  0, 0,  0, 3,  2, STATE_FOLLOW },
270     {   0,  0, -2,  0,  0, 0,  0, 3,  3, STATE_FOLLOW },
271     {   0,  0, -2,  0,  0, 0,  0, 4,  1,   STATE_DATA },
272     {   0,  0, -2,  0,  0, 0,  0, 5,  0,  STATE_START },
273     {   0,  0,  0,  0,  0, 0,  0, 3,  4,   STATE_DATA },
274     {   0,  0,  0,  0,  0, 0,  0, 3,  4,   STATE_SIGN },
275     {   0,  0,  0,  0,  0, 0,  0, 3,  5,   STATE_DATA },
276     {   0,  0,  0,  0,  0, 0,  0, 3,  5,   STATE_SIGN },
277     {   0,  0,  0, +1,  0, 0,  0, 4,  1,   STATE_DATA },
278     {   0,  0,  0, +1,  0, 0,  0, 5,  0,  STATE_START },
279     {   0,  0,  0, -1,  0, 0,  0, 4,  1,   STATE_DATA },
280     {   0,  0,  0, -1,  0, 0,  0, 5,  0,  STATE_START },
281     {   0,  0,  0,  0,  0, 0,  0, 3,  6,   STATE_DATA },
282     {   0,  0,  0,  0,  0, 0,  0, 3,  6,   STATE_SIGN },
283     {   0,  0,  0,  0,  0, 0,  0, 3,  7,   STATE_DATA },
284     {   0,  0,  0,  0,  0, 0,  0, 3,  7,   STATE_SIGN },
285     {   0,  0,  0, +2,  0, 0,  0, 4,  1,   STATE_DATA },
286     {   0,  0,  0, +2,  0, 0,  0, 5,  0,  STATE_START },
287     {   0,  0,  0, -2,  0, 0,  0, 4,  1,   STATE_DATA },
288     {   0,  0,  0, -2,  0, 0,  0, 5,  0,  STATE_START },
289     {   0,  0,  0,  0,  0, 0,  0, 4,  4, STATE_FOLLOW },
290     {   0,  0,  0,  0,  0, 0,  0, 4,  5, STATE_FOLLOW },
291     {   0,  0,  0,  0, +1, 0,  0, 5,  0,  STATE_START },
292     {   0,  0,  0,  0, -1, 0,  0, 5,  0,  STATE_START },
293     {   0,  0,  0,  0,  0, 0,  0, 4,  6, STATE_FOLLOW },
294     {   0,  0,  0,  0,  0, 0,  0, 4,  7, STATE_FOLLOW },
295     {   0,  0,  0,  0, +2, 0,  0, 5,  0,  STATE_START },
296     {   0,  0,  0,  0, -2, 0,  0, 5,  0,  STATE_START },
297     {   0,  0,  0,  0,  0, 0,  0, 5,  2,   STATE_DATA },
298     {   0,  0,  0,  0,  0, 0,  0, 5,  2,   STATE_SIGN },
299     {   0,  0,  0,  0,  0, 0,  0, 5,  3,   STATE_DATA },
300     {   0,  0,  0,  0,  0, 0,  0, 5,  3,   STATE_SIGN },
301     {   0,  0,  0,  0,  0, 0,  0, 6,  2, STATE_FOLLOW },
302     {   0,  0,  0,  0,  0, 0,  0, 6,  3, STATE_FOLLOW },
303     {   0,  0,  0,  0,  0, 0,  0, 7,  1,   STATE_DATA },
304     {   0,  0,  0,  0,  0, 0,  0, 8,  0,  STATE_START },
305     {   0,  0,  0,  0,  0, 4, +1, 0,  0, STATE_FOLLOW },
306     {  +1,  0,  0,  0,  0, 4, +1, 0,  0, STATE_FOLLOW },
307     {   0,  0,  0,  0,  0, 3, +1, 1,  0,  STATE_START },
308     {   0,  0,  0,  0,  0, 3, -1, 1,  0,  STATE_START },
309     {  +2,  0,  0,  0,  0, 4, +1, 0,  0, STATE_FOLLOW },
310     {  +3,  0,  0,  0,  0, 4, +1, 0,  0, STATE_FOLLOW },
311     {  +1,  0,  0,  0,  0, 3, +1, 1,  0,  STATE_START },
312     {  +1,  0,  0,  0,  0, 3, -1, 1,  0,  STATE_START },
313     {   0,  0,  0,  0,  0, 2, +1, 1,  2, STATE_FOLLOW },
314     {   0,  0,  0,  0,  0, 2, +1, 1,  3, STATE_FOLLOW },
315     {   0,  0,  0,  0,  0, 2, +1, 2,  1,   STATE_DATA },
316     {   0,  0,  0,  0,  0, 2, +1, 3,  0,  STATE_START },
317     {   0,  0,  0,  0,  0, 2, -1, 1,  2, STATE_FOLLOW },
318     {   0,  0,  0,  0,  0, 2, -1, 1,  3, STATE_FOLLOW },
319     {   0,  0,  0,  0,  0, 2, -1, 2,  1,   STATE_DATA },
320     {   0,  0,  0,  0,  0, 2, -1, 3,  0,  STATE_START },
321     {  +4,  0,  0,  0,  0, 4, +1, 0,  0, STATE_FOLLOW },
322     {  +5,  0,  0,  0,  0, 4, +1, 0,  0, STATE_FOLLOW },
323     {  +2,  0,  0,  0,  0, 3, +1, 1,  0,  STATE_START },
324     {  +2,  0,  0,  0,  0, 3, -1, 1,  0,  STATE_START },
325     {  +6,  0,  0,  0,  0, 4, +1, 0,  0, STATE_FOLLOW },
326     {  +7,  0,  0,  0,  0, 4, +1, 0,  0, STATE_FOLLOW },
327     {  +3,  0,  0,  0,  0, 3, +1, 1,  0,  STATE_START },
328     {  +3,  0,  0,  0,  0, 3, -1, 1,  0,  STATE_START },
329     {  +1,  0,  0,  0,  0, 2, +1, 1,  2, STATE_FOLLOW },
330     {  +1,  0,  0,  0,  0, 2, +1, 1,  3, STATE_FOLLOW },
331     {  +1,  0,  0,  0,  0, 2, +1, 2,  1,   STATE_DATA },
332     {  +1,  0,  0,  0,  0, 2, +1, 3,  0,  STATE_START },
333     {  +1,  0,  0,  0,  0, 2, -1, 1,  2, STATE_FOLLOW },
334     {  +1,  0,  0,  0,  0, 2, -1, 1,  3, STATE_FOLLOW },
335     {  +1,  0,  0,  0,  0, 2, -1, 2,  1,   STATE_DATA },
336     {  +1,  0,  0,  0,  0, 2, -1, 3,  0,  STATE_START },
337     {   0,  0,  0,  0,  0, 1, +1, 1,  4, STATE_FOLLOW },
338     {   0,  0,  0,  0,  0, 1, +1, 1,  5, STATE_FOLLOW },
339     {   0, +1,  0,  0,  0, 1, +1, 2,  0,  STATE_START },
340     {   0, -1,  0,  0,  0, 1, +1, 2,  0,  STATE_START },
341     {   0,  0,  0,  0,  0, 1, +1, 1,  6, STATE_FOLLOW },
342     {   0,  0,  0,  0,  0, 1, +1, 1,  7, STATE_FOLLOW },
343     {   0, +2,  0,  0,  0, 1, +1, 2,  0,  STATE_START },
344     {   0, -2,  0,  0,  0, 1, +1, 2,  0,  STATE_START },
345     {   0,  0,  0,  0,  0, 1, +1, 2,  2,   STATE_DATA },
346     {   0,  0,  0,  0,  0, 1, +1, 2,  2,   STATE_SIGN },
347     {   0,  0,  0,  0,  0, 1, +1, 2,  3,   STATE_DATA },
348     {   0,  0,  0,  0,  0, 1, +1, 2,  3,   STATE_SIGN },
349     {   0,  0,  0,  0,  0, 1, +1, 3,  2, STATE_FOLLOW },
350     {   0,  0,  0,  0,  0, 1, +1, 3,  3, STATE_FOLLOW },
351     {   0,  0,  0,  0,  0, 1, +1, 4,  1,   STATE_DATA },
352     {   0,  0,  0,  0,  0, 1, +1, 5,  0,  STATE_START },
353     {   0,  0,  0,  0,  0, 1, -1, 1,  4, STATE_FOLLOW },
354     {   0,  0,  0,  0,  0, 1, -1, 1,  5, STATE_FOLLOW },
355     {   0, +1,  0,  0,  0, 1, -1, 2,  0,  STATE_START },
356     {   0, -1,  0,  0,  0, 1, -1, 2,  0,  STATE_START },
357     {   0,  0,  0,  0,  0, 1, -1, 1,  6, STATE_FOLLOW },
358     {   0,  0,  0,  0,  0, 1, -1, 1,  7, STATE_FOLLOW },
359     {   0, +2,  0,  0,  0, 1, -1, 2,  0,  STATE_START },
360     {   0, -2,  0,  0,  0, 1, -1, 2,  0,  STATE_START },
361     {   0,  0,  0,  0,  0, 1, -1, 2,  2,   STATE_DATA },
362     {   0,  0,  0,  0,  0, 1, -1, 2,  2,   STATE_SIGN },
363     {   0,  0,  0,  0,  0, 1, -1, 2,  3,   STATE_DATA },
364     {   0,  0,  0,  0,  0, 1, -1, 2,  3,   STATE_SIGN },
365     {   0,  0,  0,  0,  0, 1, -1, 3,  2, STATE_FOLLOW },
366     {   0,  0,  0,  0,  0, 1, -1, 3,  3, STATE_FOLLOW },
367     {   0,  0,  0,  0,  0, 1, -1, 4,  1,   STATE_DATA },
368     {   0,  0,  0,  0,  0, 1, -1, 5,  0,  STATE_START },
369     {  +8,  0,  0,  0,  0, 4, +1, 0,  0, STATE_FOLLOW },
370     {  +9,  0,  0,  0,  0, 4, +1, 0,  0, STATE_FOLLOW },
371     {  +4,  0,  0,  0,  0, 3, +1, 1,  0,  STATE_START },
372     {  +4,  0,  0,  0,  0, 3, -1, 1,  0,  STATE_START },
373     { +10,  0,  0,  0,  0, 4, +1, 0,  0, STATE_FOLLOW },
374     { +11,  0,  0,  0,  0, 4, +1, 0,  0, STATE_FOLLOW },
375     {  +5,  0,  0,  0,  0, 3, +1, 1,  0,  STATE_START },
376     {  +5,  0,  0,  0,  0, 3, -1, 1,  0,  STATE_START },
377     {  +2,  0,  0,  0,  0, 2, +1, 1,  2, STATE_FOLLOW },
378     {  +2,  0,  0,  0,  0, 2, +1, 1,  3, STATE_FOLLOW },
379     {  +2,  0,  0,  0,  0, 2, +1, 2,  1,   STATE_DATA },
380     {  +2,  0,  0,  0,  0, 2, +1, 3,  0,  STATE_START },
381     {  +2,  0,  0,  0,  0, 2, -1, 1,  2, STATE_FOLLOW },
382     {  +2,  0,  0,  0,  0, 2, -1, 1,  3, STATE_FOLLOW },
383     {  +2,  0,  0,  0,  0, 2, -1, 2,  1,   STATE_DATA },
384     {  +2,  0,  0,  0,  0, 2, -1, 3,  0,  STATE_START },
385     { +12,  0,  0,  0,  0, 4, +1, 0,  0, STATE_FOLLOW },
386     { +13,  0,  0,  0,  0, 4, +1, 0,  0, STATE_FOLLOW },
387     {  +6,  0,  0,  0,  0, 3, +1, 1,  0,  STATE_START },
388     {  +6,  0,  0,  0,  0, 3, -1, 1,  0,  STATE_START },
389     { +14,  0,  0,  0,  0, 4, +1, 0,  0, STATE_FOLLOW },
390     { +15,  0,  0,  0,  0, 4, +1, 0,  0, STATE_FOLLOW },
391     {  +7,  0,  0,  0,  0, 3, +1, 1,  0,  STATE_START },
392     {  +7,  0,  0,  0,  0, 3, -1, 1,  0,  STATE_START },
393     {  +3,  0,  0,  0,  0, 2, +1, 1,  2, STATE_FOLLOW },
394     {  +3,  0,  0,  0,  0, 2, +1, 1,  3, STATE_FOLLOW },
395     {  +3,  0,  0,  0,  0, 2, +1, 2,  1,   STATE_DATA },
396     {  +3,  0,  0,  0,  0, 2, +1, 3,  0,  STATE_START },
397     {  +3,  0,  0,  0,  0, 2, -1, 1,  2, STATE_FOLLOW },
398     {  +3,  0,  0,  0,  0, 2, -1, 1,  3, STATE_FOLLOW },
399     {  +3,  0,  0,  0,  0, 2, -1, 2,  1,   STATE_DATA },
400     {  +3,  0,  0,  0,  0, 2, -1, 3,  0,  STATE_START },
401     {  +1,  0,  0,  0,  0, 1, +1, 1,  4, STATE_FOLLOW },
402     {  +1,  0,  0,  0,  0, 1, +1, 1,  5, STATE_FOLLOW },
403     {  +1, +1,  0,  0,  0, 1, +1, 2,  0,  STATE_START },
404     {  +1, -1,  0,  0,  0, 1, +1, 2,  0,  STATE_START },
405     {  +1,  0,  0,  0,  0, 1, +1, 1,  6, STATE_FOLLOW },
406     {  +1,  0,  0,  0,  0, 1, +1, 1,  7, STATE_FOLLOW },
407     {  +1, +2,  0,  0,  0, 1, +1, 2,  0,  STATE_START },
408     {  +1, -2,  0,  0,  0, 1, +1, 2,  0,  STATE_START },
409     {  +1,  0,  0,  0,  0, 1, +1, 2,  2,   STATE_DATA },
410     {  +1,  0,  0,  0,  0, 1, +1, 2,  2,   STATE_SIGN },
411     {  +1,  0,  0,  0,  0, 1, +1, 2,  3,   STATE_DATA },
412     {  +1,  0,  0,  0,  0, 1, +1, 2,  3,   STATE_SIGN },
413     {  +1,  0,  0,  0,  0, 1, +1, 3,  2, STATE_FOLLOW },
414     {  +1,  0,  0,  0,  0, 1, +1, 3,  3, STATE_FOLLOW },
415     {  +1,  0,  0,  0,  0, 1, +1, 4,  1,   STATE_DATA },
416     {  +1,  0,  0,  0,  0, 1, +1, 5,  0,  STATE_START },
417     {  +1,  0,  0,  0,  0, 1, -1, 1,  4, STATE_FOLLOW },
418     {  +1,  0,  0,  0,  0, 1, -1, 1,  5, STATE_FOLLOW },
419     {  +1, +1,  0,  0,  0, 1, -1, 2,  0,  STATE_START },
420     {  +1, -1,  0,  0,  0, 1, -1, 2,  0,  STATE_START },
421     {  +1,  0,  0,  0,  0, 1, -1, 1,  6, STATE_FOLLOW },
422     {  +1,  0,  0,  0,  0, 1, -1, 1,  7, STATE_FOLLOW },
423     {  +1, +2,  0,  0,  0, 1, -1, 2,  0,  STATE_START },
424     {  +1, -2,  0,  0,  0, 1, -1, 2,  0,  STATE_START },
425     {  +1,  0,  0,  0,  0, 1, -1, 2,  2,   STATE_DATA },
426     {  +1,  0,  0,  0,  0, 1, -1, 2,  2,   STATE_SIGN },
427     {  +1,  0,  0,  0,  0, 1, -1, 2,  3,   STATE_DATA },
428     {  +1,  0,  0,  0,  0, 1, -1, 2,  3,   STATE_SIGN },
429     {  +1,  0,  0,  0,  0, 1, -1, 3,  2, STATE_FOLLOW },
430     {  +1,  0,  0,  0,  0, 1, -1, 3,  3, STATE_FOLLOW },
431     {  +1,  0,  0,  0,  0, 1, -1, 4,  1,   STATE_DATA },
432     {  +1,  0,  0,  0,  0, 1, -1, 5,  0,  STATE_START },
433     {   0,  0,  0,  0,  0, 0, +1, 1,  8, STATE_FOLLOW },
434     {   0,  0,  0,  0,  0, 0, +1, 1,  9, STATE_FOLLOW },
435     {   0, +3,  0,  0,  0, 0, +1, 2,  0,  STATE_START },
436     {   0, -3,  0,  0,  0, 0, +1, 2,  0,  STATE_START },
437     {   0,  0,  0,  0,  0, 0, +1, 1, 10, STATE_FOLLOW },
438     {   0,  0,  0,  0,  0, 0, +1, 1, 11, STATE_FOLLOW },
439     {   0, +4,  0,  0,  0, 0, +1, 2,  0,  STATE_START },
440     {   0, -4,  0,  0,  0, 0, +1, 2,  0,  STATE_START },
441     {   0, +1,  0,  0,  0, 0, +1, 2,  2, STATE_FOLLOW },
442     {   0, +1,  0,  0,  0, 0, +1, 2,  3, STATE_FOLLOW },
443     {   0, +1,  0,  0,  0, 0, +1, 3,  1,   STATE_DATA },
444     {   0, +1,  0,  0,  0, 0, +1, 4,  0,  STATE_START },
445     {   0, -1,  0,  0,  0, 0, +1, 2,  2, STATE_FOLLOW },
446     {   0, -1,  0,  0,  0, 0, +1, 2,  3, STATE_FOLLOW },
447     {   0, -1,  0,  0,  0, 0, +1, 3,  1,   STATE_DATA },
448     {   0, -1,  0,  0,  0, 0, +1, 4,  0,  STATE_START },
449     {   0,  0,  0,  0,  0, 0, +1, 1, 12, STATE_FOLLOW },
450     {   0,  0,  0,  0,  0, 0, +1, 1, 13, STATE_FOLLOW },
451     {   0, +5,  0,  0,  0, 0, +1, 2,  0,  STATE_START },
452     {   0, -5,  0,  0,  0, 0, +1, 2,  0,  STATE_START },
453     {   0,  0,  0,  0,  0, 0, +1, 1, 14, STATE_FOLLOW },
454     {   0,  0,  0,  0,  0, 0, +1, 1, 15, STATE_FOLLOW },
455     {   0, +6,  0,  0,  0, 0, +1, 2,  0,  STATE_START },
456     {   0, -6,  0,  0,  0, 0, +1, 2,  0,  STATE_START },
457     {   0, +2,  0,  0,  0, 0, +1, 2,  2, STATE_FOLLOW },
458     {   0, +2,  0,  0,  0, 0, +1, 2,  3, STATE_FOLLOW },
459     {   0, +2,  0,  0,  0, 0, +1, 3,  1,   STATE_DATA },
460     {   0, +2,  0,  0,  0, 0, +1, 4,  0,  STATE_START },
461     {   0, -2,  0,  0,  0, 0, +1, 2,  2, STATE_FOLLOW },
462     {   0, -2,  0,  0,  0, 0, +1, 2,  3, STATE_FOLLOW },
463     {   0, -2,  0,  0,  0, 0, +1, 3,  1,   STATE_DATA },
464     {   0, -2,  0,  0,  0, 0, +1, 4,  0,  STATE_START },
465     {   0,  0,  0,  0,  0, 0, +1, 2,  4,   STATE_DATA },
466     {   0,  0,  0,  0,  0, 0, +1, 2,  4,   STATE_SIGN },
467     {   0,  0,  0,  0,  0, 0, +1, 2,  5,   STATE_DATA },
468     {   0,  0,  0,  0,  0, 0, +1, 2,  5,   STATE_SIGN },
469     {   0,  0, +1,  0,  0, 0, +1, 3,  1,   STATE_DATA },
470     {   0,  0, +1,  0,  0, 0, +1, 4,  0,  STATE_START },
471     {   0,  0, -1,  0,  0, 0, +1, 3,  1,   STATE_DATA },
472     {   0,  0, -1,  0,  0, 0, +1, 4,  0,  STATE_START },
473     {   0,  0,  0,  0,  0, 0, +1, 2,  6,   STATE_DATA },
474     {   0,  0,  0,  0,  0, 0, +1, 2,  6,   STATE_SIGN },
475     {   0,  0,  0,  0,  0, 0, +1, 2,  7,   STATE_DATA },
476     {   0,  0,  0,  0,  0, 0, +1, 2,  7,   STATE_SIGN },
477     {   0,  0, +2,  0,  0, 0, +1, 3,  1,   STATE_DATA },
478     {   0,  0, +2,  0,  0, 0, +1, 4,  0,  STATE_START },
479     {   0,  0, -2,  0,  0, 0, +1, 3,  1,   STATE_DATA },
480     {   0,  0, -2,  0,  0, 0, +1, 4,  0,  STATE_START },
481     {   0,  0,  0,  0,  0, 0, +1, 3,  4, STATE_FOLLOW },
482     {   0,  0,  0,  0,  0, 0, +1, 3,  5, STATE_FOLLOW },
483     {   0,  0,  0, +1,  0, 0, +1, 4,  0,  STATE_START },
484     {   0,  0,  0, -1,  0, 0, +1, 4,  0,  STATE_START },
485     {   0,  0,  0,  0,  0, 0, +1, 3,  6, STATE_FOLLOW },
486     {   0,  0,  0,  0,  0, 0, +1, 3,  7, STATE_FOLLOW },
487     {   0,  0,  0, +2,  0, 0, +1, 4,  0,  STATE_START },
488     {   0,  0,  0, -2,  0, 0, +1, 4,  0,  STATE_START },
489     {   0,  0,  0,  0,  0, 0, +1, 4,  2,   STATE_DATA },
490     {   0,  0,  0,  0,  0, 0, +1, 4,  2,   STATE_SIGN },
491     {   0,  0,  0,  0,  0, 0, +1, 4,  3,   STATE_DATA },
492     {   0,  0,  0,  0,  0, 0, +1, 4,  3,   STATE_SIGN },
493     {   0,  0,  0,  0,  0, 0, +1, 5,  2, STATE_FOLLOW },
494     {   0,  0,  0,  0,  0, 0, +1, 5,  3, STATE_FOLLOW },
495     {   0,  0,  0,  0,  0, 0, +1, 6,  1,   STATE_DATA },
496     {   0,  0,  0,  0,  0, 0, +1, 7,  0,  STATE_START },
497     {   0,  0,  0,  0,  0, 0, -1, 1,  8, STATE_FOLLOW },
498     {   0,  0,  0,  0,  0, 0, -1, 1,  9, STATE_FOLLOW },
499     {   0, +3,  0,  0,  0, 0, -1, 2,  0,  STATE_START },
500     {   0, -3,  0,  0,  0, 0, -1, 2,  0,  STATE_START },
501     {   0,  0,  0,  0,  0, 0, -1, 1, 10, STATE_FOLLOW },
502     {   0,  0,  0,  0,  0, 0, -1, 1, 11, STATE_FOLLOW },
503     {   0, +4,  0,  0,  0, 0, -1, 2,  0,  STATE_START },
504     {   0, -4,  0,  0,  0, 0, -1, 2,  0,  STATE_START },
505     {   0, +1,  0,  0,  0, 0, -1, 2,  2, STATE_FOLLOW },
506     {   0, +1,  0,  0,  0, 0, -1, 2,  3, STATE_FOLLOW },
507     {   0, +1,  0,  0,  0, 0, -1, 3,  1,   STATE_DATA },
508     {   0, +1,  0,  0,  0, 0, -1, 4,  0,  STATE_START },
509     {   0, -1,  0,  0,  0, 0, -1, 2,  2, STATE_FOLLOW },
510     {   0, -1,  0,  0,  0, 0, -1, 2,  3, STATE_FOLLOW },
511     {   0, -1,  0,  0,  0, 0, -1, 3,  1,   STATE_DATA },
512     {   0, -1,  0,  0,  0, 0, -1, 4,  0,  STATE_START },
513     {   0,  0,  0,  0,  0, 0, -1, 1, 12, STATE_FOLLOW },
514     {   0,  0,  0,  0,  0, 0, -1, 1, 13, STATE_FOLLOW },
515     {   0, +5,  0,  0,  0, 0, -1, 2,  0,  STATE_START },
516     {   0, -5,  0,  0,  0, 0, -1, 2,  0,  STATE_START },
517     {   0,  0,  0,  0,  0, 0, -1, 1, 14, STATE_FOLLOW },
518     {   0,  0,  0,  0,  0, 0, -1, 1, 15, STATE_FOLLOW },
519     {   0, +6,  0,  0,  0, 0, -1, 2,  0,  STATE_START },
520     {   0, -6,  0,  0,  0, 0, -1, 2,  0,  STATE_START },
521     {   0, +2,  0,  0,  0, 0, -1, 2,  2, STATE_FOLLOW },
522     {   0, +2,  0,  0,  0, 0, -1, 2,  3, STATE_FOLLOW },
523     {   0, +2,  0,  0,  0, 0, -1, 3,  1,   STATE_DATA },
524     {   0, +2,  0,  0,  0, 0, -1, 4,  0,  STATE_START },
525     {   0, -2,  0,  0,  0, 0, -1, 2,  2, STATE_FOLLOW },
526     {   0, -2,  0,  0,  0, 0, -1, 2,  3, STATE_FOLLOW },
527     {   0, -2,  0,  0,  0, 0, -1, 3,  1,   STATE_DATA },
528     {   0, -2,  0,  0,  0, 0, -1, 4,  0,  STATE_START },
529     {   0,  0,  0,  0,  0, 0, -1, 2,  4,   STATE_DATA },
530     {   0,  0,  0,  0,  0, 0, -1, 2,  4,   STATE_SIGN },
531     {   0,  0,  0,  0,  0, 0, -1, 2,  5,   STATE_DATA },
532     {   0,  0,  0,  0,  0, 0, -1, 2,  5,   STATE_SIGN },
533     {   0,  0, +1,  0,  0, 0, -1, 3,  1,   STATE_DATA },
534     {   0,  0, +1,  0,  0, 0, -1, 4,  0,  STATE_START },
535     {   0,  0, -1,  0,  0, 0, -1, 3,  1,   STATE_DATA },
536     {   0,  0, -1,  0,  0, 0, -1, 4,  0,  STATE_START },
537     {   0,  0,  0,  0,  0, 0, -1, 2,  6,   STATE_DATA },
538     {   0,  0,  0,  0,  0, 0, -1, 2,  6,   STATE_SIGN },
539     {   0,  0,  0,  0,  0, 0, -1, 2,  7,   STATE_DATA },
540     {   0,  0,  0,  0,  0, 0, -1, 2,  7,   STATE_SIGN },
541     {   0,  0, +2,  0,  0, 0, -1, 3,  1,   STATE_DATA },
542     {   0,  0, +2,  0,  0, 0, -1, 4,  0,  STATE_START },
543     {   0,  0, -2,  0,  0, 0, -1, 3,  1,   STATE_DATA },
544     {   0,  0, -2,  0,  0, 0, -1, 4,  0,  STATE_START },
545     {   0,  0,  0,  0,  0, 0, -1, 3,  4, STATE_FOLLOW },
546     {   0,  0,  0,  0,  0, 0, -1, 3,  5, STATE_FOLLOW },
547     {   0,  0,  0, +1,  0, 0, -1, 4,  0,  STATE_START },
548     {   0,  0,  0, -1,  0, 0, -1, 4,  0,  STATE_START },
549     {   0,  0,  0,  0,  0, 0, -1, 3,  6, STATE_FOLLOW },
550     {   0,  0,  0,  0,  0, 0, -1, 3,  7, STATE_FOLLOW },
551     {   0,  0,  0, +2,  0, 0, -1, 4,  0,  STATE_START },
552     {   0,  0,  0, -2,  0, 0, -1, 4,  0,  STATE_START },
553     {   0,  0,  0,  0,  0, 0, -1, 4,  2,   STATE_DATA },
554     {   0,  0,  0,  0,  0, 0, -1, 4,  2,   STATE_SIGN },
555     {   0,  0,  0,  0,  0, 0, -1, 4,  3,   STATE_DATA },
556     {   0,  0,  0,  0,  0, 0, -1, 4,  3,   STATE_SIGN },
557     {   0,  0,  0,  0,  0, 0, -1, 5,  2, STATE_FOLLOW },
558     {   0,  0,  0,  0,  0, 0, -1, 5,  3, STATE_FOLLOW },
559     {   0,  0,  0,  0,  0, 0, -1, 6,  1,   STATE_DATA },
560     {   0,  0,  0,  0,  0, 0, -1, 7,  0,  STATE_START },
561     {   0,  0,  0,  0,  0, 4, +1, 0,  0,   STATE_DATA },
562     {   0,  0,  0,  0,  0, 4, +1, 0,  0,   STATE_SIGN },
563     {  +1,  0,  0,  0,  0, 4, +1, 0,  0,   STATE_DATA },
564     {  +1,  0,  0,  0,  0, 4, +1, 0,  0,   STATE_SIGN },
565     {   0,  0,  0,  0,  0, 3, +1, 1,  1,   STATE_DATA },
566     {   0,  0,  0,  0,  0, 3, +1, 2,  0,  STATE_START },
567     {   0,  0,  0,  0,  0, 3, -1, 1,  1,   STATE_DATA },
568     {   0,  0,  0,  0,  0, 3, -1, 2,  0,  STATE_START },
569     {  +2,  0,  0,  0,  0, 4, +1, 0,  0,   STATE_DATA },
570     {  +2,  0,  0,  0,  0, 4, +1, 0,  0,   STATE_SIGN },
571     {  +3,  0,  0,  0,  0, 4, +1, 0,  0,   STATE_DATA },
572     {  +3,  0,  0,  0,  0, 4, +1, 0,  0,   STATE_SIGN },
573     {  +1,  0,  0,  0,  0, 3, +1, 1,  1,   STATE_DATA },
574     {  +1,  0,  0,  0,  0, 3, +1, 2,  0,  STATE_START },
575     {  +1,  0,  0,  0,  0, 3, -1, 1,  1,   STATE_DATA },
576     {  +1,  0,  0,  0,  0, 3, -1, 2,  0,  STATE_START },
577     {   0,  0,  0,  0,  0, 2, +1, 1,  2,   STATE_DATA },
578     {   0,  0,  0,  0,  0, 2, +1, 1,  2,   STATE_SIGN },
579     {   0,  0,  0,  0,  0, 2, +1, 1,  3,   STATE_DATA },
580     {   0,  0,  0,  0,  0, 2, +1, 1,  3,   STATE_SIGN },
581     {   0,  0,  0,  0,  0, 2, +1, 2,  2, STATE_FOLLOW },
582     {   0,  0,  0,  0,  0, 2, +1, 2,  3, STATE_FOLLOW },
583     {   0,  0,  0,  0,  0, 2, +1, 3,  1,   STATE_DATA },
584     {   0,  0,  0,  0,  0, 2, +1, 4,  0,  STATE_START },
585     {   0,  0,  0,  0,  0, 2, -1, 1,  2,   STATE_DATA },
586     {   0,  0,  0,  0,  0, 2, -1, 1,  2,   STATE_SIGN },
587     {   0,  0,  0,  0,  0, 2, -1, 1,  3,   STATE_DATA },
588     {   0,  0,  0,  0,  0, 2, -1, 1,  3,   STATE_SIGN },
589     {   0,  0,  0,  0,  0, 2, -1, 2,  2, STATE_FOLLOW },
590     {   0,  0,  0,  0,  0, 2, -1, 2,  3, STATE_FOLLOW },
591     {   0,  0,  0,  0,  0, 2, -1, 3,  1,   STATE_DATA },
592     {   0,  0,  0,  0,  0, 2, -1, 4,  0,  STATE_START },
593     {  +4,  0,  0,  0,  0, 4, +1, 0,  0,   STATE_DATA },
594     {  +4,  0,  0,  0,  0, 4, +1, 0,  0,   STATE_SIGN },
595     {  +5,  0,  0,  0,  0, 4, +1, 0,  0,   STATE_DATA },
596     {  +5,  0,  0,  0,  0, 4, +1, 0,  0,   STATE_SIGN },
597     {  +2,  0,  0,  0,  0, 3, +1, 1,  1,   STATE_DATA },
598     {  +2,  0,  0,  0,  0, 3, +1, 2,  0,  STATE_START },
599     {  +2,  0,  0,  0,  0, 3, -1, 1,  1,   STATE_DATA },
600     {  +2,  0,  0,  0,  0, 3, -1, 2,  0,  STATE_START },
601     {  +6,  0,  0,  0,  0, 4, +1, 0,  0,   STATE_DATA },
602     {  +6,  0,  0,  0,  0, 4, +1, 0,  0,   STATE_SIGN },
603     {  +7,  0,  0,  0,  0, 4, +1, 0,  0,   STATE_DATA },
604     {  +7,  0,  0,  0,  0, 4, +1, 0,  0,   STATE_SIGN },
605     {  +3,  0,  0,  0,  0, 3, +1, 1,  1,   STATE_DATA },
606     {  +3,  0,  0,  0,  0, 3, +1, 2,  0,  STATE_START },
607     {  +3,  0,  0,  0,  0, 3, -1, 1,  1,   STATE_DATA },
608     {  +3,  0,  0,  0,  0, 3, -1, 2,  0,  STATE_START },
609     {  +1,  0,  0,  0,  0, 2, +1, 1,  2,   STATE_DATA },
610     {  +1,  0,  0,  0,  0, 2, +1, 1,  2,   STATE_SIGN },
611     {  +1,  0,  0,  0,  0, 2, +1, 1,  3,   STATE_DATA },
612     {  +1,  0,  0,  0,  0, 2, +1, 1,  3,   STATE_SIGN },
613     {  +1,  0,  0,  0,  0, 2, +1, 2,  2, STATE_FOLLOW },
614     {  +1,  0,  0,  0,  0, 2, +1, 2,  3, STATE_FOLLOW },
615     {  +1,  0,  0,  0,  0, 2, +1, 3,  1,   STATE_DATA },
616     {  +1,  0,  0,  0,  0, 2, +1, 4,  0,  STATE_START },
617     {  +1,  0,  0,  0,  0, 2, -1, 1,  2,   STATE_DATA },
618     {  +1,  0,  0,  0,  0, 2, -1, 1,  2,   STATE_SIGN },
619     {  +1,  0,  0,  0,  0, 2, -1, 1,  3,   STATE_DATA },
620     {  +1,  0,  0,  0,  0, 2, -1, 1,  3,   STATE_SIGN },
621     {  +1,  0,  0,  0,  0, 2, -1, 2,  2, STATE_FOLLOW },
622     {  +1,  0,  0,  0,  0, 2, -1, 2,  3, STATE_FOLLOW },
623     {  +1,  0,  0,  0,  0, 2, -1, 3,  1,   STATE_DATA },
624     {  +1,  0,  0,  0,  0, 2, -1, 4,  0,  STATE_START },
625     {   0,  0,  0,  0,  0, 1, +1, 1,  4,   STATE_DATA },
626     {   0,  0,  0,  0,  0, 1, +1, 1,  4,   STATE_SIGN },
627     {   0,  0,  0,  0,  0, 1, +1, 1,  5,   STATE_DATA },
628     {   0,  0,  0,  0,  0, 1, +1, 1,  5,   STATE_SIGN },
629     {   0, +1,  0,  0,  0, 1, +1, 2,  1,   STATE_DATA },
630     {   0, +1,  0,  0,  0, 1, +1, 3,  0,  STATE_START },
631     {   0, -1,  0,  0,  0, 1, +1, 2,  1,   STATE_DATA },
632     {   0, -1,  0,  0,  0, 1, +1, 3,  0,  STATE_START },
633     {   0,  0,  0,  0,  0, 1, +1, 1,  6,   STATE_DATA },
634     {   0,  0,  0,  0,  0, 1, +1, 1,  6,   STATE_SIGN },
635     {   0,  0,  0,  0,  0, 1, +1, 1,  7,   STATE_DATA },
636     {   0,  0,  0,  0,  0, 1, +1, 1,  7,   STATE_SIGN },
637     {   0, +2,  0,  0,  0, 1, +1, 2,  1,   STATE_DATA },
638     {   0, +2,  0,  0,  0, 1, +1, 3,  0,  STATE_START },
639     {   0, -2,  0,  0,  0, 1, +1, 2,  1,   STATE_DATA },
640     {   0, -2,  0,  0,  0, 1, +1, 3,  0,  STATE_START },
641     {   0,  0,  0,  0,  0, 1, +1, 2,  4, STATE_FOLLOW },
642     {   0,  0,  0,  0,  0, 1, +1, 2,  5, STATE_FOLLOW },
643     {   0,  0, +1,  0,  0, 1, +1, 3,  0,  STATE_START },
644     {   0,  0, -1,  0,  0, 1, +1, 3,  0,  STATE_START },
645     {   0,  0,  0,  0,  0, 1, +1, 2,  6, STATE_FOLLOW },
646     {   0,  0,  0,  0,  0, 1, +1, 2,  7, STATE_FOLLOW },
647     {   0,  0, +2,  0,  0, 1, +1, 3,  0,  STATE_START },
648     {   0,  0, -2,  0,  0, 1, +1, 3,  0,  STATE_START },
649     {   0,  0,  0,  0,  0, 1, +1, 3,  2,   STATE_DATA },
650     {   0,  0,  0,  0,  0, 1, +1, 3,  2,   STATE_SIGN },
651     {   0,  0,  0,  0,  0, 1, +1, 3,  3,   STATE_DATA },
652     {   0,  0,  0,  0,  0, 1, +1, 3,  3,   STATE_SIGN },
653     {   0,  0,  0,  0,  0, 1, +1, 4,  2, STATE_FOLLOW },
654     {   0,  0,  0,  0,  0, 1, +1, 4,  3, STATE_FOLLOW },
655     {   0,  0,  0,  0,  0, 1, +1, 5,  1,   STATE_DATA },
656     {   0,  0,  0,  0,  0, 1, +1, 6,  0,  STATE_START },
657     {   0,  0,  0,  0,  0, 1, -1, 1,  4,   STATE_DATA },
658     {   0,  0,  0,  0,  0, 1, -1, 1,  4,   STATE_SIGN },
659     {   0,  0,  0,  0,  0, 1, -1, 1,  5,   STATE_DATA },
660     {   0,  0,  0,  0,  0, 1, -1, 1,  5,   STATE_SIGN },
661     {   0, +1,  0,  0,  0, 1, -1, 2,  1,   STATE_DATA },
662     {   0, +1,  0,  0,  0, 1, -1, 3,  0,  STATE_START },
663     {   0, -1,  0,  0,  0, 1, -1, 2,  1,   STATE_DATA },
664     {   0, -1,  0,  0,  0, 1, -1, 3,  0,  STATE_START },
665     {   0,  0,  0,  0,  0, 1, -1, 1,  6,   STATE_DATA },
666     {   0,  0,  0,  0,  0, 1, -1, 1,  6,   STATE_SIGN },
667     {   0,  0,  0,  0,  0, 1, -1, 1,  7,   STATE_DATA },
668     {   0,  0,  0,  0,  0, 1, -1, 1,  7,   STATE_SIGN },
669     {   0, +2,  0,  0,  0, 1, -1, 2,  1,   STATE_DATA },
670     {   0, +2,  0,  0,  0, 1, -1, 3,  0,  STATE_START },
671     {   0, -2,  0,  0,  0, 1, -1, 2,  1,   STATE_DATA },
672     {   0, -2,  0,  0,  0, 1, -1, 3,  0,  STATE_START },
673     {   0,  0,  0,  0,  0, 1, -1, 2,  4, STATE_FOLLOW },
674     {   0,  0,  0,  0,  0, 1, -1, 2,  5, STATE_FOLLOW },
675     {   0,  0, +1,  0,  0, 1, -1, 3,  0,  STATE_START },
676     {   0,  0, -1,  0,  0, 1, -1, 3,  0,  STATE_START },
677     {   0,  0,  0,  0,  0, 1, -1, 2,  6, STATE_FOLLOW },
678     {   0,  0,  0,  0,  0, 1, -1, 2,  7, STATE_FOLLOW },
679     {   0,  0, +2,  0,  0, 1, -1, 3,  0,  STATE_START },
680     {   0,  0, -2,  0,  0, 1, -1, 3,  0,  STATE_START },
681     {   0,  0,  0,  0,  0, 1, -1, 3,  2,   STATE_DATA },
682     {   0,  0,  0,  0,  0, 1, -1, 3,  2,   STATE_SIGN },
683     {   0,  0,  0,  0,  0, 1, -1, 3,  3,   STATE_DATA },
684     {   0,  0,  0,  0,  0, 1, -1, 3,  3,   STATE_SIGN },
685     {   0,  0,  0,  0,  0, 1, -1, 4,  2, STATE_FOLLOW },
686     {   0,  0,  0,  0,  0, 1, -1, 4,  3, STATE_FOLLOW },
687     {   0,  0,  0,  0,  0, 1, -1, 5,  1,   STATE_DATA },
688     {   0,  0,  0,  0,  0, 1, -1, 6,  0,  STATE_START },
689     {  +8,  0,  0,  0,  0, 4, +1, 0,  0,   STATE_DATA },
690     {  +8,  0,  0,  0,  0, 4, +1, 0,  0,   STATE_SIGN },
691     {  +9,  0,  0,  0,  0, 4, +1, 0,  0,   STATE_DATA },
692     {  +9,  0,  0,  0,  0, 4, +1, 0,  0,   STATE_SIGN },
693     {  +4,  0,  0,  0,  0, 3, +1, 1,  1,   STATE_DATA },
694     {  +4,  0,  0,  0,  0, 3, +1, 2,  0,  STATE_START },
695     {  +4,  0,  0,  0,  0, 3, -1, 1,  1,   STATE_DATA },
696     {  +4,  0,  0,  0,  0, 3, -1, 2,  0,  STATE_START },
697     { +10,  0,  0,  0,  0, 4, +1, 0,  0,   STATE_DATA },
698     { +10,  0,  0,  0,  0, 4, +1, 0,  0,   STATE_SIGN },
699     { +11,  0,  0,  0,  0, 4, +1, 0,  0,   STATE_DATA },
700     { +11,  0,  0,  0,  0, 4, +1, 0,  0,   STATE_SIGN },
701     {  +5,  0,  0,  0,  0, 3, +1, 1,  1,   STATE_DATA },
702     {  +5,  0,  0,  0,  0, 3, +1, 2,  0,  STATE_START },
703     {  +5,  0,  0,  0,  0, 3, -1, 1,  1,   STATE_DATA },
704     {  +5,  0,  0,  0,  0, 3, -1, 2,  0,  STATE_START },
705     {  +2,  0,  0,  0,  0, 2, +1, 1,  2,   STATE_DATA },
706     {  +2,  0,  0,  0,  0, 2, +1, 1,  2,   STATE_SIGN },
707     {  +2,  0,  0,  0,  0, 2, +1, 1,  3,   STATE_DATA },
708     {  +2,  0,  0,  0,  0, 2, +1, 1,  3,   STATE_SIGN },
709     {  +2,  0,  0,  0,  0, 2, +1, 2,  2, STATE_FOLLOW },
710     {  +2,  0,  0,  0,  0, 2, +1, 2,  3, STATE_FOLLOW },
711     {  +2,  0,  0,  0,  0, 2, +1, 3,  1,   STATE_DATA },
712     {  +2,  0,  0,  0,  0, 2, +1, 4,  0,  STATE_START },
713     {  +2,  0,  0,  0,  0, 2, -1, 1,  2,   STATE_DATA },
714     {  +2,  0,  0,  0,  0, 2, -1, 1,  2,   STATE_SIGN },
715     {  +2,  0,  0,  0,  0, 2, -1, 1,  3,   STATE_DATA },
716     {  +2,  0,  0,  0,  0, 2, -1, 1,  3,   STATE_SIGN },
717     {  +2,  0,  0,  0,  0, 2, -1, 2,  2, STATE_FOLLOW },
718     {  +2,  0,  0,  0,  0, 2, -1, 2,  3, STATE_FOLLOW },
719     {  +2,  0,  0,  0,  0, 2, -1, 3,  1,   STATE_DATA },
720     {  +2,  0,  0,  0,  0, 2, -1, 4,  0,  STATE_START },
721     { +12,  0,  0,  0,  0, 4, +1, 0,  0,   STATE_DATA },
722     { +12,  0,  0,  0,  0, 4, +1, 0,  0,   STATE_SIGN },
723     { +13,  0,  0,  0,  0, 4, +1, 0,  0,   STATE_DATA },
724     { +13,  0,  0,  0,  0, 4, +1, 0,  0,   STATE_SIGN },
725     {  +6,  0,  0,  0,  0, 3, +1, 1,  1,   STATE_DATA },
726     {  +6,  0,  0,  0,  0, 3, +1, 2,  0,  STATE_START },
727     {  +6,  0,  0,  0,  0, 3, -1, 1,  1,   STATE_DATA },
728     {  +6,  0,  0,  0,  0, 3, -1, 2,  0,  STATE_START },
729     { +14,  0,  0,  0,  0, 4, +1, 0,  0,   STATE_DATA },
730     { +14,  0,  0,  0,  0, 4, +1, 0,  0,   STATE_SIGN },
731     { +15,  0,  0,  0,  0, 4, +1, 0,  0,   STATE_DATA },
732     { +15,  0,  0,  0,  0, 4, +1, 0,  0,   STATE_SIGN },
733     {  +7,  0,  0,  0,  0, 3, +1, 1,  1,   STATE_DATA },
734     {  +7,  0,  0,  0,  0, 3, +1, 2,  0,  STATE_START },
735     {  +7,  0,  0,  0,  0, 3, -1, 1,  1,   STATE_DATA },
736     {  +7,  0,  0,  0,  0, 3, -1, 2,  0,  STATE_START },
737     {  +3,  0,  0,  0,  0, 2, +1, 1,  2,   STATE_DATA },
738     {  +3,  0,  0,  0,  0, 2, +1, 1,  2,   STATE_SIGN },
739     {  +3,  0,  0,  0,  0, 2, +1, 1,  3,   STATE_DATA },
740     {  +3,  0,  0,  0,  0, 2, +1, 1,  3,   STATE_SIGN },
741     {  +3,  0,  0,  0,  0, 2, +1, 2,  2, STATE_FOLLOW },
742     {  +3,  0,  0,  0,  0, 2, +1, 2,  3, STATE_FOLLOW },
743     {  +3,  0,  0,  0,  0, 2, +1, 3,  1,   STATE_DATA },
744     {  +3,  0,  0,  0,  0, 2, +1, 4,  0,  STATE_START },
745     {  +3,  0,  0,  0,  0, 2, -1, 1,  2,   STATE_DATA },
746     {  +3,  0,  0,  0,  0, 2, -1, 1,  2,   STATE_SIGN },
747     {  +3,  0,  0,  0,  0, 2, -1, 1,  3,   STATE_DATA },
748     {  +3,  0,  0,  0,  0, 2, -1, 1,  3,   STATE_SIGN },
749     {  +3,  0,  0,  0,  0, 2, -1, 2,  2, STATE_FOLLOW },
750     {  +3,  0,  0,  0,  0, 2, -1, 2,  3, STATE_FOLLOW },
751     {  +3,  0,  0,  0,  0, 2, -1, 3,  1,   STATE_DATA },
752     {  +3,  0,  0,  0,  0, 2, -1, 4,  0,  STATE_START },
753     {  +1,  0,  0,  0,  0, 1, +1, 1,  4,   STATE_DATA },
754     {  +1,  0,  0,  0,  0, 1, +1, 1,  4,   STATE_SIGN },
755     {  +1,  0,  0,  0,  0, 1, +1, 1,  5,   STATE_DATA },
756     {  +1,  0,  0,  0,  0, 1, +1, 1,  5,   STATE_SIGN },
757     {  +1, +1,  0,  0,  0, 1, +1, 2,  1,   STATE_DATA },
758     {  +1, +1,  0,  0,  0, 1, +1, 3,  0,  STATE_START },
759     {  +1, -1,  0,  0,  0, 1, +1, 2,  1,   STATE_DATA },
760     {  +1, -1,  0,  0,  0, 1, +1, 3,  0,  STATE_START },
761     {  +1,  0,  0,  0,  0, 1, +1, 1,  6,   STATE_DATA },
762     {  +1,  0,  0,  0,  0, 1, +1, 1,  6,   STATE_SIGN },
763     {  +1,  0,  0,  0,  0, 1, +1, 1,  7,   STATE_DATA },
764     {  +1,  0,  0,  0,  0, 1, +1, 1,  7,   STATE_SIGN },
765     {  +1, +2,  0,  0,  0, 1, +1, 2,  1,   STATE_DATA },
766     {  +1, +2,  0,  0,  0, 1, +1, 3,  0,  STATE_START },
767     {  +1, -2,  0,  0,  0, 1, +1, 2,  1,   STATE_DATA },
768     {  +1, -2,  0,  0,  0, 1, +1, 3,  0,  STATE_START },
769     {  +1,  0,  0,  0,  0, 1, +1, 2,  4, STATE_FOLLOW },
770     {  +1,  0,  0,  0,  0, 1, +1, 2,  5, STATE_FOLLOW },
771     {  +1,  0, +1,  0,  0, 1, +1, 3,  0,  STATE_START },
772     {  +1,  0, -1,  0,  0, 1, +1, 3,  0,  STATE_START },
773     {  +1,  0,  0,  0,  0, 1, +1, 2,  6, STATE_FOLLOW },
774     {  +1,  0,  0,  0,  0, 1, +1, 2,  7, STATE_FOLLOW },
775     {  +1,  0, +2,  0,  0, 1, +1, 3,  0,  STATE_START },
776     {  +1,  0, -2,  0,  0, 1, +1, 3,  0,  STATE_START },
777     {  +1,  0,  0,  0,  0, 1, +1, 3,  2,   STATE_DATA },
778     {  +1,  0,  0,  0,  0, 1, +1, 3,  2,   STATE_SIGN },
779     {  +1,  0,  0,  0,  0, 1, +1, 3,  3,   STATE_DATA },
780     {  +1,  0,  0,  0,  0, 1, +1, 3,  3,   STATE_SIGN },
781     {  +1,  0,  0,  0,  0, 1, +1, 4,  2, STATE_FOLLOW },
782     {  +1,  0,  0,  0,  0, 1, +1, 4,  3, STATE_FOLLOW },
783     {  +1,  0,  0,  0,  0, 1, +1, 5,  1,   STATE_DATA },
784     {  +1,  0,  0,  0,  0, 1, +1, 6,  0,  STATE_START },
785     {  +1,  0,  0,  0,  0, 1, -1, 1,  4,   STATE_DATA },
786     {  +1,  0,  0,  0,  0, 1, -1, 1,  4,   STATE_SIGN },
787     {  +1,  0,  0,  0,  0, 1, -1, 1,  5,   STATE_DATA },
788     {  +1,  0,  0,  0,  0, 1, -1, 1,  5,   STATE_SIGN },
789     {  +1, +1,  0,  0,  0, 1, -1, 2,  1,   STATE_DATA },
790     {  +1, +1,  0,  0,  0, 1, -1, 3,  0,  STATE_START },
791     {  +1, -1,  0,  0,  0, 1, -1, 2,  1,   STATE_DATA },
792     {  +1, -1,  0,  0,  0, 1, -1, 3,  0,  STATE_START },
793     {  +1,  0,  0,  0,  0, 1, -1, 1,  6,   STATE_DATA },
794     {  +1,  0,  0,  0,  0, 1, -1, 1,  6,   STATE_SIGN },
795     {  +1,  0,  0,  0,  0, 1, -1, 1,  7,   STATE_DATA },
796     {  +1,  0,  0,  0,  0, 1, -1, 1,  7,   STATE_SIGN },
797     {  +1, +2,  0,  0,  0, 1, -1, 2,  1,   STATE_DATA },
798     {  +1, +2,  0,  0,  0, 1, -1, 3,  0,  STATE_START },
799     {  +1, -2,  0,  0,  0, 1, -1, 2,  1,   STATE_DATA },
800     {  +1, -2,  0,  0,  0, 1, -1, 3,  0,  STATE_START },
801     {  +1,  0,  0,  0,  0, 1, -1, 2,  4, STATE_FOLLOW },
802     {  +1,  0,  0,  0,  0, 1, -1, 2,  5, STATE_FOLLOW },
803     {  +1,  0, +1,  0,  0, 1, -1, 3,  0,  STATE_START },
804     {  +1,  0, -1,  0,  0, 1, -1, 3,  0,  STATE_START },
805     {  +1,  0,  0,  0,  0, 1, -1, 2,  6, STATE_FOLLOW },
806     {  +1,  0,  0,  0,  0, 1, -1, 2,  7, STATE_FOLLOW },
807     {  +1,  0, +2,  0,  0, 1, -1, 3,  0,  STATE_START },
808     {  +1,  0, -2,  0,  0, 1, -1, 3,  0,  STATE_START },
809     {  +1,  0,  0,  0,  0, 1, -1, 3,  2,   STATE_DATA },
810     {  +1,  0,  0,  0,  0, 1, -1, 3,  2,   STATE_SIGN },
811     {  +1,  0,  0,  0,  0, 1, -1, 3,  3,   STATE_DATA },
812     {  +1,  0,  0,  0,  0, 1, -1, 3,  3,   STATE_SIGN },
813     {  +1,  0,  0,  0,  0, 1, -1, 4,  2, STATE_FOLLOW },
814     {  +1,  0,  0,  0,  0, 1, -1, 4,  3, STATE_FOLLOW },
815     {  +1,  0,  0,  0,  0, 1, -1, 5,  1,   STATE_DATA },
816     {  +1,  0,  0,  0,  0, 1, -1, 6,  0,  STATE_START },
817     {   0,  0,  0,  0,  0, 0, +1, 1,  8,   STATE_DATA },
818     {   0,  0,  0,  0,  0, 0, +1, 1,  8,   STATE_SIGN },
819     {   0,  0,  0,  0,  0, 0, +1, 1,  9,   STATE_DATA },
820     {   0,  0,  0,  0,  0, 0, +1, 1,  9,   STATE_SIGN },
821     {   0, +3,  0,  0,  0, 0, +1, 2,  1,   STATE_DATA },
822     {   0, +3,  0,  0,  0, 0, +1, 3,  0,  STATE_START },
823     {   0, -3,  0,  0,  0, 0, +1, 2,  1,   STATE_DATA },
824     {   0, -3,  0,  0,  0, 0, +1, 3,  0,  STATE_START },
825     {   0,  0,  0,  0,  0, 0, +1, 1, 10,   STATE_DATA },
826     {   0,  0,  0,  0,  0, 0, +1, 1, 10,   STATE_SIGN },
827     {   0,  0,  0,  0,  0, 0, +1, 1, 11,   STATE_DATA },
828     {   0,  0,  0,  0,  0, 0, +1, 1, 11,   STATE_SIGN },
829     {   0, +4,  0,  0,  0, 0, +1, 2,  1,   STATE_DATA },
830     {   0, +4,  0,  0,  0, 0, +1, 3,  0,  STATE_START },
831     {   0, -4,  0,  0,  0, 0, +1, 2,  1,   STATE_DATA },
832     {   0, -4,  0,  0,  0, 0, +1, 3,  0,  STATE_START },
833     {   0, +1,  0,  0,  0, 0, +1, 2,  2,   STATE_DATA },
834     {   0, +1,  0,  0,  0, 0, +1, 2,  2,   STATE_SIGN },
835     {   0, +1,  0,  0,  0, 0, +1, 2,  3,   STATE_DATA },
836     {   0, +1,  0,  0,  0, 0, +1, 2,  3,   STATE_SIGN },
837     {   0, +1,  0,  0,  0, 0, +1, 3,  2, STATE_FOLLOW },
838     {   0, +1,  0,  0,  0, 0, +1, 3,  3, STATE_FOLLOW },
839     {   0, +1,  0,  0,  0, 0, +1, 4,  1,   STATE_DATA },
840     {   0, +1,  0,  0,  0, 0, +1, 5,  0,  STATE_START },
841     {   0, -1,  0,  0,  0, 0, +1, 2,  2,   STATE_DATA },
842     {   0, -1,  0,  0,  0, 0, +1, 2,  2,   STATE_SIGN },
843     {   0, -1,  0,  0,  0, 0, +1, 2,  3,   STATE_DATA },
844     {   0, -1,  0,  0,  0, 0, +1, 2,  3,   STATE_SIGN },
845     {   0, -1,  0,  0,  0, 0, +1, 3,  2, STATE_FOLLOW },
846     {   0, -1,  0,  0,  0, 0, +1, 3,  3, STATE_FOLLOW },
847     {   0, -1,  0,  0,  0, 0, +1, 4,  1,   STATE_DATA },
848     {   0, -1,  0,  0,  0, 0, +1, 5,  0,  STATE_START },
849     {   0,  0,  0,  0,  0, 0, +1, 1, 12,   STATE_DATA },
850     {   0,  0,  0,  0,  0, 0, +1, 1, 12,   STATE_SIGN },
851     {   0,  0,  0,  0,  0, 0, +1, 1, 13,   STATE_DATA },
852     {   0,  0,  0,  0,  0, 0, +1, 1, 13,   STATE_SIGN },
853     {   0, +5,  0,  0,  0, 0, +1, 2,  1,   STATE_DATA },
854     {   0, +5,  0,  0,  0, 0, +1, 3,  0,  STATE_START },
855     {   0, -5,  0,  0,  0, 0, +1, 2,  1,   STATE_DATA },
856     {   0, -5,  0,  0,  0, 0, +1, 3,  0,  STATE_START },
857     {   0,  0,  0,  0,  0, 0, +1, 1, 14,   STATE_DATA },
858     {   0,  0,  0,  0,  0, 0, +1, 1, 14,   STATE_SIGN },
859     {   0,  0,  0,  0,  0, 0, +1, 1, 15,   STATE_DATA },
860     {   0,  0,  0,  0,  0, 0, +1, 1, 15,   STATE_SIGN },
861     {   0, +6,  0,  0,  0, 0, +1, 2,  1,   STATE_DATA },
862     {   0, +6,  0,  0,  0, 0, +1, 3,  0,  STATE_START },
863     {   0, -6,  0,  0,  0, 0, +1, 2,  1,   STATE_DATA },
864     {   0, -6,  0,  0,  0, 0, +1, 3,  0,  STATE_START },
865     {   0, +2,  0,  0,  0, 0, +1, 2,  2,   STATE_DATA },
866     {   0, +2,  0,  0,  0, 0, +1, 2,  2,   STATE_SIGN },
867     {   0, +2,  0,  0,  0, 0, +1, 2,  3,   STATE_DATA },
868     {   0, +2,  0,  0,  0, 0, +1, 2,  3,   STATE_SIGN },
869     {   0, +2,  0,  0,  0, 0, +1, 3,  2, STATE_FOLLOW },
870     {   0, +2,  0,  0,  0, 0, +1, 3,  3, STATE_FOLLOW },
871     {   0, +2,  0,  0,  0, 0, +1, 4,  1,   STATE_DATA },
872     {   0, +2,  0,  0,  0, 0, +1, 5,  0,  STATE_START },
873     {   0, -2,  0,  0,  0, 0, +1, 2,  2,   STATE_DATA },
874     {   0, -2,  0,  0,  0, 0, +1, 2,  2,   STATE_SIGN },
875     {   0, -2,  0,  0,  0, 0, +1, 2,  3,   STATE_DATA },
876     {   0, -2,  0,  0,  0, 0, +1, 2,  3,   STATE_SIGN },
877     {   0, -2,  0,  0,  0, 0, +1, 3,  2, STATE_FOLLOW },
878     {   0, -2,  0,  0,  0, 0, +1, 3,  3, STATE_FOLLOW },
879     {   0, -2,  0,  0,  0, 0, +1, 4,  1,   STATE_DATA },
880     {   0, -2,  0,  0,  0, 0, +1, 5,  0,  STATE_START },
881     {   0,  0,  0,  0,  0, 0, +1, 2,  8, STATE_FOLLOW },
882     {   0,  0,  0,  0,  0, 0, +1, 2,  9, STATE_FOLLOW },
883     {   0,  0, +3,  0,  0, 0, +1, 3,  0,  STATE_START },
884     {   0,  0, -3,  0,  0, 0, +1, 3,  0,  STATE_START },
885     {   0,  0,  0,  0,  0, 0, +1, 2, 10, STATE_FOLLOW },
886     {   0,  0,  0,  0,  0, 0, +1, 2, 11, STATE_FOLLOW },
887     {   0,  0, +4,  0,  0, 0, +1, 3,  0,  STATE_START },
888     {   0,  0, -4,  0,  0, 0, +1, 3,  0,  STATE_START },
889     {   0,  0, +1,  0,  0, 0, +1, 3,  2, STATE_FOLLOW },
890     {   0,  0, +1,  0,  0, 0, +1, 3,  3, STATE_FOLLOW },
891     {   0,  0, +1,  0,  0, 0, +1, 4,  1,   STATE_DATA },
892     {   0,  0, +1,  0,  0, 0, +1, 5,  0,  STATE_START },
893     {   0,  0, -1,  0,  0, 0, +1, 3,  2, STATE_FOLLOW },
894     {   0,  0, -1,  0,  0, 0, +1, 3,  3, STATE_FOLLOW },
895     {   0,  0, -1,  0,  0, 0, +1, 4,  1,   STATE_DATA },
896     {   0,  0, -1,  0,  0, 0, +1, 5,  0,  STATE_START },
897     {   0,  0,  0,  0,  0, 0, +1, 2, 12, STATE_FOLLOW },
898     {   0,  0,  0,  0,  0, 0, +1, 2, 13, STATE_FOLLOW },
899     {   0,  0, +5,  0,  0, 0, +1, 3,  0,  STATE_START },
900     {   0,  0, -5,  0,  0, 0, +1, 3,  0,  STATE_START },
901     {   0,  0,  0,  0,  0, 0, +1, 2, 14, STATE_FOLLOW },
902     {   0,  0,  0,  0,  0, 0, +1, 2, 15, STATE_FOLLOW },
903     {   0,  0, +6,  0,  0, 0, +1, 3,  0,  STATE_START },
904     {   0,  0, -6,  0,  0, 0, +1, 3,  0,  STATE_START },
905     {   0,  0, +2,  0,  0, 0, +1, 3,  2, STATE_FOLLOW },
906     {   0,  0, +2,  0,  0, 0, +1, 3,  3, STATE_FOLLOW },
907     {   0,  0, +2,  0,  0, 0, +1, 4,  1,   STATE_DATA },
908     {   0,  0, +2,  0,  0, 0, +1, 5,  0,  STATE_START },
909     {   0,  0, -2,  0,  0, 0, +1, 3,  2, STATE_FOLLOW },
910     {   0,  0, -2,  0,  0, 0, +1, 3,  3, STATE_FOLLOW },
911     {   0,  0, -2,  0,  0, 0, +1, 4,  1,   STATE_DATA },
912     {   0,  0, -2,  0,  0, 0, +1, 5,  0,  STATE_START },
913     {   0,  0,  0,  0,  0, 0, +1, 3,  4,   STATE_DATA },
914     {   0,  0,  0,  0,  0, 0, +1, 3,  4,   STATE_SIGN },
915     {   0,  0,  0,  0,  0, 0, +1, 3,  5,   STATE_DATA },
916     {   0,  0,  0,  0,  0, 0, +1, 3,  5,   STATE_SIGN },
917     {   0,  0,  0, +1,  0, 0, +1, 4,  1,   STATE_DATA },
918     {   0,  0,  0, +1,  0, 0, +1, 5,  0,  STATE_START },
919     {   0,  0,  0, -1,  0, 0, +1, 4,  1,   STATE_DATA },
920     {   0,  0,  0, -1,  0, 0, +1, 5,  0,  STATE_START },
921     {   0,  0,  0,  0,  0, 0, +1, 3,  6,   STATE_DATA },
922     {   0,  0,  0,  0,  0, 0, +1, 3,  6,   STATE_SIGN },
923     {   0,  0,  0,  0,  0, 0, +1, 3,  7,   STATE_DATA },
924     {   0,  0,  0,  0,  0, 0, +1, 3,  7,   STATE_SIGN },
925     {   0,  0,  0, +2,  0, 0, +1, 4,  1,   STATE_DATA },
926     {   0,  0,  0, +2,  0, 0, +1, 5,  0,  STATE_START },
927     {   0,  0,  0, -2,  0, 0, +1, 4,  1,   STATE_DATA },
928     {   0,  0,  0, -2,  0, 0, +1, 5,  0,  STATE_START },
929     {   0,  0,  0,  0,  0, 0, +1, 4,  4, STATE_FOLLOW },
930     {   0,  0,  0,  0,  0, 0, +1, 4,  5, STATE_FOLLOW },
931     {   0,  0,  0,  0, +1, 0, +1, 5,  0,  STATE_START },
932     {   0,  0,  0,  0, -1, 0, +1, 5,  0,  STATE_START },
933     {   0,  0,  0,  0,  0, 0, +1, 4,  6, STATE_FOLLOW },
934     {   0,  0,  0,  0,  0, 0, +1, 4,  7, STATE_FOLLOW },
935     {   0,  0,  0,  0, +2, 0, +1, 5,  0,  STATE_START },
936     {   0,  0,  0,  0, -2, 0, +1, 5,  0,  STATE_START },
937     {   0,  0,  0,  0,  0, 0, +1, 5,  2,   STATE_DATA },
938     {   0,  0,  0,  0,  0, 0, +1, 5,  2,   STATE_SIGN },
939     {   0,  0,  0,  0,  0, 0, +1, 5,  3,   STATE_DATA },
940     {   0,  0,  0,  0,  0, 0, +1, 5,  3,   STATE_SIGN },
941     {   0,  0,  0,  0,  0, 0, +1, 6,  2, STATE_FOLLOW },
942     {   0,  0,  0,  0,  0, 0, +1, 6,  3, STATE_FOLLOW },
943     {   0,  0,  0,  0,  0, 0, +1, 7,  1,   STATE_DATA },
944     {   0,  0,  0,  0,  0, 0, +1, 8,  0,  STATE_START },
945     {   0,  0,  0,  0,  0, 0, -1, 1,  8,   STATE_DATA },
946     {   0,  0,  0,  0,  0, 0, -1, 1,  8,   STATE_SIGN },
947     {   0,  0,  0,  0,  0, 0, -1, 1,  9,   STATE_DATA },
948     {   0,  0,  0,  0,  0, 0, -1, 1,  9,   STATE_SIGN },
949     {   0, +3,  0,  0,  0, 0, -1, 2,  1,   STATE_DATA },
950     {   0, +3,  0,  0,  0, 0, -1, 3,  0,  STATE_START },
951     {   0, -3,  0,  0,  0, 0, -1, 2,  1,   STATE_DATA },
952     {   0, -3,  0,  0,  0, 0, -1, 3,  0,  STATE_START },
953     {   0,  0,  0,  0,  0, 0, -1, 1, 10,   STATE_DATA },
954     {   0,  0,  0,  0,  0, 0, -1, 1, 10,   STATE_SIGN },
955     {   0,  0,  0,  0,  0, 0, -1, 1, 11,   STATE_DATA },
956     {   0,  0,  0,  0,  0, 0, -1, 1, 11,   STATE_SIGN },
957     {   0, +4,  0,  0,  0, 0, -1, 2,  1,   STATE_DATA },
958     {   0, +4,  0,  0,  0, 0, -1, 3,  0,  STATE_START },
959     {   0, -4,  0,  0,  0, 0, -1, 2,  1,   STATE_DATA },
960     {   0, -4,  0,  0,  0, 0, -1, 3,  0,  STATE_START },
961     {   0, +1,  0,  0,  0, 0, -1, 2,  2,   STATE_DATA },
962     {   0, +1,  0,  0,  0, 0, -1, 2,  2,   STATE_SIGN },
963     {   0, +1,  0,  0,  0, 0, -1, 2,  3,   STATE_DATA },
964     {   0, +1,  0,  0,  0, 0, -1, 2,  3,   STATE_SIGN },
965     {   0, +1,  0,  0,  0, 0, -1, 3,  2, STATE_FOLLOW },
966     {   0, +1,  0,  0,  0, 0, -1, 3,  3, STATE_FOLLOW },
967     {   0, +1,  0,  0,  0, 0, -1, 4,  1,   STATE_DATA },
968     {   0, +1,  0,  0,  0, 0, -1, 5,  0,  STATE_START },
969     {   0, -1,  0,  0,  0, 0, -1, 2,  2,   STATE_DATA },
970     {   0, -1,  0,  0,  0, 0, -1, 2,  2,   STATE_SIGN },
971     {   0, -1,  0,  0,  0, 0, -1, 2,  3,   STATE_DATA },
972     {   0, -1,  0,  0,  0, 0, -1, 2,  3,   STATE_SIGN },
973     {   0, -1,  0,  0,  0, 0, -1, 3,  2, STATE_FOLLOW },
974     {   0, -1,  0,  0,  0, 0, -1, 3,  3, STATE_FOLLOW },
975     {   0, -1,  0,  0,  0, 0, -1, 4,  1,   STATE_DATA },
976     {   0, -1,  0,  0,  0, 0, -1, 5,  0,  STATE_START },
977     {   0,  0,  0,  0,  0, 0, -1, 1, 12,   STATE_DATA },
978     {   0,  0,  0,  0,  0, 0, -1, 1, 12,   STATE_SIGN },
979     {   0,  0,  0,  0,  0, 0, -1, 1, 13,   STATE_DATA },
980     {   0,  0,  0,  0,  0, 0, -1, 1, 13,   STATE_SIGN },
981     {   0, +5,  0,  0,  0, 0, -1, 2,  1,   STATE_DATA },
982     {   0, +5,  0,  0,  0, 0, -1, 3,  0,  STATE_START },
983     {   0, -5,  0,  0,  0, 0, -1, 2,  1,   STATE_DATA },
984     {   0, -5,  0,  0,  0, 0, -1, 3,  0,  STATE_START },
985     {   0,  0,  0,  0,  0, 0, -1, 1, 14,   STATE_DATA },
986     {   0,  0,  0,  0,  0, 0, -1, 1, 14,   STATE_SIGN },
987     {   0,  0,  0,  0,  0, 0, -1, 1, 15,   STATE_DATA },
988     {   0,  0,  0,  0,  0, 0, -1, 1, 15,   STATE_SIGN },
989     {   0, +6,  0,  0,  0, 0, -1, 2,  1,   STATE_DATA },
990     {   0, +6,  0,  0,  0, 0, -1, 3,  0,  STATE_START },
991     {   0, -6,  0,  0,  0, 0, -1, 2,  1,   STATE_DATA },
992     {   0, -6,  0,  0,  0, 0, -1, 3,  0,  STATE_START },
993     {   0, +2,  0,  0,  0, 0, -1, 2,  2,   STATE_DATA },
994     {   0, +2,  0,  0,  0, 0, -1, 2,  2,   STATE_SIGN },
995     {   0, +2,  0,  0,  0, 0, -1, 2,  3,   STATE_DATA },
996     {   0, +2,  0,  0,  0, 0, -1, 2,  3,   STATE_SIGN },
997     {   0, +2,  0,  0,  0, 0, -1, 3,  2, STATE_FOLLOW },
998     {   0, +2,  0,  0,  0, 0, -1, 3,  3, STATE_FOLLOW },
999     {   0, +2,  0,  0,  0, 0, -1, 4,  1,   STATE_DATA },
1000     {   0, +2,  0,  0,  0, 0, -1, 5,  0,  STATE_START },
1001     {   0, -2,  0,  0,  0, 0, -1, 2,  2,   STATE_DATA },
1002     {   0, -2,  0,  0,  0, 0, -1, 2,  2,   STATE_SIGN },
1003     {   0, -2,  0,  0,  0, 0, -1, 2,  3,   STATE_DATA },
1004     {   0, -2,  0,  0,  0, 0, -1, 2,  3,   STATE_SIGN },
1005     {   0, -2,  0,  0,  0, 0, -1, 3,  2, STATE_FOLLOW },
1006     {   0, -2,  0,  0,  0, 0, -1, 3,  3, STATE_FOLLOW },
1007     {   0, -2,  0,  0,  0, 0, -1, 4,  1,   STATE_DATA },
1008     {   0, -2,  0,  0,  0, 0, -1, 5,  0,  STATE_START },
1009     {   0,  0,  0,  0,  0, 0, -1, 2,  8, STATE_FOLLOW },
1010     {   0,  0,  0,  0,  0, 0, -1, 2,  9, STATE_FOLLOW },
1011     {   0,  0, +3,  0,  0, 0, -1, 3,  0,  STATE_START },
1012     {   0,  0, -3,  0,  0, 0, -1, 3,  0,  STATE_START },
1013     {   0,  0,  0,  0,  0, 0, -1, 2, 10, STATE_FOLLOW },
1014     {   0,  0,  0,  0,  0, 0, -1, 2, 11, STATE_FOLLOW },
1015     {   0,  0, +4,  0,  0, 0, -1, 3,  0,  STATE_START },
1016     {   0,  0, -4,  0,  0, 0, -1, 3,  0,  STATE_START },
1017     {   0,  0, +1,  0,  0, 0, -1, 3,  2, STATE_FOLLOW },
1018     {   0,  0, +1,  0,  0, 0, -1, 3,  3, STATE_FOLLOW },
1019     {   0,  0, +1,  0,  0, 0, -1, 4,  1,   STATE_DATA },
1020     {   0,  0, +1,  0,  0, 0, -1, 5,  0,  STATE_START },
1021     {   0,  0, -1,  0,  0, 0, -1, 3,  2, STATE_FOLLOW },
1022     {   0,  0, -1,  0,  0, 0, -1, 3,  3, STATE_FOLLOW },
1023     {   0,  0, -1,  0,  0, 0, -1, 4,  1,   STATE_DATA },
1024     {   0,  0, -1,  0,  0, 0, -1, 5,  0,  STATE_START },
1025     {   0,  0,  0,  0,  0, 0, -1, 2, 12, STATE_FOLLOW },
1026     {   0,  0,  0,  0,  0, 0, -1, 2, 13, STATE_FOLLOW },
1027     {   0,  0, +5,  0,  0, 0, -1, 3,  0,  STATE_START },
1028     {   0,  0, -5,  0,  0, 0, -1, 3,  0,  STATE_START },
1029     {   0,  0,  0,  0,  0, 0, -1, 2, 14, STATE_FOLLOW },
1030     {   0,  0,  0,  0,  0, 0, -1, 2, 15, STATE_FOLLOW },
1031     {   0,  0, +6,  0,  0, 0, -1, 3,  0,  STATE_START },
1032     {   0,  0, -6,  0,  0, 0, -1, 3,  0,  STATE_START },
1033     {   0,  0, +2,  0,  0, 0, -1, 3,  2, STATE_FOLLOW },
1034     {   0,  0, +2,  0,  0, 0, -1, 3,  3, STATE_FOLLOW },
1035     {   0,  0, +2,  0,  0, 0, -1, 4,  1,   STATE_DATA },
1036     {   0,  0, +2,  0,  0, 0, -1, 5,  0,  STATE_START },
1037     {   0,  0, -2,  0,  0, 0, -1, 3,  2, STATE_FOLLOW },
1038     {   0,  0, -2,  0,  0, 0, -1, 3,  3, STATE_FOLLOW },
1039     {   0,  0, -2,  0,  0, 0, -1, 4,  1,   STATE_DATA },
1040     {   0,  0, -2,  0,  0, 0, -1, 5,  0,  STATE_START },
1041     {   0,  0,  0,  0,  0, 0, -1, 3,  4,   STATE_DATA },
1042     {   0,  0,  0,  0,  0, 0, -1, 3,  4,   STATE_SIGN },
1043     {   0,  0,  0,  0,  0, 0, -1, 3,  5,   STATE_DATA },
1044     {   0,  0,  0,  0,  0, 0, -1, 3,  5,   STATE_SIGN },
1045     {   0,  0,  0, +1,  0, 0, -1, 4,  1,   STATE_DATA },
1046     {   0,  0,  0, +1,  0, 0, -1, 5,  0,  STATE_START },
1047     {   0,  0,  0, -1,  0, 0, -1, 4,  1,   STATE_DATA },
1048     {   0,  0,  0, -1,  0, 0, -1, 5,  0,  STATE_START },
1049     {   0,  0,  0,  0,  0, 0, -1, 3,  6,   STATE_DATA },
1050     {   0,  0,  0,  0,  0, 0, -1, 3,  6,   STATE_SIGN },
1051     {   0,  0,  0,  0,  0, 0, -1, 3,  7,   STATE_DATA },
1052     {   0,  0,  0,  0,  0, 0, -1, 3,  7,   STATE_SIGN },
1053     {   0,  0,  0, +2,  0, 0, -1, 4,  1,   STATE_DATA },
1054     {   0,  0,  0, +2,  0, 0, -1, 5,  0,  STATE_START },
1055     {   0,  0,  0, -2,  0, 0, -1, 4,  1,   STATE_DATA },
1056     {   0,  0,  0, -2,  0, 0, -1, 5,  0,  STATE_START },
1057     {   0,  0,  0,  0,  0, 0, -1, 4,  4, STATE_FOLLOW },
1058     {   0,  0,  0,  0,  0, 0, -1, 4,  5, STATE_FOLLOW },
1059     {   0,  0,  0,  0, +1, 0, -1, 5,  0,  STATE_START },
1060     {   0,  0,  0,  0, -1, 0, -1, 5,  0,  STATE_START },
1061     {   0,  0,  0,  0,  0, 0, -1, 4,  6, STATE_FOLLOW },
1062     {   0,  0,  0,  0,  0, 0, -1, 4,  7, STATE_FOLLOW },
1063     {   0,  0,  0,  0, +2, 0, -1, 5,  0,  STATE_START },
1064     {   0,  0,  0,  0, -2, 0, -1, 5,  0,  STATE_START },
1065     {   0,  0,  0,  0,  0, 0, -1, 5,  2,   STATE_DATA },
1066     {   0,  0,  0,  0,  0, 0, -1, 5,  2,   STATE_SIGN },
1067     {   0,  0,  0,  0,  0, 0, -1, 5,  3,   STATE_DATA },
1068     {   0,  0,  0,  0,  0, 0, -1, 5,  3,   STATE_SIGN },
1069     {   0,  0,  0,  0,  0, 0, -1, 6,  2, STATE_FOLLOW },
1070     {   0,  0,  0,  0,  0, 0, -1, 6,  3, STATE_FOLLOW },
1071     {   0,  0,  0,  0,  0, 0, -1, 7,  1,   STATE_DATA },
1072     {   0,  0,  0,  0,  0, 0, -1, 8,  0,  STATE_START },
1073 };
1074
1075 #define PROCESS_VALS                                   \
1076     do {                                               \
1077         val  <<= lut.val0_bits;                        \
1078         val   |= lut.val0;                             \
1079         dst[0] = (val - 1) * lut.sign;                 \
1080         dst[1] = lut.val1;                             \
1081         dst[2] = lut.val2;                             \
1082         dst[3] = lut.val3;                             \
1083         dst[4] = lut.val4;                             \
1084         dst[5] = 0;                                    \
1085         dst[6] = 0;                                    \
1086         dst[7] = 0;                                    \
1087         if (lut.num)                                   \
1088             val = lut.val;                             \
1089         dst += lut.num;                                \
1090         if (dst >= last)                               \
1091             return coeffs;                             \
1092         lut = dirac_golomb_lut[lut.state + *buf++];    \
1093     } while (0)
1094
1095 int ff_dirac_golomb_read_16bit(const uint8_t *buf, int bytes,
1096                                uint8_t *_dst, int coeffs)
1097 {
1098     LUTState lut = dirac_golomb_lut[*buf++];
1099     int16_t *dst = (int16_t *)_dst, *last = dst + coeffs;
1100     uint16_t val = 0;
1101
1102     for (int i = 1; i < bytes; i++)
1103         PROCESS_VALS;
1104
1105     /* Reader needs to be flushed */
1106     PROCESS_VALS;
1107
1108     /* Still short of coeffs - try to guess and at least output what we have */
1109     if (lut.state != STATE_START)
1110         *dst++ = -((lut.state != STATE_SIGN ? (val << 1) | 1 : val) - 1);
1111
1112     return coeffs - (int)(last - dst);
1113 }
1114
1115 int ff_dirac_golomb_read_32bit(const uint8_t *buf, int bytes,
1116                                uint8_t *_dst, int coeffs)
1117 {
1118     LUTState lut = dirac_golomb_lut[*buf++];
1119     int32_t *dst = (int32_t *)_dst, *last = dst + coeffs;
1120     uint32_t val = 0;
1121
1122     for (int i = 1; i < bytes; i++)
1123         PROCESS_VALS;
1124
1125     /* Reader needs to be flushed */
1126     PROCESS_VALS;
1127
1128     /* Still short of coeffs - try to guess and at least output what we have */
1129     if (lut.state != STATE_START)
1130         *dst++ = -((lut.state != STATE_SIGN ? (val << 1) | 1 : val) - 1);
1131
1132     return coeffs - (int)(last - dst);
1133 }