Fri Sep 25 19:28:05 2009

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

Generated on Fri Sep 25 19:28:05 2009 for Asterisk - the Open Source PBX by  doxygen 1.5.5