changes from Alessandro Scotti from 20051129
[xboard.git] / parser.c
1 /* A lexical scanner generated by flex */
2
3 /* Scanner skeleton version:
4  * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
5  */
6
7 #define FLEX_SCANNER
8 #define YY_FLEX_MAJOR_VERSION 2
9 #define YY_FLEX_MINOR_VERSION 5
10
11 #include <stdio.h>
12 // #include <unistd.h>
13
14
15 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
16 #ifdef c_plusplus
17 #ifndef __cplusplus
18 #define __cplusplus
19 #endif
20 #endif
21
22
23 #ifdef __cplusplus
24
25 #include <stdlib.h>
26
27 /* Use prototypes in function declarations. */
28 #define YY_USE_PROTOS
29
30 /* The "const" storage-class-modifier is valid. */
31 #define YY_USE_CONST
32
33 #else   /* ! __cplusplus */
34
35 #if __STDC__
36
37 #define YY_USE_PROTOS
38 #define YY_USE_CONST
39
40 #endif  /* __STDC__ */
41 #endif  /* ! __cplusplus */
42
43 #ifdef __TURBOC__
44  #pragma warn -rch
45  #pragma warn -use
46 #include <io.h>
47 #include <stdlib.h>
48 #define YY_USE_CONST
49 #define YY_USE_PROTOS
50 #endif
51
52 #ifdef YY_USE_CONST
53 #define yyconst const
54 #else
55 #define yyconst
56 #endif
57
58
59 #ifdef YY_USE_PROTOS
60 #define YY_PROTO(proto) proto
61 #else
62 #define YY_PROTO(proto) ()
63 #endif
64
65 /* Returned upon end-of-file. */
66 #define YY_NULL 0
67
68 /* Promotes a possibly negative, possibly signed char to an unsigned
69  * integer for use as an array index.  If the signed char is negative,
70  * we want to instead treat it as an 8-bit unsigned char, hence the
71  * double cast.
72  */
73 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
74
75 /* Enter a start condition.  This macro really ought to take a parameter,
76  * but we do it the disgusting crufty way forced on us by the ()-less
77  * definition of BEGIN.
78  */
79 #define BEGIN yy_start = 1 + 2 *
80
81 /* Translate the current start state into a value that can be later handed
82  * to BEGIN to return to the state.  The YYSTATE alias is for lex
83  * compatibility.
84  */
85 #define YY_START ((yy_start - 1) / 2)
86 #define YYSTATE YY_START
87
88 /* Action number for EOF rule of a given start state. */
89 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
90
91 /* Special action meaning "start processing a new file". */
92 #define YY_NEW_FILE yyrestart( yyin )
93
94 #define YY_END_OF_BUFFER_CHAR 0
95
96 /* Size of default input buffer. */
97 #define YY_BUF_SIZE 16384
98
99 typedef struct yy_buffer_state *YY_BUFFER_STATE;
100
101 extern int yyleng;
102 extern FILE *yyin, *yyout;
103
104 #define EOB_ACT_CONTINUE_SCAN 0
105 #define EOB_ACT_END_OF_FILE 1
106 #define EOB_ACT_LAST_MATCH 2
107
108 /* The funky do-while in the following #define is used to turn the definition
109  * int a single C statement (which needs a semi-colon terminator).  This
110  * avoids problems with code like:
111  *
112  *      if ( condition_holds )
113  *              yyless( 5 );
114  *      else
115  *              do_something_else();
116  *
117  * Prior to using the do-while the compiler would get upset at the
118  * "else" because it interpreted the "if" statement as being all
119  * done when it reached the ';' after the yyless() call.
120  */
121
122 /* Return all but the first 'n' matched characters back to the input stream. */
123
124 #define yyless(n) \
125         do \
126                 { \
127                 /* Undo effects of setting up yytext. */ \
128                 *yy_cp = yy_hold_char; \
129                 YY_RESTORE_YY_MORE_OFFSET \
130                 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
131                 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
132                 } \
133         while ( 0 )
134
135 #define unput(c) yyunput( c, yytext_ptr )
136
137 /* The following is because we cannot portably get our hands on size_t
138  * (without autoconf's help, which isn't available because we want
139  * flex-generated scanners to compile on their own).
140  */
141 typedef unsigned int yy_size_t;
142
143
144 struct yy_buffer_state
145         {
146         FILE *yy_input_file;
147
148         char *yy_ch_buf;                /* input buffer */
149         char *yy_buf_pos;               /* current position in input buffer */
150
151         /* Size of input buffer in bytes, not including room for EOB
152          * characters.
153          */
154         yy_size_t yy_buf_size;
155
156         /* Number of characters read into yy_ch_buf, not including EOB
157          * characters.
158          */
159         int yy_n_chars;
160
161         /* Whether we "own" the buffer - i.e., we know we created it,
162          * and can realloc() it to grow it, and should free() it to
163          * delete it.
164          */
165         int yy_is_our_buffer;
166
167         /* Whether this is an "interactive" input source; if so, and
168          * if we're using stdio for input, then we want to use getc()
169          * instead of fread(), to make sure we stop fetching input after
170          * each newline.
171          */
172         int yy_is_interactive;
173
174         /* Whether we're considered to be at the beginning of a line.
175          * If so, '^' rules will be active on the next match, otherwise
176          * not.
177          */
178         int yy_at_bol;
179
180         /* Whether to try to fill the input buffer when we reach the
181          * end of it.
182          */
183         int yy_fill_buffer;
184
185         int yy_buffer_status;
186 #define YY_BUFFER_NEW 0
187 #define YY_BUFFER_NORMAL 1
188         /* When an EOF's been seen but there's still some text to process
189          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
190          * shouldn't try reading from the input source any more.  We might
191          * still have a bunch of tokens to match, though, because of
192          * possible backing-up.
193          *
194          * When we actually see the EOF, we change the status to "new"
195          * (via yyrestart()), so that the user can continue scanning by
196          * just pointing yyin at a new input file.
197          */
198 #define YY_BUFFER_EOF_PENDING 2
199         };
200
201 static YY_BUFFER_STATE yy_current_buffer = 0;
202
203 /* We provide macros for accessing buffer states in case in the
204  * future we want to put the buffer states in a more general
205  * "scanner state".
206  */
207 #define YY_CURRENT_BUFFER yy_current_buffer
208
209
210 /* yy_hold_char holds the character lost when yytext is formed. */
211 static char yy_hold_char;
212
213 static int yy_n_chars;          /* number of characters read into yy_ch_buf */
214
215
216 int yyleng;
217
218 /* Points to current character in buffer. */
219 static char *yy_c_buf_p = (char *) 0;
220 static int yy_init = 1;         /* whether we need to initialize */
221 static int yy_start = 0;        /* start state number */
222
223 /* Flag which is used to allow yywrap()'s to do buffer switches
224  * instead of setting up a fresh yyin.  A bit of a hack ...
225  */
226 static int yy_did_buffer_switch_on_eof;
227
228 void yyrestart YY_PROTO(( FILE *input_file ));
229
230 void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
231 void yy_load_buffer_state YY_PROTO(( void ));
232 YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
233 void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
234 void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
235 void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
236 #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
237
238 YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
239 YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
240 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
241
242 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
243 static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
244 static void yy_flex_free YY_PROTO(( void * ));
245
246 #define yy_new_buffer yy_create_buffer
247
248 #define yy_set_interactive(is_interactive) \
249         { \
250         if ( ! yy_current_buffer ) \
251                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
252         yy_current_buffer->yy_is_interactive = is_interactive; \
253         }
254
255 #define yy_set_bol(at_bol) \
256         { \
257         if ( ! yy_current_buffer ) \
258                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
259         yy_current_buffer->yy_at_bol = at_bol; \
260         }
261
262 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
263
264
265 #define YY_USES_REJECT
266 typedef unsigned char YY_CHAR;
267 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
268 typedef int yy_state_type;
269 extern char *yytext;
270 #define yytext_ptr yytext
271
272 static yy_state_type yy_get_previous_state YY_PROTO(( void ));
273 static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
274 static int yy_get_next_buffer YY_PROTO(( void ));
275 static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
276
277 /* Done after the current pattern has been matched and before the
278  * corresponding action - sets up yytext.
279  */
280 #define YY_DO_BEFORE_ACTION \
281         yytext_ptr = yy_bp; \
282         yyleng = (int) (yy_cp - yy_bp); \
283         yy_hold_char = *yy_cp; \
284         *yy_cp = '\0'; \
285         yy_c_buf_p = yy_cp;
286
287 #define YY_NUM_RULES 42
288 #define YY_END_OF_BUFFER 43
289 static yyconst short int yy_acclist[661] =
290     {   0,
291        43,   41,   42,   41,   42,   41,   42,   40,   41,   42,
292        41,   42,   25,   41,   42,   41,   42,   40,   41,   42,
293        40,   41,   42,16410,   40,   41,   42,16410,   41,   42,
294        40,   41,   42,   40,   41,   42,   40,   41,   42,   40,
295        41,   42,   40,   41,   42,   40,   41,   42,   40,   41,
296        42,   40,   41,   42,   40,   41,   42,   40,   41,   42,
297        40,   41,   42,   40,   41,   42,   40,   41,   42,   41,
298        42,   40,   41,   42,   40,   41,   42,   40,   41,   42,
299        40,   41,   42,   40,   41,   42,   40,   41,   42,   40,
300        41,   42,   40,   41,   42,   40,   41,   42,   41,   42,
301
302        41,   42,   40,   41,   42,   40,   41,   42,   40,   41,
303        42,16410,   40,   41,   42,16410,   41,   42,   40,   41,
304        42,   40,   41,   42,   40,   41,   42,   40,   41,   42,
305        40,   41,   42,   40,   41,   42,   40,   41,   42,   40,
306        41,   42,   40,   41,   42,   40,   41,   42,   40,   41,
307        42,   40,   41,   42,   40,   41,   42,   40,   41,   42,
308        40,   41,   42,   40,   41,   42,   40,   41,   42,   40,
309        41,   42,   40,   41,   42,   40,   41,   42,   40,   41,
310        42,   40,   41,   42,   41,   42,   33,   40,   17,   40,
311         9,   40,   40,   40,16410, 8218,   40,   35,   40,   40,
312
313        40,   40,   40,   40,   40,   40,   40,   40,   40,    9,
314        40,   40,   40,   40,   40,   40,   36,   40,    3,   40,
315        40,   40,    4,   40,   40,    3,   40,   40,    4,   40,
316        40,   40,   40,    9,   40,   34,   40,   40,    9,   40,
317        40,   40,16410, 8218,   40,   40,   40,   40,   40,   40,
318        40,   40,   40,   40,   40,   40,    9,   40,   40,   40,
319        40,   40,   40,   40,    3,   40,   40,   40,    4,   40,
320        40,    3,   40,   40,    4,   40,   40,   40,   40,    9,
321        40,   15,    9,   40,   23,   40,   23,    8,   40, 8218,
322        22,   40,   22,   24,   40,   40,   40,    6,   40,   40,
323
324        40,   40,   40,   40,   40,    9,   40,   40,   40,   40,
325        40,   20,   40,    4,   40,   40,    3,   40,   40,    3,
326        40,    4,    5,   40,    4,   40,   40,    4,   40,   40,
327        40,    3,   40,    4,    4,   40,    5,    6,   40,    4,
328        40,   40,    9,   40,   34,   39,    9,   40,   23,   40,
329         8,   40,   22,   40,   35,   40,   40,   40,    6,   40,
330        40,   40,   40,   40,   40,   40,    9,   40,   40,   40,
331        40,   40,   20,   40,    4,   40,   40,    3,   40,   40,
332         3,   40,    5,   40,    4,   40,   40,    4,   40,   40,
333        40,    3,   40,    4,   40,    5,    6,   40,    4,   40,
334
335        40,    9,   40,   38,   38,   37,   25,   25,   40,    6,
336        40,    7,   40,    6,   10,   40,   40,   40,   40,   19,
337        40,   40,   21,   40,   16,   40,   40,   40,   40,   40,
338        20,   20,   40,   20,   40,   36,    3,    3,    2,   40,
339         5,    4,    5,   40,   40,    4,    4,   40,    2,    7,
340        40,    5,    6,    5,    6,   40,    5,   40,   40,   40,
341        25,   39,   40,    6,   40,    7,   40,   40,   40,   40,
342        40,   19,   40,   40,   21,   40,   16,   40,   40,   40,
343        40,   40,   20,   40,   20,   20,   40,    2,   40,    5,
344        40,   40,    4,   40,    2,    7,   40,    5,    6,   40,
345
346         5,   40,   40,   40,    7,    1,   40,   40,   40,   19,
347        40,   40,   40,   21,   21,   40,   21,   40,   40,   40,
348        40,   30,   36,    2,    2,   40,    5,    4,    5,    5,
349        40,    2,    7,   39,    1,   40,   40,   40,   19,   40,
350        40,   40,   21,   40,   21,   21,   40,   40,   40,   40,
351        20,   39,    2,   40,    5,   40,   27,   38,   23,   23,
352        22,   22,   24,   24,   20,   21,    1,    1,   40,   40,
353        40,   40,   11,   40,   40,   28,   36,   30,    2,    2,
354         5,   27,   34,   39,   39,    1,   40,   40,   40,   40,
355        21,   39,   11,   40,   40,   20,   39,   18,   24,   20,
356
357        21,    1,    1,   19,   40,   40,   40,   11,   40,   40,
358        40,   40,   21,   39,   40,   11,   40,   40,   12,   40,
359        40,   40,   40,   12,   40,   40,   14,   40,   40,   40,
360        14,   40,   40,   40,   39,   40,   40,   40,   40,   39,
361        39,   40,   40,   31,   40,   39,   39,   31,   40,   13,
362        31,   32,   32,   35,   39,   39,   31,   39,   34,   29
363     } ;
364
365 static yyconst short int yy_accept[712] =
366     {   0,
367         1,    1,    1,    2,    4,    6,    8,   11,   13,   16,
368        18,   21,   25,   29,   31,   34,   37,   40,   43,   46,
369        49,   52,   55,   58,   61,   64,   67,   70,   72,   75,
370        78,   81,   84,   87,   90,   93,   96,   99,  101,  103,
371       106,  109,  113,  117,  119,  122,  125,  128,  131,  134,
372       137,  140,  143,  146,  149,  152,  155,  158,  161,  164,
373       167,  170,  173,  176,  179,  182,  185,  187,  187,  188,
374       189,  189,  189,  189,  189,  190,  190,  190,  191,  191,
375       193,  193,  193,  193,  194,  194,  194,  196,  196,  198,
376       198,  199,  199,  200,  200,  201,  201,  201,  202,  203,
377
378       204,  205,  206,  207,  208,  209,  210,  212,  213,  214,
379       215,  216,  217,  217,  217,  217,  217,  218,  219,  221,
380       221,  222,  223,  225,  226,  228,  228,  229,  231,  232,
381       233,  234,  236,  236,  236,  236,  237,  237,  238,  238,
382       239,  241,  241,  242,  244,  244,  246,  246,  247,  248,
383       248,  249,  250,  251,  252,  253,  254,  255,  256,  257,
384       259,  260,  261,  262,  263,  264,  265,  267,  267,  268,
385       269,  271,  272,  274,  274,  275,  277,  278,  279,  280,
386       282,  282,  282,  282,  282,  282,  282,  282,  282,  282,
387       282,  282,  283,  283,  283,  283,  285,  287,  288,  290,
388
389       291,  291,  291,  291,  293,  294,  295,  295,  295,  295,
390       295,  296,  296,  297,  297,  298,  298,  298,  300,  301,
391       302,  303,  304,  305,  306,  308,  309,  310,  311,  312,
392       314,  314,  314,  314,  314,  316,  316,  317,  317,  317,
393       319,  320,  322,  323,  325,  325,  325,  327,  328,  330,
394       331,  331,  332,  334,  335,  337,  340,  342,  343,  345,
395       346,  346,  346,  346,  346,  347,  349,  351,  353,  355,
396       355,  356,  356,  357,  358,  358,  359,  361,  362,  363,
397       364,  365,  366,  367,  369,  370,  371,  372,  373,  375,
398       377,  378,  378,  380,  381,  383,  385,  387,  388,  390,
399
400       391,  391,  392,  394,  396,  399,  401,  402,  404,  404,
401       404,  405,  406,  406,  406,  407,  407,  407,  408,  408,
402       409,  409,  409,  409,  410,  410,  410,  410,  410,  410,
403       410,  410,  410,  410,  410,  410,  412,  412,  412,  414,
404       415,  416,  417,  417,  418,  419,  420,  422,  422,  423,
405       425,  427,  428,  429,  430,  431,  432,  434,  436,  436,
406       436,  436,  436,  437,  438,  438,  439,  441,  442,  443,
407       443,  443,  443,  445,  446,  447,  447,  449,  449,  452,
408       454,  457,  459,  460,  461,  461,  462,  462,  462,  462,
409       462,  463,  463,  464,  464,  464,  466,  468,  469,  469,
410
411       470,  471,  472,  474,  475,  477,  479,  480,  481,  482,
412       483,  485,  486,  488,  490,  492,  493,  495,  498,  501,
413       503,  504,  505,  505,  505,  505,  505,  505,  505,  505,
414       505,  505,  505,  505,  505,  505,  505,  505,  505,  505,
415       506,  508,  509,  510,  510,  512,  512,  513,  514,  515,
416       517,  519,  520,  521,  522,  522,  522,  524,  524,  524,
417       525,  525,  525,  527,  528,  528,  529,  530,  530,  532,
418       532,  534,  534,  534,  534,  534,  534,  534,  535,  535,
419       535,  537,  538,  539,  541,  542,  543,  545,  546,  548,
420       549,  550,  551,  553,  555,  557,  557,  557,  559,  559,
421
422       559,  560,  560,  561,  561,  562,  562,  563,  563,  564,
423       564,  565,  565,  565,  565,  565,  567,  567,  568,  568,
424       568,  570,  571,  571,  571,  571,  571,  571,  572,  573,
425       575,  576,  578,  578,  579,  580,  581,  582,  582,  582,
426       584,  584,  584,  585,  586,  586,  586,  588,  589,  590,
427       591,  593,  595,  596,  598,  598,  599,  599,  599,  599,
428       600,  600,  600,  600,  602,  602,  603,  604,  604,  605,
429       605,  605,  605,  605,  606,  607,  608,  610,  611,  611,
430       611,  611,  611,  611,  612,  613,  615,  616,  618,  619,
431       619,  619,  619,  619,  619,  619,  620,  620,  620,  620,
432
433       620,  621,  622,  622,  622,  622,  622,  623,  624,  624,
434       624,  624,  624,  625,  625,  625,  625,  626,  627,  629,
435       629,  629,  629,  629,  630,  630,  631,  633,  633,  633,
436       633,  633,  634,  635,  635,  635,  635,  635,  636,  637,
437       638,  638,  638,  638,  638,  638,  639,  640,  640,  640,
438       640,  640,  641,  642,  643,  644,  644,  644,  644,  644,
439       644,  646,  646,  646,  646,  646,  647,  648,  650,  650,
440       650,  651,  651,  652,  652,  653,  653,  653,  655,  655,
441       656,  657,  657,  657,  657,  657,  659,  659,  659,  659,
442       659,  659,  659,  659,  659,  659,  659,  659,  659,  659,
443
444       659,  659,  659,  659,  659,  659,  659,  659,  660,  661,
445       661
446     } ;
447
448 static yyconst int yy_ec[256] =
449     {   0,
450         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
451         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
452         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
453         1,    4,    1,    5,    6,    7,    8,    1,    9,   10,
454        11,   12,   13,    1,   14,   15,   16,   17,   18,   19,
455        20,   20,   20,   20,   20,   20,   21,   22,   23,    1,
456        24,    1,    1,   25,   26,   27,   28,   29,   30,   31,
457        32,   33,   34,   34,   35,   36,   37,   38,   39,   40,
458        41,   42,   43,   34,   44,   34,   45,   46,   34,   34,
459        47,    1,   48,    1,   49,    1,   50,   51,   52,   53,
460
461        54,   55,   56,   57,   58,   34,   59,   60,   61,   62,
462        63,   64,   41,   65,   66,   67,   68,   34,   69,   46,
463        70,   34,   71,    1,   72,    1,    1,    1,    1,    1,
464         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
465         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
466         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
467         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
468         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
469         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
470         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
471
472         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
473         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
474         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
475         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
476         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
477         1,    1,    1,    1,    1
478     } ;
479
480 static yyconst int yy_meta[73] =
481     {   0,
482         1,    2,    3,    2,    1,    1,    1,    1,    4,    5,
483         6,    1,    1,    7,    1,    1,    4,    8,    8,    8,
484         4,    9,    1,   10,    1,    4,   11,    4,    4,    4,
485         4,    4,    4,    4,   11,    4,    4,   11,   12,   12,
486        11,   11,    4,    4,    4,    7,    1,    1,    1,   13,
487        14,   13,   13,   15,   13,   13,   13,    4,   11,    4,
488         4,   11,   12,   12,   11,    4,    4,    4,    4,    4,
489         1,    1
490     } ;
491
492 static yyconst short int yy_base[787] =
493     {   0,
494         0,   72, 2588, 4394,  119,  129,    0,  141, 2583,  139,
495       150,  171,  238, 2583,  257, 2527, 2518,  117,  159, 2518,
496      2530,  190,  142,  233,  191, 2512,  239,  317,  376,  420,
497       125,  205,  193,  114,  243,  120,  204,  331, 2574,  174,
498       353,  476,  258,  260,  543,  244,  282,  346,  311,  334,
499       256,  312,  365,  595,  331,  351,  354,  644,  688,  242,
500       348,  327,  365,  386,  303,  392,  552, 2521,  432,    0,
501      2566,  258,  557,  282, 4394, 2562,  393,  320, 2556, 2554,
502      2552,  342,  442, 2551,  457,  364,  605, 2550,    0, 2562,
503      4394,  576,  530,  617,  732,  625,  661,  449, 2514, 2509,
504
505      2512, 2517, 2492, 2493, 2490, 2517, 2515,  463,  572, 2503,
506      2494, 2489, 2502,  789,  372,  861, 4394,  669,  924,  705,
507       713,  468,  980,  765, 1032,  773,  789, 1076,  481,  637,
508      2486, 2485,  390, 2475,  830, 2542, 2541,  383, 2540,  617,
509       593,  546,  858,  874,  406,  579,  432,  865, 1120, 1005,
510       505,  683,  726,  727,  621,  872,  870,  876,  603,  873,
511       905,  665,  891,  884,  882,  973, 1168, 1013, 1049,  936,
512      1225, 1057, 1277, 1093, 1101, 1321,  641,  983,  928,  930,
513       896, 2478,  538,  543,  612, 2531,  622, 1030, 1221, 2528,
514      2466, 4394, 2532, 2531, 2529, 2518, 2527, 2526,    0, 4394,
515
516      2525, 2524, 2523, 2521, 2520,  443, 2465, 2459, 2471, 2466,
517       668,  709,  594, 1218,  732,  753,  756, 1365, 2467, 2466,
518      2446,  803,  906, 2460, 2498,    0, 2453, 2449, 2441, 1422,
519       689, 1069,  172, 1494,  790, 1251, 1294, 1302, 1415, 2496,
520       838,  976, 1288, 1557, 1413, 1449,  678,  629,  910, 1338,
521      1346,  992, 1105, 1502, 1057, 1609, 1182, 1100, 2492, 4394,
522      1510,  996, 2501,  191, 2501, 1172,  960,  962, 1158,  831,
523      2499, 1132, 1237,  889, 1482, 1300, 1653, 1176, 1228, 1010,
524      1273, 1315, 1175, 1190,    0, 1204, 1531, 1071, 1710, 1774,
525      1550, 1582, 1242, 1443, 1551, 1830, 1272, 1239, 1121, 1493,
526
527      1590, 1606, 1659, 1141, 1882, 1673, 1721, 1427, 1504, 2447,
528      4394,  843, 1025, 2489, 4394, 1727, 2487, 2485, 2423, 2422,
529      2475, 2474, 2473, 2473, 1010, 2472,  539, 2471, 1290, 1541,
530       610, 2421, 2421, 2414, 2414,    0,  939, 1197,    0, 4394,
531      4394, 1699, 1710, 1344, 2420, 2419,  885,  879, 1130, 1939,
532         0, 2438, 2420, 2421, 2420,    0, 2011, 2083,  733,  949,
533      1131, 1410, 2468, 2461, 1365, 4394, 2146, 1356, 1154,  689,
534      1752, 1796, 1157,  715, 2417, 2406,    0, 1386,    0, 1564,
535      2202, 1802, 1633, 2406, 1857, 2464, 1571, 1672, 2417, 2403,
536      2462, 1187, 1451, 1003,  894, 1295, 1470, 1718, 1855, 1823,
537
538      1555, 1665, 1782, 1796, 2267, 1574, 1588, 1826, 1647, 1674,
539      2339, 2460, 2411, 2475, 1840, 1858, 1608,    0, 2531, 1905,
540      1956, 1857, 1728, 2409, 2451, 1639, 2450, 2385, 2445, 2383,
541      2443, 2381, 2434, 1281, 2399, 2395, 2395, 2390, 1389, 4394,
542      2587, 2443, 1146, 1916, 2442, 1281, 2415, 2390,    0, 2652,
543      2724, 2378, 2378, 2428, 1322, 1883, 4394, 2426, 1966, 1457,
544      2002, 2076, 2419, 1428,  952, 4394, 2375, 2364,    0, 2410,
545      1544, 1774, 2396, 1877, 2392, 2347, 2341, 1521, 1030, 1255,
546      2787, 1676, 1881, 1788, 1891, 1861, 2852, 2402, 2924, 1963,
547      1841, 1944, 2402, 1691, 1649, 1816, 1235, 4394, 1979, 2393,
548
549      2392, 2330, 2329, 2389, 2388, 2326, 2325, 2385, 2381, 2319,
550      2318, 2366, 2362, 2315, 2323, 1377, 2320, 1778, 2004, 2102,
551      2355, 2310, 2348, 2304, 2287, 2326, 2288, 2289, 2264, 1524,
552      2279, 4394, 1980, 4394, 2317, 4394, 4394, 2312, 2053, 2319,
553      2268, 2261, 2315, 1999, 1555,  548, 1908, 1982, 1951, 1786,
554      2301, 2043, 2029, 2297, 2054, 4394, 2243, 2158, 2289, 2284,
555      2219, 2205, 2209, 4394, 2198, 2239, 4394, 2235, 2228, 2174,
556      2228, 2182, 2157, 2174, 2105, 2086,    0, 2061, 2130, 2120,
557      2054, 1040,  358, 2032, 2091, 2073, 2093, 1970, 2136, 2120,
558      1988, 2029, 1542, 1985, 1941, 1941, 1923,  884, 1858, 1831,
559
560      2996, 1815, 1772, 1768, 1617,  651, 3068, 2150, 2149, 1757,
561      1745, 1725, 4394, 1623, 1924, 2045, 3140, 2054,    0, 1631,
562      1594, 1302, 1202, 3212, 2158, 2066, 2040, 2177, 1577, 1531,
563      2110, 1524, 1496, 1455, 1427, 1308, 1895, 2162, 1448, 1422,
564      2179, 1319, 1298, 2163, 2154, 1285, 1115, 1083, 1117, 1726,
565      1576, 2196, 2198, 1062,  984, 2193, 2056,  930, 2153, 2166,
566         0,  902,  804,  803, 1618, 2210, 2238,    0, 2213,  583,
567      4394,  497, 2199,  486, 4394,  426,  460, 4394, 2116, 2203,
568      2254, 2231,  392,  317, 1804, 2255, 2281,  239, 2027,  829,
569      2006, 2117, 2293, 2295, 2298, 2299, 2303, 2317, 2321, 2322,
570
571      2323, 2365, 2366, 2369, 2370, 2371, 2233,  154, 4394, 4394,
572      3281, 3296, 3311, 3326, 3341, 3353, 3368, 3383, 3397, 3412,
573      3427, 3442, 3457, 3472, 3487, 3502, 3517, 3532, 3547, 3562,
574      3577, 3592, 3607, 3622, 3633, 3648, 3663, 3678, 3693, 3708,
575      3723, 3738, 3753, 3768, 3783, 3792, 3807, 3822, 3837, 3852,
576      3867, 3882, 3897, 3908, 3923, 3938, 3953, 3968, 3983, 3998,
577      4013, 4028, 4043, 4058, 4073, 4088, 4103, 4118, 4133, 4148,
578      4163, 4174, 4188, 4203, 4218, 4233, 4244, 4258, 4273, 4288,
579      4303, 4318, 4333, 4348, 4363, 4378
580     } ;
581
582 static yyconst short int yy_def[787] =
583     {   0,
584       710,  710,  710,  710,  710,  710,  711,  712,  710,  710,
585       711,  710,   12,  713,  711,  711,  711,  711,   15,  711,
586       711,   15,  711,  711,   15,  711,  711,  714,  711,   15,
587        29,   29,   29,   29,   29,   29,  711,  715,  710,  716,
588       716,  710,   42,  713,  716,  716,  716,  716,   45,  716,
589       716,   45,  716,  716,   45,  716,  716,  716,   45,   58,
590        58,   58,   58,   58,   58,  716,  715,  710,  710,  711,
591       717,  718,  717,  710,  710,  710,  710,  711,  710,  711,
592       710,  719,  719,  711,  719,  710,   12,  710,  711,  713,
593       710,  710,  711,  710,  711,  710,  710,   95,  711,  711,
594
595       711,  711,  711,  711,  711,  711,  711,  711,   95,  711,
596       711,  711,  720,  714,  720,  721,  710,  711,  711,  710,
597       711,  711,  711,  711,  119,  710,  711,  123,   95,  711,
598       711,  711,  715,  722,  715,  710,  723,  716,  710,  716,
599       716,  710,  716,   42,  710,  716,  724,  716,  148,  710,
600       149,  716,  716,  716,  716,  716,  716,  716,  716,  716,
601       716,  149,  716,  716,  716,  148,  148,  710,  148,  716,
602       716,  148,  167,  710,  148,  171,  149,  716,  716,  716,
603       715,  710,  717,  725,  725,  726,  727,  717,  717,  728,
604       729,  710,  710,  710,  710,  711,  711,  710,  711,  710,
605
606       710,  710,  710,  711,  710,  710,  710,  710,  710,  710,
607       711,  710,   95,  710,  711,  710,  710,  711,  711,  711,
608       711,  711,  711,  711,  711,  218,  711,  711,  711,  730,
609       731,  732,  733,  734,  123,  710,  711,  710,  710,  711,
610       711,  711,  735,  711,  710,  710,  711,  711,  123,  711,
611       710,  711,  711,  735,  123,  244,  711,  711,  711,  710,
612       715,  710,  736,  710,  737,  716,  716,  716,  716,  738,
613       736,  739,  716,  149,  710,  716,  149,  716,  716,  716,
614       716,  716,  716,  716,  277,  716,  716,  716,  740,  716,
615       716,  710,  716,  716,  716,  290,  716,  716,  290,  291,
616
617       710,  716,  716,  290,  296,  716,  716,  716,  715,  710,
618       710,  741,  741,  742,  710,  743,  744,  744,  745,  745,
619       710,  710,  710,  711,  710,  710,  710,  710,  710,  710,
620       710,  710,  710,  710,  710,  711,  746,  710,  711,  710,
621       710,  711,  710,  711,  711,  711,  711,  710,  711,  747,
622       711,  711,  711,  711,  711,  748,  749,  749,  750,  750,
623       751,  752,  753,  710,  710,  710,  711,  754,  710,  710,
624       710,  710,  711,  711,  710,  710,  711,  710,  367,  754,
625       367,  711,  711,  711,  715,  710,  710,  710,  710,  710,
626       755,  710,  716,  756,  756,  716,  716,  291,  710,  716,
627
628       716,  716,  716,  716,  757,  716,  716,  716,  716,  716,
629       758,  748,  758,  716,  716,  716,  716,  414,  414,  716,
630       716,  716,  715,  710,  759,  760,  761,  762,  763,  764,
631       765,  766,  710,  710,  710,  710,  710,  710,  710,  710,
632       711,  711,  711,  710,  711,  710,  711,  711,  767,  768,
633       768,  711,  711,  711,  769,  770,  710,  771,  710,  772,
634       710,  710,  711,  710,  710,  710,  710,  710,  711,  710,
635       772,  715,  710,  710,  710,  710,  710,  773,  774,  774,
636       414,  716,  716,  716,  716,  716,  775,  767,  775,  716,
637       716,  716,  776,  716,  716,  715,  710,  710,  760,  761,
638
639       761,  762,  762,  763,  763,  764,  764,  765,  765,  766,
640       766,  710,  710,  710,  710,  710,  710,  777,  710,  710,
641       711,  711,  778,  710,  710,  710,  710,  711,  711,  711,
642       711,  710,  710,  710,  710,  710,  710,  710,  715,  710,
643       710,  710,  773,  773,  774,  774,  716,  716,  716,  716,
644       779,  716,  716,  776,  715,  710,  710,  760,  710,  710,
645       710,  710,  710,  710,  710,  710,  710,  778,  778,  710,
646       710,  710,  710,  711,  711,  711,  711,  711,  715,  710,
647       710,  774,  774,  716,  716,  779,  716,  716,  716,  715,
648       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
649
650       780,  711,  710,  710,  774,  774,  781,  716,  715,  710,
651       710,  710,  710,  710,  782,  782,  780,  617,  711,  710,
652       710,  774,  774,  781,  782,  624,  716,  715,  710,  710,
653       782,  617,  617,  710,  710,  774,  774,  783,  624,  624,
654       715,  710,  710,  782,  782,  617,  617,  710,  710,  774,
655       774,  783,  783,  624,  624,  715,  710,  710,  782,  782,
656       617,  784,  710,  785,  774,  783,  783,  624,  715,  710,
657       710,  710,  782,  784,  710,  710,  785,  710,  774,  783,
658       783,  715,  710,  710,  774,  783,  715,  710,  774,  715,
659       786,  786,  786,  786,  786,  786,  786,  786,  786,  786,
660
661       786,  786,  786,  786,  786,  786,  786,  710,  710,    0,
662       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
663       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
664       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
665       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
666       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
667       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
668       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
669       710,  710,  710,  710,  710,  710
670     } ;
671
672 static yyconst short int yy_nxt[4467] =
673     {   0,
674         4,    4,    4,    5,    4,    4,    6,    4,    7,    8,
675         4,    9,   10,    7,    4,    4,   11,   12,   13,   13,
676        13,    4,   14,    4,    4,    7,   15,   16,   17,    7,
677         7,   18,    7,    7,   19,   20,   21,   22,   23,   24,
678        22,   25,   26,    7,   27,    7,   28,    4,    4,   29,
679        30,   31,   32,   33,   34,   35,   36,    7,   19,   20,
680        21,   22,   37,   24,   25,   26,    7,    7,   27,    7,
681        38,    4,    4,    4,    4,    5,    4,   39,    6,   39,
682         7,    8,    4,    9,   10,   40,    4,    4,   41,   42,
683        43,   43,   43,    4,   44,    4,    4,   40,   45,   46,
684
685        47,   40,   40,   48,   40,   40,   49,   50,   51,   52,
686        53,   54,   52,   55,   56,   40,   57,   40,   28,    4,
687         4,   58,   59,   60,   61,   62,   63,   64,   65,   40,
688        49,   50,   51,   52,   66,   54,   55,   56,   40,   40,
689        57,   40,   67,    4,   68,   69,   69,   69,   69,   69,
690        72,   75,   76,   77,  102,  106,  709,   73,   73,   73,
691        73,   73,  710,   78,  122,   79,   80,  123,   68,  123,
692       122,   81,   82,   82,   83,  123,  362,  123,  103,   70,
693       107,  130,   70,  710,   84,   85,   86,   87,   87,   87,
694        87,   87,   88,  710,  710,  139,   70,   89,   70,   70,
695
696        70,   70,   70,   70,   70,   89,   70,   70,   89,   89,
697        89,   89,   89,   70,   70,   70,   70,  131,   70,  363,
698        89,   89,   89,   89,   89,   89,   89,   89,   70,   89,
699        70,   70,   89,   89,   89,   89,   70,   70,   70,   70,
700        70,   82,   92,  122,  109,  123,  389,  123,   94,   70,
701        70,   70,   70,  710,  390,  122,  123,   97,  123,  710,
702        92,   82,   91,  147,   70,  139,  132,  186,  187,  101,
703        93,  138,   94,  710,   95,   95,   95,  139,   96,  139,
704       102,   97,  108,  108,  108,  108,  108,  108,  108,  108,
705        70,  190,  662,  122,  171,  111,  112,  123,  178,  123,
706
707       153,  112,   93,  139,  103,  158,   98,   98,   98,   98,
708        98,   98,   98,   98,  710,  710,   99,  113,  114,  114,
709       114,  113,  113,  113,  113,  113,  113,  113,  113,  113,
710       115,  113,  113,  134,  710,  710,  196,  197,  113,  113,
711       113,  113,   70,   82,   82,   82,  154,  135,  135,  135,
712       135,  135,  191,  170,   70,  139,   77,   92,  171,   70,
713        91,   70,   70,  113,  117,  113,  140,  139,   79,  141,
714       138,  138,  139,   70,  142,  139,  688,  170,  159,  171,
715       205,  171,  206,  155,  162,  231,  139,  113,  113,  118,
716       138,   70,  134,  119,  119,  119,  157,  120,  170,  171,
717
718        70,  171,  136,  160,  139,  179,  193,  156,  194,  265,
719       164,  165,  154,  139,  195,  170,  165,  163,  171,  117,
720       171,  121,  205,  155,  606,  122,  123,  122,  122,  122,
721       122,  122,  122,  124,  271,  272,  170,  125,  125,  125,
722       171,  126,  171,   82,   82,   82,  330,  156,   69,   69,
723        69,   69,   69,  556,  180,  201,  331,  202,   82,   82,
724        82,  136,  678,  203,  331,  127,  218,  218,  218,  128,
725       129,  128,  129,  129,  129,  129,  129,   82,   82,   83,
726       226,  226,  226,  684,   70,  244,  244,  244,  675,  143,
727        85,   86,  144,  144,  144,  144,  144,  145,  256,  256,
728
729       256,  138,  146,  138,  138,  138,  138,  138,  138,  138,
730       146,  138,  138,  146,  146,  146,  146,  146,  138,  138,
731       138,  138,  277,  277,  277,  146,  146,  146,  146,  146,
732       146,  146,  146,  138,  146,  138,  138,  146,  146,  146,
733       146,  138,  138,  138,  138,  138,   92,  184,  311,  265,
734        91,   70,  186,  312,  134,  205,  148,  206,   94,  683,
735       149,  149,  149,  198,  150,  181,  184,   97,  135,  135,
736       135,  135,  135,  188,  188,  188,  188,  188,  189,  211,
737       211,  211,  211,  211,  211,  211,  211,   70,  148,  218,
738       218,  218,  151,  151,  151,  151,  151,  151,  151,  151,
739
740       139,   70,  152,   70,  207,  583,  208,   70,   82,  268,
741        94,   70,  209,  433,  139,  710,  139,  210,   70,   97,
742       710,  186,  312,  136,  139,   70,  710,  434,  207,   70,
743       208,  314,  315,  266,  267,  671,  209,  227,  139,   70,
744       210,  284,  139,  376,  161,  161,  161,  161,  161,  161,
745       161,  161,   70,   91,  244,  244,  244,  166,  305,  305,
746       305,  167,  167,  167,  281,  168,  212,  212,  212,  212,
747       212,  212,  212,  212,  216,  216,  216,  216,  216,  216,
748       216,  216,  277,  277,  277,  336,  336,  336,  375,  169,
749       220,   70,  377,  170,  171,  170,  170,  170,  170,  170,
750
751       170,  172,  360,  376,  139,  173,  173,  173,  623,  174,
752       217,  217,  217,  217,  217,  217,  217,  217,  235,  235,
753       235,  235,  235,  235,  235,  235,  337,  337,  337,  468,
754       286,  248,  278,  175,   70,   70,  117,  176,  177,  176,
755       177,  177,  177,  177,  177,  213,  360,  139,  139,  339,
756       339,  339,  466,  214,  243,  243,  243,  243,  243,  243,
757       243,  243,  123,  123,  123,  123,  123,  123,  123,  123,
758       340,  340,  340,  341,  341,  341,  280,  213,  469,  279,
759       117,  215,  215,  215,  215,  215,  215,  215,  215,  113,
760       114,  114,  114,  113,  113,  113,  113,  113,  113,  113,
761
762       113,  113,  113,  113,  113,  678,  348,   70,   70,   70,
763       113,  113,  113,  113,  249,  249,  249,  249,  249,  249,
764       249,  249,  254,  254,  254,  254,  254,  254,  254,  254,
765       349,  691,  134,  271,  272,  113,  117,  113,  255,  255,
766       255,  255,  255,  255,  255,  255,  135,  135,  135,  135,
767       135,  261,  314,  315,  349,  367,  367,  367,  676,  113,
768       113,  113,  232,  232,  232,  233,   70,  113,  113,  113,
769       113,  113,  113,   70,  269,  113,  113,   82,   70,  139,
770        70,   70,  113,  113,   70,  113,  139,  138,  444,  710,
771        70,  139,   70,  139,  139,  139,   91,  139,  134,   70,
772
773       136,  136,  138,  139,  675,  139,  446,  113,  117,  309,
774       139,  268,  139,   70,  273,  273,  273,  273,  273,  273,
775       273,  273,  285,  285,  285,  524,  139,  336,  336,  336,
776       446,  113,  113,  236,  138,  282,   70,  237,   70,  281,
777       287,  288,  283,  289,   70,  238,  445,  239,  524,  139,
778       240,  139,  343,  296,  296,  296,  480,  139,  240,  350,
779       343,  240,  455,  325,  240,  240,  468,  136,   70,  237,
780        70,  350,  350,  241,  242,  241,  241,  241,  241,  241,
781       241,  139,  240,  139,  343,  240,  366,  672,  240,  245,
782       308,   70,  268,  367,  367,  367,  117,  244,  244,  244,
783
784       296,  296,  296,  246,  139,   91,  247,  386,  265,  379,
785       379,  379,  387,  388,  247,  537,  265,  247,   70,  427,
786       247,  247,  290,  290,  290,  290,  290,  290,  290,  290,
787       247,  139,   91,  248,  314,  315,  279,  668,  247,  184,
788       311,  247,   91,  605,  247,  250,  188,  188,  188,  188,
789       188,  189,  479,  251,  216,  216,  216,  216,  216,  216,
790       216,  216,  243,  243,  243,  243,  243,  243,  243,  243,
791       232,  232,  232,  233,  381,  381,  381,  250,  403,   70,
792       428,  252,  253,  252,  252,  252,  252,  252,  252,  213,
793       545,  668,  139,  256,  256,  256,  265,  214,  171,  171,
794
795       171,  171,  171,  171,  171,  171,  299,  299,  299,  299,
796       299,  299,  299,  299,  376,  366,  117,  339,  339,  339,
797       663,  213,  379,  379,  379,  215,  257,  215,  215,  258,
798       215,  215,  215,  274,   91,  362,  662,  410,  396,  396,
799       396,  275,  254,  254,  254,  254,  254,  254,  254,  254,
800       304,  304,  304,  304,  304,  304,  304,  304,  419,  419,
801       419,  329,  447,  377,  375,  274,   70,  467,  661,  276,
802       276,  276,  276,  276,  276,  276,  276,  236,  363,  139,
803        70,  291,  522,   70,   70,  393,  448,  394,  478,  292,
804       478,  239,  375,  139,  293,  395,  139,  139,   70,  339,
805
806       339,  339,  293,  407,   91,  293,  522,  370,  293,  293,
807       374,  139,   70,  291,  440,  440,  440,  294,  295,  294,
808       294,  294,  294,  294,  294,  139,  293,  401,  406,  293,
809       184,  311,  293,   70,  245,  248,   70,  316,  316,  316,
810       316,  316,  296,  296,  296,   70,  139,   70,  246,  139,
811        70,  297,  366,  376,  396,  396,  396,   91,  139,  297,
812       139,  408,  297,  139,  637,  297,  297,  338,  338,  338,
813       338,  338,  338,  338,  338,  297,  348,  364,  298,  402,
814        70,   70,  375,  297,  512,  364,  297,  556,  364,  297,
815       300,  364,  364,  139,  139,  557,  513,  245,  301,  429,
816
817       404,  364,  417,   70,   91,  368,  368,  368,   70,  364,
818        91,  246,  364,  526,  661,  364,  139,  397,  397,  397,
819       546,  139,  300,   70,  404,  298,  302,  303,  302,  302,
820       302,  302,  302,  302,  274,  455,  139,  527,  305,  305,
821       305,  370,  275,  241,  241,  241,  241,  241,  241,  241,
822       241,  365,  365,  365,  365,  365,  365,  365,  365,  636,
823       430,  441,  441,  441,  658,  371,  274,  650,  405,  532,
824       276,  306,  276,  276,  307,  276,  276,  276,  342,  372,
825       405,  405,  460,  460,  460,  657,  343,  252,  252,  252,
826       252,  252,  252,  252,  252,  378,  378,  378,  378,  378,
827
828       378,  378,  378,  471,  471,  471,  518,  518,  518,  465,
829       342,  456,  456,  456,  344,  344,  344,  344,  344,  344,
830       344,  344,  356,  356,  236,  356,  356,  356,  356,  356,
831       563,  356,  356,  356,  356,   70,  356,  356,  467,  369,
832       422,  364,  564,  356,  356,  356,  356,  369,  139,  364,
833       369,   70,  364,  369,  369,  364,  364,  457,  245,   70,
834       414,  414,  414,  369,  139,  364,  461,  268,  356,  356,
835       356,  369,  139,  364,  369,  369,  364,  369,   70,  364,
836       462,  465,  655,  369,  654,  265,  369,  358,  649,  369,
837       369,  139,  356,  356,  113,  232,  232,  232,  233,  369,
838
839       113,  113,  113,  113,  113,  113,  134,  369,  113,  113,
840       369,  245,  134,  369,  648,  113,  113,  423,  113,  380,
841       380,  380,  544,  392,  544,  246,  385,  385,  385,  385,
842       385,  338,  338,  338,  338,  338,  338,  338,  338,   70,
843       113,  117,  302,  302,  302,  302,  302,  302,  302,  302,
844       431,  431,  139,  461,  331,  370,  647,   91,   70,   70,
845       646,  366,  331,   70,  113,  113,  371,  462,  414,  414,
846       414,  139,  139,  371,   77,  136,  139,  576,   91,  665,
847       372,  136,   70,  373,  473,  265,   79,  372,  643,  577,
848       409,  373,   81,  265,  373,  139,   70,  373,  373,  294,
849
850       294,  294,  294,  294,  294,  294,  294,  373,  582,  139,
851       374,  432,  432,  482,   70,  373,   70,  465,  373,   91,
852        91,  373,  342,  418,  418,  418,  268,  139,  642,  139,
853       343,  365,  365,  365,  365,  365,  365,  365,  365,  378,
854       378,  378,  378,  378,  378,  378,  378,  468,  184,  498,
855       441,  441,  441,  499,  342,   70,  635,   70,  344,  382,
856       344,  344,  383,  344,  344,  344,  398,   70,  139,  366,
857       139,  622,  679,   70,  399,  474,  418,  418,  418,   92,
858       139,   70,   70,  375,   70,  475,  139,   86,  634,  630,
859       397,  397,  397,   88,  139,  139,  469,  139,  398,   70,
860
861       491,  536,  400,  400,  400,  400,  400,  400,  400,  400,
862       356,  356,  139,  356,  356,  356,  356,  356,  357,  356,
863       356,  356,  356,  483,  356,  356,  298,  492,   91,   70,
864       134,  412,  356,  356,  356,  376,  184,  311,  397,  397,
865       397,  496,  139,  426,  426,  426,  426,  426,  344,  344,
866       344,  344,  344,  344,  344,  344,  356,  356,  356,  439,
867       439,  439,  439,  439,  439,  439,  439,  400,  400,  400,
868       400,  400,  400,  400,  400,  413,  134,  613,  464,  664,
869       356,  356,   70,  245,  417,  444,  464,  519,  539,  464,
870        70,  444,  464,  464,   70,  139,   70,  246,  629,  136,
871
872       297,  520,  464,  139,   70,  371,   91,  139,  297,  139,
873       464,  297,  467,  464,  297,  297,  464,  139,  134,  441,
874       441,  441,  464,  556,  297,  621,  620,  298,  485,  555,
875       464,   70,  297,  464,   70,  297,  464,  464,  297,  371,
876       481,  481,  481,  484,  139,  540,  464,  139,   70,   70,
877       467,  585,  486,  372,  464,  374,  415,  464,  265,  134,
878       464,  139,  139,  689,  415,   70,   70,  415,  619,   70,
879       415,  415,  468,  472,  472,  472,  472,  472,  139,  139,
880       415,  490,  139,  416,  456,  456,  456,  136,  415,   70,
881       201,  415,  202,  416,  415,  398,  615,   91,  203,   70,
882
883       615,  553,  139,  399,  439,  439,  439,  439,  439,  439,
884       439,  439,  139,   70,  550,  467,   70,  548,  567,  268,
885       549,  495,  481,  481,  481,  523,  139,  398,  136,  139,
886       457,  400,  420,  400,  400,  421,  400,  400,  400,  449,
887       449,  548,  449,  449,  449,  449,  449,   92,  449,  449,
888       449,  449,   70,  449,  449,  631,  651,  524,  416,   70,
889       449,  449,  449,  449,   70,  139,  525,  533,  533,  533,
890       468,   70,  139,  481,  481,  481,  614,  139,   70,  631,
891       524,  533,  533,  533,  139,  449,  449,  449,  184,  311,
892        70,  139,  451,  584,  612,  558,  558,  558,  558,  558,
893
894       544,  392,  544,  139,  451,  451,  613,  596,  693,  449,
895       449,  356,  356,  534,  356,  356,  356,  356,  356,  495,
896       356,  356,  356,  356,  552,  356,  356,  534,  535,   91,
897       566,  158,  356,  356,  356,  356,  535,   70,  566,  535,
898        70,  566,  535,  535,  566,  566,  611,  560,   70,  610,
899       139,   70,  535,  139,  566,  134,  134,  356,  356,  356,
900       535,  139,  566,  535,  139,  566,  535,  590,  566,  579,
901       579,  579,  579,  579,  607,  392,  631,  260,  589,  632,
902       664,  356,  356,  356,  356,  461,  356,  356,  356,  356,
903       356,  639,  356,  356,  356,  356,  587,  356,  356,   70,
904
905       631,   70,  535,  633,  356,  356,  356,  356,  588,  670,
906       535,  519,  139,  535,  139,  640,  535,  535,   91,  693,
907       604,  671,  134,  603,  136,  136,  535,  602,  566,  356,
908       356,  356,  134,  609,  535,  644,  566,  535,  577,  566,
909       535,  631,  566,  566,   70,  588,  579,  579,  579,  579,
910       579,  134,  566,  356,  356,  461,  607,  139,   70,  645,
911       566,  638,  628,  566,  392,  631,  566,  184,  498,  462,
912       601,  139,  463,  685,  558,  558,  558,  558,  558,  134,
913       463,  134,  673,  463,  631,  631,  463,  463,  260,  631,
914       641,  136,  656,  653,  631,  134,  463,  631,  392,  659,
915
916       392,  540,  608,  627,  463,  392,  669,  463,  631,  631,
917       463,  371,  392,  631,  660,  134,  601,  653,  631,  673,
918       136,  631,  600,  666,  599,  372,  682,  653,  373,  653,
919       631,  598,  686,  134,  653,  693,  373,  597,  569,  373,
920       392,  653,  373,  373,  687,  569,  680,  667,  136,  567,
921       136,  653,  373,  653,  631,  374,  392,  392,  653,  596,
922       373,  564,  595,  373,  136,  653,  373,  449,  449,  653,
923       449,  449,  449,  449,  449,  450,  449,  449,  449,  449,
924       594,  449,  449,  134,  136,  653,  653,  593,  488,  449,
925       449,  449,  592,  653,  690,  693,  591,  693,  681,  392,
926
927       693,  693,  136,  392,  708,  693,  694,  686,  695,  653,
928       653,  696,  697,  449,  449,  449,  698,  392,  581,  693,
929       489,  580,  262,  693,  693,  693,  537,  536,  578,  575,
930       699,  574,  489,  489,  700,  701,  702,  449,  449,  356,
931       356,  573,  356,  356,  356,  356,  356,  357,  356,  356,
932       356,  356,  136,  356,  356,  572,  571,  570,  569,  105,
933       412,  356,  356,  356,  260,  567,  260,  693,  693,  260,
934       260,  693,  693,  693,  260,  565,  562,  561,  703,  704,
935       560,  559,  705,  706,  707,  356,  356,  356,  260,  511,
936       511,  509,  260,  260,  260,  509,  507,  507,  505,  505,
937
938       503,  503,  501,  501,  392,  551,  542,  541,  205,  356,
939       356,  356,  356,  198,  356,  356,  356,  356,  356,  357,
940       356,  356,  356,  356,  466,  356,  356,  538,  465,  536,
941       459,   92,  412,  356,  356,  356,  260,  260,  531,  530,
942       260,  260,  260,  529,  528,  444,   92,  517,  516,  515,
943       514,  434,  511,  509,  507,  505,  503,  356,  356,  356,
944       501,  187,  497,  493,  392,  477,  476,   74,  199,  470,
945       370,  366,  459,  454,  453,  452,  199,  443,  442,  438,
946       437,  356,  356,   70,  461,  436,  435,  205,  205,  199,
947       198,  198,  198,  320,  320,  318,  139,  318,  462,  187,
948
949       424,  494,  264,  392,  264,  384,  366,  355,  354,  494,
950       353,  352,  494,  351,  347,  494,  494,  346,  345,  335,
951       334,  333,  332,  329,  329,  494,  328,  327,  326,  325,
952       325,  324,  323,  494,  322,  321,  494,  320,  318,  494,
953       371,  311,  310,  265,  264,  262,  260,  199,  259,  117,
954       230,  229,  228,  199,  372,  225,  224,  415,  223,  222,
955       222,  221,  220,  219,   91,  415,  205,  204,  415,  198,
956       199,  415,  415,  198,  192,  184,  182,  137,  110,  105,
957       104,  415,  101,  100,  416,   91,   74,  710,  710,  415,
958       710,  710,  415,  710,  710,  415,  519,  710,  710,  710,
959
960       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
961       520,  710,  710,  521,  710,  710,  710,  710,  710,  710,
962       710,  521,  710,  710,  521,  710,  710,  521,  521,  710,
963       710,  710,  710,  710,  710,  710,  710,  521,  710,  710,
964       710,  710,  710,  710,  710,  521,  710,  710,  521,  710,
965       710,  521,  449,  449,  710,  449,  449,  449,  449,  449,
966       710,  449,  449,  449,  449,  710,  449,  449,  710,  710,
967       710,  710,  710,  449,  449,  449,  449,  710,  710,  710,
968       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
969       710,  710,  710,  710,  710,  710,  710,  710,  449,  449,
970
971       449,  710,  710,  710,  710,  710,  710,  710,  710,  710,
972       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
973       710,  710,  449,  449,  449,  449,  710,  449,  449,  449,
974       449,  449,  710,  449,  449,  449,  449,  710,  449,  449,
975       710,  710,  710,  710,  710,  449,  449,  449,  449,  710,
976       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
977       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
978       449,  449,  449,  710,  710,  710,  710,  451,  710,  710,
979       710,  710,  710,  710,  710,  710,  710,  710,  710,  451,
980       451,  710,  710,  710,  449,  449,  519,  710,  710,  710,
981
982       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
983       520,  710,  710,  547,  710,  710,  710,  710,  710,  710,
984       710,  547,  710,  710,  547,  710,  710,  547,  547,  710,
985       710,  710,  710,  710,  710,  710,  710,  547,  710,  710,
986       710,  710,  710,  710,  710,  547,  710,  710,  547,  710,
987       710,  547,  449,  449,  710,  449,  449,  449,  449,  449,
988       450,  449,  449,  449,  449,  710,  449,  449,  710,  710,
989       710,  710,  710,  488,  449,  449,  449,  710,  710,  710,
990       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
991       710,  710,  710,  710,  710,  710,  710,  710,  449,  449,
992
993       449,  710,  710,  710,  710,  710,  710,  710,  710,  710,
994       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
995       710,  710,  449,  449,  449,  449,  710,  449,  449,  449,
996       449,  449,  450,  449,  449,  449,  449,  710,  449,  449,
997       710,  710,  710,  710,  710,  488,  449,  449,  449,  710,
998       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
999       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
1000       449,  449,  449,  710,  710,  710,  710,  489,  710,  710,
1001       710,  710,  710,  710,  710,  710,  710,  710,  710,  489,
1002       489,  710,  710,  710,  449,  449,  616,  616,  710,  616,
1003
1004       616,  616,  616,  616,  710,  616,  616,  616,  616,  710,
1005       616,  616,  710,  710,  710,  710,  710,  616,  616,  616,
1006       616,  710,  710,  710,  710,  710,  710,  618,  710,  710,
1007       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
1008       710,  710,  616,  616,  616,  710,  710,  710,  710,  710,
1009       710,  618,  710,  710,  710,  710,  710,  710,  710,  710,
1010       710,  710,  710,  710,  710,  710,  616,  616,  616,  616,
1011       710,  616,  616,  616,  616,  616,  617,  616,  616,  616,
1012       616,  710,  616,  616,  710,  710,  710,  710,  710,  625,
1013       616,  616,  616,  710,  710,  710,  710,  710,  710,  626,
1014
1015       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
1016       710,  710,  710,  710,  616,  616,  616,  710,  710,  710,
1017       710,  710,  710,  626,  710,  710,  710,  710,  710,  710,
1018       710,  710,  710,  710,  710,  710,  710,  710,  616,  616,
1019       616,  616,  710,  616,  616,  616,  616,  616,  710,  616,
1020       616,  616,  616,  710,  616,  616,  710,  710,  710,  710,
1021       710,  616,  616,  616,  616,  710,  710,  710,  710,  710,
1022       710,  618,  710,  710,  710,  710,  710,  710,  710,  710,
1023       710,  710,  710,  710,  710,  710,  616,  616,  616,  710,
1024       710,  710,  710,  710,  710,  618,  710,  710,  710,  710,
1025
1026       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
1027       616,  616,  616,  616,  710,  616,  616,  616,  616,  616,
1028       617,  616,  616,  616,  616,  710,  616,  616,  710,  710,
1029       710,  710,  710,  625,  616,  616,  616,  710,  710,  710,
1030       710,  710,  710,  626,  710,  710,  710,  710,  710,  710,
1031       710,  710,  710,  710,  710,  710,  710,  710,  616,  616,
1032       616,  710,  710,  710,  710,  710,  710,  626,  710,  710,
1033       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
1034       710,  710,  616,  616,   70,  710,  710,   70,   70,  710,
1035       710,   70,   70,   70,   70,   70,   71,   71,   71,   71,
1036
1037        71,  710,   71,   71,   71,   71,   71,   71,   71,   71,
1038        71,   90,   90,   90,   90,   90,   90,   90,   90,   90,
1039        90,   90,   90,   90,   90,   90,  116,  116,  116,  116,
1040       116,  116,  116,  116,  116,  116,  116,  116,  116,  116,
1041       116,  133,  133,  133,  133,  133,  133,  133,  133,  133,
1042       133,  133,  133,  133,  133,  133,  138,  710,  710,  138,
1043       138,  138,  710,  138,  138,  138,  138,  138,  183,  183,
1044       183,  183,  183,  710,  183,  183,  183,  183,  183,  183,
1045       183,  183,  183,  185,  185,  185,  185,  185,  185,  185,
1046       185,  185,  185,  185,  185,  185,  185,  185,  200,  200,
1047
1048       710,  710,  710,  710,  710,  710,  710,  200,  200,  200,
1049       200,  200,  113,  113,  113,  113,  113,  113,  113,  113,
1050       113,  113,  113,  113,  113,  113,  113,  234,  234,  234,
1051       234,  234,  234,  234,  234,  234,  234,  234,  234,  234,
1052       234,  234,  134,  134,  134,  134,  134,  134,  134,  134,
1053       134,  134,  134,  134,  134,  134,  134,  263,  263,  263,
1054       263,  263,  263,  263,  263,  263,  263,  263,  263,  263,
1055       263,  263,  270,  270,  270,  270,  270,  270,  270,  270,
1056       270,  270,  270,  270,  270,  270,  270,  185,  185,  185,
1057       185,  185,  185,  185,  185,  185,  185,  185,  185,  185,
1058
1059       185,  185,  186,  186,  186,  186,  186,  186,  186,  186,
1060       186,  186,  186,  186,  186,  186,  186,  313,  313,  313,
1061       313,  313,  313,  313,  313,  313,  313,  313,  313,  313,
1062       313,  313,  317,  317,  710,  317,  317,  317,  317,  317,
1063       317,  317,  317,  317,  317,  317,  317,  319,  319,  710,
1064       319,  319,  319,  319,  319,  319,  319,  319,  319,  319,
1065       319,  319,  357,  357,  710,  357,  357,  357,  357,  357,
1066       357,  357,  357,  357,  357,  357,  357,  359,  359,  359,
1067       359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
1068       359,  359,  113,  113,  113,  113,  113,  113,  113,  113,
1069
1070       113,  113,  113,  113,  113,  113,  113,  361,  361,  361,
1071       361,  361,  361,  361,  361,  361,  361,  361,  361,  361,
1072       361,  361,  234,  234,  234,  234,  234,  234,  234,  234,
1073       234,  234,  234,  234,  234,  234,  234,  369,  710,  710,
1074       369,  710,  369,  369,  710,  710,  369,  369,  263,  263,
1075       263,  263,  263,  263,  263,  263,  263,  263,  263,  263,
1076       263,  263,  263,  391,  391,  391,  391,  391,  391,  391,
1077       391,  391,  391,  391,  391,  391,  391,  391,  270,  270,
1078       270,  270,  270,  270,  270,  270,  270,  270,  270,  270,
1079       270,  270,  270,   90,   90,   90,   90,   90,   90,   90,
1080
1081        90,   90,   90,   90,   90,   90,   90,   90,  411,  411,
1082       710,  411,  411,  411,  411,  411,  411,  411,  411,  411,
1083       411,  411,  411,  313,  313,  313,  313,  313,  313,  313,
1084       313,  313,  313,  313,  313,  313,  313,  313,  425,  425,
1085       425,  425,  710,  425,  425,  425,  425,  425,  425,  425,
1086       425,  425,  425,  183,  183,  183,  183,  183,  183,  183,
1087       183,  183,  183,  183,  183,  183,  183,  183,  317,  317,
1088       710,  317,  317,  317,  317,  317,  317,  317,  317,  317,
1089       317,  317,  317,  319,  319,  710,  319,  319,  319,  319,
1090       319,  319,  319,  319,  319,  319,  319,  319,  439,  710,
1091
1092       439,  710,  710,  710,  439,  439,  439,  450,  450,  710,
1093       450,  450,  450,  450,  450,  450,  450,  450,  450,  450,
1094       450,  450,  356,  356,  710,  356,  356,  356,  356,  356,
1095       356,  356,  356,  356,  356,  356,  356,  357,  357,  710,
1096       357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
1097       357,  357,  359,  359,  359,  359,  359,  359,  359,  359,
1098       359,  359,  359,  359,  359,  359,  359,  361,  361,  361,
1099       361,  361,  361,  361,  361,  361,  361,  361,  361,  361,
1100       361,  361,  113,  113,  113,  113,  113,  113,  113,  113,
1101       113,  113,  113,  113,  113,  113,  113,  458,  458,  458,
1102
1103       458,  458,  458,  458,  458,  458,  458,  458,  458,  458,
1104       458,  458,  464,  710,  710,  710,  710,  464,  464,  710,
1105       710,  464,  464,  391,  391,  391,  391,  391,  391,  391,
1106       391,  391,  391,  391,  391,  391,  391,  391,   90,   90,
1107        90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
1108        90,   90,   90,  487,  487,  710,  487,  487,  487,  487,
1109       487,  487,  487,  487,  487,  487,  487,  487,  411,  411,
1110       710,  411,  411,  411,  411,  411,  411,  411,  411,  411,
1111       411,  411,  411,  425,  425,  425,  425,  710,  425,  425,
1112       425,  425,  425,  425,  425,  425,  425,  425,  183,  183,
1113
1114       183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
1115       183,  183,  183,  500,  500,  710,  500,  500,  500,  500,
1116       500,  500,  500,  500,  500,  500,  500,  500,  502,  502,
1117       710,  502,  502,  502,  502,  502,  502,  502,  502,  502,
1118       502,  502,  502,  504,  504,  710,  504,  504,  504,  504,
1119       504,  504,  504,  504,  504,  504,  504,  504,  506,  506,
1120       710,  506,  506,  506,  506,  506,  506,  506,  506,  506,
1121       506,  506,  506,  508,  508,  710,  508,  508,  508,  508,
1122       508,  508,  508,  508,  508,  508,  508,  508,  510,  510,
1123       710,  510,  510,  510,  510,  510,  510,  510,  510,  510,
1124
1125       510,  510,  510,  449,  449,  710,  449,  449,  449,  449,
1126       449,  449,  449,  449,  449,  449,  449,  449,  450,  450,
1127       710,  450,  450,  450,  450,  450,  450,  450,  450,  450,
1128       450,  450,  450,  359,  359,  359,  359,  359,  359,  359,
1129       359,  359,  359,  359,  359,  359,  359,  359,  113,  113,
1130       113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
1131       113,  113,  113,  458,  458,  458,  458,  458,  458,  458,
1132       458,  458,  458,  458,  458,  458,  458,  458,  535,  710,
1133       710,  710,  710,  535,  535,  710,  710,  535,  543,  543,
1134       543,  543,  543,  543,  543,  543,  543,  543,  543,  543,
1135
1136       543,  543,  543,   90,   90,   90,   90,   90,   90,   90,
1137        90,   90,   90,   90,   90,   90,   90,   90,  487,  487,
1138       710,  487,  487,  487,  487,  487,  487,  487,  487,  487,
1139       487,  487,  487,  554,  554,  554,  554,  554,  554,  554,
1140       554,  554,  554,  554,  554,  554,  554,  554,  566,  710,
1141       710,  710,  710,  566,  566,  710,  710,  566,  568,  568,
1142       710,  568,  568,  568,  568,  568,  568,  568,  568,  568,
1143       568,  568,  568,  586,  586,  586,  586,  586,  586,  586,
1144       586,  586,  586,  586,  586,  586,  586,  586,  617,  617,
1145       710,  617,  617,  617,  617,  617,  617,  617,  617,  617,
1146
1147       617,  617,  617,  624,  624,  710,  624,  624,  624,  624,
1148       624,  624,  624,  624,  624,  624,  624,  624,  616,  616,
1149       710,  616,  616,  616,  616,  616,  616,  616,  616,  616,
1150       616,  616,  616,  652,  652,  652,  652,  652,  652,  652,
1151       652,  652,  652,  652,  652,  652,  652,  652,  674,  674,
1152       674,  674,  674,  674,  674,  674,  674,  674,  674,  674,
1153       674,  674,  674,  677,  677,  677,  677,  677,  677,  677,
1154       677,  677,  677,  677,  677,  677,  677,  677,  692,  692,
1155       692,  692,  692,  692,  692,  692,  692,  692,  692,  692,
1156       692,  692,  692,    3,  710,  710,  710,  710,  710,  710,
1157
1158       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
1159       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
1160       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
1161       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
1162       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
1163       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
1164       710,  710,  710,  710,  710,  710
1165     } ;
1166
1167 static yyconst short int yy_chk[4467] =
1168     {   0,
1169         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1170         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1171         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1172         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1173         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1174         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1175         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1176         1,    1,    2,    2,    2,    2,    2,    2,    2,    2,
1177         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1178         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1179
1180         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1181         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1182         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1183         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1184         2,    2,    2,    2,    5,    6,    6,    6,    6,    6,
1185         8,   10,   10,   11,   18,   23,  708,    8,    8,    8,
1186         8,    8,   19,   11,   34,   11,   11,   34,    5,   34,
1187        36,   11,   12,   12,   12,   36,  233,   31,   18,   12,
1188        23,   31,   40,   19,   12,   12,   12,   12,   12,   12,
1189        12,   12,   12,   22,   25,   40,   12,   12,   12,   12,
1190
1191        12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
1192        12,   12,   12,   12,   12,   12,   12,   37,   19,  233,
1193        12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
1194        12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
1195        12,   13,   27,   33,   25,   33,  264,   33,   24,   22,
1196        25,   13,   46,   13,  264,   32,   32,   24,   32,   13,
1197        15,   43,   44,   44,   51,   46,   37,   72,   72,   32,
1198        15,   43,   15,   43,   15,   15,   15,   51,   15,   43,
1199        35,   15,   24,   24,   24,   24,   24,   24,   24,   24,
1200        47,   74,  688,   35,   60,   27,   27,   35,   60,   35,
1201
1202        46,   27,   15,   47,   35,   51,   15,   15,   15,   15,
1203        15,   15,   15,   15,   49,   52,   15,   28,   28,   28,
1204        28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
1205        28,   28,   28,   38,   55,   49,   78,   78,   28,   28,
1206        28,   28,   50,   82,   82,   82,   47,   38,   38,   38,
1207        38,   38,   74,   65,   48,   50,   41,   57,   65,   56,
1208       583,   41,   57,   28,   28,   28,   41,   48,   41,   41,
1209        49,   52,   56,   53,   41,   57,  684,   62,   53,   62,
1210        86,   62,   86,   48,   55,  115,   53,   28,   28,   29,
1211        55,  138,  133,   29,   29,   29,   50,   29,   61,   61,
1212
1213        66,   61,   38,   53,  138,   66,   77,   48,   77,  145,
1214        57,   57,   61,   66,   77,   63,   57,   56,   63,  115,
1215        63,   29,  145,   64,  583,   29,   29,   29,   29,   29,
1216        29,   29,   29,   30,  147,  147,   64,   30,   30,   30,
1217        64,   30,   64,   83,   83,   83,  206,   64,   69,   69,
1218        69,   69,   69,  683,   66,   83,  206,   83,   85,   85,
1219        85,  133,  677,   83,  206,   30,   98,   98,   98,   30,
1220        30,   30,   30,   30,   30,   30,   30,   42,   42,   42,
1221       108,  108,  108,  676,   42,  122,  122,  122,  674,   42,
1222        42,   42,   42,   42,   42,   42,   42,   42,  129,  129,
1223
1224       129,   42,   42,   42,   42,   42,   42,   42,   42,   42,
1225        42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
1226        42,   42,  151,  151,  151,   42,   42,   42,   42,   42,
1227        42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
1228        42,   42,   42,   42,   42,   42,   45,  183,  183,  142,
1229       546,   45,  184,  184,   67,  327,   45,  327,   45,  672,
1230        45,   45,   45,  142,   45,   67,   73,   45,   67,   67,
1231        67,   67,   67,   73,   73,   73,   73,   73,   73,   93,
1232        93,   93,   93,   93,   93,   93,   93,  146,   45,  109,
1233       109,  109,   45,   45,   45,   45,   45,   45,   45,   45,
1234
1235       146,  141,   45,   54,   92,  546,   92,  213,   87,  141,
1236        54,  159,   92,  331,  141,  213,   54,   92,   87,   54,
1237        87,  185,  185,   67,  159,  140,   87,  331,   92,  155,
1238        92,  187,  187,  140,  140,  670,   92,  109,  140,  213,
1239        92,  159,  155,  248,   54,   54,   54,   54,   54,   54,
1240        54,   54,   58,  606,  130,  130,  130,   58,  177,  177,
1241       177,   58,   58,   58,  155,   58,   94,   94,   94,   94,
1242        94,   94,   94,   94,   96,   96,   96,   96,   96,   96,
1243        96,   96,  162,  162,  162,  211,  211,  211,  247,   58,
1244       130,  152,  248,   58,   58,   58,   58,   58,   58,   58,
1245
1246        58,   59,  231,  370,  152,   59,   59,   59,  606,   59,
1247        97,   97,   97,   97,   97,   97,   97,   97,  118,  118,
1248       118,  118,  118,  118,  118,  118,  212,  212,  212,  374,
1249       162,  247,  152,   59,  153,  154,  231,   59,   59,   59,
1250        59,   59,   59,   59,   59,   95,  359,  153,  154,  215,
1251       215,  215,  370,   95,  120,  120,  120,  120,  120,  120,
1252       120,  120,  121,  121,  121,  121,  121,  121,  121,  121,
1253       216,  216,  216,  217,  217,  217,  154,   95,  374,  153,
1254       359,   95,   95,   95,   95,   95,   95,   95,   95,  114,
1255       114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
1256
1257       114,  114,  114,  114,  114,  664,  222,  235,  235,  235,
1258       114,  114,  114,  114,  124,  124,  124,  124,  124,  124,
1259       124,  124,  126,  126,  126,  126,  126,  126,  126,  126,
1260       222,  690,  135,  270,  270,  114,  114,  114,  127,  127,
1261       127,  127,  127,  127,  127,  127,  135,  135,  135,  135,
1262       135,  135,  312,  312,  222,  241,  241,  241,  663,  114,
1263       114,  116,  116,  116,  116,  116,  143,  116,  116,  116,
1264       116,  116,  116,  148,  143,  116,  116,  144,  157,  143,
1265       156,  160,  116,  116,  158,  116,  148,  144,  347,  144,
1266       165,  157,  164,  156,  160,  144,  395,  158,  181,  163,
1267
1268       690,  135,  274,  165,  662,  164,  348,  116,  116,  181,
1269       274,  160,  163,  161,  148,  148,  148,  148,  148,  148,
1270       148,  148,  161,  161,  161,  598,  161,  249,  249,  249,
1271       348,  116,  116,  119,  274,  157,  179,  119,  180,  156,
1272       163,  164,  158,  165,  170,  119,  347,  119,  598,  179,
1273       119,  180,  337,  170,  170,  170,  395,  170,  119,  223,
1274       337,  119,  360,  267,  119,  119,  465,  181,  267,  119,
1275       268,  223,  223,  119,  119,  119,  119,  119,  119,  119,
1276       119,  267,  119,  268,  337,  119,  242,  658,  119,  123,
1277       179,  178,  180,  242,  242,  242,  360,  123,  123,  123,
1278
1279       178,  178,  178,  123,  178,  394,  123,  262,  150,  252,
1280       252,  252,  262,  262,  123,  465,  168,  123,  280,  325,
1281       123,  123,  166,  166,  166,  166,  166,  166,  166,  166,
1282       123,  280,  479,  123,  313,  313,  178,  655,  123,  188,
1283       188,  123,  582,  582,  123,  125,  188,  188,  188,  188,
1284       188,  188,  394,  125,  150,  150,  150,  150,  150,  150,
1285       150,  150,  168,  168,  168,  168,  168,  168,  168,  168,
1286       232,  232,  232,  232,  255,  255,  255,  125,  280,  288,
1287       325,  125,  125,  125,  125,  125,  125,  125,  125,  128,
1288       479,  654,  288,  128,  128,  128,  174,  128,  169,  169,
1289
1290       169,  169,  169,  169,  169,  169,  172,  172,  172,  172,
1291       172,  172,  172,  172,  258,  253,  232,  258,  258,  258,
1292       649,  128,  253,  253,  253,  128,  128,  128,  128,  128,
1293       128,  128,  128,  149,  272,  361,  648,  288,  299,  299,
1294       299,  149,  174,  174,  174,  174,  174,  174,  174,  174,
1295       175,  175,  175,  175,  175,  175,  175,  175,  304,  304,
1296       304,  269,  349,  258,  369,  149,  269,  373,  647,  149,
1297       149,  149,  149,  149,  149,  149,  149,  167,  361,  269,
1298       266,  167,  443,  283,  278,  266,  349,  272,  392,  167,
1299       392,  167,  257,  266,  167,  272,  283,  278,  284,  257,
1300
1301       257,  257,  167,  284,  623,  167,  443,  369,  167,  167,
1302       373,  284,  286,  167,  338,  338,  338,  167,  167,  167,
1303       167,  167,  167,  167,  167,  286,  167,  278,  283,  167,
1304       189,  189,  167,  171,  171,  257,  279,  189,  189,  189,
1305       189,  189,  171,  171,  171,  273,  171,  298,  171,  279,
1306       293,  171,  293,  298,  273,  273,  273,  480,  273,  171,
1307       298,  286,  171,  293,  623,  171,  171,  214,  214,  214,
1308       214,  214,  214,  214,  214,  171,  281,  236,  171,  279,
1309       297,  281,  297,  171,  434,  236,  171,  497,  236,  171,
1310       173,  236,  236,  297,  281,  497,  434,  243,  173,  329,
1311
1312       281,  236,  298,  396,  622,  243,  243,  243,  276,  236,
1313       636,  243,  236,  446,  646,  236,  396,  276,  276,  276,
1314       480,  276,  173,  282,  281,  297,  173,  173,  173,  173,
1315       173,  173,  173,  173,  176,  455,  282,  446,  176,  176,
1316       176,  243,  176,  237,  237,  237,  237,  237,  237,  237,
1317       237,  238,  238,  238,  238,  238,  238,  238,  238,  622,
1318       329,  344,  344,  344,  643,  368,  176,  636,  282,  455,
1319       176,  176,  176,  176,  176,  176,  176,  176,  218,  368,
1320       282,  282,  365,  365,  365,  642,  218,  250,  250,  250,
1321       250,  250,  250,  250,  250,  251,  251,  251,  251,  251,
1322
1323       251,  251,  251,  378,  378,  378,  439,  439,  439,  368,
1324       218,  362,  362,  362,  218,  218,  218,  218,  218,  218,
1325       218,  218,  230,  230,  239,  230,  230,  230,  230,  230,
1326       516,  230,  230,  230,  230,  308,  230,  230,  464,  245,
1327       308,  239,  516,  230,  230,  230,  230,  245,  308,  239,
1328       245,  294,  239,  245,  245,  239,  239,  362,  246,  393,
1329       294,  294,  294,  245,  294,  239,  460,  393,  230,  230,
1330       230,  245,  393,  239,  245,  246,  239,  245,  397,  239,
1331       460,  464,  640,  246,  639,  275,  246,  230,  635,  246,
1332       246,  397,  230,  230,  234,  234,  234,  234,  234,  246,
1333
1334       234,  234,  234,  234,  234,  234,  309,  246,  234,  234,
1335       246,  254,  261,  246,  634,  234,  234,  309,  234,  254,
1336       254,  254,  478,  478,  478,  254,  261,  261,  261,  261,
1337       261,  275,  275,  275,  275,  275,  275,  275,  275,  287,
1338       234,  234,  300,  300,  300,  300,  300,  300,  300,  300,
1339       330,  593,  287,  471,  330,  254,  633,  545,  291,  295,
1340       632,  295,  330,  401,  234,  234,  244,  471,  295,  295,
1341       295,  291,  295,  380,  387,  309,  401,  530,  651,  651,
1342       244,  261,  406,  244,  387,  292,  387,  380,  630,  530,
1343       287,  244,  387,  301,  244,  406,  407,  244,  244,  291,
1344
1345       291,  291,  291,  291,  291,  291,  291,  244,  545,  407,
1346       244,  330,  593,  401,  302,  244,  417,  380,  244,  605,
1347       665,  244,  256,  302,  302,  302,  407,  302,  629,  417,
1348       256,  292,  292,  292,  292,  292,  292,  292,  292,  301,
1349       301,  301,  301,  301,  301,  301,  301,  383,  426,  426,
1350       383,  383,  383,  426,  256,  409,  621,  495,  256,  256,
1351       256,  256,  256,  256,  256,  256,  277,  303,  409,  303,
1352       495,  605,  665,  402,  277,  388,  303,  303,  303,  482,
1353       303,  306,  410,  306,  482,  388,  402,  388,  620,  614,
1354       306,  306,  306,  388,  306,  410,  383,  482,  277,  494,
1355
1356       409,  494,  277,  277,  277,  277,  277,  277,  277,  277,
1357       289,  289,  494,  289,  289,  289,  289,  289,  289,  289,
1358       289,  289,  289,  402,  289,  289,  306,  410,  650,  307,
1359       423,  289,  289,  289,  289,  307,  316,  316,  307,  307,
1360       307,  423,  307,  316,  316,  316,  316,  316,  342,  342,
1361       342,  342,  342,  342,  342,  342,  289,  289,  289,  343,
1362       343,  343,  343,  343,  343,  343,  343,  398,  398,  398,
1363       398,  398,  398,  398,  398,  289,  472,  612,  371,  650,
1364       289,  289,  290,  290,  307,  403,  371,  518,  472,  371,
1365       403,  484,  371,  371,  550,  290,  484,  290,  611,  423,
1366
1367       290,  518,  371,  403,  404,  372,  685,  550,  290,  484,
1368       371,  290,  382,  371,  290,  290,  371,  404,  496,  382,
1369       382,  382,  372,  610,  290,  604,  603,  290,  404,  496,
1370       372,  400,  290,  372,  408,  290,  372,  372,  290,  296,
1371       400,  400,  400,  403,  400,  472,  372,  408,  415,  491,
1372       415,  550,  404,  296,  372,  382,  296,  372,  399,  385,
1373       372,  415,  491,  685,  296,  422,  416,  296,  602,  486,
1374       296,  296,  416,  385,  385,  385,  385,  385,  422,  416,
1375       296,  408,  486,  296,  456,  456,  456,  496,  296,  483,
1376       474,  296,  474,  415,  296,  305,  600,  637,  474,  485,
1377
1378       599,  491,  483,  305,  399,  399,  399,  399,  399,  399,
1379       399,  399,  485,  420,  486,  420,  547,  483,  547,  422,
1380       485,  416,  420,  420,  420,  444,  420,  305,  385,  547,
1381       456,  305,  305,  305,  305,  305,  305,  305,  305,  350,
1382       350,  483,  350,  350,  350,  350,  350,  492,  350,  350,
1383       350,  350,  492,  350,  350,  615,  637,  444,  420,  549,
1384       350,  350,  350,  350,  421,  492,  444,  459,  459,  459,
1385       421,  490,  549,  421,  421,  421,  597,  421,  588,  615,
1386       444,  533,  533,  533,  490,  350,  350,  350,  499,  499,
1387       548,  588,  350,  549,  596,  499,  499,  499,  499,  499,
1388
1389       544,  544,  544,  548,  350,  350,  596,  595,  691,  350,
1390       350,  357,  357,  459,  357,  357,  357,  357,  357,  421,
1391       357,  357,  357,  357,  490,  357,  357,  533,  461,  689,
1392       519,  548,  357,  357,  357,  357,  461,  553,  519,  461,
1393       584,  519,  461,  461,  519,  519,  594,  592,  627,  591,
1394       553,  552,  461,  584,  519,  539,  555,  357,  357,  357,
1395       461,  627,  519,  461,  552,  519,  461,  555,  519,  539,
1396       539,  539,  539,  539,  584,  586,  616,  691,  553,  618,
1397       689,  357,  357,  358,  358,  462,  358,  358,  358,  358,
1398       358,  626,  358,  358,  358,  358,  552,  358,  358,  585,
1399
1400       616,  587,  462,  618,  358,  358,  358,  358,  552,  657,
1401       462,  520,  585,  462,  587,  626,  462,  462,  679,  692,
1402       581,  657,  590,  580,  539,  555,  462,  578,  520,  358,
1403       358,  358,  579,  590,  462,  631,  520,  462,  576,  520,
1404       462,  631,  520,  520,  589,  587,  579,  579,  579,  579,
1405       579,  609,  520,  358,  358,  367,  585,  589,  608,  631,
1406       520,  625,  609,  520,  638,  631,  520,  558,  558,  367,
1407       575,  608,  367,  679,  558,  558,  558,  558,  558,  628,
1408       367,  641,  659,  367,  659,  645,  367,  367,  692,  625,
1409       628,  590,  641,  638,  644,  656,  367,  660,  652,  644,
1410
1411       653,  579,  589,  608,  367,  680,  656,  367,  659,  645,
1412       367,  381,  666,  625,  645,  669,  574,  638,  644,  660,
1413       609,  660,  573,  653,  572,  381,  669,  652,  381,  653,
1414       673,  571,  680,  682,  680,  707,  381,  570,  569,  381,
1415       667,  666,  381,  381,  682,  568,  666,  653,  628,  566,
1416       641,  652,  381,  653,  673,  381,  681,  686,  680,  565,
1417       381,  563,  562,  381,  656,  666,  381,  405,  405,  667,
1418       405,  405,  405,  405,  405,  405,  405,  405,  405,  405,
1419       561,  405,  405,  687,  669,  681,  686,  560,  405,  405,
1420       405,  405,  559,  667,  687,  693,  557,  694,  667,  554,
1421
1422       695,  696,  682,  551,  707,  697,  693,  681,  694,  681,
1423       686,  695,  696,  405,  405,  405,  697,  543,  542,  698,
1424       405,  541,  540,  699,  700,  701,  538,  535,  531,  529,
1425       698,  528,  405,  405,  699,  700,  701,  405,  405,  411,
1426       411,  527,  411,  411,  411,  411,  411,  411,  411,  411,
1427       411,  411,  687,  411,  411,  526,  525,  524,  523,  522,
1428       411,  411,  411,  411,  693,  521,  694,  702,  703,  695,
1429       696,  704,  705,  706,  697,  517,  515,  514,  702,  703,
1430       513,  512,  704,  705,  706,  411,  411,  411,  698,  511,
1431       510,  509,  699,  700,  701,  508,  507,  506,  505,  504,
1432
1433       503,  502,  501,  500,  493,  488,  477,  476,  475,  411,
1434       411,  413,  413,  473,  413,  413,  413,  413,  413,  413,
1435       413,  413,  413,  413,  470,  413,  413,  468,  467,  463,
1436       458,  454,  413,  413,  413,  413,  702,  703,  453,  452,
1437       704,  705,  706,  448,  447,  445,  442,  438,  437,  436,
1438       435,  433,  432,  431,  430,  429,  428,  413,  413,  413,
1439       427,  425,  424,  412,  391,  390,  389,  386,  384,  376,
1440       375,  364,  363,  355,  354,  353,  352,  346,  345,  335,
1441       334,  413,  413,  414,  414,  333,  332,  328,  326,  324,
1442       323,  322,  321,  320,  319,  318,  414,  317,  414,  314,
1443
1444       310,  414,  271,  265,  263,  259,  240,  229,  228,  414,
1445       227,  225,  414,  224,  221,  414,  414,  220,  219,  210,
1446       209,  208,  207,  205,  204,  414,  203,  202,  201,  198,
1447       197,  196,  195,  414,  194,  193,  414,  191,  190,  414,
1448       419,  186,  182,  139,  137,  136,  134,  132,  131,  113,
1449       112,  111,  110,  107,  419,  106,  105,  419,  104,  103,
1450       102,  101,  100,   99,   90,  419,   88,   84,  419,   81,
1451        80,  419,  419,   79,   76,   71,   68,   39,   26,   21,
1452        20,  419,   17,   16,  419,   14,    9,    3,    0,  419,
1453         0,    0,  419,    0,    0,  419,  441,    0,    0,    0,
1454
1455         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1456       441,    0,    0,  441,    0,    0,    0,    0,    0,    0,
1457         0,  441,    0,    0,  441,    0,    0,  441,  441,    0,
1458         0,    0,    0,    0,    0,    0,    0,  441,    0,    0,
1459         0,    0,    0,    0,    0,  441,    0,    0,  441,    0,
1460         0,  441,  450,  450,    0,  450,  450,  450,  450,  450,
1461         0,  450,  450,  450,  450,    0,  450,  450,    0,    0,
1462         0,    0,    0,  450,  450,  450,  450,    0,    0,    0,
1463         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1464         0,    0,    0,    0,    0,    0,    0,    0,  450,  450,
1465
1466       450,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1467         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1468         0,    0,  450,  450,  451,  451,    0,  451,  451,  451,
1469       451,  451,    0,  451,  451,  451,  451,    0,  451,  451,
1470         0,    0,    0,    0,    0,  451,  451,  451,  451,    0,
1471         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1472         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1473       451,  451,  451,    0,    0,    0,    0,  451,    0,    0,
1474         0,    0,    0,    0,    0,    0,    0,    0,    0,  451,
1475       451,    0,    0,    0,  451,  451,  481,    0,    0,    0,
1476
1477         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1478       481,    0,    0,  481,    0,    0,    0,    0,    0,    0,
1479         0,  481,    0,    0,  481,    0,    0,  481,  481,    0,
1480         0,    0,    0,    0,    0,    0,    0,  481,    0,    0,
1481         0,    0,    0,    0,    0,  481,    0,    0,  481,    0,
1482         0,  481,  487,  487,    0,  487,  487,  487,  487,  487,
1483       487,  487,  487,  487,  487,    0,  487,  487,    0,    0,
1484         0,    0,    0,  487,  487,  487,  487,    0,    0,    0,
1485         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1486         0,    0,    0,    0,    0,    0,    0,    0,  487,  487,
1487
1488       487,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1489         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1490         0,    0,  487,  487,  489,  489,    0,  489,  489,  489,
1491       489,  489,  489,  489,  489,  489,  489,    0,  489,  489,
1492         0,    0,    0,    0,    0,  489,  489,  489,  489,    0,
1493         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1494         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1495       489,  489,  489,    0,    0,    0,    0,  489,    0,    0,
1496         0,    0,    0,    0,    0,    0,    0,    0,    0,  489,
1497       489,    0,    0,    0,  489,  489,  601,  601,    0,  601,
1498
1499       601,  601,  601,  601,    0,  601,  601,  601,  601,    0,
1500       601,  601,    0,    0,    0,    0,    0,  601,  601,  601,
1501       601,    0,    0,    0,    0,    0,    0,  601,    0,    0,
1502         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1503         0,    0,  601,  601,  601,    0,    0,    0,    0,    0,
1504         0,  601,    0,    0,    0,    0,    0,    0,    0,    0,
1505         0,    0,    0,    0,    0,    0,  601,  601,  607,  607,
1506         0,  607,  607,  607,  607,  607,  607,  607,  607,  607,
1507       607,    0,  607,  607,    0,    0,    0,    0,    0,  607,
1508       607,  607,  607,    0,    0,    0,    0,    0,    0,  607,
1509
1510         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1511         0,    0,    0,    0,  607,  607,  607,    0,    0,    0,
1512         0,    0,    0,  607,    0,    0,    0,    0,    0,    0,
1513         0,    0,    0,    0,    0,    0,    0,    0,  607,  607,
1514       617,  617,    0,  617,  617,  617,  617,  617,    0,  617,
1515       617,  617,  617,    0,  617,  617,    0,    0,    0,    0,
1516         0,  617,  617,  617,  617,    0,    0,    0,    0,    0,
1517         0,  617,    0,    0,    0,    0,    0,    0,    0,    0,
1518         0,    0,    0,    0,    0,    0,  617,  617,  617,    0,
1519         0,    0,    0,    0,    0,  617,    0,    0,    0,    0,
1520
1521         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1522       617,  617,  624,  624,    0,  624,  624,  624,  624,  624,
1523       624,  624,  624,  624,  624,    0,  624,  624,    0,    0,
1524         0,    0,    0,  624,  624,  624,  624,    0,    0,    0,
1525         0,    0,    0,  624,    0,    0,    0,    0,    0,    0,
1526         0,    0,    0,    0,    0,    0,    0,    0,  624,  624,
1527       624,    0,    0,    0,    0,    0,    0,  624,    0,    0,
1528         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1529         0,    0,  624,  624,  711,    0,    0,  711,  711,    0,
1530         0,  711,  711,  711,  711,  711,  712,  712,  712,  712,
1531
1532       712,    0,  712,  712,  712,  712,  712,  712,  712,  712,
1533       712,  713,  713,  713,  713,  713,  713,  713,  713,  713,
1534       713,  713,  713,  713,  713,  713,  714,  714,  714,  714,
1535       714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
1536       714,  715,  715,  715,  715,  715,  715,  715,  715,  715,
1537       715,  715,  715,  715,  715,  715,  716,    0,    0,  716,
1538       716,  716,    0,  716,  716,  716,  716,  716,  717,  717,
1539       717,  717,  717,    0,  717,  717,  717,  717,  717,  717,
1540       717,  717,  717,  718,  718,  718,  718,  718,  718,  718,
1541       718,  718,  718,  718,  718,  718,  718,  718,  719,  719,
1542
1543         0,    0,    0,    0,    0,    0,    0,  719,  719,  719,
1544       719,  719,  720,  720,  720,  720,  720,  720,  720,  720,
1545       720,  720,  720,  720,  720,  720,  720,  721,  721,  721,
1546       721,  721,  721,  721,  721,  721,  721,  721,  721,  721,
1547       721,  721,  722,  722,  722,  722,  722,  722,  722,  722,
1548       722,  722,  722,  722,  722,  722,  722,  723,  723,  723,
1549       723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
1550       723,  723,  724,  724,  724,  724,  724,  724,  724,  724,
1551       724,  724,  724,  724,  724,  724,  724,  725,  725,  725,
1552       725,  725,  725,  725,  725,  725,  725,  725,  725,  725,
1553
1554       725,  725,  726,  726,  726,  726,  726,  726,  726,  726,
1555       726,  726,  726,  726,  726,  726,  726,  727,  727,  727,
1556       727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
1557       727,  727,  728,  728,    0,  728,  728,  728,  728,  728,
1558       728,  728,  728,  728,  728,  728,  728,  729,  729,    0,
1559       729,  729,  729,  729,  729,  729,  729,  729,  729,  729,
1560       729,  729,  730,  730,    0,  730,  730,  730,  730,  730,
1561       730,  730,  730,  730,  730,  730,  730,  731,  731,  731,
1562       731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
1563       731,  731,  732,  732,  732,  732,  732,  732,  732,  732,
1564
1565       732,  732,  732,  732,  732,  732,  732,  733,  733,  733,
1566       733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
1567       733,  733,  734,  734,  734,  734,  734,  734,  734,  734,
1568       734,  734,  734,  734,  734,  734,  734,  735,    0,    0,
1569       735,    0,  735,  735,    0,    0,  735,  735,  736,  736,
1570       736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
1571       736,  736,  736,  737,  737,  737,  737,  737,  737,  737,
1572       737,  737,  737,  737,  737,  737,  737,  737,  738,  738,
1573       738,  738,  738,  738,  738,  738,  738,  738,  738,  738,
1574       738,  738,  738,  739,  739,  739,  739,  739,  739,  739,
1575
1576       739,  739,  739,  739,  739,  739,  739,  739,  740,  740,
1577         0,  740,  740,  740,  740,  740,  740,  740,  740,  740,
1578       740,  740,  740,  741,  741,  741,  741,  741,  741,  741,
1579       741,  741,  741,  741,  741,  741,  741,  741,  742,  742,
1580       742,  742,    0,  742,  742,  742,  742,  742,  742,  742,
1581       742,  742,  742,  743,  743,  743,  743,  743,  743,  743,
1582       743,  743,  743,  743,  743,  743,  743,  743,  744,  744,
1583         0,  744,  744,  744,  744,  744,  744,  744,  744,  744,
1584       744,  744,  744,  745,  745,    0,  745,  745,  745,  745,
1585       745,  745,  745,  745,  745,  745,  745,  745,  746,    0,
1586
1587       746,    0,    0,    0,  746,  746,  746,  747,  747,    0,
1588       747,  747,  747,  747,  747,  747,  747,  747,  747,  747,
1589       747,  747,  748,  748,    0,  748,  748,  748,  748,  748,
1590       748,  748,  748,  748,  748,  748,  748,  749,  749,    0,
1591       749,  749,  749,  749,  749,  749,  749,  749,  749,  749,
1592       749,  749,  750,  750,  750,  750,  750,  750,  750,  750,
1593       750,  750,  750,  750,  750,  750,  750,  751,  751,  751,
1594       751,  751,  751,  751,  751,  751,  751,  751,  751,  751,
1595       751,  751,  752,  752,  752,  752,  752,  752,  752,  752,
1596       752,  752,  752,  752,  752,  752,  752,  753,  753,  753,
1597
1598       753,  753,  753,  753,  753,  753,  753,  753,  753,  753,
1599       753,  753,  754,    0,    0,    0,    0,  754,  754,    0,
1600         0,  754,  754,  755,  755,  755,  755,  755,  755,  755,
1601       755,  755,  755,  755,  755,  755,  755,  755,  756,  756,
1602       756,  756,  756,  756,  756,  756,  756,  756,  756,  756,
1603       756,  756,  756,  757,  757,    0,  757,  757,  757,  757,
1604       757,  757,  757,  757,  757,  757,  757,  757,  758,  758,
1605         0,  758,  758,  758,  758,  758,  758,  758,  758,  758,
1606       758,  758,  758,  759,  759,  759,  759,    0,  759,  759,
1607       759,  759,  759,  759,  759,  759,  759,  759,  760,  760,
1608
1609       760,  760,  760,  760,  760,  760,  760,  760,  760,  760,
1610       760,  760,  760,  761,  761,    0,  761,  761,  761,  761,
1611       761,  761,  761,  761,  761,  761,  761,  761,  762,  762,
1612         0,  762,  762,  762,  762,  762,  762,  762,  762,  762,
1613       762,  762,  762,  763,  763,    0,  763,  763,  763,  763,
1614       763,  763,  763,  763,  763,  763,  763,  763,  764,  764,
1615         0,  764,  764,  764,  764,  764,  764,  764,  764,  764,
1616       764,  764,  764,  765,  765,    0,  765,  765,  765,  765,
1617       765,  765,  765,  765,  765,  765,  765,  765,  766,  766,
1618         0,  766,  766,  766,  766,  766,  766,  766,  766,  766,
1619
1620       766,  766,  766,  767,  767,    0,  767,  767,  767,  767,
1621       767,  767,  767,  767,  767,  767,  767,  767,  768,  768,
1622         0,  768,  768,  768,  768,  768,  768,  768,  768,  768,
1623       768,  768,  768,  769,  769,  769,  769,  769,  769,  769,
1624       769,  769,  769,  769,  769,  769,  769,  769,  770,  770,
1625       770,  770,  770,  770,  770,  770,  770,  770,  770,  770,
1626       770,  770,  770,  771,  771,  771,  771,  771,  771,  771,
1627       771,  771,  771,  771,  771,  771,  771,  771,  772,    0,
1628         0,    0,    0,  772,  772,    0,    0,  772,  773,  773,
1629       773,  773,  773,  773,  773,  773,  773,  773,  773,  773,
1630
1631       773,  773,  773,  774,  774,  774,  774,  774,  774,  774,
1632       774,  774,  774,  774,  774,  774,  774,  774,  775,  775,
1633         0,  775,  775,  775,  775,  775,  775,  775,  775,  775,
1634       775,  775,  775,  776,  776,  776,  776,  776,  776,  776,
1635       776,  776,  776,  776,  776,  776,  776,  776,  777,    0,
1636         0,    0,    0,  777,  777,    0,    0,  777,  778,  778,
1637         0,  778,  778,  778,  778,  778,  778,  778,  778,  778,
1638       778,  778,  778,  779,  779,  779,  779,  779,  779,  779,
1639       779,  779,  779,  779,  779,  779,  779,  779,  780,  780,
1640         0,  780,  780,  780,  780,  780,  780,  780,  780,  780,
1641
1642       780,  780,  780,  781,  781,    0,  781,  781,  781,  781,
1643       781,  781,  781,  781,  781,  781,  781,  781,  782,  782,
1644         0,  782,  782,  782,  782,  782,  782,  782,  782,  782,
1645       782,  782,  782,  783,  783,  783,  783,  783,  783,  783,
1646       783,  783,  783,  783,  783,  783,  783,  783,  784,  784,
1647       784,  784,  784,  784,  784,  784,  784,  784,  784,  784,
1648       784,  784,  784,  785,  785,  785,  785,  785,  785,  785,
1649       785,  785,  785,  785,  785,  785,  785,  785,  786,  786,
1650       786,  786,  786,  786,  786,  786,  786,  786,  786,  786,
1651       786,  786,  786,  710,  710,  710,  710,  710,  710,  710,
1652
1653       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
1654       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
1655       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
1656       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
1657       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
1658       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
1659       710,  710,  710,  710,  710,  710
1660     } ;
1661
1662 static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
1663 static char *yy_full_match;
1664 static int yy_lp;
1665 static int yy_looking_for_trail_begin = 0;
1666 static int yy_full_lp;
1667 static int *yy_full_state;
1668 #define YY_TRAILING_MASK 0x2000
1669 #define YY_TRAILING_HEAD_MASK 0x4000
1670 #define REJECT \
1671 { \
1672 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
1673 yy_cp = yy_full_match; /* restore poss. backed-over text */ \
1674 yy_lp = yy_full_lp; /* restore orig. accepting pos. */ \
1675 yy_state_ptr = yy_full_state; /* restore orig. state */ \
1676 yy_current_state = *yy_state_ptr; /* restore curr. state */ \
1677 ++yy_lp; \
1678 goto find_rule; \
1679 }
1680 #define yymore() yymore_used_but_not_detected
1681 #define YY_MORE_ADJ 0
1682 #define YY_RESTORE_YY_MORE_OFFSET
1683 char *yytext;
1684 #line 1 "../parser.l"
1685 #define INITIAL 0
1686 #line 8 "../parser.l"
1687 /*
1688  * parser.l -- lex parser of algebraic chess moves for XBoard
1689  * $Id: parser.l,v 2.1 2003/10/27 19:21:00 mann Exp $
1690  *
1691  * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
1692  * Enhancements Copyright 1992-95 Free Software Foundation, Inc.
1693  *
1694  * The following terms apply to Digital Equipment Corporation's copyright
1695  * interest in XBoard:
1696  * ------------------------------------------------------------------------
1697  * All Rights Reserved
1698  *
1699  * Permission to use, copy, modify, and distribute this software and its
1700  * documentation for any purpose and without fee is hereby granted,
1701  * provided that the above copyright notice appear in all copies and that
1702  * both that copyright notice and this permission notice appear in
1703  * supporting documentation, and that the name of Digital not be
1704  * used in advertising or publicity pertaining to distribution of the
1705  * software without specific, written prior permission.
1706  *
1707  * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
1708  * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
1709  * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
1710  * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
1711  * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
1712  * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
1713  * SOFTWARE.
1714  * ------------------------------------------------------------------------
1715  *
1716  * The following terms apply to the enhanced version of XBoard distributed
1717  * by the Free Software Foundation:
1718  * ------------------------------------------------------------------------
1719  * This program is free software; you can redistribute it and/or modify
1720  * it under the terms of the GNU General Public License as published by
1721  * the Free Software Foundation; either version 2 of the License, or
1722  * (at your option) any later version.
1723  *
1724  * This program is distributed in the hope that it will be useful,
1725  * but WITHOUT ANY WARRANTY; without even the implied warranty of
1726  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1727  * GNU General Public License for more details.
1728  *
1729  * You should have received a copy of the GNU General Public License
1730  * along with this program; if not, write to the Free Software
1731  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
1732  * ------------------------------------------------------------------------
1733  */
1734
1735 /* This parser handles all forms of promotion.
1736  * The parser resolves ambiguous moves by searching and check-testing.
1737  * It also parses comments of the form [anything] or (anything).
1738  */
1739
1740 #include "config.h"
1741
1742 #define NO_CONSTRAINT   -1
1743 #undef YYLMAX
1744 #define YYLMAX                  4096
1745 #define UNPUT_BUF_SIZE          YYLMAX
1746
1747 #ifdef FLEX_SCANNER
1748 /* yytext is probably a char*, but could be a char[].  yy_text is set
1749    in YY_DECL below, because if yytext is a char*, its value is not
1750    constant. */
1751 char *yy_text;
1752 #else /*!FLEX_SCANNER*/
1753 /* yytext is definitely a char[], so yy_text can be set here, statically. */
1754 char *yy_text = (char *) yytext;
1755 #endif
1756
1757 #ifdef FLEX_SCANNER
1758 /* This is flex */
1759 #undef YY_INPUT
1760 #define YY_INPUT(buf, result, max_size) my_yy_input(buf, &result, max_size)
1761 #undef YY_DECL
1762 #define YY_DECL                     \
1763     int _yylex YY_PROTO((void));    \
1764     int yylex YY_PROTO((void))      \
1765     {                               \
1766         int result = _yylex();      \
1767         yy_text = (char *) yytext;  \
1768         return(result);             \
1769     }                               \
1770     int _yylex YY_PROTO((void))
1771 #else
1772 /* This is lex */
1773 #undef input
1774 #undef output
1775 #undef unput
1776 #endif
1777
1778 /* The includes must be here, below the #undef input */
1779
1780 #include <ctype.h>
1781
1782 #if STDC_HEADERS
1783 # include <stdlib.h>
1784 # include <string.h>
1785 #else /* not STDC_HEADERS */
1786 # if HAVE_STRING_H
1787 #  include <string.h>
1788 # else /* not HAVE_STRING_H */
1789 #  include <strings.h>
1790 # endif /* not HAVE_STRING_H */
1791 #endif /* not STDC_HEADERS */
1792
1793 #if HAVE_UNISTD_H
1794 # include <unistd.h>
1795 #endif
1796
1797 #if defined(_amigados)
1798 # include <errno.h>
1799 # if HAVE_FCNTL_H
1800 #  include <fcntl.h>    /*  isatty() prototype  */
1801 # endif /*  HAVE_FCNTL_H        */
1802 #endif  /*  defined(_amigados)  */
1803
1804 #include "common.h"
1805 #include "backend.h"
1806 #include "frontend.h"
1807 #include "parser.h"
1808 #include "moves.h"
1809
1810 extern int PosFlags P((int));
1811
1812 extern Board    boards[MAX_MOVES];
1813 int             yyboardindex;
1814 int             yyskipmoves = FALSE;
1815 char            currentMoveString[YYLMAX];
1816 #ifndef FLEX_SCANNER
1817 char            unputBuffer[UNPUT_BUF_SIZE];
1818 int             unputCount = 0;
1819 #endif
1820
1821 #ifdef FLEX_SCANNER
1822 void my_yy_input P((char *buf, int *result, int max_size));
1823 #else /*!FLEX_SCANNER*/
1824 static int input P((void));
1825 static void output P((int ch));
1826 static void unput P((int ch));
1827 int yylook P((void));
1828 int yyback P((int *, int));
1829 #endif
1830 #undef yywrap
1831 int yywrap P((void));
1832 extern void CopyBoard P((Board to, Board from));
1833
1834 #line 1835 "lex.yy.c"
1835
1836 /* Macros after this point can all be overridden by user definitions in
1837  * section 1.
1838  */
1839
1840 #ifndef YY_SKIP_YYWRAP
1841 #ifdef __cplusplus
1842 extern "C" int yywrap YY_PROTO(( void ));
1843 #else
1844 extern int yywrap YY_PROTO(( void ));
1845 #endif
1846 #endif
1847
1848 #ifndef YY_NO_UNPUT
1849 static void yyunput YY_PROTO(( int c, char *buf_ptr ));
1850 #endif
1851
1852 #ifndef yytext_ptr
1853 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
1854 #endif
1855
1856 #ifdef YY_NEED_STRLEN
1857 static int yy_flex_strlen YY_PROTO(( yyconst char * ));
1858 #endif
1859
1860 #ifndef YY_NO_INPUT
1861 #ifdef __cplusplus
1862 static int yyinput YY_PROTO(( void ));
1863 #else
1864 static int input YY_PROTO(( void ));
1865 #endif
1866 #endif
1867
1868 #if YY_STACK_USED
1869 static int yy_start_stack_ptr = 0;
1870 static int yy_start_stack_depth = 0;
1871 static int *yy_start_stack = 0;
1872 #ifndef YY_NO_PUSH_STATE
1873 static void yy_push_state YY_PROTO(( int new_state ));
1874 #endif
1875 #ifndef YY_NO_POP_STATE
1876 static void yy_pop_state YY_PROTO(( void ));
1877 #endif
1878 #ifndef YY_NO_TOP_STATE
1879 static int yy_top_state YY_PROTO(( void ));
1880 #endif
1881
1882 #else
1883 #define YY_NO_PUSH_STATE 1
1884 #define YY_NO_POP_STATE 1
1885 #define YY_NO_TOP_STATE 1
1886 #endif
1887
1888 #ifdef YY_MALLOC_DECL
1889 YY_MALLOC_DECL
1890 #else
1891 #if __STDC__
1892 #ifndef __cplusplus
1893 #include <stdlib.h>
1894 #endif
1895 #else
1896 /* Just try to get by without declaring the routines.  This will fail
1897  * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
1898  * or sizeof(void*) != sizeof(int).
1899  */
1900 #endif
1901 #endif
1902
1903 /* Amount of stuff to slurp up with each read. */
1904 #ifndef YY_READ_BUF_SIZE
1905 #define YY_READ_BUF_SIZE 8192
1906 #endif
1907
1908 /* Copy whatever the last rule matched to the standard output. */
1909
1910 #ifndef ECHO
1911 /* This used to be an fputs(), but since the string might contain NUL's,
1912  * we now use fwrite().
1913  */
1914 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
1915 #endif
1916
1917 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
1918  * is returned in "result".
1919  */
1920 #ifndef YY_INPUT
1921 #define YY_INPUT(buf,result,max_size) \
1922         if ( yy_current_buffer->yy_is_interactive ) \
1923                 { \
1924                 int c = '*', n; \
1925                 for ( n = 0; n < max_size && \
1926                              (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1927                         buf[n] = (char) c; \
1928                 if ( c == '\n' ) \
1929                         buf[n++] = (char) c; \
1930                 if ( c == EOF && ferror( yyin ) ) \
1931                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
1932                 result = n; \
1933                 } \
1934         else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
1935                   && ferror( yyin ) ) \
1936                 YY_FATAL_ERROR( "input in flex scanner failed" );
1937 #endif
1938
1939 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1940  * we don't want an extra ';' after the "return" because that will cause
1941  * some compilers to complain about unreachable statements.
1942  */
1943 #ifndef yyterminate
1944 #define yyterminate() return YY_NULL
1945 #endif
1946
1947 /* Number of entries by which start-condition stack grows. */
1948 #ifndef YY_START_STACK_INCR
1949 #define YY_START_STACK_INCR 25
1950 #endif
1951
1952 /* Report a fatal error. */
1953 #ifndef YY_FATAL_ERROR
1954 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
1955 #endif
1956
1957 /* Default declaration of generated scanner - a define so the user can
1958  * easily add parameters.
1959  */
1960 #ifndef YY_DECL
1961 #define YY_DECL int yylex YY_PROTO(( void ))
1962 #endif
1963
1964 /* Code executed at the beginning of each rule, after yytext and yyleng
1965  * have been set up.
1966  */
1967 #ifndef YY_USER_ACTION
1968 #define YY_USER_ACTION
1969 #endif
1970
1971 /* Code executed at the end of each rule. */
1972 #ifndef YY_BREAK
1973 #define YY_BREAK break;
1974 #endif
1975
1976 #define YY_RULE_SETUP \
1977         if ( yyleng > 0 ) \
1978                 yy_current_buffer->yy_at_bol = \
1979                                 (yytext[yyleng - 1] == '\n'); \
1980         YY_USER_ACTION
1981
1982 YY_DECL
1983         {
1984         register yy_state_type yy_current_state;
1985         register char *yy_cp = NULL, *yy_bp = NULL;
1986         register int yy_act;
1987
1988 #line 156 "../parser.l"
1989
1990
1991 #line 1992 "lex.yy.c"
1992
1993         if ( yy_init )
1994                 {
1995                 yy_init = 0;
1996
1997 #ifdef YY_USER_INIT
1998                 YY_USER_INIT;
1999 #endif
2000
2001                 if ( ! yy_start )
2002                         yy_start = 1;   /* first start state */
2003
2004                 if ( ! yyin )
2005                         yyin = stdin;
2006
2007                 if ( ! yyout )
2008                         yyout = stdout;
2009
2010                 if ( ! yy_current_buffer )
2011                         yy_current_buffer =
2012                                 yy_create_buffer( yyin, YY_BUF_SIZE );
2013
2014                 yy_load_buffer_state();
2015                 }
2016
2017         while ( 1 )             /* loops until end-of-file is reached */
2018                 {
2019                 yy_cp = yy_c_buf_p;
2020
2021                 /* Support of yytext. */
2022                 *yy_cp = yy_hold_char;
2023
2024                 /* yy_bp points to the position in yy_ch_buf of the start of
2025                  * the current run.
2026                  */
2027                 yy_bp = yy_cp;
2028
2029                 yy_current_state = yy_start;
2030                 yy_current_state += YY_AT_BOL();
2031                 yy_state_ptr = yy_state_buf;
2032                 *yy_state_ptr++ = yy_current_state;
2033 yy_match:
2034                 do
2035                         {
2036                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
2037                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2038                                 {
2039                                 yy_current_state = (int) yy_def[yy_current_state];
2040                                 if ( yy_current_state >= 711 )
2041                                         yy_c = yy_meta[(unsigned int) yy_c];
2042                                 }
2043                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2044                         *yy_state_ptr++ = yy_current_state;
2045                         ++yy_cp;
2046                         }
2047                 while ( yy_base[yy_current_state] != 4394 );
2048
2049 yy_find_action:
2050                 yy_current_state = *--yy_state_ptr;
2051                 yy_lp = yy_accept[yy_current_state];
2052 find_rule: /* we branch to this label when backing up */
2053                 for ( ; ; ) /* until we find what rule we matched */
2054                         {
2055                         if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )
2056                                 {
2057                                 yy_act = yy_acclist[yy_lp];
2058                                 if ( yy_act & YY_TRAILING_HEAD_MASK ||
2059                                      yy_looking_for_trail_begin )
2060                                         {
2061                                         if ( yy_act == yy_looking_for_trail_begin )
2062                                                 {
2063                                                 yy_looking_for_trail_begin = 0;
2064                                                 yy_act &= ~YY_TRAILING_HEAD_MASK;
2065                                                 break;
2066                                                 }
2067                                         }
2068                                 else if ( yy_act & YY_TRAILING_MASK )
2069                                         {
2070                                         yy_looking_for_trail_begin = yy_act & ~YY_TRAILING_MASK;
2071                                         yy_looking_for_trail_begin |= YY_TRAILING_HEAD_MASK;
2072                                         }
2073                                 else
2074                                         {
2075                                         yy_full_match = yy_cp;
2076                                         yy_full_state = yy_state_ptr;
2077                                         yy_full_lp = yy_lp;
2078                                         break;
2079                                         }
2080                                 ++yy_lp;
2081                                 goto find_rule;
2082                                 }
2083                         --yy_cp;
2084                         yy_current_state = *--yy_state_ptr;
2085                         yy_lp = yy_accept[yy_current_state];
2086                         }
2087
2088                 YY_DO_BEFORE_ACTION;
2089
2090
2091 do_action:      /* This label is used only to access EOF actions. */
2092
2093
2094                 switch ( yy_act )
2095         { /* beginning of action switch */
2096 case 1:
2097 YY_RULE_SETUP
2098 #line 158 "../parser.l"
2099 {
2100     /*
2101      * Fully-qualified algebraic move, possibly with promotion
2102      */
2103     int skip1 = 0, skip2 = 0;
2104     ChessSquare piece;
2105     ChessMove result;
2106
2107     if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2108
2109     /* remove the / */
2110     if (yytext[1] == '/') skip1 = 1;
2111
2112     /* remove the [xX:-] */
2113     if ((yytext[3+skip1] == 'x') || (yytext[3+skip1] == 'X') ||
2114         (yytext[3+skip1] == '-') || (yytext[3+skip1] == ':')) skip2 = 1;
2115
2116     currentMoveString[0] = yytext[1+skip1];
2117     currentMoveString[1] = yytext[2+skip1];
2118     currentMoveString[2] = yytext[3+skip1+skip2];
2119     currentMoveString[3] = yytext[4+skip1+skip2];
2120     currentMoveString[4] = NULLCHAR;
2121
2122     if (yyleng-skip1-skip2 > 5) {
2123         if (yytext[yyleng-1] == ')') {
2124             currentMoveString[4] = ToLower(yytext[yyleng-2]);
2125         } else {
2126             currentMoveString[4] = ToLower(yytext[yyleng-1]);
2127         }
2128         currentMoveString[5] = NULLCHAR;
2129     }
2130
2131     piece = boards[yyboardindex]
2132       [currentMoveString[1] - '1'][currentMoveString[0] - 'a'];
2133     if (ToLower(yytext[0]) != ToLower(PieceToChar(piece)))
2134       return (int) IllegalMove;
2135
2136     result = LegalityTest(boards[yyboardindex],
2137                           PosFlags(yyboardindex), EP_UNKNOWN,
2138                           currentMoveString[1] - '1',
2139                           currentMoveString[0] - 'a',
2140                           currentMoveString[3] - '1',
2141                           currentMoveString[2] - 'a',
2142                           currentMoveString[4]);
2143
2144     if (currentMoveString[4] == NULLCHAR &&
2145         (result == WhitePromotionQueen || result == BlackPromotionQueen)) {
2146         currentMoveString[4] = 'q';
2147         currentMoveString[5] = NULLCHAR;
2148     }
2149
2150     return (int) result;
2151 }
2152         YY_BREAK
2153 case 2:
2154 YY_RULE_SETUP
2155 #line 212 "../parser.l"
2156 {
2157     /*
2158      * Simple algebraic move, possibly with promotion
2159      */
2160     int skip = 0;
2161     ChessMove result;
2162
2163     if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2164
2165     /* remove the [xX:-] */
2166     if ((yytext[2] == 'x') || (yytext[2] == 'X') ||
2167         (yytext[2] == '-') || (yytext[2] == ':')) skip = 1;
2168
2169     currentMoveString[0] = yytext[0];
2170     currentMoveString[1] = yytext[1];
2171     currentMoveString[2] = yytext[2+skip];
2172     currentMoveString[3] = yytext[3+skip];
2173     currentMoveString[4] = NULLCHAR;
2174
2175     if (yyleng-skip > 4) {
2176         if (yytext[yyleng-1] == ')') {
2177             currentMoveString[4] = ToLower(yytext[yyleng-2]);
2178         } else {
2179             currentMoveString[4] = ToLower(yytext[yyleng-1]);
2180         }
2181         currentMoveString[5] = NULLCHAR;
2182     }
2183
2184     result = LegalityTest(boards[yyboardindex],
2185                           PosFlags(yyboardindex), EP_UNKNOWN,
2186                           currentMoveString[1] - '1',
2187                           currentMoveString[0] - 'a',
2188                           currentMoveString[3] - '1',
2189                           currentMoveString[2] - 'a',
2190                           currentMoveString[4]);
2191
2192     if (currentMoveString[4] == NULLCHAR &&
2193         (result == WhitePromotionQueen || result == BlackPromotionQueen)) {
2194         currentMoveString[4] = 'q';
2195         currentMoveString[5] = NULLCHAR;
2196     }
2197
2198     return (int) result;
2199 }
2200         YY_BREAK
2201 case 3:
2202 YY_RULE_SETUP
2203 #line 257 "../parser.l"
2204 {
2205     /*
2206      * Pawn move, possibly with promotion
2207      */
2208     DisambiguateClosure cl;
2209     int skip = 0;
2210
2211     if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2212
2213     /* remove the =() */
2214     if (yytext[2] == '=') skip++;
2215     if (yytext[2+skip] == '(') skip++;
2216
2217     cl.pieceIn = WhiteOnMove(yyboardindex) ? WhitePawn : BlackPawn;
2218     cl.rfIn = -1;
2219     cl.ffIn = yytext[0] - 'a';
2220     cl.rtIn = yytext[1] - '1';
2221     cl.ftIn = yytext[0] - 'a';
2222     cl.promoCharIn = yytext[2+skip];
2223     Disambiguate(boards[yyboardindex],
2224                  PosFlags(yyboardindex), EP_UNKNOWN, &cl);
2225
2226     currentMoveString[0] = cl.ff + 'a';
2227     currentMoveString[1] = cl.rf + '1';
2228     currentMoveString[2] = cl.ft + 'a';
2229     currentMoveString[3] = cl.rt + '1';
2230     currentMoveString[4] = cl.promoChar;
2231     currentMoveString[5] = NULLCHAR;
2232
2233     return (int) cl.kind;
2234 }
2235         YY_BREAK
2236 case 4:
2237 YY_RULE_SETUP
2238 #line 290 "../parser.l"
2239 {
2240     /*
2241      * Pawn capture, possibly with promotion, possibly ambiguous
2242      */
2243     DisambiguateClosure cl;
2244     int skip1 = 0, skip2 = 0;
2245
2246     if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2247
2248     /* remove trailing ep or e.p. (nonstandard PGN) */
2249     if (yytext[yyleng-1] == 'p') {
2250       yyleng -= 2;
2251       yytext[yyleng] = NULLCHAR;
2252     } else if (yytext[yyleng-1] == '.') {
2253       yyleng -= 4;
2254       yytext[yyleng] = NULLCHAR;
2255     }
2256
2257     /* remove the [xX:-] and =() */
2258     if ((yytext[1] == 'x') || (yytext[1] == 'X')
2259         || (yytext[1] == ':') || (yytext[1] == '-')) skip1 = 1;
2260     if (yytext[2+skip1] == '=') skip2++;
2261     if (yytext[2+skip1+skip2] == '(') skip2++;
2262
2263     cl.pieceIn = WhiteOnMove(yyboardindex) ? WhitePawn : BlackPawn;
2264     cl.rfIn = -1;
2265     cl.ffIn = yytext[0] - 'a';
2266     cl.rtIn = -1;
2267     cl.ftIn = yytext[1+skip1] - 'a';
2268     cl.promoCharIn = yytext[2+skip1+skip2];
2269     Disambiguate(boards[yyboardindex],
2270                  PosFlags(yyboardindex), EP_UNKNOWN, &cl);
2271
2272     currentMoveString[0] = cl.ff + 'a';
2273     currentMoveString[1] = cl.rf + '1';
2274     currentMoveString[2] = cl.ft + 'a';
2275     currentMoveString[3] = cl.rt + '1';
2276     currentMoveString[4] = cl.promoChar;
2277     currentMoveString[5] = NULLCHAR;
2278
2279     return (int) cl.kind;
2280 }
2281         YY_BREAK
2282 case 5:
2283 YY_RULE_SETUP
2284 #line 333 "../parser.l"
2285 {
2286     /*
2287      * unambiguously abbreviated Pawn capture, possibly with promotion
2288      */
2289     int skip = 0;
2290     ChessMove result;
2291
2292     if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2293
2294     /* remove trailing ep or e.p. (nonstandard PGN) */
2295     if (yytext[yyleng-1] == 'p') {
2296       yyleng -= 2;
2297       yytext[yyleng] = NULLCHAR;
2298     } else if (yytext[yyleng-1] == '.') {
2299       yyleng -= 4;
2300       yytext[yyleng] = NULLCHAR;
2301     }
2302
2303     /* remove the [xX:-] */
2304     if ((yytext[1] == 'x') || (yytext[1] == 'X')
2305         || (yytext[1] == ':') || (yytext[1] == '-')) skip = 1;
2306
2307     currentMoveString[0] = yytext[0];
2308     currentMoveString[2] = yytext[1+skip];
2309     currentMoveString[3] = yytext[2+skip];
2310     if (WhiteOnMove(yyboardindex)) {
2311         if (yytext[2+skip] == '1') return (int) ImpossibleMove;
2312         currentMoveString[1] = yytext[2+skip] - 1;
2313     } else {
2314         if (yytext[2+skip] == '8') return (int) ImpossibleMove;
2315         currentMoveString[1] = yytext[2+skip] + 1;
2316     }
2317     if (yyleng-skip > 3) {
2318         if (yytext[yyleng-1] == ')')
2319           currentMoveString[4] = ToLower(yytext[yyleng-2]);
2320         else
2321           currentMoveString[4] = ToLower(yytext[yyleng-1]);
2322         currentMoveString[5] = NULLCHAR;
2323     } else {
2324         currentMoveString[4] = NULLCHAR;
2325     }
2326
2327     result = LegalityTest(boards[yyboardindex],
2328                           PosFlags(yyboardindex), EP_UNKNOWN,
2329                           currentMoveString[1] - '1',
2330                           currentMoveString[0] - 'a',
2331                           currentMoveString[3] - '1',
2332                           currentMoveString[2] - 'a',
2333                           currentMoveString[4]);
2334
2335     if (currentMoveString[4] == NULLCHAR &&
2336         (result == WhitePromotionQueen || result == BlackPromotionQueen)) {
2337         currentMoveString[4] = 'q';
2338         currentMoveString[5] = NULLCHAR;
2339     }
2340
2341     if (result != IllegalMove) return (int) result;
2342
2343     /* Special case: improperly written en passant capture */
2344     if (WhiteOnMove(yyboardindex)) {
2345         if (currentMoveString[3] == '5') {
2346             currentMoveString[1] = '5';
2347             currentMoveString[3] = '6';
2348         } else {
2349             return (int) IllegalMove;
2350         }
2351     } else {
2352         if (currentMoveString[3] == '4') {
2353             currentMoveString[1] = '4';
2354             currentMoveString[3] = '3';
2355         } else {
2356             return (int) IllegalMove;
2357         }
2358     }
2359
2360     result = LegalityTest(boards[yyboardindex],
2361                           PosFlags(yyboardindex), EP_UNKNOWN,
2362                           currentMoveString[1] - '1',
2363                           currentMoveString[0] - 'a',
2364                           currentMoveString[3] - '1',
2365                           currentMoveString[2] - 'a',
2366                           currentMoveString[4]);
2367
2368     if (result == WhiteCapturesEnPassant || result == BlackCapturesEnPassant)
2369       return (int) result;
2370     else
2371       return (int) IllegalMove;
2372 }
2373         YY_BREAK
2374 case 6:
2375 YY_RULE_SETUP
2376 #line 422 "../parser.l"
2377 {
2378     /*
2379      * piece move, possibly ambiguous
2380      */
2381     DisambiguateClosure cl;
2382     int skip = 0;
2383
2384     if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2385
2386     /* remove the [xX:-] */
2387     if ((yytext[1] == 'x') || (yytext[1] == 'X')
2388         || (yytext[1] == ':') || (yytext[1] == '-')) skip = 1;
2389
2390     if (WhiteOnMove(yyboardindex)) {
2391         cl.pieceIn = CharToPiece(ToUpper(yytext[0]));
2392     } else {
2393         cl.pieceIn = CharToPiece(ToLower(yytext[0]));
2394     }
2395     cl.rfIn = -1;
2396     cl.ffIn = -1;
2397     cl.rtIn = yytext[2+skip] - '1';
2398     cl.ftIn = yytext[1+skip] - 'a';
2399     cl.promoCharIn = NULLCHAR;
2400     Disambiguate(boards[yyboardindex],
2401                  PosFlags(yyboardindex), EP_UNKNOWN, &cl);
2402
2403     currentMoveString[0] = cl.ff + 'a';
2404     currentMoveString[1] = cl.rf + '1';
2405     currentMoveString[2] = cl.ft + 'a';
2406     currentMoveString[3] = cl.rt + '1';
2407     currentMoveString[4] = cl.promoChar;
2408     currentMoveString[5] = NULLCHAR;
2409
2410     return (int) cl.kind;
2411 }
2412         YY_BREAK
2413 case 7:
2414 YY_RULE_SETUP
2415 #line 458 "../parser.l"
2416 {
2417     /*
2418      * piece move with rank or file disambiguator
2419      */
2420     DisambiguateClosure cl;
2421     int skip = 0;
2422
2423     if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2424
2425     /* remove the [xX:-] */
2426     if ((yytext[2] == 'x') || (yytext[2] == 'X')
2427         || (yytext[2] == ':') || (yytext[2] == '-')) skip = 1;
2428
2429     if (WhiteOnMove(yyboardindex)) {
2430         cl.pieceIn = CharToPiece(ToUpper(yytext[0]));
2431     } else {
2432         cl.pieceIn = CharToPiece(ToLower(yytext[0]));
2433     }
2434     if (isalpha(yytext[1])) {
2435         cl.rfIn = -1;
2436         cl.ffIn = yytext[1] - 'a';
2437     } else {
2438         cl.rfIn = yytext[1] - '1';
2439         cl.ffIn = -1;
2440     }
2441     cl.rtIn = yytext[3+skip] - '1';
2442     cl.ftIn = yytext[2+skip] - 'a';
2443     cl.promoCharIn = NULLCHAR;
2444     Disambiguate(boards[yyboardindex],
2445                  PosFlags(yyboardindex), EP_UNKNOWN, &cl);
2446
2447     currentMoveString[0] = cl.ff + 'a';
2448     currentMoveString[1] = cl.rf + '1';
2449     currentMoveString[2] = cl.ft + 'a';
2450     currentMoveString[3] = cl.rt + '1';
2451     currentMoveString[4] = cl.promoChar;
2452     currentMoveString[5] = NULLCHAR;
2453
2454     return (int) cl.kind;
2455 }
2456         YY_BREAK
2457 case 8:
2458 YY_RULE_SETUP
2459 #line 499 "../parser.l"
2460 {
2461     int rf, ff, rt, ft;
2462
2463     if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2464
2465     if (WhiteOnMove(yyboardindex)) {
2466         if (boards[yyboardindex][0][3] == WhiteKing) {
2467             /* ICS wild castling */
2468             strcpy(currentMoveString, "d1f1");
2469             rf = 0;
2470             ff = 3;
2471             rt = 0;
2472             ft = 5;
2473         } else {
2474             strcpy(currentMoveString, "e1c1");
2475             rf = 0;
2476             ff = 4;
2477             rt = 0;
2478             ft = 2;
2479         }
2480     } else{
2481         if (boards[yyboardindex][7][3] == BlackKing) {
2482             /* ICS wild castling */
2483             strcpy(currentMoveString, "d8f8");
2484             rf = 7;
2485             ff = 3;
2486             rt = 7;
2487             ft = 5;
2488         } else {
2489             strcpy(currentMoveString, "e8c8");
2490             rf = 7;
2491             ff = 4;
2492             rt = 7;
2493             ft = 2;
2494         }
2495     }
2496     return (int) LegalityTest(boards[yyboardindex],
2497                               PosFlags(yyboardindex), EP_UNKNOWN,
2498                               rf, ff, rt, ft, NULLCHAR);
2499 }
2500         YY_BREAK
2501 case 9:
2502 YY_RULE_SETUP
2503 #line 540 "../parser.l"
2504 {
2505     int rf, ff, rt, ft;
2506
2507     if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2508
2509     if (WhiteOnMove(yyboardindex)) {
2510         if (boards[yyboardindex][0][3] == WhiteKing) {
2511             /* ICS wild castling */
2512             strcpy(currentMoveString, "d1b1");
2513             rf = 0;
2514             ff = 3;
2515             rt = 0;
2516             ft = 1;
2517         } else {
2518             strcpy(currentMoveString, "e1g1");
2519             rf = 0;
2520             ff = 4;
2521             rt = 0;
2522             ft = 6;
2523         }
2524     } else {
2525         if (boards[yyboardindex][7][3] == BlackKing) {
2526             /* ICS wild castling */
2527             strcpy(currentMoveString, "d8b8");
2528             rf = 7;
2529             ff = 3;
2530             rt = 7;
2531             ft = 1;
2532         } else {
2533             strcpy(currentMoveString, "e8g8");
2534             rf = 7;
2535             ff = 4;
2536             rt = 7;
2537             ft = 6;
2538         }
2539     }
2540     return (int) LegalityTest(boards[yyboardindex],
2541                               PosFlags(yyboardindex), EP_UNKNOWN,
2542                               rf, ff, rt, ft, NULLCHAR);
2543 }
2544         YY_BREAK
2545 case 10:
2546 YY_RULE_SETUP
2547 #line 581 "../parser.l"
2548 {
2549     /* Bughouse piece drop.  No legality checking for now. */
2550     currentMoveString[1] = '@';
2551     currentMoveString[2] = yytext[2];
2552     currentMoveString[3] = yytext[3];
2553     currentMoveString[4] = NULLCHAR;
2554     if (WhiteOnMove(yyboardindex)) {
2555         currentMoveString[0] = ToUpper(yytext[0]);
2556         return (int) WhiteDrop;
2557     } else {
2558         currentMoveString[0] = ToLower(yytext[0]);
2559         return (int) BlackDrop;
2560     }
2561 }
2562         YY_BREAK
2563 case 11:
2564 YY_RULE_SETUP
2565 #line 596 "../parser.l"
2566 {
2567     if (WhiteOnMove(yyboardindex))
2568       return (int) BlackWins;
2569     else
2570       return (int) WhiteWins;
2571 }
2572         YY_BREAK
2573 case 12:
2574 YY_RULE_SETUP
2575 #line 603 "../parser.l"
2576 {
2577     return (int) (ToUpper(yytext[0]) == 'W' ? BlackWins : WhiteWins);
2578 }
2579         YY_BREAK
2580 case 13:
2581 YY_RULE_SETUP
2582 #line 607 "../parser.l"
2583 {
2584     return (int) GameUnfinished;
2585 }
2586         YY_BREAK
2587 case 14:
2588 YY_RULE_SETUP
2589 #line 611 "../parser.l"
2590 {
2591     return (int) GameIsDrawn;
2592 }
2593         YY_BREAK
2594 case 15:
2595 YY_RULE_SETUP
2596 #line 615 "../parser.l"
2597 {
2598     return (int) GameIsDrawn;
2599 }
2600         YY_BREAK
2601 case 16:
2602 YY_RULE_SETUP
2603 #line 619 "../parser.l"
2604 {
2605     if (WhiteOnMove(yyboardindex))
2606       return (int) BlackWins;
2607     else
2608       return (int) WhiteWins;
2609 }
2610         YY_BREAK
2611 case 17:
2612 YY_RULE_SETUP
2613 #line 626 "../parser.l"
2614 {
2615     if (WhiteOnMove(yyboardindex))
2616       return (int) BlackWins;
2617     else
2618       return (int) WhiteWins;
2619 }
2620         YY_BREAK
2621 case 18:
2622 YY_RULE_SETUP
2623 #line 633 "../parser.l"
2624 {
2625     return (int) GameIsDrawn;
2626 }
2627         YY_BREAK
2628 case 19:
2629 YY_RULE_SETUP
2630 #line 637 "../parser.l"
2631 {
2632     return (int) GameIsDrawn;
2633 }
2634         YY_BREAK
2635 case 20:
2636 YY_RULE_SETUP
2637 #line 641 "../parser.l"
2638 {
2639     return (int) (ToUpper(yytext[0]) == 'W' ? WhiteWins : BlackWins);
2640 }
2641         YY_BREAK
2642 case 21:
2643 YY_RULE_SETUP
2644 #line 645 "../parser.l"
2645 {
2646     return (int) (ToUpper(yytext[0]) == 'W' ? BlackWins : WhiteWins);
2647 }
2648         YY_BREAK
2649 case 22:
2650 YY_RULE_SETUP
2651 #line 649 "../parser.l"
2652 {
2653     return (int) WhiteWins;
2654 }
2655         YY_BREAK
2656 case 23:
2657 YY_RULE_SETUP
2658 #line 653 "../parser.l"
2659 {
2660     return (int) BlackWins;
2661 }
2662         YY_BREAK
2663 case 24:
2664 YY_RULE_SETUP
2665 #line 657 "../parser.l"
2666 {
2667     return (int) GameIsDrawn;
2668 }
2669         YY_BREAK
2670 case 25:
2671 YY_RULE_SETUP
2672 #line 661 "../parser.l"
2673 {
2674     return (int) GameUnfinished;
2675 }
2676         YY_BREAK
2677 case 26:
2678 YY_RULE_SETUP
2679 #line 665 "../parser.l"
2680 {
2681     /* move numbers */
2682     if ((yyleng == 1) && (yytext[0] == '1'))
2683       return (int) MoveNumberOne;
2684 }
2685         YY_BREAK
2686 case 27:
2687 YY_RULE_SETUP
2688 #line 671 "../parser.l"
2689 {
2690     /* elapsed time indication, e.g. (0:12) or {10:21.071} */
2691     return (int) ElapsedTime;
2692 }
2693         YY_BREAK
2694 case 28:
2695 YY_RULE_SETUP
2696 #line 676 "../parser.l"
2697 {
2698     /* position diagram enclosed in [-- --] */
2699     return (int) PositionDiagram;
2700 }
2701         YY_BREAK
2702 case 29:
2703 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2704 yy_c_buf_p = yy_cp -= 1;
2705 YY_DO_BEFORE_ACTION; /* set up yytext again */
2706 YY_RULE_SETUP
2707 #line 681 "../parser.l"
2708 {
2709     /* position diagram enclosed in {-- --} */
2710     return (int) PositionDiagram;
2711 }
2712         YY_BREAK
2713 case 30:
2714 YY_RULE_SETUP
2715 #line 686 "../parser.l"
2716 {
2717     return (int) PGNTag;
2718 }
2719         YY_BREAK
2720 case 31:
2721 YY_RULE_SETUP
2722 #line 690 "../parser.l"
2723 {
2724     return (int) GNUChessGame;
2725 }
2726         YY_BREAK
2727 case 32:
2728 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2729 yy_c_buf_p = yy_cp -= 1;
2730 YY_DO_BEFORE_ACTION; /* set up yytext again */
2731 YY_RULE_SETUP
2732 #line 694 "../parser.l"
2733 {
2734     return (int) XBoardGame;
2735 }
2736         YY_BREAK
2737 case 33:
2738 YY_RULE_SETUP
2739 #line 698 "../parser.l"
2740 {                               /* numeric annotation glyph */
2741     return (int) NAG;
2742 }
2743         YY_BREAK
2744 case 34:
2745 YY_RULE_SETUP
2746 #line 702 "../parser.l"
2747 {                               /* anything in {} */
2748     return (int) Comment;
2749 }
2750         YY_BREAK
2751 case 35:
2752 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2753 yy_c_buf_p = yy_cp -= 1;
2754 YY_DO_BEFORE_ACTION; /* set up yytext again */
2755 YY_RULE_SETUP
2756 #line 706 "../parser.l"
2757 {                                          /* ; to end of line */
2758     return (int) Comment;
2759 }
2760         YY_BREAK
2761 case 36:
2762 YY_RULE_SETUP
2763 #line 710 "../parser.l"
2764 {                               /* anything in [] */
2765     return (int) Comment;
2766 }
2767         YY_BREAK
2768 case 37:
2769 YY_RULE_SETUP
2770 #line 714 "../parser.l"
2771 {               /* nested () */
2772     return (int) Comment;
2773 }
2774         YY_BREAK
2775 case 38:
2776 YY_RULE_SETUP
2777 #line 718 "../parser.l"
2778 {                               /* >=2 chars in () */
2779     return (int) Comment;
2780 }
2781         YY_BREAK
2782 case 39:
2783 YY_RULE_SETUP
2784 #line 722 "../parser.l"
2785 {
2786         /* Skip mail headers */
2787 }
2788         YY_BREAK
2789 case 40:
2790 YY_RULE_SETUP
2791 #line 726 "../parser.l"
2792 {
2793         /* Skip random words */
2794 }
2795         YY_BREAK
2796 case 41:
2797 YY_RULE_SETUP
2798 #line 730 "../parser.l"
2799 {
2800         /* Skip everything else */
2801 }
2802         YY_BREAK
2803 case 42:
2804 YY_RULE_SETUP
2805 #line 734 "../parser.l"
2806 ECHO;
2807         YY_BREAK
2808 #line 2809 "lex.yy.c"
2809                         case YY_STATE_EOF(INITIAL):
2810                                 yyterminate();
2811
2812         case YY_END_OF_BUFFER:
2813                 {
2814                 /* Amount of text matched not including the EOB char. */
2815                 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
2816
2817                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
2818                 *yy_cp = yy_hold_char;
2819                 YY_RESTORE_YY_MORE_OFFSET
2820
2821                 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
2822                         {
2823                         /* We're scanning a new file or input source.  It's
2824                          * possible that this happened because the user
2825                          * just pointed yyin at a new source and called
2826                          * yylex().  If so, then we have to assure
2827                          * consistency between yy_current_buffer and our
2828                          * globals.  Here is the right place to do so, because
2829                          * this is the first action (other than possibly a
2830                          * back-up) that will match for the new input source.
2831                          */
2832                         yy_n_chars = yy_current_buffer->yy_n_chars;
2833                         yy_current_buffer->yy_input_file = yyin;
2834                         yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
2835                         }
2836
2837                 /* Note that here we test for yy_c_buf_p "<=" to the position
2838                  * of the first EOB in the buffer, since yy_c_buf_p will
2839                  * already have been incremented past the NUL character
2840                  * (since all states make transitions on EOB to the
2841                  * end-of-buffer state).  Contrast this with the test
2842                  * in input().
2843                  */
2844                 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
2845                         { /* This was really a NUL. */
2846                         yy_state_type yy_next_state;
2847
2848                         yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
2849
2850                         yy_current_state = yy_get_previous_state();
2851
2852                         /* Okay, we're now positioned to make the NUL
2853                          * transition.  We couldn't have
2854                          * yy_get_previous_state() go ahead and do it
2855                          * for us because it doesn't know how to deal
2856                          * with the possibility of jamming (and we don't
2857                          * want to build jamming into it because then it
2858                          * will run more slowly).
2859                          */
2860
2861                         yy_next_state = yy_try_NUL_trans( yy_current_state );
2862
2863                         yy_bp = yytext_ptr + YY_MORE_ADJ;
2864
2865                         if ( yy_next_state )
2866                                 {
2867                                 /* Consume the NUL. */
2868                                 yy_cp = ++yy_c_buf_p;
2869                                 yy_current_state = yy_next_state;
2870                                 goto yy_match;
2871                                 }
2872
2873                         else
2874                                 {
2875                                 yy_cp = yy_c_buf_p;
2876                                 goto yy_find_action;
2877                                 }
2878                         }
2879
2880                 else switch ( yy_get_next_buffer() )
2881                         {
2882                         case EOB_ACT_END_OF_FILE:
2883                                 {
2884                                 yy_did_buffer_switch_on_eof = 0;
2885
2886                                 if ( yywrap() )
2887                                         {
2888                                         /* Note: because we've taken care in
2889                                          * yy_get_next_buffer() to have set up
2890                                          * yytext, we can now set up
2891                                          * yy_c_buf_p so that if some total
2892                                          * hoser (like flex itself) wants to
2893                                          * call the scanner after we return the
2894                                          * YY_NULL, it'll still work - another
2895                                          * YY_NULL will get returned.
2896                                          */
2897                                         yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
2898
2899                                         yy_act = YY_STATE_EOF(YY_START);
2900                                         goto do_action;
2901                                         }
2902
2903                                 else
2904                                         {
2905                                         if ( ! yy_did_buffer_switch_on_eof )
2906                                                 YY_NEW_FILE;
2907                                         }
2908                                 break;
2909                                 }
2910
2911                         case EOB_ACT_CONTINUE_SCAN:
2912                                 yy_c_buf_p =
2913                                         yytext_ptr + yy_amount_of_matched_text;
2914
2915                                 yy_current_state = yy_get_previous_state();
2916
2917                                 yy_cp = yy_c_buf_p;
2918                                 yy_bp = yytext_ptr + YY_MORE_ADJ;
2919                                 goto yy_match;
2920
2921                         case EOB_ACT_LAST_MATCH:
2922                                 yy_c_buf_p =
2923                                 &yy_current_buffer->yy_ch_buf[yy_n_chars];
2924
2925                                 yy_current_state = yy_get_previous_state();
2926
2927                                 yy_cp = yy_c_buf_p;
2928                                 yy_bp = yytext_ptr + YY_MORE_ADJ;
2929                                 goto yy_find_action;
2930                         }
2931                 break;
2932                 }
2933
2934         default:
2935                 YY_FATAL_ERROR(
2936                         "fatal flex scanner internal error--no action found" );
2937         } /* end of action switch */
2938                 } /* end of scanning one token */
2939         } /* end of yylex */
2940
2941
2942 /* yy_get_next_buffer - try to read in a new buffer
2943  *
2944  * Returns a code representing an action:
2945  *      EOB_ACT_LAST_MATCH -
2946  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2947  *      EOB_ACT_END_OF_FILE - end of file
2948  */
2949
2950 static int yy_get_next_buffer()
2951         {
2952         register char *dest = yy_current_buffer->yy_ch_buf;
2953         register char *source = yytext_ptr;
2954         register int number_to_move, i;
2955         int ret_val;
2956
2957         if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
2958                 YY_FATAL_ERROR(
2959                 "fatal flex scanner internal error--end of buffer missed" );
2960
2961         if ( yy_current_buffer->yy_fill_buffer == 0 )
2962                 { /* Don't try to fill the buffer, so this is an EOF. */
2963                 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
2964                         {
2965                         /* We matched a single character, the EOB, so
2966                          * treat this as a final EOF.
2967                          */
2968                         return EOB_ACT_END_OF_FILE;
2969                         }
2970
2971                 else
2972                         {
2973                         /* We matched some text prior to the EOB, first
2974                          * process it.
2975                          */
2976                         return EOB_ACT_LAST_MATCH;
2977                         }
2978                 }
2979
2980         /* Try to read more data. */
2981
2982         /* First move last chars to start of buffer. */
2983         number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
2984
2985         for ( i = 0; i < number_to_move; ++i )
2986                 *(dest++) = *(source++);
2987
2988         if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2989                 /* don't do the read, it's not guaranteed to return an EOF,
2990                  * just force an EOF
2991                  */
2992                 yy_current_buffer->yy_n_chars = yy_n_chars = 0;
2993
2994         else
2995                 {
2996                 int num_to_read =
2997                         yy_current_buffer->yy_buf_size - number_to_move - 1;
2998
2999                 while ( num_to_read <= 0 )
3000                         { /* Not enough room in the buffer - grow it. */
3001 #ifdef YY_USES_REJECT
3002                         YY_FATAL_ERROR(
3003 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
3004 #else
3005
3006                         /* just a shorter name for the current buffer */
3007                         YY_BUFFER_STATE b = yy_current_buffer;
3008
3009                         int yy_c_buf_p_offset =
3010                                 (int) (yy_c_buf_p - b->yy_ch_buf);
3011
3012                         if ( b->yy_is_our_buffer )
3013                                 {
3014                                 int new_size = b->yy_buf_size * 2;
3015
3016                                 if ( new_size <= 0 )
3017                                         b->yy_buf_size += b->yy_buf_size / 8;
3018                                 else
3019                                         b->yy_buf_size *= 2;
3020
3021                                 b->yy_ch_buf = (char *)
3022                                         /* Include room in for 2 EOB chars. */
3023                                         yy_flex_realloc( (void *) b->yy_ch_buf,
3024                                                          b->yy_buf_size + 2 );
3025                                 }
3026                         else
3027                                 /* Can't grow it, we don't own it. */
3028                                 b->yy_ch_buf = 0;
3029
3030                         if ( ! b->yy_ch_buf )
3031                                 YY_FATAL_ERROR(
3032                                 "fatal error - scanner input buffer overflow" );
3033
3034                         yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
3035
3036                         num_to_read = yy_current_buffer->yy_buf_size -
3037                                                 number_to_move - 1;
3038 #endif
3039                         }
3040
3041                 if ( num_to_read > YY_READ_BUF_SIZE )
3042                         num_to_read = YY_READ_BUF_SIZE;
3043
3044                 /* Read in more data. */
3045                 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
3046                         yy_n_chars, num_to_read );
3047
3048                 yy_current_buffer->yy_n_chars = yy_n_chars;
3049                 }
3050
3051         if ( yy_n_chars == 0 )
3052                 {
3053                 if ( number_to_move == YY_MORE_ADJ )
3054                         {
3055                         ret_val = EOB_ACT_END_OF_FILE;
3056                         yyrestart( yyin );
3057                         }
3058
3059                 else
3060                         {
3061                         ret_val = EOB_ACT_LAST_MATCH;
3062                         yy_current_buffer->yy_buffer_status =
3063                                 YY_BUFFER_EOF_PENDING;
3064                         }
3065                 }
3066
3067         else
3068                 ret_val = EOB_ACT_CONTINUE_SCAN;
3069
3070         yy_n_chars += number_to_move;
3071         yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
3072         yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
3073
3074         yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
3075
3076         return ret_val;
3077         }
3078
3079
3080 /* yy_get_previous_state - get the state just before the EOB char was reached */
3081
3082 static yy_state_type yy_get_previous_state()
3083         {
3084         register yy_state_type yy_current_state;
3085         register char *yy_cp;
3086
3087         yy_current_state = yy_start;
3088         yy_current_state += YY_AT_BOL();
3089         yy_state_ptr = yy_state_buf;
3090         *yy_state_ptr++ = yy_current_state;
3091
3092         for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
3093                 {
3094                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
3095                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3096                         {
3097                         yy_current_state = (int) yy_def[yy_current_state];
3098                         if ( yy_current_state >= 711 )
3099                                 yy_c = yy_meta[(unsigned int) yy_c];
3100                         }
3101                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3102                 *yy_state_ptr++ = yy_current_state;
3103                 }
3104
3105         return yy_current_state;
3106         }
3107
3108
3109 /* yy_try_NUL_trans - try to make a transition on the NUL character
3110  *
3111  * synopsis
3112  *      next_state = yy_try_NUL_trans( current_state );
3113  */
3114
3115 #ifdef YY_USE_PROTOS
3116 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
3117 #else
3118 static yy_state_type yy_try_NUL_trans( yy_current_state )
3119 yy_state_type yy_current_state;
3120 #endif
3121         {
3122         register int yy_is_jam;
3123
3124         register YY_CHAR yy_c = 1;
3125         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3126                 {
3127                 yy_current_state = (int) yy_def[yy_current_state];
3128                 if ( yy_current_state >= 711 )
3129                         yy_c = yy_meta[(unsigned int) yy_c];
3130                 }
3131         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3132         yy_is_jam = (yy_current_state == 710);
3133         if ( ! yy_is_jam )
3134                 *yy_state_ptr++ = yy_current_state;
3135
3136         return yy_is_jam ? 0 : yy_current_state;
3137         }
3138
3139
3140 #ifndef YY_NO_UNPUT
3141 #ifdef YY_USE_PROTOS
3142 static void yyunput( int c, register char *yy_bp )
3143 #else
3144 static void yyunput( c, yy_bp )
3145 int c;
3146 register char *yy_bp;
3147 #endif
3148         {
3149         register char *yy_cp = yy_c_buf_p;
3150
3151         /* undo effects of setting up yytext */
3152         *yy_cp = yy_hold_char;
3153
3154         if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
3155                 { /* need to shift things up to make room */
3156                 /* +2 for EOB chars. */
3157                 register int number_to_move = yy_n_chars + 2;
3158                 register char *dest = &yy_current_buffer->yy_ch_buf[
3159                                         yy_current_buffer->yy_buf_size + 2];
3160                 register char *source =
3161                                 &yy_current_buffer->yy_ch_buf[number_to_move];
3162
3163                 while ( source > yy_current_buffer->yy_ch_buf )
3164                         *--dest = *--source;
3165
3166                 yy_cp += (int) (dest - source);
3167                 yy_bp += (int) (dest - source);
3168                 yy_current_buffer->yy_n_chars =
3169                         yy_n_chars = yy_current_buffer->yy_buf_size;
3170
3171                 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
3172                         YY_FATAL_ERROR( "flex scanner push-back overflow" );
3173                 }
3174
3175         *--yy_cp = (char) c;
3176
3177
3178         yytext_ptr = yy_bp;
3179         yy_hold_char = *yy_cp;
3180         yy_c_buf_p = yy_cp;
3181         }
3182 #endif  /* ifndef YY_NO_UNPUT */
3183
3184
3185 #ifndef YY_NO_INPUT
3186 #ifdef __cplusplus
3187 static int yyinput()
3188 #else
3189 static int input()
3190 #endif
3191         {
3192         int c;
3193
3194         *yy_c_buf_p = yy_hold_char;
3195
3196         if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
3197                 {
3198                 /* yy_c_buf_p now points to the character we want to return.
3199                  * If this occurs *before* the EOB characters, then it's a
3200                  * valid NUL; if not, then we've hit the end of the buffer.
3201                  */
3202                 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
3203                         /* This was really a NUL. */
3204                         *yy_c_buf_p = '\0';
3205
3206                 else
3207                         { /* need more input */
3208                         int offset = yy_c_buf_p - yytext_ptr;
3209                         ++yy_c_buf_p;
3210
3211                         switch ( yy_get_next_buffer() )
3212                                 {
3213                                 case EOB_ACT_LAST_MATCH:
3214                                         /* This happens because yy_g_n_b()
3215                                          * sees that we've accumulated a
3216                                          * token and flags that we need to
3217                                          * try matching the token before
3218                                          * proceeding.  But for input(),
3219                                          * there's no matching to consider.
3220                                          * So convert the EOB_ACT_LAST_MATCH
3221                                          * to EOB_ACT_END_OF_FILE.
3222                                          */
3223
3224                                         /* Reset buffer status. */
3225                                         yyrestart( yyin );
3226
3227                                         /* fall through */
3228
3229                                 case EOB_ACT_END_OF_FILE:
3230                                         {
3231                                         if ( yywrap() )
3232                                                 return EOF;
3233
3234                                         if ( ! yy_did_buffer_switch_on_eof )
3235                                                 YY_NEW_FILE;
3236 #ifdef __cplusplus
3237                                         return yyinput();
3238 #else
3239                                         return input();
3240 #endif
3241                                         }
3242
3243                                 case EOB_ACT_CONTINUE_SCAN:
3244                                         yy_c_buf_p = yytext_ptr + offset;
3245                                         break;
3246                                 }
3247                         }
3248                 }
3249
3250         c = *(unsigned char *) yy_c_buf_p;      /* cast for 8-bit char's */
3251         *yy_c_buf_p = '\0';     /* preserve yytext */
3252         yy_hold_char = *++yy_c_buf_p;
3253
3254         yy_current_buffer->yy_at_bol = (c == '\n');
3255
3256         return c;
3257         }
3258 #endif /* YY_NO_INPUT */
3259
3260 #ifdef YY_USE_PROTOS
3261 void yyrestart( FILE *input_file )
3262 #else
3263 void yyrestart( input_file )
3264 FILE *input_file;
3265 #endif
3266         {
3267         if ( ! yy_current_buffer )
3268                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
3269
3270         yy_init_buffer( yy_current_buffer, input_file );
3271         yy_load_buffer_state();
3272         }
3273
3274
3275 #ifdef YY_USE_PROTOS
3276 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
3277 #else
3278 void yy_switch_to_buffer( new_buffer )
3279 YY_BUFFER_STATE new_buffer;
3280 #endif
3281         {
3282         if ( yy_current_buffer == new_buffer )
3283                 return;
3284
3285         if ( yy_current_buffer )
3286                 {
3287                 /* Flush out information for old buffer. */
3288                 *yy_c_buf_p = yy_hold_char;
3289                 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
3290                 yy_current_buffer->yy_n_chars = yy_n_chars;
3291                 }
3292
3293         yy_current_buffer = new_buffer;
3294         yy_load_buffer_state();
3295
3296         /* We don't actually know whether we did this switch during
3297          * EOF (yywrap()) processing, but the only time this flag
3298          * is looked at is after yywrap() is called, so it's safe
3299          * to go ahead and always set it.
3300          */
3301         yy_did_buffer_switch_on_eof = 1;
3302         }
3303
3304
3305 #ifdef YY_USE_PROTOS
3306 void yy_load_buffer_state( void )
3307 #else
3308 void yy_load_buffer_state()
3309 #endif
3310         {
3311         yy_n_chars = yy_current_buffer->yy_n_chars;
3312         yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
3313         yyin = yy_current_buffer->yy_input_file;
3314         yy_hold_char = *yy_c_buf_p;
3315         }
3316
3317
3318 #ifdef YY_USE_PROTOS
3319 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
3320 #else
3321 YY_BUFFER_STATE yy_create_buffer( file, size )
3322 FILE *file;
3323 int size;
3324 #endif
3325         {
3326         YY_BUFFER_STATE b;
3327
3328         b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
3329         if ( ! b )
3330                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3331
3332         b->yy_buf_size = size;
3333
3334         /* yy_ch_buf has to be 2 characters longer than the size given because
3335          * we need to put in 2 end-of-buffer characters.
3336          */
3337         b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
3338         if ( ! b->yy_ch_buf )
3339                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3340
3341         b->yy_is_our_buffer = 1;
3342
3343         yy_init_buffer( b, file );
3344
3345         return b;
3346         }
3347
3348
3349 #ifdef YY_USE_PROTOS
3350 void yy_delete_buffer( YY_BUFFER_STATE b )
3351 #else
3352 void yy_delete_buffer( b )
3353 YY_BUFFER_STATE b;
3354 #endif
3355         {
3356         if ( ! b )
3357                 return;
3358
3359         if ( b == yy_current_buffer )
3360                 yy_current_buffer = (YY_BUFFER_STATE) 0;
3361
3362         if ( b->yy_is_our_buffer )
3363                 yy_flex_free( (void *) b->yy_ch_buf );
3364
3365         yy_flex_free( (void *) b );
3366         }
3367
3368
3369
3370 #ifdef YY_USE_PROTOS
3371 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
3372 #else
3373 void yy_init_buffer( b, file )
3374 YY_BUFFER_STATE b;
3375 FILE *file;
3376 #endif
3377
3378
3379         {
3380         yy_flush_buffer( b );
3381
3382         b->yy_input_file = file;
3383         b->yy_fill_buffer = 1;
3384
3385 #if YY_ALWAYS_INTERACTIVE
3386         b->yy_is_interactive = 1;
3387 #else
3388 #if YY_NEVER_INTERACTIVE
3389         b->yy_is_interactive = 0;
3390 #else
3391         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
3392 #endif
3393 #endif
3394         }
3395
3396
3397 #ifdef YY_USE_PROTOS
3398 void yy_flush_buffer( YY_BUFFER_STATE b )
3399 #else
3400 void yy_flush_buffer( b )
3401 YY_BUFFER_STATE b;
3402 #endif
3403
3404         {
3405         if ( ! b )
3406                 return;
3407
3408         b->yy_n_chars = 0;
3409
3410         /* We always need two end-of-buffer characters.  The first causes
3411          * a transition to the end-of-buffer state.  The second causes
3412          * a jam in that state.
3413          */
3414         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
3415         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
3416
3417         b->yy_buf_pos = &b->yy_ch_buf[0];
3418
3419         b->yy_at_bol = 1;
3420         b->yy_buffer_status = YY_BUFFER_NEW;
3421
3422         if ( b == yy_current_buffer )
3423                 yy_load_buffer_state();
3424         }
3425
3426
3427 #ifndef YY_NO_SCAN_BUFFER
3428 #ifdef YY_USE_PROTOS
3429 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
3430 #else
3431 YY_BUFFER_STATE yy_scan_buffer( base, size )
3432 char *base;
3433 yy_size_t size;
3434 #endif
3435         {
3436         YY_BUFFER_STATE b;
3437
3438         if ( size < 2 ||
3439              base[size-2] != YY_END_OF_BUFFER_CHAR ||
3440              base[size-1] != YY_END_OF_BUFFER_CHAR )
3441                 /* They forgot to leave room for the EOB's. */
3442                 return 0;
3443
3444         b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
3445         if ( ! b )
3446                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
3447
3448         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
3449         b->yy_buf_pos = b->yy_ch_buf = base;
3450         b->yy_is_our_buffer = 0;
3451         b->yy_input_file = 0;
3452         b->yy_n_chars = b->yy_buf_size;
3453         b->yy_is_interactive = 0;
3454         b->yy_at_bol = 1;
3455         b->yy_fill_buffer = 0;
3456         b->yy_buffer_status = YY_BUFFER_NEW;
3457
3458         yy_switch_to_buffer( b );
3459
3460         return b;
3461         }
3462 #endif
3463
3464
3465 #ifndef YY_NO_SCAN_STRING
3466 #ifdef YY_USE_PROTOS
3467 YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
3468 #else
3469 YY_BUFFER_STATE yy_scan_string( yy_str )
3470 yyconst char *yy_str;
3471 #endif
3472         {
3473         int len;
3474         for ( len = 0; yy_str[len]; ++len )
3475                 ;
3476
3477         return yy_scan_bytes( yy_str, len );
3478         }
3479 #endif
3480
3481
3482 #ifndef YY_NO_SCAN_BYTES
3483 #ifdef YY_USE_PROTOS
3484 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
3485 #else
3486 YY_BUFFER_STATE yy_scan_bytes( bytes, len )
3487 yyconst char *bytes;
3488 int len;
3489 #endif
3490         {
3491         YY_BUFFER_STATE b;
3492         char *buf;
3493         yy_size_t n;
3494         int i;
3495
3496         /* Get memory for full buffer, including space for trailing EOB's. */
3497         n = len + 2;
3498         buf = (char *) yy_flex_alloc( n );
3499         if ( ! buf )
3500                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
3501
3502         for ( i = 0; i < len; ++i )
3503                 buf[i] = bytes[i];
3504
3505         buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
3506
3507         b = yy_scan_buffer( buf, n );
3508         if ( ! b )
3509                 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
3510
3511         /* It's okay to grow etc. this buffer, and we should throw it
3512          * away when we're done.
3513          */
3514         b->yy_is_our_buffer = 1;
3515
3516         return b;
3517         }
3518 #endif
3519
3520
3521 #ifndef YY_NO_PUSH_STATE
3522 #ifdef YY_USE_PROTOS
3523 static void yy_push_state( int new_state )
3524 #else
3525 static void yy_push_state( new_state )
3526 int new_state;
3527 #endif
3528         {
3529         if ( yy_start_stack_ptr >= yy_start_stack_depth )
3530                 {
3531                 yy_size_t new_size;
3532
3533                 yy_start_stack_depth += YY_START_STACK_INCR;
3534                 new_size = yy_start_stack_depth * sizeof( int );
3535
3536                 if ( ! yy_start_stack )
3537                         yy_start_stack = (int *) yy_flex_alloc( new_size );
3538
3539                 else
3540                         yy_start_stack = (int *) yy_flex_realloc(
3541                                         (void *) yy_start_stack, new_size );
3542
3543                 if ( ! yy_start_stack )
3544                         YY_FATAL_ERROR(
3545                         "out of memory expanding start-condition stack" );
3546                 }
3547
3548         yy_start_stack[yy_start_stack_ptr++] = YY_START;
3549
3550         BEGIN(new_state);
3551         }
3552 #endif
3553
3554
3555 #ifndef YY_NO_POP_STATE
3556 static void yy_pop_state()
3557         {
3558         if ( --yy_start_stack_ptr < 0 )
3559                 YY_FATAL_ERROR( "start-condition stack underflow" );
3560
3561         BEGIN(yy_start_stack[yy_start_stack_ptr]);
3562         }
3563 #endif
3564
3565
3566 #ifndef YY_NO_TOP_STATE
3567 static int yy_top_state()
3568         {
3569         return yy_start_stack[yy_start_stack_ptr - 1];
3570         }
3571 #endif
3572
3573 #ifndef YY_EXIT_FAILURE
3574 #define YY_EXIT_FAILURE 2
3575 #endif
3576
3577 #ifdef YY_USE_PROTOS
3578 static void yy_fatal_error( yyconst char msg[] )
3579 #else
3580 static void yy_fatal_error( msg )
3581 char msg[];
3582 #endif
3583         {
3584         (void) fprintf( stderr, "%s\n", msg );
3585         exit( YY_EXIT_FAILURE );
3586         }
3587
3588
3589
3590 /* Redefine yyless() so it works in section 3 code. */
3591
3592 #undef yyless
3593 #define yyless(n) \
3594         do \
3595                 { \
3596                 /* Undo effects of setting up yytext. */ \
3597                 yytext[yyleng] = yy_hold_char; \
3598                 yy_c_buf_p = yytext + n; \
3599                 yy_hold_char = *yy_c_buf_p; \
3600                 *yy_c_buf_p = '\0'; \
3601                 yyleng = n; \
3602                 } \
3603         while ( 0 )
3604
3605
3606 /* Internal utility routines. */
3607
3608 #ifndef yytext_ptr
3609 #ifdef YY_USE_PROTOS
3610 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
3611 #else
3612 static void yy_flex_strncpy( s1, s2, n )
3613 char *s1;
3614 yyconst char *s2;
3615 int n;
3616 #endif
3617         {
3618         register int i;
3619         for ( i = 0; i < n; ++i )
3620                 s1[i] = s2[i];
3621         }
3622 #endif
3623
3624 #ifdef YY_NEED_STRLEN
3625 #ifdef YY_USE_PROTOS
3626 static int yy_flex_strlen( yyconst char *s )
3627 #else
3628 static int yy_flex_strlen( s )
3629 yyconst char *s;
3630 #endif
3631         {
3632         register int n;
3633         for ( n = 0; s[n]; ++n )
3634                 ;
3635
3636         return n;
3637         }
3638 #endif
3639
3640
3641 #ifdef YY_USE_PROTOS
3642 static void *yy_flex_alloc( yy_size_t size )
3643 #else
3644 static void *yy_flex_alloc( size )
3645 yy_size_t size;
3646 #endif
3647         {
3648         return (void *) malloc( size );
3649         }
3650
3651 #ifdef YY_USE_PROTOS
3652 static void *yy_flex_realloc( void *ptr, yy_size_t size )
3653 #else
3654 static void *yy_flex_realloc( ptr, size )
3655 void *ptr;
3656 yy_size_t size;
3657 #endif
3658         {
3659         /* The cast to (char *) in the following accommodates both
3660          * implementations that use char* generic pointers, and those
3661          * that use void* generic pointers.  It works with the latter
3662          * because both ANSI C and C++ allow castless assignment from
3663          * any pointer type to void*, and deal with argument conversions
3664          * as though doing an assignment.
3665          */
3666         return (void *) realloc( (char *) ptr, size );
3667         }
3668
3669 #ifdef YY_USE_PROTOS
3670 static void yy_flex_free( void *ptr )
3671 #else
3672 static void yy_flex_free( ptr )
3673 void *ptr;
3674 #endif
3675         {
3676         free( ptr );
3677         }
3678
3679 #if YY_MAIN
3680 int main()
3681         {
3682         yylex();
3683         return 0;
3684         }
3685 #endif
3686 #line 734 "../parser.l"
3687
3688
3689
3690 static char *StringToLex;
3691
3692 #ifndef FLEX_SCANNER
3693 static FILE *lexFP;
3694
3695 static int input()
3696 {
3697     int ret;
3698
3699     if (StringToLex != NULL) {
3700         ret = *StringToLex;
3701         if (ret == NULLCHAR)
3702           ret = EOF;
3703         else
3704           StringToLex++;
3705     } else if (unputCount > 0) {
3706         ret = unputBuffer[--unputCount];
3707     } else {
3708         ret = fgetc(lexFP);
3709     }
3710
3711     if (ret == EOF)
3712       return 0;
3713     else
3714       return ret;
3715 }
3716
3717 /*
3718  * Return offset of next pattern within current file
3719  */
3720 int yyoffset()
3721 {
3722     int offset = ftell(lexFP) - unputCount;
3723
3724     if (offset < 0) {
3725         offset = 0;
3726     }
3727     return(offset);
3728 }
3729
3730 static void output(ch)
3731      int ch;
3732 {
3733     fprintf(stderr, "PARSER BUG: unmatched character '%c' (0%o)\n",
3734             ch, ch);
3735 }
3736
3737 static void unput(ch)
3738      int ch;
3739 {
3740     if (ch == 0) return;
3741     if (StringToLex != NULL) {
3742         StringToLex--;
3743     } else {
3744         if (unputCount >= UNPUT_BUF_SIZE)
3745           fprintf(stderr, "PARSER BUG: unput buffer overflow '%c' (0%o)\n",
3746                   ch, ch);
3747         unputBuffer[unputCount++] = ch;
3748     }
3749 }
3750
3751 /* Get ready to lex from a new file.  Kludge below sticks
3752    an artificial newline at the front of the file, which the
3753    above grammar ignores, but which makes ^ at start of pattern
3754    match at the real start of the file.
3755 */
3756 void yynewfile(f)
3757      FILE *f;
3758 {
3759     lexFP = f;
3760     StringToLex = NULL;
3761     unputCount = 0;
3762     unput('\n'); /* kludge */
3763 }
3764
3765 /* Get ready to lex from a string.  ^ at start of pattern WON'T
3766    match at the start of the string!
3767 */
3768 void yynewstr(s)
3769      char *s;
3770 {
3771     lexFP = NULL;
3772     StringToLex = s;
3773     unputCount = 0;
3774 }
3775 #endif /*!FLEX_SCANNER*/
3776
3777 #ifdef FLEX_SCANNER
3778 void my_yy_input(buf, result, max_size)
3779      char *buf;
3780      int *result;
3781      int max_size;
3782 {
3783     int count;
3784
3785     if (StringToLex != NULL) {
3786         count = 0;
3787         while (*StringToLex != NULLCHAR) {
3788             *buf++ = *StringToLex++;
3789             count++;
3790         }
3791         *result = count;
3792         return;
3793     } else {
3794         count = fread(buf, 1, max_size, yyin);
3795         if (count == 0) {
3796             *result = YY_NULL;
3797         } else {
3798             *result = count;
3799         }
3800         return;
3801     }
3802 }
3803
3804 static YY_BUFFER_STATE my_file_buffer = NULL;
3805
3806 /*
3807     Return offset of next pattern in the current file.
3808 */
3809 int yyoffset()
3810 {
3811     int pos = yy_c_buf_p - yy_current_buffer->yy_ch_buf;
3812
3813     return(ftell(yy_current_buffer->yy_input_file) -
3814          yy_n_chars + pos);
3815 }
3816
3817
3818 void yynewstr(s)
3819      char *s;
3820 {
3821     if (my_file_buffer != NULL)
3822       yy_delete_buffer(my_file_buffer);
3823     StringToLex = s;
3824     my_file_buffer = yy_create_buffer(stdin, YY_BUF_SIZE);
3825     yy_switch_to_buffer(my_file_buffer);
3826 }
3827
3828 void yynewfile(f)
3829      FILE *f;
3830 {
3831     if (my_file_buffer != NULL)
3832       yy_delete_buffer(my_file_buffer);
3833     StringToLex = NULL;
3834     my_file_buffer = yy_create_buffer(f, YY_BUF_SIZE);
3835     yy_switch_to_buffer(my_file_buffer);
3836 }
3837 #endif /*FLEX_SCANNER*/
3838
3839 int yywrap()
3840 {
3841     return TRUE;
3842 }
3843
3844 /* Parse a move from the given string s */
3845 /* ^ at start of pattern WON'T work here unless using flex */
3846 ChessMove yylexstr(boardIndex, s)
3847      int boardIndex;
3848      char *s;
3849 {
3850     ChessMove ret;
3851     char *oldStringToLex;
3852 #ifdef FLEX_SCANNER
3853     YY_BUFFER_STATE buffer, oldBuffer;
3854 #endif
3855
3856     yyboardindex = boardIndex;
3857     oldStringToLex = StringToLex;
3858     StringToLex = s;
3859 #ifdef FLEX_SCANNER
3860     buffer = yy_create_buffer(stdin, YY_BUF_SIZE);
3861     oldBuffer = YY_CURRENT_BUFFER;
3862     yy_switch_to_buffer(buffer);
3863 #endif /*FLEX_SCANNER*/
3864
3865     ret = (ChessMove) yylex();
3866
3867 #ifdef FLEX_SCANNER
3868     if (oldBuffer != NULL)
3869       yy_switch_to_buffer(oldBuffer);
3870     yy_delete_buffer(buffer);
3871 #endif /*FLEX_SCANNER*/
3872     StringToLex = oldStringToLex;
3873
3874     return ret;
3875 }