Merged revisions 8758 via svnmerge from
[asterisk/asterisk.git] / 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,   13,   21,   13,   22,   23,   23,
355        23,   23,   23,   23,   23,   23,   23,   23,   24,   13,
356        25,   26,   27,   28,   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,   29,    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,   13,   21,   13,   22,   23,   23,
373        23,   23,   23,   23,   23,   23,   23,   23,   24,   13,
374        25,   26,   27,   28,   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,   29,    8,    8,    8
381     },
382
383     {
384         7,   30,   30,   30,   30,   30,   30,   30,   30,   30,
385
386        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
387        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
388        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
389        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
390        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
391        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
392        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
393        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
394        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
395        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
396
397        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
398        30,   30,   30,   31,   30,   32,   30,   30
399     },
400
401     {
402         7,   30,   30,   30,   30,   30,   30,   30,   30,   30,
403        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
404        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
405        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
406        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
407        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
408        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
409        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
410
411        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
412        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
413        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
414        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
415        30,   30,   30,   31,   30,   32,   30,   30
416     },
417
418     {
419         7,   33,   33,   33,   33,   33,   33,   33,   33,   34,
420        34,   33,   33,   34,   33,   33,   33,   33,   33,   33,
421        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
422        33,   33,   34,   34,   33,   33,   35,   34,   34,   33,
423        34,   34,   34,   34,   33,   34,   33,   34,   33,   33,
424
425        33,   33,   33,   33,   33,   33,   33,   33,   34,   33,
426        34,   34,   34,   34,   33,   33,   33,   33,   33,   33,
427        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
428        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
429        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
430        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
431        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
432        33,   33,   33,   33,   34,   33,   33,   33
433     },
434
435     {
436         7,   33,   33,   33,   33,   33,   33,   33,   33,   34,
437        34,   33,   33,   34,   33,   33,   33,   33,   33,   33,
438
439        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
440        33,   33,   34,   34,   33,   33,   35,   34,   34,   33,
441        34,   34,   34,   34,   33,   34,   33,   34,   33,   33,
442        33,   33,   33,   33,   33,   33,   33,   33,   34,   33,
443        34,   34,   34,   34,   33,   33,   33,   33,   33,   33,
444        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
445        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
446        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
447        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
448        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
449
450        33,   33,   33,   33,   34,   33,   33,   33
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,   36,  -11,   36,   36,   36,  -11,   36,
527       -11,  -11,  -11,  -11,   36,  -11,   36,  -11,   36,   36,
528        36,   36,   36,   36,   36,   36,   36,   36,  -11,   36,
529       -11,   37,  -11,  -11,   36,   36,   36,   36,   36,   36,
530
531        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
532        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
533        36,  -11,   36,  -11,   36,   36,  -11,   36,   36,   36,
534        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
535        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
536        36,   36,   36,  -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,   36,  -13,   36,   36,   36,  -13,   36,
562       -13,  -13,  -13,  -13,   36,  -13,   36,  -13,   36,   36,
563        36,   36,   36,   36,   36,   36,   36,   36,  -13,   36,
564       -13,  -13,  -13,  -13,   36,   36,   36,   36,   36,   36,
565        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
566        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
567        36,  -13,   36,  -13,   36,   36,  -13,   36,   36,   36,
568        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
569
570        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
571        36,   36,   36,  -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,   36,  -14,   36,   36,   36,  -14,   36,
579       -14,  -14,  -14,  -14,   36,  -14,   36,  -14,   36,   36,
580        36,   36,   36,   36,   36,   36,   36,   36,  -14,   36,
581       -14,  -14,  -14,  -14,   36,   36,   36,   36,   36,   36,
582        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
583
584        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
585        36,  -14,   36,  -14,   36,   36,  -14,   36,   36,   36,
586        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
587        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
588        36,   36,   36,   40,  -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,   36,  -15,   36,   36,   36,  -15,   36,
596       -15,  -15,  -15,  -15,   36,  -15,   36,  -15,   36,   36,
597
598        36,   36,   36,   36,   36,   36,   36,   36,  -15,   36,
599       -15,  -15,  -15,  -15,   36,   36,   36,   36,   36,   36,
600        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
601        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
602        36,  -15,   36,  -15,   36,   36,  -15,   36,   36,   36,
603        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
604        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
605        36,   36,   36,  -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,  -16,  -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,   36,  -23,   36,   36,   36,  -23,   36,
735       -23,  -23,  -23,  -23,   36,  -23,   36,  -23,   41,   41,
736        41,   41,   41,   41,   41,   41,   41,   41,  -23,   36,
737       -23,  -23,  -23,  -23,   36,   36,   36,   36,   36,   36,
738        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
739        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
740        36,  -23,   36,  -23,   36,   36,  -23,   36,   36,   36,
741        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
742
743        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
744        36,   36,   36,  -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,  -24,  -24,  -24,  -24,  -24,
752       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
753       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,   42,  -24,
754       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
755       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
756
757       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
758       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
759       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
760       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
761       -24,  -24,  -24,  -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,  -25,  -25,
772       -25,   43,  -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,  -26,  -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,   44,  -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,  -27,  -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,  -28,  -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,   45,   45,   45,   45,   45,   45,   45,   45,   45,
853        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
854        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
855        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
856        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
857        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
858        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
859        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
860        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
861        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
862
863        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
864        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
865        45,   45,   45,   46,   45,   47,   45,   45
866     },
867
868     {
869         7,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
870       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
871       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
872       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
873       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
874       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
875       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
876
877       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
878       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
879       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
880       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
881       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
882       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31
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,   48,   48,   48,   48,   48,   48,   48,   48,  -33,
904
905       -33,   48,   48,  -33,   48,   48,   48,   48,   48,   48,
906        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
907        48,   48,  -33,  -33,   48,   48,  -33,  -33,  -33,   48,
908       -33,  -33,  -33,  -33,   48,  -33,   48,  -33,   48,   48,
909        48,   48,   48,   48,   48,   48,   48,   48,  -33,   48,
910       -33,  -33,  -33,  -33,   48,   48,   48,   48,   48,   48,
911        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
912        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
913        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
914        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
915
916        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
917        48,   48,   48,   48,  -33,   48,   48,   48
918     },
919
920     {
921         7,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
922       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
923       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
924       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
925       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
926       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
927       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
928       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
929
930       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
931       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
932       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
933       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
934       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34
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,   49,  -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,  -36,  -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,   36,  -41,   36,   36,   36,  -41,   36,
1046       -41,  -41,  -41,  -41,   36,  -41,   36,  -41,   41,   41,
1047        41,   41,   41,   41,   41,   41,   41,   41,  -41,   36,
1048       -41,  -41,  -41,  -41,   36,   36,   36,   36,   36,   36,
1049
1050        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
1051        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
1052        36,  -41,   36,  -41,   36,   36,  -41,   36,   36,   36,
1053        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
1054        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
1055        36,   36,   36,  -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,  -43,  -43,  -43,  -43,  -43,
1081       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1082       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1083       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1084       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1085       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1086       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1087       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1088
1089       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1090       -43,  -43,  -43,  -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,  -44,  -44,  -44,  -44,  -44,
1098       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1099       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1100       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1101       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1102
1103       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1104       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1105       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1106       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1107       -44,  -44,  -44,  -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,   46,   45,   47,   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
1199 static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
1200 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  ,yyscan_t yyscanner);
1201 static int yy_get_next_buffer (yyscan_t yyscanner );
1202 static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
1203
1204 /* Done after the current pattern has been matched and before the
1205  * corresponding action - sets up yytext.
1206  */
1207 #define YY_DO_BEFORE_ACTION \
1208         yyg->yytext_ptr = yy_bp; \
1209         yyg->yytext_ptr -= yyg->yy_more_len; \
1210         yyleng = (size_t) (yy_cp - yyg->yytext_ptr); \
1211         yyg->yy_hold_char = *yy_cp; \
1212         *yy_cp = '\0'; \
1213         yyg->yy_c_buf_p = yy_cp;
1214
1215 #define YY_NUM_RULES 30
1216 #define YY_END_OF_BUFFER 31
1217 /* This struct is not used in this scanner,
1218    but its presence is necessary. */
1219 struct yy_trans_info
1220         {
1221         flex_int32_t yy_verify;
1222         flex_int32_t yy_nxt;
1223         };
1224 static yyconst flex_int16_t yy_accept[50] =
1225     {   0,
1226         0,    0,    0,    0,   27,   27,   31,   30,   20,   22,
1227        24,   30,   24,   24,   13,    2,   17,   18,   11,    9,
1228        10,   12,   23,   15,    5,    3,    4,   14,    1,   30,
1229        26,   25,   27,   28,   28,   24,    8,    0,   21,   19,
1230        23,   16,    7,    6,    0,   26,   25,   27,   29
1231     } ;
1232
1233 static yyconst yy_state_type yy_NUL_trans[50] =
1234     {   0,
1235         8,    8,   30,   30,   33,   33,    0,    0,    0,    0,
1236         0,   38,    0,    0,    0,    0,    0,    0,    0,    0,
1237         0,    0,    0,    0,    0,    0,    0,    0,    0,   45,
1238         0,    0,   48,    0,    0,    0,    0,   38,    0,    0,
1239         0,    0,    0,    0,   45,    0,    0,   48,    0
1240     } ;
1241
1242 /* The intent behind this definition is that it'll catch
1243  * any uses of REJECT which flex missed.
1244  */
1245 #define REJECT reject_used_but_not_detected
1246 #define yymore() (yyg->yy_more_flag = 1)
1247 #define YY_MORE_ADJ yyg->yy_more_len
1248 #define YY_RESTORE_YY_MORE_OFFSET
1249 #line 1 "ast_expr2.fl"
1250 #line 2 "ast_expr2.fl"
1251 /*! \file
1252  *
1253  * \brief Dialplan Expression Parser
1254  */
1255
1256 #include <sys/types.h>
1257 #include <stdio.h>
1258 #include <stdlib.h>
1259 #include <string.h>
1260 #include <locale.h>
1261 #include <ctype.h>
1262 #if !defined(SOLARIS) && !defined(__CYGWIN__)
1263 #include <err.h>
1264 #else
1265 #define quad_t int64_t
1266 #endif
1267 #include <errno.h>
1268 #include <regex.h>
1269 #include <limits.h>
1270 #include <asterisk/ast_expr.h>
1271 #include <asterisk/logger.h>
1272 #include <asterisk/strings.h>
1273
1274 enum valtype {
1275         AST_EXPR_integer, AST_EXPR_numeric_string, AST_EXPR_string
1276 } ;
1277
1278 struct val {
1279         enum valtype type;
1280         union {
1281                 char *s;
1282                 quad_t i;
1283         } u;
1284 } ;
1285
1286 #include "ast_expr2.h" /* the o/p of the bison on ast_expr2.y */
1287
1288 #define SET_COLUMNS yylloc_param->first_column = (int)(yyg->yytext_r - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf);yylloc_param->last_column = yylloc_param->last_column + yyleng - 1; yylloc_param->first_line = yylloc_param->last_line = 1
1289 #define SET_STRING yylval_param->val = (struct val *)calloc(sizeof(struct val),1); yylval_param->val->type = AST_EXPR_string; yylval_param->val->u.s = strdup(yytext);
1290 #define SET_NUMERIC_STRING yylval_param->val = (struct val *)calloc(sizeof(struct val),1); yylval_param->val->type = AST_EXPR_numeric_string; yylval_param->val->u.s = strdup(yytext);
1291
1292 struct parse_io
1293 {
1294         char *string;
1295         struct val *val;
1296         yyscan_t scanner;
1297 };
1298  
1299 void ast_yyset_column(int column_no, yyscan_t yyscanner);
1300 int ast_yyget_column(yyscan_t yyscanner);
1301 static int curlycount = 0;
1302
1303 #line 1304 "ast_expr2f.c"
1304
1305 #define INITIAL 0
1306 #define var 1
1307 #define trail 2
1308
1309 /* Special case for "unistd.h", since it is non-ANSI. We include it way
1310  * down here because we want the user's section 1 to have been scanned first.
1311  * The user has a chance to override it with an option.
1312  */
1313 #include <unistd.h>
1314
1315 #ifndef YY_EXTRA_TYPE
1316 #define YY_EXTRA_TYPE void *
1317 #endif
1318
1319 /* Holds the entire state of the reentrant scanner. */
1320 struct yyguts_t
1321     {
1322
1323     /* User-defined. Not touched by flex. */
1324     YY_EXTRA_TYPE yyextra_r;
1325
1326     /* The rest are the same as the globals declared in the non-reentrant scanner. */
1327     FILE *yyin_r, *yyout_r;
1328     size_t yy_buffer_stack_top; /**< index of top of stack. */
1329     size_t yy_buffer_stack_max; /**< capacity of stack. */
1330     YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
1331     char yy_hold_char;
1332     int yy_n_chars;
1333     int yyleng_r;
1334     char *yy_c_buf_p;
1335     int yy_init;
1336     int yy_start;
1337     int yy_did_buffer_switch_on_eof;
1338     int yy_start_stack_ptr;
1339     int yy_start_stack_depth;
1340     int *yy_start_stack;
1341     yy_state_type yy_last_accepting_state;
1342     char* yy_last_accepting_cpos;
1343
1344     int yylineno_r;
1345     int yy_flex_debug_r;
1346
1347     char *yytext_r;
1348     int yy_more_flag;
1349     int yy_more_len;
1350
1351     YYSTYPE * yylval_r;
1352
1353     YYLTYPE * yylloc_r;
1354
1355     }; /* end struct yyguts_t */
1356
1357     /* This must go here because YYSTYPE and YYLTYPE are included
1358      * from bison output in section 1.*/
1359     #    define yylval yyg->yylval_r
1360     
1361     #    define yylloc yyg->yylloc_r
1362     
1363 /* Accessor methods to globals.
1364    These are made visible to non-reentrant scanners for convenience. */
1365
1366 int ast_yylex_destroy (yyscan_t yyscanner );
1367
1368 int ast_yyget_debug (yyscan_t yyscanner );
1369
1370 void ast_yyset_debug (int debug_flag ,yyscan_t yyscanner );
1371
1372 YY_EXTRA_TYPE ast_yyget_extra (yyscan_t yyscanner );
1373
1374 void ast_yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
1375
1376 FILE *ast_yyget_in (yyscan_t yyscanner );
1377
1378 void ast_yyset_in  (FILE * in_str ,yyscan_t yyscanner );
1379
1380 FILE *ast_yyget_out (yyscan_t yyscanner );
1381
1382 void ast_yyset_out  (FILE * out_str ,yyscan_t yyscanner );
1383
1384 int ast_yyget_leng (yyscan_t yyscanner );
1385
1386 char *ast_yyget_text (yyscan_t yyscanner );
1387
1388 int ast_yyget_lineno (yyscan_t yyscanner );
1389
1390 void ast_yyset_lineno (int line_number ,yyscan_t yyscanner );
1391
1392 YYSTYPE * ast_yyget_lval (yyscan_t yyscanner );
1393
1394 void ast_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
1395
1396        YYLTYPE *ast_yyget_lloc (yyscan_t yyscanner );
1397     
1398         void ast_yyset_lloc (YYLTYPE * yylloc_param ,yyscan_t yyscanner );
1399     
1400 /* Macros after this point can all be overridden by user definitions in
1401  * section 1.
1402  */
1403
1404 #ifndef YY_SKIP_YYWRAP
1405 #ifdef __cplusplus
1406 extern "C" int ast_yywrap (yyscan_t yyscanner );
1407 #else
1408 extern int ast_yywrap (yyscan_t yyscanner );
1409 #endif
1410 #endif
1411
1412     static void yyunput (int c,char *buf_ptr  ,yyscan_t yyscanner);
1413     
1414 #ifndef yytext_ptr
1415 static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
1416 #endif
1417
1418 #ifdef YY_NEED_STRLEN
1419 static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
1420 #endif
1421
1422 #ifndef YY_NO_INPUT
1423
1424 #ifdef __cplusplus
1425 static int yyinput (yyscan_t yyscanner );
1426 #else
1427 static int input (yyscan_t yyscanner );
1428 #endif
1429
1430 #endif
1431
1432 /* Amount of stuff to slurp up with each read. */
1433 #ifndef YY_READ_BUF_SIZE
1434 #define YY_READ_BUF_SIZE 8192
1435 #endif
1436
1437 /* Copy whatever the last rule matched to the standard output. */
1438 #ifndef ECHO
1439 /* This used to be an fputs(), but since the string might contain NUL's,
1440  * we now use fwrite().
1441  */
1442 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
1443 #endif
1444
1445 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
1446  * is returned in "result".
1447  */
1448 #ifndef YY_INPUT
1449 #define YY_INPUT(buf,result,max_size) \
1450         errno=0; \
1451         while ( (result = read( fileno(yyin), (char *) buf, max_size )) < 0 ) \
1452         { \
1453                 if( errno != EINTR) \
1454                 { \
1455                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
1456                         break; \
1457                 } \
1458                 errno=0; \
1459                 clearerr(yyin); \
1460         }\
1461 \
1462
1463 #endif
1464
1465 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1466  * we don't want an extra ';' after the "return" because that will cause
1467  * some compilers to complain about unreachable statements.
1468  */
1469 #ifndef yyterminate
1470 #define yyterminate() return YY_NULL
1471 #endif
1472
1473 /* Number of entries by which start-condition stack grows. */
1474 #ifndef YY_START_STACK_INCR
1475 #define YY_START_STACK_INCR 25
1476 #endif
1477
1478 /* Report a fatal error. */
1479 #ifndef YY_FATAL_ERROR
1480 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
1481 #endif
1482
1483 /* end tables serialization structures and prototypes */
1484
1485 /* Default declaration of generated scanner - a define so the user can
1486  * easily add parameters.
1487  */
1488 #ifndef YY_DECL
1489 #define YY_DECL_IS_OURS 1
1490
1491 extern int ast_yylex (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);
1492
1493 #define YY_DECL int ast_yylex (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
1494 #endif /* !YY_DECL */
1495
1496 /* Code executed at the beginning of each rule, after yytext and yyleng
1497  * have been set up.
1498  */
1499 #ifndef YY_USER_ACTION
1500 #define YY_USER_ACTION
1501 #endif
1502
1503 /* Code executed at the end of each rule. */
1504 #ifndef YY_BREAK
1505 #define YY_BREAK break;
1506 #endif
1507
1508 #define YY_RULE_SETUP \
1509         YY_USER_ACTION
1510
1511 /** The main scanner function which does all the work.
1512  */
1513 YY_DECL
1514 {
1515         register yy_state_type yy_current_state;
1516         register char *yy_cp, *yy_bp;
1517         register int yy_act;
1518     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1519
1520 #line 64 "ast_expr2.fl"
1521
1522
1523 #line 1524 "ast_expr2f.c"
1524
1525     yylval = yylval_param;
1526
1527     yylloc = yylloc_param;
1528
1529         if ( yyg->yy_init )
1530                 {
1531                 yyg->yy_init = 0;
1532
1533 #ifdef YY_USER_INIT
1534                 YY_USER_INIT;
1535 #endif
1536
1537                 if ( ! yyg->yy_start )
1538                         yyg->yy_start = 1;      /* first start state */
1539
1540                 if ( ! yyin )
1541                         yyin = stdin;
1542
1543                 if ( ! yyout )
1544                         yyout = stdout;
1545
1546                 if ( ! YY_CURRENT_BUFFER ) {
1547                         ast_yyensure_buffer_stack (yyscanner);
1548                         YY_CURRENT_BUFFER_LVALUE =
1549                                 ast_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
1550                 }
1551
1552                 ast_yy_load_buffer_state(yyscanner );
1553                 }
1554
1555         while ( 1 )             /* loops until end-of-file is reached */
1556                 {
1557                 yyg->yy_more_len = 0;
1558                 if ( yyg->yy_more_flag )
1559                         {
1560                         yyg->yy_more_len = yyg->yy_c_buf_p - yyg->yytext_ptr;
1561                         yyg->yy_more_flag = 0;
1562                         }
1563                 yy_cp = yyg->yy_c_buf_p;
1564
1565                 /* Support of yytext. */
1566                 *yy_cp = yyg->yy_hold_char;
1567
1568                 /* yy_bp points to the position in yy_ch_buf of the start of
1569                  * the current run.
1570                  */
1571                 yy_bp = yy_cp;
1572
1573                 yy_current_state = yyg->yy_start;
1574 yy_match:
1575                 while ( (yy_current_state = yy_nxt[yy_current_state][ YY_SC_TO_UI(*yy_cp) ]) > 0 )
1576                         {
1577                         if ( yy_accept[yy_current_state] )
1578                                 {
1579                                 yyg->yy_last_accepting_state = yy_current_state;
1580                                 yyg->yy_last_accepting_cpos = yy_cp;
1581                                 }
1582
1583                         ++yy_cp;
1584                         }
1585
1586                 yy_current_state = -yy_current_state;
1587
1588 yy_find_action:
1589                 yy_act = yy_accept[yy_current_state];
1590
1591                 YY_DO_BEFORE_ACTION;
1592
1593 do_action:      /* This label is used only to access EOF actions. */
1594
1595                 switch ( yy_act )
1596         { /* beginning of action switch */
1597                         case 0: /* must back up */
1598                         /* undo the effects of YY_DO_BEFORE_ACTION */
1599                         *yy_cp = yyg->yy_hold_char;
1600                         yy_cp = yyg->yy_last_accepting_cpos + 1;
1601                         yy_current_state = yyg->yy_last_accepting_state;
1602                         goto yy_find_action;
1603
1604 case 1:
1605 YY_RULE_SETUP
1606 #line 66 "ast_expr2.fl"
1607 { SET_COLUMNS; SET_STRING; return TOK_OR;}
1608         YY_BREAK
1609 case 2:
1610 YY_RULE_SETUP
1611 #line 67 "ast_expr2.fl"
1612 { SET_COLUMNS; SET_STRING; return TOK_AND;}
1613         YY_BREAK
1614 case 3:
1615 YY_RULE_SETUP
1616 #line 68 "ast_expr2.fl"
1617 { SET_COLUMNS; SET_STRING; return TOK_EQ;}
1618         YY_BREAK
1619 case 4:
1620 YY_RULE_SETUP
1621 #line 69 "ast_expr2.fl"
1622 { SET_COLUMNS; SET_STRING; return TOK_GT;}
1623         YY_BREAK
1624 case 5:
1625 YY_RULE_SETUP
1626 #line 70 "ast_expr2.fl"
1627 { SET_COLUMNS; SET_STRING; return TOK_LT;}
1628         YY_BREAK
1629 case 6:
1630 YY_RULE_SETUP
1631 #line 71 "ast_expr2.fl"
1632 { SET_COLUMNS; SET_STRING; return TOK_GE;}
1633         YY_BREAK
1634 case 7:
1635 YY_RULE_SETUP
1636 #line 72 "ast_expr2.fl"
1637 { SET_COLUMNS; SET_STRING; return TOK_LE;}
1638         YY_BREAK
1639 case 8:
1640 YY_RULE_SETUP
1641 #line 73 "ast_expr2.fl"
1642 { SET_COLUMNS; SET_STRING; return TOK_NE;}
1643         YY_BREAK
1644 case 9:
1645 YY_RULE_SETUP
1646 #line 74 "ast_expr2.fl"
1647 { SET_COLUMNS; SET_STRING; return TOK_PLUS;}
1648         YY_BREAK
1649 case 10:
1650 YY_RULE_SETUP
1651 #line 75 "ast_expr2.fl"
1652 { SET_COLUMNS; SET_STRING; return TOK_MINUS;}
1653         YY_BREAK
1654 case 11:
1655 YY_RULE_SETUP
1656 #line 76 "ast_expr2.fl"
1657 { SET_COLUMNS; SET_STRING; return TOK_MULT;}
1658         YY_BREAK
1659 case 12:
1660 YY_RULE_SETUP
1661 #line 77 "ast_expr2.fl"
1662 { SET_COLUMNS; SET_STRING; return TOK_DIV;}
1663         YY_BREAK
1664 case 13:
1665 YY_RULE_SETUP
1666 #line 78 "ast_expr2.fl"
1667 { SET_COLUMNS; SET_STRING; return TOK_MOD;}
1668         YY_BREAK
1669 case 14:
1670 YY_RULE_SETUP
1671 #line 79 "ast_expr2.fl"
1672 { SET_COLUMNS; SET_STRING; return TOK_COND;}
1673         YY_BREAK
1674 case 15:
1675 YY_RULE_SETUP
1676 #line 80 "ast_expr2.fl"
1677 { SET_COLUMNS; SET_STRING; return TOK_COLON;}
1678         YY_BREAK
1679 case 16:
1680 YY_RULE_SETUP
1681 #line 81 "ast_expr2.fl"
1682 { SET_COLUMNS; SET_STRING; return TOK_COLONCOLON;}
1683         YY_BREAK
1684 case 17:
1685 YY_RULE_SETUP
1686 #line 82 "ast_expr2.fl"
1687 { SET_COLUMNS; SET_STRING; return TOK_LP;}
1688         YY_BREAK
1689 case 18:
1690 YY_RULE_SETUP
1691 #line 83 "ast_expr2.fl"
1692 { SET_COLUMNS; SET_STRING; return TOK_RP;}
1693         YY_BREAK
1694 case 19:
1695 YY_RULE_SETUP
1696 #line 84 "ast_expr2.fl"
1697 {/* gather the contents of ${} expressions, with trailing stuff, into a single TOKEN. They are much more complex now than they used to be */
1698                        curlycount = 0; BEGIN(var); yymore();}
1699         YY_BREAK
1700 case 20:
1701 YY_RULE_SETUP
1702 #line 87 "ast_expr2.fl"
1703 {}
1704         YY_BREAK
1705 case 21:
1706 /* rule 21 can match eol */
1707 YY_RULE_SETUP
1708 #line 88 "ast_expr2.fl"
1709 {SET_COLUMNS; SET_STRING; return TOKEN;}
1710         YY_BREAK
1711 case 22:
1712 /* rule 22 can match eol */
1713 YY_RULE_SETUP
1714 #line 90 "ast_expr2.fl"
1715 {/* what to do with eol */}
1716         YY_BREAK
1717 case 23:
1718 YY_RULE_SETUP
1719 #line 91 "ast_expr2.fl"
1720 {   SET_COLUMNS;  /* the original behavior of the expression parser was to bring in numbers as a numeric string */
1721                                 SET_NUMERIC_STRING;
1722                                 return TOKEN;}
1723         YY_BREAK
1724 case 24:
1725 YY_RULE_SETUP
1726 #line 94 "ast_expr2.fl"
1727 {SET_COLUMNS; SET_STRING; return TOKEN;}
1728         YY_BREAK
1729 case 25:
1730 /* rule 25 can match eol */
1731 YY_RULE_SETUP
1732 #line 96 "ast_expr2.fl"
1733 {curlycount--; if(curlycount < 0){ BEGIN(trail);  yymore();} else {  yymore();}}
1734         YY_BREAK
1735 case 26:
1736 /* rule 26 can match eol */
1737 YY_RULE_SETUP
1738 #line 97 "ast_expr2.fl"
1739 {curlycount++; yymore();  }
1740         YY_BREAK
1741 case 27:
1742 YY_RULE_SETUP
1743 #line 98 "ast_expr2.fl"
1744 {BEGIN(0); SET_COLUMNS; SET_STRING; return TOKEN;}
1745         YY_BREAK
1746 case 28:
1747 /* rule 28 can match eol */
1748 YY_RULE_SETUP
1749 #line 99 "ast_expr2.fl"
1750 {char c = yytext[yyleng-1]; BEGIN(0); unput(c); SET_COLUMNS; SET_STRING; return TOKEN;}
1751         YY_BREAK
1752 case 29:
1753 YY_RULE_SETUP
1754 #line 100 "ast_expr2.fl"
1755 {curlycount = 0; BEGIN(var); yymore();  }
1756         YY_BREAK
1757 case YY_STATE_EOF(trail):
1758 #line 101 "ast_expr2.fl"
1759 {BEGIN(0); SET_COLUMNS; SET_STRING; return TOKEN; /* actually, if an expr is only a variable ref, this could happen a LOT */}
1760         YY_BREAK
1761 case 30:
1762 YY_RULE_SETUP
1763 #line 103 "ast_expr2.fl"
1764 ECHO;
1765         YY_BREAK
1766 #line 1767 "ast_expr2f.c"
1767 case YY_STATE_EOF(INITIAL):
1768 case YY_STATE_EOF(var):
1769         yyterminate();
1770
1771         case YY_END_OF_BUFFER:
1772                 {
1773                 /* Amount of text matched not including the EOB char. */
1774                 int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
1775
1776                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
1777                 *yy_cp = yyg->yy_hold_char;
1778                 YY_RESTORE_YY_MORE_OFFSET
1779
1780                 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
1781                         {
1782                         /* We're scanning a new file or input source.  It's
1783                          * possible that this happened because the user
1784                          * just pointed yyin at a new source and called
1785                          * ast_yylex().  If so, then we have to assure
1786                          * consistency between YY_CURRENT_BUFFER and our
1787                          * globals.  Here is the right place to do so, because
1788                          * this is the first action (other than possibly a
1789                          * back-up) that will match for the new input source.
1790                          */
1791                         yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
1792                         YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
1793                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
1794                         }
1795
1796                 /* Note that here we test for yy_c_buf_p "<=" to the position
1797                  * of the first EOB in the buffer, since yy_c_buf_p will
1798                  * already have been incremented past the NUL character
1799                  * (since all states make transitions on EOB to the
1800                  * end-of-buffer state).  Contrast this with the test
1801                  * in input().
1802                  */
1803                 if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
1804                         { /* This was really a NUL. */
1805                         yy_state_type yy_next_state;
1806
1807                         yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
1808
1809                         yy_current_state = yy_get_previous_state( yyscanner );
1810
1811                         /* Okay, we're now positioned to make the NUL
1812                          * transition.  We couldn't have
1813                          * yy_get_previous_state() go ahead and do it
1814                          * for us because it doesn't know how to deal
1815                          * with the possibility of jamming (and we don't
1816                          * want to build jamming into it because then it
1817                          * will run more slowly).
1818                          */
1819
1820                         yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
1821
1822                         yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
1823
1824                         if ( yy_next_state )
1825                                 {
1826                                 /* Consume the NUL. */
1827                                 yy_cp = ++yyg->yy_c_buf_p;
1828                                 yy_current_state = yy_next_state;
1829                                 goto yy_match;
1830                                 }
1831
1832                         else
1833                                 {
1834                                 yy_cp = yyg->yy_c_buf_p;
1835                                 goto yy_find_action;
1836                                 }
1837                         }
1838
1839                 else switch ( yy_get_next_buffer( yyscanner ) )
1840                         {
1841                         case EOB_ACT_END_OF_FILE:
1842                                 {
1843                                 yyg->yy_did_buffer_switch_on_eof = 0;
1844
1845                                 if ( ast_yywrap(yyscanner ) )
1846                                         {
1847                                         /* Note: because we've taken care in
1848                                          * yy_get_next_buffer() to have set up
1849                                          * yytext, we can now set up
1850                                          * yy_c_buf_p so that if some total
1851                                          * hoser (like flex itself) wants to
1852                                          * call the scanner after we return the
1853                                          * YY_NULL, it'll still work - another
1854                                          * YY_NULL will get returned.
1855                                          */
1856                                         yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
1857
1858                                         yy_act = YY_STATE_EOF(YY_START);
1859                                         goto do_action;
1860                                         }
1861
1862                                 else
1863                                         {
1864                                         if ( ! yyg->yy_did_buffer_switch_on_eof )
1865                                                 YY_NEW_FILE;
1866                                         }
1867                                 break;
1868                                 }
1869
1870                         case EOB_ACT_CONTINUE_SCAN:
1871                                 yyg->yy_c_buf_p =
1872                                         yyg->yytext_ptr + yy_amount_of_matched_text;
1873
1874                                 yy_current_state = yy_get_previous_state( yyscanner );
1875
1876                                 yy_cp = yyg->yy_c_buf_p;
1877                                 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
1878                                 goto yy_match;
1879
1880                         case EOB_ACT_LAST_MATCH:
1881                                 yyg->yy_c_buf_p =
1882                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
1883
1884                                 yy_current_state = yy_get_previous_state( yyscanner );
1885
1886                                 yy_cp = yyg->yy_c_buf_p;
1887                                 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
1888                                 goto yy_find_action;
1889                         }
1890                 break;
1891                 }
1892
1893         default:
1894                 YY_FATAL_ERROR(
1895                         "fatal flex scanner internal error--no action found" );
1896         } /* end of action switch */
1897                 } /* end of scanning one token */
1898 } /* end of ast_yylex */
1899
1900 /* yy_get_next_buffer - try to read in a new buffer
1901  *
1902  * Returns a code representing an action:
1903  *      EOB_ACT_LAST_MATCH -
1904  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
1905  *      EOB_ACT_END_OF_FILE - end of file
1906  */
1907 static int yy_get_next_buffer (yyscan_t yyscanner)
1908 {
1909     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1910         register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
1911         register char *source = yyg->yytext_ptr;
1912         register int number_to_move, i;
1913         int ret_val;
1914
1915         if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
1916                 YY_FATAL_ERROR(
1917                 "fatal flex scanner internal error--end of buffer missed" );
1918
1919         if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
1920                 { /* Don't try to fill the buffer, so this is an EOF. */
1921                 if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
1922                         {
1923                         /* We matched a single character, the EOB, so
1924                          * treat this as a final EOF.
1925                          */
1926                         return EOB_ACT_END_OF_FILE;
1927                         }
1928
1929                 else
1930                         {
1931                         /* We matched some text prior to the EOB, first
1932                          * process it.
1933                          */
1934                         return EOB_ACT_LAST_MATCH;
1935                         }
1936                 }
1937
1938         /* Try to read more data. */
1939
1940         /* First move last chars to start of buffer. */
1941         number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
1942
1943         for ( i = 0; i < number_to_move; ++i )
1944                 *(dest++) = *(source++);
1945
1946         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
1947                 /* don't do the read, it's not guaranteed to return an EOF,
1948                  * just force an EOF
1949                  */
1950                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
1951
1952         else
1953                 {
1954                         size_t num_to_read =
1955                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
1956
1957                 while ( num_to_read <= 0 )
1958                         { /* Not enough room in the buffer - grow it. */
1959
1960                         /* just a shorter name for the current buffer */
1961                         YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
1962
1963                         int yy_c_buf_p_offset =
1964                                 (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
1965
1966                         if ( b->yy_is_our_buffer )
1967                                 {
1968                                 int new_size = b->yy_buf_size * 2;
1969
1970                                 if ( new_size <= 0 )
1971                                         b->yy_buf_size += b->yy_buf_size / 8;
1972                                 else
1973                                         b->yy_buf_size *= 2;
1974
1975                                 b->yy_ch_buf = (char *)
1976                                         /* Include room in for 2 EOB chars. */
1977                                         ast_yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
1978                                 }
1979                         else
1980                                 /* Can't grow it, we don't own it. */
1981                                 b->yy_ch_buf = 0;
1982
1983                         if ( ! b->yy_ch_buf )
1984                                 YY_FATAL_ERROR(
1985                                 "fatal error - scanner input buffer overflow" );
1986
1987                         yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
1988
1989                         num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
1990                                                 number_to_move - 1;
1991
1992                         }
1993
1994                 if ( num_to_read > YY_READ_BUF_SIZE )
1995                         num_to_read = YY_READ_BUF_SIZE;
1996
1997                 /* Read in more data. */
1998                 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
1999                         yyg->yy_n_chars, num_to_read );
2000
2001                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2002                 }
2003
2004         if ( yyg->yy_n_chars == 0 )
2005                 {
2006                 if ( number_to_move == YY_MORE_ADJ )
2007                         {
2008                         ret_val = EOB_ACT_END_OF_FILE;
2009                         ast_yyrestart(yyin  ,yyscanner);
2010                         }
2011
2012                 else
2013                         {
2014                         ret_val = EOB_ACT_LAST_MATCH;
2015                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
2016                                 YY_BUFFER_EOF_PENDING;
2017                         }
2018                 }
2019
2020         else
2021                 ret_val = EOB_ACT_CONTINUE_SCAN;
2022
2023         yyg->yy_n_chars += number_to_move;
2024         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
2025         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
2026
2027         yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
2028
2029         return ret_val;
2030 }
2031
2032 /* yy_get_previous_state - get the state just before the EOB char was reached */
2033
2034     static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
2035 {
2036         register yy_state_type yy_current_state;
2037         register char *yy_cp;
2038     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2039
2040         yy_current_state = yyg->yy_start;
2041
2042         for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
2043                 {
2044                 if ( *yy_cp )
2045                         {
2046                         yy_current_state = yy_nxt[yy_current_state][YY_SC_TO_UI(*yy_cp)];
2047                         }
2048                 else
2049                         yy_current_state = yy_NUL_trans[yy_current_state];
2050                 if ( yy_accept[yy_current_state] )
2051                         {
2052                         yyg->yy_last_accepting_state = yy_current_state;
2053                         yyg->yy_last_accepting_cpos = yy_cp;
2054                         }
2055                 }
2056
2057         return yy_current_state;
2058 }
2059
2060 /* yy_try_NUL_trans - try to make a transition on the NUL character
2061  *
2062  * synopsis
2063  *      next_state = yy_try_NUL_trans( current_state );
2064  */
2065     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state , yyscan_t yyscanner)
2066 {
2067         register int yy_is_jam;
2068     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2069         register char *yy_cp = yyg->yy_c_buf_p;
2070
2071         yy_current_state = yy_NUL_trans[yy_current_state];
2072         yy_is_jam = (yy_current_state == 0);
2073
2074         if ( ! yy_is_jam )
2075                 {
2076                 if ( yy_accept[yy_current_state] )
2077                         {
2078                         yyg->yy_last_accepting_state = yy_current_state;
2079                         yyg->yy_last_accepting_cpos = yy_cp;
2080                         }
2081                 }
2082
2083         return yy_is_jam ? 0 : yy_current_state;
2084 }
2085
2086     static void yyunput (int c, register char * yy_bp , yyscan_t yyscanner)
2087 {
2088         register char *yy_cp;
2089     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2090
2091     yy_cp = yyg->yy_c_buf_p;
2092
2093         /* undo effects of setting up yytext */
2094         *yy_cp = yyg->yy_hold_char;
2095
2096         if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
2097                 { /* need to shift things up to make room */
2098                 /* +2 for EOB chars. */
2099                 register int number_to_move = yyg->yy_n_chars + 2;
2100                 register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
2101                                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
2102                 register char *source =
2103                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
2104
2105                 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
2106                         *--dest = *--source;
2107
2108                 yy_cp += (int) (dest - source);
2109                 yy_bp += (int) (dest - source);
2110                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
2111                         yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
2112
2113                 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
2114                         YY_FATAL_ERROR( "flex scanner push-back overflow" );
2115                 }
2116
2117         *--yy_cp = (char) c;
2118
2119         yyg->yytext_ptr = yy_bp;
2120         yyg->yy_hold_char = *yy_cp;
2121         yyg->yy_c_buf_p = yy_cp;
2122 }
2123
2124 #ifndef YY_NO_INPUT
2125 #ifdef __cplusplus
2126     static int yyinput (yyscan_t yyscanner)
2127 #else
2128     static int input  (yyscan_t yyscanner)
2129 #endif
2130
2131 {
2132         int c;
2133     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2134
2135         *yyg->yy_c_buf_p = yyg->yy_hold_char;
2136
2137         if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
2138                 {
2139                 /* yy_c_buf_p now points to the character we want to return.
2140                  * If this occurs *before* the EOB characters, then it's a
2141                  * valid NUL; if not, then we've hit the end of the buffer.
2142                  */
2143                 if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
2144                         /* This was really a NUL. */
2145                         *yyg->yy_c_buf_p = '\0';
2146
2147                 else
2148                         { /* need more input */
2149                         int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
2150                         ++yyg->yy_c_buf_p;
2151
2152                         switch ( yy_get_next_buffer( yyscanner ) )
2153                                 {
2154                                 case EOB_ACT_LAST_MATCH:
2155                                         /* This happens because yy_g_n_b()
2156                                          * sees that we've accumulated a
2157                                          * token and flags that we need to
2158                                          * try matching the token before
2159                                          * proceeding.  But for input(),
2160                                          * there's no matching to consider.
2161                                          * So convert the EOB_ACT_LAST_MATCH
2162                                          * to EOB_ACT_END_OF_FILE.
2163                                          */
2164
2165                                         /* Reset buffer status. */
2166                                         ast_yyrestart(yyin ,yyscanner);
2167
2168                                         /*FALLTHROUGH*/
2169
2170                                 case EOB_ACT_END_OF_FILE:
2171                                         {
2172                                         if ( ast_yywrap(yyscanner ) )
2173                                                 return EOF;
2174
2175                                         if ( ! yyg->yy_did_buffer_switch_on_eof )
2176                                                 YY_NEW_FILE;
2177 #ifdef __cplusplus
2178                                         return yyinput(yyscanner);
2179 #else
2180                                         return input(yyscanner);
2181 #endif
2182                                         }
2183
2184                                 case EOB_ACT_CONTINUE_SCAN:
2185                                         yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
2186                                         break;
2187                                 }
2188                         }
2189                 }
2190
2191         c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */
2192         *yyg->yy_c_buf_p = '\0';        /* preserve yytext */
2193         yyg->yy_hold_char = *++yyg->yy_c_buf_p;
2194
2195         return c;
2196 }
2197 #endif  /* ifndef YY_NO_INPUT */
2198
2199 /** Immediately switch to a different input stream.
2200  * @param input_file A readable stream.
2201  * @param yyscanner The scanner object.
2202  * @note This function does not reset the start condition to @c INITIAL .
2203  */
2204     void ast_yyrestart  (FILE * input_file , yyscan_t yyscanner)
2205 {
2206     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2207
2208         if ( ! YY_CURRENT_BUFFER ){
2209         ast_yyensure_buffer_stack (yyscanner);
2210                 YY_CURRENT_BUFFER_LVALUE =
2211             ast_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
2212         }
2213
2214         ast_yy_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
2215         ast_yy_load_buffer_state(yyscanner );
2216 }
2217
2218 /** Switch to a different input buffer.
2219  * @param new_buffer The new input buffer.
2220  * @param yyscanner The scanner object.
2221  */
2222     void ast_yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer , yyscan_t yyscanner)
2223 {
2224     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2225
2226         /* TODO. We should be able to replace this entire function body
2227          * with
2228          *              ast_yypop_buffer_state();
2229          *              ast_yypush_buffer_state(new_buffer);
2230      */
2231         ast_yyensure_buffer_stack (yyscanner);
2232         if ( YY_CURRENT_BUFFER == new_buffer )
2233                 return;
2234
2235         if ( YY_CURRENT_BUFFER )
2236                 {
2237                 /* Flush out information for old buffer. */
2238                 *yyg->yy_c_buf_p = yyg->yy_hold_char;
2239                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
2240                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2241                 }
2242
2243         YY_CURRENT_BUFFER_LVALUE = new_buffer;
2244         ast_yy_load_buffer_state(yyscanner );
2245
2246         /* We don't actually know whether we did this switch during
2247          * EOF (ast_yywrap()) processing, but the only time this flag
2248          * is looked at is after ast_yywrap() is called, so it's safe
2249          * to go ahead and always set it.
2250          */
2251         yyg->yy_did_buffer_switch_on_eof = 1;
2252 }
2253
2254 static void ast_yy_load_buffer_state  (yyscan_t yyscanner)
2255 {
2256     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2257         yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2258         yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
2259         yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
2260         yyg->yy_hold_char = *yyg->yy_c_buf_p;
2261 }
2262
2263 /** Allocate and initialize an input buffer state.
2264  * @param file A readable stream.
2265  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
2266  * @param yyscanner The scanner object.
2267  * @return the allocated buffer state.
2268  */
2269     YY_BUFFER_STATE ast_yy_create_buffer  (FILE * file, int  size , yyscan_t yyscanner)
2270 {
2271         YY_BUFFER_STATE b;
2272     
2273         b = (YY_BUFFER_STATE) ast_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
2274         if ( ! b )
2275                 YY_FATAL_ERROR( "out of dynamic memory in ast_yy_create_buffer()" );
2276
2277         b->yy_buf_size = size;
2278
2279         /* yy_ch_buf has to be 2 characters longer than the size given because
2280          * we need to put in 2 end-of-buffer characters.
2281          */
2282         b->yy_ch_buf = (char *) ast_yyalloc(b->yy_buf_size + 2 ,yyscanner );
2283         if ( ! b->yy_ch_buf )
2284                 YY_FATAL_ERROR( "out of dynamic memory in ast_yy_create_buffer()" );
2285
2286         b->yy_is_our_buffer = 1;
2287
2288         ast_yy_init_buffer(b,file ,yyscanner);
2289
2290         return b;
2291 }
2292
2293 /** Destroy the buffer.
2294  * @param b a buffer created with ast_yy_create_buffer()
2295  * @param yyscanner The scanner object.
2296  */
2297     void ast_yy_delete_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
2298 {
2299     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2300
2301         if ( ! b )
2302                 return;
2303
2304         if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
2305                 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
2306
2307         if ( b->yy_is_our_buffer )
2308                 ast_yyfree((void *) b->yy_ch_buf ,yyscanner );
2309
2310         ast_yyfree((void *) b ,yyscanner );
2311 }
2312
2313 #ifndef __cplusplus
2314 extern int isatty (int );
2315 #endif /* __cplusplus */
2316     
2317 /* Initializes or reinitializes a buffer.
2318  * This function is sometimes called more than once on the same buffer,
2319  * such as during a ast_yyrestart() or at EOF.
2320  */
2321     static void ast_yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file , yyscan_t yyscanner)
2322
2323 {
2324         int oerrno = errno;
2325     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2326
2327         ast_yy_flush_buffer(b ,yyscanner);
2328
2329         b->yy_input_file = file;
2330         b->yy_fill_buffer = 1;
2331
2332     /* If b is the current buffer, then ast_yy_init_buffer was _probably_
2333      * called from ast_yyrestart() or through yy_get_next_buffer.
2334      * In that case, we don't want to reset the lineno or column.
2335      */
2336     if (b != YY_CURRENT_BUFFER){
2337         b->yy_bs_lineno = 1;
2338         b->yy_bs_column = 0;
2339     }
2340
2341         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
2342     
2343         errno = oerrno;
2344 }
2345
2346 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
2347  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
2348  * @param yyscanner The scanner object.
2349  */
2350     void ast_yy_flush_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
2351 {
2352     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2353         if ( ! b )
2354                 return;
2355
2356         b->yy_n_chars = 0;
2357
2358         /* We always need two end-of-buffer characters.  The first causes
2359          * a transition to the end-of-buffer state.  The second causes
2360          * a jam in that state.
2361          */
2362         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
2363         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
2364
2365         b->yy_buf_pos = &b->yy_ch_buf[0];
2366
2367         b->yy_at_bol = 1;
2368         b->yy_buffer_status = YY_BUFFER_NEW;
2369
2370         if ( b == YY_CURRENT_BUFFER )
2371                 ast_yy_load_buffer_state(yyscanner );
2372 }
2373
2374 /** Pushes the new state onto the stack. The new state becomes
2375  *  the current state. This function will allocate the stack
2376  *  if necessary.
2377  *  @param new_buffer The new state.
2378  *  @param yyscanner The scanner object.
2379  */
2380 void ast_yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
2381 {
2382     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2383         if (new_buffer == NULL)
2384                 return;
2385
2386         ast_yyensure_buffer_stack(yyscanner);
2387
2388         /* This block is copied from ast_yy_switch_to_buffer. */
2389         if ( YY_CURRENT_BUFFER )
2390                 {
2391                 /* Flush out information for old buffer. */
2392                 *yyg->yy_c_buf_p = yyg->yy_hold_char;
2393                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
2394                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2395                 }
2396
2397         /* Only push if top exists. Otherwise, replace top. */
2398         if (YY_CURRENT_BUFFER)
2399                 yyg->yy_buffer_stack_top++;
2400         YY_CURRENT_BUFFER_LVALUE = new_buffer;
2401
2402         /* copied from ast_yy_switch_to_buffer. */
2403         ast_yy_load_buffer_state(yyscanner );
2404         yyg->yy_did_buffer_switch_on_eof = 1;
2405 }
2406
2407 /** Removes and deletes the top of the stack, if present.
2408  *  The next element becomes the new top.
2409  *  @param yyscanner The scanner object.
2410  */
2411 void ast_yypop_buffer_state (yyscan_t yyscanner)
2412 {
2413     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2414         if (!YY_CURRENT_BUFFER)
2415                 return;
2416
2417         ast_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
2418         YY_CURRENT_BUFFER_LVALUE = NULL;
2419         if (yyg->yy_buffer_stack_top > 0)
2420                 --yyg->yy_buffer_stack_top;
2421
2422         if (YY_CURRENT_BUFFER) {
2423                 ast_yy_load_buffer_state(yyscanner );
2424                 yyg->yy_did_buffer_switch_on_eof = 1;
2425         }
2426 }
2427
2428 /* Allocates the stack if it does not exist.
2429  *  Guarantees space for at least one push.
2430  */
2431 static void ast_yyensure_buffer_stack (yyscan_t yyscanner)
2432 {
2433         int num_to_alloc;
2434     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2435
2436         if (!yyg->yy_buffer_stack) {
2437
2438                 /* First allocation is just for 2 elements, since we don't know if this
2439                  * scanner will even need a stack. We use 2 instead of 1 to avoid an
2440                  * immediate realloc on the next call.
2441          */
2442                 num_to_alloc = 1;
2443                 yyg->yy_buffer_stack = (struct yy_buffer_state**)ast_yyalloc
2444                                                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
2445                                                                 , yyscanner);
2446                 
2447                 memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
2448                                 
2449                 yyg->yy_buffer_stack_max = num_to_alloc;
2450                 yyg->yy_buffer_stack_top = 0;
2451                 return;
2452         }
2453
2454         if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
2455
2456                 /* Increase the buffer to prepare for a possible push. */
2457                 int grow_size = 8 /* arbitrary grow size */;
2458
2459                 num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
2460                 yyg->yy_buffer_stack = (struct yy_buffer_state**)ast_yyrealloc
2461                                                                 (yyg->yy_buffer_stack,
2462                                                                 num_to_alloc * sizeof(struct yy_buffer_state*)
2463                                                                 , yyscanner);
2464
2465                 /* zero only the new slots.*/
2466                 memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
2467                 yyg->yy_buffer_stack_max = num_to_alloc;
2468         }
2469 }
2470
2471 /** Setup the input buffer state to scan directly from a user-specified character buffer.
2472  * @param base the character buffer
2473  * @param size the size in bytes of the character buffer
2474  * @param yyscanner The scanner object.
2475  * @return the newly allocated buffer state object. 
2476  */
2477 YY_BUFFER_STATE ast_yy_scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscanner)
2478 {
2479         YY_BUFFER_STATE b;
2480     
2481         if ( size < 2 ||
2482              base[size-2] != YY_END_OF_BUFFER_CHAR ||
2483              base[size-1] != YY_END_OF_BUFFER_CHAR )
2484                 /* They forgot to leave room for the EOB's. */
2485                 return 0;
2486
2487         b = (YY_BUFFER_STATE) ast_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
2488         if ( ! b )
2489                 YY_FATAL_ERROR( "out of dynamic memory in ast_yy_scan_buffer()" );
2490
2491         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
2492         b->yy_buf_pos = b->yy_ch_buf = base;
2493         b->yy_is_our_buffer = 0;
2494         b->yy_input_file = 0;
2495         b->yy_n_chars = b->yy_buf_size;
2496         b->yy_is_interactive = 0;
2497         b->yy_at_bol = 1;
2498         b->yy_fill_buffer = 0;
2499         b->yy_buffer_status = YY_BUFFER_NEW;
2500
2501         ast_yy_switch_to_buffer(b ,yyscanner );
2502
2503         return b;
2504 }
2505
2506 /** Setup the input buffer state to scan a string. The next call to ast_yylex() will
2507  * scan from a @e copy of @a str.
2508  * @param str a NUL-terminated string to scan
2509  * @param yyscanner The scanner object.
2510  * @return the newly allocated buffer state object.
2511  * @note If you want to scan bytes that may contain NUL values, then use
2512  *       ast_yy_scan_bytes() instead.
2513  */
2514 YY_BUFFER_STATE ast_yy_scan_string (yyconst char * str , yyscan_t yyscanner)
2515 {
2516     
2517         return ast_yy_scan_bytes(str,strlen(str) ,yyscanner);
2518 }
2519
2520 /** Setup the input buffer state to scan the given bytes. The next call to ast_yylex() will
2521  * scan from a @e copy of @a bytes.
2522  * @param bytes the byte buffer to scan
2523  * @param len the number of bytes in the buffer pointed to by @a bytes.
2524  * @param yyscanner The scanner object.
2525  * @return the newly allocated buffer state object.
2526  */
2527 YY_BUFFER_STATE ast_yy_scan_bytes  (yyconst char * bytes, int  len , yyscan_t yyscanner)
2528 {
2529         YY_BUFFER_STATE b;
2530         char *buf;
2531         yy_size_t n;
2532         int i;
2533     
2534         /* Get memory for full buffer, including space for trailing EOB's. */
2535         n = len + 2;
2536         buf = (char *) ast_yyalloc(n ,yyscanner );
2537         if ( ! buf )
2538                 YY_FATAL_ERROR( "out of dynamic memory in ast_yy_scan_bytes()" );
2539
2540         for ( i = 0; i < len; ++i )
2541                 buf[i] = bytes[i];
2542
2543         buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
2544
2545         b = ast_yy_scan_buffer(buf,n ,yyscanner);
2546         if ( ! b )
2547                 YY_FATAL_ERROR( "bad buffer in ast_yy_scan_bytes()" );
2548
2549         /* It's okay to grow etc. this buffer, and we should throw it
2550          * away when we're done.
2551          */
2552         b->yy_is_our_buffer = 1;
2553
2554         return b;
2555 }
2556
2557 #ifndef YY_EXIT_FAILURE
2558 #define YY_EXIT_FAILURE 2
2559 #endif
2560
2561 static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
2562 {
2563         (void) fprintf( stderr, "%s\n", msg );
2564         exit( YY_EXIT_FAILURE );
2565 }
2566
2567 /* Redefine yyless() so it works in section 3 code. */
2568
2569 #undef yyless
2570 #define yyless(n) \
2571         do \
2572                 { \
2573                 /* Undo effects of setting up yytext. */ \
2574         int yyless_macro_arg = (n); \
2575         YY_LESS_LINENO(yyless_macro_arg);\
2576                 yytext[yyleng] = yyg->yy_hold_char; \
2577                 yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
2578                 yyg->yy_hold_char = *yyg->yy_c_buf_p; \
2579                 *yyg->yy_c_buf_p = '\0'; \
2580                 yyleng = yyless_macro_arg; \
2581                 } \
2582         while ( 0 )
2583
2584 /* Accessor  methods (get/set functions) to struct members. */
2585
2586 /** Get the user-defined data for this scanner.
2587  * @param yyscanner The scanner object.
2588  */
2589 YY_EXTRA_TYPE ast_yyget_extra  (yyscan_t yyscanner)
2590 {
2591     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2592     return yyextra;
2593 }
2594
2595 /** Get the current line number.
2596  * @param yyscanner The scanner object.
2597  */
2598 int ast_yyget_lineno  (yyscan_t yyscanner)
2599 {
2600     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2601     
2602         if (! YY_CURRENT_BUFFER)
2603             return 0;
2604     
2605     return yylineno;
2606 }
2607
2608 /** Get the current column number.
2609  * @param yyscanner The scanner object.
2610  */
2611 int ast_yyget_column  (yyscan_t yyscanner)
2612 {
2613     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2614     
2615         if (! YY_CURRENT_BUFFER)
2616             return 0;
2617     
2618     return yycolumn;
2619 }
2620
2621 /** Get the input stream.
2622  * @param yyscanner The scanner object.
2623  */
2624 FILE *ast_yyget_in  (yyscan_t yyscanner)
2625 {
2626     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2627     return yyin;
2628 }
2629
2630 /** Get the output stream.
2631  * @param yyscanner The scanner object.
2632  */
2633 FILE *ast_yyget_out  (yyscan_t yyscanner)
2634 {
2635     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2636     return yyout;
2637 }
2638
2639 /** Get the length of the current token.
2640  * @param yyscanner The scanner object.
2641  */
2642 int ast_yyget_leng  (yyscan_t yyscanner)
2643 {
2644     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2645     return yyleng;
2646 }
2647
2648 /** Get the current token.
2649  * @param yyscanner The scanner object.
2650  */
2651
2652 char *ast_yyget_text  (yyscan_t yyscanner)
2653 {
2654     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2655     return yytext;
2656 }
2657
2658 /** Set the user-defined data. This data is never touched by the scanner.
2659  * @param user_defined The data to be associated with this scanner.
2660  * @param yyscanner The scanner object.
2661  */
2662 void ast_yyset_extra (YY_EXTRA_TYPE  user_defined , yyscan_t yyscanner)
2663 {
2664     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2665     yyextra = user_defined ;
2666 }
2667
2668 /** Set the current line number.
2669  * @param line_number
2670  * @param yyscanner The scanner object.
2671  */
2672 void ast_yyset_lineno (int  line_number , yyscan_t yyscanner)
2673 {
2674     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2675
2676         /* lineno is only valid if an input buffer exists. */
2677         if (! YY_CURRENT_BUFFER )
2678            yy_fatal_error( "ast_yyset_lineno called with no buffer" , yyscanner); 
2679     
2680     yylineno = line_number;
2681 }
2682
2683 /** Set the current column.
2684  * @param line_number
2685  * @param yyscanner The scanner object.
2686  */
2687 void ast_yyset_column (int  column_no , yyscan_t yyscanner)
2688 {
2689     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2690
2691         /* column is only valid if an input buffer exists. */
2692         if (! YY_CURRENT_BUFFER )
2693            yy_fatal_error( "ast_yyset_column called with no buffer" , yyscanner); 
2694     
2695     yycolumn = column_no;
2696 }
2697
2698 /** Set the input stream. This does not discard the current
2699  * input buffer.
2700  * @param in_str A readable stream.
2701  * @param yyscanner The scanner object.
2702  * @see ast_yy_switch_to_buffer
2703  */
2704 void ast_yyset_in (FILE *  in_str , yyscan_t yyscanner)
2705 {
2706     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2707     yyin = in_str ;
2708 }
2709
2710 void ast_yyset_out (FILE *  out_str , yyscan_t yyscanner)
2711 {
2712     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2713     yyout = out_str ;
2714 }
2715
2716 int ast_yyget_debug  (yyscan_t yyscanner)
2717 {
2718     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2719     return yy_flex_debug;
2720 }
2721
2722 void ast_yyset_debug (int  bdebug , yyscan_t yyscanner)
2723 {
2724     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2725     yy_flex_debug = bdebug ;
2726 }
2727
2728 /* Accessor methods for yylval and yylloc */
2729
2730 YYSTYPE * ast_yyget_lval  (yyscan_t yyscanner)
2731 {
2732     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2733     return yylval;
2734 }
2735
2736 void ast_yyset_lval (YYSTYPE *  yylval_param , yyscan_t yyscanner)
2737 {
2738     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2739     yylval = yylval_param;
2740 }
2741
2742 YYLTYPE *ast_yyget_lloc  (yyscan_t yyscanner)
2743 {
2744     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2745     return yylloc;
2746 }
2747     
2748 void ast_yyset_lloc (YYLTYPE *  yylloc_param , yyscan_t yyscanner)
2749 {
2750     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2751     yylloc = yylloc_param;
2752 }
2753     
2754 static int yy_init_globals (yyscan_t yyscanner)
2755 {
2756     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2757     /* Initialization is the same as for the non-reentrant scanner.
2758        This function is called once per scanner lifetime. */
2759
2760     yyg->yy_buffer_stack = 0;
2761     yyg->yy_buffer_stack_top = 0;
2762     yyg->yy_buffer_stack_max = 0;
2763     yyg->yy_c_buf_p = (char *) 0;
2764     yyg->yy_init = 1;
2765     yyg->yy_start = 0;
2766     yyg->yy_start_stack_ptr = 0;
2767     yyg->yy_start_stack_depth = 0;
2768     yyg->yy_start_stack = (int *) 0;
2769
2770 /* Defined in main.c */
2771 #ifdef YY_STDINIT
2772     yyin = stdin;
2773     yyout = stdout;
2774 #else
2775     yyin = (FILE *) 0;
2776     yyout = (FILE *) 0;
2777 #endif
2778
2779     /* For future reference: Set errno on error, since we are called by
2780      * ast_yylex_init()
2781      */
2782     return 0;
2783 }
2784
2785 /* User-visible API */
2786
2787 /* ast_yylex_init is special because it creates the scanner itself, so it is
2788  * the ONLY reentrant function that doesn't take the scanner as the last argument.
2789  * That's why we explicitly handle the declaration, instead of using our macros.
2790  */
2791
2792 int ast_yylex_init(yyscan_t* ptr_yy_globals)
2793
2794 {
2795     if (ptr_yy_globals == NULL){
2796         errno = EINVAL;
2797         return 1;
2798     }
2799
2800     *ptr_yy_globals = (yyscan_t) ast_yyalloc ( sizeof( struct yyguts_t ), NULL );
2801
2802     if (*ptr_yy_globals == NULL){
2803         errno = ENOMEM;
2804         return 1;
2805     }
2806
2807     memset(*ptr_yy_globals,0,sizeof(struct yyguts_t));
2808
2809     return yy_init_globals ( *ptr_yy_globals );
2810 }
2811
2812 /* ast_yylex_destroy is for both reentrant and non-reentrant scanners. */
2813 int ast_yylex_destroy  (yyscan_t yyscanner)
2814 {
2815     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2816
2817     /* Pop the buffer stack, destroying each element. */
2818         while(YY_CURRENT_BUFFER){
2819                 ast_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
2820                 YY_CURRENT_BUFFER_LVALUE = NULL;
2821                 ast_yypop_buffer_state(yyscanner);
2822         }
2823
2824         /* Destroy the stack itself. */
2825         ast_yyfree(yyg->yy_buffer_stack ,yyscanner);
2826         yyg->yy_buffer_stack = NULL;
2827
2828     /* Destroy the start condition stack. */
2829         ast_yyfree(yyg->yy_start_stack ,yyscanner );
2830         yyg->yy_start_stack = NULL;
2831
2832     /* Destroy the main struct (reentrant only). */
2833     ast_yyfree ( yyscanner , yyscanner );
2834     return 0;
2835 }
2836
2837 /*
2838  * Internal utility routines.
2839  */
2840
2841 #ifndef yytext_ptr
2842 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
2843 {
2844         register int i;
2845     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2846         for ( i = 0; i < n; ++i )
2847                 s1[i] = s2[i];
2848 }
2849 #endif
2850
2851 #ifdef YY_NEED_STRLEN
2852 static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
2853 {
2854         register int n;
2855     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2856         for ( n = 0; s[n]; ++n )
2857                 ;
2858
2859         return n;
2860 }
2861 #endif
2862
2863 void *ast_yyalloc (yy_size_t  size , yyscan_t yyscanner)
2864 {
2865         return (void *) malloc( size );
2866 }
2867
2868 void *ast_yyrealloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
2869 {
2870         /* The cast to (char *) in the following accommodates both
2871          * implementations that use char* generic pointers, and those
2872          * that use void* generic pointers.  It works with the latter
2873          * because both ANSI C and C++ allow castless assignment from
2874          * any pointer type to void*, and deal with argument conversions
2875          * as though doing an assignment.
2876          */
2877         return (void *) realloc( (char *) ptr, size );
2878 }
2879
2880 void ast_yyfree (void * ptr , yyscan_t yyscanner)
2881 {
2882         free( (char *) ptr );   /* see ast_yyrealloc() for (char *) cast */
2883 }
2884
2885 #define YYTABLES_NAME "yytables"
2886
2887 #undef YY_NEW_FILE
2888 #undef YY_FLUSH_BUFFER
2889 #undef yy_set_bol
2890 #undef yy_new_buffer
2891 #undef yy_set_interactive
2892 #undef yytext_ptr
2893 #undef YY_DO_BEFORE_ACTION
2894
2895 #ifdef YY_DECL_IS_OURS
2896 #undef YY_DECL_IS_OURS
2897 #undef YY_DECL
2898 #endif
2899 #line 103 "ast_expr2.fl"
2900
2901
2902
2903 /* I'm putting the interface routine to the whole parse here in the flexer input file
2904    mainly because of all the flexer initialization that has to be done. Shouldn't matter
2905    where it is, as long as it's somewhere. I didn't want to define a prototype for the
2906    ast_yy_scan_string in the .y file, because then, I'd have to define YY_BUFFER_STATE there...
2907         UGH! that would be inappropriate. */
2908
2909 int ast_yyparse(void *); /* need to/should define this prototype for the call to yyparse */
2910 int ast_yyerror(const char *, YYLTYPE *, struct parse_io *); /* likewise */
2911
2912 int ast_expr(char *expr, char *buf, int length)
2913 {
2914         struct parse_io io;
2915         int return_value = 0;
2916         
2917         memset(&io, 0, sizeof(io));
2918         io.string = expr;  /* to pass to the error routine */
2919         
2920         ast_yylex_init(&io.scanner);
2921         
2922         ast_yy_scan_string(expr, io.scanner);
2923         
2924         ast_yyparse ((void *) &io);
2925
2926         ast_yylex_destroy(io.scanner);
2927
2928         if (!io.val) {
2929                 if (length > 1) {
2930                         strcpy(buf, "0");
2931                         return_value = 1;
2932                 }
2933         } else {
2934                 if (io.val->type == AST_EXPR_integer) {
2935                         int res_length;
2936
2937                         res_length = snprintf(buf, length, "%ld", (long int) io.val->u.i);
2938                         return_value = (res_length <= length) ? res_length : length;
2939                 } else {
2940 #ifdef STANDALONE
2941                         strncpy(buf, io.val->u.s, length - 1);
2942 #else /* !STANDALONE */
2943                         ast_copy_string(buf, io.val->u.s, length);
2944 #endif /* STANDALONE */
2945                         return_value = strlen(buf);
2946                         free(io.val->u.s);
2947                 }
2948                 free(io.val);
2949         }
2950         return return_value;
2951 }
2952
2953 int ast_yyerror (const char *s,  yyltype *loc, struct parse_io *parseio )
2954 {       
2955         struct yyguts_t * yyg = (struct yyguts_t*)(parseio->scanner);
2956         char spacebuf[8000]; /* best safe than sorry */
2957         char spacebuf2[8000]; /* best safe than sorry */
2958         int i=0;
2959         spacebuf[0] = 0;
2960         
2961         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,
2962                                                                                                         which is the same thing as... get this:
2963                                                                                                         yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]->yy_bs_column
2964                                                                                                         I was tempted to just use yy_buf_pos in the STATE, but..., well:
2965                                                                                                                 a. the yy_buf_pos is the current position in the buffer, which
2966                                                                                                                         may not relate to the entire string/buffer because of the
2967                                                                                                                         buffering.
2968                                                                                                                 b. but, analysis of the situation is that when you use the
2969                                                                                                                         ast_yy_scan_string func, it creates a single buffer the size of
2970                                                                                                                         string, so the two would be the same... 
2971                                                                                                         so, in the end, the yycolumn macro is available, shorter, therefore easier. */
2972         spacebuf2[i++]='^';
2973         spacebuf2[i]= 0;
2974
2975 #ifdef STANDALONE3
2976         /* easier to read in the standalone version */
2977         printf("ast_yyerror(): syntax error: %s; Input:\n%s\n%s\n",  
2978                         s, parseio->string,spacebuf2);
2979 #else
2980         ast_log(LOG_WARNING,"ast_yyerror(): syntax error: %s; Input:\n%s\n%s\n",  
2981                         s, parseio->string,spacebuf2);
2982 #endif
2983 #ifndef STANDALONE
2984         ast_log(LOG_WARNING,"If you have questions, please refer to doc/README.variables in the asterisk source.\n");
2985 #endif
2986         return(0);
2987 }
2988