Mon May 14 04:42:54 2007

Asterisk developer's documentation


ast_expr2f.c

Go to the documentation of this file.
00001 #line 2 "ast_expr2f.c"
00002 
00003 #line 4 "ast_expr2f.c"
00004 
00005 #define  YY_INT_ALIGNED short int
00006 
00007 /* A lexical scanner generated by flex */
00008 
00009 #define FLEX_SCANNER
00010 #define YY_FLEX_MAJOR_VERSION 2
00011 #define YY_FLEX_MINOR_VERSION 5
00012 #define YY_FLEX_SUBMINOR_VERSION 31
00013 #if YY_FLEX_SUBMINOR_VERSION > 0
00014 #define FLEX_BETA
00015 #endif
00016 
00017 /* First, we deal with  platform-specific or compiler-specific issues. */
00018 
00019 /* begin standard C headers. */
00020 #include <stdio.h>
00021 #include <string.h>
00022 #include <errno.h>
00023 #include <stdlib.h>
00024 
00025 /* end standard C headers. */
00026 
00027 /* flex integer type definitions */
00028 
00029 #ifndef FLEXINT_H
00030 #define FLEXINT_H
00031 
00032 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
00033 
00034 #if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
00035 #include <inttypes.h>
00036 typedef int8_t flex_int8_t;
00037 typedef uint8_t flex_uint8_t;
00038 typedef int16_t flex_int16_t;
00039 typedef uint16_t flex_uint16_t;
00040 typedef int32_t flex_int32_t;
00041 typedef uint32_t flex_uint32_t;
00042 #else
00043 typedef signed char flex_int8_t;
00044 typedef short int flex_int16_t;
00045 typedef int flex_int32_t;
00046 typedef unsigned char flex_uint8_t; 
00047 typedef unsigned short int flex_uint16_t;
00048 typedef unsigned int flex_uint32_t;
00049 #endif /* ! C99 */
00050 
00051 /* Limits of integral types. */
00052 #ifndef INT8_MIN
00053 #define INT8_MIN               (-128)
00054 #endif
00055 #ifndef INT16_MIN
00056 #define INT16_MIN              (-32767-1)
00057 #endif
00058 #ifndef INT32_MIN
00059 #define INT32_MIN              (-2147483647-1)
00060 #endif
00061 #ifndef INT8_MAX
00062 #define INT8_MAX               (127)
00063 #endif
00064 #ifndef INT16_MAX
00065 #define INT16_MAX              (32767)
00066 #endif
00067 #ifndef INT32_MAX
00068 #define INT32_MAX              (2147483647)
00069 #endif
00070 #ifndef UINT8_MAX
00071 #define UINT8_MAX              (255U)
00072 #endif
00073 #ifndef UINT16_MAX
00074 #define UINT16_MAX             (65535U)
00075 #endif
00076 #ifndef UINT32_MAX
00077 #define UINT32_MAX             (4294967295U)
00078 #endif
00079 
00080 #endif /* ! FLEXINT_H */
00081 
00082 #ifdef __cplusplus
00083 
00084 /* The "const" storage-class-modifier is valid. */
00085 #define YY_USE_CONST
00086 
00087 #else /* ! __cplusplus */
00088 
00089 #if __STDC__
00090 
00091 #define YY_USE_CONST
00092 
00093 #endif   /* __STDC__ */
00094 #endif   /* ! __cplusplus */
00095 
00096 #ifdef YY_USE_CONST
00097 #define yyconst const
00098 #else
00099 #define yyconst
00100 #endif
00101 
00102 /* Returned upon end-of-file. */
00103 #define YY_NULL 0
00104 
00105 /* Promotes a possibly negative, possibly signed char to an unsigned
00106  * integer for use as an array index.  If the signed char is negative,
00107  * we want to instead treat it as an 8-bit unsigned char, hence the
00108  * double cast.
00109  */
00110 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
00111 
00112 /* An opaque pointer. */
00113 #ifndef YY_TYPEDEF_YY_SCANNER_T
00114 #define YY_TYPEDEF_YY_SCANNER_T
00115 typedef void* yyscan_t;
00116 #endif
00117 
00118 /* For convenience, these vars (plus the bison vars far below)
00119    are macros in the reentrant scanner. */
00120 #define yyin yyg->yyin_r
00121 #define yyout yyg->yyout_r
00122 #define yyextra yyg->yyextra_r
00123 #define yyleng yyg->yyleng_r
00124 #define yytext yyg->yytext_r
00125 #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
00126 #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
00127 #define yy_flex_debug yyg->yy_flex_debug_r
00128 
00129 int ast_yylex_init (yyscan_t* scanner);
00130 
00131 /* Enter a start condition.  This macro really ought to take a parameter,
00132  * but we do it the disgusting crufty way forced on us by the ()-less
00133  * definition of BEGIN.
00134  */
00135 #define BEGIN yyg->yy_start = 1 + 2 *
00136 
00137 /* Translate the current start state into a value that can be later handed
00138  * to BEGIN to return to the state.  The YYSTATE alias is for lex
00139  * compatibility.
00140  */
00141 #define YY_START ((yyg->yy_start - 1) / 2)
00142 #define YYSTATE YY_START
00143 
00144 /* Action number for EOF rule of a given start state. */
00145 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
00146 
00147 /* Special action meaning "start processing a new file". */
00148 #define YY_NEW_FILE ast_yyrestart(yyin ,yyscanner )
00149 
00150 #define YY_END_OF_BUFFER_CHAR 0
00151 
00152 /* Size of default input buffer. */
00153 #ifndef YY_BUF_SIZE
00154 #define YY_BUF_SIZE 16384
00155 #endif
00156 
00157 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
00158 #define YY_TYPEDEF_YY_BUFFER_STATE
00159 typedef struct yy_buffer_state *YY_BUFFER_STATE;
00160 #endif
00161 
00162 #define EOB_ACT_CONTINUE_SCAN 0
00163 #define EOB_ACT_END_OF_FILE 1
00164 #define EOB_ACT_LAST_MATCH 2
00165 
00166     #define YY_LESS_LINENO(n)
00167     
00168 /* Return all but the first "n" matched characters back to the input stream. */
00169 #define yyless(n) \
00170    do \
00171       { \
00172       /* Undo effects of setting up yytext. */ \
00173         int yyless_macro_arg = (n); \
00174         YY_LESS_LINENO(yyless_macro_arg);\
00175       *yy_cp = yyg->yy_hold_char; \
00176       YY_RESTORE_YY_MORE_OFFSET \
00177       yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
00178       YY_DO_BEFORE_ACTION; /* set up yytext again */ \
00179       } \
00180    while ( 0 )
00181 
00182 #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
00183 
00184 /* The following is because we cannot portably get our hands on size_t
00185  * (without autoconf's help, which isn't available because we want
00186  * flex-generated scanners to compile on their own).
00187  */
00188 
00189 #ifndef YY_TYPEDEF_YY_SIZE_T
00190 #define YY_TYPEDEF_YY_SIZE_T
00191 typedef unsigned int yy_size_t;
00192 #endif
00193 
00194 #ifndef YY_STRUCT_YY_BUFFER_STATE
00195 #define YY_STRUCT_YY_BUFFER_STATE
00196 struct yy_buffer_state
00197    {
00198    FILE *yy_input_file;
00199 
00200    char *yy_ch_buf;     /* input buffer */
00201    char *yy_buf_pos;    /* current position in input buffer */
00202 
00203    /* Size of input buffer in bytes, not including room for EOB
00204     * characters.
00205     */
00206    yy_size_t yy_buf_size;
00207 
00208    /* Number of characters read into yy_ch_buf, not including EOB
00209     * characters.
00210     */
00211    int yy_n_chars;
00212 
00213    /* Whether we "own" the buffer - i.e., we know we created it,
00214     * and can realloc() it to grow it, and should free() it to
00215     * delete it.
00216     */
00217    int yy_is_our_buffer;
00218 
00219    /* Whether this is an "interactive" input source; if so, and
00220     * if we're using stdio for input, then we want to use getc()
00221     * instead of fread(), to make sure we stop fetching input after
00222     * each newline.
00223     */
00224    int yy_is_interactive;
00225 
00226    /* Whether we're considered to be at the beginning of a line.
00227     * If so, '^' rules will be active on the next match, otherwise
00228     * not.
00229     */
00230    int yy_at_bol;
00231 
00232     int yy_bs_lineno; /**< The line count. */
00233     int yy_bs_column; /**< The column count. */
00234     
00235    /* Whether to try to fill the input buffer when we reach the
00236     * end of it.
00237     */
00238    int yy_fill_buffer;
00239 
00240    int yy_buffer_status;
00241 
00242 #define YY_BUFFER_NEW 0
00243 #define YY_BUFFER_NORMAL 1
00244    /* When an EOF's been seen but there's still some text to process
00245     * then we mark the buffer as YY_EOF_PENDING, to indicate that we
00246     * shouldn't try reading from the input source any more.  We might
00247     * still have a bunch of tokens to match, though, because of
00248     * possible backing-up.
00249     *
00250     * When we actually see the EOF, we change the status to "new"
00251     * (via ast_yyrestart()), so that the user can continue scanning by
00252     * just pointing yyin at a new input file.
00253     */
00254 #define YY_BUFFER_EOF_PENDING 2
00255 
00256    };
00257 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
00258 
00259 /* We provide macros for accessing buffer states in case in the
00260  * future we want to put the buffer states in a more general
00261  * "scanner state".
00262  *
00263  * Returns the top of the stack, or NULL.
00264  */
00265 #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
00266                           ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
00267                           : NULL)
00268 
00269 /* Same as previous macro, but useful when we know that the buffer stack is not
00270  * NULL or when we need an lvalue. For internal use only.
00271  */
00272 #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
00273 
00274 void ast_yyrestart (FILE *input_file ,yyscan_t yyscanner );
00275 void ast_yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
00276 YY_BUFFER_STATE ast_yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner );
00277 void ast_yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
00278 void ast_yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
00279 void ast_yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
00280 void ast_yypop_buffer_state (yyscan_t yyscanner );
00281 
00282 static void ast_yyensure_buffer_stack (yyscan_t yyscanner );
00283 static void ast_yy_load_buffer_state (yyscan_t yyscanner );
00284 static void ast_yy_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner );
00285 
00286 #define YY_FLUSH_BUFFER ast_yy_flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
00287 
00288 YY_BUFFER_STATE ast_yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
00289 YY_BUFFER_STATE ast_yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
00290 YY_BUFFER_STATE ast_yy_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner );
00291 
00292 void *ast_yyalloc (yy_size_t ,yyscan_t yyscanner );
00293 void *ast_yyrealloc (void *,yy_size_t ,yyscan_t yyscanner );
00294 void ast_yyfree (void * ,yyscan_t yyscanner );
00295 
00296 #define yy_new_buffer ast_yy_create_buffer
00297 
00298 #define yy_set_interactive(is_interactive) \
00299    { \
00300    if ( ! YY_CURRENT_BUFFER ){ \
00301         ast_yyensure_buffer_stack (yyscanner); \
00302       YY_CURRENT_BUFFER_LVALUE =    \
00303             ast_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
00304    } \
00305    YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
00306    }
00307 
00308 #define yy_set_bol(at_bol) \
00309    { \
00310    if ( ! YY_CURRENT_BUFFER ){\
00311         ast_yyensure_buffer_stack (yyscanner); \
00312       YY_CURRENT_BUFFER_LVALUE =    \
00313             ast_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
00314    } \
00315    YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
00316    }
00317 
00318 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
00319 
00320 /* Begin user sect3 */
00321 
00322 #define ast_yywrap(n) 1
00323 #define YY_SKIP_YYWRAP
00324 
00325 typedef char YY_CHAR;
00326 
00327 typedef int yy_state_type;
00328 
00329 #define yytext_ptr yytext_r
00330 static yyconst flex_int16_t yy_nxt[][128] =
00331     {
00332     {
00333         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00334         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00335         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00336         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00337         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00338         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00339         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00340         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00341         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00342         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00343 
00344         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00345         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00346         0,    0,    0,    0,    0,    0,    0,    0
00347     },
00348 
00349     {
00350         7,    8,    8,    8,    8,    8,    8,    8,    8,    9,
00351        10,    8,    8,    9,    8,    8,    8,    8,    8,    8,
00352         8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
00353         8,    8,    9,   11,   12,   13,   14,   15,   16,   13,
00354        17,   18,   19,   20,   13,   21,   13,   22,   23,   23,
00355        23,   23,   23,   23,   23,   23,   23,   23,   24,   13,
00356        25,   26,   27,   28,   13,   13,   13,   13,   13,   13,
00357 
00358        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
00359        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
00360        13,    8,   13,    8,   13,   13,    8,   13,   13,   13,
00361        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
00362        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
00363        13,   13,   13,    8,   29,    8,    8,    8
00364     },
00365 
00366     {
00367         7,    8,    8,    8,    8,    8,    8,    8,    8,    9,
00368        10,    8,    8,    9,    8,    8,    8,    8,    8,    8,
00369         8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
00370         8,    8,    9,   11,   12,   13,   14,   15,   16,   13,
00371 
00372        17,   18,   19,   20,   13,   21,   13,   22,   23,   23,
00373        23,   23,   23,   23,   23,   23,   23,   23,   24,   13,
00374        25,   26,   27,   28,   13,   13,   13,   13,   13,   13,
00375        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
00376        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
00377        13,    8,   13,    8,   13,   13,    8,   13,   13,   13,
00378        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
00379        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
00380        13,   13,   13,    8,   29,    8,    8,    8
00381     },
00382 
00383     {
00384         7,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00385 
00386        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00387        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00388        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00389        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00390        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00391        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00392        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00393        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00394        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00395        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00396 
00397        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00398        30,   30,   30,   31,   30,   32,   30,   30
00399     },
00400 
00401     {
00402         7,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00403        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00404        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00405        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00406        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00407        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00408        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00409        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00410 
00411        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00412        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00413        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00414        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00415        30,   30,   30,   31,   30,   32,   30,   30
00416     },
00417 
00418     {
00419         7,   33,   33,   33,   33,   33,   33,   33,   33,   34,
00420        34,   33,   33,   34,   33,   33,   33,   33,   33,   33,
00421        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00422        33,   33,   34,   34,   33,   33,   35,   34,   34,   33,
00423        34,   34,   34,   34,   33,   34,   33,   34,   33,   33,
00424 
00425        33,   33,   33,   33,   33,   33,   33,   33,   34,   33,
00426        34,   34,   34,   34,   33,   33,   33,   33,   33,   33,
00427        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00428        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00429        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00430        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00431        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00432        33,   33,   33,   33,   34,   33,   33,   33
00433     },
00434 
00435     {
00436         7,   33,   33,   33,   33,   33,   33,   33,   33,   34,
00437        34,   33,   33,   34,   33,   33,   33,   33,   33,   33,
00438 
00439        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00440        33,   33,   34,   34,   33,   33,   35,   34,   34,   33,
00441        34,   34,   34,   34,   33,   34,   33,   34,   33,   33,
00442        33,   33,   33,   33,   33,   33,   33,   33,   34,   33,
00443        34,   34,   34,   34,   33,   33,   33,   33,   33,   33,
00444        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00445        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00446        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00447        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00448        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00449 
00450        33,   33,   33,   33,   34,   33,   33,   33
00451     },
00452 
00453     {
00454        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00455        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00456        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00457        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00458        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00459        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00460        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00461        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00462        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00463 
00464        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00465        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00466        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00467        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7
00468     },
00469 
00470     {
00471         7,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00472        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00473        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00474        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00475        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00476        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00477 
00478        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00479        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00480        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00481        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00482        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00483        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00484        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8
00485     },
00486 
00487     {
00488         7,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00489        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00490        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00491 
00492        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00493        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00494        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00495        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00496        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00497        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00498        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00499        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00500        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00501        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9
00502 
00503     },
00504 
00505     {
00506         7,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00507       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00508       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00509       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00510       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00511       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00512       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00513       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00514       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00515       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00516 
00517       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00518       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00519       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10
00520     },
00521 
00522     {
00523         7,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
00524       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
00525       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
00526       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
00527       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
00528       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
00529       -11,   36,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
00530 
00531       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
00532       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
00533       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
00534       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
00535       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
00536       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11
00537     },
00538 
00539     {
00540         7,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00541        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00542        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00543        37,   37,   37,   37,   38,   37,   37,   37,   37,   37,
00544 
00545        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00546        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00547        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00548        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00549        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00550        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00551        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00552        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00553        37,   37,   37,   37,   37,   37,   37,   37
00554     },
00555 
00556     {
00557         7,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
00558 
00559       -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
00560       -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
00561       -13,  -13,  -13,  -13,  -13,   39,   39,  -13,  -13,   39,
00562       -13,  -13,  -13,  -13,   39,  -13,   39,  -13,   39,   39,
00563        39,   39,   39,   39,   39,   39,   39,   39,  -13,   39,
00564       -13,  -13,  -13,  -13,   39,   39,   39,   39,   39,   39,
00565        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00566        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00567        39,  -13,   39,  -13,   39,   39,  -13,   39,   39,   39,
00568        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00569 
00570        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00571        39,   39,   39,  -13,  -13,  -13,  -13,  -13
00572     },
00573 
00574     {
00575         7,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
00576       -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
00577       -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
00578       -14,  -14,  -14,  -14,  -14,   39,   39,  -14,  -14,   39,
00579       -14,  -14,  -14,  -14,   39,  -14,   39,  -14,   39,   39,
00580        39,   39,   39,   39,   39,   39,   39,   39,  -14,   39,
00581       -14,  -14,  -14,  -14,   39,   39,   39,   39,   39,   39,
00582        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00583 
00584        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00585        39,  -14,   39,  -14,   39,   39,  -14,   39,   39,   39,
00586        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00587        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00588        39,   39,   39,   40,  -14,  -14,  -14,  -14
00589     },
00590 
00591     {
00592         7,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
00593       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
00594       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
00595       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
00596       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
00597 
00598       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
00599       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
00600       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
00601       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
00602       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
00603       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
00604       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
00605       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15
00606     },
00607 
00608     {
00609         7,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00610       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00611 
00612       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00613       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,   41,  -16,
00614       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00615       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00616       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00617       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00618       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00619       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00620       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00621       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00622 
00623       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16
00624     },
00625 
00626     {
00627         7,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00628       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00629       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00630       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00631       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00632       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00633       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00634       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00635       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00636 
00637       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00638       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00639       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00640       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17
00641     },
00642 
00643     {
00644         7,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00645       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00646       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00647       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00648       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00649       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00650 
00651       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00652       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00653       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00654       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00655       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00656       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00657       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18
00658     },
00659 
00660     {
00661         7,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00662       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00663       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00664 
00665       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00666       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00667       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00668       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00669       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00670       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00671       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00672       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00673       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00674       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19
00675 
00676     },
00677 
00678     {
00679         7,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00680       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00681       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00682       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00683       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00684       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00685       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00686       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00687       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00688       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00689 
00690       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00691       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00692       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20
00693     },
00694 
00695     {
00696         7,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00697       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00698       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00699       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00700       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00701       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00702       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00703 
00704       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00705       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00706       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00707       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00708       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00709       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21
00710     },
00711 
00712     {
00713         7,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00714       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00715       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00716       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00717 
00718       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00719       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00720       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00721       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00722       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00723       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00724       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00725       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00726       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22
00727     },
00728 
00729     {
00730         7,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
00731 
00732       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
00733       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
00734       -23,  -23,  -23,  -23,  -23,   39,   39,  -23,  -23,   39,
00735       -23,  -23,  -23,  -23,   39,  -23,   39,  -23,   42,   42,
00736        42,   42,   42,   42,   42,   42,   42,   42,  -23,   39,
00737       -23,  -23,  -23,  -23,   39,   39,   39,   39,   39,   39,
00738        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00739        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00740        39,  -23,   39,  -23,   39,   39,  -23,   39,   39,   39,
00741        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00742 
00743        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00744        39,   39,   39,  -23,  -23,  -23,  -23,  -23
00745     },
00746 
00747     {
00748         7,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
00749       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
00750       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
00751       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
00752       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
00753       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,   43,  -24,
00754       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
00755       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
00756 
00757       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
00758       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
00759       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
00760       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
00761       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24
00762     },
00763 
00764     {
00765         7,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00766       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00767       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00768       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00769       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00770 
00771       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00772       -25,   44,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00773       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00774       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00775       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00776       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00777       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00778       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25
00779     },
00780 
00781     {
00782         7,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00783       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00784 
00785       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00786       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00787       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00788       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00789       -26,   45,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00790       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00791       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00792       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00793       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00794       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00795 
00796       -26,  -26,  -26,  -26,  -26,  -26,   46,  -26
00797     },
00798 
00799     {
00800         7,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00801       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00802       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00803       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00804       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00805       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00806       -27,   47,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00807       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00808       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00809 
00810       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00811       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00812       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00813       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27
00814     },
00815 
00816     {
00817         7,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00818       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00819       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00820       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00821       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00822       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00823 
00824       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00825       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00826       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00827       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00828       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00829       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00830       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28
00831     },
00832 
00833     {
00834         7,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00835       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00836       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00837 
00838       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00839       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00840       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00841       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00842       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00843       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00844       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00845       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00846       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00847       -29,  -29,  -29,  -29,   48,  -29,  -29,  -29
00848 
00849     },
00850 
00851     {
00852         7,   49,   49,   49,   49,   49,   49,   49,   49,   49,
00853        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
00854        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
00855        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
00856        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
00857        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
00858        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
00859        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
00860        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
00861        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
00862 
00863        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
00864        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
00865        49,   49,   49,   50,   49,   51,   49,   49
00866     },
00867 
00868     {
00869         7,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00870       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00871       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00872       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00873       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00874       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00875       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00876 
00877       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00878       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00879       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00880       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00881       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00882       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31
00883     },
00884 
00885     {
00886         7,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00887       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00888       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00889       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00890 
00891       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00892       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00893       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00894       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00895       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00896       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00897       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00898       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00899       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32
00900     },
00901 
00902     {
00903         7,   52,   52,   52,   52,   52,   52,   52,   52,  -33,
00904 
00905       -33,   52,   52,  -33,   52,   52,   52,   52,   52,   52,
00906        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
00907        52,   52,  -33,  -33,   52,   52,  -33,  -33,  -33,   52,
00908       -33,  -33,  -33,  -33,   52,  -33,   52,  -33,   52,   52,
00909        52,   52,   52,   52,   52,   52,   52,   52,  -33,   52,
00910       -33,  -33,  -33,  -33,   52,   52,   52,   52,   52,   52,
00911        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
00912        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
00913        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
00914        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
00915 
00916        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
00917        52,   52,   52,   52,  -33,   52,   52,   52
00918     },
00919 
00920     {
00921         7,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00922       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00923       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00924       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00925       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00926       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00927       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00928       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00929 
00930       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00931       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00932       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00933       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00934       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34
00935     },
00936 
00937     {
00938         7,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00939       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00940       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00941       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00942       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00943 
00944       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00945       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00946       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00947       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00948       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00949       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00950       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00951       -35,  -35,  -35,   53,  -35,  -35,  -35,  -35
00952     },
00953 
00954     {
00955         7,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
00956       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
00957 
00958       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
00959       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
00960       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
00961       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
00962       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
00963       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
00964       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
00965       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
00966       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
00967       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
00968 
00969       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36
00970     },
00971 
00972     {
00973         7,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00974        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00975        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00976        37,   37,   37,   37,   38,   37,   37,   37,   37,   37,
00977        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00978        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00979        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00980        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00981        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00982 
00983        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00984        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00985        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00986        37,   37,   37,   37,   37,   37,   37,   37
00987     },
00988 
00989     {
00990         7,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
00991       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
00992       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
00993       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
00994       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
00995       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
00996 
00997       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
00998       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
00999       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
01000       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
01001       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
01002       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
01003       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38
01004     },
01005 
01006     {
01007         7,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
01008       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
01009       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
01010 
01011       -39,  -39,  -39,  -39,  -39,   39,   39,  -39,  -39,   39,
01012       -39,  -39,  -39,  -39,   39,  -39,   39,  -39,   39,   39,
01013        39,   39,   39,   39,   39,   39,   39,   39,  -39,   39,
01014       -39,  -39,  -39,  -39,   39,   39,   39,   39,   39,   39,
01015        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
01016        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
01017        39,  -39,   39,  -39,   39,   39,  -39,   39,   39,   39,
01018        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
01019        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
01020        39,   39,   39,  -39,  -39,  -39,  -39,  -39
01021 
01022     },
01023 
01024     {
01025         7,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01026       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01027       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01028       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01029       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01030       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01031       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01032       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01033       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01034       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01035 
01036       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01037       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01038       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40
01039     },
01040 
01041     {
01042         7,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
01043       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
01044       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
01045       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
01046       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
01047       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
01048       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
01049 
01050       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
01051       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
01052       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
01053       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
01054       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
01055       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41
01056     },
01057 
01058     {
01059         7,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
01060       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
01061       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
01062       -42,  -42,  -42,  -42,  -42,   39,   39,  -42,  -42,   39,
01063 
01064       -42,  -42,  -42,  -42,   39,  -42,   39,  -42,   42,   42,
01065        42,   42,   42,   42,   42,   42,   42,   42,  -42,   39,
01066       -42,  -42,  -42,  -42,   39,   39,   39,   39,   39,   39,
01067        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
01068        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
01069        39,  -42,   39,  -42,   39,   39,  -42,   39,   39,   39,
01070        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
01071        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
01072        39,   39,   39,  -42,  -42,  -42,  -42,  -42
01073     },
01074 
01075     {
01076         7,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01077 
01078       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01079       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01080       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01081       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01082       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01083       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01084       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01085       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01086       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01087       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01088 
01089       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01090       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43
01091     },
01092 
01093     {
01094         7,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01095       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01096       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01097       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01098       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01099       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01100       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01101       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01102 
01103       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01104       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01105       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01106       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01107       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44
01108     },
01109 
01110     {
01111         7,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
01112       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
01113       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
01114       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
01115       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
01116 
01117       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
01118       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
01119       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
01120       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
01121       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
01122       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
01123       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
01124       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45
01125     },
01126 
01127     {
01128         7,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01129       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01130 
01131       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01132       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01133       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01134       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01135       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01136       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01137       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01138       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01139       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01140       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01141 
01142       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46
01143     },
01144 
01145     {
01146         7,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01147       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01148       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01149       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01150       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01151       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01152       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01153       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01154       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01155 
01156       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01157       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01158       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01159       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47
01160     },
01161 
01162     {
01163         7,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
01164       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
01165       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
01166       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
01167       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
01168       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
01169 
01170       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
01171       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
01172       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
01173       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
01174       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
01175       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
01176       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48
01177     },
01178 
01179     {
01180         7,   49,   49,   49,   49,   49,   49,   49,   49,   49,
01181        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
01182        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
01183 
01184        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
01185        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
01186        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
01187        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
01188        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
01189        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
01190        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
01191        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
01192        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
01193        49,   49,   49,   50,   49,   51,   49,   49
01194 
01195     },
01196 
01197     {
01198         7,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
01199       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
01200       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
01201       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
01202       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
01203       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
01204       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
01205       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
01206       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
01207       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
01208 
01209       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
01210       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
01211       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50
01212     },
01213 
01214     {
01215         7,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
01216       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
01217       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
01218       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
01219       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
01220       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
01221       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
01222 
01223       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
01224       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
01225       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
01226       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
01227       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
01228       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51
01229     },
01230 
01231     {
01232         7,   52,   52,   52,   52,   52,   52,   52,   52,  -52,
01233       -52,   52,   52,  -52,   52,   52,   52,   52,   52,   52,
01234        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
01235        52,   52,  -52,  -52,   52,   52,  -52,  -52,  -52,   52,
01236 
01237       -52,  -52,  -52,  -52,   52,  -52,   52,  -52,   52,   52,
01238        52,   52,   52,   52,   52,   52,   52,   52,  -52,   52,
01239       -52,  -52,  -52,  -52,   52,   52,   52,   52,   52,   52,
01240        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
01241        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
01242        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
01243        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
01244        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
01245        52,   52,   52,   52,  -52,   52,   52,   52
01246     },
01247 
01248     {
01249         7,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
01250 
01251       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
01252       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
01253       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
01254       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
01255       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
01256       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
01257       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
01258       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
01259       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
01260       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
01261 
01262       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
01263       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53
01264     },
01265 
01266     } ;
01267 
01268 static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
01269 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  ,yyscan_t yyscanner);
01270 static int yy_get_next_buffer (yyscan_t yyscanner );
01271 static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
01272 
01273 /* Done after the current pattern has been matched and before the
01274  * corresponding action - sets up yytext.
01275  */
01276 #define YY_DO_BEFORE_ACTION \
01277    yyg->yytext_ptr = yy_bp; \
01278    yyg->yytext_ptr -= yyg->yy_more_len; \
01279    yyleng = (size_t) (yy_cp - yyg->yytext_ptr); \
01280    yyg->yy_hold_char = *yy_cp; \
01281    *yy_cp = '\0'; \
01282    yyg->yy_c_buf_p = yy_cp;
01283 
01284 #define YY_NUM_RULES 35
01285 #define YY_END_OF_BUFFER 36
01286 /* This struct is not used in this scanner,
01287    but its presence is necessary. */
01288 struct yy_trans_info
01289    {
01290    flex_int32_t yy_verify;
01291    flex_int32_t yy_nxt;
01292    };
01293 static yyconst flex_int16_t yy_accept[54] =
01294     {   0,
01295         0,    0,    0,    0,   32,   32,   36,   35,   25,   27,
01296        19,   35,   29,   29,   17,    2,   22,   23,   15,   13,
01297        14,   16,   28,   20,    9,    3,    8,   18,    1,   35,
01298        31,   30,   32,   33,   33,   12,    0,   26,   29,   24,
01299         5,   28,   21,   11,    6,    7,   10,    4,    0,   31,
01300        30,   32,   34
01301     } ;
01302 
01303 static yyconst yy_state_type yy_NUL_trans[54] =
01304     {   0,
01305         8,    8,   30,   30,   33,   33,    0,    0,    0,    0,
01306         0,   37,    0,    0,    0,    0,    0,    0,    0,    0,
01307         0,    0,    0,    0,    0,    0,    0,    0,    0,   49,
01308         0,    0,   52,    0,    0,    0,   37,    0,    0,    0,
01309         0,    0,    0,    0,    0,    0,    0,    0,   49,    0,
01310         0,   52,    0
01311     } ;
01312 
01313 /* The intent behind this definition is that it'll catch
01314  * any uses of REJECT which flex missed.
01315  */
01316 #define REJECT reject_used_but_not_detected
01317 #define yymore() (yyg->yy_more_flag = 1)
01318 #define YY_MORE_ADJ yyg->yy_more_len
01319 #define YY_RESTORE_YY_MORE_OFFSET
01320 #line 1 "ast_expr2.fl"
01321 #line 2 "ast_expr2.fl"
01322 /*
01323  * Asterisk -- An open source telephony toolkit.
01324  *
01325  * Copyright (C) 1999 - 2006, Digium, Inc.
01326  *
01327  * Mark Spencer <markster@digium.com>
01328  *
01329  * See http://www.asterisk.org for more information about
01330  * the Asterisk project. Please do not directly contact
01331  * any of the maintainers of this project for assistance;
01332  * the project provides a web site, mailing lists and IRC
01333  * channels for your use.
01334  *
01335  * This program is free software, distributed under the terms of
01336  * the GNU General Public License Version 2. See the LICENSE file
01337  * at the top of the source tree.
01338  */
01339 
01340 /*! \file
01341  *
01342  * \brief Dialplan Expression Lexical Scanner
01343  */
01344 
01345 #include "asterisk.h"
01346 
01347 #ifndef STANDALONE
01348 ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
01349 #endif
01350 
01351 #include <sys/types.h>
01352 #include <stdio.h>
01353 #include <stdlib.h>
01354 #include <string.h>
01355 #include <locale.h>
01356 #include <ctype.h>
01357 #if !defined(SOLARIS) && !defined(__CYGWIN__)
01358 /* #include <err.h> */
01359 #else
01360 #define quad_t int64_t
01361 #endif
01362 #include <errno.h>
01363 #include <regex.h>
01364 #include <limits.h>
01365 
01366 #include "asterisk/ast_expr.h"
01367 #include "asterisk/logger.h"
01368 #include "asterisk/strings.h"
01369 
01370 enum valtype {
01371    AST_EXPR_integer, AST_EXPR_numeric_string, AST_EXPR_string
01372 } ;
01373 
01374 struct val {
01375    enum valtype type;
01376    union {
01377       char *s;
01378       quad_t i;
01379    } u;
01380 } ;
01381 
01382 #include "ast_expr2.h" /* the o/p of the bison on ast_expr2.y */
01383 
01384 #define SET_COLUMNS  do {     \
01385    yylloc_param->first_column = (int)(yyg->yytext_r - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf); \
01386    yylloc_param->last_column += yyleng - 1; \
01387    yylloc_param->first_line = yylloc_param->last_line = 1; \
01388    } while (0)
01389 
01390 #define SET_STRING   do {     \
01391    yylval_param->val = calloc(1, sizeof(struct val)); \
01392    yylval_param->val->type = AST_EXPR_string;      \
01393    yylval_param->val->u.s = strdup(yytext);     \
01394    } while (0)
01395 
01396 #define SET_NUMERIC_STRING do {  \
01397    yylval_param->val = calloc(1, sizeof(struct val)); \
01398    yylval_param->val->type = AST_EXPR_numeric_string; \
01399    yylval_param->val->u.s = strdup(yytext);  \
01400    } while (0)
01401 
01402 struct parse_io
01403 {
01404    char *string;
01405    struct val *val;
01406    yyscan_t scanner;
01407 };
01408  
01409 void ast_yyset_column(int column_no, yyscan_t yyscanner);
01410 int ast_yyget_column(yyscan_t yyscanner);
01411 static int curlycount = 0;
01412 static char *expr2_token_subst(char *mess);
01413 
01414 #line 1415 "ast_expr2f.c"
01415 
01416 #define INITIAL 0
01417 #define var 1
01418 #define trail 2
01419 
01420 /* Special case for "unistd.h", since it is non-ANSI. We include it way
01421  * down here because we want the user's section 1 to have been scanned first.
01422  * The user has a chance to override it with an option.
01423  */
01424 #include <unistd.h>
01425 
01426 #ifndef YY_EXTRA_TYPE
01427 #define YY_EXTRA_TYPE void *
01428 #endif
01429 
01430 /* Holds the entire state of the reentrant scanner. */
01431 struct yyguts_t
01432     {
01433 
01434     /* User-defined. Not touched by flex. */
01435     YY_EXTRA_TYPE yyextra_r;
01436 
01437     /* The rest are the same as the globals declared in the non-reentrant scanner. */
01438     FILE *yyin_r, *yyout_r;
01439     size_t yy_buffer_stack_top; /**< index of top of stack. */
01440     size_t yy_buffer_stack_max; /**< capacity of stack. */
01441     YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
01442     char yy_hold_char;
01443     int yy_n_chars;
01444     int yyleng_r;
01445     char *yy_c_buf_p;
01446     int yy_init;
01447     int yy_start;
01448     int yy_did_buffer_switch_on_eof;
01449     int yy_start_stack_ptr;
01450     int yy_start_stack_depth;
01451     int *yy_start_stack;
01452     yy_state_type yy_last_accepting_state;
01453     char* yy_last_accepting_cpos;
01454 
01455     int yylineno_r;
01456     int yy_flex_debug_r;
01457 
01458     char *yytext_r;
01459     int yy_more_flag;
01460     int yy_more_len;
01461 
01462     YYSTYPE * yylval_r;
01463 
01464     YYLTYPE * yylloc_r;
01465 
01466     }; /* end struct yyguts_t */
01467 
01468     /* This must go here because YYSTYPE and YYLTYPE are included
01469      * from bison output in section 1.*/
01470     #    define yylval yyg->yylval_r
01471     
01472     #    define yylloc yyg->yylloc_r
01473     
01474 /* Accessor methods to globals.
01475    These are made visible to non-reentrant scanners for convenience. */
01476 
01477 int ast_yylex_destroy (yyscan_t yyscanner );
01478 
01479 int ast_yyget_debug (yyscan_t yyscanner );
01480 
01481 void ast_yyset_debug (int debug_flag ,yyscan_t yyscanner );
01482 
01483 YY_EXTRA_TYPE ast_yyget_extra (yyscan_t yyscanner );
01484 
01485 void ast_yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
01486 
01487 FILE *ast_yyget_in (yyscan_t yyscanner );
01488 
01489 void ast_yyset_in  (FILE * in_str ,yyscan_t yyscanner );
01490 
01491 FILE *ast_yyget_out (yyscan_t yyscanner );
01492 
01493 void ast_yyset_out  (FILE * out_str ,yyscan_t yyscanner );
01494 
01495 int ast_yyget_leng (yyscan_t yyscanner );
01496 
01497 char *ast_yyget_text (yyscan_t yyscanner );
01498 
01499 int ast_yyget_lineno (yyscan_t yyscanner );
01500 
01501 void ast_yyset_lineno (int line_number ,yyscan_t yyscanner );
01502 
01503 YYSTYPE * ast_yyget_lval (yyscan_t yyscanner );
01504 
01505 void ast_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
01506 
01507        YYLTYPE *ast_yyget_lloc (yyscan_t yyscanner );
01508     
01509         void ast_yyset_lloc (YYLTYPE * yylloc_param ,yyscan_t yyscanner );
01510     
01511 /* Macros after this point can all be overridden by user definitions in
01512  * section 1.
01513  */
01514 
01515 #ifndef YY_SKIP_YYWRAP
01516 #ifdef __cplusplus
01517 extern "C" int ast_yywrap (yyscan_t yyscanner );
01518 #else
01519 extern int ast_yywrap (yyscan_t yyscanner );
01520 #endif
01521 #endif
01522 
01523     static void yyunput (int c,char *buf_ptr  ,yyscan_t yyscanner);
01524     
01525 #ifndef yytext_ptr
01526 static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
01527 #endif
01528 
01529 #ifdef YY_NEED_STRLEN
01530 static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
01531 #endif
01532 
01533 #ifndef YY_NO_INPUT
01534 
01535 #ifdef __cplusplus
01536 static int yyinput (yyscan_t yyscanner );
01537 #else
01538 static int input (yyscan_t yyscanner );
01539 #endif
01540 
01541 #endif
01542 
01543 /* Amount of stuff to slurp up with each read. */
01544 #ifndef YY_READ_BUF_SIZE
01545 #define YY_READ_BUF_SIZE 8192
01546 #endif
01547 
01548 /* Copy whatever the last rule matched to the standard output. */
01549 #ifndef ECHO
01550 /* This used to be an fputs(), but since the string might contain NUL's,
01551  * we now use fwrite().
01552  */
01553 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
01554 #endif
01555 
01556 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
01557  * is returned in "result".
01558  */
01559 #ifndef YY_INPUT
01560 #define YY_INPUT(buf,result,max_size) \
01561    errno=0; \
01562    while ( (result = read( fileno(yyin), (char *) buf, max_size )) < 0 ) \
01563    { \
01564       if( errno != EINTR) \
01565       { \
01566          YY_FATAL_ERROR( "input in flex scanner failed" ); \
01567          break; \
01568       } \
01569       errno=0; \
01570       clearerr(yyin); \
01571    }\
01572 \
01573 
01574 #endif
01575 
01576 /* No semi-colon after return; correct usage is to write "yyterminate();" -
01577  * we don't want an extra ';' after the "return" because that will cause
01578  * some compilers to complain about unreachable statements.
01579  */
01580 #ifndef yyterminate
01581 #define yyterminate() return YY_NULL
01582 #endif
01583 
01584 /* Number of entries by which start-condition stack grows. */
01585 #ifndef YY_START_STACK_INCR
01586 #define YY_START_STACK_INCR 25
01587 #endif
01588 
01589 /* Report a fatal error. */
01590 #ifndef YY_FATAL_ERROR
01591 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
01592 #endif
01593 
01594 /* end tables serialization structures and prototypes */
01595 
01596 /* Default declaration of generated scanner - a define so the user can
01597  * easily add parameters.
01598  */
01599 #ifndef YY_DECL
01600 #define YY_DECL_IS_OURS 1
01601 
01602 extern int ast_yylex (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);
01603 
01604 #define YY_DECL int ast_yylex (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
01605 #endif /* !YY_DECL */
01606 
01607 /* Code executed at the beginning of each rule, after yytext and yyleng
01608  * have been set up.
01609  */
01610 #ifndef YY_USER_ACTION
01611 #define YY_USER_ACTION
01612 #endif
01613 
01614 /* Code executed at the end of each rule. */
01615 #ifndef YY_BREAK
01616 #define YY_BREAK break;
01617 #endif
01618 
01619 #define YY_RULE_SETUP \
01620    YY_USER_ACTION
01621 
01622 /** The main scanner function which does all the work.
01623  */
01624 YY_DECL
01625 {
01626    register yy_state_type yy_current_state;
01627    register char *yy_cp, *yy_bp;
01628    register int yy_act;
01629     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
01630 
01631 #line 104 "ast_expr2.fl"
01632 
01633 
01634 #line 1635 "ast_expr2f.c"
01635 
01636     yylval = yylval_param;
01637 
01638     yylloc = yylloc_param;
01639 
01640    if ( yyg->yy_init )
01641       {
01642       yyg->yy_init = 0;
01643 
01644 #ifdef YY_USER_INIT
01645       YY_USER_INIT;
01646 #endif
01647 
01648       if ( ! yyg->yy_start )
01649          yyg->yy_start = 1;   /* first start state */
01650 
01651       if ( ! yyin )
01652          yyin = stdin;
01653 
01654       if ( ! yyout )
01655          yyout = stdout;
01656 
01657       if ( ! YY_CURRENT_BUFFER ) {
01658          ast_yyensure_buffer_stack (yyscanner);
01659          YY_CURRENT_BUFFER_LVALUE =
01660             ast_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
01661       }
01662 
01663       ast_yy_load_buffer_state(yyscanner );
01664       }
01665 
01666    while ( 1 )    /* loops until end-of-file is reached */
01667       {
01668       yyg->yy_more_len = 0;
01669       if ( yyg->yy_more_flag )
01670          {
01671          yyg->yy_more_len = yyg->yy_c_buf_p - yyg->yytext_ptr;
01672          yyg->yy_more_flag = 0;
01673          }
01674       yy_cp = yyg->yy_c_buf_p;
01675 
01676       /* Support of yytext. */
01677       *yy_cp = yyg->yy_hold_char;
01678 
01679       /* yy_bp points to the position in yy_ch_buf of the start of
01680        * the current run.
01681        */
01682       yy_bp = yy_cp;
01683 
01684       yy_current_state = yyg->yy_start;
01685 yy_match:
01686       while ( (yy_current_state = yy_nxt[yy_current_state][ YY_SC_TO_UI(*yy_cp) ]) > 0 )
01687          {
01688          if ( yy_accept[yy_current_state] )
01689             {
01690             yyg->yy_last_accepting_state = yy_current_state;
01691             yyg->yy_last_accepting_cpos = yy_cp;
01692             }
01693 
01694          ++yy_cp;
01695          }
01696 
01697       yy_current_state = -yy_current_state;
01698 
01699 yy_find_action:
01700       yy_act = yy_accept[yy_current_state];
01701 
01702       YY_DO_BEFORE_ACTION;
01703 
01704 do_action:  /* This label is used only to access EOF actions. */
01705 
01706       switch ( yy_act )
01707    { /* beginning of action switch */
01708          case 0: /* must back up */
01709          /* undo the effects of YY_DO_BEFORE_ACTION */
01710          *yy_cp = yyg->yy_hold_char;
01711          yy_cp = yyg->yy_last_accepting_cpos + 1;
01712          yy_current_state = yyg->yy_last_accepting_state;
01713          goto yy_find_action;
01714 
01715 case 1:
01716 YY_RULE_SETUP
01717 #line 106 "ast_expr2.fl"
01718 { SET_COLUMNS; SET_STRING; return TOK_OR;}
01719    YY_BREAK
01720 case 2:
01721 YY_RULE_SETUP
01722 #line 107 "ast_expr2.fl"
01723 { SET_COLUMNS; SET_STRING; return TOK_AND;}
01724    YY_BREAK
01725 case 3:
01726 YY_RULE_SETUP
01727 #line 108 "ast_expr2.fl"
01728 { SET_COLUMNS; SET_STRING; return TOK_EQ;}
01729    YY_BREAK
01730 case 4:
01731 YY_RULE_SETUP
01732 #line 109 "ast_expr2.fl"
01733 { SET_COLUMNS; SET_STRING; return TOK_OR;}
01734    YY_BREAK
01735 case 5:
01736 YY_RULE_SETUP
01737 #line 110 "ast_expr2.fl"
01738 { SET_COLUMNS; SET_STRING; return TOK_AND;}
01739    YY_BREAK
01740 case 6:
01741 YY_RULE_SETUP
01742 #line 111 "ast_expr2.fl"
01743 { SET_COLUMNS; SET_STRING; return TOK_EQ;}
01744    YY_BREAK
01745 case 7:
01746 YY_RULE_SETUP
01747 #line 112 "ast_expr2.fl"
01748 { SET_COLUMNS; SET_STRING; return TOK_EQTILDE;}
01749    YY_BREAK
01750 case 8:
01751 YY_RULE_SETUP
01752 #line 113 "ast_expr2.fl"
01753 { SET_COLUMNS; SET_STRING; return TOK_GT;}
01754    YY_BREAK
01755 case 9:
01756 YY_RULE_SETUP
01757 #line 114 "ast_expr2.fl"
01758 { SET_COLUMNS; SET_STRING; return TOK_LT;}
01759    YY_BREAK
01760 case 10:
01761 YY_RULE_SETUP
01762 #line 115 "ast_expr2.fl"
01763 { SET_COLUMNS; SET_STRING; return TOK_GE;}
01764    YY_BREAK
01765 case 11:
01766 YY_RULE_SETUP
01767 #line 116 "ast_expr2.fl"
01768 { SET_COLUMNS; SET_STRING; return TOK_LE;}
01769    YY_BREAK
01770 case 12:
01771 YY_RULE_SETUP
01772 #line 117 "ast_expr2.fl"
01773 { SET_COLUMNS; SET_STRING; return TOK_NE;}
01774    YY_BREAK
01775 case 13:
01776 YY_RULE_SETUP
01777 #line 118 "ast_expr2.fl"
01778 { SET_COLUMNS; SET_STRING; return TOK_PLUS;}
01779    YY_BREAK
01780 case 14:
01781 YY_RULE_SETUP
01782 #line 119 "ast_expr2.fl"
01783 { SET_COLUMNS; SET_STRING; return TOK_MINUS;}
01784    YY_BREAK
01785 case 15:
01786 YY_RULE_SETUP
01787 #line 120 "ast_expr2.fl"
01788 { SET_COLUMNS; SET_STRING; return TOK_MULT;}
01789    YY_BREAK
01790 case 16:
01791 YY_RULE_SETUP
01792 #line 121 "ast_expr2.fl"
01793 { SET_COLUMNS; SET_STRING; return TOK_DIV;}
01794    YY_BREAK
01795 case 17:
01796 YY_RULE_SETUP
01797 #line 122 "ast_expr2.fl"
01798 { SET_COLUMNS; SET_STRING; return TOK_MOD;}
01799    YY_BREAK
01800 case 18:
01801 YY_RULE_SETUP
01802 #line 123 "ast_expr2.fl"
01803 { SET_COLUMNS; SET_STRING; return TOK_COND;}
01804    YY_BREAK
01805 case 19:
01806 YY_RULE_SETUP
01807 #line 124 "ast_expr2.fl"
01808 { SET_COLUMNS; SET_STRING; return TOK_COMPL;}
01809    YY_BREAK
01810 case 20:
01811 YY_RULE_SETUP
01812 #line 125 "ast_expr2.fl"
01813 { SET_COLUMNS; SET_STRING; return TOK_COLON;}
01814    YY_BREAK
01815 case 21:
01816 YY_RULE_SETUP
01817 #line 126 "ast_expr2.fl"
01818 { SET_COLUMNS; SET_STRING; return TOK_COLONCOLON;}
01819    YY_BREAK
01820 case 22:
01821 YY_RULE_SETUP
01822 #line 127 "ast_expr2.fl"
01823 { SET_COLUMNS; SET_STRING; return TOK_LP;}
01824    YY_BREAK
01825 case 23:
01826 YY_RULE_SETUP
01827 #line 128 "ast_expr2.fl"
01828 { SET_COLUMNS; SET_STRING; return TOK_RP;}
01829    YY_BREAK
01830 case 24:
01831 YY_RULE_SETUP
01832 #line 129 "ast_expr2.fl"
01833 {
01834       /* gather the contents of ${} expressions, with trailing stuff,
01835        * into a single TOKEN.
01836        * They are much more complex now than they used to be
01837        */
01838       curlycount = 0;
01839       BEGIN(var);
01840       yymore();
01841    }
01842    YY_BREAK
01843 case 25:
01844 YY_RULE_SETUP
01845 #line 139 "ast_expr2.fl"
01846 {}
01847    YY_BREAK
01848 case 26:
01849 /* rule 26 can match eol */
01850 YY_RULE_SETUP
01851 #line 140 "ast_expr2.fl"
01852 {SET_COLUMNS; SET_STRING; return TOKEN;}
01853    YY_BREAK
01854 case 27:
01855 /* rule 27 can match eol */
01856 YY_RULE_SETUP
01857 #line 142 "ast_expr2.fl"
01858 {/* what to do with eol */}
01859    YY_BREAK
01860 case 28:
01861 YY_RULE_SETUP
01862 #line 143 "ast_expr2.fl"
01863 {
01864       SET_COLUMNS;
01865       /* the original behavior of the expression parser was
01866        * to bring in numbers as a numeric string
01867        */
01868       SET_NUMERIC_STRING;
01869       return TOKEN;
01870    }
01871    YY_BREAK
01872 case 29:
01873 YY_RULE_SETUP
01874 #line 152 "ast_expr2.fl"
01875 {
01876       SET_COLUMNS;
01877       SET_STRING;
01878       return TOKEN;
01879    }
01880    YY_BREAK
01881 case 30:
01882 /* rule 30 can match eol */
01883 YY_RULE_SETUP
01884 #line 159 "ast_expr2.fl"
01885 {
01886       curlycount--;
01887       if (curlycount < 0) {
01888          BEGIN(trail);
01889          yymore();
01890       } else {
01891          yymore();
01892       }
01893    }
01894    YY_BREAK
01895 case 31:
01896 /* rule 31 can match eol */
01897 YY_RULE_SETUP
01898 #line 169 "ast_expr2.fl"
01899 {
01900       curlycount++;
01901       yymore();
01902    }
01903    YY_BREAK
01904 case 32:
01905 YY_RULE_SETUP
01906 #line 175 "ast_expr2.fl"
01907 {
01908       BEGIN(0);
01909       SET_COLUMNS;
01910       SET_STRING;
01911       return TOKEN;
01912    }
01913    YY_BREAK
01914 case 33:
01915 /* rule 33 can match eol */
01916 YY_RULE_SETUP
01917 #line 182 "ast_expr2.fl"
01918 {
01919       char c = yytext[yyleng-1];
01920       BEGIN(0);
01921       unput(c);
01922       SET_COLUMNS;
01923       SET_STRING;
01924       return TOKEN;
01925    }
01926    YY_BREAK
01927 case 34:
01928 YY_RULE_SETUP
01929 #line 191 "ast_expr2.fl"
01930 {
01931       curlycount = 0;
01932       BEGIN(var);
01933       yymore();
01934    }
01935    YY_BREAK
01936 case YY_STATE_EOF(trail):
01937 #line 197 "ast_expr2.fl"
01938 {
01939       BEGIN(0);
01940       SET_COLUMNS;
01941       SET_STRING;
01942       return TOKEN;
01943       /*actually, if an expr is only a variable ref, this could happen a LOT */
01944    }
01945    YY_BREAK
01946 case 35:
01947 YY_RULE_SETUP
01948 #line 205 "ast_expr2.fl"
01949 ECHO;
01950    YY_BREAK
01951 #line 1952 "ast_expr2f.c"
01952 case YY_STATE_EOF(INITIAL):
01953 case YY_STATE_EOF(var):
01954    yyterminate();
01955 
01956    case YY_END_OF_BUFFER:
01957       {
01958       /* Amount of text matched not including the EOB char. */
01959       int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
01960 
01961       /* Undo the effects of YY_DO_BEFORE_ACTION. */
01962       *yy_cp = yyg->yy_hold_char;
01963       YY_RESTORE_YY_MORE_OFFSET
01964 
01965       if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
01966          {
01967          /* We're scanning a new file or input source.  It's
01968           * possible that this happened because the user
01969           * just pointed yyin at a new source and called
01970           * ast_yylex().  If so, then we have to assure
01971           * consistency between YY_CURRENT_BUFFER and our
01972           * globals.  Here is the right place to do so, because
01973           * this is the first action (other than possibly a
01974           * back-up) that will match for the new input source.
01975           */
01976          yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
01977          YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
01978          YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
01979          }
01980 
01981       /* Note that here we test for yy_c_buf_p "<=" to the position
01982        * of the first EOB in the buffer, since yy_c_buf_p will
01983        * already have been incremented past the NUL character
01984        * (since all states make transitions on EOB to the
01985        * end-of-buffer state).  Contrast this with the test
01986        * in input().
01987        */
01988       if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
01989          { /* This was really a NUL. */
01990          yy_state_type yy_next_state;
01991 
01992          yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
01993 
01994          yy_current_state = yy_get_previous_state( yyscanner );
01995 
01996          /* Okay, we're now positioned to make the NUL
01997           * transition.  We couldn't have
01998           * yy_get_previous_state() go ahead and do it
01999           * for us because it doesn't know how to deal
02000           * with the possibility of jamming (and we don't
02001           * want to build jamming into it because then it
02002           * will run more slowly).
02003           */
02004 
02005          yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
02006 
02007          yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
02008 
02009          if ( yy_next_state )
02010             {
02011             /* Consume the NUL. */
02012             yy_cp = ++yyg->yy_c_buf_p;
02013             yy_current_state = yy_next_state;
02014             goto yy_match;
02015             }
02016 
02017          else
02018             {
02019             yy_cp = yyg->yy_c_buf_p;
02020             goto yy_find_action;
02021             }
02022          }
02023 
02024       else switch ( yy_get_next_buffer( yyscanner ) )
02025          {
02026          case EOB_ACT_END_OF_FILE:
02027             {
02028             yyg->yy_did_buffer_switch_on_eof = 0;
02029 
02030             if ( ast_yywrap(yyscanner ) )
02031                {
02032                /* Note: because we've taken care in
02033                 * yy_get_next_buffer() to have set up
02034                 * yytext, we can now set up
02035                 * yy_c_buf_p so that if some total
02036                 * hoser (like flex itself) wants to
02037                 * call the scanner after we return the
02038                 * YY_NULL, it'll still work - another
02039                 * YY_NULL will get returned.
02040                 */
02041                yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
02042 
02043                yy_act = YY_STATE_EOF(YY_START);
02044                goto do_action;
02045                }
02046 
02047             else
02048                {
02049                if ( ! yyg->yy_did_buffer_switch_on_eof )
02050                   YY_NEW_FILE;
02051                }
02052             break;
02053             }
02054 
02055          case EOB_ACT_CONTINUE_SCAN:
02056             yyg->yy_c_buf_p =
02057                yyg->yytext_ptr + yy_amount_of_matched_text;
02058 
02059             yy_current_state = yy_get_previous_state( yyscanner );
02060 
02061             yy_cp = yyg->yy_c_buf_p;
02062             yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
02063             goto yy_match;
02064 
02065          case EOB_ACT_LAST_MATCH:
02066             yyg->yy_c_buf_p =
02067             &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
02068 
02069             yy_current_state = yy_get_previous_state( yyscanner );
02070 
02071             yy_cp = yyg->yy_c_buf_p;
02072             yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
02073             goto yy_find_action;
02074          }
02075       break;
02076       }
02077 
02078    default:
02079       YY_FATAL_ERROR(
02080          "fatal flex scanner internal error--no action found" );
02081    } /* end of action switch */
02082       } /* end of scanning one token */
02083 } /* end of ast_yylex */
02084 
02085 /* yy_get_next_buffer - try to read in a new buffer
02086  *
02087  * Returns a code representing an action:
02088  * EOB_ACT_LAST_MATCH -
02089  * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
02090  * EOB_ACT_END_OF_FILE - end of file
02091  */
02092 static int yy_get_next_buffer (yyscan_t yyscanner)
02093 {
02094     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02095    register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
02096    register char *source = yyg->yytext_ptr;
02097    register int number_to_move, i;
02098    int ret_val;
02099 
02100    if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
02101       YY_FATAL_ERROR(
02102       "fatal flex scanner internal error--end of buffer missed" );
02103 
02104    if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
02105       { /* Don't try to fill the buffer, so this is an EOF. */
02106       if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
02107          {
02108          /* We matched a single character, the EOB, so
02109           * treat this as a final EOF.
02110           */
02111          return EOB_ACT_END_OF_FILE;
02112          }
02113 
02114       else
02115          {
02116          /* We matched some text prior to the EOB, first
02117           * process it.
02118           */
02119          return EOB_ACT_LAST_MATCH;
02120          }
02121       }
02122 
02123    /* Try to read more data. */
02124 
02125    /* First move last chars to start of buffer. */
02126    number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
02127 
02128    for ( i = 0; i < number_to_move; ++i )
02129       *(dest++) = *(source++);
02130 
02131    if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
02132       /* don't do the read, it's not guaranteed to return an EOF,
02133        * just force an EOF
02134        */
02135       YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
02136 
02137    else
02138       {
02139          size_t num_to_read =
02140          YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
02141 
02142       while ( num_to_read <= 0 )
02143          { /* Not enough room in the buffer - grow it. */
02144 
02145          /* just a shorter name for the current buffer */
02146          YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
02147 
02148          int yy_c_buf_p_offset =
02149             (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
02150 
02151          if ( b->yy_is_our_buffer )
02152             {
02153             int new_size = b->yy_buf_size * 2;
02154 
02155             if ( new_size <= 0 )
02156                b->yy_buf_size += b->yy_buf_size / 8;
02157             else
02158                b->yy_buf_size *= 2;
02159 
02160             b->yy_ch_buf = (char *)
02161                /* Include room in for 2 EOB chars. */
02162                ast_yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
02163             }
02164          else
02165             /* Can't grow it, we don't own it. */
02166             b->yy_ch_buf = 0;
02167 
02168          if ( ! b->yy_ch_buf )
02169             YY_FATAL_ERROR(
02170             "fatal error - scanner input buffer overflow" );
02171 
02172          yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
02173 
02174          num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
02175                   number_to_move - 1;
02176 
02177          }
02178 
02179       if ( num_to_read > YY_READ_BUF_SIZE )
02180          num_to_read = YY_READ_BUF_SIZE;
02181 
02182       /* Read in more data. */
02183       YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
02184          yyg->yy_n_chars, num_to_read );
02185 
02186       YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
02187       }
02188 
02189    if ( yyg->yy_n_chars == 0 )
02190       {
02191       if ( number_to_move == YY_MORE_ADJ )
02192          {
02193          ret_val = EOB_ACT_END_OF_FILE;
02194          ast_yyrestart(yyin  ,yyscanner);
02195          }
02196 
02197       else
02198          {
02199          ret_val = EOB_ACT_LAST_MATCH;
02200          YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
02201             YY_BUFFER_EOF_PENDING;
02202          }
02203       }
02204 
02205    else
02206       ret_val = EOB_ACT_CONTINUE_SCAN;
02207 
02208    yyg->yy_n_chars += number_to_move;
02209    YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
02210    YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
02211 
02212    yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
02213 
02214    return ret_val;
02215 }
02216 
02217 /* yy_get_previous_state - get the state just before the EOB char was reached */
02218 
02219     static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
02220 {
02221    register yy_state_type yy_current_state;
02222    register char *yy_cp;
02223     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02224 
02225    yy_current_state = yyg->yy_start;
02226 
02227    for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
02228       {
02229       if ( *yy_cp )
02230          {
02231          yy_current_state = yy_nxt[yy_current_state][YY_SC_TO_UI(*yy_cp)];
02232          }
02233       else
02234          yy_current_state = yy_NUL_trans[yy_current_state];
02235       if ( yy_accept[yy_current_state] )
02236          {
02237          yyg->yy_last_accepting_state = yy_current_state;
02238          yyg->yy_last_accepting_cpos = yy_cp;
02239          }
02240       }
02241 
02242    return yy_current_state;
02243 }
02244 
02245 /* yy_try_NUL_trans - try to make a transition on the NUL character
02246  *
02247  * synopsis
02248  * next_state = yy_try_NUL_trans( current_state );
02249  */
02250     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state , yyscan_t yyscanner)
02251 {
02252    register int yy_is_jam;
02253     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02254    register char *yy_cp = yyg->yy_c_buf_p;
02255 
02256    yy_current_state = yy_NUL_trans[yy_current_state];
02257    yy_is_jam = (yy_current_state == 0);
02258 
02259    if ( ! yy_is_jam )
02260       {
02261       if ( yy_accept[yy_current_state] )
02262          {
02263          yyg->yy_last_accepting_state = yy_current_state;
02264          yyg->yy_last_accepting_cpos = yy_cp;
02265          }
02266       }
02267 
02268    return yy_is_jam ? 0 : yy_current_state;
02269 }
02270 
02271     static void yyunput (int c, register char * yy_bp , yyscan_t yyscanner)
02272 {
02273    register char *yy_cp;
02274     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02275 
02276     yy_cp = yyg->yy_c_buf_p;
02277 
02278    /* undo effects of setting up yytext */
02279    *yy_cp = yyg->yy_hold_char;
02280 
02281    if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
02282       { /* need to shift things up to make room */
02283       /* +2 for EOB chars. */
02284       register int number_to_move = yyg->yy_n_chars + 2;
02285       register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
02286                YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
02287       register char *source =
02288             &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
02289 
02290       while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
02291          *--dest = *--source;
02292 
02293       yy_cp += (int) (dest - source);
02294       yy_bp += (int) (dest - source);
02295       YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
02296          yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
02297 
02298       if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
02299          YY_FATAL_ERROR( "flex scanner push-back overflow" );
02300       }
02301 
02302    *--yy_cp = (char) c;
02303 
02304    yyg->yytext_ptr = yy_bp;
02305    yyg->yy_hold_char = *yy_cp;
02306    yyg->yy_c_buf_p = yy_cp;
02307 }
02308 
02309 #ifndef YY_NO_INPUT
02310 #ifdef __cplusplus
02311     static int yyinput (yyscan_t yyscanner)
02312 #else
02313     static int input  (yyscan_t yyscanner)
02314 #endif
02315 
02316 {
02317    int c;
02318     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02319 
02320    *yyg->yy_c_buf_p = yyg->yy_hold_char;
02321 
02322    if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
02323       {
02324       /* yy_c_buf_p now points to the character we want to return.
02325        * If this occurs *before* the EOB characters, then it's a
02326        * valid NUL; if not, then we've hit the end of the buffer.
02327        */
02328       if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
02329          /* This was really a NUL. */
02330          *yyg->yy_c_buf_p = '\0';
02331 
02332       else
02333          { /* need more input */
02334          int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
02335          ++yyg->yy_c_buf_p;
02336 
02337          switch ( yy_get_next_buffer( yyscanner ) )
02338             {
02339             case EOB_ACT_LAST_MATCH:
02340                /* This happens because yy_g_n_b()
02341                 * sees that we've accumulated a
02342                 * token and flags that we need to
02343                 * try matching the token before
02344                 * proceeding.  But for input(),
02345                 * there's no matching to consider.
02346                 * So convert the EOB_ACT_LAST_MATCH
02347                 * to EOB_ACT_END_OF_FILE.
02348                 */
02349 
02350                /* Reset buffer status. */
02351                ast_yyrestart(yyin ,yyscanner);
02352 
02353                /*FALLTHROUGH*/
02354 
02355             case EOB_ACT_END_OF_FILE:
02356                {
02357                if ( ast_yywrap(yyscanner ) )
02358                   return EOF;
02359 
02360                if ( ! yyg->yy_did_buffer_switch_on_eof )
02361                   YY_NEW_FILE;
02362 #ifdef __cplusplus
02363                return yyinput(yyscanner);
02364 #else
02365                return input(yyscanner);
02366 #endif
02367                }
02368 
02369             case EOB_ACT_CONTINUE_SCAN:
02370                yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
02371                break;
02372             }
02373          }
02374       }
02375 
02376    c = *(unsigned char *) yyg->yy_c_buf_p;   /* cast for 8-bit char's */
02377    *yyg->yy_c_buf_p = '\0';   /* preserve yytext */
02378    yyg->yy_hold_char = *++yyg->yy_c_buf_p;
02379 
02380    return c;
02381 }
02382 #endif   /* ifndef YY_NO_INPUT */
02383 
02384 /** Immediately switch to a different input stream.
02385  * @param input_file A readable stream.
02386  * @param yyscanner The scanner object.
02387  * @note This function does not reset the start condition to @c INITIAL .
02388  */
02389     void ast_yyrestart  (FILE * input_file , yyscan_t yyscanner)
02390 {
02391     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02392 
02393    if ( ! YY_CURRENT_BUFFER ){
02394         ast_yyensure_buffer_stack (yyscanner);
02395       YY_CURRENT_BUFFER_LVALUE =
02396             ast_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
02397    }
02398 
02399    ast_yy_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
02400    ast_yy_load_buffer_state(yyscanner );
02401 }
02402 
02403 /** Switch to a different input buffer.
02404  * @param new_buffer The new input buffer.
02405  * @param yyscanner The scanner object.
02406  */
02407     void ast_yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer , yyscan_t yyscanner)
02408 {
02409     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02410 
02411    /* TODO. We should be able to replace this entire function body
02412     * with
02413     *    ast_yypop_buffer_state();
02414     *    ast_yypush_buffer_state(new_buffer);
02415      */
02416    ast_yyensure_buffer_stack (yyscanner);
02417    if ( YY_CURRENT_BUFFER == new_buffer )
02418       return;
02419 
02420    if ( YY_CURRENT_BUFFER )
02421       {
02422       /* Flush out information for old buffer. */
02423       *yyg->yy_c_buf_p = yyg->yy_hold_char;
02424       YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
02425       YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
02426       }
02427 
02428    YY_CURRENT_BUFFER_LVALUE = new_buffer;
02429    ast_yy_load_buffer_state(yyscanner );
02430 
02431    /* We don't actually know whether we did this switch during
02432     * EOF (ast_yywrap()) processing, but the only time this flag
02433     * is looked at is after ast_yywrap() is called, so it's safe
02434     * to go ahead and always set it.
02435     */
02436    yyg->yy_did_buffer_switch_on_eof = 1;
02437 }
02438 
02439 static void ast_yy_load_buffer_state  (yyscan_t yyscanner)
02440 {
02441     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02442    yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
02443    yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
02444    yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
02445    yyg->yy_hold_char = *yyg->yy_c_buf_p;
02446 }
02447 
02448 /** Allocate and initialize an input buffer state.
02449  * @param file A readable stream.
02450  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
02451  * @param yyscanner The scanner object.
02452  * @return the allocated buffer state.
02453  */
02454     YY_BUFFER_STATE ast_yy_create_buffer  (FILE * file, int  size , yyscan_t yyscanner)
02455 {
02456    YY_BUFFER_STATE b;
02457     
02458    b = (YY_BUFFER_STATE) ast_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
02459    if ( ! b )
02460       YY_FATAL_ERROR( "out of dynamic memory in ast_yy_create_buffer()" );
02461 
02462    b->yy_buf_size = size;
02463 
02464    /* yy_ch_buf has to be 2 characters longer than the size given because
02465     * we need to put in 2 end-of-buffer characters.
02466     */
02467    b->yy_ch_buf = (char *) ast_yyalloc(b->yy_buf_size + 2 ,yyscanner );
02468    if ( ! b->yy_ch_buf )
02469       YY_FATAL_ERROR( "out of dynamic memory in ast_yy_create_buffer()" );
02470 
02471    b->yy_is_our_buffer = 1;
02472 
02473    ast_yy_init_buffer(b,file ,yyscanner);
02474 
02475    return b;
02476 }
02477 
02478 /** Destroy the buffer.
02479  * @param b a buffer created with ast_yy_create_buffer()
02480  * @param yyscanner The scanner object.
02481  */
02482     void ast_yy_delete_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
02483 {
02484     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02485 
02486    if ( ! b )
02487       return;
02488 
02489    if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
02490       YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
02491 
02492    if ( b->yy_is_our_buffer )
02493       ast_yyfree((void *) b->yy_ch_buf ,yyscanner );
02494 
02495    ast_yyfree((void *) b ,yyscanner );
02496 }
02497 
02498 #ifndef __cplusplus
02499 extern int isatty (int );
02500 #endif /* __cplusplus */
02501     
02502 /* Initializes or reinitializes a buffer.
02503  * This function is sometimes called more than once on the same buffer,
02504  * such as during a ast_yyrestart() or at EOF.
02505  */
02506     static void ast_yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file , yyscan_t yyscanner)
02507 
02508 {
02509    int oerrno = errno;
02510     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02511 
02512    ast_yy_flush_buffer(b ,yyscanner);
02513 
02514    b->yy_input_file = file;
02515    b->yy_fill_buffer = 1;
02516 
02517     /* If b is the current buffer, then ast_yy_init_buffer was _probably_
02518      * called from ast_yyrestart() or through yy_get_next_buffer.
02519      * In that case, we don't want to reset the lineno or column.
02520      */
02521     if (b != YY_CURRENT_BUFFER){
02522         b->yy_bs_lineno = 1;
02523         b->yy_bs_column = 0;
02524     }
02525 
02526         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
02527     
02528    errno = oerrno;
02529 }
02530 
02531 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
02532  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
02533  * @param yyscanner The scanner object.
02534  */
02535     void ast_yy_flush_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
02536 {
02537     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02538    if ( ! b )
02539       return;
02540 
02541    b->yy_n_chars = 0;
02542 
02543    /* We always need two end-of-buffer characters.  The first causes
02544     * a transition to the end-of-buffer state.  The second causes
02545     * a jam in that state.
02546     */
02547    b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
02548    b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
02549 
02550    b->yy_buf_pos = &b->yy_ch_buf[0];
02551 
02552    b->yy_at_bol = 1;
02553    b->yy_buffer_status = YY_BUFFER_NEW;
02554 
02555    if ( b == YY_CURRENT_BUFFER )
02556       ast_yy_load_buffer_state(yyscanner );
02557 }
02558 
02559 /** Pushes the new state onto the stack. The new state becomes
02560  *  the current state. This function will allocate the stack
02561  *  if necessary.
02562  *  @param new_buffer The new state.
02563  *  @param yyscanner The scanner object.
02564  */
02565 void ast_yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
02566 {
02567     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02568    if (new_buffer == NULL)
02569       return;
02570 
02571    ast_yyensure_buffer_stack(yyscanner);
02572 
02573    /* This block is copied from ast_yy_switch_to_buffer. */
02574    if ( YY_CURRENT_BUFFER )
02575       {
02576       /* Flush out information for old buffer. */
02577       *yyg->yy_c_buf_p = yyg->yy_hold_char;
02578       YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
02579       YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
02580       }
02581 
02582    /* Only push if top exists. Otherwise, replace top. */
02583    if (YY_CURRENT_BUFFER)
02584       yyg->yy_buffer_stack_top++;
02585    YY_CURRENT_BUFFER_LVALUE = new_buffer;
02586 
02587    /* copied from ast_yy_switch_to_buffer. */
02588    ast_yy_load_buffer_state(yyscanner );
02589    yyg->yy_did_buffer_switch_on_eof = 1;
02590 }
02591 
02592 /** Removes and deletes the top of the stack, if present.
02593  *  The next element becomes the new top.
02594  *  @param yyscanner The scanner object.
02595  */
02596 void ast_yypop_buffer_state (yyscan_t yyscanner)
02597 {
02598     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02599    if (!YY_CURRENT_BUFFER)
02600       return;
02601 
02602    ast_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
02603    YY_CURRENT_BUFFER_LVALUE = NULL;
02604    if (yyg->yy_buffer_stack_top > 0)
02605       --yyg->yy_buffer_stack_top;
02606 
02607    if (YY_CURRENT_BUFFER) {
02608       ast_yy_load_buffer_state(yyscanner );
02609       yyg->yy_did_buffer_switch_on_eof = 1;
02610    }
02611 }
02612 
02613 /* Allocates the stack if it does not exist.
02614  *  Guarantees space for at least one push.
02615  */
02616 static void ast_yyensure_buffer_stack (yyscan_t yyscanner)
02617 {
02618    int num_to_alloc;
02619     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02620 
02621    if (!yyg->yy_buffer_stack) {
02622 
02623       /* First allocation is just for 2 elements, since we don't know if this
02624        * scanner will even need a stack. We use 2 instead of 1 to avoid an
02625        * immediate realloc on the next call.
02626          */
02627       num_to_alloc = 1;
02628       yyg->yy_buffer_stack = (struct yy_buffer_state**)ast_yyalloc
02629                         (num_to_alloc * sizeof(struct yy_buffer_state*)
02630                         , yyscanner);
02631       
02632       memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
02633             
02634       yyg->yy_buffer_stack_max = num_to_alloc;
02635       yyg->yy_buffer_stack_top = 0;
02636       return;
02637    }
02638 
02639    if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
02640 
02641       /* Increase the buffer to prepare for a possible push. */
02642       int grow_size = 8 /* arbitrary grow size */;
02643 
02644       num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
02645       yyg->yy_buffer_stack = (struct yy_buffer_state**)ast_yyrealloc
02646                         (yyg->yy_buffer_stack,
02647                         num_to_alloc * sizeof(struct yy_buffer_state*)
02648                         , yyscanner);
02649 
02650       /* zero only the new slots.*/
02651       memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
02652       yyg->yy_buffer_stack_max = num_to_alloc;
02653    }
02654 }
02655 
02656 /** Setup the input buffer state to scan directly from a user-specified character buffer.
02657  * @param base the character buffer
02658  * @param size the size in bytes of the character buffer
02659  * @param yyscanner The scanner object.
02660  * @return the newly allocated buffer state object. 
02661  */
02662 YY_BUFFER_STATE ast_yy_scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscanner)
02663 {
02664    YY_BUFFER_STATE b;
02665     
02666    if ( size < 2 ||
02667         base[size-2] != YY_END_OF_BUFFER_CHAR ||
02668         base[size-1] != YY_END_OF_BUFFER_CHAR )
02669       /* They forgot to leave room for the EOB's. */
02670       return 0;
02671 
02672    b = (YY_BUFFER_STATE) ast_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
02673    if ( ! b )
02674       YY_FATAL_ERROR( "out of dynamic memory in ast_yy_scan_buffer()" );
02675 
02676    b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
02677    b->yy_buf_pos = b->yy_ch_buf = base;
02678    b->yy_is_our_buffer = 0;
02679    b->yy_input_file = 0;
02680    b->yy_n_chars = b->yy_buf_size;
02681    b->yy_is_interactive = 0;
02682    b->yy_at_bol = 1;
02683    b->yy_fill_buffer = 0;
02684    b->yy_buffer_status = YY_BUFFER_NEW;
02685 
02686    ast_yy_switch_to_buffer(b ,yyscanner );
02687 
02688    return b;
02689 }
02690 
02691 /** Setup the input buffer state to scan a string. The next call to ast_yylex() will
02692  * scan from a @e copy of @a str.
02693  * @param str a NUL-terminated string to scan
02694  * @param yyscanner The scanner object.
02695  * @return the newly allocated buffer state object.
02696  * @note If you want to scan bytes that may contain NUL values, then use
02697  *       ast_yy_scan_bytes() instead.
02698  */
02699 YY_BUFFER_STATE ast_yy_scan_string (yyconst char * str , yyscan_t yyscanner)
02700 {
02701     
02702    return ast_yy_scan_bytes(str,strlen(str) ,yyscanner);
02703 }
02704 
02705 /** Setup the input buffer state to scan the given bytes. The next call to ast_yylex() will
02706  * scan from a @e copy of @a bytes.
02707  * @param bytes the byte buffer to scan
02708  * @param len the number of bytes in the buffer pointed to by @a bytes.
02709  * @param yyscanner The scanner object.
02710  * @return the newly allocated buffer state object.
02711  */
02712 YY_BUFFER_STATE ast_yy_scan_bytes  (yyconst char * bytes, int  len , yyscan_t yyscanner)
02713 {
02714    YY_BUFFER_STATE b;
02715    char *buf;
02716    yy_size_t n;
02717    int i;
02718     
02719    /* Get memory for full buffer, including space for trailing EOB's. */
02720    n = len + 2;
02721    buf = (char *) ast_yyalloc(n ,yyscanner );
02722    if ( ! buf )
02723       YY_FATAL_ERROR( "out of dynamic memory in ast_yy_scan_bytes()" );
02724 
02725    for ( i = 0; i < len; ++i )
02726       buf[i] = bytes[i];
02727 
02728    buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
02729 
02730    b = ast_yy_scan_buffer(buf,n ,yyscanner);
02731    if ( ! b )
02732       YY_FATAL_ERROR( "bad buffer in ast_yy_scan_bytes()" );
02733 
02734    /* It's okay to grow etc. this buffer, and we should throw it
02735     * away when we're done.
02736     */
02737    b->yy_is_our_buffer = 1;
02738 
02739    return b;
02740 }
02741 
02742 #ifndef YY_EXIT_FAILURE
02743 #define YY_EXIT_FAILURE 2
02744 #endif
02745 
02746 static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
02747 {
02748       (void) fprintf( stderr, "%s\n", msg );
02749    exit( YY_EXIT_FAILURE );
02750 }
02751 
02752 /* Redefine yyless() so it works in section 3 code. */
02753 
02754 #undef yyless
02755 #define yyless(n) \
02756    do \
02757       { \
02758       /* Undo effects of setting up yytext. */ \
02759         int yyless_macro_arg = (n); \
02760         YY_LESS_LINENO(yyless_macro_arg);\
02761       yytext[yyleng] = yyg->yy_hold_char; \
02762       yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
02763       yyg->yy_hold_char = *yyg->yy_c_buf_p; \
02764       *yyg->yy_c_buf_p = '\0'; \
02765       yyleng = yyless_macro_arg; \
02766       } \
02767    while ( 0 )
02768 
02769 /* Accessor  methods (get/set functions) to struct members. */
02770 
02771 /** Get the user-defined data for this scanner.
02772  * @param yyscanner The scanner object.
02773  */
02774 YY_EXTRA_TYPE ast_yyget_extra  (yyscan_t yyscanner)
02775 {
02776     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02777     return yyextra;
02778 }
02779 
02780 /** Get the current line number.
02781  * @param yyscanner The scanner object.
02782  */
02783 int ast_yyget_lineno  (yyscan_t yyscanner)
02784 {
02785     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02786     
02787         if (! YY_CURRENT_BUFFER)
02788             return 0;
02789     
02790     return yylineno;
02791 }
02792 
02793 /** Get the current column number.
02794  * @param yyscanner The scanner object.
02795  */
02796 int ast_yyget_column  (yyscan_t yyscanner)
02797 {
02798     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02799     
02800         if (! YY_CURRENT_BUFFER)
02801             return 0;
02802     
02803     return yycolumn;
02804 }
02805 
02806 /** Get the input stream.
02807  * @param yyscanner The scanner object.
02808  */
02809 FILE *ast_yyget_in  (yyscan_t yyscanner)
02810 {
02811     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02812     return yyin;
02813 }
02814 
02815 /** Get the output stream.
02816  * @param yyscanner The scanner object.
02817  */
02818 FILE *ast_yyget_out  (yyscan_t yyscanner)
02819 {
02820     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02821     return yyout;
02822 }
02823 
02824 /** Get the length of the current token.
02825  * @param yyscanner The scanner object.
02826  */
02827 int ast_yyget_leng  (yyscan_t yyscanner)
02828 {
02829     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02830     return yyleng;
02831 }
02832 
02833 /** Get the current token.
02834  * @param yyscanner The scanner object.
02835  */
02836 
02837 char *ast_yyget_text  (yyscan_t yyscanner)
02838 {
02839     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02840     return yytext;
02841 }
02842 
02843 /** Set the user-defined data. This data is never touched by the scanner.
02844  * @param user_defined The data to be associated with this scanner.
02845  * @param yyscanner The scanner object.
02846  */
02847 void ast_yyset_extra (YY_EXTRA_TYPE  user_defined , yyscan_t yyscanner)
02848 {
02849     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02850     yyextra = user_defined ;
02851 }
02852 
02853 /** Set the current line number.
02854  * @param line_number
02855  * @param yyscanner The scanner object.
02856  */
02857 void ast_yyset_lineno (int  line_number , yyscan_t yyscanner)
02858 {
02859     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02860 
02861         /* lineno is only valid if an input buffer exists. */
02862         if (! YY_CURRENT_BUFFER )
02863            yy_fatal_error( "ast_yyset_lineno called with no buffer" , yyscanner); 
02864     
02865     yylineno = line_number;
02866 }
02867 
02868 /** Set the current column.
02869  * @param line_number
02870  * @param yyscanner The scanner object.
02871  */
02872 void ast_yyset_column (int  column_no , yyscan_t yyscanner)
02873 {
02874     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02875 
02876         /* column is only valid if an input buffer exists. */
02877         if (! YY_CURRENT_BUFFER )
02878            yy_fatal_error( "ast_yyset_column called with no buffer" , yyscanner); 
02879     
02880     yycolumn = column_no;
02881 }
02882 
02883 /** Set the input stream. This does not discard the current
02884  * input buffer.
02885  * @param in_str A readable stream.
02886  * @param yyscanner The scanner object.
02887  * @see ast_yy_switch_to_buffer
02888  */
02889 void ast_yyset_in (FILE *  in_str , yyscan_t yyscanner)
02890 {
02891     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02892     yyin = in_str ;
02893 }
02894 
02895 void ast_yyset_out (FILE *  out_str , yyscan_t yyscanner)
02896 {
02897     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02898     yyout = out_str ;
02899 }
02900 
02901 int ast_yyget_debug  (yyscan_t yyscanner)
02902 {
02903     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02904     return yy_flex_debug;
02905 }
02906 
02907 void ast_yyset_debug (int  bdebug , yyscan_t yyscanner)
02908 {
02909     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02910     yy_flex_debug = bdebug ;
02911 }
02912 
02913 /* Accessor methods for yylval and yylloc */
02914 
02915 YYSTYPE * ast_yyget_lval  (yyscan_t yyscanner)
02916 {
02917     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02918     return yylval;
02919 }
02920 
02921 void ast_yyset_lval (YYSTYPE *  yylval_param , yyscan_t yyscanner)
02922 {
02923     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02924     yylval = yylval_param;
02925 }
02926 
02927 YYLTYPE *ast_yyget_lloc  (yyscan_t yyscanner)
02928 {
02929     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02930     return yylloc;
02931 }
02932     
02933 void ast_yyset_lloc (YYLTYPE *  yylloc_param , yyscan_t yyscanner)
02934 {
02935     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02936     yylloc = yylloc_param;
02937 }
02938     
02939 static int yy_init_globals (yyscan_t yyscanner)
02940 {
02941     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02942     /* Initialization is the same as for the non-reentrant scanner.
02943        This function is called once per scanner lifetime. */
02944 
02945     yyg->yy_buffer_stack = 0;
02946     yyg->yy_buffer_stack_top = 0;
02947     yyg->yy_buffer_stack_max = 0;
02948     yyg->yy_c_buf_p = (char *) 0;
02949     yyg->yy_init = 1;
02950     yyg->yy_start = 0;
02951     yyg->yy_start_stack_ptr = 0;
02952     yyg->yy_start_stack_depth = 0;
02953     yyg->yy_start_stack = (int *) 0;
02954 
02955 /* Defined in main.c */
02956 #ifdef YY_STDINIT
02957     yyin = stdin;
02958     yyout = stdout;
02959 #else
02960     yyin = (FILE *) 0;
02961     yyout = (FILE *) 0;
02962 #endif
02963 
02964     /* For future reference: Set errno on error, since we are called by
02965      * ast_yylex_init()
02966      */
02967     return 0;
02968 }
02969 
02970 /* User-visible API */
02971 
02972 /* ast_yylex_init is special because it creates the scanner itself, so it is
02973  * the ONLY reentrant function that doesn't take the scanner as the last argument.
02974  * That's why we explicitly handle the declaration, instead of using our macros.
02975  */
02976 
02977 int ast_yylex_init(yyscan_t* ptr_yy_globals)
02978 
02979 {
02980     if (ptr_yy_globals == NULL){
02981         errno = EINVAL;
02982         return 1;
02983     }
02984 
02985     *ptr_yy_globals = (yyscan_t) ast_yyalloc ( sizeof( struct yyguts_t ), NULL );
02986 
02987     if (*ptr_yy_globals == NULL){
02988         errno = ENOMEM;
02989         return 1;
02990     }
02991 
02992     memset(*ptr_yy_globals,0,sizeof(struct yyguts_t));
02993 
02994     return yy_init_globals ( *ptr_yy_globals );
02995 }
02996 
02997 /* ast_yylex_destroy is for both reentrant and non-reentrant scanners. */
02998 int ast_yylex_destroy  (yyscan_t yyscanner)
02999 {
03000     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
03001 
03002     /* Pop the buffer stack, destroying each element. */
03003    while(YY_CURRENT_BUFFER){
03004       ast_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
03005       YY_CURRENT_BUFFER_LVALUE = NULL;
03006       ast_yypop_buffer_state(yyscanner);
03007    }
03008 
03009    /* Destroy the stack itself. */
03010    ast_yyfree(yyg->yy_buffer_stack ,yyscanner);
03011    yyg->yy_buffer_stack = NULL;
03012 
03013     /* Destroy the start condition stack. */
03014         ast_yyfree(yyg->yy_start_stack ,yyscanner );
03015         yyg->yy_start_stack = NULL;
03016 
03017     /* Destroy the main struct (reentrant only). */
03018     ast_yyfree ( yyscanner , yyscanner );
03019     return 0;
03020 }
03021 
03022 /*
03023  * Internal utility routines.
03024  */
03025 
03026 #ifndef yytext_ptr
03027 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
03028 {
03029    register int i;
03030     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
03031    for ( i = 0; i < n; ++i )
03032       s1[i] = s2[i];
03033 }
03034 #endif
03035 
03036 #ifdef YY_NEED_STRLEN
03037 static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
03038 {
03039    register int n;
03040     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
03041    for ( n = 0; s[n]; ++n )
03042       ;
03043 
03044    return n;
03045 }
03046 #endif
03047 
03048 void *ast_yyalloc (yy_size_t  size , yyscan_t yyscanner)
03049 {
03050    return (void *) malloc( size );
03051 }
03052 
03053 void *ast_yyrealloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
03054 {
03055    /* The cast to (char *) in the following accommodates both
03056     * implementations that use char* generic pointers, and those
03057     * that use void* generic pointers.  It works with the latter
03058     * because both ANSI C and C++ allow castless assignment from
03059     * any pointer type to void*, and deal with argument conversions
03060     * as though doing an assignment.
03061     */
03062    return (void *) realloc( (char *) ptr, size );
03063 }
03064 
03065 void ast_yyfree (void * ptr , yyscan_t yyscanner)
03066 {
03067    free( (char *) ptr );   /* see ast_yyrealloc() for (char *) cast */
03068 }
03069 
03070 #define YYTABLES_NAME "yytables"
03071 
03072 #undef YY_NEW_FILE
03073 #undef YY_FLUSH_BUFFER
03074 #undef yy_set_bol
03075 #undef yy_new_buffer
03076 #undef yy_set_interactive
03077 #undef yytext_ptr
03078 #undef YY_DO_BEFORE_ACTION
03079 
03080 #ifdef YY_DECL_IS_OURS
03081 #undef YY_DECL_IS_OURS
03082 #undef YY_DECL
03083 #endif
03084 #line 205 "ast_expr2.fl"
03085 
03086 
03087 
03088 /* I'm putting the interface routine to the whole parse here in the flexer input file
03089    mainly because of all the flexer initialization that has to be done. Shouldn't matter
03090    where it is, as long as it's somewhere. I didn't want to define a prototype for the
03091    ast_yy_scan_string in the .y file, because then, I'd have to define YY_BUFFER_STATE there...
03092    UGH! that would be inappropriate. */
03093 
03094 int ast_yyparse(void *); /* need to/should define this prototype for the call to yyparse */
03095 int ast_yyerror(const char *, YYLTYPE *, struct parse_io *); /* likewise */
03096 
03097 int ast_expr(char *expr, char *buf, int length)
03098 {
03099    struct parse_io io;
03100    int return_value = 0;
03101    
03102    memset(&io, 0, sizeof(io));
03103    io.string = expr;  /* to pass to the error routine */
03104    
03105    ast_yylex_init(&io.scanner);
03106    
03107    ast_yy_scan_string(expr, io.scanner);
03108    
03109    ast_yyparse ((void *) &io);
03110 
03111    ast_yylex_destroy(io.scanner);
03112 
03113    if (!io.val) {
03114       if (length > 1) {
03115          strcpy(buf, "0");
03116          return_value = 1;
03117       }
03118    } else {
03119       if (io.val->type == AST_EXPR_integer) {
03120          int res_length;
03121 
03122          res_length = snprintf(buf, length, "%ld", (long int) io.val->u.i);
03123          return_value = (res_length <= length) ? res_length : length;
03124       } else {
03125 #if defined(STANDALONE) || defined(LOW_MEMORY) || defined(STANDALONE_AEL)
03126          strncpy(buf, io.val->u.s, length - 1);
03127 #else /* !STANDALONE && !LOW_MEMORY */
03128          ast_copy_string(buf, io.val->u.s, length);
03129 #endif /* STANDALONE || LOW_MEMORY */
03130          return_value = strlen(buf);
03131          free(io.val->u.s);
03132       }
03133       free(io.val);
03134    }
03135    return return_value;
03136 }
03137 
03138 
03139 char extra_error_message[4095];
03140 int extra_error_message_supplied = 0;
03141 void  ast_expr_register_extra_error_info(char *message);
03142 void  ast_expr_clear_extra_error_info(void);
03143 
03144 void  ast_expr_register_extra_error_info(char *message)
03145 {
03146        extra_error_message_supplied=1;
03147        strcpy(extra_error_message, message);
03148 }
03149 
03150 void  ast_expr_clear_extra_error_info(void)
03151 {
03152        extra_error_message_supplied=0;
03153        extra_error_message[0] = 0;
03154 }
03155 
03156 static char *expr2_token_equivs1[] = 
03157 {
03158    "TOKEN",
03159    "TOK_COND",
03160    "TOK_COLONCOLON",
03161    "TOK_OR",
03162    "TOK_AND",
03163    "TOK_EQ",
03164    "TOK_GT",
03165    "TOK_LT",
03166    "TOK_GE",
03167    "TOK_LE",
03168    "TOK_NE",
03169    "TOK_PLUS",
03170    "TOK_MINUS",
03171    "TOK_MULT",
03172    "TOK_DIV",
03173    "TOK_MOD",
03174    "TOK_COMPL",
03175    "TOK_COLON",
03176    "TOK_EQTILDE",
03177    "TOK_RP",
03178    "TOK_LP"
03179 };
03180 
03181 static char *expr2_token_equivs2[] = 
03182 {
03183    "<token>",
03184    "?",
03185    "::",
03186    "|",
03187    "&",
03188    "=",
03189    ">",
03190    "<",
03191    ">=",
03192    "<=",
03193    "!=",
03194    "+",
03195    "-",
03196    "*",
03197    "/",
03198    "%",
03199    "!",
03200    ":",
03201    "=~",
03202    ")",
03203    "("
03204 };
03205 
03206 
03207 static char *expr2_token_subst(char *mess)
03208 {
03209    /* calc a length, malloc, fill, and return; yyerror had better free it! */
03210    int len=0,i;
03211    char *p;
03212    char *res, *s,*t;
03213    int expr2_token_equivs_entries = sizeof(expr2_token_equivs1)/sizeof(char*);
03214 
03215    for (p=mess; *p; p++) {
03216       for (i=0; i<expr2_token_equivs_entries; i++) {
03217          if ( strncmp(p,expr2_token_equivs1[i],strlen(expr2_token_equivs1[i])) == 0 )
03218          {
03219             len+=strlen(expr2_token_equivs2[i])+2;
03220             p += strlen(expr2_token_equivs1[i])-1;
03221             break;
03222          }
03223       }
03224       len++;
03225    }
03226    res = (char*)malloc(len+1);
03227    res[0] = 0;
03228    s = res;
03229    for (p=mess; *p;) {
03230       int found = 0;
03231       for (i=0; i<expr2_token_equivs_entries; i++) {
03232          if ( strncmp(p,expr2_token_equivs1[i],strlen(expr2_token_equivs1[i])) == 0 ) {
03233             *s++ = '\'';
03234             for (t=expr2_token_equivs2[i]; *t;) {
03235                *s++ = *t++;
03236             }
03237             *s++ = '\'';
03238             p += strlen(expr2_token_equivs1[i]);
03239             found = 1;
03240             break;
03241          }
03242       }
03243       if( !found )
03244          *s++ = *p++;
03245    }
03246    *s++ = 0;
03247    return res;
03248 }
03249 
03250 int ast_yyerror (const char *s,  yyltype *loc, struct parse_io *parseio )
03251 {  
03252    struct yyguts_t * yyg = (struct yyguts_t*)(parseio->scanner);
03253    char spacebuf[8000]; /* best safe than sorry */
03254    char spacebuf2[8000]; /* best safe than sorry */
03255    int i=0;
03256    char *s2 = expr2_token_subst((char *)s);
03257    spacebuf[0] = 0;
03258    
03259    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,
03260                                                                         which is the same thing as... get this:
03261                                        yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]->yy_bs_column
03262                                        I was tempted to just use yy_buf_pos in the STATE, but..., well:
03263                                           a. the yy_buf_pos is the current position in the buffer, which
03264                                              may not relate to the entire string/buffer because of the
03265                                              buffering.
03266                                           b. but, analysis of the situation is that when you use the
03267                                              ast_yy_scan_string func, it creates a single buffer the size of
03268                                              string, so the two would be the same... 
03269                                        so, in the end, the yycolumn macro is available, shorter, therefore easier. */
03270    spacebuf2[i++]='^';
03271    spacebuf2[i]= 0;
03272 
03273 #ifdef STANDALONE3
03274    /* easier to read in the standalone version */
03275    printf("ast_yyerror(): %s syntax error: %s; Input:\n%s\n%s\n",  
03276          (extra_error_message_supplied?extra_error_message:""), s2, parseio->string,spacebuf2);
03277 #else
03278    ast_log(LOG_WARNING,"ast_yyerror(): %s syntax error: %s; Input:\n%s\n%s\n",  
03279          (extra_error_message_supplied?extra_error_message:""), s2, parseio->string,spacebuf2);
03280 #endif
03281 #ifndef STANDALONE
03282    ast_log(LOG_WARNING,"If you have questions, please refer to doc/channelvariables.txt in the asterisk source.\n");
03283 #endif
03284    free(s2);
03285    return(0);
03286 }
03287 

Generated on Mon May 14 04:42:54 2007 for Asterisk - the Open Source PBX by  doxygen 1.5.1