Hoping to avoid a crash in OSX for a problem blitzrage found
[asterisk/asterisk.git] / main / ast_expr2f.c
1 #line 2 "ast_expr2f.c"
2
3 #line 4 "ast_expr2f.c"
4
5 #define  YY_INT_ALIGNED short int
6
7 /* A lexical scanner generated by flex */
8
9 #define FLEX_SCANNER
10 #define YY_FLEX_MAJOR_VERSION 2
11 #define YY_FLEX_MINOR_VERSION 5
12 #define YY_FLEX_SUBMINOR_VERSION 31
13 #if YY_FLEX_SUBMINOR_VERSION > 0
14 #define FLEX_BETA
15 #endif
16
17 /* First, we deal with  platform-specific or compiler-specific issues. */
18
19 /* begin standard C headers. */
20 #include <stdio.h>
21 #include <string.h>
22 #include <errno.h>
23 #include <stdlib.h>
24
25 /* end standard C headers. */
26
27 /* flex integer type definitions */
28
29 #ifndef FLEXINT_H
30 #define FLEXINT_H
31
32 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
33
34 #if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
35 #include <inttypes.h>
36 typedef int8_t flex_int8_t;
37 typedef uint8_t flex_uint8_t;
38 typedef int16_t flex_int16_t;
39 typedef uint16_t flex_uint16_t;
40 typedef int32_t flex_int32_t;
41 typedef uint32_t flex_uint32_t;
42 #else
43 typedef signed char flex_int8_t;
44 typedef short int flex_int16_t;
45 typedef int flex_int32_t;
46 typedef unsigned char flex_uint8_t; 
47 typedef unsigned short int flex_uint16_t;
48 typedef unsigned int flex_uint32_t;
49 #endif /* ! C99 */
50
51 /* Limits of integral types. */
52 #ifndef INT8_MIN
53 #define INT8_MIN               (-128)
54 #endif
55 #ifndef INT16_MIN
56 #define INT16_MIN              (-32767-1)
57 #endif
58 #ifndef INT32_MIN
59 #define INT32_MIN              (-2147483647-1)
60 #endif
61 #ifndef INT8_MAX
62 #define INT8_MAX               (127)
63 #endif
64 #ifndef INT16_MAX
65 #define INT16_MAX              (32767)
66 #endif
67 #ifndef INT32_MAX
68 #define INT32_MAX              (2147483647)
69 #endif
70 #ifndef UINT8_MAX
71 #define UINT8_MAX              (255U)
72 #endif
73 #ifndef UINT16_MAX
74 #define UINT16_MAX             (65535U)
75 #endif
76 #ifndef UINT32_MAX
77 #define UINT32_MAX             (4294967295U)
78 #endif
79
80 #endif /* ! FLEXINT_H */
81
82 #ifdef __cplusplus
83
84 /* The "const" storage-class-modifier is valid. */
85 #define YY_USE_CONST
86
87 #else   /* ! __cplusplus */
88
89 #if __STDC__
90
91 #define YY_USE_CONST
92
93 #endif  /* __STDC__ */
94 #endif  /* ! __cplusplus */
95
96 #ifdef YY_USE_CONST
97 #define yyconst const
98 #else
99 #define yyconst
100 #endif
101
102 /* Returned upon end-of-file. */
103 #define YY_NULL 0
104
105 /* Promotes a possibly negative, possibly signed char to an unsigned
106  * integer for use as an array index.  If the signed char is negative,
107  * we want to instead treat it as an 8-bit unsigned char, hence the
108  * double cast.
109  */
110 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
111
112 /* An opaque pointer. */
113 #ifndef YY_TYPEDEF_YY_SCANNER_T
114 #define YY_TYPEDEF_YY_SCANNER_T
115 typedef void* yyscan_t;
116 #endif
117
118 /* For convenience, these vars (plus the bison vars far below)
119    are macros in the reentrant scanner. */
120 #define yyin yyg->yyin_r
121 #define yyout yyg->yyout_r
122 #define yyextra yyg->yyextra_r
123 #define yyleng yyg->yyleng_r
124 #define yytext yyg->yytext_r
125 #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
126 #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
127 #define yy_flex_debug yyg->yy_flex_debug_r
128
129 int ast_yylex_init (yyscan_t* scanner);
130
131 /* Enter a start condition.  This macro really ought to take a parameter,
132  * but we do it the disgusting crufty way forced on us by the ()-less
133  * definition of BEGIN.
134  */
135 #define BEGIN yyg->yy_start = 1 + 2 *
136
137 /* Translate the current start state into a value that can be later handed
138  * to BEGIN to return to the state.  The YYSTATE alias is for lex
139  * compatibility.
140  */
141 #define YY_START ((yyg->yy_start - 1) / 2)
142 #define YYSTATE YY_START
143
144 /* Action number for EOF rule of a given start state. */
145 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
146
147 /* Special action meaning "start processing a new file". */
148 #define YY_NEW_FILE ast_yyrestart(yyin ,yyscanner )
149
150 #define YY_END_OF_BUFFER_CHAR 0
151
152 /* Size of default input buffer. */
153 #ifndef YY_BUF_SIZE
154 #define YY_BUF_SIZE 16384
155 #endif
156
157 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
158 #define YY_TYPEDEF_YY_BUFFER_STATE
159 typedef struct yy_buffer_state *YY_BUFFER_STATE;
160 #endif
161
162 #define EOB_ACT_CONTINUE_SCAN 0
163 #define EOB_ACT_END_OF_FILE 1
164 #define EOB_ACT_LAST_MATCH 2
165
166     #define YY_LESS_LINENO(n)
167     
168 /* Return all but the first "n" matched characters back to the input stream. */
169 #define yyless(n) \
170         do \
171                 { \
172                 /* Undo effects of setting up yytext. */ \
173         int yyless_macro_arg = (n); \
174         YY_LESS_LINENO(yyless_macro_arg);\
175                 *yy_cp = yyg->yy_hold_char; \
176                 YY_RESTORE_YY_MORE_OFFSET \
177                 yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
178                 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
179                 } \
180         while ( 0 )
181
182 #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
183
184 /* The following is because we cannot portably get our hands on size_t
185  * (without autoconf's help, which isn't available because we want
186  * flex-generated scanners to compile on their own).
187  */
188
189 #ifndef YY_TYPEDEF_YY_SIZE_T
190 #define YY_TYPEDEF_YY_SIZE_T
191 typedef unsigned int yy_size_t;
192 #endif
193
194 #ifndef YY_STRUCT_YY_BUFFER_STATE
195 #define YY_STRUCT_YY_BUFFER_STATE
196 struct yy_buffer_state
197         {
198         FILE *yy_input_file;
199
200         char *yy_ch_buf;                /* input buffer */
201         char *yy_buf_pos;               /* current position in input buffer */
202
203         /* Size of input buffer in bytes, not including room for EOB
204          * characters.
205          */
206         yy_size_t yy_buf_size;
207
208         /* Number of characters read into yy_ch_buf, not including EOB
209          * characters.
210          */
211         int yy_n_chars;
212
213         /* Whether we "own" the buffer - i.e., we know we created it,
214          * and can realloc() it to grow it, and should free() it to
215          * delete it.
216          */
217         int yy_is_our_buffer;
218
219         /* Whether this is an "interactive" input source; if so, and
220          * if we're using stdio for input, then we want to use getc()
221          * instead of fread(), to make sure we stop fetching input after
222          * each newline.
223          */
224         int yy_is_interactive;
225
226         /* Whether we're considered to be at the beginning of a line.
227          * If so, '^' rules will be active on the next match, otherwise
228          * not.
229          */
230         int yy_at_bol;
231
232     int yy_bs_lineno; /**< The line count. */
233     int yy_bs_column; /**< The column count. */
234     
235         /* Whether to try to fill the input buffer when we reach the
236          * end of it.
237          */
238         int yy_fill_buffer;
239
240         int yy_buffer_status;
241
242 #define YY_BUFFER_NEW 0
243 #define YY_BUFFER_NORMAL 1
244         /* When an EOF's been seen but there's still some text to process
245          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
246          * shouldn't try reading from the input source any more.  We might
247          * still have a bunch of tokens to match, though, because of
248          * possible backing-up.
249          *
250          * When we actually see the EOF, we change the status to "new"
251          * (via ast_yyrestart()), so that the user can continue scanning by
252          * just pointing yyin at a new input file.
253          */
254 #define YY_BUFFER_EOF_PENDING 2
255
256         };
257 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
258
259 /* We provide macros for accessing buffer states in case in the
260  * future we want to put the buffer states in a more general
261  * "scanner state".
262  *
263  * Returns the top of the stack, or NULL.
264  */
265 #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
266                           ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
267                           : NULL)
268
269 /* Same as previous macro, but useful when we know that the buffer stack is not
270  * NULL or when we need an lvalue. For internal use only.
271  */
272 #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
273
274 void ast_yyrestart (FILE *input_file ,yyscan_t yyscanner );
275 void ast_yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
276 YY_BUFFER_STATE ast_yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner );
277 void ast_yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
278 void ast_yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
279 void ast_yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
280 void ast_yypop_buffer_state (yyscan_t yyscanner );
281
282 static void ast_yyensure_buffer_stack (yyscan_t yyscanner );
283 static void ast_yy_load_buffer_state (yyscan_t yyscanner );
284 static void ast_yy_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner );
285
286 #define YY_FLUSH_BUFFER ast_yy_flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
287
288 YY_BUFFER_STATE ast_yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
289 YY_BUFFER_STATE ast_yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
290 YY_BUFFER_STATE ast_yy_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner );
291
292 void *ast_yyalloc (yy_size_t ,yyscan_t yyscanner );
293 void *ast_yyrealloc (void *,yy_size_t ,yyscan_t yyscanner );
294 void ast_yyfree (void * ,yyscan_t yyscanner );
295
296 #define yy_new_buffer ast_yy_create_buffer
297
298 #define yy_set_interactive(is_interactive) \
299         { \
300         if ( ! YY_CURRENT_BUFFER ){ \
301         ast_yyensure_buffer_stack (yyscanner); \
302                 YY_CURRENT_BUFFER_LVALUE =    \
303             ast_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
304         } \
305         YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
306         }
307
308 #define yy_set_bol(at_bol) \
309         { \
310         if ( ! YY_CURRENT_BUFFER ){\
311         ast_yyensure_buffer_stack (yyscanner); \
312                 YY_CURRENT_BUFFER_LVALUE =    \
313             ast_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
314         } \
315         YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
316         }
317
318 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
319
320 /* Begin user sect3 */
321
322 #define ast_yywrap(n) 1
323 #define YY_SKIP_YYWRAP
324
325 typedef char YY_CHAR;
326
327 typedef int yy_state_type;
328
329 #define yytext_ptr yytext_r
330 static yyconst flex_int16_t yy_nxt[][128] =
331     {
332     {
333         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
334         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
335         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
336         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
337         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
338         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
339         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
340         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
341         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
342         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
343
344         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
345         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
346         0,    0,    0,    0,    0,    0,    0,    0
347     },
348
349     {
350         7,    8,    8,    8,    8,    8,    8,    8,    8,    9,
351        10,    8,    8,    9,    8,    8,    8,    8,    8,    8,
352         8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
353         8,    8,    9,   11,   12,   13,   14,   15,   16,   13,
354        17,   18,   19,   20,   21,   22,   13,   23,   24,   24,
355        24,   24,   24,   24,   24,   24,   24,   24,   25,   13,
356        26,   27,   28,   29,   13,   13,   13,   13,   13,   13,
357
358        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
359        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
360        13,    8,   13,    8,   13,   13,    8,   13,   13,   13,
361        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
362        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
363        13,   13,   13,    8,   30,    8,    8,    8
364     },
365
366     {
367         7,    8,    8,    8,    8,    8,    8,    8,    8,    9,
368        10,    8,    8,    9,    8,    8,    8,    8,    8,    8,
369         8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
370         8,    8,    9,   11,   12,   13,   14,   15,   16,   13,
371
372        17,   18,   19,   20,   21,   22,   13,   23,   24,   24,
373        24,   24,   24,   24,   24,   24,   24,   24,   25,   13,
374        26,   27,   28,   29,   13,   13,   13,   13,   13,   13,
375        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
376        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
377        13,    8,   13,    8,   13,   13,    8,   13,   13,   13,
378        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
379        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
380        13,   13,   13,    8,   30,    8,    8,    8
381     },
382
383     {
384         7,   31,   31,   31,   31,   31,   31,   31,   31,   31,
385
386        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
387        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
388        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
389        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
390        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
391        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
392        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
393        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
394        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
395        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
396
397        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
398        31,   31,   31,   32,   31,   33,   31,   31
399     },
400
401     {
402         7,   31,   31,   31,   31,   31,   31,   31,   31,   31,
403        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
404        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
405        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
406        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
407        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
408        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
409        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
410
411        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
412        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
413        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
414        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
415        31,   31,   31,   32,   31,   33,   31,   31
416     },
417
418     {
419         7,   34,   34,   34,   34,   34,   34,   34,   34,   35,
420        35,   34,   34,   35,   34,   34,   34,   34,   34,   34,
421        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
422        34,   34,   35,   35,   34,   34,   36,   35,   35,   34,
423        35,   35,   35,   35,   34,   35,   34,   35,   34,   34,
424
425        34,   34,   34,   34,   34,   34,   34,   34,   35,   34,
426        35,   35,   35,   35,   34,   34,   34,   34,   34,   34,
427        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
428        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
429        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
430        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
431        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
432        34,   34,   34,   34,   35,   34,   34,   34
433     },
434
435     {
436         7,   34,   34,   34,   34,   34,   34,   34,   34,   35,
437        35,   34,   34,   35,   34,   34,   34,   34,   34,   34,
438
439        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
440        34,   34,   35,   35,   34,   34,   36,   35,   35,   34,
441        35,   35,   35,   35,   34,   35,   34,   35,   34,   34,
442        34,   34,   34,   34,   34,   34,   34,   34,   35,   34,
443        35,   35,   35,   35,   34,   34,   34,   34,   34,   34,
444        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
445        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
446        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
447        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
448        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
449
450        34,   34,   34,   34,   35,   34,   34,   34
451     },
452
453     {
454        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
455        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
456        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
457        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
458        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
459        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
460        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
461        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
462        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
463
464        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
465        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
466        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
467        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7
468     },
469
470     {
471         7,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
472        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
473        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
474        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
475        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
476        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
477
478        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
479        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
480        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
481        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
482        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
483        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
484        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8
485     },
486
487     {
488         7,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
489        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
490        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
491
492        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
493        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
494        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
495        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
496        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
497        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
498        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
499        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
500        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
501        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9
502
503     },
504
505     {
506         7,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
507       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
508       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
509       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
510       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
511       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
512       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
513       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
514       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
515       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
516
517       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
518       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
519       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10
520     },
521
522     {
523         7,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
524       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
525       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
526       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
527       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
528       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
529       -11,   37,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
530
531       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
532       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
533       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
534       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
535       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
536       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11
537     },
538
539     {
540         7,   38,   38,   38,   38,   38,   38,   38,   38,   38,
541        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
542        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
543        38,   38,   38,   38,   39,   38,   38,   38,   38,   38,
544
545        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
546        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
547        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
548        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
549        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
550        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
551        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
552        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
553        38,   38,   38,   38,   38,   38,   38,   38
554     },
555
556     {
557         7,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
558
559       -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
560       -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
561       -13,  -13,  -13,  -13,  -13,   40,   40,  -13,  -13,   40,
562       -13,  -13,  -13,  -13,  -13,  -13,   40,  -13,   40,   40,
563        40,   40,   40,   40,   40,   40,   40,   40,  -13,   40,
564       -13,  -13,  -13,  -13,   40,   40,   40,   40,   40,   40,
565        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
566        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
567        40,  -13,   40,  -13,   40,   40,  -13,   40,   40,   40,
568        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
569
570        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
571        40,   40,   40,  -13,  -13,  -13,  -13,  -13
572     },
573
574     {
575         7,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
576       -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
577       -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
578       -14,  -14,  -14,  -14,  -14,   40,   40,  -14,  -14,   40,
579       -14,  -14,  -14,  -14,  -14,  -14,   40,  -14,   40,   40,
580        40,   40,   40,   40,   40,   40,   40,   40,  -14,   40,
581       -14,  -14,  -14,  -14,   40,   40,   40,   40,   40,   40,
582        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
583
584        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
585        40,  -14,   40,  -14,   40,   40,  -14,   40,   40,   40,
586        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
587        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
588        40,   40,   40,   41,  -14,  -14,  -14,  -14
589     },
590
591     {
592         7,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
593       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
594       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
595       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
596       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
597
598       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
599       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
600       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
601       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
602       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
603       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
604       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
605       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15
606     },
607
608     {
609         7,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
610       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
611
612       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
613       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,   42,  -16,
614       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
615       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
616       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
617       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
618       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
619       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
620       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
621       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
622
623       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16
624     },
625
626     {
627         7,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
628       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
629       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
630       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
631       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
632       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
633       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
634       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
635       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
636
637       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
638       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
639       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
640       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17
641     },
642
643     {
644         7,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
645       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
646       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
647       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
648       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
649       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
650
651       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
652       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
653       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
654       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
655       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
656       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
657       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18
658     },
659
660     {
661         7,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
662       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
663       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
664
665       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
666       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
667       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
668       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
669       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
670       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
671       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
672       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
673       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
674       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19
675
676     },
677
678     {
679         7,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
680       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
681       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
682       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
683       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
684       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
685       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
686       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
687       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
688       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
689
690       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
691       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
692       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20
693     },
694
695     {
696         7,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
697       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
698       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
699       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
700       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
701       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
702       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
703
704       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
705       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
706       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
707       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
708       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
709       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21
710     },
711
712     {
713         7,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
714       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
715       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
716       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
717
718       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
719       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
720       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
721       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
722       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
723       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
724       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
725       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
726       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22
727     },
728
729     {
730         7,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
731
732       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
733       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
734       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
735       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
736       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
737       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
738       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
739       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
740       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
741       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
742
743       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
744       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23
745     },
746
747     {
748         7,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
749       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
750       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
751       -24,  -24,  -24,  -24,  -24,   40,   40,  -24,  -24,   40,
752       -24,  -24,  -24,  -24,  -24,  -24,   43,  -24,   44,   44,
753        44,   44,   44,   44,   44,   44,   44,   44,  -24,   40,
754       -24,  -24,  -24,  -24,   40,   40,   40,   40,   40,   40,
755        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
756
757        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
758        40,  -24,   40,  -24,   40,   40,  -24,   40,   40,   40,
759        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
760        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
761        40,   40,   40,  -24,  -24,  -24,  -24,  -24
762     },
763
764     {
765         7,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
766       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
767       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
768       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
769       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
770
771       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,   45,  -25,
772       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
773       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
774       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
775       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
776       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
777       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
778       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25
779     },
780
781     {
782         7,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
783       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
784
785       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
786       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
787       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
788       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
789       -26,   46,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
790       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
791       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
792       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
793       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
794       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
795
796       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26
797     },
798
799     {
800         7,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
801       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
802       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
803       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
804       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
805       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
806       -27,   47,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
807       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
808       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
809
810       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
811       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
812       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
813       -27,  -27,  -27,  -27,  -27,  -27,   48,  -27
814     },
815
816     {
817         7,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
818       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
819       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
820       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
821       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
822       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
823
824       -28,   49,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
825       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
826       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
827       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
828       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
829       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
830       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28
831     },
832
833     {
834         7,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
835       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
836       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
837
838       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
839       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
840       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
841       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
842       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
843       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
844       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
845       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
846       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
847       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29
848
849     },
850
851     {
852         7,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
853       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
854       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
855       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
856       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
857       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
858       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
859       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
860       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
861       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
862
863       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
864       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
865       -30,  -30,  -30,  -30,   50,  -30,  -30,  -30
866     },
867
868     {
869         7,   51,   51,   51,   51,   51,   51,   51,   51,   51,
870        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
871        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
872        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
873        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
874        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
875        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
876
877        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
878        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
879        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
880        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
881        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
882        51,   51,   51,   52,   51,   53,   51,   51
883     },
884
885     {
886         7,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
887       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
888       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
889       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
890
891       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
892       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
893       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
894       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
895       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
896       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
897       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
898       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
899       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32
900     },
901
902     {
903         7,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
904
905       -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
906       -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
907       -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
908       -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
909       -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
910       -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
911       -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
912       -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
913       -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
914       -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
915
916       -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
917       -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33
918     },
919
920     {
921         7,   54,   54,   54,   54,   54,   54,   54,   54,  -34,
922       -34,   54,   54,  -34,   54,   54,   54,   54,   54,   54,
923        54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
924        54,   54,  -34,  -34,   54,   54,  -34,  -34,  -34,   54,
925       -34,  -34,  -34,  -34,   54,  -34,   54,  -34,   54,   54,
926        54,   54,   54,   54,   54,   54,   54,   54,  -34,   54,
927       -34,  -34,  -34,  -34,   54,   54,   54,   54,   54,   54,
928        54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
929
930        54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
931        54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
932        54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
933        54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
934        54,   54,   54,   54,  -34,   54,   54,   54
935     },
936
937     {
938         7,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
939       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
940       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
941       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
942       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
943
944       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
945       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
946       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
947       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
948       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
949       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
950       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
951       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35
952     },
953
954     {
955         7,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
956       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
957
958       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
959       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
960       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
961       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
962       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
963       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
964       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
965       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
966       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
967       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
968
969       -36,  -36,  -36,   55,  -36,  -36,  -36,  -36
970     },
971
972     {
973         7,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
974       -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
975       -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
976       -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
977       -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
978       -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
979       -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
980       -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
981       -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
982
983       -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
984       -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
985       -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
986       -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37
987     },
988
989     {
990         7,   38,   38,   38,   38,   38,   38,   38,   38,   38,
991        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
992        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
993        38,   38,   38,   38,   39,   38,   38,   38,   38,   38,
994        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
995        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
996
997        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
998        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
999        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
1000        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
1001        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
1002        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
1003        38,   38,   38,   38,   38,   38,   38,   38
1004     },
1005
1006     {
1007         7,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
1008       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
1009       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
1010
1011       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
1012       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
1013       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
1014       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
1015       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
1016       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
1017       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
1018       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
1019       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
1020       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39
1021
1022     },
1023
1024     {
1025         7,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
1026       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
1027       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
1028       -40,  -40,  -40,  -40,  -40,   40,   40,  -40,  -40,   40,
1029       -40,  -40,  -40,  -40,  -40,  -40,   40,  -40,   40,   40,
1030        40,   40,   40,   40,   40,   40,   40,   40,  -40,   40,
1031       -40,  -40,  -40,  -40,   40,   40,   40,   40,   40,   40,
1032        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
1033        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
1034        40,  -40,   40,  -40,   40,   40,  -40,   40,   40,   40,
1035
1036        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
1037        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
1038        40,   40,   40,  -40,  -40,  -40,  -40,  -40
1039     },
1040
1041     {
1042         7,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1043       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1044       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1045       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1046       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1047       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1048       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1049
1050       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1051       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1052       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1053       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1054       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1055       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41
1056     },
1057
1058     {
1059         7,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1060       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1061       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1062       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1063
1064       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1065       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1066       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1067       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1068       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1069       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1070       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1071       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1072       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42
1073     },
1074
1075     {
1076         7,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1077
1078       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1079       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1080       -43,  -43,  -43,  -43,  -43,   40,   40,  -43,  -43,   40,
1081       -43,  -43,  -43,  -43,  -43,  -43,   40,  -43,   56,   56,
1082        56,   56,   56,   56,   56,   56,   56,   56,  -43,   40,
1083       -43,  -43,  -43,  -43,   40,   40,   40,   40,   40,   40,
1084        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
1085        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
1086        40,  -43,   40,  -43,   40,   40,  -43,   40,   40,   40,
1087        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
1088
1089        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
1090        40,   40,   40,  -43,  -43,  -43,  -43,  -43
1091     },
1092
1093     {
1094         7,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1095       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1096       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1097       -44,  -44,  -44,  -44,  -44,   40,   40,  -44,  -44,   40,
1098       -44,  -44,  -44,  -44,  -44,  -44,   43,  -44,   44,   44,
1099        44,   44,   44,   44,   44,   44,   44,   44,  -44,   40,
1100       -44,  -44,  -44,  -44,   40,   40,   40,   40,   40,   40,
1101        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
1102
1103        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
1104        40,  -44,   40,  -44,   40,   40,  -44,   40,   40,   40,
1105        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
1106        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
1107        40,   40,   40,  -44,  -44,  -44,  -44,  -44
1108     },
1109
1110     {
1111         7,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1112       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1113       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1114       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1115       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1116
1117       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1118       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1119       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1120       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1121       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1122       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1123       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1124       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45
1125     },
1126
1127     {
1128         7,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1129       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1130
1131       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1132       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1133       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1134       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1135       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1136       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1137       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1138       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1139       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1140       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1141
1142       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46
1143     },
1144
1145     {
1146         7,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1147       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1148       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1149       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1150       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1151       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1152       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1153       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1154       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1155
1156       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1157       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1158       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1159       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47
1160     },
1161
1162     {
1163         7,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1164       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1165       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1166       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1167       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1168       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1169
1170       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1171       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1172       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1173       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1174       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1175       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1176       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48
1177     },
1178
1179     {
1180         7,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
1181       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
1182       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
1183
1184       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
1185       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
1186       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
1187       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
1188       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
1189       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
1190       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
1191       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
1192       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
1193       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49
1194
1195     },
1196
1197     {
1198         7,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
1199       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
1200       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
1201       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
1202       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
1203       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
1204       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
1205       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
1206       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
1207       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
1208
1209       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
1210       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
1211       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50
1212     },
1213
1214     {
1215         7,   51,   51,   51,   51,   51,   51,   51,   51,   51,
1216        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
1217        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
1218        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
1219        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
1220        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
1221        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
1222
1223        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
1224        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
1225        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
1226        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
1227        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
1228        51,   51,   51,   52,   51,   53,   51,   51
1229     },
1230
1231     {
1232         7,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
1233       -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
1234       -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
1235       -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
1236
1237       -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
1238       -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
1239       -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
1240       -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
1241       -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
1242       -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
1243       -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
1244       -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
1245       -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52
1246     },
1247
1248     {
1249         7,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
1250
1251       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
1252       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
1253       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
1254       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
1255       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
1256       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
1257       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
1258       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
1259       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
1260       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
1261
1262       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
1263       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53
1264     },
1265
1266     {
1267         7,   54,   54,   54,   54,   54,   54,   54,   54,  -54,
1268       -54,   54,   54,  -54,   54,   54,   54,   54,   54,   54,
1269        54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
1270        54,   54,  -54,  -54,   54,   54,  -54,  -54,  -54,   54,
1271       -54,  -54,  -54,  -54,   54,  -54,   54,  -54,   54,   54,
1272        54,   54,   54,   54,   54,   54,   54,   54,  -54,   54,
1273       -54,  -54,  -54,  -54,   54,   54,   54,   54,   54,   54,
1274        54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
1275
1276        54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
1277        54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
1278        54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
1279        54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
1280        54,   54,   54,   54,  -54,   54,   54,   54
1281     },
1282
1283     {
1284         7,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
1285       -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
1286       -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
1287       -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
1288       -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
1289
1290       -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
1291       -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
1292       -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
1293       -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
1294       -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
1295       -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
1296       -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
1297       -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55
1298     },
1299
1300     {
1301         7,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
1302       -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
1303
1304       -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
1305       -56,  -56,  -56,  -56,  -56,   40,   40,  -56,  -56,   40,
1306       -56,  -56,  -56,  -56,  -56,  -56,   40,  -56,   56,   56,
1307        56,   56,   56,   56,   56,   56,   56,   56,  -56,   40,
1308       -56,  -56,  -56,  -56,   40,   40,   40,   40,   40,   40,
1309        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
1310        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
1311        40,  -56,   40,  -56,   40,   40,  -56,   40,   40,   40,
1312        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
1313        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
1314
1315        40,   40,   40,  -56,  -56,  -56,  -56,  -56
1316     },
1317
1318     } ;
1319
1320 static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
1321 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  ,yyscan_t yyscanner);
1322 static int yy_get_next_buffer (yyscan_t yyscanner );
1323 static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
1324
1325 /* Done after the current pattern has been matched and before the
1326  * corresponding action - sets up yytext.
1327  */
1328 #define YY_DO_BEFORE_ACTION \
1329         yyg->yytext_ptr = yy_bp; \
1330         yyg->yytext_ptr -= yyg->yy_more_len; \
1331         yyleng = (size_t) (yy_cp - yyg->yytext_ptr); \
1332         yyg->yy_hold_char = *yy_cp; \
1333         *yy_cp = '\0'; \
1334         yyg->yy_c_buf_p = yy_cp;
1335
1336 #define YY_NUM_RULES 36
1337 #define YY_END_OF_BUFFER 37
1338 /* This struct is not used in this scanner,
1339    but its presence is necessary. */
1340 struct yy_trans_info
1341         {
1342         flex_int32_t yy_verify;
1343         flex_int32_t yy_nxt;
1344         };
1345 static yyconst flex_int16_t yy_accept[57] =
1346     {   0,
1347         0,    0,    0,    0,   33,   33,   37,   36,   26,   28,
1348        20,   36,   30,   30,   18,    2,   23,   24,   16,   13,
1349        14,   15,   17,   29,   21,    9,    3,    8,   19,    1,
1350        36,   32,   31,   33,   34,   34,   12,    0,   27,   30,
1351        25,    5,   30,   29,   22,   11,    6,    7,   10,    4,
1352         0,   32,   31,   33,   35,   29
1353     } ;
1354
1355 static yyconst yy_state_type yy_NUL_trans[57] =
1356     {   0,
1357         8,    8,   31,   31,   34,   34,    0,    0,    0,    0,
1358         0,   38,    0,    0,    0,    0,    0,    0,    0,    0,
1359         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1360        51,    0,    0,   54,    0,    0,    0,   38,    0,    0,
1361         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1362        51,    0,    0,   54,    0,    0
1363     } ;
1364
1365 /* The intent behind this definition is that it'll catch
1366  * any uses of REJECT which flex missed.
1367  */
1368 #define REJECT reject_used_but_not_detected
1369 #define yymore() (yyg->yy_more_flag = 1)
1370 #define YY_MORE_ADJ yyg->yy_more_len
1371 #define YY_RESTORE_YY_MORE_OFFSET
1372 #line 1 "ast_expr2.fl"
1373 #line 2 "ast_expr2.fl"
1374 /*
1375  * Asterisk -- An open source telephony toolkit.
1376  *
1377  * Copyright (C) 1999 - 2006, Digium, Inc.
1378  *
1379  * Mark Spencer <markster@digium.com>
1380  *
1381  * See http://www.asterisk.org for more information about
1382  * the Asterisk project. Please do not directly contact
1383  * any of the maintainers of this project for assistance;
1384  * the project provides a web site, mailing lists and IRC
1385  * channels for your use.
1386  *
1387  * This program is free software, distributed under the terms of
1388  * the GNU General Public License Version 2. See the LICENSE file
1389  * at the top of the source tree.
1390  */
1391
1392 /*! \file
1393  *
1394  * \brief Dialplan Expression Lexical Scanner
1395  */
1396
1397 #include "asterisk.h"
1398
1399 #include <sys/types.h>
1400 #include <stdio.h>
1401
1402 #ifndef STANDALONE
1403 ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
1404 #else
1405 #ifndef __USE_ISOC99
1406 #define __USE_ISOC99 1
1407 #endif
1408 #endif
1409
1410 #ifdef __USE_ISOC99
1411 #define FP___PRINTF "%.18Lg"
1412 #define FP___FMOD   fmodl
1413 #define FP___STRTOD  strtold
1414 #define FP___TYPE    long double
1415 #else
1416 #define FP___PRINTF "%.16g"
1417 #define FP___FMOD   fmod
1418 #define FP___STRTOD  strtod
1419 #define FP___TYPE    double
1420 #endif
1421
1422 #include <stdlib.h>
1423 #include <string.h>
1424 #include <locale.h>
1425 #include <ctype.h>
1426 #if !defined(SOLARIS) && !defined(__CYGWIN__)
1427 /* #include <err.h> */
1428 #else
1429 #define quad_t int64_t
1430 #endif
1431 #include <errno.h>
1432 #include <regex.h>
1433 #include <limits.h>
1434
1435 #include "asterisk/ast_expr.h"
1436 #include "asterisk/logger.h"
1437 #ifndef STANDALONE
1438 #include "asterisk/strings.h"
1439 #include "asterisk/channel.h"
1440 #endif
1441
1442 enum valtype {
1443         AST_EXPR_number, AST_EXPR_numeric_string, AST_EXPR_string
1444 } ;
1445
1446 struct val {
1447         enum valtype type;
1448         union {
1449                 char *s;
1450                 FP___TYPE i; /* long double or just double if it's a bad day */
1451         } u;
1452 } ;
1453
1454 #include "ast_expr2.h" /* the o/p of the bison on ast_expr2.y */
1455
1456 #define SET_COLUMNS     do {            \
1457         yylloc_param->first_column = (int)(yyg->yytext_r - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf); \
1458         yylloc_param->last_column += yyleng - 1; \
1459         yylloc_param->first_line = yylloc_param->last_line = 1; \
1460         } while (0)
1461
1462 #define SET_STRING      do {            \
1463         yylval_param->val = calloc(1, sizeof(struct val));      \
1464         yylval_param->val->type = AST_EXPR_string;              \
1465         yylval_param->val->u.s = strdup(yytext);                \
1466         } while (0)
1467
1468 #define SET_NUMERIC_STRING      do {    \
1469         yylval_param->val = calloc(1, sizeof(struct val));      \
1470         yylval_param->val->type = AST_EXPR_numeric_string;      \
1471         yylval_param->val->u.s = strdup(yytext);        \
1472         } while (0)
1473
1474 struct parse_io
1475 {
1476         char *string;
1477         struct val *val;
1478         yyscan_t scanner;
1479         struct ast_channel *chan;
1480 };
1481  
1482 void ast_yyset_column(int column_no, yyscan_t yyscanner);
1483 int ast_yyget_column(yyscan_t yyscanner);
1484 static int curlycount = 0;
1485 static char *expr2_token_subst(const char *mess);
1486
1487 #line 1488 "ast_expr2f.c"
1488
1489 #define INITIAL 0
1490 #define var 1
1491 #define trail 2
1492
1493 #ifndef YY_NO_UNISTD_H
1494 /* Special case for "unistd.h", since it is non-ANSI. We include it way
1495  * down here because we want the user's section 1 to have been scanned first.
1496  * The user has a chance to override it with an option.
1497  */
1498 #include <unistd.h>
1499 #endif
1500
1501 #ifndef YY_EXTRA_TYPE
1502 #define YY_EXTRA_TYPE void *
1503 #endif
1504
1505 /* Holds the entire state of the reentrant scanner. */
1506 struct yyguts_t
1507     {
1508
1509     /* User-defined. Not touched by flex. */
1510     YY_EXTRA_TYPE yyextra_r;
1511
1512     /* The rest are the same as the globals declared in the non-reentrant scanner. */
1513     FILE *yyin_r, *yyout_r;
1514     size_t yy_buffer_stack_top; /**< index of top of stack. */
1515     size_t yy_buffer_stack_max; /**< capacity of stack. */
1516     YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
1517     char yy_hold_char;
1518     int yy_n_chars;
1519     int yyleng_r;
1520     char *yy_c_buf_p;
1521     int yy_init;
1522     int yy_start;
1523     int yy_did_buffer_switch_on_eof;
1524     int yy_start_stack_ptr;
1525     int yy_start_stack_depth;
1526     int *yy_start_stack;
1527     yy_state_type yy_last_accepting_state;
1528     char* yy_last_accepting_cpos;
1529
1530     int yylineno_r;
1531     int yy_flex_debug_r;
1532
1533     char *yytext_r;
1534     int yy_more_flag;
1535     int yy_more_len;
1536
1537     YYSTYPE * yylval_r;
1538
1539     YYLTYPE * yylloc_r;
1540
1541     }; /* end struct yyguts_t */
1542
1543 static int yy_init_globals (yyscan_t yyscanner );
1544
1545     /* This must go here because YYSTYPE and YYLTYPE are included
1546      * from bison output in section 1.*/
1547     #    define yylval yyg->yylval_r
1548     
1549     #    define yylloc yyg->yylloc_r
1550     
1551 /* Accessor methods to globals.
1552    These are made visible to non-reentrant scanners for convenience. */
1553
1554 int ast_yylex_destroy (yyscan_t yyscanner );
1555
1556 int ast_yyget_debug (yyscan_t yyscanner );
1557
1558 void ast_yyset_debug (int debug_flag ,yyscan_t yyscanner );
1559
1560 YY_EXTRA_TYPE ast_yyget_extra (yyscan_t yyscanner );
1561
1562 void ast_yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
1563
1564 FILE *ast_yyget_in (yyscan_t yyscanner );
1565
1566 void ast_yyset_in  (FILE * in_str ,yyscan_t yyscanner );
1567
1568 FILE *ast_yyget_out (yyscan_t yyscanner );
1569
1570 void ast_yyset_out  (FILE * out_str ,yyscan_t yyscanner );
1571
1572 int ast_yyget_leng (yyscan_t yyscanner );
1573
1574 char *ast_yyget_text (yyscan_t yyscanner );
1575
1576 int ast_yyget_lineno (yyscan_t yyscanner );
1577
1578 void ast_yyset_lineno (int line_number ,yyscan_t yyscanner );
1579
1580 YYSTYPE * ast_yyget_lval (yyscan_t yyscanner );
1581
1582 void ast_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
1583
1584        YYLTYPE *ast_yyget_lloc (yyscan_t yyscanner );
1585     
1586         void ast_yyset_lloc (YYLTYPE * yylloc_param ,yyscan_t yyscanner );
1587     
1588 /* Macros after this point can all be overridden by user definitions in
1589  * section 1.
1590  */
1591
1592 #ifndef YY_SKIP_YYWRAP
1593 #ifdef __cplusplus
1594 extern "C" int ast_yywrap (yyscan_t yyscanner );
1595 #else
1596 extern int ast_yywrap (yyscan_t yyscanner );
1597 #endif
1598 #endif
1599
1600     static void yyunput (int c,char *buf_ptr  ,yyscan_t yyscanner);
1601     
1602 #ifndef yytext_ptr
1603 static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
1604 #endif
1605
1606 #ifdef YY_NEED_STRLEN
1607 static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
1608 #endif
1609
1610 #ifndef YY_NO_INPUT
1611
1612 #ifdef __cplusplus
1613 static int yyinput (yyscan_t yyscanner );
1614 #else
1615 static int input (yyscan_t yyscanner );
1616 #endif
1617
1618 #endif
1619
1620 /* Amount of stuff to slurp up with each read. */
1621 #ifndef YY_READ_BUF_SIZE
1622 #define YY_READ_BUF_SIZE 8192
1623 #endif
1624
1625 /* Copy whatever the last rule matched to the standard output. */
1626 #ifndef ECHO
1627 /* This used to be an fputs(), but since the string might contain NUL's,
1628  * we now use fwrite().
1629  */
1630 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
1631 #endif
1632
1633 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
1634  * is returned in "result".
1635  */
1636 #ifndef YY_INPUT
1637 #define YY_INPUT(buf,result,max_size) \
1638         errno=0; \
1639         while ( (result = read( fileno(yyin), (char *) buf, max_size )) < 0 ) \
1640         { \
1641                 if( errno != EINTR) \
1642                 { \
1643                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
1644                         break; \
1645                 } \
1646                 errno=0; \
1647                 clearerr(yyin); \
1648         }\
1649 \
1650
1651 #endif
1652
1653 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1654  * we don't want an extra ';' after the "return" because that will cause
1655  * some compilers to complain about unreachable statements.
1656  */
1657 #ifndef yyterminate
1658 #define yyterminate() return YY_NULL
1659 #endif
1660
1661 /* Number of entries by which start-condition stack grows. */
1662 #ifndef YY_START_STACK_INCR
1663 #define YY_START_STACK_INCR 25
1664 #endif
1665
1666 /* Report a fatal error. */
1667 #ifndef YY_FATAL_ERROR
1668 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
1669 #endif
1670
1671 /* end tables serialization structures and prototypes */
1672
1673 /* Default declaration of generated scanner - a define so the user can
1674  * easily add parameters.
1675  */
1676 #ifndef YY_DECL
1677 #define YY_DECL_IS_OURS 1
1678
1679 extern int ast_yylex \
1680                (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);
1681
1682 #define YY_DECL int ast_yylex \
1683                (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
1684 #endif /* !YY_DECL */
1685
1686 /* Code executed at the beginning of each rule, after yytext and yyleng
1687  * have been set up.
1688  */
1689 #ifndef YY_USER_ACTION
1690 #define YY_USER_ACTION
1691 #endif
1692
1693 /* Code executed at the end of each rule. */
1694 #ifndef YY_BREAK
1695 #define YY_BREAK break;
1696 #endif
1697
1698 #define YY_RULE_SETUP \
1699         YY_USER_ACTION
1700
1701 /** The main scanner function which does all the work.
1702  */
1703 YY_DECL
1704 {
1705         register yy_state_type yy_current_state;
1706         register char *yy_cp, *yy_bp;
1707         register int yy_act;
1708     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1709
1710 #line 125 "ast_expr2.fl"
1711
1712
1713 #line 1714 "ast_expr2f.c"
1714
1715     yylval = yylval_param;
1716
1717     yylloc = yylloc_param;
1718
1719         if ( yyg->yy_init )
1720                 {
1721                 yyg->yy_init = 0;
1722
1723 #ifdef YY_USER_INIT
1724                 YY_USER_INIT;
1725 #endif
1726
1727                 if ( ! yyg->yy_start )
1728                         yyg->yy_start = 1;      /* first start state */
1729
1730                 if ( ! yyin )
1731                         yyin = stdin;
1732
1733                 if ( ! yyout )
1734                         yyout = stdout;
1735
1736                 if ( ! YY_CURRENT_BUFFER ) {
1737                         ast_yyensure_buffer_stack (yyscanner);
1738                         YY_CURRENT_BUFFER_LVALUE =
1739                                 ast_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
1740                 }
1741
1742                 ast_yy_load_buffer_state(yyscanner );
1743                 }
1744
1745         while ( 1 )             /* loops until end-of-file is reached */
1746                 {
1747                 yyg->yy_more_len = 0;
1748                 if ( yyg->yy_more_flag )
1749                         {
1750                         yyg->yy_more_len = yyg->yy_c_buf_p - yyg->yytext_ptr;
1751                         yyg->yy_more_flag = 0;
1752                         }
1753                 yy_cp = yyg->yy_c_buf_p;
1754
1755                 /* Support of yytext. */
1756                 *yy_cp = yyg->yy_hold_char;
1757
1758                 /* yy_bp points to the position in yy_ch_buf of the start of
1759                  * the current run.
1760                  */
1761                 yy_bp = yy_cp;
1762
1763                 yy_current_state = yyg->yy_start;
1764 yy_match:
1765                 while ( (yy_current_state = yy_nxt[yy_current_state][ YY_SC_TO_UI(*yy_cp) ]) > 0 )
1766                         {
1767                         if ( yy_accept[yy_current_state] )
1768                                 {
1769                                 yyg->yy_last_accepting_state = yy_current_state;
1770                                 yyg->yy_last_accepting_cpos = yy_cp;
1771                                 }
1772
1773                         ++yy_cp;
1774                         }
1775
1776                 yy_current_state = -yy_current_state;
1777
1778 yy_find_action:
1779                 yy_act = yy_accept[yy_current_state];
1780
1781                 YY_DO_BEFORE_ACTION;
1782
1783 do_action:      /* This label is used only to access EOF actions. */
1784
1785                 switch ( yy_act )
1786         { /* beginning of action switch */
1787                         case 0: /* must back up */
1788                         /* undo the effects of YY_DO_BEFORE_ACTION */
1789                         *yy_cp = yyg->yy_hold_char;
1790                         yy_cp = yyg->yy_last_accepting_cpos + 1;
1791                         yy_current_state = yyg->yy_last_accepting_state;
1792                         goto yy_find_action;
1793
1794 case 1:
1795 YY_RULE_SETUP
1796 #line 127 "ast_expr2.fl"
1797 { SET_COLUMNS; SET_STRING; return TOK_OR;}
1798         YY_BREAK
1799 case 2:
1800 YY_RULE_SETUP
1801 #line 128 "ast_expr2.fl"
1802 { SET_COLUMNS; SET_STRING; return TOK_AND;}
1803         YY_BREAK
1804 case 3:
1805 YY_RULE_SETUP
1806 #line 129 "ast_expr2.fl"
1807 { SET_COLUMNS; SET_STRING; return TOK_EQ;}
1808         YY_BREAK
1809 case 4:
1810 YY_RULE_SETUP
1811 #line 130 "ast_expr2.fl"
1812 { SET_COLUMNS; SET_STRING; return TOK_OR;}
1813         YY_BREAK
1814 case 5:
1815 YY_RULE_SETUP
1816 #line 131 "ast_expr2.fl"
1817 { SET_COLUMNS; SET_STRING; return TOK_AND;}
1818         YY_BREAK
1819 case 6:
1820 YY_RULE_SETUP
1821 #line 132 "ast_expr2.fl"
1822 { SET_COLUMNS; SET_STRING; return TOK_EQ;}
1823         YY_BREAK
1824 case 7:
1825 YY_RULE_SETUP
1826 #line 133 "ast_expr2.fl"
1827 { SET_COLUMNS; SET_STRING; return TOK_EQTILDE;}
1828         YY_BREAK
1829 case 8:
1830 YY_RULE_SETUP
1831 #line 134 "ast_expr2.fl"
1832 { SET_COLUMNS; SET_STRING; return TOK_GT;}
1833         YY_BREAK
1834 case 9:
1835 YY_RULE_SETUP
1836 #line 135 "ast_expr2.fl"
1837 { SET_COLUMNS; SET_STRING; return TOK_LT;}
1838         YY_BREAK
1839 case 10:
1840 YY_RULE_SETUP
1841 #line 136 "ast_expr2.fl"
1842 { SET_COLUMNS; SET_STRING; return TOK_GE;}
1843         YY_BREAK
1844 case 11:
1845 YY_RULE_SETUP
1846 #line 137 "ast_expr2.fl"
1847 { SET_COLUMNS; SET_STRING; return TOK_LE;}
1848         YY_BREAK
1849 case 12:
1850 YY_RULE_SETUP
1851 #line 138 "ast_expr2.fl"
1852 { SET_COLUMNS; SET_STRING; return TOK_NE;}
1853         YY_BREAK
1854 case 13:
1855 YY_RULE_SETUP
1856 #line 139 "ast_expr2.fl"
1857 { SET_COLUMNS; SET_STRING; return TOK_PLUS;}
1858         YY_BREAK
1859 case 14:
1860 YY_RULE_SETUP
1861 #line 140 "ast_expr2.fl"
1862 { SET_COLUMNS; SET_STRING; return TOK_COMMA;}
1863         YY_BREAK
1864 case 15:
1865 YY_RULE_SETUP
1866 #line 141 "ast_expr2.fl"
1867 { SET_COLUMNS; SET_STRING; return TOK_MINUS;}
1868         YY_BREAK
1869 case 16:
1870 YY_RULE_SETUP
1871 #line 142 "ast_expr2.fl"
1872 { SET_COLUMNS; SET_STRING; return TOK_MULT;}
1873         YY_BREAK
1874 case 17:
1875 YY_RULE_SETUP
1876 #line 143 "ast_expr2.fl"
1877 { SET_COLUMNS; SET_STRING; return TOK_DIV;}
1878         YY_BREAK
1879 case 18:
1880 YY_RULE_SETUP
1881 #line 144 "ast_expr2.fl"
1882 { SET_COLUMNS; SET_STRING; return TOK_MOD;}
1883         YY_BREAK
1884 case 19:
1885 YY_RULE_SETUP
1886 #line 145 "ast_expr2.fl"
1887 { SET_COLUMNS; SET_STRING; return TOK_COND;}
1888         YY_BREAK
1889 case 20:
1890 YY_RULE_SETUP
1891 #line 146 "ast_expr2.fl"
1892 { SET_COLUMNS; SET_STRING; return TOK_COMPL;}
1893         YY_BREAK
1894 case 21:
1895 YY_RULE_SETUP
1896 #line 147 "ast_expr2.fl"
1897 { SET_COLUMNS; SET_STRING; return TOK_COLON;}
1898         YY_BREAK
1899 case 22:
1900 YY_RULE_SETUP
1901 #line 148 "ast_expr2.fl"
1902 { SET_COLUMNS; SET_STRING; return TOK_COLONCOLON;}
1903         YY_BREAK
1904 case 23:
1905 YY_RULE_SETUP
1906 #line 149 "ast_expr2.fl"
1907 { SET_COLUMNS; SET_STRING; return TOK_LP;}
1908         YY_BREAK
1909 case 24:
1910 YY_RULE_SETUP
1911 #line 150 "ast_expr2.fl"
1912 { SET_COLUMNS; SET_STRING; return TOK_RP;}
1913         YY_BREAK
1914 case 25:
1915 YY_RULE_SETUP
1916 #line 151 "ast_expr2.fl"
1917 {
1918                 /* gather the contents of ${} expressions, with trailing stuff,
1919                  * into a single TOKEN.
1920                  * They are much more complex now than they used to be
1921                  */
1922                 curlycount = 0;
1923                 BEGIN(var);
1924                 yymore();
1925         }
1926         YY_BREAK
1927 case 26:
1928 YY_RULE_SETUP
1929 #line 161 "ast_expr2.fl"
1930 {}
1931         YY_BREAK
1932 case 27:
1933 /* rule 27 can match eol */
1934 YY_RULE_SETUP
1935 #line 162 "ast_expr2.fl"
1936 {SET_COLUMNS; SET_STRING; return TOKEN;}
1937         YY_BREAK
1938 case 28:
1939 /* rule 28 can match eol */
1940 YY_RULE_SETUP
1941 #line 164 "ast_expr2.fl"
1942 {/* what to do with eol */}
1943         YY_BREAK
1944 case 29:
1945 YY_RULE_SETUP
1946 #line 165 "ast_expr2.fl"
1947 {
1948                 SET_COLUMNS;
1949                 /* the original behavior of the expression parser was
1950                  * to bring in numbers as a numeric string
1951                  */
1952                 SET_NUMERIC_STRING;
1953                 return TOKEN;
1954         }
1955         YY_BREAK
1956 case 30:
1957 YY_RULE_SETUP
1958 #line 174 "ast_expr2.fl"
1959 {
1960                 SET_COLUMNS;
1961                 SET_STRING;
1962                 return TOKEN;
1963         }
1964         YY_BREAK
1965 case 31:
1966 /* rule 31 can match eol */
1967 YY_RULE_SETUP
1968 #line 181 "ast_expr2.fl"
1969 {
1970                 curlycount--;
1971                 if (curlycount < 0) {
1972                         BEGIN(trail);
1973                         yymore();
1974                 } else {
1975                         yymore();
1976                 }
1977         }
1978         YY_BREAK
1979 case 32:
1980 /* rule 32 can match eol */
1981 YY_RULE_SETUP
1982 #line 191 "ast_expr2.fl"
1983 {
1984                 curlycount++;
1985                 yymore();
1986         }
1987         YY_BREAK
1988 case 33:
1989 YY_RULE_SETUP
1990 #line 197 "ast_expr2.fl"
1991 {
1992                 BEGIN(0);
1993                 SET_COLUMNS;
1994                 SET_STRING;
1995                 return TOKEN;
1996         }
1997         YY_BREAK
1998 case 34:
1999 /* rule 34 can match eol */
2000 YY_RULE_SETUP
2001 #line 204 "ast_expr2.fl"
2002 {
2003                 char c = yytext[yyleng-1];
2004                 BEGIN(0);
2005                 unput(c);
2006                 SET_COLUMNS;
2007                 SET_STRING;
2008                 return TOKEN;
2009         }
2010         YY_BREAK
2011 case 35:
2012 YY_RULE_SETUP
2013 #line 213 "ast_expr2.fl"
2014 {
2015                 curlycount = 0;
2016                 BEGIN(var);
2017                 yymore();
2018         }
2019         YY_BREAK
2020 case YY_STATE_EOF(trail):
2021 #line 219 "ast_expr2.fl"
2022 {
2023                 BEGIN(0);
2024                 SET_COLUMNS;
2025                 SET_STRING;
2026                 return TOKEN;
2027                 /*actually, if an expr is only a variable ref, this could happen a LOT */
2028         }
2029         YY_BREAK
2030 case 36:
2031 YY_RULE_SETUP
2032 #line 227 "ast_expr2.fl"
2033 ECHO;
2034         YY_BREAK
2035 #line 2036 "ast_expr2f.c"
2036 case YY_STATE_EOF(INITIAL):
2037 case YY_STATE_EOF(var):
2038         yyterminate();
2039
2040         case YY_END_OF_BUFFER:
2041                 {
2042                 /* Amount of text matched not including the EOB char. */
2043                 int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
2044
2045                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
2046                 *yy_cp = yyg->yy_hold_char;
2047                 YY_RESTORE_YY_MORE_OFFSET
2048
2049                 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
2050                         {
2051                         /* We're scanning a new file or input source.  It's
2052                          * possible that this happened because the user
2053                          * just pointed yyin at a new source and called
2054                          * ast_yylex().  If so, then we have to assure
2055                          * consistency between YY_CURRENT_BUFFER and our
2056                          * globals.  Here is the right place to do so, because
2057                          * this is the first action (other than possibly a
2058                          * back-up) that will match for the new input source.
2059                          */
2060                         yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2061                         YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
2062                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
2063                         }
2064
2065                 /* Note that here we test for yy_c_buf_p "<=" to the position
2066                  * of the first EOB in the buffer, since yy_c_buf_p will
2067                  * already have been incremented past the NUL character
2068                  * (since all states make transitions on EOB to the
2069                  * end-of-buffer state).  Contrast this with the test
2070                  * in input().
2071                  */
2072                 if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
2073                         { /* This was really a NUL. */
2074                         yy_state_type yy_next_state;
2075
2076                         yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
2077
2078                         yy_current_state = yy_get_previous_state( yyscanner );
2079
2080                         /* Okay, we're now positioned to make the NUL
2081                          * transition.  We couldn't have
2082                          * yy_get_previous_state() go ahead and do it
2083                          * for us because it doesn't know how to deal
2084                          * with the possibility of jamming (and we don't
2085                          * want to build jamming into it because then it
2086                          * will run more slowly).
2087                          */
2088
2089                         yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
2090
2091                         yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
2092
2093                         if ( yy_next_state )
2094                                 {
2095                                 /* Consume the NUL. */
2096                                 yy_cp = ++yyg->yy_c_buf_p;
2097                                 yy_current_state = yy_next_state;
2098                                 goto yy_match;
2099                                 }
2100
2101                         else
2102                                 {
2103                                 yy_cp = yyg->yy_c_buf_p;
2104                                 goto yy_find_action;
2105                                 }
2106                         }
2107
2108                 else switch ( yy_get_next_buffer( yyscanner ) )
2109                         {
2110                         case EOB_ACT_END_OF_FILE:
2111                                 {
2112                                 yyg->yy_did_buffer_switch_on_eof = 0;
2113
2114                                 if ( ast_yywrap(yyscanner ) )
2115                                         {
2116                                         /* Note: because we've taken care in
2117                                          * yy_get_next_buffer() to have set up
2118                                          * yytext, we can now set up
2119                                          * yy_c_buf_p so that if some total
2120                                          * hoser (like flex itself) wants to
2121                                          * call the scanner after we return the
2122                                          * YY_NULL, it'll still work - another
2123                                          * YY_NULL will get returned.
2124                                          */
2125                                         yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
2126
2127                                         yy_act = YY_STATE_EOF(YY_START);
2128                                         goto do_action;
2129                                         }
2130
2131                                 else
2132                                         {
2133                                         if ( ! yyg->yy_did_buffer_switch_on_eof )
2134                                                 YY_NEW_FILE;
2135                                         }
2136                                 break;
2137                                 }
2138
2139                         case EOB_ACT_CONTINUE_SCAN:
2140                                 yyg->yy_c_buf_p =
2141                                         yyg->yytext_ptr + yy_amount_of_matched_text;
2142
2143                                 yy_current_state = yy_get_previous_state( yyscanner );
2144
2145                                 yy_cp = yyg->yy_c_buf_p;
2146                                 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
2147                                 goto yy_match;
2148
2149                         case EOB_ACT_LAST_MATCH:
2150                                 yyg->yy_c_buf_p =
2151                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
2152
2153                                 yy_current_state = yy_get_previous_state( yyscanner );
2154
2155                                 yy_cp = yyg->yy_c_buf_p;
2156                                 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
2157                                 goto yy_find_action;
2158                         }
2159                 break;
2160                 }
2161
2162         default:
2163                 YY_FATAL_ERROR(
2164                         "fatal flex scanner internal error--no action found" );
2165         } /* end of action switch */
2166                 } /* end of scanning one token */
2167 } /* end of ast_yylex */
2168
2169 /* yy_get_next_buffer - try to read in a new buffer
2170  *
2171  * Returns a code representing an action:
2172  *      EOB_ACT_LAST_MATCH -
2173  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2174  *      EOB_ACT_END_OF_FILE - end of file
2175  */
2176 static int yy_get_next_buffer (yyscan_t yyscanner)
2177 {
2178     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2179         register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
2180         register char *source = yyg->yytext_ptr;
2181         register int number_to_move, i;
2182         int ret_val;
2183
2184         if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
2185                 YY_FATAL_ERROR(
2186                 "fatal flex scanner internal error--end of buffer missed" );
2187
2188         if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
2189                 { /* Don't try to fill the buffer, so this is an EOF. */
2190                 if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
2191                         {
2192                         /* We matched a single character, the EOB, so
2193                          * treat this as a final EOF.
2194                          */
2195                         return EOB_ACT_END_OF_FILE;
2196                         }
2197
2198                 else
2199                         {
2200                         /* We matched some text prior to the EOB, first
2201                          * process it.
2202                          */
2203                         return EOB_ACT_LAST_MATCH;
2204                         }
2205                 }
2206
2207         /* Try to read more data. */
2208
2209         /* First move last chars to start of buffer. */
2210         number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
2211
2212         for ( i = 0; i < number_to_move; ++i )
2213                 *(dest++) = *(source++);
2214
2215         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2216                 /* don't do the read, it's not guaranteed to return an EOF,
2217                  * just force an EOF
2218                  */
2219                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
2220
2221         else
2222                 {
2223                         int num_to_read =
2224                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
2225
2226                 while ( num_to_read <= 0 )
2227                         { /* Not enough room in the buffer - grow it. */
2228
2229                         /* just a shorter name for the current buffer */
2230                         YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
2231
2232                         int yy_c_buf_p_offset =
2233                                 (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
2234
2235                         if ( b->yy_is_our_buffer )
2236                                 {
2237                                 int new_size = b->yy_buf_size * 2;
2238
2239                                 if ( new_size <= 0 )
2240                                         b->yy_buf_size += b->yy_buf_size / 8;
2241                                 else
2242                                         b->yy_buf_size *= 2;
2243
2244                                 b->yy_ch_buf = (char *)
2245                                         /* Include room in for 2 EOB chars. */
2246                                         ast_yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
2247                                 }
2248                         else
2249                                 /* Can't grow it, we don't own it. */
2250                                 b->yy_ch_buf = 0;
2251
2252                         if ( ! b->yy_ch_buf )
2253                                 YY_FATAL_ERROR(
2254                                 "fatal error - scanner input buffer overflow" );
2255
2256                         yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
2257
2258                         num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
2259                                                 number_to_move - 1;
2260
2261                         }
2262
2263                 if ( num_to_read > YY_READ_BUF_SIZE )
2264                         num_to_read = YY_READ_BUF_SIZE;
2265
2266                 /* Read in more data. */
2267                 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
2268                         yyg->yy_n_chars, num_to_read );
2269
2270                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2271                 }
2272
2273         if ( yyg->yy_n_chars == 0 )
2274                 {
2275                 if ( number_to_move == YY_MORE_ADJ )
2276                         {
2277                         ret_val = EOB_ACT_END_OF_FILE;
2278                         ast_yyrestart(yyin  ,yyscanner);
2279                         }
2280
2281                 else
2282                         {
2283                         ret_val = EOB_ACT_LAST_MATCH;
2284                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
2285                                 YY_BUFFER_EOF_PENDING;
2286                         }
2287                 }
2288
2289         else
2290                 ret_val = EOB_ACT_CONTINUE_SCAN;
2291
2292         yyg->yy_n_chars += number_to_move;
2293         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
2294         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
2295
2296         yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
2297
2298         return ret_val;
2299 }
2300
2301 /* yy_get_previous_state - get the state just before the EOB char was reached */
2302
2303     static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
2304 {
2305         register yy_state_type yy_current_state;
2306         register char *yy_cp;
2307     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2308
2309         yy_current_state = yyg->yy_start;
2310
2311         for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
2312                 {
2313                 if ( *yy_cp )
2314                         {
2315                         yy_current_state = yy_nxt[yy_current_state][YY_SC_TO_UI(*yy_cp)];
2316                         }
2317                 else
2318                         yy_current_state = yy_NUL_trans[yy_current_state];
2319                 if ( yy_accept[yy_current_state] )
2320                         {
2321                         yyg->yy_last_accepting_state = yy_current_state;
2322                         yyg->yy_last_accepting_cpos = yy_cp;
2323                         }
2324                 }
2325
2326         return yy_current_state;
2327 }
2328
2329 /* yy_try_NUL_trans - try to make a transition on the NUL character
2330  *
2331  * synopsis
2332  *      next_state = yy_try_NUL_trans( current_state );
2333  */
2334     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state , yyscan_t yyscanner)
2335 {
2336         register int yy_is_jam;
2337     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2338         register char *yy_cp = yyg->yy_c_buf_p;
2339
2340         yy_current_state = yy_NUL_trans[yy_current_state];
2341         yy_is_jam = (yy_current_state == 0);
2342
2343         if ( ! yy_is_jam )
2344                 {
2345                 if ( yy_accept[yy_current_state] )
2346                         {
2347                         yyg->yy_last_accepting_state = yy_current_state;
2348                         yyg->yy_last_accepting_cpos = yy_cp;
2349                         }
2350                 }
2351
2352         return yy_is_jam ? 0 : yy_current_state;
2353 }
2354
2355     static void yyunput (int c, register char * yy_bp , yyscan_t yyscanner)
2356 {
2357         register char *yy_cp;
2358     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2359
2360     yy_cp = yyg->yy_c_buf_p;
2361
2362         /* undo effects of setting up yytext */
2363         *yy_cp = yyg->yy_hold_char;
2364
2365         if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
2366                 { /* need to shift things up to make room */
2367                 /* +2 for EOB chars. */
2368                 register int number_to_move = yyg->yy_n_chars + 2;
2369                 register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
2370                                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
2371                 register char *source =
2372                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
2373
2374                 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
2375                         *--dest = *--source;
2376
2377                 yy_cp += (int) (dest - source);
2378                 yy_bp += (int) (dest - source);
2379                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
2380                         yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
2381
2382                 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
2383                         YY_FATAL_ERROR( "flex scanner push-back overflow" );
2384                 }
2385
2386         *--yy_cp = (char) c;
2387
2388         yyg->yytext_ptr = yy_bp;
2389         yyg->yy_hold_char = *yy_cp;
2390         yyg->yy_c_buf_p = yy_cp;
2391 }
2392
2393 #ifndef YY_NO_INPUT
2394 #ifdef __cplusplus
2395     static int yyinput (yyscan_t yyscanner)
2396 #else
2397     static int input  (yyscan_t yyscanner)
2398 #endif
2399
2400 {
2401         int c;
2402     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2403
2404         *yyg->yy_c_buf_p = yyg->yy_hold_char;
2405
2406         if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
2407                 {
2408                 /* yy_c_buf_p now points to the character we want to return.
2409                  * If this occurs *before* the EOB characters, then it's a
2410                  * valid NUL; if not, then we've hit the end of the buffer.
2411                  */
2412                 if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
2413                         /* This was really a NUL. */
2414                         *yyg->yy_c_buf_p = '\0';
2415
2416                 else
2417                         { /* need more input */
2418                         int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
2419                         ++yyg->yy_c_buf_p;
2420
2421                         switch ( yy_get_next_buffer( yyscanner ) )
2422                                 {
2423                                 case EOB_ACT_LAST_MATCH:
2424                                         /* This happens because yy_g_n_b()
2425                                          * sees that we've accumulated a
2426                                          * token and flags that we need to
2427                                          * try matching the token before
2428                                          * proceeding.  But for input(),
2429                                          * there's no matching to consider.
2430                                          * So convert the EOB_ACT_LAST_MATCH
2431                                          * to EOB_ACT_END_OF_FILE.
2432                                          */
2433
2434                                         /* Reset buffer status. */
2435                                         ast_yyrestart(yyin ,yyscanner);
2436
2437                                         /*FALLTHROUGH*/
2438
2439                                 case EOB_ACT_END_OF_FILE:
2440                                         {
2441                                         if ( ast_yywrap(yyscanner ) )
2442                                                 return EOF;
2443
2444                                         if ( ! yyg->yy_did_buffer_switch_on_eof )
2445                                                 YY_NEW_FILE;
2446 #ifdef __cplusplus
2447                                         return yyinput(yyscanner);
2448 #else
2449                                         return input(yyscanner);
2450 #endif
2451                                         }
2452
2453                                 case EOB_ACT_CONTINUE_SCAN:
2454                                         yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
2455                                         break;
2456                                 }
2457                         }
2458                 }
2459
2460         c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */
2461         *yyg->yy_c_buf_p = '\0';        /* preserve yytext */
2462         yyg->yy_hold_char = *++yyg->yy_c_buf_p;
2463
2464         return c;
2465 }
2466 #endif  /* ifndef YY_NO_INPUT */
2467
2468 /** Immediately switch to a different input stream.
2469  * @param input_file A readable stream.
2470  * @param yyscanner The scanner object.
2471  * @note This function does not reset the start condition to @c INITIAL .
2472  */
2473     void ast_yyrestart  (FILE * input_file , yyscan_t yyscanner)
2474 {
2475     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2476
2477         if ( ! YY_CURRENT_BUFFER ){
2478         ast_yyensure_buffer_stack (yyscanner);
2479                 YY_CURRENT_BUFFER_LVALUE =
2480             ast_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
2481         }
2482
2483         ast_yy_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
2484         ast_yy_load_buffer_state(yyscanner );
2485 }
2486
2487 /** Switch to a different input buffer.
2488  * @param new_buffer The new input buffer.
2489  * @param yyscanner The scanner object.
2490  */
2491     void ast_yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer , yyscan_t yyscanner)
2492 {
2493     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2494
2495         /* TODO. We should be able to replace this entire function body
2496          * with
2497          *              ast_yypop_buffer_state();
2498          *              ast_yypush_buffer_state(new_buffer);
2499      */
2500         ast_yyensure_buffer_stack (yyscanner);
2501         if ( YY_CURRENT_BUFFER == new_buffer )
2502                 return;
2503
2504         if ( YY_CURRENT_BUFFER )
2505                 {
2506                 /* Flush out information for old buffer. */
2507                 *yyg->yy_c_buf_p = yyg->yy_hold_char;
2508                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
2509                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2510                 }
2511
2512         YY_CURRENT_BUFFER_LVALUE = new_buffer;
2513         ast_yy_load_buffer_state(yyscanner );
2514
2515         /* We don't actually know whether we did this switch during
2516          * EOF (ast_yywrap()) processing, but the only time this flag
2517          * is looked at is after ast_yywrap() is called, so it's safe
2518          * to go ahead and always set it.
2519          */
2520         yyg->yy_did_buffer_switch_on_eof = 1;
2521 }
2522
2523 static void ast_yy_load_buffer_state  (yyscan_t yyscanner)
2524 {
2525     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2526         yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2527         yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
2528         yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
2529         yyg->yy_hold_char = *yyg->yy_c_buf_p;
2530 }
2531
2532 /** Allocate and initialize an input buffer state.
2533  * @param file A readable stream.
2534  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
2535  * @param yyscanner The scanner object.
2536  * @return the allocated buffer state.
2537  */
2538     YY_BUFFER_STATE ast_yy_create_buffer  (FILE * file, int  size , yyscan_t yyscanner)
2539 {
2540         YY_BUFFER_STATE b;
2541     
2542         b = (YY_BUFFER_STATE) ast_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
2543         if ( ! b )
2544                 YY_FATAL_ERROR( "out of dynamic memory in ast_yy_create_buffer()" );
2545
2546         b->yy_buf_size = size;
2547
2548         /* yy_ch_buf has to be 2 characters longer than the size given because
2549          * we need to put in 2 end-of-buffer characters.
2550          */
2551         b->yy_ch_buf = (char *) ast_yyalloc(b->yy_buf_size + 2 ,yyscanner );
2552         if ( ! b->yy_ch_buf )
2553                 YY_FATAL_ERROR( "out of dynamic memory in ast_yy_create_buffer()" );
2554
2555         b->yy_is_our_buffer = 1;
2556
2557         ast_yy_init_buffer(b,file ,yyscanner);
2558
2559         return b;
2560 }
2561
2562 /** Destroy the buffer.
2563  * @param b a buffer created with ast_yy_create_buffer()
2564  * @param yyscanner The scanner object.
2565  */
2566     void ast_yy_delete_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
2567 {
2568     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2569
2570         if ( ! b )
2571                 return;
2572
2573         if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
2574                 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
2575
2576         if ( b->yy_is_our_buffer )
2577                 ast_yyfree((void *) b->yy_ch_buf ,yyscanner );
2578
2579         ast_yyfree((void *) b ,yyscanner );
2580 }
2581
2582 #ifndef __cplusplus
2583 extern int isatty (int );
2584 #endif /* __cplusplus */
2585     
2586 /* Initializes or reinitializes a buffer.
2587  * This function is sometimes called more than once on the same buffer,
2588  * such as during a ast_yyrestart() or at EOF.
2589  */
2590     static void ast_yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file , yyscan_t yyscanner)
2591
2592 {
2593         int oerrno = errno;
2594     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2595
2596         ast_yy_flush_buffer(b ,yyscanner);
2597
2598         b->yy_input_file = file;
2599         b->yy_fill_buffer = 1;
2600
2601     /* If b is the current buffer, then ast_yy_init_buffer was _probably_
2602      * called from ast_yyrestart() or through yy_get_next_buffer.
2603      * In that case, we don't want to reset the lineno or column.
2604      */
2605     if (b != YY_CURRENT_BUFFER){
2606         b->yy_bs_lineno = 1;
2607         b->yy_bs_column = 0;
2608     }
2609
2610         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
2611     
2612         errno = oerrno;
2613 }
2614
2615 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
2616  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
2617  * @param yyscanner The scanner object.
2618  */
2619     void ast_yy_flush_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
2620 {
2621     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2622         if ( ! b )
2623                 return;
2624
2625         b->yy_n_chars = 0;
2626
2627         /* We always need two end-of-buffer characters.  The first causes
2628          * a transition to the end-of-buffer state.  The second causes
2629          * a jam in that state.
2630          */
2631         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
2632         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
2633
2634         b->yy_buf_pos = &b->yy_ch_buf[0];
2635
2636         b->yy_at_bol = 1;
2637         b->yy_buffer_status = YY_BUFFER_NEW;
2638
2639         if ( b == YY_CURRENT_BUFFER )
2640                 ast_yy_load_buffer_state(yyscanner );
2641 }
2642
2643 /** Pushes the new state onto the stack. The new state becomes
2644  *  the current state. This function will allocate the stack
2645  *  if necessary.
2646  *  @param new_buffer The new state.
2647  *  @param yyscanner The scanner object.
2648  */
2649 void ast_yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
2650 {
2651     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2652         if (new_buffer == NULL)
2653                 return;
2654
2655         ast_yyensure_buffer_stack(yyscanner);
2656
2657         /* This block is copied from ast_yy_switch_to_buffer. */
2658         if ( YY_CURRENT_BUFFER )
2659                 {
2660                 /* Flush out information for old buffer. */
2661                 *yyg->yy_c_buf_p = yyg->yy_hold_char;
2662                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
2663                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2664                 }
2665
2666         /* Only push if top exists. Otherwise, replace top. */
2667         if (YY_CURRENT_BUFFER)
2668                 yyg->yy_buffer_stack_top++;
2669         YY_CURRENT_BUFFER_LVALUE = new_buffer;
2670
2671         /* copied from ast_yy_switch_to_buffer. */
2672         ast_yy_load_buffer_state(yyscanner );
2673         yyg->yy_did_buffer_switch_on_eof = 1;
2674 }
2675
2676 /** Removes and deletes the top of the stack, if present.
2677  *  The next element becomes the new top.
2678  *  @param yyscanner The scanner object.
2679  */
2680 void ast_yypop_buffer_state (yyscan_t yyscanner)
2681 {
2682     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2683         if (!YY_CURRENT_BUFFER)
2684                 return;
2685
2686         ast_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
2687         YY_CURRENT_BUFFER_LVALUE = NULL;
2688         if (yyg->yy_buffer_stack_top > 0)
2689                 --yyg->yy_buffer_stack_top;
2690
2691         if (YY_CURRENT_BUFFER) {
2692                 ast_yy_load_buffer_state(yyscanner );
2693                 yyg->yy_did_buffer_switch_on_eof = 1;
2694         }
2695 }
2696
2697 /* Allocates the stack if it does not exist.
2698  *  Guarantees space for at least one push.
2699  */
2700 static void ast_yyensure_buffer_stack (yyscan_t yyscanner)
2701 {
2702         int num_to_alloc;
2703     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2704
2705         if (!yyg->yy_buffer_stack) {
2706
2707                 /* First allocation is just for 2 elements, since we don't know if this
2708                  * scanner will even need a stack. We use 2 instead of 1 to avoid an
2709                  * immediate realloc on the next call.
2710          */
2711                 num_to_alloc = 1;
2712                 yyg->yy_buffer_stack = (struct yy_buffer_state**)ast_yyalloc
2713                                                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
2714                                                                 , yyscanner);
2715                 
2716                 memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
2717                                 
2718                 yyg->yy_buffer_stack_max = num_to_alloc;
2719                 yyg->yy_buffer_stack_top = 0;
2720                 return;
2721         }
2722
2723         if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
2724
2725                 /* Increase the buffer to prepare for a possible push. */
2726                 int grow_size = 8 /* arbitrary grow size */;
2727
2728                 num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
2729                 yyg->yy_buffer_stack = (struct yy_buffer_state**)ast_yyrealloc
2730                                                                 (yyg->yy_buffer_stack,
2731                                                                 num_to_alloc * sizeof(struct yy_buffer_state*)
2732                                                                 , yyscanner);
2733
2734                 /* zero only the new slots.*/
2735                 memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
2736                 yyg->yy_buffer_stack_max = num_to_alloc;
2737         }
2738 }
2739
2740 /** Setup the input buffer state to scan directly from a user-specified character buffer.
2741  * @param base the character buffer
2742  * @param size the size in bytes of the character buffer
2743  * @param yyscanner The scanner object.
2744  * @return the newly allocated buffer state object. 
2745  */
2746 YY_BUFFER_STATE ast_yy_scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscanner)
2747 {
2748         YY_BUFFER_STATE b;
2749     
2750         if ( size < 2 ||
2751              base[size-2] != YY_END_OF_BUFFER_CHAR ||
2752              base[size-1] != YY_END_OF_BUFFER_CHAR )
2753                 /* They forgot to leave room for the EOB's. */
2754                 return 0;
2755
2756         b = (YY_BUFFER_STATE) ast_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
2757         if ( ! b )
2758                 YY_FATAL_ERROR( "out of dynamic memory in ast_yy_scan_buffer()" );
2759
2760         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
2761         b->yy_buf_pos = b->yy_ch_buf = base;
2762         b->yy_is_our_buffer = 0;
2763         b->yy_input_file = 0;
2764         b->yy_n_chars = b->yy_buf_size;
2765         b->yy_is_interactive = 0;
2766         b->yy_at_bol = 1;
2767         b->yy_fill_buffer = 0;
2768         b->yy_buffer_status = YY_BUFFER_NEW;
2769
2770         ast_yy_switch_to_buffer(b ,yyscanner );
2771
2772         return b;
2773 }
2774
2775 /** Setup the input buffer state to scan a string. The next call to ast_yylex() will
2776  * scan from a @e copy of @a str.
2777  * @param str a NUL-terminated string to scan
2778  * @param yyscanner The scanner object.
2779  * @return the newly allocated buffer state object.
2780  * @note If you want to scan bytes that may contain NUL values, then use
2781  *       ast_yy_scan_bytes() instead.
2782  */
2783 YY_BUFFER_STATE ast_yy_scan_string (yyconst char * yy_str , yyscan_t yyscanner)
2784 {
2785     
2786         return ast_yy_scan_bytes(yy_str,strlen(yy_str) ,yyscanner);
2787 }
2788
2789 /** Setup the input buffer state to scan the given bytes. The next call to ast_yylex() will
2790  * scan from a @e copy of @a bytes.
2791  * @param bytes the byte buffer to scan
2792  * @param len the number of bytes in the buffer pointed to by @a bytes.
2793  * @param yyscanner The scanner object.
2794  * @return the newly allocated buffer state object.
2795  */
2796 YY_BUFFER_STATE ast_yy_scan_bytes  (yyconst char * bytes, int  len , yyscan_t yyscanner)
2797 {
2798         YY_BUFFER_STATE b;
2799         char *buf;
2800         yy_size_t n;
2801         int i;
2802     
2803         /* Get memory for full buffer, including space for trailing EOB's. */
2804         n = len + 2;
2805         buf = (char *) ast_yyalloc(n ,yyscanner );
2806         if ( ! buf )
2807                 YY_FATAL_ERROR( "out of dynamic memory in ast_yy_scan_bytes()" );
2808
2809         for ( i = 0; i < len; ++i )
2810                 buf[i] = bytes[i];
2811
2812         buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
2813
2814         b = ast_yy_scan_buffer(buf,n ,yyscanner);
2815         if ( ! b )
2816                 YY_FATAL_ERROR( "bad buffer in ast_yy_scan_bytes()" );
2817
2818         /* It's okay to grow etc. this buffer, and we should throw it
2819          * away when we're done.
2820          */
2821         b->yy_is_our_buffer = 1;
2822
2823         return b;
2824 }
2825
2826 #ifndef YY_EXIT_FAILURE
2827 #define YY_EXIT_FAILURE 2
2828 #endif
2829
2830 static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
2831 {
2832         (void) fprintf( stderr, "%s\n", msg );
2833         exit( YY_EXIT_FAILURE );
2834 }
2835
2836 /* Redefine yyless() so it works in section 3 code. */
2837
2838 #undef yyless
2839 #define yyless(n) \
2840         do \
2841                 { \
2842                 /* Undo effects of setting up yytext. */ \
2843         int yyless_macro_arg = (n); \
2844         YY_LESS_LINENO(yyless_macro_arg);\
2845                 yytext[yyleng] = yyg->yy_hold_char; \
2846                 yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
2847                 yyg->yy_hold_char = *yyg->yy_c_buf_p; \
2848                 *yyg->yy_c_buf_p = '\0'; \
2849                 yyleng = yyless_macro_arg; \
2850                 } \
2851         while ( 0 )
2852
2853 /* Accessor  methods (get/set functions) to struct members. */
2854
2855 /** Get the user-defined data for this scanner.
2856  * @param yyscanner The scanner object.
2857  */
2858 YY_EXTRA_TYPE ast_yyget_extra  (yyscan_t yyscanner)
2859 {
2860     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2861     return yyextra;
2862 }
2863
2864 /** Get the current line number.
2865  * @param yyscanner The scanner object.
2866  */
2867 int ast_yyget_lineno  (yyscan_t yyscanner)
2868 {
2869     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2870     
2871         if (! YY_CURRENT_BUFFER)
2872             return 0;
2873     
2874     return yylineno;
2875 }
2876
2877 /** Get the current column number.
2878  * @param yyscanner The scanner object.
2879  */
2880 int ast_yyget_column  (yyscan_t yyscanner)
2881 {
2882     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2883     
2884         if (! YY_CURRENT_BUFFER)
2885             return 0;
2886     
2887     return yycolumn;
2888 }
2889
2890 /** Get the input stream.
2891  * @param yyscanner The scanner object.
2892  */
2893 FILE *ast_yyget_in  (yyscan_t yyscanner)
2894 {
2895     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2896     return yyin;
2897 }
2898
2899 /** Get the output stream.
2900  * @param yyscanner The scanner object.
2901  */
2902 FILE *ast_yyget_out  (yyscan_t yyscanner)
2903 {
2904     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2905     return yyout;
2906 }
2907
2908 /** Get the length of the current token.
2909  * @param yyscanner The scanner object.
2910  */
2911 int ast_yyget_leng  (yyscan_t yyscanner)
2912 {
2913     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2914     return yyleng;
2915 }
2916
2917 /** Get the current token.
2918  * @param yyscanner The scanner object.
2919  */
2920
2921 char *ast_yyget_text  (yyscan_t yyscanner)
2922 {
2923     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2924     return yytext;
2925 }
2926
2927 /** Set the user-defined data. This data is never touched by the scanner.
2928  * @param user_defined The data to be associated with this scanner.
2929  * @param yyscanner The scanner object.
2930  */
2931 void ast_yyset_extra (YY_EXTRA_TYPE  user_defined , yyscan_t yyscanner)
2932 {
2933     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2934     yyextra = user_defined ;
2935 }
2936
2937 /** Set the current line number.
2938  * @param line_number
2939  * @param yyscanner The scanner object.
2940  */
2941 void ast_yyset_lineno (int  line_number , yyscan_t yyscanner)
2942 {
2943     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2944
2945         /* lineno is only valid if an input buffer exists. */
2946         if (! YY_CURRENT_BUFFER )
2947            yy_fatal_error( "ast_yyset_lineno called with no buffer" , yyscanner); 
2948     
2949     yylineno = line_number;
2950 }
2951
2952 /** Set the current column.
2953  * @param line_number
2954  * @param yyscanner The scanner object.
2955  */
2956 void ast_yyset_column (int  column_no , yyscan_t yyscanner)
2957 {
2958     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2959
2960         /* column is only valid if an input buffer exists. */
2961         if (! YY_CURRENT_BUFFER )
2962            yy_fatal_error( "ast_yyset_column called with no buffer" , yyscanner); 
2963     
2964     yycolumn = column_no;
2965 }
2966
2967 /** Set the input stream. This does not discard the current
2968  * input buffer.
2969  * @param in_str A readable stream.
2970  * @param yyscanner The scanner object.
2971  * @see ast_yy_switch_to_buffer
2972  */
2973 void ast_yyset_in (FILE *  in_str , yyscan_t yyscanner)
2974 {
2975     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2976     yyin = in_str ;
2977 }
2978
2979 void ast_yyset_out (FILE *  out_str , yyscan_t yyscanner)
2980 {
2981     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2982     yyout = out_str ;
2983 }
2984
2985 int ast_yyget_debug  (yyscan_t yyscanner)
2986 {
2987     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2988     return yy_flex_debug;
2989 }
2990
2991 void ast_yyset_debug (int  bdebug , yyscan_t yyscanner)
2992 {
2993     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2994     yy_flex_debug = bdebug ;
2995 }
2996
2997 /* Accessor methods for yylval and yylloc */
2998
2999 YYSTYPE * ast_yyget_lval  (yyscan_t yyscanner)
3000 {
3001     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3002     return yylval;
3003 }
3004
3005 void ast_yyset_lval (YYSTYPE *  yylval_param , yyscan_t yyscanner)
3006 {
3007     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3008     yylval = yylval_param;
3009 }
3010
3011 YYLTYPE *ast_yyget_lloc  (yyscan_t yyscanner)
3012 {
3013     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3014     return yylloc;
3015 }
3016     
3017 void ast_yyset_lloc (YYLTYPE *  yylloc_param , yyscan_t yyscanner)
3018 {
3019     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3020     yylloc = yylloc_param;
3021 }
3022     
3023 static int yy_init_globals (yyscan_t yyscanner)
3024 {
3025     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3026     /* Initialization is the same as for the non-reentrant scanner.
3027        This function is called once per scanner lifetime. */
3028
3029     yyg->yy_buffer_stack = 0;
3030     yyg->yy_buffer_stack_top = 0;
3031     yyg->yy_buffer_stack_max = 0;
3032     yyg->yy_c_buf_p = (char *) 0;
3033     yyg->yy_init = 1;
3034     yyg->yy_start = 0;
3035     yyg->yy_start_stack_ptr = 0;
3036     yyg->yy_start_stack_depth = 0;
3037     yyg->yy_start_stack = (int *) 0;
3038
3039 /* Defined in main.c */
3040 #ifdef YY_STDINIT
3041     yyin = stdin;
3042     yyout = stdout;
3043 #else
3044     yyin = (FILE *) 0;
3045     yyout = (FILE *) 0;
3046 #endif
3047
3048     /* For future reference: Set errno on error, since we are called by
3049      * ast_yylex_init()
3050      */
3051     return 0;
3052 }
3053
3054 /* User-visible API */
3055
3056 /* ast_yylex_init is special because it creates the scanner itself, so it is
3057  * the ONLY reentrant function that doesn't take the scanner as the last argument.
3058  * That's why we explicitly handle the declaration, instead of using our macros.
3059  */
3060
3061 int ast_yylex_init(yyscan_t* ptr_yy_globals)
3062
3063 {
3064     if (ptr_yy_globals == NULL){
3065         errno = EINVAL;
3066         return 1;
3067     }
3068
3069     *ptr_yy_globals = (yyscan_t) ast_yyalloc ( sizeof( struct yyguts_t ), NULL );
3070
3071     if (*ptr_yy_globals == NULL){
3072         errno = ENOMEM;
3073         return 1;
3074     }
3075
3076     memset(*ptr_yy_globals,0,sizeof(struct yyguts_t));
3077
3078     return yy_init_globals ( *ptr_yy_globals );
3079 }
3080
3081 /* ast_yylex_destroy is for both reentrant and non-reentrant scanners. */
3082 int ast_yylex_destroy  (yyscan_t yyscanner)
3083 {
3084     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3085
3086     /* Pop the buffer stack, destroying each element. */
3087         while(YY_CURRENT_BUFFER){
3088                 ast_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
3089                 YY_CURRENT_BUFFER_LVALUE = NULL;
3090                 ast_yypop_buffer_state(yyscanner);
3091         }
3092
3093         /* Destroy the stack itself. */
3094         ast_yyfree(yyg->yy_buffer_stack ,yyscanner);
3095         yyg->yy_buffer_stack = NULL;
3096
3097     /* Destroy the start condition stack. */
3098         ast_yyfree(yyg->yy_start_stack ,yyscanner );
3099         yyg->yy_start_stack = NULL;
3100
3101     /* Destroy the main struct (reentrant only). */
3102     ast_yyfree ( yyscanner , yyscanner );
3103     return 0;
3104 }
3105
3106 /*
3107  * Internal utility routines.
3108  */
3109
3110 #ifndef yytext_ptr
3111 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
3112 {
3113         register int i;
3114     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3115         for ( i = 0; i < n; ++i )
3116                 s1[i] = s2[i];
3117 }
3118 #endif
3119
3120 #ifdef YY_NEED_STRLEN
3121 static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
3122 {
3123         register int n;
3124     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3125         for ( n = 0; s[n]; ++n )
3126                 ;
3127
3128         return n;
3129 }
3130 #endif
3131
3132 void *ast_yyalloc (yy_size_t  size , yyscan_t yyscanner)
3133 {
3134         return (void *) malloc( size );
3135 }
3136
3137 void *ast_yyrealloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
3138 {
3139         /* The cast to (char *) in the following accommodates both
3140          * implementations that use char* generic pointers, and those
3141          * that use void* generic pointers.  It works with the latter
3142          * because both ANSI C and C++ allow castless assignment from
3143          * any pointer type to void*, and deal with argument conversions
3144          * as though doing an assignment.
3145          */
3146         return (void *) realloc( (char *) ptr, size );
3147 }
3148
3149 void ast_yyfree (void * ptr , yyscan_t yyscanner)
3150 {
3151         if(ptr) free( (char *) ptr );   /* see ast_yyrealloc() for (char *) cast */
3152 }
3153
3154 #define YYTABLES_NAME "yytables"
3155
3156 #undef YY_NEW_FILE
3157 #undef YY_FLUSH_BUFFER
3158 #undef yy_set_bol
3159 #undef yy_new_buffer
3160 #undef yy_set_interactive
3161 #undef yytext_ptr
3162 #undef YY_DO_BEFORE_ACTION
3163
3164 #ifdef YY_DECL_IS_OURS
3165 #undef YY_DECL_IS_OURS
3166 #undef YY_DECL
3167 #endif
3168 #line 227 "ast_expr2.fl"
3169
3170
3171
3172 /* I'm putting the interface routine to the whole parse here in the flexer input file
3173    mainly because of all the flexer initialization that has to be done. Shouldn't matter
3174    where it is, as long as it's somewhere. I didn't want to define a prototype for the
3175    ast_yy_scan_string in the .y file, because then, I'd have to define YY_BUFFER_STATE there...
3176         UGH! that would be inappropriate. */
3177
3178 int ast_yyparse(void *); /* need to/should define this prototype for the call to yyparse */
3179 int ast_yyerror(const char *, YYLTYPE *, struct parse_io *); /* likewise */
3180
3181 int ast_expr(char *expr, char *buf, int length, struct ast_channel *chan)
3182 {
3183         struct parse_io io;
3184         int return_value = 0;
3185         
3186         memset(&io, 0, sizeof(io));
3187         io.string = expr;  /* to pass to the error routine */
3188         io.chan = chan;
3189         
3190         ast_yylex_init(&io.scanner);
3191         
3192         ast_yy_scan_string(expr, io.scanner);
3193         
3194         ast_yyparse ((void *) &io);
3195
3196         ast_yylex_destroy(io.scanner);
3197
3198         if (!io.val) {
3199                 if (length > 1) {
3200                         strcpy(buf, "0");
3201                         return_value = 1;
3202                 }
3203         } else {
3204                 if (io.val->type == AST_EXPR_number) {
3205                         int res_length;
3206
3207                         res_length = snprintf(buf, length, FP___PRINTF, io.val->u.i);
3208                         return_value = (res_length <= length) ? res_length : length;
3209                 } else {
3210                         if (io.val->u.s)
3211 #if defined(STANDALONE) || defined(LOW_MEMORY) || defined(STANDALONE_AEL)
3212                                 strncpy(buf, io.val->u.s, length - 1);
3213 #else /* !STANDALONE && !LOW_MEMORY */
3214                                 ast_copy_string(buf, io.val->u.s, length);
3215 #endif /* STANDALONE || LOW_MEMORY */
3216                         else
3217                                 buf[0] = 0;
3218                         return_value = strlen(buf);
3219                         if (io.val->u.s)
3220                                 free(io.val->u.s);
3221                 }
3222                 free(io.val);
3223         }
3224         return return_value;
3225 }
3226
3227
3228 char extra_error_message[4095];
3229 int extra_error_message_supplied = 0;
3230 void  ast_expr_register_extra_error_info(char *message);
3231 void  ast_expr_clear_extra_error_info(void);
3232
3233 void  ast_expr_register_extra_error_info(char *message)
3234 {
3235        extra_error_message_supplied=1;
3236        strcpy(extra_error_message, message);
3237 }
3238
3239 void  ast_expr_clear_extra_error_info(void)
3240 {
3241        extra_error_message_supplied=0;
3242        extra_error_message[0] = 0;
3243 }
3244
3245 static char *expr2_token_equivs1[] = 
3246 {
3247         "TOKEN",
3248         "TOK_COND",
3249         "TOK_COLONCOLON",
3250         "TOK_OR",
3251         "TOK_AND",
3252         "TOK_EQ",
3253         "TOK_GT",
3254         "TOK_LT",
3255         "TOK_GE",
3256         "TOK_LE",
3257         "TOK_NE",
3258         "TOK_PLUS",
3259         "TOK_MINUS",
3260         "TOK_MULT",
3261         "TOK_DIV",
3262         "TOK_MOD",
3263         "TOK_COMPL",
3264         "TOK_COLON",
3265         "TOK_EQTILDE",
3266         "TOK_COMMA",
3267         "TOK_RP",
3268         "TOK_LP"
3269 };
3270
3271 static char *expr2_token_equivs2[] = 
3272 {
3273         "<token>",
3274         "?",
3275         "::",
3276         "|",
3277         "&",
3278         "=",
3279         ">",
3280         "<",
3281         ">=",
3282         "<=",
3283         "!=",
3284         "+",
3285         "-",
3286         "*",
3287         "/",
3288         "%",
3289         "!",
3290         ":",
3291         "=~",
3292         ",",
3293         ")",
3294         "("
3295 };
3296
3297
3298 static char *expr2_token_subst(const char *mess)
3299 {
3300         /* calc a length, malloc, fill, and return; yyerror had better free it! */
3301         int len=0,i;
3302         const char *p;
3303         char *res, *s,*t;
3304         int expr2_token_equivs_entries = sizeof(expr2_token_equivs1)/sizeof(char*);
3305
3306         for (p=mess; *p; p++) {
3307                 for (i=0; i<expr2_token_equivs_entries; i++) {
3308                         if ( strncmp(p,expr2_token_equivs1[i],strlen(expr2_token_equivs1[i])) == 0 )
3309                         {
3310                                 len+=strlen(expr2_token_equivs2[i])+2;
3311                                 p += strlen(expr2_token_equivs1[i])-1;
3312                                 break;
3313                         }
3314                 }
3315                 len++;
3316         }
3317         res = (char*)malloc(len+1);
3318         res[0] = 0;
3319         s = res;
3320         for (p=mess; *p;) {
3321                 int found = 0;
3322                 for (i=0; i<expr2_token_equivs_entries; i++) {
3323                         if ( strncmp(p,expr2_token_equivs1[i],strlen(expr2_token_equivs1[i])) == 0 ) {
3324                                 *s++ = '\'';
3325                                 for (t=expr2_token_equivs2[i]; *t;) {
3326                                         *s++ = *t++;
3327                                 }
3328                                 *s++ = '\'';
3329                                 p += strlen(expr2_token_equivs1[i]);
3330                                 found = 1;
3331                                 break;
3332                         }
3333                 }
3334                 if( !found )
3335                         *s++ = *p++;
3336         }
3337         *s++ = 0;
3338         return res;
3339 }
3340
3341 int ast_yyerror (const char *s,  yyltype *loc, struct parse_io *parseio )
3342 {       
3343         struct yyguts_t * yyg = (struct yyguts_t*)(parseio->scanner);
3344         char spacebuf[8000]; /* best safe than sorry */
3345         char spacebuf2[8000]; /* best safe than sorry */
3346         int i=0;
3347         char *s2 = expr2_token_subst(s);
3348         spacebuf[0] = 0;
3349         
3350         for(i=0;i< (int)(yytext - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf);i++) spacebuf2[i] = ' ';  /* uh... assuming yyg is defined, then I can use the yycolumn macro,
3351                                                                                                                                                                                                 which is the same thing as... get this:
3352                                                                                                         yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]->yy_bs_column
3353                                                                                                         I was tempted to just use yy_buf_pos in the STATE, but..., well:
3354                                                                                                                 a. the yy_buf_pos is the current position in the buffer, which
3355                                                                                                                         may not relate to the entire string/buffer because of the
3356                                                                                                                         buffering.
3357                                                                                                                 b. but, analysis of the situation is that when you use the
3358                                                                                                                         ast_yy_scan_string func, it creates a single buffer the size of
3359                                                                                                                         string, so the two would be the same... 
3360                                                                                                         so, in the end, the yycolumn macro is available, shorter, therefore easier. */
3361         spacebuf2[i++]='^';
3362         spacebuf2[i]= 0;
3363
3364 #ifdef STANDALONE3
3365         /* easier to read in the standalone version */
3366         printf("ast_yyerror(): %s syntax error: %s; Input:\n%s\n%s\n",  
3367                         (extra_error_message_supplied?extra_error_message:""), s2, parseio->string,spacebuf2);
3368 #else
3369         ast_log(LOG_WARNING,"ast_yyerror(): %s syntax error: %s; Input:\n%s\n%s\n",  
3370                         (extra_error_message_supplied?extra_error_message:""), s2, parseio->string,spacebuf2);
3371 #endif
3372 #ifndef STANDALONE
3373         ast_log(LOG_WARNING,"If you have questions, please refer to doc/channelvariables.txt in the asterisk source.\n");
3374 #endif
3375         free(s2);
3376         return(0);
3377 }
3378